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