From 09190361e4b004a972d583093d9bb94fc7568349 Mon Sep 17 00:00:00 2001 From: Tim Martin <Tim.Martin@cern.ch> Date: Mon, 26 Oct 2020 12:14:35 +0100 Subject: [PATCH] Insert extra filter Decision Objects into decision summary maker alg to fix long standing feature bug. Remove rerun from L1Decoder. Update unit test to current graph structure --- .../L1Decoder/python/L1DecoderConfig.py | 26 +- Trigger/TrigSteer/L1Decoder/src/L1Decoder.cxx | 11 - Trigger/TrigSteer/L1Decoder/src/L1Decoder.h | 3 - .../share/TrigTraversal_test.ref | 467 ++++++++++-------- .../test/TrigTraversal_test.cxx | 209 +++----- .../src/DecisionSummaryMakerAlg.cxx | 30 +- .../TriggerJobOpts/python/TriggerConfig.py | 1 - 7 files changed, 376 insertions(+), 371 deletions(-) diff --git a/Trigger/TrigSteer/L1Decoder/python/L1DecoderConfig.py b/Trigger/TrigSteer/L1Decoder/python/L1DecoderConfig.py index ada3b3b844a..faec1d4e2fa 100644 --- a/Trigger/TrigSteer/L1Decoder/python/L1DecoderConfig.py +++ b/Trigger/TrigSteer/L1Decoder/python/L1DecoderConfig.py @@ -51,7 +51,7 @@ def mapThresholdToL1RoICollection(threshold): def createCaloRoIUnpackers(): - #from L1Decoder.L1DecoderConf import EMRoIsUnpackingTool, METRoIsUnpackingTool, JRoIsUnpackingTool, RerunRoIsUnpackingTool, TAURoIsUnpackingTool + #from L1Decoder.L1DecoderConf import EMRoIsUnpackingTool, METRoIsUnpackingTool, JRoIsUnpackingTool, TAURoIsUnpackingTool from L1Decoder.L1DecoderMonitoring import RoIsUnpackingMonitoring from TrigEDMConfig.TriggerEDMRun3 import recordable emUnpacker = CompFactory.EMRoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("EM"), @@ -60,9 +60,6 @@ def createCaloRoIUnpackers(): # emUnpacker.MonTool = RoIsUnpackingMonitoring( prefix="EM", maxCount=30 ) - emRerunUnpacker = CompFactory.RerunRoIsUnpackingTool("EMRerunRoIsUnpackingTool", - SourceDecisions=mapThresholdToL1DecisionCollection("EM"), - Decisions="HLTNav_RerunL1EM" ) metUnpacker = CompFactory.METRoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("XE")) @@ -77,10 +74,10 @@ def createCaloRoIUnpackers(): jUnpacker.MonTool = RoIsUnpackingMonitoring( prefix="J", maxCount=30 ) - return [emUnpacker, metUnpacker, tauUnpacker, jUnpacker ],[emRerunUnpacker] + return [emUnpacker, metUnpacker, tauUnpacker, jUnpacker ] def createMuonRoIUnpackers(): - #from L1Decoder.L1DecoderConf import MURoIsUnpackingTool, RerunRoIsUnpackingTool + #from L1Decoder.L1DecoderConf import MURoIsUnpackingTool from L1Decoder.L1DecoderMonitoring import RoIsUnpackingMonitoring from TrigEDMConfig.TriggerEDMRun3 import recordable @@ -89,10 +86,7 @@ def createMuonRoIUnpackers(): muUnpacker.MonTool = RoIsUnpackingMonitoring( prefix="MU", maxCount=20 ) - muRerunUnpacker = CompFactory.RerunRoIsUnpackingTool("MURerunRoIsUnpackingTool", - SourceDecisions=mapThresholdToL1DecisionCollection("MU"), - Decisions="HLTNav_RerunL1MU" ) - return [muUnpacker],[muRerunUnpacker] + return [muUnpacker] def createPrescalingTool(): from L1Decoder.L1DecoderMonitoring import PrescalingMonitoring @@ -133,15 +127,13 @@ class L1Decoder(CompFactory.L1Decoder) : OutputTrigRoIs = recordable(mapThresholdToL1RoICollection("FSNOSEED") )) ] # EM unpacker if TriggerFlags.doID() or TriggerFlags.doCalo(): - unpackers, rerunUnpackers = createCaloRoIUnpackers() + unpackers = createCaloRoIUnpackers() self.roiUnpackers += unpackers - self.rerunRoiUnpackers += rerunUnpackers # MU unpacker if TriggerFlags.doMuon(): - unpackers, rerunUnpackers = createMuonRoIUnpackers() + unpackers = createMuonRoIUnpackers() self.roiUnpackers += unpackers - self.rerunRoiUnpackers += rerunUnpackers self.prescaler = createPrescalingTool() @@ -180,14 +172,12 @@ def L1DecoderCfg(flags, seqName = None): OutputTrigRoIs = recordable(mapThresholdToL1RoICollection("FSNOSEED")) ) ] if flags.Trigger.doCalo: - unpackers, rerunUnpackers = createCaloRoIUnpackers() + unpackers = createCaloRoIUnpackers() decoderAlg.roiUnpackers += unpackers - decoderAlg.rerunRoiUnpackers += rerunUnpackers if flags.Trigger.doMuon: - unpackers, rerunUnpackers = createMuonRoIUnpackers() + unpackers = createMuonRoIUnpackers() decoderAlg.roiUnpackers += unpackers - decoderAlg.rerunRoiUnpackers += rerunUnpackers decoderAlg.prescaler = createPrescalingTool() decoderAlg.DoCostMonitoring = flags.Trigger.CostMonitoring.doCostMonitoring diff --git a/Trigger/TrigSteer/L1Decoder/src/L1Decoder.cxx b/Trigger/TrigSteer/L1Decoder/src/L1Decoder.cxx index a64f2f29b9d..715df4d3eee 100644 --- a/Trigger/TrigSteer/L1Decoder/src/L1Decoder.cxx +++ b/Trigger/TrigSteer/L1Decoder/src/L1Decoder.cxx @@ -30,7 +30,6 @@ StatusCode L1Decoder::initialize() { ATH_CHECK( m_ctpUnpacker.retrieve() ); ATH_CHECK( m_roiUnpackers.retrieve() ); ATH_CHECK( m_prescaler.retrieve() ); - ATH_CHECK( m_rerunRoiUnpackers.retrieve() ); ServiceHandle<IIncidentSvc> incidentSvc("IncidentSvc", "CTPSimulation"); ATH_CHECK(incidentSvc.retrieve()); @@ -126,10 +125,6 @@ StatusCode L1Decoder::execute (const EventContext& ctx) const { ATH_CHECK( saveChainsInfo( prescaledChains, chainsInfo, "prescaled" ) ); //Note: 'prescaled' can be deduced from 'l1seeded' and 'unprescaled'. This non-persistent collection is provided for convenience. - // for now all the chains that were pre-scaled out are set to re-run in the second pass - HLT::IDVec rerunChains = prescaledChains; // Perform copy of vector<uint32_t> - ATH_CHECK( saveChainsInfo( rerunChains, chainsInfo, "rerun" ) ); - // Do cost monitoring, this utilises the HLT_costmonitor chain if (m_doCostMonitoring) { const static HLT::Identifier costMonitorChain(m_costMonitoringChain); @@ -144,12 +139,6 @@ StatusCode L1Decoder::execute (const EventContext& ctx) const { ATH_CHECK( unpacker->unpack( ctx, *roib, activeChainSet ) ); } - ATH_MSG_DEBUG( "Unpacking RoIs for re-running" ); - HLT::IDSet rerunChainSet( rerunChains.begin(), rerunChains.end() ); - for ( auto unpacker: m_rerunRoiUnpackers ) { - ATH_CHECK( unpacker->unpack( ctx, *roib, rerunChainSet ) ); - } - return StatusCode::SUCCESS; } diff --git a/Trigger/TrigSteer/L1Decoder/src/L1Decoder.h b/Trigger/TrigSteer/L1Decoder/src/L1Decoder.h index 43adad69a7b..195dc6a2bbb 100644 --- a/Trigger/TrigSteer/L1Decoder/src/L1Decoder.h +++ b/Trigger/TrigSteer/L1Decoder/src/L1Decoder.h @@ -78,9 +78,6 @@ private: ToolHandle<IPrescalingTool> m_prescaler{this, "prescaler", "PrescalingTool/PrescalingTool", "Prescaling tool"}; - ToolHandleArray<IRoIsUnpackingTool> m_rerunRoiUnpackers{this, "rerunRoiUnpackers", {}, - "Unpackers that unpack RoIs into separate collections"}; - }; #endif diff --git a/Trigger/TrigSteer/TrigCompositeUtils/share/TrigTraversal_test.ref b/Trigger/TrigSteer/TrigCompositeUtils/share/TrigTraversal_test.ref index 90da1821f2a..4196d8b8fef 100644 --- a/Trigger/TrigSteer/TrigCompositeUtils/share/TrigTraversal_test.ref +++ b/Trigger/TrigSteer/TrigCompositeUtils/share/TrigTraversal_test.ref @@ -1,101 +1,140 @@ -ApplicationMgr SUCCESS -==================================================================================================================================== - Welcome to ApplicationMgr (GaudiCoreSvc v27r1p99) - running on karma on Fri Oct 2 12:36:26 2020 -==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully EventLoopMgr WARNING Unable to locate service "EventSelector" EventLoopMgr WARNING No events will be processed from external input. ApplicationMgr INFO Application Manager Initialized successfully ApplicationMgr Ready -ClassIDSvc INFO getRegistryEntries: read 7552 CLIDRegistry entries for module ALL -ClassIDSvc INFO getRegistryEntries: read 379 CLIDRegistry entries for module ALL TrigTraversal INFO HLT_mufast_chain -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #3 (HLTPassRaw) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #13 (MU_H_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #12 (MU_IM_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #11 (MU_F_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #3 (HLTPassRaw) +TrigTraversal INFO |-> HLTNav_DC #13 (MU_ENDF_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #12 (MU_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #11 (MU_IM_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #9 (MU_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) TrigTraversal INFO HLT_mu_chain -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #3 (HLTPassRaw) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #13 (MU_H_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #12 (MU_IM_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #11 (MU_F_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #1 (MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #16 (MU_H_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #15 (MU_IM_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #14 (MU_F_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #13 (MU_H_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #12 (MU_IM_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #11 (MU_F_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #3 (HLTPassRaw) +TrigTraversal INFO |-> HLTNav_DC #19 (MU_ENDF_H_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #18 (MU_H_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #17 (MU_IM_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #15 (MU_F_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #12 (MU_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #11 (MU_IM_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #9 (MU_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) TrigTraversal INFO HLT_mu_em_chain -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #3 (HLTPassRaw) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #24 (MUEM_CH_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #23 (MUEM_H_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #22 (MUEM_IM_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #21 (MUEM_F_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #20 (MUEM_CH_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #19 (MUEM_H_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #18 (MUEM_IM_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #17 (MUEM_F_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #1 (MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #38 (MUEM_CH_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #37 (MUEM_H_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #36 (MUEM_IM_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #35 (MUEM_F_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #34 (MUEM_CH_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #33 (MUEM_H_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #32 (MUEM_IM_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #31 (MUEM_F_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #3 (HLTPassRaw) +TrigTraversal INFO |-> HLTNav_DC #21 (MU_ENDF_CH_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #20 (MUEM_CH_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #18 (MU_H_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #17 (MU_IM_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #16 (MUEM_F_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #14 (MUEM_CH_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #12 (MU_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #11 (MU_IM_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #10 (MUEM_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #33 (EM_ENDF_CH_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #32 (MUEM_CH_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #30 (EM_H_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #29 (EM_IM_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #28 (MUEM_F_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #26 (MUEM_CH_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #25 (EM_H_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #24 (EM_IM_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #23 (MUEM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) TrigTraversal INFO HLT_em_chain -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #3 (HLTPassRaw) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #30 (EM_H_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #29 (EM_IM_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #28 (EM_F_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #27 (EM_H_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #26 (EM_IM_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #25 (EM_F_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #3 (HLTPassRaw) +TrigTraversal INFO |-> HLTNav_DC #31 (EM_ENDF_H_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #30 (EM_H_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #29 (EM_IM_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #27 (EM_F_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #25 (EM_H_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #24 (EM_IM_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #22 (EM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) TrigTraversal INFO All -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #3 (HLTPassRaw) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #13 (MU_H_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #12 (MU_IM_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #11 (MU_F_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #1 (MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #16 (MU_H_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #15 (MU_IM_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #14 (MU_F_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #13 (MU_H_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #12 (MU_IM_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #11 (MU_F_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #1 (MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #24 (MUEM_CH_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #23 (MUEM_H_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #22 (MUEM_IM_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #21 (MUEM_F_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #20 (MUEM_CH_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #19 (MUEM_H_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #18 (MUEM_IM_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #17 (MUEM_F_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #1 (MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #30 (EM_H_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #29 (EM_IM_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #28 (EM_F_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #27 (EM_H_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #26 (EM_IM_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #25 (EM_F_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #2 (EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #38 (MUEM_CH_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #37 (MUEM_H_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #36 (MUEM_IM_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #35 (MUEM_F_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #34 (MUEM_CH_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #33 (MUEM_H_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #32 (MUEM_IM_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #31 (MUEM_F_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #3 (HLTPassRaw) +TrigTraversal INFO |-> HLTNav_DC #13 (MU_ENDF_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #12 (MU_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #11 (MU_IM_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #9 (MU_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #10 (MUEM_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #19 (MU_ENDF_H_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #18 (MU_H_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #17 (MU_IM_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #15 (MU_F_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #12 (MU_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #11 (MU_IM_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #9 (MU_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #10 (MUEM_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #16 (MUEM_F_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #14 (MUEM_CH_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #12 (MU_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #11 (MU_IM_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #9 (MU_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #10 (MUEM_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #21 (MU_ENDF_CH_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #20 (MUEM_CH_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #18 (MU_H_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #17 (MU_IM_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #15 (MU_F_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #12 (MU_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #11 (MU_IM_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #9 (MU_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #10 (MUEM_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #16 (MUEM_F_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #14 (MUEM_CH_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #12 (MU_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #11 (MU_IM_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #9 (MU_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #10 (MUEM_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #31 (EM_ENDF_H_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #30 (EM_H_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #29 (EM_IM_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #27 (EM_F_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #25 (EM_H_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #24 (EM_IM_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #22 (EM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #23 (MUEM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #28 (MUEM_F_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #26 (MUEM_CH_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #25 (EM_H_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #24 (EM_IM_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #22 (EM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #23 (MUEM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #33 (EM_ENDF_CH_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #32 (MUEM_CH_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #30 (EM_H_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #29 (EM_IM_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #27 (EM_F_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #25 (EM_H_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #24 (EM_IM_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #22 (EM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #23 (MUEM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #28 (MUEM_F_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #26 (MUEM_CH_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #25 (EM_H_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #24 (EM_IM_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #22 (EM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #23 (MUEM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) TrigTraversal INFO [All passing features] HLT_mufast_chain features size:1 Feature pt:20, state:ACTIVE @@ -122,8 +161,7 @@ TrigTraversal INFO [All passing features] All chains features size:4 TrigTraversal INFO [Final passing feature] HLT_mufast_chain features size:1 Feature pt:20, state:ACTIVE -TrigTraversal INFO [Final passing feature] HLT_mu_chain features size:2 - Feature pt:20, state:ACTIVE +TrigTraversal INFO [Final passing feature] HLT_mu_chain features size:1 Feature pt:21, state:ACTIVE TrigTraversal INFO [Final passing feature] HLT_mu_em_chain features size:2 @@ -140,111 +178,155 @@ TrigTraversal INFO [Final passing feature] All chains features size:3 ---------- Now Include Failing Features TrigTraversal INFO HLT_mufast_chain -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #3 (HLTPassRaw) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #13 (MU_H_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #12 (MU_IM_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #11 (MU_F_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #1 (MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #6 (MU_H_1__MU0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #5 (MU_IM_1__MU0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #4 (MU_F_1__MU0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #0 (MU0) +TrigTraversal INFO |-> HLTNav_DC #3 (HLTPassRaw) +TrigTraversal INFO |-> HLTNav_DC #13 (MU_ENDF_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #12 (MU_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #11 (MU_IM_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #9 (MU_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #7 (MU_H_1__MU0) +TrigTraversal INFO |-> HLTNav_DC #6 (MU_IM_1__MU0) +TrigTraversal INFO |-> HLTNav_DC #4 (MU_F_1__MU0) +TrigTraversal INFO |-> HLTNav_DC #0 (MU0) TrigTraversal INFO HLT_mu_chain -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #3 (HLTPassRaw) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #13 (MU_H_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #12 (MU_IM_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #11 (MU_F_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #1 (MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #16 (MU_H_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #15 (MU_IM_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #14 (MU_F_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #13 (MU_H_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #12 (MU_IM_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #11 (MU_F_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #1 (MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #6 (MU_H_1__MU0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #5 (MU_IM_1__MU0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #4 (MU_F_1__MU0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #0 (MU0) +TrigTraversal INFO |-> HLTNav_DC #3 (HLTPassRaw) +TrigTraversal INFO |-> HLTNav_DC #19 (MU_ENDF_H_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #18 (MU_H_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #17 (MU_IM_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #15 (MU_F_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #12 (MU_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #11 (MU_IM_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #9 (MU_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #7 (MU_H_1__MU0) +TrigTraversal INFO |-> HLTNav_DC #6 (MU_IM_1__MU0) +TrigTraversal INFO |-> HLTNav_DC #4 (MU_F_1__MU0) +TrigTraversal INFO |-> HLTNav_DC #0 (MU0) TrigTraversal INFO HLT_mu_em_chain -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #3 (HLTPassRaw) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #24 (MUEM_CH_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #23 (MUEM_H_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #22 (MUEM_IM_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #21 (MUEM_F_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #20 (MUEM_CH_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #19 (MUEM_H_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #18 (MUEM_IM_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #17 (MUEM_F_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #1 (MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #38 (MUEM_CH_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #37 (MUEM_H_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #36 (MUEM_IM_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #35 (MUEM_F_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #34 (MUEM_CH_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #33 (MUEM_H_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #32 (MUEM_IM_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #31 (MUEM_F_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #2 (EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #9 (MUEM_H_1__MU0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #8 (MUEM_IM_1__MU0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #7 (MUEM_F_1__MU0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #0 (MU0) +TrigTraversal INFO |-> HLTNav_DC #3 (HLTPassRaw) +TrigTraversal INFO |-> HLTNav_DC #21 (MU_ENDF_CH_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #20 (MUEM_CH_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #18 (MU_H_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #17 (MU_IM_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #16 (MUEM_F_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #14 (MUEM_CH_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #12 (MU_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #11 (MU_IM_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #10 (MUEM_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #33 (EM_ENDF_CH_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #32 (MUEM_CH_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #30 (EM_H_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #29 (EM_IM_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #28 (MUEM_F_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #26 (MUEM_CH_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #25 (EM_H_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #24 (EM_IM_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #23 (MUEM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #7 (MU_H_1__MU0) +TrigTraversal INFO |-> HLTNav_DC #6 (MU_IM_1__MU0) +TrigTraversal INFO |-> HLTNav_DC #5 (MUEM_F_1__MU0) +TrigTraversal INFO |-> HLTNav_DC #0 (MU0) TrigTraversal INFO HLT_em_chain -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #3 (HLTPassRaw) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #30 (EM_H_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #29 (EM_IM_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #28 (EM_F_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #27 (EM_H_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #26 (EM_IM_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #25 (EM_F_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #3 (HLTPassRaw) +TrigTraversal INFO |-> HLTNav_DC #31 (EM_ENDF_H_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #30 (EM_H_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #29 (EM_IM_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #27 (EM_F_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #25 (EM_H_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #24 (EM_IM_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #22 (EM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) TrigTraversal INFO All -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #3 (HLTPassRaw) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #13 (MU_H_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #12 (MU_IM_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #11 (MU_F_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #1 (MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #16 (MU_H_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #15 (MU_IM_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #14 (MU_F_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #13 (MU_H_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #12 (MU_IM_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #11 (MU_F_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #1 (MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #24 (MUEM_CH_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #23 (MUEM_H_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #22 (MUEM_IM_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #21 (MUEM_F_2__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #20 (MUEM_CH_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #19 (MUEM_H_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #18 (MUEM_IM_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #17 (MUEM_F_1__MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #1 (MU1) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #30 (EM_H_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #29 (EM_IM_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #28 (EM_F_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #27 (EM_H_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #26 (EM_IM_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #25 (EM_F_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #2 (EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #38 (MUEM_CH_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #37 (MUEM_H_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #36 (MUEM_IM_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #35 (MUEM_F_2__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #34 (MUEM_CH_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #33 (MUEM_H_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #32 (MUEM_IM_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #31 (MUEM_F_1__EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #2 (EM0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #9 (MUEM_H_1__MU0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #8 (MUEM_IM_1__MU0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #7 (MUEM_F_1__MU0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #0 (MU0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #6 (MU_H_1__MU0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #5 (MU_IM_1__MU0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #4 (MU_F_1__MU0) -TrigTraversal INFO |-> HLTNav_MyDecisionContainer #0 (MU0) +TrigTraversal INFO |-> HLTNav_DC #3 (HLTPassRaw) +TrigTraversal INFO |-> HLTNav_DC #13 (MU_ENDF_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #12 (MU_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #11 (MU_IM_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #9 (MU_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #10 (MUEM_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #19 (MU_ENDF_H_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #18 (MU_H_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #17 (MU_IM_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #15 (MU_F_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #12 (MU_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #11 (MU_IM_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #9 (MU_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #10 (MUEM_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #16 (MUEM_F_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #14 (MUEM_CH_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #12 (MU_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #11 (MU_IM_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #9 (MU_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #10 (MUEM_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #21 (MU_ENDF_CH_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #20 (MUEM_CH_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #18 (MU_H_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #17 (MU_IM_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #15 (MU_F_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #12 (MU_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #11 (MU_IM_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #9 (MU_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #10 (MUEM_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #16 (MUEM_F_2__MU1) +TrigTraversal INFO |-> HLTNav_DC #14 (MUEM_CH_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #12 (MU_H_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #11 (MU_IM_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #9 (MU_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #10 (MUEM_F_1__MU1) +TrigTraversal INFO |-> HLTNav_DC #1 (MU1) +TrigTraversal INFO |-> HLTNav_DC #31 (EM_ENDF_H_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #30 (EM_H_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #29 (EM_IM_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #27 (EM_F_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #25 (EM_H_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #24 (EM_IM_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #22 (EM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #23 (MUEM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #28 (MUEM_F_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #26 (MUEM_CH_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #25 (EM_H_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #24 (EM_IM_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #22 (EM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #23 (MUEM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #33 (EM_ENDF_CH_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #32 (MUEM_CH_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #30 (EM_H_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #29 (EM_IM_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #27 (EM_F_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #25 (EM_H_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #24 (EM_IM_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #22 (EM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #23 (MUEM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #28 (MUEM_F_2__EM0) +TrigTraversal INFO |-> HLTNav_DC #26 (MUEM_CH_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #25 (EM_H_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #24 (EM_IM_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #22 (EM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #23 (MUEM_F_1__EM0) +TrigTraversal INFO |-> HLTNav_DC #2 (EM0) +TrigTraversal INFO |-> HLTNav_DC #7 (MU_H_1__MU0) +TrigTraversal INFO |-> HLTNav_DC #6 (MU_IM_1__MU0) +TrigTraversal INFO |-> HLTNav_DC #4 (MU_F_1__MU0) +TrigTraversal INFO |-> HLTNav_DC #0 (MU0) +TrigTraversal INFO |-> HLTNav_DC #5 (MUEM_F_1__MU0) +TrigTraversal INFO |-> HLTNav_DC #0 (MU0) TrigTraversal INFO [All passing/failing features] HLT_mufast_chain features size:2 Feature pt:20, state:ACTIVE Feature pt:5, state:INACTIVE @@ -276,8 +358,7 @@ TrigTraversal INFO [Final passing/failing feature] HLT_mufast_chain featu Feature pt:20, state:ACTIVE Feature pt:5, state:INACTIVE -TrigTraversal INFO [Final passing/failing feature] HLT_mu_chain features size:3 - Feature pt:20, state:ACTIVE +TrigTraversal INFO [Final passing/failing feature] HLT_mu_chain features size:2 Feature pt:21, state:ACTIVE Feature pt:5, state:INACTIVE diff --git a/Trigger/TrigSteer/TrigCompositeUtils/test/TrigTraversal_test.cxx b/Trigger/TrigSteer/TrigCompositeUtils/test/TrigTraversal_test.cxx index b8fad06f774..5a802279448 100644 --- a/Trigger/TrigSteer/TrigCompositeUtils/test/TrigTraversal_test.cxx +++ b/Trigger/TrigSteer/TrigCompositeUtils/test/TrigTraversal_test.cxx @@ -56,7 +56,7 @@ int main ATLAS_NOT_THREAD_SAFE () { const EventContext& ctx1 = Gaudi::Hive::currentContext(); log << "Current context: " << ctx1 << endmsg; - SG::WriteHandleKey<DecisionContainer> decisionContainerKey("HLTNav_MyDecisionContainer"); + SG::WriteHandleKey<DecisionContainer> decisionContainerKey("HLTNav_DC"); SG::WriteHandleKey<xAOD::ElectronContainer> electronContainerKey("MyElectronContainer"); SG::WriteHandleKey<xAOD::MuonContainer> muonContainerKey("MyMuonContainer"); @@ -134,22 +134,30 @@ int main ATLAS_NOT_THREAD_SAFE () { ElementLink<xAOD::ElectronContainer> rec_2__em0_link(*electronContainerPtr, electronContainerPtr->size() - 1, ctx1); /// - /// Muon RoI 0, single muon chains ID:HLT_mufast_chain, ID:2. Fails both chains at first Hypo + /// Muon RoI 0: + /// Single muon chains HLT_mufast_chain and HLT_mu_chain both fail at first Hypo + /// Combined muon+electron chain HLT_mu_em_chain. Fails at first hypo /// - { addDecisionID(HLT_mufast_chain, MU0); addDecisionID(HLT_mu_chain, MU0); + addDecisionID(HLT_mu_em_chain, MU0); Decision* MU_F_1__MU0 = newDecisionIn(decisionContainerPtr, "MU_F_1__MU0"); linkToPrevious(MU_F_1__MU0, MU0); addDecisionID(HLT_mufast_chain, MU_F_1__MU0); addDecisionID(HLT_mu_chain, MU_F_1__MU0); + Decision* MUEM_F_1__MU0 = newDecisionIn(decisionContainerPtr, "MUEM_F_1__MU0"); + linkToPrevious(MUEM_F_1__MU0, MU0); + addDecisionID(HLT_mu_em_chain, MUEM_F_1__MU0); + Decision* MU_IM_1__MU0 = newDecisionIn(decisionContainerPtr, "MU_IM_1__MU0"); linkToPrevious(MU_IM_1__MU0, MU_F_1__MU0); + linkToPrevious(MU_IM_1__MU0, MUEM_F_1__MU0); addDecisionID(HLT_mufast_chain, MU_IM_1__MU0); addDecisionID(HLT_mu_chain, MU_IM_1__MU0); + addDecisionID(HLT_mu_em_chain, MU_IM_1__MU0); Decision* MU_H_1__MU0 = newDecisionIn(decisionContainerPtr, "MU_H_1__MU0"); linkToPrevious(MU_H_1__MU0, MU_IM_1__MU0); @@ -157,219 +165,162 @@ int main ATLAS_NOT_THREAD_SAFE () { // Fails HLT_mufast_chain // Fails HLT_mu_chain - } - - /// - /// Muon RoI 0, combined muon+electron chain ID:3. Fails first hypo - /// - - { - addDecisionID(HLT_mu_em_chain, MU0); - - Decision* MUEM_F_1__MU0 = newDecisionIn(decisionContainerPtr, "MUEM_F_1__MU0"); - linkToPrevious(MUEM_F_1__MU0, MU0); - addDecisionID(HLT_mu_em_chain, MUEM_F_1__MU0); - - Decision* MUEM_IM_1__MU0 = newDecisionIn(decisionContainerPtr, "MUEM_IM_1__MU0"); - linkToPrevious(MUEM_IM_1__MU0, MUEM_F_1__MU0); - addDecisionID(HLT_mu_em_chain, MUEM_IM_1__MU0); - - Decision* MUEM_H_1__MU0 = newDecisionIn(decisionContainerPtr, "MUEM_H_1__MU0"); - linkToPrevious(MUEM_H_1__MU0, MUEM_IM_1__MU0); - MUEM_H_1__MU0->setObjectLink<xAOD::MuonContainer>(featureString(), rec_1__mu0_link); - // Fails HLT_mu_em_chain - Decision* MUEM_CH_1__MU0 = newDecisionIn(decisionContainerPtr, "MUEM_CH_1__MU0"); - linkToPrevious(MUEM_CH_1__MU0, MUEM_H_1__MU0); + linkToPrevious(MUEM_CH_1__MU0, MU_H_1__MU0); // Note: Combo hypo does not re-link to feature. // Fails HLT_mu_em_chain - } /// - /// Muon RoI 1, single muon chain ID:HLT_mufast_chain passes event after first Hypo. Single muon chain ID:HLT_mu_chain passes event after second hypo + /// Muon RoI 1: + /// Single muon chain HLT_mufast_chain passes event after first Hypo. + /// Single muon chain IHLT_mu_chain passes event after second hypo + /// Combined muon+electron chain HLT_mu_em_chain. Passes first and second hypo. Passes EM leg too. /// - { addDecisionID(HLT_mufast_chain, MU1); addDecisionID(HLT_mu_chain, MU1); + addDecisionID(HLT_mu_em_chain, MU1); Decision* MU_F_1__MU1 = newDecisionIn(decisionContainerPtr, "MU_F_1__MU1"); linkToPrevious(MU_F_1__MU1, MU1); addDecisionID(HLT_mufast_chain, MU_F_1__MU1); addDecisionID(HLT_mu_chain, MU_F_1__MU1); + Decision* MUEM_F_1__MU1 = newDecisionIn(decisionContainerPtr, "MUEM_F_1__MU1"); + linkToPrevious(MUEM_F_1__MU1, MU1); + addDecisionID(HLT_mu_em_chain, MUEM_F_1__MU1); + Decision* MU_IM_1__MU1 = newDecisionIn(decisionContainerPtr, "MU_IM_1__MU1"); linkToPrevious(MU_IM_1__MU1, MU_F_1__MU1); + linkToPrevious(MU_IM_1__MU1, MUEM_F_1__MU1); addDecisionID(HLT_mufast_chain, MU_IM_1__MU1); addDecisionID(HLT_mu_chain, MU_IM_1__MU1); + addDecisionID(HLT_mu_em_chain, MU_IM_1__MU1); Decision* MU_H_1__MU1 = newDecisionIn(decisionContainerPtr, "MU_H_1__MU1"); linkToPrevious(MU_H_1__MU1, MU_IM_1__MU1); MU_H_1__MU1->setObjectLink<xAOD::MuonContainer>(featureString(), rec_1__mu1_link); addDecisionID(HLT_mufast_chain, MU_H_1__MU1); addDecisionID(HLT_mu_chain, MU_H_1__MU1); + addDecisionID(HLT_mu_em_chain, MU_H_1__MU1); // HLT_mufast_chain passes the event + Decision* MU_ENDF_H_1__MU1 = newDecisionIn(decisionContainerPtr, "MU_ENDF_H_1__MU1"); + addDecisionID(HLT_mufast_chain, MU_ENDF_H_1__MU1); addDecisionID(HLT_mufast_chain, END); - linkToPrevious(END, MU_H_1__MU1); - - /// !!! - /// !!! - /// !!! When finding the first feature for the HLT_mu_chain, the navigation is here given two entry points into the graph, - /// !!! the correct one (MU_H_2__MU1) and an incorrect one (MU_H_1__MU1) due to HLT_mufast_chain also passing this event - /// !!! at this earlier Step. - /// !!! - /// !!! The feature access is currently "dumb", it doesn't know what should be the final step for each chain. Hence here - /// !!! it will return both the Step1 muon and the Step2 muon when asked for the first feature down each leg for HLT_mu_chain, - /// !!! Rather than just the Step2 muon. - /// !!! - /// !!! This will be corrected later, once the Trigger Decision Tool has access to more menu reflection information. - /// !!! - /// !!! + linkToPrevious(MU_ENDF_H_1__MU1, MU_H_1__MU1); + linkToPrevious(END, MU_ENDF_H_1__MU1); + + Decision* MUEM_CH_1__MU1 = newDecisionIn(decisionContainerPtr, "MUEM_CH_1__MU1"); + linkToPrevious(MUEM_CH_1__MU1, MU_H_1__MU1); + addDecisionID(HLT_mu_em_chain, MUEM_CH_1__MU1); Decision* MU_F_2__MU1 = newDecisionIn(decisionContainerPtr, "MU_F_2__MU1"); linkToPrevious(MU_F_2__MU1, MU_H_1__MU1); addDecisionID(HLT_mu_chain, MU_F_2__MU1); + Decision* MUEM_F_2__MU1 = newDecisionIn(decisionContainerPtr, "MUEM_F_2__MU1"); + linkToPrevious(MUEM_F_2__MU1, MUEM_CH_1__MU1); + addDecisionID(HLT_mu_em_chain, MUEM_F_2__MU1); + Decision* MU_IM_2__MU1 = newDecisionIn(decisionContainerPtr, "MU_IM_2__MU1"); linkToPrevious(MU_IM_2__MU1, MU_F_2__MU1); + linkToPrevious(MU_IM_2__MU1, MUEM_F_2__MU1); addDecisionID(HLT_mu_chain, MU_IM_2__MU1); + addDecisionID(HLT_mu_em_chain, MU_IM_2__MU1); Decision* MU_H_2__MU1 = newDecisionIn(decisionContainerPtr, "MU_H_2__MU1"); linkToPrevious(MU_H_2__MU1, MU_IM_2__MU1); MU_H_2__MU1->setObjectLink<xAOD::MuonContainer>(featureString(), rec_2__mu1_link); addDecisionID(HLT_mu_chain, MU_H_2__MU1); + addDecisionID(HLT_mu_em_chain, MU_H_2__MU1); // HLT_mu_chain passes the event + Decision* MU_ENDF_H_2__MU1 = newDecisionIn(decisionContainerPtr, "MU_ENDF_H_2__MU1"); + addDecisionID(HLT_mu_chain, MU_ENDF_H_2__MU1); addDecisionID(HLT_mu_chain, END); - linkToPrevious(END, MU_H_2__MU1); - } - - /// - /// Muon RoI 1, combined muon+electron chain ID:HLT_mu_em_chain. Passes first and second hypo. Passes EM leg (later) - /// - - { - addDecisionID(HLT_mu_em_chain, MU1); - - Decision* MUEM_F_1__MU1 = newDecisionIn(decisionContainerPtr, "MUEM_F_1__MU1"); - linkToPrevious(MUEM_F_1__MU1, MU1); - addDecisionID(HLT_mu_em_chain, MUEM_F_1__MU1); - - Decision* MUEM_IM_1__MU1 = newDecisionIn(decisionContainerPtr, "MUEM_IM_1__MU1"); - linkToPrevious(MUEM_IM_1__MU1, MUEM_F_1__MU1); - addDecisionID(HLT_mu_em_chain, MUEM_IM_1__MU1); - - Decision* MUEM_H_1__MU1 = newDecisionIn(decisionContainerPtr, "MUEM_H_1__MU1"); - linkToPrevious(MUEM_H_1__MU1, MUEM_IM_1__MU1); - MUEM_H_1__MU1->setObjectLink<xAOD::MuonContainer>(featureString(), rec_1__mu1_link); - addDecisionID(HLT_mu_em_chain, MUEM_H_1__MU1); - - Decision* MUEM_CH_1__MU1 = newDecisionIn(decisionContainerPtr, "MUEM_CH_1__MU1"); - linkToPrevious(MUEM_CH_1__MU1, MUEM_H_1__MU1); - addDecisionID(HLT_mu_em_chain, MUEM_CH_1__MU1); - - Decision* MUEM_F_2__MU1 = newDecisionIn(decisionContainerPtr, "MUEM_F_2__MU1"); - linkToPrevious(MUEM_F_2__MU1, MUEM_CH_1__MU1); - addDecisionID(HLT_mu_em_chain, MUEM_F_2__MU1); - - Decision* MUEM_IM_2__MU1 = newDecisionIn(decisionContainerPtr, "MUEM_IM_2__MU1"); - linkToPrevious(MUEM_IM_2__MU1, MUEM_F_2__MU1); - addDecisionID(HLT_mu_em_chain, MUEM_IM_2__MU1); - - Decision* MUEM_H_2__MU1 = newDecisionIn(decisionContainerPtr, "MUEM_H_2__MU1"); - linkToPrevious(MUEM_H_2__MU1, MUEM_IM_2__MU1); - MUEM_H_2__MU1->setObjectLink<xAOD::MuonContainer>(featureString(), rec_2__mu1_link); - addDecisionID(HLT_mu_em_chain, MUEM_H_2__MU1); + linkToPrevious(MU_ENDF_H_2__MU1, MU_H_2__MU1); + linkToPrevious(END, MU_ENDF_H_2__MU1); Decision* MUEM_CH_2__MU1 = newDecisionIn(decisionContainerPtr, "MUEM_CH_2__MU1"); - linkToPrevious(MUEM_CH_2__MU1, MUEM_H_2__MU1); + linkToPrevious(MUEM_CH_2__MU1, MU_H_2__MU1); addDecisionID(HLT_mu_em_chain, MUEM_CH_2__MU1); // HLT_mu_em_chain passes the event + Decision* MU_ENDF_CH_2__MU1 = newDecisionIn(decisionContainerPtr, "MU_ENDF_CH_2__MU1"); + addDecisionID(HLT_mu_em_chain, MU_ENDF_CH_2__MU1); addDecisionID(HLT_mu_em_chain, END); - linkToPrevious(END, MUEM_CH_2__MU1); - + linkToPrevious(MU_ENDF_CH_2__MU1, MUEM_CH_2__MU1); + linkToPrevious(END, MU_ENDF_CH_2__MU1); } + /// - /// EM RoI 0, single electron chain ID:4. Passes first and second hypo. Passes EM leg (later) + /// EM RoI 0: + /// Single electron chain HLT_em_chain. Passes first and second hypo. + /// Combined muon+electron chain HLT_mu_em_chain. Passes first and second hypo. Passes muon leg too. /// - { addDecisionID(HLT_em_chain, EM0); + addDecisionID(HLT_mu_em_chain, EM0); Decision* EM_F_1__EM0 = newDecisionIn(decisionContainerPtr, "EM_F_1__EM0"); linkToPrevious(EM_F_1__EM0, EM0); addDecisionID(HLT_em_chain, EM_F_1__EM0); + Decision* MUEM_F_1__EM0 = newDecisionIn(decisionContainerPtr, "MUEM_F_1__EM0"); + linkToPrevious(MUEM_F_1__EM0, EM0); + addDecisionID(HLT_mu_em_chain, MUEM_F_1__EM0); + Decision* EM_IM_1__EM0 = newDecisionIn(decisionContainerPtr, "EM_IM_1__EM0"); linkToPrevious(EM_IM_1__EM0, EM_F_1__EM0); + linkToPrevious(EM_IM_1__EM0, MUEM_F_1__EM0); addDecisionID(HLT_em_chain, EM_IM_1__EM0); + addDecisionID(HLT_mu_em_chain, EM_IM_1__EM0); Decision* EM_H_1__EM0 = newDecisionIn(decisionContainerPtr, "EM_H_1__EM0"); linkToPrevious(EM_H_1__EM0, EM_IM_1__EM0); EM_H_1__EM0->setObjectLink<xAOD::ElectronContainer>(featureString(), rec_1__em0_link); addDecisionID(HLT_em_chain, EM_H_1__EM0); + addDecisionID(HLT_mu_em_chain, EM_H_1__EM0); + + Decision* MUEM_CH_1__EM0 = newDecisionIn(decisionContainerPtr, "MUEM_CH_1__EM0"); + linkToPrevious(MUEM_CH_1__EM0, EM_H_1__EM0); + addDecisionID(HLT_mu_em_chain, MUEM_CH_1__EM0); Decision* EM_F_2__EM0 = newDecisionIn(decisionContainerPtr, "EM_F_2__EM0"); linkToPrevious(EM_F_2__EM0, EM_H_1__EM0); addDecisionID(HLT_em_chain, EM_F_2__EM0); + Decision* MUEM_F_2__EM0 = newDecisionIn(decisionContainerPtr, "MUEM_F_2__EM0"); + linkToPrevious(MUEM_F_2__EM0, MUEM_CH_1__EM0); + addDecisionID(HLT_mu_em_chain, MUEM_F_2__EM0); + Decision* EM_IM_2__EM0 = newDecisionIn(decisionContainerPtr, "EM_IM_2__EM0"); linkToPrevious(EM_IM_2__EM0, EM_F_2__EM0); + linkToPrevious(EM_IM_2__EM0, MUEM_F_2__EM0); addDecisionID(HLT_em_chain, EM_IM_2__EM0); + addDecisionID(HLT_mu_em_chain, EM_IM_2__EM0); Decision* EM_H_2__EM0 = newDecisionIn(decisionContainerPtr, "EM_H_2__EM0"); linkToPrevious(EM_H_2__EM0, EM_IM_2__EM0); EM_H_2__EM0->setObjectLink<xAOD::ElectronContainer>(featureString(), rec_2__em0_link); addDecisionID(HLT_em_chain, EM_H_2__EM0); + addDecisionID(HLT_mu_em_chain, EM_H_2__EM0); // HLT_em_chain passes the event - linkToPrevious(END, EM_H_2__EM0); + Decision* EM_ENDF_H_2__EM0 = newDecisionIn(decisionContainerPtr, "EM_ENDF_H_2__EM0"); + addDecisionID(HLT_em_chain, EM_ENDF_H_2__EM0); addDecisionID(HLT_em_chain, END); - } - - /// - /// EM RoI 0, combined muon+electron chain ID:HLT_mu_em_chain. Passes first and second hypo. Passes MU leg (earlier) - /// - - { - addDecisionID(HLT_mu_em_chain, EM0); - - Decision* MUEM_F_1__EM0 = newDecisionIn(decisionContainerPtr, "MUEM_F_1__EM0"); - linkToPrevious(MUEM_F_1__EM0, EM0); - addDecisionID(HLT_mu_em_chain, MUEM_F_1__EM0); - - Decision* MUEM_IM_1__EM0 = newDecisionIn(decisionContainerPtr, "MUEM_IM_1__EM0"); - linkToPrevious(MUEM_IM_1__EM0, MUEM_F_1__EM0); - addDecisionID(HLT_mu_em_chain, MUEM_IM_1__EM0); - - Decision* MUEM_H_1__EM0 = newDecisionIn(decisionContainerPtr, "MUEM_H_1__EM0"); - linkToPrevious(MUEM_H_1__EM0, MUEM_IM_1__EM0); - MUEM_H_1__EM0->setObjectLink<xAOD::ElectronContainer>(featureString(), rec_1__em0_link); - addDecisionID(HLT_mu_em_chain, MUEM_H_1__EM0); - - Decision* MUEM_CH_1__EM0 = newDecisionIn(decisionContainerPtr, "MUEM_CH_1__EM0"); - linkToPrevious(MUEM_CH_1__EM0, MUEM_H_1__EM0); - addDecisionID(HLT_mu_em_chain, MUEM_CH_1__EM0); - - Decision* MUEM_F_2__EM0 = newDecisionIn(decisionContainerPtr, "MUEM_F_2__EM0"); - linkToPrevious(MUEM_F_2__EM0, MUEM_CH_1__EM0); - addDecisionID(HLT_mu_em_chain, MUEM_F_2__EM0); - - Decision* MUEM_IM_2__EM0 = newDecisionIn(decisionContainerPtr, "MUEM_IM_2__EM0"); - linkToPrevious(MUEM_IM_2__EM0, MUEM_F_2__EM0); - addDecisionID(HLT_mu_em_chain, MUEM_IM_2__EM0); - - Decision* MUEM_H_2__EM0 = newDecisionIn(decisionContainerPtr, "MUEM_H_2__EM0"); - linkToPrevious(MUEM_H_2__EM0, MUEM_IM_2__EM0); - MUEM_H_2__EM0->setObjectLink<xAOD::ElectronContainer>(featureString(), rec_2__em0_link); - addDecisionID(HLT_mu_em_chain, MUEM_H_2__EM0); + linkToPrevious(EM_ENDF_H_2__EM0, EM_H_2__EM0); + linkToPrevious(END, EM_ENDF_H_2__EM0); Decision* MUEM_CH_2__EM0 = newDecisionIn(decisionContainerPtr, "MUEM_CH_2__EM0"); - linkToPrevious(MUEM_CH_2__EM0, MUEM_H_2__EM0); + linkToPrevious(MUEM_CH_2__EM0, EM_H_2__EM0); addDecisionID(HLT_mu_em_chain, MUEM_CH_2__EM0); // HLT_mu_em_chain passes the event + Decision* EM_ENDF_CH_2__EM0 = newDecisionIn(decisionContainerPtr, "EM_ENDF_CH_2__EM0"); + addDecisionID(HLT_mu_em_chain, EM_ENDF_CH_2__EM0); addDecisionID(HLT_mu_em_chain, END); - linkToPrevious(END, MUEM_CH_2__EM0); + linkToPrevious(EM_ENDF_CH_2__EM0, MUEM_CH_2__EM0); + linkToPrevious(END, EM_ENDF_CH_2__EM0); } // Test the graph diff --git a/Trigger/TrigSteer/TrigOutputHandling/src/DecisionSummaryMakerAlg.cxx b/Trigger/TrigSteer/TrigOutputHandling/src/DecisionSummaryMakerAlg.cxx index fd12b2d5064..0dd30a96a50 100644 --- a/Trigger/TrigSteer/TrigOutputHandling/src/DecisionSummaryMakerAlg.cxx +++ b/Trigger/TrigSteer/TrigOutputHandling/src/DecisionSummaryMakerAlg.cxx @@ -42,7 +42,6 @@ StatusCode DecisionSummaryMakerAlg::execute(const EventContext& context) const { Decision* passRawOutput = newDecisionIn( container, "HLTPassRaw" ); Decision* prescaledOutput = newDecisionIn( container, "HLTPrescaled" ); - Decision* rerunOutput = newDecisionIn( container, "HLTRerun" ); DecisionIDContainer allPassingFinalIDs; @@ -50,7 +49,7 @@ StatusCode DecisionSummaryMakerAlg::execute(const EventContext& context) const { for ( auto& key: m_finalDecisionKeys ) { auto handle{ SG::makeHandle(key, context) }; if ( not handle.isValid() ) { - ATH_MSG_DEBUG("missing input " << key.key() << " likely rejected"); + ATH_MSG_DEBUG("Input " << key.key() << " not present, did not run in this event."); continue; } const auto thisCollFilter = m_collectionFilter.find( key.key() ); @@ -75,10 +74,20 @@ StatusCode DecisionSummaryMakerAlg::execute(const EventContext& context) const { continue; } + // Create a node to act as a filter between the final summary node and this HypoAlg. + // This ensures that we follow this edge (now two edges) in the graph only for the chains in + // passingFinalIDs rather than for other chains which are active in decisionObject which + // may accept the event via other objects + + // filter -> HypoAlg + Decision* filter = newDecisionIn( container, decisionObject, "F", context ); + decisionIDs(filter).insert( decisionIDs(filter).end(), passingFinalIDs.begin(), passingFinalIDs.end() ); + + // HLTPassRaw -> filter + linkToPrevious(passRawOutput, filter, context); + // Accumulate and de-duplicate passed IDs for which this hypo was the Chain's final step allPassingFinalIDs.insert( passingFinalIDs.begin(), passingFinalIDs.end() ); - // Create seed links for the navigation to follow - linkToPrevious(passRawOutput, decisionObject, context); } } @@ -93,14 +102,11 @@ StatusCode DecisionSummaryMakerAlg::execute(const EventContext& context) const { } } - // TODO collate final rerun decisions & terminus links into the rerunOutput object - // Get the data from the L1 decoder, this is where prescales were applied SG::ReadHandle<DecisionContainer> l1DecoderSummary( m_l1SummaryKey, context ); const Decision* l1SeededChains = nullptr; // Activated by L1 const Decision* activeChains = nullptr; // Activated and passed prescale check const Decision* prescaledChains = nullptr; // Activated but failed prescale check - const Decision* rerunChains = nullptr; // Set to activate in the second pass for (const Decision* d : *l1DecoderSummary) { if (d->name() == "l1seeded") { l1SeededChains = d; @@ -108,15 +114,13 @@ StatusCode DecisionSummaryMakerAlg::execute(const EventContext& context) const { activeChains = d; } else if (d->name() == "prescaled") { prescaledChains = d; - } else if (d->name() == "rerun") { - rerunChains = d; } else { ATH_MSG_ERROR("DecisionSummaryMakerAlg encountered an unknown set of decisions from the L1Decoder, name '" << d->name() << "'"); return StatusCode::FAILURE; } } - if (l1SeededChains == nullptr || activeChains == nullptr || prescaledChains == nullptr || rerunChains == nullptr) { + if (l1SeededChains == nullptr || activeChains == nullptr || prescaledChains == nullptr) { ATH_MSG_ERROR("Unable to read in the summary from the L1Decoder. Cannot write to the HLT output summary the prescale status of HLT chains."); return StatusCode::FAILURE; } @@ -131,12 +135,6 @@ StatusCode DecisionSummaryMakerAlg::execute(const EventContext& context) const { decisionIDs( prescaledOutput ).insert( decisionIDs( prescaledOutput ).end(), prescaledIDs.begin(), prescaledIDs.end() ); // Save this to the output - // Save the set of chains which were flagged as only executing in rerun. - DecisionIDContainer rerunIDs; - decisionIDs( rerunChains, rerunIDs ); - decisionIDs( rerunOutput ).insert( decisionIDs( rerunOutput ).end(), - rerunIDs.begin(), rerunIDs.end() ); - // Do cost monitoring if (m_doCostMonitoring) { SG::WriteHandle<xAOD::TrigCompositeContainer> costMonOutput = createAndStore(m_costWriteHandleKey, context); diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py index f0e7b9ccf2c..805c8a8e2d2 100644 --- a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py @@ -101,7 +101,6 @@ def collectFilters( steps ): def collectL1DecoderDecisionObjects(l1decoder): decisionObjects = set() decisionObjects.update([ d.Decisions for d in l1decoder.roiUnpackers ]) - decisionObjects.update([ d.Decisions for d in l1decoder.rerunRoiUnpackers ]) from L1Decoder.L1DecoderConfig import mapThresholdToL1DecisionCollection decisionObjects.add( mapThresholdToL1DecisionCollection("FSNOSEED") ) # Include also Full Scan __log.info("Collecting %i decision objects from L1 decoder instance", len(decisionObjects)) -- GitLab