diff --git a/Trigger/TrigSteer/L1Decoder/share/testL1Decoder.py b/Trigger/TrigSteer/L1Decoder/share/testL1Decoder.py index 26ac84cad9d2968249c38f688afd6abb32a9fe44..4e5e2735811a6b76d0a9db0e023c98f78ae65384 100644 --- a/Trigger/TrigSteer/L1Decoder/share/testL1Decoder.py +++ b/Trigger/TrigSteer/L1Decoder/share/testL1Decoder.py @@ -5,8 +5,8 @@ from AthenaCommon.AlgSequence import AlgSequence topSequence = AlgSequence() -topSequence.L1DecoderTest.ctpUnpacker.OutputLevel=DEBUG -for unpack in topSequence.L1DecoderTest.roiUnpackers: +topSequence.L1Decoder.ctpUnpacker.OutputLevel=DEBUG +for unpack in topSequence.L1Decoder.roiUnpackers: unpack.OutputLevel=DEBUG print unpack @@ -14,9 +14,9 @@ for unpack in topSequence.L1DecoderTest.roiUnpackers: CTPToChainMapping = {"HLT_j85": "L1_J20" } testChains =[x for x, y in CTPToChainMapping.items()] -topSequence.L1DecoderTest.ChainToCTPMapping = CTPToChainMapping +topSequence.L1Decoder.ChainToCTPMapping = CTPToChainMapping print testChains -print topSequence.L1DecoderTest +print topSequence.L1Decoder #from TrigUpgradeTest.jetDefs import jetRecoSequence #(recoSequence, sequenceOut) = jetRecoSequence("FSRoI") diff --git a/Trigger/TrigValidation/TrigUpgradeTest/python/TestUtils.py b/Trigger/TrigValidation/TrigUpgradeTest/python/TestUtils.py index 665e74ee63a66f70eee369ed50c6b2a6fd94970b..c38d53fac813a6352db0634eafdc456348c32efa 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/python/TestUtils.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/python/TestUtils.py @@ -41,7 +41,7 @@ def applyMenu(l1decoder ): # L1Decoder for bytestream from L1Decoder.L1DecoderConf import L1Decoder class L1DecoderTest(L1Decoder) : - def __init__(self, name='L1DecoderTest', *args, **kwargs): + def __init__(self, name='L1Decoder', *args, **kwargs): super(L1DecoderTest, self).__init__(name, *args, **kwargs) from TriggerJobOpts.TriggerFlags import TriggerFlags diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/Calo.py b/Trigger/TrigValidation/TrigUpgradeTest/share/Calo.py index 4766fe37da5269213cf1effb40fca1064bd6ffe1..6e4e216708775b9c7504429b5817c27c046887b9 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/Calo.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/Calo.py @@ -21,7 +21,7 @@ from DecisionHandling.DecisionHandlingConf import RoRSeqFilter steps = seqOR("HLTTop") topSequence += steps -steps += topSequence.L1DecoderTest +steps += topSequence.L1Decoder diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/bjet.menu.ALLTE.py b/Trigger/TrigValidation/TrigUpgradeTest/share/bjet.menu.ALLTE.py index 07696d2d8ddf1437e6dbb56ca080875f28b19301..6b417917101202dfe18d2c39aefe071f9d260bea 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/bjet.menu.ALLTE.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/bjet.menu.ALLTE.py @@ -20,14 +20,15 @@ testChains = [ Chain(name='HLT_j35_gsc45_boffperf_split' , Seed="L1_J20", ChainSteps=[step1,step2] ), Chain(name='HLT_j35_gsc45_bmv2c1070_split', Seed="L1_J20", ChainSteps=[step1,step2] ), Chain(name='HLT_j35_gsc45_bmv2c1070' , Seed="L1_J20", ChainSteps=[step1,step2] ) - ] + ] + ################################# # Configure L1Decoder ################################# -topSequence.L1DecoderTest.prescaler.Prescales = ["HLT_j35_gsc45_boffperf_split:1", - "HLT_j35_gsc45_bmv2c1070_split:1", - "HLT_j35_gsc45_bmv2c1070:1"] +topSequence.L1Decoder.prescaler.Prescales = ["HLT_j35_gsc45_boffperf_split:1", + "HLT_j35_gsc45_bmv2c1070_split:1", + "HLT_j35_gsc45_bmv2c1070:1"] ##### Make all HLT ####### diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/dataScoutingTest.py b/Trigger/TrigValidation/TrigUpgradeTest/share/dataScoutingTest.py index 86db493189f59b64f6182ca430bd401ddf2ff53b..97ab01fa6af114fcf4791a147a1c761c45ca774b 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/dataScoutingTest.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/dataScoutingTest.py @@ -64,7 +64,7 @@ if (doElectron): # this is a temporary hack to include new test chains EnabledChainNamesToCTP = dict([ (c.name, c.seed) for c in testChains]) -topSequence.L1DecoderTest.ChainToCTPMapping = EnabledChainNamesToCTP +topSequence.L1Decoder.ChainToCTPMapping = EnabledChainNamesToCTP ########################################## @@ -97,7 +97,7 @@ for chain, decisionKey in chainToDecisionKeyDict.iteritems(): ########################################## # EDM Maker ########################################## -l1decoder = getSequence("L1DecoderTest") +l1decoder = getSequence("L1Decoder") hltAllSteps = getSequence("HLTAllSteps") from TriggerJobOpts.TriggerConfig import collectHypos,collectFilters,collectViewMakers,collectDecisionObjects,triggerMergeViewsAndAddMissingEDMCfg hypos = collectHypos(hltAllSteps) @@ -105,7 +105,7 @@ filters = collectFilters(hltAllSteps) viewMakers = collectViewMakers(hltAllSteps) decisionObjects = collectDecisionObjects(hypos,filters,l1decoder) edmMakerAlg = triggerMergeViewsAndAddMissingEDMCfg( [], hypos, viewMakers, decisionObjects ) -topSequence.hltTop += edmMakerAlg +topSequence.HLTTop += edmMakerAlg # Add Electrons merger (somehow not created by triggerAddMissingEDMCfg above) from TrigOutputHandling.TrigOutputHandlingConf import HLTEDMCreator @@ -188,7 +188,7 @@ hltResultMakerTool.OutputLevel = DEBUG hltResultMakerAlg = HLTResultMTMakerAlg("HLTRMakerAlg") hltResultMakerAlg.ResultMaker = hltResultMakerTool -topSequence.hltTop += hltResultMakerAlg +topSequence.HLTTop += hltResultMakerAlg ########################################## # Some debug diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.withViews.py b/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.withViews.py index 2a0df5467e95decadd755c459888260a46810145..90371b86d35767e8e6ee28cb3b0dd7b774950496 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.withViews.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.withViews.py @@ -34,11 +34,11 @@ CTPToChainMapping = {"HLT_e3_etcut": "L1_EM3", "HLT_2e3_etcut": "L1_2EM3", "HLT_e3_e5_etcut":"L1_2EM3"} -topSequence.L1DecoderTest.prescaler.Prescales = ["HLT_e3_etcut:2", "HLT_2e3_etcut:2.5"] +topSequence.L1Decoder.prescaler.Prescales = ["HLT_e3_etcut:2", "HLT_2e3_etcut:2.5"] # this is a temporary hack to include only new test chains testChains =[x for x, y in CTPToChainMapping.items()] -topSequence.L1DecoderTest.ChainToCTPMapping = CTPToChainMapping +topSequence.L1Decoder.ChainToCTPMapping = CTPToChainMapping @@ -267,7 +267,7 @@ steps = seqAND("HLTSteps", [ step0filter, step0, step1filter, step1, step2filter from TrigSteerMonitor.TrigSteerMonitorConf import TrigSignatureMoniMT, DecisionCollectorTool mon = TrigSignatureMoniMT() from TrigUpgradeTest.TestUtils import MenuTest -mon.ChainsList = list( set( topSequence.L1DecoderTest.ChainToCTPMapping.keys() ) ) +mon.ChainsList = list( set( topSequence.L1Decoder.ChainToCTPMapping.keys() ) ) #mon.ChainsList = list( set( MenuTest.CTPToChainMapping.keys() ) ) @@ -305,7 +305,6 @@ StreamESD.ItemList += [ "xAOD::TrigElectronAuxContainer#HLT_xAOD__TrigElectronCo "xAOD::TrigEMClusterAuxContainer#HLT_xAOD__TrigEMClusterContainer_L2CaloClustersAux."] StreamESD.ItemList += [ "EventInfo#ByteStreamEventInfo" ] - StreamESD.ItemList += [ "TrigRoiDescriptorCollection#EMRoIs" ] StreamESD.ItemList += [ "TrigRoiDescriptorCollection#JRoIs" ] StreamESD.ItemList += [ "TrigRoiDescriptorCollection#METRoI" ] @@ -430,7 +429,7 @@ ServiceMgr += AuditorSvc() # This triggers the L1 decoder to signal the start of processing, # and the HLT summary alg to signal end of processing and handle the writing of data. -topSequence.L1DecoderTest.EnableCostMonitoring = True +topSequence.L1Decoder.EnableCostMonitoring = True summMaker.EnableCostMonitoring = True # Write out the data at the end diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu.py b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu.py index 97e5eb76e6658162c6e0c560e9aa5d3660484f00..06e93f52809459ef1452ca20dc98b45033ed049f 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu.py @@ -3,6 +3,10 @@ # # import flags +from RecExConfig.RecFlags import rec +rec.doESD=True +rec.doWriteESD=True + include("TrigUpgradeTest/testHLT_MT.py") #Currently only runs egamma and mu chains but expect to expand @@ -216,14 +220,48 @@ from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFConfig import makeHLTTree makeHLTTree(testChains) - ########################################## # Some debug ########################################## from AthenaCommon.AlgSequence import dumpSequence, AthSequencer dumpSequence(topSequence) + import DecisionHandling for a in AthSequencer("HLTAllSteps").getChildren(): if isinstance(a, DecisionHandling.DecisionHandlingConf.TriggerSummaryAlg): a.OutputLevel = DEBUG + + +# this part uses parts from the NewJO configuration, it is very hacky for the moment + +from TriggerJobOpts.TriggerConfig import collectHypos, collectFilters, collectDecisionObjects, triggerOutputStreamCfg +hypos = collectHypos(topSequence) +filters = collectFilters(topSequence) +from AthenaCommon.CFElements import findAlgorithm,findSubSequence +decObj = collectDecisionObjects( hypos, filters, findAlgorithm(topSequence, 'L1Decoder') ) +print decObj + +from TrigEDMConfig.TriggerEDMRun3 import TriggerHLTList +ItemList = [ 'xAOD::TrigCompositeContainer#{}'.format(d) for d in decObj ] +ItemList += [ 'xAOD::TrigCompositeAuxContainer#{}Aux.'.format(d) for d in decObj ] +ItemList += [ k[0] for k in TriggerHLTList if 'ESD' in k[1] and "TrigComposite" not in k[0] ] +ItemList += [ k[0] for k in TriggerHLTList if 'ESD' in k[1] and "TrigComposite" in k[0] ] +ItemList += [ 'xAOD::TrigCompositeAuxContainer#{}Aux.'.format(k[0].split("#")[1]) for k in TriggerHLTList if 'ESD' in k[1] and "TrigComposite" in k[0] ] +ItemList += [ "xAOD::EventInfo#EventInfo" ] + +ItemList = list(set(ItemList)) + + + +import AthenaPoolCnvSvc.WriteAthenaPool +from OutputStreamAthenaPool.OutputStreamAthenaPool import createOutputStream +StreamESD=createOutputStream("StreamESD","myESD.pool.root",True) +StreamESD.ItemList = ItemList + + +HLTTop = findSubSequence(topSequence, "HLTTop") + + + + diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/mu.withViews.py b/Trigger/TrigValidation/TrigUpgradeTest/share/mu.withViews.py index 425f8a67c5df7b616d4304033e7d5dcee4026f15..84ee9134e7323e7a905a9081b1d146e8d3006b4b 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/mu.withViews.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/mu.withViews.py @@ -44,7 +44,7 @@ CTPToChainMapping = { "HLT_mu6" : "L1_MU6", # this is a temporary hack to include only new test chains testChains =[x for x, y in CTPToChainMapping.items()] -topSequence.L1DecoderTest.ChainToCTPMapping = CTPToChainMapping +topSequence.L1Decoder.ChainToCTPMapping = CTPToChainMapping def __mon(finalCollName, stepColls=[]): from TrigOutputHandling.TrigOutputHandlingConf import DecisionSummaryMakerAlg diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/pebTest.py b/Trigger/TrigValidation/TrigUpgradeTest/share/pebTest.py index 900e97fa9492d411df7db7be18929ae6500ced9a..f1543eee1a899d75ce6fea3089727813d08fca93 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/pebTest.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/pebTest.py @@ -74,7 +74,7 @@ if (doMuon): # this is a temporary hack to include new test chains EnabledChainNamesToCTP = dict([ (c.name, c.seed) for c in testChains]) -topSequence.L1DecoderTest.ChainToCTPMapping = EnabledChainNamesToCTP +topSequence.L1Decoder.ChainToCTPMapping = EnabledChainNamesToCTP ########################################## # CF construction @@ -106,7 +106,7 @@ for chain, decisionKey in chainToDecisionKeyDict.iteritems(): ########################################## # EDM Maker ########################################## -l1decoder = getSequence("L1DecoderTest") +l1decoder = getSequence("L1Decoder") hltAllSteps = getSequence("HLTAllSteps") from TriggerJobOpts.TriggerConfig import collectHypos,collectFilters,collectViewMakers,collectDecisionObjects,triggerMergeViewsAndAddMissingEDMCfg hypos = collectHypos(hltAllSteps) @@ -114,7 +114,7 @@ filters = collectFilters(hltAllSteps) viewMakers = collectViewMakers(hltAllSteps) decisionObjects = collectDecisionObjects(hypos,filters,l1decoder) edmMakerAlg = triggerMergeViewsAndAddMissingEDMCfg( [], hypos, viewMakers, decisionObjects ) -topSequence.hltTop += edmMakerAlg +topSequence.HLTTop += edmMakerAlg # Add Electrons merger (somehow not created by triggerAddMissingEDMCfg above) from TrigOutputHandling.TrigOutputHandlingConf import HLTEDMCreator @@ -189,7 +189,7 @@ hltResultMakerTool.OutputLevel = DEBUG hltResultMakerAlg = HLTResultMTMakerAlg("HLTRMakerAlg") hltResultMakerAlg.ResultMaker = hltResultMakerTool -topSequence.hltTop += hltResultMakerAlg +topSequence.HLTTop += hltResultMakerAlg ########################################## # Some debug diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/runMenuTest.py b/Trigger/TrigValidation/TrigUpgradeTest/share/runMenuTest.py index 6409485602c085081cd9b54d8b90db5844edeed6..9cfce4b4d15aa20b0d66a5b1e6c778e4bab13a05 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/runMenuTest.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/runMenuTest.py @@ -23,7 +23,6 @@ menu.overwriteSignaturesWith(signaturesToGenerate) allChainConfigs = menu.generateMT() - ########################################## # Some debug ########################################## diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/simpleJetJob.py b/Trigger/TrigValidation/TrigUpgradeTest/share/simpleJetJob.py index 95d2a9d29f6882a9a1783ef23c235571909ed164..5be475fc171e98ecf1076be23a214eeaff4eb45d 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/simpleJetJob.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/simpleJetJob.py @@ -25,11 +25,11 @@ if TriggerFlags.doCalo: "HLT_j45" : "L1_J20" } testChains =[x for x, y in CTPToChainMapping.items()] - topSequence.L1DecoderTest.ChainToCTPMapping = CTPToChainMapping + topSequence.L1Decoder.ChainToCTPMapping = CTPToChainMapping print testChains # get L1 decisions - for unpack in topSequence.L1DecoderTest.roiUnpackers: + for unpack in topSequence.L1Decoder.roiUnpackers: if unpack.name() is "JRoIsUnpackingTool": L1JetDecisions=unpack.Decisions diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py index 4a8a39463a4c27b4a0e3338b7d572ea93bce9c2c..7b0b71ea61921e9c4b35fb2a10178a020ee2be5c 100644 --- a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py @@ -90,9 +90,12 @@ def collectDecisionObjects( hypos, filters, l1decoder ): for step, stepHypos in hypos.iteritems(): for hypoAlg in stepHypos: __log.debug( "Hypo %s with input %s and output %s " % (hypoAlg.getName(), str(hypoAlg.HypoInputDecisions), str(hypoAlg.HypoOutputDecisions) ) ) - __log.debug( "and hypo tools %s " % (str( [ t.getName() for t in hypoAlg.HypoTools ] ) ) ) - decisionObjects.add( hypoAlg.HypoInputDecisions ) - decisionObjects.add( hypoAlg.HypoOutputDecisions ) + if isinstance( hypoAlg.HypoInputDecisions, list): + [ decisionObjects.add( d ) for d in hypoAlg.HypoInputDecisions ] + [ decisionObjects.add( d ) for d in hypoAlg.HypoOutputDecisions ] + else: + decisionObjects.add( hypoAlg.HypoInputDecisions ) + decisionObjects.add( hypoAlg.HypoOutputDecisions ) __log.info("Collecting decision obejcts from filters") for step, stepFilters in filters.iteritems(): @@ -263,6 +266,7 @@ def triggerMergeViewsAndAddMissingEDMCfg( edmSet, hypos, viewMakers, decObj ): if pr != producer[0]: __log.error("Several View making algorithms produce the same output collection {}: {}".format( viewsColl, ' '.join([p.name() for p in producer ]) ) ) continue + producer = producer[0] tool.TrigCompositeContainer = producer.InputMakerOutputDecisions tool.FixLinks = True @@ -367,6 +371,7 @@ def triggerRunCfg( flags, menu=None ): if flags.Output.AODFileName != "": acc.merge( triggerOutputStreamCfg( flags, decObj, "AOD" ) ) edmSet.append('AOD') + if any( (flags.Output.ESDFileName != "" , flags.Output.AODFileName != "", flags.Trigger.writeBS) ): mergingAlg = triggerMergeViewsAndAddMissingEDMCfg( edmSet , hypos, viewMakers, decObj ) acc.addEventAlgo( mergingAlg, sequenceName="HLTTop" ) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py index 70daed36167667fb2a277b86d653d586957a3781..b5997b4804750268e090add8fc8cfe665c3aa121 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py @@ -130,7 +130,7 @@ def makeHLTTree(HLTChains, triggerConfigHLT = None): l1decoder[0].ChainToCTPMapping = EnabledChainNamesToCTP # main HLT top sequence - hltTop = seqOR("hltTop") + hltTop = seqOR("HLTTop") # add the HLT steps Node steps = seqAND("HLTAllSteps") @@ -146,17 +146,24 @@ def makeHLTTree(HLTChains, triggerConfigHLT = None): hltTop += summary # add signature monitor - from TriggerJobOpts.TriggerConfig import collectHypos, collectFilters, triggerMonitoringCfg, triggerSummaryCfg + from TriggerJobOpts.TriggerConfig import collectHypos, collectFilters, collectViewMakers, collectDecisionObjects,\ + triggerMonitoringCfg, triggerSummaryCfg, triggerMergeViewsAndAddMissingEDMCfg hypos = collectHypos(steps) filters = collectFilters(steps) + viewMakers = collectViewMakers(steps) + decObj = collectDecisionObjects( hypos, filters, l1decoder[0] ) summaryAcc, summaryAlg = triggerSummaryCfg( ConfigFlags, hypos ) hltTop += summaryAlg - summaryAcc.appendToGlobals() + summaryAcc.appendToGlobals() monAcc, monAlg = triggerMonitoringCfg( ConfigFlags, hypos, filters, l1decoder[0] ) - monAcc.appendToGlobals() + monAcc.appendToGlobals() hltTop += monAlg + # this is a shotcut for now, we always assume we may be writing ESD & AOD outputs, so all gaps will be filled + edmAlg = triggerMergeViewsAndAddMissingEDMCfg(['AOD', 'ESD'], hypos, viewMakers, decObj ) + hltTop += edmAlg + topSequence += hltTop diff --git a/Trigger/TriggerCommon/TriggerMenuMT/share/generateMT.py b/Trigger/TriggerCommon/TriggerMenuMT/share/generateMT.py index 5c6ac07101f5e6adcf37008c9ed5f8c4289ecc4d..b732756a66c1bf0bda009bb4fa3e37574557e325 100755 --- a/Trigger/TriggerCommon/TriggerMenuMT/share/generateMT.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/share/generateMT.py @@ -7,23 +7,23 @@ include("TrigUpgradeTest/testHLT_MT.py") # provide a minimal menu information if globalflags.InputFormat.is_bytestream(): - topSequence.L1DecoderTest.ctpUnpacker.OutputLevel=DEBUG - topSequence.L1DecoderTest.roiUnpackers[0].OutputLevel=DEBUG + topSequence.L1Decoder.ctpUnpacker.OutputLevel=DEBUG + topSequence.L1Decoder.roiUnpackers[0].OutputLevel=DEBUG # map L1 decisions for menu -for unpack in topSequence.L1DecoderTest.roiUnpackers: +for unpack in topSequence.L1Decoder.roiUnpackers: if unpack.name() is "EMRoIsUnpackingTool": unpack.Decisions="L1EM" emUnpacker=unpack if unpack.name() is "MURoIsUnpackingTool": unpack.Decisions="L1MU" -for unpack in topSequence.L1DecoderTest.rerunRoiUnpackers: +for unpack in topSequence.L1Decoder.rerunRoiUnpackers: if unpack.name() is "EMRerunRoIsUnpackingTool": unpack.Decisions="RerunL1EM" unpack.SourceDecisions="L1EM" -for unpack in topSequence.L1DecoderTest.rerunRoiUnpackers: +for unpack in topSequence.L1Decoder.rerunRoiUnpackers: if unpack.name() is "EMRerunRoIsUnpackingTool": unpack.SourceDecisions="L1EM" if unpack.name() is "MURerunRoIsUnpackingTool":