From 5c50b98e216e920eef943b68f996698dca487d62 Mon Sep 17 00:00:00 2001
From: Francesca Pastore <francesca.pastore@cern.ch>
Date: Tue, 6 Mar 2018 21:06:15 +0100
Subject: [PATCH] development of HLT DecisionHandling; converging
 EmuStepProcessing towards egammaRun; added new test EgammaMenu

Former-commit-id: cb7cab6de05a76d84b8d1dd5c5bb448bb2b5ac22
---
 .../src/T2CaloEgammaFastAlgo.cxx              |    6 +-
 .../python/TestTrigL2CaloHypoTool.py          |  191 ++
 .../src/TestTrigL2CaloHypoAlg.cxx             |  183 ++
 .../src/TestTrigL2CaloHypoAlg.h               |   46 +
 .../src/TestTrigL2CaloHypoToolInc.cxx         |  349 ++++
 .../src/TestTrigL2CaloHypoToolInc.h           |   62 +
 .../src/components/TrigEgammaHypo_entries.cxx |    5 +
 .../src/TriggerSummaryAlg.cxx                 |   13 +-
 .../DecisionHandling/src/TriggerSummaryAlg.h  |    2 +-
 .../src/TestEventViewCreatorAlgorithm.cxx     |  158 ++
 .../src/TestEventViewCreatorAlgorithm.h       |   52 +
 .../src/components/ViewAlgs_entries.cxx       |    3 +
 .../TrigUpgradeTest/CMakeLists.txt            |   36 +-
 .../TrigUpgradeTest/python/HLTCFConfig.py     |  265 ++-
 .../TrigUpgradeTest/python/MenuComponents.py  |   40 +-
 .../share/EmuStepProcessing.ref               | 1686 +++++++++++++++++
 .../share/EmuStepProcessingTest.py            |   11 +-
 .../share/HLTSignatureConfig.py               |   25 +-
 .../TrigUpgradeTest/share/egamma.menu.py      |  550 +++++-
 .../TrigUpgradeTest/share/egamma.withViews.py |   16 +-
 .../TrigUpgradeTest/src/TestComboHypoAlg.cxx  |  149 +-
 .../TrigUpgradeTest/src/TestHypoAlg.cxx       |    2 +-
 .../TrigUpgradeTest/src/TestHypoTool.cxx      |    4 +-
 .../TrigUpgradeTest/src/TestInputMaker.cxx    |  146 +-
 .../TrigUpgradeTest/src/TestInputMaker.h      |   13 +-
 .../TrigUpgradeTest/src/TestRecoAlg.cxx       |   58 +-
 .../components/TrigUpgradeTest_entries.cxx    |    1 +
 .../TrigUpgradeTest/test/test_egamma_menu.sh  |    5 +
 28 files changed, 3780 insertions(+), 297 deletions(-)
 create mode 100644 Trigger/TrigHypothesis/TrigEgammaHypo/python/TestTrigL2CaloHypoTool.py
 create mode 100644 Trigger/TrigHypothesis/TrigEgammaHypo/src/TestTrigL2CaloHypoAlg.cxx
 create mode 100644 Trigger/TrigHypothesis/TrigEgammaHypo/src/TestTrigL2CaloHypoAlg.h
 create mode 100644 Trigger/TrigHypothesis/TrigEgammaHypo/src/TestTrigL2CaloHypoToolInc.cxx
 create mode 100644 Trigger/TrigHypothesis/TrigEgammaHypo/src/TestTrigL2CaloHypoToolInc.h
 create mode 100644 Trigger/TrigSteer/ViewAlgs/src/TestEventViewCreatorAlgorithm.cxx
 create mode 100644 Trigger/TrigSteer/ViewAlgs/src/TestEventViewCreatorAlgorithm.h
 create mode 100644 Trigger/TrigValidation/TrigUpgradeTest/share/EmuStepProcessing.ref
 create mode 100755 Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_menu.sh

diff --git a/Trigger/TrigAlgorithms/TrigT2CaloEgamma/src/T2CaloEgammaFastAlgo.cxx b/Trigger/TrigAlgorithms/TrigT2CaloEgamma/src/T2CaloEgammaFastAlgo.cxx
index 51b63eea6d6..6be60937234 100755
--- a/Trigger/TrigAlgorithms/TrigT2CaloEgamma/src/T2CaloEgammaFastAlgo.cxx
+++ b/Trigger/TrigAlgorithms/TrigT2CaloEgamma/src/T2CaloEgammaFastAlgo.cxx
@@ -88,11 +88,15 @@ StatusCode T2CaloEgammaFastAlgo::execute()
 
   m_trigEmClusterCollection = SG::WriteHandle<xAOD::TrigEMClusterContainer>( m_clusterContainerKey, getContext() );
   ATH_CHECK( m_trigEmClusterCollection.record( CxxUtils::make_unique<xAOD::TrigEMClusterContainer>(), CxxUtils::make_unique<xAOD::TrigEMClusterAuxContainer>() ) );
-
+  ATH_MSG_DEBUG( "Made WriteHandle " << m_clusterContainerKey );
+  ATH_MSG_INFO( name() << " running with store " <<  getContext().getExtension<Atlas::ExtendedEventContext>()->proxy()->name() );
+ 
   auto roisHandle = SG::makeHandle( m_roiCollectionKey );
+  ATH_MSG_DEBUG( "Made handle " << m_roiCollectionKey  );
   const TrigRoiDescriptorCollection* roiCollection = roisHandle.cptr();
   //  ATH_CHECK(m_roiCollectionKey.isValid());
 
+  ATH_MSG_DEBUG( "Made pointer " << m_roiCollectionKey << " with "<< roiCollection->size() <<" elements"  );
 
   const TrigRoiDescriptor* roiDescriptor = 0;
   //TrigRoiDescriptor* roiDescriptor = 0;
diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/python/TestTrigL2CaloHypoTool.py b/Trigger/TrigHypothesis/TrigEgammaHypo/python/TestTrigL2CaloHypoTool.py
new file mode 100644
index 00000000000..6e71228da00
--- /dev/null
+++ b/Trigger/TrigHypothesis/TrigEgammaHypo/python/TestTrigL2CaloHypoTool.py
@@ -0,0 +1,191 @@
+# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+import re
+_pattern = "(?P<mult>\d*)(e(?P<threshold1>\d+))(e(?P<threshold2>\d+))*"
+_cpattern = re.compile( _pattern )
+
+from AthenaCommon.SystemOfUnits import GeV
+
+
+
+
+def _TestIncTool(name, threshold, sel):
+
+    from TrigEgammaHypo.TrigEgammaHypoConf import TestTrigL2CaloHypoToolInc    
+    #print "configuring threshold " , threshold , " slection " , sel
+
+    from TrigL2CaloHypoCutDefs import L2CaloCutMaps    
+    possibleSel = L2CaloCutMaps( threshold ).MapsHADETthr.keys()
+    
+
+    tool = TestTrigL2CaloHypoToolInc( name ) 
+    tool.AcceptAll = False
+    tool.MonTool = ""
+    from TriggerJobOpts.TriggerFlags import TriggerFlags
+    #print "monitoring", TriggerFlags.enableMonitoring()
+
+
+    if 'Validation' in TriggerFlags.enableMonitoring() or 'Online' in  TriggerFlags.enableMonitoring():
+        from AthenaMonitoring.GenericMonitoringTool import GenericMonitoringTool, defineHistogram
+        monTool = GenericMonitoringTool("MonTool"+name)
+        monTool.Histograms = [ defineHistogram('dEta', type='TH1F', title="L2Calo Hypo #Delta#eta_{L2 L1}; #Delta#eta_{L2 L1}", xbins=80, xmin=-0.01, xmax=0.01),
+                               defineHistogram('dPhi', type='TH1F', title="L2Calo Hypo #Delta#phi_{L2 L1}; #Delta#phi_{L2 L1}", xbins=80, xmin=-0.01, xmax=0.01),
+                               defineHistogram('Et_em', type='TH1F', title="L2Calo Hypo cluster E_{T}^{EM};E_{T}^{EM} [MeV]", xbins=50, xmin=-2000, xmax=100000),
+                               defineHistogram('Eta', type='TH1F', title="L2Calo Hypo entries per Eta;Eta", xbins=100, xmin=-2.5, xmax=2.5),
+                               defineHistogram('Phi', type='TH1F', title="L2Calo Hypo entries per Phi;Phi", xbins=128, xmin=-3.2, xmax=3.2) ]
+
+        cuts=['Input','has one TrigEMCluster', '#Delta #eta L2-L1', '#Delta #phi L2-L1','eta','rCore',
+              'eRatio','E_{T}^{EM}', 'E_{T}^{Had}','f_{1}','Weta2','Wstot','F3']
+
+        labelsDescription = ''
+        for c in cuts:
+            labelsDescription +=  c+':'
+            
+        monTool.Histograms += [ defineHistogram('CutCounter', type='TH1I', title="L2Calo Hypo Passed Cuts;Cut",
+                                             xbins=13, xmin=-1.5, xmax=12.5,  opt="kCumulative", labels=labelsDescription) ]
+
+        if 'Validation' in TriggerFlags.enableMonitoring():
+            monTool.Histograms += [ defineHistogram('Et_had', type='TH1F', title="L2Calo Hypo E_{T}^{had} in first layer;E_{T}^{had} [MeV]", xbins=50, xmin=-2000, xmax=100000),
+                                    defineHistogram('Rcore', type='TH1F', title="L2Calo Hypo R_{core};E^{3x3}/E^{3x7} in sampling 2", xbins=48, xmin=-0.1, xmax=1.1),
+                                    defineHistogram('Eratio', type='TH1F', title="L2Calo Hypo E_{ratio};E^{max1}-E^{max2}/E^{max1}+E^{max2} in sampling 1 (excl.crack)", xbins=64, xmin=-0.1, xmax=1.5),
+                                    defineHistogram('EtaBin', type='TH1I', title="L2Calo Hypo entries per Eta bin;Eta bin no.", xbins=11, xmin=-0.5, xmax=10.5),
+                                    defineHistogram('F1', type='TH1F', title="L2Calo Hypo f_{1};f_{1}", xbins=34, xmin=-0.5, xmax=1.2),                                    
+                                    defineHistogram('Weta2', type='TH1F', title="L2Calo Hypo Weta2; E Width in sampling 2", xbins=96, xmin=-0.1, xmax=0.61),     
+                                    defineHistogram('Wstot', type='TH1F', title="L2Calo Hypo Wstot; E Width in sampling 1", xbins=48, xmin=-0.1, xmax=11.),
+                                    defineHistogram('F3', type='TH1F', title="L2Calo Hypo F3; E3/(E0+E1+E2+E3)", xbins=96, xmin=-0.1, xmax=1.1) ]        
+            
+        monTool.HistPath = 'L2CaloHypo/'+tool.name()
+        tool.MonTool = monTool
+        tool += monTool
+
+
+        
+
+    tool.EtaBins        = [0.0, 0.6, 0.8, 1.15, 1.37, 1.52, 1.81, 2.01, 2.37, 2.47]
+    def same( val ):
+        return [val]*( len( tool.EtaBins ) - 1 )
+
+    tool.ETthr          = same( float(threshold) )
+    tool.dETACLUSTERthr = 0.1
+    tool.dPHICLUSTERthr = 0.1
+    tool.F1thr          = same( 0.005 )
+    tool.ET2thr         = same( 90.0*GeV )
+    tool.HADET2thr      = same( 999.0 )
+    tool.HADETthr       = same( 0.058 ) 
+    tool.WETA2thr       = same( 99999. ) 
+    tool.WSTOTthr       = same( 99999. )
+    tool.F3thr          = same( 99999. )
+    tool.CARCOREthr     = same( -9999. ) 
+    tool.CAERATIOthr    = same( -9999. )
+
+    if sel == 'nocut':
+        tool.AcceptAll = True
+        tool.ETthr          = same( float( threshold )*GeV ) 
+        tool.dETACLUSTERthr = 9999.
+        tool.dPHICLUSTERthr = 9999.
+        tool.F1thr          = same( 0.0 )
+        tool.HADETthr       = same( 9999. )
+        tool.CARCOREthr     = same( -9999. ) 
+        tool.CAERATIOthr    = same( -9999. )
+
+    elif sel == "etcut":
+        tool.ETthr          = same( ( float( threshold ) -  3 )*GeV ) 
+        # No other cuts applied
+        tool.dETACLUSTERthr = 9999.
+        tool.dPHICLUSTERthr = 9999.
+        tool.F1thr          = same( 0.0 )
+        tool.HADETthr       = same( 9999. )
+        tool.CARCOREthr     = same( -9999. )
+        tool.CAERATIOthr    = same( -9999. )
+
+    elif sel in possibleSel: # real selection
+        tool.ETthr       = same( ( float( threshold ) - 3 )*GeV )
+        tool.HADETthr    = L2CaloCutMaps( threshold ).MapsHADETthr[sel]
+        tool.CARCOREthr  = L2CaloCutMaps( threshold ).MapsCARCOREthr[sel]
+        tool.CAERATIOthr = L2CaloCutMaps( threshold ).MapsCAERATIOthr[sel]
+
+    
+    etaBinsLen = len( tool.EtaBins ) - 1
+    for prop in "ETthr HADETthr CARCOREthr CARCOREthr F1thr F3thr WSTOTthr WETA2thr HADETthr HADETthr ET2thr".split():
+        propLen = len( getattr( tool, prop ) ) 
+        assert propLen == etaBinsLen , "In " + name + " " + prop + " has length " + str( propLen ) + " which is different from EtaBins which has length " + str( etaBinsLen )
+
+        #    assert  _l( EtaBins, tool.ETthr, tool.HADETthr, tool.CARCOREthr, tool.CARCOREthr ) , "All list properties should have equal length ( as EtaBins )"
+    #print tool
+    return tool
+
+
+def _MultTool(name):
+    from TrigEgammaHypo.TrigEgammaHypoConf import TrigL2CaloHypoToolMult
+    return TrigL2CaloHypoToolMult( name )
+
+
+def decodeThreshold( threshold ):
+    """ decodes the thresholds of the form e10, 2e10, e10e15, ... """
+    print "decoding ", threshold
+    if threshold[0].isdigit(): # is if the from NeX, return as list [X,X,X...N times...]
+        assert threshold[1] == 'e', "Two digit multiplicity not supported"
+        return [ threshold[2:] ] * int( threshold[0] )
+
+    if threshold.count('e') > 1: # is of the form eXeYeZ, return as [X, Y, Z]
+        return threshold.strip('e').split('e')
+
+    # inclusive, return as 1 element list
+    return [ threshold[1:] ] 
+
+def TestTrigL2CaloHypoToolFromName( name ):
+    from AthenaCommon.Constants import DEBUG
+    """ decode the name ( chain ) and figure out the threshold and selection from it """
+    #print "Configuring ", name
+    bname = name.split('_')
+    threshold = bname[1]
+    sel = bname[2]
+
+    dt = decodeThreshold( threshold )
+    assert len(dt) >= 1, "Threshold "+ threshold +" not decoded properly"
+
+    if len( dt ) > 1:
+        tool = _MultTool(name) 
+        for cutNumber, th in enumerate( dt ):
+            print "cut and threshold ", cutNumber, th
+            tool.SubTools += [ _IncTool( name+"_"+str(cutNumber), th, sel ) ]
+        for t in tool.SubTools:
+            t.OutputLevel=DEBUG
+    else:
+        tool = _TestIncTool( name, dt[0], sel )
+    return tool
+
+if __name__ == "__main__":    
+    from TriggerJobOpts.TriggerFlags import TriggerFlags
+    TriggerFlags.enableMonitoring=['Validation']
+    t = TrigL2CaloHypoToolFromName( "HLT_e10_nocut" )
+    assert t, "cant configure NoCut"    
+    #print t
+
+    t = TrigL2CaloHypoToolFromName( "HLT_e10_etcut" )
+    assert t, "cant configure EtCut"
+    #print t
+
+    t  = TrigL2CaloHypoToolFromName( "HLT_e10_tight" )
+    assert t, "cant configure rel selection - tight"
+    #print t    
+
+    t  = TrigL2CaloHypoToolFromName( "HLT_e10_perf" )
+    assert t, "cant configure rel selection - perf"
+    #print t    
+
+    t = TrigL2CaloHypoToolFromName( "HLT_2e5_etcut" )
+    assert t, "cant configure symmetric selection"
+    assert len(t.SubTools) == 2, "Sub-tools not configured"
+    #print t    
+
+    t = TrigL2CaloHypoToolFromName( "HLT_3e5_etcut" )
+    assert t, "cant configure symmetric selection"
+    assert len(t.SubTools) == 3, "Sub-tools not configured"
+
+
+    t = TrigL2CaloHypoToolFromName( "HLT_e5e3_etcut" )
+    assert t, "cant configure asymmetric selection"
+    assert len(t.SubTools) == 2, "Sub-tools not configured"
+    #print t    
+
+    print ( "\n\nALL OK\n\n" )
diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/src/TestTrigL2CaloHypoAlg.cxx b/Trigger/TrigHypothesis/TrigEgammaHypo/src/TestTrigL2CaloHypoAlg.cxx
new file mode 100644
index 00000000000..0715e65f5de
--- /dev/null
+++ b/Trigger/TrigHypothesis/TrigEgammaHypo/src/TestTrigL2CaloHypoAlg.cxx
@@ -0,0 +1,183 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "GaudiKernel/Property.h"
+#include "TestTrigL2CaloHypoAlg.h"
+
+using namespace TrigCompositeUtils;
+
+TestTrigL2CaloHypoAlg::TestTrigL2CaloHypoAlg( const std::string& name, 
+				      ISvcLocator* pSvcLocator ) : 
+  ::AthReentrantAlgorithm( name, pSvcLocator ) {}
+
+TestTrigL2CaloHypoAlg::~TestTrigL2CaloHypoAlg() {}
+
+StatusCode TestTrigL2CaloHypoAlg::initialize() {
+  ATH_MSG_INFO ( "Initializing " << name() << "..." );
+  ATH_MSG_DEBUG( "RunInView  = " << ( m_runInView==true ? "True" : "False" ) );
+  
+  CHECK( m_hypoTools.retrieve() );
+  
+  CHECK( m_clustersKey.initialize() );
+  if (  m_runInView)   renounce( m_clustersKey );// clusters are made in views, so they are not in the EvtStore: hide them
+
+  CHECK( m_previousDecisionsKey.initialize() );
+  renounce(m_previousDecisionsKey);
+
+  CHECK( m_decisionsKey.initialize() );
+  return StatusCode::SUCCESS;
+}
+
+
+
+  /*
+OLD
+    ITC -> get 1 RoI/TC
+    loop over views
+       make one TC per view
+       get RoIs of view - from RoI input
+       get clusters of view -from View input
+       map the roi to a decision - from input decisions
+       create new decision with one cluster, one roi, one view
+
+NEW
+    loop over ITC
+       get RoI and view of TC
+       get cluster of that view
+       create new decision with one cluster, one roi, one view
+
+   */
+
+StatusCode TestTrigL2CaloHypoAlg::execute_r( const EventContext& context ) const {  
+  ATH_MSG_DEBUG ( "Executing " << name() << "..." );
+
+  // new decisions
+  auto decisions = std::make_unique<DecisionContainer>();
+  auto aux = std::make_unique<DecisionAuxContainer>();
+  decisions->setStore( aux.get() );
+
+  // input for decision
+  std::vector<ITrigL2CaloHypoTool::ClusterInfo> toolInput;
+
+  // loop over previous decisions
+  auto previousDecisionsHandle = SG::makeHandle( m_previousDecisionsKey, context );
+  size_t counter=0;
+  for ( auto previousDecision: *previousDecisionsHandle ) {
+    //get RoI
+    auto roiEL = previousDecision->objectLink<TrigRoiDescriptorCollection>( "initialRoI" );
+    CHECK( roiEL.isValid() );
+    const TrigRoiDescriptor* roi = *roiEL;
+
+    // get View
+    auto viewEL = previousDecision->objectLink<std::vector<SG::View*>>( "view" );
+    CHECK( viewEL.isValid() );
+    const SG::View* view_const = *viewEL;
+    SG::View* view = const_cast<SG::View*>(view_const); // CHECK THIS!
+
+    // get clusters of that view
+    auto clusterHandle =  SG::makeHandle( m_clustersKey, context );
+    CHECK( clusterHandle.setProxyDict( view ) );
+    ATH_MSG_DEBUG ( "Cluster handle size: " << clusterHandle->size() << "..." );
+
+    // create new decision
+    auto d = newDecisionIn( decisions.get() );
+
+
+    toolInput.emplace_back( d, roi, clusterHandle.cptr()->at(0), previousDecision );
+
+     {
+      auto el = ElementLink<xAOD::TrigEMClusterContainer>( view->name()+"_"+clusterHandle.key(), 0 ); // 0 because there is only one obj in per-view collection
+      CHECK( el.isValid() );
+      d->setObjectLink( "feature",  el );
+    }
+     d->setObjectLink( "roi", roiEL );
+     d->setObjectLink( "view", viewEL );
+     d->setObjectLink( "previousDecisions", ElementLink<DecisionContainer>(m_previousDecisionsKey.key(), counter) );// link to previous decision object
+     
+     ATH_MSG_DEBUG( "Added view, roi, cluster, previous decision to new decision "<<counter <<" for view "<<view->name()  );
+     counter++;
+
+  }
+
+  ATH_MSG_DEBUG( "Found "<<toolInput.size()<<" inputs to tools");
+
+   
+  for ( auto& tool: m_hypoTools ) {
+    CHECK( tool->decide( toolInput ) );
+  }
+ 
+  {
+    auto handle =  SG::makeHandle( m_decisionsKey, context );
+    CHECK( handle.record( std::move( decisions ), std::move( aux ) ) );
+    ATH_MSG_DEBUG ( "Exit with "<<handle->size() <<" decision objects");
+  }
+
+  return StatusCode::SUCCESS;
+}
+
+
+// StatusCode TestTrigL2CaloHypoAlg::execute_rold( const EventContext& context ) const {  
+//   ATH_MSG_DEBUG ( "Executing " << name() << "..." );
+//   auto viewsHandle = SG::makeHandle( m_viewsKey, context );
+  
+//   auto decisions = std::make_unique<DecisionContainer>();
+//   auto aux = std::make_unique<DecisionAuxContainer>();
+//   decisions->setStore( aux.get() );
+
+//   std::map<const TrigRoiDescriptor*, const TrigCompositeUtils::Decision* > roiToDecision;
+//   auto previousDecisionsHandle = SG::makeHandle( m_previousDecisionsKey, context );
+//   for ( auto previousDecision: *previousDecisionsHandle ) {
+//     auto roiEL = previousDecision->objectLink<TrigRoiDescriptorCollection>( "initialRoI" );
+//     CHECK( roiEL.isValid() );
+//     const TrigRoiDescriptor* roi = *roiEL;
+//     roiToDecision.insert( std::make_pair( roi, previousDecision ) );
+//   }
+//   ATH_MSG_DEBUG( "RoI to decisions map size: " << roiToDecision.size() );
+
+
+//   std::vector<ITrigL2CaloHypoTool::ClusterInfo> toolInput;
+//   // exploit knowledge that there is one cluster in the view
+//   size_t counter = 0;
+//   for ( auto view: *viewsHandle ) {
+//     auto d = newDecisionIn( decisions.get() );
+    
+//     auto roiHandle =  SG::makeHandle( m_roisKey, context );
+//     CHECK( roiHandle.setProxyDict( view ) );
+//     const TrigRoiDescriptor* roi = roiHandle.cptr()->at(0);
+
+//     auto clusterHandle =  SG::makeHandle( m_clustersKey, context );
+//     CHECK( clusterHandle.setProxyDict( view ) );
+       
+//     toolInput.emplace_back( d, roi, clusterHandle.cptr()->at(0), roiToDecision[roi] );
+
+//     {
+//       auto el = ElementLink<xAOD::TrigEMClusterContainer>( view->name()+"_"+clusterHandle.key(), 0 ); // 0 because there is only one obj in per-view collection
+//       CHECK( el.isValid() );
+//       d->setObjectLink( "feature",  el );
+//     }
+//     {
+//       auto el = ElementLink<TrigRoiDescriptorCollection>( view->name()+"_"+m_roisKey.key(), 0 );
+//       CHECK( el.isValid() );
+//       d->setObjectLink( "roi", el );
+//     }
+//     {
+//       auto el = ElementLink< std::vector<SG::View*> >( m_viewsKey.key(), counter );
+//       CHECK( el.isValid() );
+//       d->setObjectLink( "view", el );
+//     }
+//   }
+  
+//   for ( auto& tool: m_hypoTools ) {
+//     CHECK( tool->decide( toolInput ) );
+//   }
+ 
+//   {
+//     auto handle =  SG::makeHandle( m_decisionsKey, context );
+//     CHECK( handle.record( std::move( decisions ), std::move( aux ) ) );
+//   }
+
+//   return StatusCode::SUCCESS;
+// }
+
+
diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/src/TestTrigL2CaloHypoAlg.h b/Trigger/TrigHypothesis/TrigEgammaHypo/src/TestTrigL2CaloHypoAlg.h
new file mode 100644
index 00000000000..4065cf10c1f
--- /dev/null
+++ b/Trigger/TrigHypothesis/TrigEgammaHypo/src/TestTrigL2CaloHypoAlg.h
@@ -0,0 +1,46 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+#ifndef TRIGEGAMMAHYPO_TESTTRIGL2CALOHYPOALG_H
+#define TRIGEGAMMAHYPO_TESTTRIGL2CALOHYPOALG_H 1
+
+#include <string>
+
+#include "AthenaBaseComps/AthReentrantAlgorithm.h"
+#include "AthViews/View.h"
+#include "TrigSteeringEvent/TrigRoiDescriptorCollection.h"
+#include "xAODTrigCalo/TrigEMClusterContainer.h"
+#include "DecisionHandling/TrigCompositeUtils.h"
+
+#include "ITrigL2CaloHypoTool.h"
+
+/**
+ * @class Implements egamma calo selection for the new HLT framework
+ * @brief 
+ **/
+
+class TestTrigL2CaloHypoAlg : public ::AthReentrantAlgorithm { 
+ public: 
+
+  TestTrigL2CaloHypoAlg( const std::string& name, ISvcLocator* pSvcLocator );
+
+  virtual ~TestTrigL2CaloHypoAlg(); 
+
+  virtual StatusCode  initialize() override;
+  virtual StatusCode  execute_r( const EventContext& context ) const override;
+  
+ 
+ private: 
+  TestTrigL2CaloHypoAlg();
+  ToolHandleArray< ITrigL2CaloHypoTool > m_hypoTools { this, "HypoTools", {}, "Hypo tools" };
+     
+  SG::ReadHandleKey< xAOD::TrigEMClusterContainer > m_clustersKey { this, "CaloClusters", "CaloClusters", "CaloClusters in view" };  
+  SG::ReadHandleKey<TrigCompositeUtils::DecisionContainer> m_previousDecisionsKey { this, "previousDecisions", "Unspecified", "Input decisions" };
+  SG::WriteHandleKey< TrigCompositeUtils::DecisionContainer > m_decisionsKey { this, "Decisions", "Unspecified", "Output Decisions" };
+
+  Gaudi::Property< bool > m_runInView { this, "RunInView", false , "Set input DH for running in views" };
+
+}; 
+
+DECLARE_ALGORITHM_FACTORY( TestTrigL2CaloHypoAlg )
+#endif //> !TRIGEGAMMAHYPO_TESTTRIGL2CALOHYPOALG_H
diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/src/TestTrigL2CaloHypoToolInc.cxx b/Trigger/TrigHypothesis/TrigEgammaHypo/src/TestTrigL2CaloHypoToolInc.cxx
new file mode 100644
index 00000000000..b4438697ba6
--- /dev/null
+++ b/Trigger/TrigHypothesis/TrigEgammaHypo/src/TestTrigL2CaloHypoToolInc.cxx
@@ -0,0 +1,349 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include <algorithm>
+#include "DecisionHandling/HLTIdentifier.h"
+#include "DecisionHandling/Combinators.h"
+#include "AthenaMonitoring/MonitoredScope.h"
+
+#include "TestTrigL2CaloHypoToolInc.h"
+
+
+using namespace TrigCompositeUtils;
+
+TestTrigL2CaloHypoToolInc::TestTrigL2CaloHypoToolInc( const std::string& type, 
+						      const std::string& name, 
+						      const IInterface* parent )  
+  : base_class( type, name, parent ) {}//,
+    //    m_decisionId( HLT::Identifier::fromToolName( name ) ) {}
+
+StatusCode TestTrigL2CaloHypoToolInc::initialize()  {
+  ATH_MSG_DEBUG( "Initialization completed successfully"   );   
+  ATH_MSG_DEBUG( "AcceptAll           = " << ( m_acceptAll==true ? "True" : "False" ) ); 
+  ATH_MSG_DEBUG( "EtaBins        = " << m_etabin      );
+  ATH_MSG_DEBUG( "ETthr          = " << m_eTthr    << "( lo )/" << m_eT2thr    << "( hi )" );  
+  ATH_MSG_DEBUG( "HADETthr       = " << m_hadeTthr << "( lo )/" << m_hadeT2thr << "( hi )" );
+  ATH_MSG_DEBUG( "CARCOREthr     = " << m_carcorethr  );
+  ATH_MSG_DEBUG( "CAERATIOthr    = " << m_caeratiothr );
+  ATH_MSG_DEBUG( "dPHICLUSTERthr = " << m_dphicluster );
+  ATH_MSG_DEBUG( "dETACLUSTERthr = " << m_detacluster );
+  ATH_MSG_DEBUG( "WETA2thr     = "   << m_WETA2thr  );
+  ATH_MSG_DEBUG( "WSTOTthr     = "   << m_WSTOTthr  );
+  ATH_MSG_DEBUG( "F3thr     = "      << m_F3thr  );
+  
+  if ( m_etabin.size() == 0 ) {
+    ATH_MSG_ERROR(  " There are no cuts set (EtaBins property is an empty list)" );
+    return StatusCode::FAILURE;
+  }
+
+  unsigned int nEtaBin = m_etabin.size();
+#define CHECK_SIZE( __n) if ( m_##__n.size() !=  (nEtaBin - 1) )		\
+    { ATH_MSG_DEBUG(" __n size is " << m_##__n.size() << " but needs to be " << (nEtaBin - 1) ); return StatusCode::FAILURE; }
+
+  CHECK_SIZE( eTthr );
+  CHECK_SIZE( eT2thr );
+  CHECK_SIZE( hadeTthr );
+  CHECK_SIZE( hadeT2thr );
+  CHECK_SIZE( carcorethr );
+  CHECK_SIZE( caeratiothr );
+  CHECK_SIZE( WETA2thr );
+  CHECK_SIZE( WSTOTthr ); 
+  CHECK_SIZE( F3thr );
+#undef CHECK_SIZE
+
+
+
+  //  ATH_MSG_DEBUG( "Tool configured for chain/id: " << m_decisionId );
+
+  if ( not m_monTool.name().empty() ) 
+    CHECK( m_monTool.retrieve() );
+
+  CHECK( not m_chainsProperty.empty() );
+  
+  for ( const std::string& el: m_chainsProperty ) 
+    m_chains.insert( HLT::Identifier( el ).numeric() );
+  
+  for ( const HLT::Identifier& id: m_chains )
+    ATH_MSG_DEBUG( "Configured to require chain " << id );
+
+
+  
+  return StatusCode::SUCCESS;
+}
+
+
+
+TestTrigL2CaloHypoToolInc::~TestTrigL2CaloHypoToolInc(){}
+
+
+bool TestTrigL2CaloHypoToolInc::decide( const ITrigL2CaloHypoTool::ClusterInfo& input ) const {
+
+  ATH_MSG_DEBUG( "start decide" );
+  bool pass = false;
+
+  using namespace Monitored;
+  // TB Not sure if anything else than the CutCounter should monitored it in every cut tool, 
+  // Should  quantitities be filled only after the succesful selection?
+
+  auto dEta         = MonitoredScalar::declare( "dEta", -1. ); 
+  auto dPhi         = MonitoredScalar::declare( "dPhi", -1. );
+  auto eT_T2Calo    = MonitoredScalar::declare( "Et_em"   , -1.0 );
+  auto hadET_T2Calo = MonitoredScalar::declare( "Et_had", -1.0 );
+  auto rCore        = MonitoredScalar::declare( "RCore"       , -1.0 );
+  auto energyRatio  = MonitoredScalar::declare( "ERatio" , -1.0 );
+  auto etaBin       = MonitoredScalar::declare( "EtaBin", -1. );
+  auto monEta       = MonitoredScalar::declare( "Eta", -99. ); 
+  auto monPhi       = MonitoredScalar::declare( "Phi", -99. );
+  auto F1           = MonitoredScalar::declare( "F1"          , -1.0 );  
+  auto Weta2        = MonitoredScalar::declare( "Weta2"       , -1.0 );
+  auto Wstot        = MonitoredScalar::declare( "Wstot"       , -1.0 );
+  auto F3           = MonitoredScalar::declare( "F3"          , -1.0 );
+  auto PassedCuts   = MonitoredScalar::declare<int>( "CutCounter", -1 );  
+  auto monitorIt    = MonitoredScope::declare( m_monTool, 
+					       dEta, dPhi, eT_T2Calo, hadET_T2Calo,
+					       rCore, energyRatio, etaBin, monEta,
+					       monPhi, F1, Weta2, Wstot, F3, PassedCuts );
+  // when leaving scope it will ship data to monTool
+  PassedCuts = PassedCuts + 1; //got called (data in place)
+
+  if ( m_acceptAll ) {
+    pass = true;
+    ATH_MSG_DEBUG( "AcceptAll property is set: taking all events" );
+  } else {
+    pass = false;
+    ATH_MSG_DEBUG( "AcceptAll property not set: applying selection" );
+  }
+  auto roiDescriptor = input.roi;
+
+
+  if ( fabs( roiDescriptor->eta() ) > 2.6 ) {
+      ATH_MSG_DEBUG( "REJECT The cluster had eta coordinates beyond the EM fiducial volume : " << roiDescriptor->eta() << "; stop the chain now" );
+      pass=false; // special case       
+      return pass;
+  } 
+
+  ATH_MSG_DEBUG( "; RoI ID = " << roiDescriptor->roiId()
+  		 << ": Eta = " << roiDescriptor->eta()
+  		 << ", Phi = " << roiDescriptor->phi() );
+
+  // fill local variables for RoI reference position
+  double etaRef = roiDescriptor->eta();
+  double phiRef = roiDescriptor->phi();
+  // correct phi the to right range ( probably not needed anymore )   
+  if ( fabs( phiRef ) > M_PI ) phiRef -= 2*M_PI; // correct phi if outside range
+
+
+  auto pClus = input.cluster;
+  
+  float absEta = fabs( pClus->eta() );
+  // etaBin = -1;
+  // monEta = pClus->eta();
+  // monPhi = pClus->phi();
+ 
+  const int cutIndex = findCutIndex( absEta );
+  
+  // find if electron is in calorimeter crack
+  bool inCrack = ( absEta > 2.37 || ( absEta > 1.37 && absEta < 1.52 ) );
+
+  
+  dEta =  pClus->eta() - etaRef;
+  //  Deal with angle diferences greater than Pi
+  dPhi =  fabs( pClus->phi() - phiRef );
+  dPhi = ( dPhi < M_PI ? dPhi : 2*M_PI - dPhi ); // TB why only <
+
+
+  // calculate cluster quantities // definition taken from TrigElectron constructor     
+  if ( pClus->emaxs1() + pClus->e2tsts1() > 0 ) 
+    energyRatio = ( pClus->emaxs1() - pClus->e2tsts1() ) / ( pClus->emaxs1() + pClus->e2tsts1() );
+
+  // ( VD ) here the definition is a bit different to account for the cut of e277 @ EF 
+  if ( pClus->e277()!= 0. ) rCore = pClus->e237() / pClus->e277();
+
+  //fraction of energy deposited in 1st sampling
+
+  if ( fabs( pClus->energy() ) > 0.00001 ) F1 = ( pClus->energy( CaloSampling::EMB1 )+pClus->energy( CaloSampling::EME1 ) )/pClus->energy();
+
+  eT_T2Calo  = pClus->et();
+  
+  if ( eT_T2Calo!=0 && pClus->eta()!=0 ) hadET_T2Calo = pClus->ehad1()/cosh( fabs( pClus->eta() ) )/eT_T2Calo;
+ 
+
+  //extract Weta2 varable
+  Weta2 = pClus->weta2();
+
+  //extract Wstot varable
+  Wstot = pClus->wstot();
+
+  //extract F3 ( backenergy i EM calorimeter
+  float e0 = pClus->energy( CaloSampling::PreSamplerB ) + pClus->energy( CaloSampling::PreSamplerE );
+  float e1 = pClus->energy( CaloSampling::EMB1 ) + pClus->energy( CaloSampling::EME1 );
+  float e2 = pClus->energy( CaloSampling::EMB2 ) + pClus->energy( CaloSampling::EME2 );
+  float e3 = pClus->energy( CaloSampling::EMB3 ) + pClus->energy( CaloSampling::EME3 );
+  float eallsamples = e0+e1+e2+e3;
+  F3 = fabs( eallsamples )>0. ? e3/eallsamples : 0.; 
+
+  // apply cuts: DeltaEta( clus-ROI )
+  ATH_MSG_DEBUG( "TrigEMCluster: eta="  << pClus->eta()
+  		 << " roi eta=" << etaRef << " DeltaEta=" << dEta
+  		 << " cut: <"   << m_detacluster          );
+  
+  if ( fabs( pClus->eta() - etaRef ) > m_detacluster ) {
+    ATH_MSG_DEBUG("REJECT Cluster dEta cut failed");
+    return pass;
+  }
+  PassedCuts = PassedCuts + 1; //Deta
+  
+  // DeltaPhi( clus-ROI )
+  ATH_MSG_DEBUG( ": phi="  << pClus->phi()
+  		 << " roi phi="<< phiRef    << " DeltaPhi="<< dPhi
+  		 << " cut: <"  << m_dphicluster );
+  
+  if( dPhi > m_dphicluster ) {
+    ATH_MSG_DEBUG("REJECT Clsuter dPhi cut failed");
+    return pass;
+  }
+  PassedCuts = PassedCuts + 1; //DPhi
+
+  // eta range
+  if ( cutIndex == -1 ) {  // VD
+    ATH_MSG_DEBUG( "Cluster eta: " << absEta << " outside eta range " << m_etabin[m_etabin.size()-1] );
+    return pass;
+  } else { 
+    ATH_MSG_DEBUG( "eta bin used for cuts " << cutIndex );
+  }
+  PassedCuts = PassedCuts + 1; // passed eta cut
+  
+  // Rcore
+  ATH_MSG_DEBUG ( "TrigEMCluster: Rcore=" << rCore 
+  		  << " cut: >"  << m_carcorethr[cutIndex] );
+  if ( rCore < m_carcorethr[cutIndex] ) {
+    ATH_MSG_DEBUG("REJECT rCore cut failed");
+    return pass;
+  }
+  PassedCuts = PassedCuts + 1; //Rcore
+
+  // Eratio
+  ATH_MSG_DEBUG( " cut: >"  << m_caeratiothr[cutIndex] );   
+  if ( inCrack || F1 < m_F1thr[0] ) {
+    ATH_MSG_DEBUG ( "TrigEMCluster: InCrack= " << inCrack << " F1=" << F1 );
+  } else {
+    if ( energyRatio < m_caeratiothr[cutIndex] ) {
+      ATH_MSG_DEBUG("REJECT e ratio cut failed");
+      return pass;
+    }
+  }
+  PassedCuts = PassedCuts + 1; //Eratio
+  if( inCrack ) energyRatio = -1; //Set default value in crack for monitoring.
+  
+  // ET_em
+  ATH_MSG_DEBUG( "TrigEMCluster: ET_em=" << eT_T2Calo << " cut: >"  << m_eTthr[cutIndex] );
+  if ( eT_T2Calo < m_eTthr[cutIndex] ) {
+    ATH_MSG_DEBUG("REJECT et cut failed");
+    return pass;
+  }
+  PassedCuts = PassedCuts + 1; // ET_em
+ 
+  float hadET_cut = 0.0;  
+  // find which ET_had to apply	: this depends on the ET_em and the eta bin
+  if ( eT_T2Calo >  m_eT2thr[cutIndex] ) {
+    hadET_cut = m_hadeT2thr[cutIndex] ;
+
+    ATH_MSG_DEBUG ( "ET_em>"     << m_eT2thr[cutIndex] << ": use high ET_had cut: <" << hadET_cut );
+  } else {
+    hadET_cut = m_hadeTthr[cutIndex];
+
+    ATH_MSG_DEBUG ( "ET_em<"    << m_eT2thr[cutIndex] << ": use low ET_had cut: <" << hadET_cut );
+  }
+  
+  // ET_had
+  ATH_MSG_DEBUG ( "TrigEMCluster: ET_had=" << hadET_T2Calo << " cut: <" << hadET_cut );
+
+  if ( hadET_T2Calo > hadET_cut ) {
+    ATH_MSG_DEBUG("REJECT et had cut failed");
+    return pass;
+  }
+  PassedCuts = PassedCuts + 1; //ET_had
+  
+  // F1
+  ATH_MSG_DEBUG ( "TrigEMCluster: F1=" << F1 << " cut: >"  << m_F1thr[0] );
+  // if ( m_F1 < m_F1thr[0] ) return pass;  //( VD ) not cutting on this variable, only used to select whether to cut or not on eRatio
+  PassedCuts = PassedCuts + 1; //F1
+
+  //Weta2
+  ATH_MSG_DEBUG ( "TrigEMCluster: Weta2=" << Weta2 << " cut: <"  << m_WETA2thr[cutIndex] ); 
+  if ( Weta2 > m_WETA2thr[cutIndex] ) {
+    ATH_MSG_DEBUG("REJECT weta 2 cut failed");
+    return pass;
+  }
+  PassedCuts = PassedCuts + 1; //Weta2
+
+  //Wstot
+  ATH_MSG_DEBUG ( "TrigEMCluster: Wstot=" <<Wstot << " cut: <"  << m_WSTOTthr[cutIndex] ); 
+  if ( Wstot >= m_WSTOTthr[cutIndex] ) {
+    ATH_MSG_DEBUG("REJECT wstot cut failed");
+    return pass;
+  }
+  PassedCuts = PassedCuts + 1; //Wstot
+
+  //F3
+  ATH_MSG_DEBUG( "TrigEMCluster: F3=" << F3 << " cut: <"  << m_F3thr[cutIndex] ); 
+  if ( F3 > m_F3thr[cutIndex] ) {
+    ATH_MSG_DEBUG("REJECT F3 cut failed");
+    return pass;
+  }
+  PassedCuts = PassedCuts + 1; //F3
+
+  // got this far => passed!
+  pass = true;
+
+  // Reach this point successfully  
+  ATH_MSG_DEBUG( "pass = " << pass );
+
+  return pass;
+}
+
+int TestTrigL2CaloHypoToolInc::findCutIndex( float eta ) const {
+  const float absEta = std::abs(eta);
+  
+  auto binIterator = std::adjacent_find( m_etabin.begin(), m_etabin.end(), [=](float left, float right){ return left < absEta and absEta < right; }  );
+  if ( binIterator == m_etabin.end() ) {
+    return -1;
+  }
+  return  binIterator - m_etabin.begin();
+}
+
+
+StatusCode TestTrigL2CaloHypoToolInc::decide( std::vector<ClusterInfo>& input )  const {
+  ATH_MSG_DEBUG( "start decide on "<<input.size() <<" inputs" );
+  size_t counter = 0;
+  for ( auto& i: input ) {
+
+    auto objDecisions = i.previousDecisionIDs;
+
+    ATH_MSG_DEBUG("Number of previous decisions for input "<< counter <<"= " << objDecisions.size() );
+      
+      for ( TrigCompositeUtils::DecisionID id : objDecisions ) {
+	ATH_MSG_DEBUG( " -- found decision " << HLT::Identifier( id ) );
+      }
+    
+    std::vector<TrigCompositeUtils::DecisionID> intersection;
+    std::set_intersection( m_chains.begin(), m_chains.end(),
+			   objDecisions.begin(), objDecisions.end(),
+			   std::back_inserter( intersection ) );
+    // if there are active chains requiring this tool
+    if ( not intersection.empty() ) {
+      if ( decide( i ) ) {
+	for ( const HLT::Identifier& id: intersection )
+	  addDecisionID( id, i.decision );
+      }     
+    }
+    else {
+      ATH_MSG_DEBUG("No Input decisions requested by active chains");
+      for ( const HLT::Identifier& id: m_chains )
+	ATH_MSG_DEBUG( "Configured to require chain " << id );
+    }
+    counter++;
+  }
+  return StatusCode::SUCCESS;
+}
diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/src/TestTrigL2CaloHypoToolInc.h b/Trigger/TrigHypothesis/TrigEgammaHypo/src/TestTrigL2CaloHypoToolInc.h
new file mode 100644
index 00000000000..6f5dbde141f
--- /dev/null
+++ b/Trigger/TrigHypothesis/TrigEgammaHypo/src/TestTrigL2CaloHypoToolInc.h
@@ -0,0 +1,62 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+#ifndef TRIGEGAMMAHYPO_TESTTRIGL2CALOHYPOTOOLINC_H
+#define TRIGEGAMMAHYPO_TESTTRIGL2CALOHYPOTOOLINC_H 1
+
+//#include "GaudiKernel/IAlgTool.h"
+#include "CLHEP/Units/SystemOfUnits.h"
+#include "xAODTrigCalo/TrigEMCluster.h"
+#include "TrigSteeringEvent/TrigRoiDescriptor.h"
+#include "AthenaBaseComps/AthAlgTool.h"
+#include "AthenaMonitoring/GenericMonitoringTool.h"
+#include "DecisionHandling/HLTIdentifier.h"
+#include "DecisionHandling/TrigCompositeUtils.h"
+#include "ITrigL2CaloHypoTool.h"
+
+/**
+ * @class Implementation of the Egamma selection for CaloClusters
+ * @brief 
+ **/
+
+class TestTrigL2CaloHypoToolInc : public extends<AthAlgTool, ITrigL2CaloHypoTool> { 
+ public: 
+  TestTrigL2CaloHypoToolInc( const std::string& type, 
+			 const std::string& name, 
+			 const IInterface* parent );
+
+  virtual ~TestTrigL2CaloHypoToolInc();
+  virtual StatusCode initialize() override;
+
+  virtual StatusCode decide( std::vector<ITrigL2CaloHypoTool::ClusterInfo>& input )  const override;
+
+  virtual bool decide( const ITrigL2CaloHypoTool::ClusterInfo& i ) const override;
+
+ private:
+  //  HLT::Identifier m_decisionId;
+
+  Gaudi::Property<std::vector<std::string> > m_chainsProperty{ this, "Chains", {}, "Chains of whihc this Hypo is concerned" };
+  std::set<HLT::Identifier> m_chains;
+  
+  //Calorimeter electron ID  cuts
+  Gaudi::Property< std::vector<float> > m_etabin { this, "EtaBins", {} , "Bins of eta" }; //!<  selection variable for L2 calo selection:eta bins
+  Gaudi::Property< std::vector<float> > m_eTthr { this, "ETthr", {}, "ET Threshold" };
+  Gaudi::Property< std::vector<float> > m_eT2thr { this, "ET2thr", {}, "Second layer ET threshold" };
+  Gaudi::Property< std::vector<float> > m_hadeTthr { this, "HADETthr", {}, "" };
+  Gaudi::Property< std::vector<float> > m_hadeT2thr { this, "HADET2thr", {}, "" };
+  Gaudi::Property< std::vector<float> > m_carcorethr { this, "CARCOREthr", {}, "" };
+  Gaudi::Property< std::vector<float> > m_caeratiothr { this, "CAERATIOthr", {}, "" };
+  Gaudi::Property< std::vector<float> > m_F1thr { this, "F1thr", {}, "" };
+  Gaudi::Property< std::vector<float> > m_WETA2thr { this, "WETA2thr", {}, "" };
+  Gaudi::Property< std::vector<float> > m_WSTOTthr { this, "WSTOTthr", {}, "" };
+  Gaudi::Property< std::vector<float> > m_F3thr { this, "F3thr", {}, "" };
+  Gaudi::Property< float > m_detacluster { this, "dETACLUSTERthr", 0. , "" };
+  Gaudi::Property< float > m_dphicluster { this, "dPHICLUSTERthr", 0. , "" };  
+  Gaudi::Property< bool > m_acceptAll { this, "AcceptAll", false , "Ignore selection" };
+  
+  ToolHandle< GenericMonitoringTool > m_monTool { this, "MonTool", "", "Monitoring tool" };
+  
+  int findCutIndex( float eta ) const;
+}; 
+DECLARE_TOOL_FACTORY( TestTrigL2CaloHypoToolInc )
+#endif //> !TRIGEGAMMAHYPO_TESTTRIGL2CALOHYPOTOOL_H
diff --git a/Trigger/TrigHypothesis/TrigEgammaHypo/src/components/TrigEgammaHypo_entries.cxx b/Trigger/TrigHypothesis/TrigEgammaHypo/src/components/TrigEgammaHypo_entries.cxx
index 5e21afd09af..5e36b304f29 100644
--- a/Trigger/TrigHypothesis/TrigEgammaHypo/src/components/TrigEgammaHypo_entries.cxx
+++ b/Trigger/TrigHypothesis/TrigEgammaHypo/src/components/TrigEgammaHypo_entries.cxx
@@ -14,6 +14,7 @@
 #include "TrigEgammaHypo/TrigL2PhotonFex.h"
 #include "TrigEgammaHypo/TrigL2CaloLayersHypo.h"
 
+
 DECLARE_COMPONENT( TrigL2CaloHypo )
 DECLARE_COMPONENT( TrigL2ElectronFex )
 DECLARE_COMPONENT( TrigL2ElectronHypo )
@@ -29,3 +30,7 @@ DECLARE_COMPONENT( TrigEFPhotonHypo )
 DECLARE_COMPONENT( TrigEFTrackHypo )
 DECLARE_COMPONENT( TrigL2CaloLayersHypo )
 
+
+
+
+
diff --git a/Trigger/TrigSteer/DecisionHandling/src/TriggerSummaryAlg.cxx b/Trigger/TrigSteer/DecisionHandling/src/TriggerSummaryAlg.cxx
index 3adde3b67db..9cdaca384de 100644
--- a/Trigger/TrigSteer/DecisionHandling/src/TriggerSummaryAlg.cxx
+++ b/Trigger/TrigSteer/DecisionHandling/src/TriggerSummaryAlg.cxx
@@ -19,7 +19,7 @@ StatusCode TriggerSummaryAlg::initialize()
   ATH_MSG_INFO ("Initializing " << name() << "...");
   // processing of the chains mapping
 
-  CHECK( m_l1decisionKey.initialize() );
+  CHECK(  m_inputDecisionKey.initialize() );
 
   renounceArray( m_finalDecisionKeys );
   CHECK( m_finalDecisionKeys.initialize() );
@@ -34,21 +34,24 @@ StatusCode TriggerSummaryAlg::execute_r(const EventContext& context) const
   ATH_MSG_DEBUG ("Executing " << name() << "...");
 
   // that is certain input
-  auto l1DecisionHandle = SG::makeHandle( m_l1decisionKey, context );
+  auto l1DecisionHandle = SG::makeHandle(  m_inputDecisionKey, context );
   auto inputHandles( m_finalDecisionKeys.makeHandles() );
   TrigCompositeUtils::DecisionIDContainer allPassingIDs;
   for ( auto input: inputHandles ) {
     if ( input.isValid() ) {
-      ATH_MSG_DEBUG( "Partial result " << input.key() << " present" );
       for ( auto decisionObject: *input )  {
 	TrigCompositeUtils::decisionIDs( decisionObject, allPassingIDs );
       }
+      ATH_MSG_DEBUG( "Found "<<input->size()<<" Decisions for " << input.key() );
     } else {
-      ATH_MSG_DEBUG( "Missing input " << input.key() << " which may be perfectly correct" );
+      ATH_MSG_DEBUG( "Missing decisions for " << input.key() << " which may be perfectly correct" );
     }
 
   }
-  ATH_MSG_DEBUG( "In summary " << allPassingIDs.size() << " chains passed" );
+  ATH_MSG_DEBUG( "In summary " << allPassingIDs.size() << " chains passed:" );
+  for ( TrigCompositeUtils::DecisionID id : allPassingIDs ) {
+    ATH_MSG_DEBUG( " +++ " << HLT::Identifier( id ) );
+  }  
 
   // check for an evident error, this is HLT chain not mentioned at the L1
   // that is the only reason we pull the L1 here
diff --git a/Trigger/TrigSteer/DecisionHandling/src/TriggerSummaryAlg.h b/Trigger/TrigSteer/DecisionHandling/src/TriggerSummaryAlg.h
index 5ad274be9ea..6ec7751aa8c 100644
--- a/Trigger/TrigSteer/DecisionHandling/src/TriggerSummaryAlg.h
+++ b/Trigger/TrigSteer/DecisionHandling/src/TriggerSummaryAlg.h
@@ -29,7 +29,7 @@ class TriggerSummaryAlg : public ::AthReentrantAlgorithm {
  private: 
   //Gaudi::Propert std::vector<m_chainCounters> { this,  "ChainCounters", {},
   //      "Chain names maping to counters. In the form of: name counter" };
-  SG::ReadHandleKey<TrigCompositeUtils::DecisionContainer> m_l1decisionKey{ this, "L1Decision", "", 
+  SG::ReadHandleKey<TrigCompositeUtils::DecisionContainer> m_inputDecisionKey{ this, "InputDecision", "", 
       "Partial decisions from the last stage of chains processing, they nay be missing from event to event"};
 
   
diff --git a/Trigger/TrigSteer/ViewAlgs/src/TestEventViewCreatorAlgorithm.cxx b/Trigger/TrigSteer/ViewAlgs/src/TestEventViewCreatorAlgorithm.cxx
new file mode 100644
index 00000000000..40c649bc1dd
--- /dev/null
+++ b/Trigger/TrigSteer/ViewAlgs/src/TestEventViewCreatorAlgorithm.cxx
@@ -0,0 +1,158 @@
+/*
+  General-purpose view creation algorithm <bwynne@cern.ch>
+  
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include "./TestEventViewCreatorAlgorithm.h"
+
+#include "StoreGate/ReadHandle.h"
+#include "StoreGate/WriteHandle.h"
+#include "CxxUtils/make_unique.h"
+#include "AthContainers/ConstDataVector.h"
+#include "AthViews/ViewHelper.h"
+#include <DecisionHandling/TrigCompositeUtils.h>
+#include "DecisionHandling/HLTIdentifier.h"
+
+
+TestEventViewCreatorAlgorithm::TestEventViewCreatorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator )
+  : AthAlgorithm( name, pSvcLocator ) {
+}
+
+StatusCode TestEventViewCreatorAlgorithm::initialize()
+{
+
+  CHECK( m_inputDecisionsKey.initialize() );
+  renounceArray(m_inputDecisionsKey);
+  ATH_MSG_DEBUG("Will consume implicit input data:" );
+  for (auto& input: m_inputDecisionsKey){  
+    ATH_MSG_DEBUG(" "<<input.key());
+  }
+
+  ATH_MSG_DEBUG(" and produce Decisions=" << m_outputDecisionsKey <<" views="<<m_viewsKey<<" roIs="<<m_inViewRoIs );
+  CHECK( m_outputDecisionsKey.initialize() );
+  CHECK( m_viewsKey.initialize() );
+  CHECK( m_inViewRoIs.initialize() );
+  CHECK( m_scheduler.retrieve() );
+
+
+  return StatusCode::SUCCESS;
+}
+
+StatusCode TestEventViewCreatorAlgorithm::execute()
+{
+#ifdef GAUDI_SYSEXECUTE_WITHCONTEXT
+  const EventContext& ctx = getContext();
+#else
+  const EventContext& ctx = *getContext();
+#endif
+
+
+  ATH_MSG_DEBUG( "number of implicit ReadHandles is " << m_inputDecisionsKey.size() );
+
+     
+    // make the views
+  auto viewVector = std::make_unique<std::vector<SG::View*>>();
+  auto contexts = std::vector<EventContext>( );
+
+  // prepare output decisions
+  auto OutputDecisions = std::make_unique<TrigCompositeUtils::DecisionContainer>();
+  auto aux = std::make_unique<TrigCompositeUtils::DecisionAuxContainer>();
+  OutputDecisions->setStore( aux.get() );
+
+  unsigned int viewCounter = 0;
+  unsigned int conditionsRun = getContext().getExtension<Atlas::ExtendedEventContext>()->conditionsRun();
+
+  const TrigRoiDescriptor* previousRoI = 0;
+
+ // Loop over all input containers, which are of course TrigComposites, and request their features   
+  for ( auto inputKey: m_inputDecisionsKey ) {
+    auto inputDecisions = SG::makeHandle( inputKey );
+    ATH_MSG_DEBUG( "Got DecisionContainer from input "<< inputKey.key()<<" with " << inputDecisions->size() << " elements" );
+    ATH_MSG_DEBUG( "Preparing " << inputDecisions.cptr()->size() << " views (one per input decision)" );
+
+    size_t counter = 0;
+    for ( auto Idecision: *inputDecisions ) {
+   
+      //make one TC decision output per input and connect to previous
+      auto newd = TrigCompositeUtils::newDecisionIn(OutputDecisions.get());
+      // link to previous decision object
+      newd->setObjectLink( "previousDecisions", ElementLink<TrigCompositeUtils::DecisionContainer>(inputKey.key(), counter) );
+
+      {
+	//copy decisions ID
+	TrigCompositeUtils::DecisionIDContainer objDecisions;      
+	TrigCompositeUtils::decisionIDs( Idecision, objDecisions );
+	for ( const HLT::Identifier& id: objDecisions ) TrigCompositeUtils::addDecisionID( id, newd );
+      }	
+      
+      ATH_MSG_DEBUG( "Positive decisions on RoI, preparing view" );
+      // pull RoI descriptor
+      CHECK( Idecision->hasObjectLink( m_roisLink ) );    
+      auto roiDescriptorEL = Idecision->objectLink<TrigRoiDescriptorCollection>( m_roisLink );
+      CHECK( roiDescriptorEL.isValid() );
+      
+      auto roiDescriptor = *roiDescriptorEL;
+      ATH_MSG_DEBUG( "Placing TrigRoiDescriptor " << *roiDescriptor );
+
+      
+      if ( previousRoI == roiDescriptor ) continue; 
+      // TODO here code supporting the case wnen we have many decisions associated to a single RoI
+      previousRoI = roiDescriptor;
+      
+      auto oneRoIColl = std::make_unique< ConstDataVector<TrigRoiDescriptorCollection> >();    
+      oneRoIColl->clear( SG::VIEW_ELEMENTS ); //Don't delete the RoIs
+      oneRoIColl->push_back( roiDescriptor );
+      
+      newd->setObjectLink( "initialRoI", roiDescriptorEL ); //FPP add this roi to the output
+      
+      // make the view
+      ATH_MSG_DEBUG( "Making the View" );
+      auto newview = ViewHelper::makeView( name()+"_view", viewCounter++, m_viewFallThrough ); //pointer to the view
+      viewVector->push_back( newview );
+      contexts.emplace_back( ctx );
+      contexts.back().setExtension( Atlas::ExtendedEventContext( viewVector->back(), conditionsRun ) );
+      
+      // link decision to this view
+      newd->setObjectLink( "view", ElementLink<std::vector<SG::View*> >(m_viewsKey.key(), viewVector->size()-1 ));//adding view to TC
+      
+      // see if there is a view linked to the decision object, if so link it to the view that is just made
+      if ( Idecision->hasObjectLink( "view" ) ) {
+	auto viewEL = Idecision->objectLink< std::vector<SG::View*> >( "view" );
+	CHECK( viewEL.isValid() );
+	auto parentView = *viewEL;
+	viewVector->back()->linkParent( parentView );
+	ATH_MSG_DEBUG( "Parent view linked" );
+      }
+
+      //store the RoI in the view
+      auto handle = SG::makeHandle( m_inViewRoIs, contexts.back() );
+      CHECK( handle.setProxyDict( viewVector->back() ) );
+      CHECK( handle.record( std::move( oneRoIColl ) ) );
+      
+      counter++;
+      
+    }
+  }
+
+  
+  ATH_MSG_DEBUG( "Launching execution in " << viewVector->size() << " views" );
+  CHECK( ViewHelper::ScheduleViews( *viewVector,           // Vector containing views
+         m_viewNodeName,                                   // CF node to attach views to
+         ctx,                                              // Source context
+         m_scheduler.get() ) );
+
+  
+  // store views
+
+  auto viewsHandle = SG::makeHandle( m_viewsKey );
+  CHECK( viewsHandle.record(  std::move( viewVector ) ) );
+
+  //store decisions with all
+  auto outputHandle = SG::makeHandle(m_outputDecisionsKey, ctx);
+  CHECK( outputHandle.record(std::move(OutputDecisions), std::move(aux) ) );
+  ATH_MSG_DEBUG( "Store "<< viewsHandle->size() <<" Views and "<<outputHandle->size()<<" output decisions" ); 
+
+  return StatusCode::SUCCESS;
+}
+
diff --git a/Trigger/TrigSteer/ViewAlgs/src/TestEventViewCreatorAlgorithm.h b/Trigger/TrigSteer/ViewAlgs/src/TestEventViewCreatorAlgorithm.h
new file mode 100644
index 00000000000..c70a5879968
--- /dev/null
+++ b/Trigger/TrigSteer/ViewAlgs/src/TestEventViewCreatorAlgorithm.h
@@ -0,0 +1,52 @@
+/*
+  General-purpose view creation algorithm <bwynne@cern.ch>
+
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef ViewAlgs_TestEventViewCreatorAlgorithm_h
+#define ViewAlgs_TestEventViewCreatorAlgorithm_h
+
+#include <vector>
+#include <string>
+
+#include "AthenaBaseComps/AthAlgorithm.h"
+#include "AthContainers/ConstDataVector.h"
+#include "DecisionHandling/TrigCompositeUtils.h"
+
+#include "TrigSteeringEvent/TrigRoiDescriptorCollection.h"
+
+#include "GaudiKernel/IAlgResourcePool.h"
+#include "GaudiKernel/IScheduler.h"
+#include "AthViews/View.h"
+
+class TestEventViewCreatorAlgorithm : public AthAlgorithm
+{
+  public:
+    TestEventViewCreatorAlgorithm( const std::string& name, ISvcLocator* pSvcLocator );
+    StatusCode initialize();
+    StatusCode execute();
+
+  private:
+    ServiceHandle< IScheduler > m_scheduler{ this, "Scheduler", "AvalancheSchedulerSvc", "The Athena scheduler" };
+
+    //Input trig composite collection to split into views
+    SG::ReadHandleKeyArray<TrigCompositeUtils::DecisionContainer> m_inputDecisionsKey { this, "InputDecisions", {}, "The vector name of input decision container (implicit)" } ;
+
+    // Ouput decisions
+    SG::WriteHandleKey< TrigCompositeUtils::DecisionContainer > m_outputDecisionsKey{ this, "OutputDecisions", "Unspecified", "The name of output decision container" };
+
+    //Output views for merging
+    SG::WriteHandleKey< std::vector< SG::View* > > m_viewsKey{ this, "Views", "Unspecified", "The key of views collection produced" };
+
+    // auxiliary handles
+    SG::WriteHandleKey< ConstDataVector<TrigRoiDescriptorCollection> > m_inViewRoIs{ this, "InViewRoIs", "Unspecified", "Name with which the RoIs shoudl be inserted into the views" };
+
+    Gaudi::Property<bool> m_viewPerRoI{ this, "ViewPerRoI", false, "Create one View per RoI as opposed to one View per Decision object, needs to be true when multiple decisions per RoI exists" };
+    Gaudi::Property< std::string > m_viewNodeName{ this, "ViewNodeName", "", "Name of the CF node to attach a view to" };
+    Gaudi::Property< std::string > m_roisLink{ this, "RoIsLink", "Unspecified", "Name of EL to RoI object lined to the decision" };
+    Gaudi::Property< bool > m_viewFallThrough { this, "ViewFallThrough", false, "Set whether views may accesas StoreGate directly to retrieve data" };
+};
+
+#endif
+
diff --git a/Trigger/TrigSteer/ViewAlgs/src/components/ViewAlgs_entries.cxx b/Trigger/TrigSteer/ViewAlgs/src/components/ViewAlgs_entries.cxx
index 2c747bfab76..b1a925a8fe9 100644
--- a/Trigger/TrigSteer/ViewAlgs/src/components/ViewAlgs_entries.cxx
+++ b/Trigger/TrigSteer/ViewAlgs/src/components/ViewAlgs_entries.cxx
@@ -4,6 +4,8 @@
 #include "../MergeViews.h"
 #include "../TrigL2ElectronViewsMergerTool.h"
 #include "../TrigL2CaloViewsMergerTool.h"
+#include "../TestEventViewCreatorAlgorithm.h"
+
 
 
 DECLARE_COMPONENT( EventViewCreatorAlgorithm )
@@ -11,3 +13,4 @@ DECLARE_COMPONENT( MergeViews )
 DECLARE_COMPONENT( TrigL2ElectronViewsMergerTool )
 DECLARE_COMPONENT( TrigL2CaloViewsMergerTool )
 
+DECLARE_COMPONENT( TestEventViewCreatorAlgorithm )
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt b/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt
index cbf885f1dab..5e086c70782 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt
+++ b/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt
@@ -13,6 +13,7 @@ atlas_depends_on_subdirs( PUBLIC
                           PRIVATE
                           Control/AthenaBaseComps
                           Trigger/TrigEvent/TrigSteeringEvent
+			  Control/AthViews			  
                           )
 
 find_package( Boost COMPONENTS filesystem thread system )
@@ -30,7 +31,7 @@ atlas_add_component( TrigUpgradeTest
                      INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS}
                      LINK_LIBRARIES ${Boost_LIBRARIES}
                      ${ROOT_LIBRARIES} GaudiKernel
-                     AthenaBaseComps TrigUpgradeTestLib )
+                     AthenaBaseComps TrigUpgradeTestLib AthViews )
 
 
 atlas_add_test( ViewSchedule1 SCRIPT test/test_view_schedule.sh
@@ -43,9 +44,11 @@ atlas_add_test( ViewSchedule64 SCRIPT test/test_view_schedule.sh
 # out until we find a way to properly invoke tests from other packages
 # atlas_add_test( creatingEVTest SCRIPT forward.sh ViewAlgsTest/test/creatingEVTest.sh )
 
-atlas_add_test( merge SCRIPT test/test_merge.sh)
+atlas_add_test( merge
+		SCRIPT test/test_merge.sh)
 
-atlas_add_test( IDRunMC SCRIPT test/test_id_run_mc.sh
+atlas_add_test( IDRunMC
+		SCRIPT test/test_id_run_mc.sh
                 PROPERTIES TIMEOUT 500
               )
 
@@ -58,22 +61,39 @@ atlas_add_test( IDRunData SCRIPT test/test_id_run_data.sh
 #              )
 # replaced by complete egamma test
 
-atlas_add_test( egammaRunData SCRIPT test/test_egamma_run_data.sh
+atlas_add_test( egammaRunData
+		SCRIPT test/test_egamma_run_data.sh
                 PROPERTIES TIMEOUT 500
               )
+#		EXTRA_PATTERNS "TriggerSummary"
 
-atlas_add_test( muRunData SCRIPT test/test_mu_run_data.sh
+atlas_add_test( egammaMenu
+		SCRIPT test/test_egamma_menu.sh
                 PROPERTIES TIMEOUT 500
               )
+#		EXTRA_PATTERNS "TriggerSummary"
 
+atlas_add_test( muRunData
+		SCRIPT test/test_mu_run_data.sh
+                PROPERTIES TIMEOUT 500
+              )
 
 
-atlas_add_test( idCaloRunData   SCRIPT test/test_id_calo_run_data.sh
+atlas_add_test( idCaloRunData
+		SCRIPT test/test_id_calo_run_data.sh
                 PROPERTIES TIMEOUT 500
               )
 
-atlas_add_test( EmuL1Decoding SCRIPT test/test_emu_l1_decoding.sh)
-atlas_add_test( EmuStepProcessing SCRIPT test/test_emu_step_processing.sh)
+atlas_add_test( EmuL1Decoding
+		SCRIPT test/test_emu_l1_decoding.sh
+		)
+
+atlas_add_test( EmuStepProcessing
+		SCRIPT	test/test_emu_step_processing.sh
+		)
+#	EXTRA_PATTERNS "TriggerSummary"
+
+
 
 atlas_install_joboptions( share/*.py )
 atlas_install_python_modules( python/*.py )
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/python/HLTCFConfig.py b/Trigger/TrigValidation/TrigUpgradeTest/python/HLTCFConfig.py
index 454fa3d13cd..c79f698e36a 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/python/HLTCFConfig.py
+++ b/Trigger/TrigValidation/TrigUpgradeTest/python/HLTCFConfig.py
@@ -1,5 +1,6 @@
 # Classes to configure the CF graph, via Nodes
 from AthenaCommon.CFElements import parOR, seqAND, stepSeq
+import sys
 
 
 allAlgs={}
@@ -19,7 +20,7 @@ def remember(name, instance):
 
 
 class AlgNode():
-    def __init__(self, Alg, inputProp, outputProp):
+    def __init__(self, Alg, inputProp='', outputProp=''):
         self.name = ("%s_%s_%s")%( Alg.name(), inputProp, outputProp)
         self.algname = Alg.name()
         self.outputProp=outputProp
@@ -42,9 +43,9 @@ class AlgNode():
         self.addDefaultOutput()
 
     def addDefaultOutput(self):
-        print "This is main addDefaultOutput"
-        self.setOutput(("%s_%s_out"%(self.algname,self.outputProp)))
-        #self.setOutput(("%s_out"%(self.name)))
+        if self.outputProp is not '':
+            self.setOutput(("%s_%s_out"%(self.algname,self.outputProp)))
+
         
 
     def setPar(self, prop, name):
@@ -151,30 +152,35 @@ class HypoAlgNode(AlgNode):
                 if "et" in self.getPar("Property2"):
                     status= self.setPar('previousDecisions2',prev)
 
-            if  "Output1" in prev:
+            ## if  "Output1" in prev:
+            ##     status= self.setPar('previousDecisions1',prev)
+            ## if  "Output2" in prev:
+            ##     status= self.setPar('previousDecisions2',prev)
+            if "Mu" in prev:
                 status= self.setPar('previousDecisions1',prev)
-            if  "Output2" in prev:
+            if "El" in prev:
                 status= self.setPar('previousDecisions2',prev)
-
+                
+        
         else:
             self.previous.append(prev)
             status= self.setPar('previousDecisions',prev)
+
         return status
-    
+
     def __str__(self):
-        return "HypoAlg::%s  [%s] -> [%s], previous = [%s], HypoTools=[%s] --> Alg %s"%(self.name,' '.join(map(str, self.getInputList())),
+        return "HypoAlg::%s  [%s] -> [%s], previous = [%s], HypoTools=[%s]"%(self.Alg.name(),' '.join(map(str, self.getInputList())),
                                                                                  ' '.join(map(str, self.getOutputList())),
                                                                                  ' '.join(map(str, self.previous)),
-                                                                                 ' '.join(map(str, self.tools)), self.Alg)
-
-
+                                                                                 ' '.join(map(str, self.tools)))
 
 class SequenceFilterNode(AlgNode):
     def __init__(self, Alg, inputProp, outputProp):
         AlgNode.__init__(self,  Alg, inputProp, outputProp)
+        self.seeds = []
         
     def addDefaultOutput(self):
-        print "This is SequenceFilter addDefaultOutput"
+        #print "This is SequenceFilter addDefaultOutput"
         return #do nothing    
        
     def setChains(self, name):
@@ -183,6 +189,11 @@ class SequenceFilterNode(AlgNode):
     def getChains(self):
         return self.getPar("Chains")
 
+    def addSeed(self, seed):
+        self.seeds.append(seed)
+
+         
+
 
 from TrigUpgradeTest.TrigUpgradeTestConf import HLTTest__TestRoRSeqFilter
 class TestRoRSequenceFilterNode(SequenceFilterNode):       
@@ -208,10 +219,19 @@ class RoRSequenceFilterNode(SequenceFilterNode):
 
 
 #### Here functions to create the CF tree from CF configuration objects
+def makeSummary(name, decisions):
+    from DecisionHandling.DecisionHandlingConf import TriggerSummaryAlg
+    summary = TriggerSummaryAlg( name, OutputLevel = 2 )
+    summary.InputDecision = "HLTChains"
+    summary.FinalDecisions = decisions
+    summary.HLTSummary = "MonitoringSummary"+name
+    return summary
+
+
 
 
 from AthenaCommon.AlgSequence import dumpSequence
-def create_step_reco_node(name, seq_list, dump=0):
+def create_step_reco_node(name, seq_list, dump=False):
     print "Create reco step %s with %d sequences"%(name, len(seq_list))
     stepCF = parOR(name+"_reco")
     for seq in seq_list:        
@@ -222,7 +242,7 @@ def create_step_reco_node(name, seq_list, dump=0):
     return stepCF
 
 
-def create_step_filter_node(name, seq_list, dump=0):
+def create_step_filter_node(name, seq_list, dump=False):
     print "Create filter step %s with %d filters"%(name, len(seq_list))
     stepCF = parOR(name+"_filter")
     for seq in seq_list:
@@ -234,25 +254,70 @@ def create_step_filter_node(name, seq_list, dump=0):
     return stepCF
 
 
-def create_CFSequence(CFseq):   
-    print "\n * Create CFSequence %s"%(CFseq.name)
+def create_CFSequenceNoView(CFseq):   
+    print "\n * Create CFSequenceNoView %s"%(CFseq.name)
     filterAlg=CFseq.filter.Alg
    
     nodes = CFseq.getAllNodes()
     algos = []
+    sublist = dict()
     for node in nodes:
-        algos.append(node.Alg)
+        if node.sequence is '':
+            algos.append(node.Alg)
+        else:
+            sublist.setdefault(node.sequence, []).append(node.Alg)
+#            sublist[node.sequence].append(node.Alg)
 
     algos=list(set(algos))
-
-    step_seq = create_step_sequence( CFseq.name, filterAlg=filterAlg, rest=algos)       
+    step_seq = create_step_sequence( CFseq.name, filterAlg=filterAlg, rest=algos, sublist=sublist)    
     return step_seq
 
-def create_step_sequence(name, filterAlg, rest):
+def create_step_sequence(name, filterAlg, rest,sublist):
     """ elementary HLT step sequencer, filterAlg is gating, rest is anything that needs to happe within the step """
-    stepReco = parOR(name+"_reco", rest)
+    toadd=rest
+    for k, v in sublist.iteritems():
+        seq= seqAND(k, v)
+        toadd.append(seq)
+        
+    stepReco = parOR(name+"_reco", toadd)
+    
     stepAnd = seqAND(name, [ filterAlg, stepReco ])
     return stepAnd
+
+
+def create_CFSequence(CFseq):   
+    print "\n * Create CFSequence %s"%(CFseq.name)
+    from TrigUpgradeTest.MenuComponents import ViewNodeSequence
+    filterAlg=CFseq.filter.Alg
+
+    subs=[]
+    for seq in CFseq.menuSeq.nodeSeqList:
+        nodes = []
+        nodes.extend(seq.algs)
+        #nodes.append(seq.hypo)
+        algos=[]
+        for node in nodes:
+            algos.append(node.Alg)
+
+        if isinstance(seq, ViewNodeSequence):
+            viewAlgSeq = seqAND(seq.viewNodeName, algos)
+            seq.hypo.Alg.RunInView=True
+            viewSeq    = seqAND(seq.viewNodeName+"Seq", [seq.maker.Alg, viewAlgSeq, seq.hypo.Alg] )            
+            for other in seq.otherNodes:
+                viewSeq+= other.Alg
+            subs.append(viewSeq)
+        else:
+            subs.append(seq.maker.Alg)
+            subs.extend(algos)
+            subs.append(seq.hypo.Alg)
+
+
+
+    subs=list(set(subs))
+    stepReco = parOR(CFseq.name+"_reco", subs)
+    stepAnd = seqAND(CFseq.name, [ filterAlg, stepReco ])
+    return stepAnd
+
   
 
 def find_stepCF_algs(step_list):
@@ -292,15 +357,18 @@ def addChainToHypoAlg(hypoAlg, chain):
 
 #######################################
 def decisionTree_From_Chains(HLTAllStepsSeq, chains, NSTEPS=1):
-
+    print "decisionTree_From_Chains on %s"%(HLTAllStepsSeq.name())
+    HLTNodeName= HLTAllStepsSeq.name()
     testRoR=False
     from TrigUpgradeTest.MenuComponents import CFSequence
     #loop over chains to configure
     count_steps=0
+    finalDecisions = [] # needed for monitor
+    allSeq_list = []
     for nstep in range(0, NSTEPS):
         stepCF_name =  "Step%i"%(nstep+1)
         CFseq_list = []
-
+        step_decisions = []
         for chain in chains:
             chain_step_name= "%s:%s"%(stepCF_name, chain.name)
             print "\n*******Filling step %s for chain  %s"%(stepCF_name, chain.name)
@@ -308,6 +376,7 @@ def decisionTree_From_Chains(HLTAllStepsSeq, chains, NSTEPS=1):
             chain_step=chain.steps[count_steps]
             sequenceHypoTools=chain_step.sequenceHypoTools
             countseq=0
+            otherSubSequence = []
             for st in sequenceHypoTools:
                 sequence=st.sequence
                 hypotool=st.hypotool
@@ -315,17 +384,27 @@ def decisionTree_From_Chains(HLTAllStepsSeq, chains, NSTEPS=1):
                 cfseq_name= sequence.name
 
                 print "Going through sequence %s with threshold %s"%(sequence.name, hypotool.getName())
+                seeds= [nodeSeq.seed for nodeSeq in sequence.nodeSeqList]
+                print "Found these seeds: %s"%(seeds)
                 #define sequence input
                 if count_steps == 0: # seeding
-                    sequence_input= [nodeSeq.seed for nodeSeq in sequence.nodeSeqList]
-                    print "Seeds from this chain: %s"%(sequence_input)
+                    filter_input= seeds
+                    #[nodeSeq.seed for nodeSeq in sequence.nodeSeqList]
+                    print "Seeds from this chain: %s"%(filter_input)
                     previous_sequence="".join(chain.group_seed)
+                    previous_seeds=seeds
                 else:
                     # from previous step, map the seuqence in the same order?
                     previous_sequence=chain.steps[count_steps-1].sequences[countseq].name #menu sequence
-                    sequence_input=chain.steps[count_steps-1].sequences[countseq].outputs
-                    print "Connect to previous sequence:"
-                    print sequence_input
+                    filter_input=chain.steps[count_steps-1].sequences[countseq].outputs
+                    print "Connect to previous sequence through these filter inputs:"
+                    print filter_input
+                    previous_seeds = chain.steps[count_steps-1].sequences[countseq].seeds
+                    if len(filter_input) != len(previous_seeds):
+                        print "ERROR: found %d filter inputs and %d seeds"%(len(filter_input), len(previous_seeds))
+                        sys.exit("ERROR, in size") 
+
+                    
                 # add hypotools
                 for nodeSeq in sequence.nodeSeqList:
                     hypoAlg= nodeSeq.hypo                
@@ -340,7 +419,6 @@ def decisionTree_From_Chains(HLTAllStepsSeq, chains, NSTEPS=1):
                 # if the previous hypo has more than one output, try to get all of them
                 # one filter per previous sequence: 1 input/previous seq, 1 output/next seq 
                 filter_name="Filter%s_on_%s"%(stepCF_name,previous_sequence)
-                filter_out=["%s_from_%s_out"%(filter_name,i) for i in sequence_input]
                 filter_already_exists=False
                 findFilter= [cfseq.filter for cfseq in CFseq_list if filter_name in cfseq.filter.algname]        
                 if len(findFilter):
@@ -355,15 +433,25 @@ def decisionTree_From_Chains(HLTAllStepsSeq, chains, NSTEPS=1):
                         sfilter = TestRoRSequenceFilterNode(name=filter_name)
                     else:
                         sfilter = RoRSequenceFilterNode(name=filter_name)
+
+                    print "Adding these seeds to filter: %s"%(previous_seeds)
+                    for i in previous_seeds: sfilter.addSeed(i)
+                    for i in filter_input: sfilter.addInput(i)                        
+                    filter_out=["%s_from_%s_out"%(filter_name,i) for i in filter_input]
+                    #filter_out=["%s_from_%s_out"%(filter_name,i) for i in filter_input]                    
                     for o in filter_out: sfilter.setOutput(o)            
-                    for i in sequence_input: sfilter.addInput(i)
+
                     sfilter.setChains(chain.name)
                     print "Filter Done: %s"%(sfilter)
                     
                 #loop over NodeSequences of this sequence to add inputs to InputMaker and send decisions to HypoAlg
                 for nodeSeq in sequence.nodeSeqList:
-                    seed=nodeSeq.seed                    
-                    input_maker_input= [inp for inp in sfilter.getOutputList() if ("from_"+seed) in inp]
+                    seed=nodeSeq.seed
+#                    out_index=[i for i,fseed in enumerate (sfilter.seeds) if fseed in seed  ]
+                    input_maker_input=[sfilter.getOutputList()[i] for i,fseed in enumerate (sfilter.seeds) if fseed in seed  ]
+                    #                    input_maker_input= [inp for i,inp in enumerate(sfilter.getOutputList()) if ]
+                    #input_maker_input= [inp for inp in sfilter.getOutputList() if ("from_"+seed) in inp]
+
                     print "Adding %d inputs to sequence::%s from Filter::%s (from seed %s)"%(len(input_maker_input), nodeSeq.name, sfilter.algname, seed)
                     for i in input_maker_input: print i
                     if len(input_maker_input) == 0:
@@ -371,17 +459,24 @@ def decisionTree_From_Chains(HLTAllStepsSeq, chains, NSTEPS=1):
                         sys.exit("ERROR, no inputs to sequence are set!") 
 #                        return                    
                     for i in input_maker_input: nodeSeq.addInput(i)
+                    
+
+                    #sequence_outDecisions= "SequenceDecision_%s"%nodeSeq.name
+                    #nodeSeq.addDecision(sequence_outDecisions) #FPP
 
-                    hypoAlg= nodeSeq.hypo
-                    #node = AlgNode(Alg=hypoAlg.Alg,inputProp='', outputProp='Output1')
-                    for i in input_maker_input: hypoAlg.setPreviousDecision(i) # works for one
+                    #hypoAlg= nodeSeq.hypo
+                    #hypoAlg.setPreviousDecision(sequence_outDecisions) # works for one
+                    #for i in input_maker_input: hypoAlg.setPreviousDecision(i) # works for one
                     #for i in input_maker_input: hypoAlg.addPreviousDecision(i)
 
-                    print hypoAlg
+                    #needed for the summary
+                    step_decisions.append(nodeSeq.output)
 
+                    #if len(nodeSeq.sub) != 0: otherSubsequence.extend(nodeSeq.sub)
+                
                                     
                 CF_seq = CFSequence( cfseq_name, FilterAlg=sfilter, MenuSequence=sequence)    
-                #for node in otherNodes: CF_seq.addNode(node)
+                #for seq in otherSubsequence: CF_seq.addSubSequence(seq)
                 print CF_seq
                 CFseq_list.append(CF_seq)
                 countseq+=1
@@ -390,15 +485,25 @@ def decisionTree_From_Chains(HLTAllStepsSeq, chains, NSTEPS=1):
                 
         #end of loop over chains for this step, now implement CF:
         print "\n******** Create CF Tree %s with AthSequencers",stepCF_name
+        
         #first make the filter step
-        stepFilter = create_step_filter_node(stepCF_name, CFseq_list, dump=0)
+        stepFilter = create_step_filter_node(stepCF_name, CFseq_list, dump=False)
         HLTAllStepsSeq += stepFilter
-        
-        stepCF = create_step_reco_node(stepCF_name, CFseq_list, dump=0)
+        allSeq_list.append(CFseq_list)
+
+        # then the reco step
+        stepCF = create_step_reco_node("%s_%s"%(HLTNodeName,stepCF_name), CFseq_list, dump=False)
         HLTAllStepsSeq += stepCF
+
+        # then the monitor summary
+        summary=makeSummary("TriggerSummary"+ stepCF_name, step_decisions)
+        HLTAllStepsSeq += summary
         
+        # update final decisions
+        finalDecisions=step_decisions
+
         print "Now Draw..."
-        stepCF_DataFlow_to_dot(stepCF_name, CFseq_list)
+        stepCF_DataFlow_to_dot("%s_%s"%(HLTNodeName,stepCF_name), CFseq_list)
         stepCF_ControlFlow_to_dot(stepCF)
 
        
@@ -407,8 +512,12 @@ def decisionTree_From_Chains(HLTAllStepsSeq, chains, NSTEPS=1):
         print "************* End of step %s"%stepCF_name
         # end of steps
 
-    #stepCF_ControlFlow_to_dot(HLTAllStepsSeq)
-    dumpSequence (HLTAllStepsSeq, indent=0)
+
+
+   # summary=makeSummary("TriggerSummaryFinal", finalDecisions)
+   # HLTAllStepsSeq += summary
+#    dumpSequence (HLTAllStepsSeq, indent=0)
+    all_DataFlow_to_dot(HLTNodeName, allSeq_list)
     return
 #####
 
@@ -471,8 +580,8 @@ def stepCF_ControlFlow_to_dot(stepCF):
                 +'  %s   [shape=Mdiamond]\n'%stepCF.name())
 
     indent=0
-    out = [("%s[color=%s shape=circle]\n"%(stepCF.name(),_seqColor(stepCF)), indent)]
-  
+#    out = [("%s[color=%s shape=circle]\n"%(stepCF.name(),_seqColor(stepCF)), indent)]
+    out = [("",indent)]
     out.extend( _dump( stepCF, indent=indent+1 ) )
     for n,i in out:
         line= "  "*i+ n
@@ -482,6 +591,63 @@ def stepCF_ControlFlow_to_dot(stepCF):
 
 
 
+def all_DataFlow_to_dot(name, step_list):
+    file = open( '%s.dot'%(name), mode="wt" )
+    file.write( 'digraph step  {\n'\
+                    +'\n'\
+                    +'  node [ shape=polygon, fontname=Helvetica ]\n'\
+                    +'  edge [ fontname=Helvetica ]\n'
+                    +'  %s   [shape=Mdiamond]\n'%name)
+    
+    nstep=1
+    last_step_hypoNodes=[]
+    for cfseq_list in step_list:
+        # loop over steps
+        step_connections = []
+        step_connections.extend(last_step_hypoNodes)
+        # reset the last step
+        last_step_hypoNodes =[]
+        for cfseq in cfseq_list:
+            print cfseq.name
+            file.write("  %s[fillcolor=%s style=filled]\n"%(cfseq.filter.algname,algColor(cfseq.filter.algname)))
+            
+            step_connections.append(cfseq.filter)
+
+            #for inp in cfseq.filter.getInputList():
+                #file.write(addConnection(name, cfseq.filter.algname, inp))
+           
+            file.write(  '\n  subgraph cluster_%s {\n'%(cfseq.name)\
+                        +'     node [color=white style=filled]\n'\
+                        +'     style=filled\n'\
+                        +'     color=lightgrey\n'\
+                        +'     fontname=Helvetica\n'\
+                        +'     label = %s\n'%(cfseq.name))
+
+            cfseq_algs = []
+            cfseq_algs.append(cfseq.filter)
+
+            for seq in cfseq.menuSeq.nodeSeqList:
+                seq.reuse=False
+
+            for seq in cfseq.menuSeq.nodeSeqList:
+                cfseq_algs.append(seq.maker)
+                cfseq_algs.extend(seq.algs )
+                if seq.reuse==False:
+                    file.write("    %s[fillcolor=%s]\n"%(seq.maker.algname, algColor(seq.maker.algname)))
+                    for alg in seq.algs: file.write("    %s[fillcolor=%s]\n"%(alg.algname, algColor(alg.algname)))
+                    seq.reuse=True
+                cfseq_algs.append(seq.hypo)
+                last_step_hypoNodes.append(seq.hypo)
+                file.write("    %s[color=%s]\n"%(seq.hypo.algname, algColor(seq.hypo.algname)))
+            file.write('  }\n')              
+            file.write(findConnections(cfseq_algs))
+            file.write('\n')
+
+        file.write(findConnections(step_connections))
+        nstep+=1
+  
+    file.write( '}')
+    file.close()
     
 
 def stepCF_DataFlow_to_dot(name, cfseq_list):
@@ -512,10 +678,10 @@ def stepCF_DataFlow_to_dot(name, cfseq_list):
         cfseq_algs.append(cfseq.filter)       
 
         for seq in cfseq.menuSeq.nodeSeqList:
-            #            cfseq_algs.append(seq.inputMaker)
+            cfseq_algs.append(seq.maker)
             cfseq_algs.extend(seq.algs )
             if seq.reuse==False:
-                #                file.write("    %s[fillcolor=%s]\n"%(seq.inputMaker.algname, algColor(seq.inputMaker.algname)))
+                file.write("    %s[fillcolor=%s]\n"%(seq.maker.algname, algColor(seq.maker.algname)))
                 for alg in seq.algs: file.write("    %s[fillcolor=%s]\n"%(alg.algname, algColor(alg.algname)))
                 seq.reuse=True
             cfseq_algs.append(seq.hypo)
@@ -543,7 +709,8 @@ def findConnections(alg_list):
     return lineconnect
 
 def addConnection(nodeA, nodeB, label):
-    line = "    %s -> %s [label=%s]\n"%(nodeA,nodeB,label)
+    line = "    %s -> %s \n"%(nodeA,nodeB)
+    #line = "    %s -> %s [label=%s]\n"%(nodeA,nodeB,label)
     # print line
     return line
 
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/python/MenuComponents.py b/Trigger/TrigValidation/TrigUpgradeTest/python/MenuComponents.py
index cb21885f8bb..37118b58a39 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/python/MenuComponents.py
+++ b/Trigger/TrigValidation/TrigUpgradeTest/python/MenuComponents.py
@@ -2,39 +2,63 @@
 
 
 class NodeSequence():
-    def __init__(self, name, Algs, Hypo, Seed):
+    def __init__(self, name, Algs, Hypo, Seed, Maker):
         self.name = name
         self.algs = Algs
         self.hypo = Hypo
         self.seed = Seed
+        self.maker = Maker
         self.output = Hypo.getOutput()
         self.reuse = 0
         self.connect()
-
  
     def connect(self):
-        alg_input = ""
-        #alg_input = self.inputMaker.getOutput()
+        self.maker.setInput("")
+        alg_input = self.maker.getOutput() 
         for Alg in self.algs:
             Alg.setInput(alg_input) 
             alg_input = Alg.getOutput()
         self.hypo.setInput(Alg.getOutput())
+
+        # add decisions: from InputMaker to Hypo
+        sequence_outDecisions= "%s_decisions"%self.maker.algname
+        self.addOutputDecision(sequence_outDecisions) #FPP
+        self.hypo.setPreviousDecision(sequence_outDecisions) # works for one        
         print "connect NodeSequence %s"%self.name
 
-    def setInput(self,input):
-        self.algs[0].setInput(input)
+    def addNode(self,node):
+        self.algs.append(node)
+        
+    def setInput(self,theinput):
+        self.maker.setInput(theinput)
+
+    def addInput(self,theinput):
+        print "adding input to sequence: %s to %s"%(theinput, self.maker.algname )
+        self.maker.addInput(theinput)
+
 
-    def addInput(self,input):
-        self.algs[0].addInput(input)
+    def addOutputDecision(self,input):
+        print "adding output decisions (%s) to sequence %s  (to alg %s)"%(input, self.name, self.maker.algname )
+        self.maker.setPar("OutputDecisions",input)
         
     def __str__(self):
         return "NodeSequence::%s with \n Seed::%s \n %s \n Hypo::%s"%(self.name, self.seed, ',\n '.join(map(str, self.algs)), self.hypo)
 
+    
+class ViewNodeSequence(NodeSequence):
+    def __init__(self, name, Algs, Hypo, Seed, Maker, OtherNodes):
+        NodeSequence.__init__(self, name, Algs, Hypo, Seed,Maker)
+        self.viewNodeName = self.maker.Alg.ViewNodeName
+        self.otherNodes=OtherNodes
+        
+        
+    
 class MenuSequence():
     def __init__(self, name, nodeSeqList):
         self.name = name
         self.nodeSeqList=nodeSeqList
         self.outputs=[seq.output for seq in nodeSeqList]
+        self.seeds=[seq.seed for seq in nodeSeqList]
 
     def __str__(self):
         return "MenuSequence::%s \n %s"%(self.name,',\n '.join(map(str, self.nodeSeqList)))
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/EmuStepProcessing.ref b/Trigger/TrigValidation/TrigUpgradeTest/share/EmuStepProcessing.ref
new file mode 100644
index 00000000000..b0e57458208
--- /dev/null
+++ b/Trigger/TrigValidation/TrigUpgradeTest/share/EmuStepProcessing.ref
@@ -0,0 +1,1686 @@
+Tue Mar  6 12:32:31 CET 2018
+Preloading tcmalloc_minimal.so
+Py:Athena            INFO including file "AthenaCommon/Preparation.py"
+Py:Athena            INFO using release [WorkDir-22.0.1] [x86_64-slc6-gcc62-opt] [menu5dev/fdd8f543f2] -- built on [2018-03-06T1128]
+Py:Athena            INFO including file "AthenaCommon/Bootstrap.py"
+Py:Athena            INFO including file "AthenaCommon/Atlas.UnixStandardJob.py"
+Py:Athena            INFO executing ROOT6Setup
+Error in <TSystem::ExpandFileName>: input: $ROOTDIR/lib/libRIO, output: $ROOTDIR/lib/libRIO
+Error in <TSystem::ExpandFileName>: input: $ROOTDIR/lib/libCling, output: $ROOTDIR/lib/libCling
+Py:Athena            INFO configuring AthenaHive with [1] concurrent threads and [1] concurrent events
+Py:AlgScheduler      INFO setting up AvalancheSchedulerSvc/AvalancheSchedulerSvc with 1 threads
+Py:Athena            INFO including file "AthenaCommon/Execution.py"
+Py:Athena            INFO including file "TrigUpgradeTest/EmuStepProcessingTest.py"
+Py:Athena            INFO including file "TrigUpgradeTest/HLTCF.py"
+Py:ConfigurableDb    INFO Read module info for 5465 configurables from 8 genConfDb files
+Py:ConfigurableDb WARNING Found 2 duplicates among the 8 genConfDb files :
+Py:ConfigurableDb WARNING --------------------------------------------------
+Py:ConfigurableDb WARNING   -<component name>: <module> - [ <duplicates> ]
+Py:ConfigurableDb WARNING --------------------------------------------------
+Py:ConfigurableDb WARNING   -IDTrackCaloDepositsDecoratorTool: DerivationFrameworkMuons.DerivationFrameworkMuonsConf - ['MuonTPTools.MuonTPToolsConf']
+Py:ConfigurableDb WARNING   -MuonTPExtrapolationTool: DerivationFrameworkMuons.DerivationFrameworkMuonsConf - ['MuonTPTools.MuonTPToolsConf']
+Py:ConfigurableDb WARNING Fix your cmt/requirements file !!
+/***** Algorithm AthSequencer/L1UnpackingSeq *******************************************************
+|-Atomic                     = False
+|-AuditAlgorithms            = False
+|-AuditBeginRun              = False
+|-AuditEndRun                = False
+|-AuditExecute               = False
+|-AuditFinalize              = False
+|-AuditInitialize            = False
+|-AuditReinitialize          = False
+|-AuditRestart               = False
+|-AuditStart                 = False
+|-AuditStop                  = False
+|-AutoRetrieveTools          = True
+|-Cardinality                = 1
+|-ContinueEventloopOnFPE     = False
+|-DetStore                   = ServiceHandle('StoreGateSvc/DetectorStore')
+|-Enable                     = True
+|-ErrorCounter               = 0
+|-ErrorMax                   = 1
+|-EvtStore                   = ServiceHandle('StoreGateSvc')
+|-ExtraInputs                = []  (default: [])
+|-ExtraOutputs               = []  (default: [])
+|-FilterCircularDependencies = True
+|-IgnoreFilterPassed         = False
+|-IsIOBound                  = False
+|-Members                    = ['L1Decoder/L1Decoder']  (default: [])
+|-ModeOR                     = True  (default: False)
+|-MonitorService             = 'MonitorSvc'
+|-NeededResources            = []  (default: [])
+|-OutputLevel                = 0
+|-RegisterForContextService  = False
+|-Sequential                 = False  (default: False)
+|-StopOverride               = True  (default: False)
+|-TimeOut                    = 0.0
+|-Timeline                   = True
+|=/***** Algorithm L1Decoder/L1Decoder ***************************************************************
+| |-AuditAlgorithms            = False
+| |-AuditBeginRun              = False
+| |-AuditEndRun                = False
+| |-AuditExecute               = False
+| |-AuditFinalize              = False
+| |-AuditInitialize            = False
+| |-AuditReinitialize          = False
+| |-AuditRestart               = False
+| |-AuditStart                 = False
+| |-AuditStop                  = False
+| |-AutoRetrieveTools          = True
+| |-Cardinality                = 1
+| |-Chains                     = 'StoreGateSvc+HLTChains'
+| |-DetStore                   = ServiceHandle('StoreGateSvc/DetectorStore')
+| |-Enable                     = True
+| |-ErrorCounter               = 0
+| |-ErrorMax                   = 1
+| |-EvtStore                   = ServiceHandle('StoreGateSvc')
+| |-ExtraInputs                = []  (default: [])
+| |-ExtraOutputs               = []  (default: [])
+| |-FilterCircularDependencies = True
+| |-IsIOBound                  = False
+| |-MonitorService             = 'MonitorSvc'
+| |-NeededResources            = []  (default: [])
+| |-OutputLevel                = 2  (default: 0)
+| |-RegisterForContextService  = False
+| |-RoIBResult                 = ''  (default: 'StoreGateSvc+RoIBResult')
+| |-Timeline                   = True
+| |-ctpUnpacker                = PrivateToolHandle('CTPUnpackingEmulationTool/CTPUnpackingEmulationTool')
+| |                            (default: 'CTPUnpackingTool/CTPUnpackingTool')
+| |-prescaler                  = PrivateToolHandle('PrescalingEmulationTool/PrescalingEmulationTool')
+| |-roiUnpackers               = PrivateToolHandleArray(['RoIsUnpackingEmulationTool/EMRoIsUnpackingTool','RoIsUnpackingEmulationTool/MURoIsUnpackingTool'])
+| |                            (default: '[]')
+| |=/***** Private AlgTool CTPUnpackingEmulationTool/CTPUnpackingEmulationTool *************************
+| | |-AuditFinalize        = False
+| | |-AuditInitialize      = False
+| | |-AuditReinitialize    = False
+| | |-AuditRestart         = False
+| | |-AuditStart           = False
+| | |-AuditStop            = False
+| | |-AuditTools           = False
+| | |-AutoRetrieveTools    = True
+| | |-CTPToChainMapping    = []  (default: [])
+| | |-DetStore             = ServiceHandle('StoreGateSvc/DetectorStore')
+| | |-EvtStore             = ServiceHandle('StoreGateSvc')
+| | |-ExtraInputs          = []  (default: [])
+| | |-ExtraOutputs         = []  (default: [])
+| | |-ForceEnableAllChains = False  (default: False)
+| | |-InputFilename        = 'ctp.dat'  (default: 'CTPEmulation.dat')
+| | |-MonTool              = PrivateToolHandle('')
+| | |-MonitorService       = 'MonitorSvc'
+| | |-OutputLevel          = 2  (default: 0)
+| | \----- (End of Private AlgTool CTPUnpackingEmulationTool/CTPUnpackingEmulationTool) ----------------
+| |=/***** Private AlgTool RoIsUnpackingEmulationTool/EMRoIsUnpackingTool ******************************
+| | |-AuditFinalize           = False
+| | |-AuditInitialize         = False
+| | |-AuditReinitialize       = False
+| | |-AuditRestart            = False
+| | |-AuditStart              = False
+| | |-AuditStop               = False
+| | |-AuditTools              = False
+| | |-AutoRetrieveTools       = True
+| | |-Decisions               = 'L1EM'  (default: 'StoreGateSvc+RoIDecisions')
+| | |-DetStore                = ServiceHandle('StoreGateSvc/DetectorStore')
+| | |-EvtStore                = ServiceHandle('StoreGateSvc')
+| | |-ExtraInputs             = []  (default: [])
+| | |-ExtraOutputs            = []  (default: [])
+| | |-InputFilename           = 'l1emroi.dat'  (default: 'RoIEmulation.dat')
+| | |-MonTool                 = PrivateToolHandle('')
+| | |-MonitorService          = 'MonitorSvc'
+| | |-OutputLevel             = 2  (default: 0)
+| | |-OutputTrigRoIs          = 'L1EMRoIs'  (default: 'StoreGateSvc+EMRoIs')
+| | |-ThresholdToChainMapping = ['EM7 : HLT_mu8_e8', 'EM20 : HLT_e20', 'EM50 : HLT_2g50', 'EM100 : HLT_g100']
+| | |                         (default: [])
+| | \----- (End of Private AlgTool RoIsUnpackingEmulationTool/EMRoIsUnpackingTool) ---------------------
+| |=/***** Private AlgTool RoIsUnpackingEmulationTool/MURoIsUnpackingTool ******************************
+| | |-AuditFinalize           = False
+| | |-AuditInitialize         = False
+| | |-AuditReinitialize       = False
+| | |-AuditRestart            = False
+| | |-AuditStart              = False
+| | |-AuditStop               = False
+| | |-AuditTools              = False
+| | |-AutoRetrieveTools       = True
+| | |-Decisions               = 'L1MU'  (default: 'StoreGateSvc+RoIDecisions')
+| | |-DetStore                = ServiceHandle('StoreGateSvc/DetectorStore')
+| | |-EvtStore                = ServiceHandle('StoreGateSvc')
+| | |-ExtraInputs             = []  (default: [])
+| | |-ExtraOutputs            = []  (default: [])
+| | |-InputFilename           = 'l1muroi.dat'  (default: 'RoIEmulation.dat')
+| | |-MonTool                 = PrivateToolHandle('')
+| | |-MonitorService          = 'MonitorSvc'
+| | |-OutputLevel             = 2  (default: 0)
+| | |-OutputTrigRoIs          = 'L1MURoIs'  (default: 'StoreGateSvc+EMRoIs')
+| | |-ThresholdToChainMapping = ['MU6 : HLT_mu6', 'MU8 : HLT_mu8', 'MU8 : HLT_2mu8', 'MU8 : HLT_mu8_e8', 'MU10 : HLT_mu20', 'EM100 : HLT_g100']
+| | |                         (default: [])
+| | \----- (End of Private AlgTool RoIsUnpackingEmulationTool/MURoIsUnpackingTool) ---------------------
+| |=/***** Private AlgTool PrescalingEmulationTool/PrescalingEmulationTool *****************************
+| | |-AuditFinalize     = False
+| | |-AuditInitialize   = False
+| | |-AuditReinitialize = False
+| | |-AuditRestart      = False
+| | |-AuditStart        = False
+| | |-AuditStop         = False
+| | |-AuditTools        = False
+| | |-AutoRetrieveTools = True
+| | |-DetStore          = ServiceHandle('StoreGateSvc/DetectorStore')
+| | |-EventInfo         = ''  (default: 'StoreGateSvc+EventInfo')
+| | |-EvtStore          = ServiceHandle('StoreGateSvc')
+| | |-ExtraInputs       = []  (default: [])
+| | |-ExtraOutputs      = []  (default: [])
+| | |-KeepUnknownChains = True
+| | |-MonitorService    = 'MonitorSvc'
+| | |-OutputLevel       = 0
+| | |-Prescales         = []  (default: [])
+| | \----- (End of Private AlgTool PrescalingEmulationTool/PrescalingEmulationTool) --------------------
+| \----- (End of Algorithm L1Decoder/L1Decoder) ------------------------------------------------------
+\----- (End of Algorithm AthSequencer/L1UnpackingSeq) ----------------------------------------------
+Py:Athena            INFO including file "TrigUpgradeTest/HLTSignatureConfig.py"
+AlgNode::Step1MuInputMaker_InputDecisions_Output: new Alg Step1MuInputMaker
+AlgNode::muMSRecAlg_Input_Output: new Alg muMSRecAlg
+AlgNode::Step1MuHypo_Input_Output: new Alg Step1MuHypo
+adding output decisions (Step1MuInputMaker_decisions) to sequence muNodeSeq1  (to alg Step1MuInputMaker)
+connect NodeSequence muNodeSeq1
+AlgNode::Step2MuInputMaker_InputDecisions_Output: new Alg Step2MuInputMaker
+AlgNode::muMSRecAlg2_Input_Output: new Alg muMSRecAlg2
+AlgNode::Step2MuHypo2_Input_Output: new Alg Step2MuHypo2
+adding output decisions (Step2MuInputMaker_decisions) to sequence muNodeSeq2  (to alg Step2MuInputMaker)
+connect NodeSequence muNodeSeq2
+AlgNode::Step1ElInputMaker_InputDecisions_Output: new Alg Step1ElInputMaker
+AlgNode::CaloClustering_Input_Output: new Alg CaloClustering
+AlgNode::Step1ElHypo_Input_Output: new Alg Step1ElHypo
+adding output decisions (Step1ElInputMaker_decisions) to sequence elNodeSeq1  (to alg Step1ElInputMaker)
+connect NodeSequence elNodeSeq1
+AlgNode::Step2ElInputMaker_InputDecisions_Output: new Alg Step2ElInputMaker
+AlgNode::CaloClustering2_Input_Output: new Alg CaloClustering2
+AlgNode::Step2ElHypo_Input_Output: new Alg Step2ElHypo
+adding output decisions (Step2ElInputMaker_decisions) to sequence elNodeSeq2  (to alg Step2ElInputMaker)
+connect NodeSequence elNodeSeq2
+AlgNode::Step1ComboMuElHypo_Input1_Output1: new Alg Step1ComboMuElHypo
+AlgNode::Step1ComboMuElHypo_Input2_Output2: found already Alg Step1ComboMuElHypo
+adding output decisions (Step1MuInputMaker_decisions) to sequence CombmuNodeSeq1  (to alg Step1MuInputMaker)
+connect NodeSequence CombmuNodeSeq1
+adding output decisions (Step1ElInputMaker_decisions) to sequence CombelNodeSeq1  (to alg Step1ElInputMaker)
+connect NodeSequence CombelNodeSeq1
+AlgNode::Step2ComboMuElHypo_Input1_Output1: new Alg Step2ComboMuElHypo
+AlgNode::Step2ComboMuElHypo_Input2_Output2: found already Alg Step2ComboMuElHypo
+adding output decisions (Step2MuInputMaker_decisions) to sequence CombmuNodeSeq2  (to alg Step2MuInputMaker)
+connect NodeSequence CombmuNodeSeq2
+adding output decisions (Step2ElInputMaker_decisions) to sequence CombelNodeSeq2  (to alg Step2ElInputMaker)
+connect NodeSequence CombelNodeSeq2
+decisionTree_From_Chains on EmuTest_HLTAllStepsSequence
+
+*******Filling step Step1 for chain  HLT_mu20
+Going through sequence muStep1Seq with threshold step1mu20
+Found these seeds: ['L1MU']
+Seeds from this chain: ['L1MU']
+Adding step1mu20 to Step1MuHypo
+AlgNode::FilterStep1_on_L1MU_Input_Output: new Alg FilterStep1_on_L1MU
+Adding these seeds to filter: ['L1MU']
+Filter Done: Alg::FilterStep1_on_L1MU_Input_Output  [L1MU] -> [FilterStep1_on_L1MU_from_L1MU_out]
+Adding 1 inputs to sequence::muNodeSeq1 from Filter::FilterStep1_on_L1MU (from seed L1MU)
+FilterStep1_on_L1MU_from_L1MU_out
+adding input to sequence: FilterStep1_on_L1MU_from_L1MU_out to Step1MuInputMaker
+--- CFSequence muStep1Seq ---
+ + Filter: Alg::FilterStep1_on_L1MU_Input_Output  [L1MU] -> [FilterStep1_on_L1MU_from_L1MU_out] 
+ +  MenuSequence::muStep1Seq 
+ NodeSequence::muNodeSeq1 with 
+ Seed::L1MU 
+ Alg::muMSRecAlg_Input_Output  [Step1MuInputMaker_Output_out] -> [muMSRecAlg_Output_out] 
+ Hypo::HypoAlg::Step1MuHypo  [muMSRecAlg_Output_out] -> [Step1MuHypo_Output_out], previous = [Step1MuInputMaker_decisions], HypoTools=[step1mu20] 
+ 
+
+*******Filling step Step1 for chain  HLT_mu8
+Going through sequence muStep1Seq with threshold step1mu8
+Found these seeds: ['L1MU']
+Seeds from this chain: ['L1MU']
+Adding step1mu8 to Step1MuHypo
+Filter FilterStep1_on_L1MU already exists
+Adding chain HLT_mu8 to FilterStep1_on_L1MU
+
+*******Filling step Step1 for chain  HLT_e20
+Going through sequence elStep1Seq with threshold step1e20
+Found these seeds: ['L1EM']
+Seeds from this chain: ['L1EM']
+Adding step1e20 to Step1ElHypo
+AlgNode::FilterStep1_on_L1EM_Input_Output: new Alg FilterStep1_on_L1EM
+Adding these seeds to filter: ['L1EM']
+Filter Done: Alg::FilterStep1_on_L1EM_Input_Output  [L1EM] -> [FilterStep1_on_L1EM_from_L1EM_out]
+Adding 1 inputs to sequence::elNodeSeq1 from Filter::FilterStep1_on_L1EM (from seed L1EM)
+FilterStep1_on_L1EM_from_L1EM_out
+adding input to sequence: FilterStep1_on_L1EM_from_L1EM_out to Step1ElInputMaker
+--- CFSequence elStep1Seq ---
+ + Filter: Alg::FilterStep1_on_L1EM_Input_Output  [L1EM] -> [FilterStep1_on_L1EM_from_L1EM_out] 
+ +  MenuSequence::elStep1Seq 
+ NodeSequence::elNodeSeq1 with 
+ Seed::L1EM 
+ Alg::CaloClustering_Input_Output  [Step1ElInputMaker_Output_out] -> [CaloClustering_Output_out] 
+ Hypo::HypoAlg::Step1ElHypo  [CaloClustering_Output_out] -> [Step1ElHypo_Output_out], previous = [Step1ElInputMaker_decisions], HypoTools=[step1e20] 
+ 
+
+*******Filling step Step1 for chain  HLT_mu8_e8
+Going through sequence combStep1Seq with threshold step1mu8_e8
+Found these seeds: ['L1MU', 'L1EM']
+Seeds from this chain: ['L1MU', 'L1EM']
+Adding step1mu8_e8 to Step1ComboMuElHypo
+Adding step1mu8_e8 to Step1ComboMuElHypo
+AlgNode::FilterStep1_on_L1EML1MU_Input_Output: new Alg FilterStep1_on_L1EML1MU
+Adding these seeds to filter: ['L1MU', 'L1EM']
+Filter Done: Alg::FilterStep1_on_L1EML1MU_Input_Output  [L1MU L1EM] -> [FilterStep1_on_L1EML1MU_from_L1MU_out FilterStep1_on_L1EML1MU_from_L1EM_out]
+Adding 1 inputs to sequence::CombmuNodeSeq1 from Filter::FilterStep1_on_L1EML1MU (from seed L1MU)
+FilterStep1_on_L1EML1MU_from_L1MU_out
+adding input to sequence: FilterStep1_on_L1EML1MU_from_L1MU_out to Step1MuInputMaker
+Adding 1 inputs to sequence::CombelNodeSeq1 from Filter::FilterStep1_on_L1EML1MU (from seed L1EM)
+FilterStep1_on_L1EML1MU_from_L1EM_out
+adding input to sequence: FilterStep1_on_L1EML1MU_from_L1EM_out to Step1ElInputMaker
+--- CFSequence combStep1Seq ---
+ + Filter: Alg::FilterStep1_on_L1EML1MU_Input_Output  [L1MU L1EM] -> [FilterStep1_on_L1EML1MU_from_L1MU_out FilterStep1_on_L1EML1MU_from_L1EM_out] 
+ +  MenuSequence::combStep1Seq 
+ NodeSequence::CombmuNodeSeq1 with 
+ Seed::L1MU 
+ Alg::muMSRecAlg_Input_Output  [Step1MuInputMaker_Output_out] -> [muMSRecAlg_Output_out] 
+ Hypo::HypoAlg::Step1ComboMuElHypo  [muMSRecAlg_Output_out] -> [Step1ComboMuElHypo_Output1_out], previous = [Step1MuInputMaker_decisions], HypoTools=[],
+ NodeSequence::CombelNodeSeq1 with 
+ Seed::L1EM 
+ Alg::CaloClustering_Input_Output  [Step1ElInputMaker_Output_out] -> [CaloClustering_Output_out] 
+ Hypo::HypoAlg::Step1ComboMuElHypo  [CaloClustering_Output_out] -> [Step1ComboMuElHypo_Output2_out], previous = [Step1ElInputMaker_decisions], HypoTools=[] 
+ 
+
+******** Create CF Tree %s with AthSequencers Step1
+Create filter step Step1 with 3 filters
+Add  FilterStep1_on_L1MU to filter node Step1
+Add  FilterStep1_on_L1EM to filter node Step1
+Add  FilterStep1_on_L1EML1MU to filter node Step1
+Create reco step EmuTest_HLTAllStepsSequence_Step1 with 3 sequences
+
+ * Create CFSequence muStep1Seq
+
+ * Create CFSequence elStep1Seq
+
+ * Create CFSequence combStep1Seq
+Now Draw...
+muStep1Seq
+Data connections between FilterStep1_on_L1MU and Step1MuInputMaker: FilterStep1_on_L1MU_from_L1MU_out
+Data connections between Step1MuInputMaker and muMSRecAlg: Step1MuInputMaker_Output_out
+Data connections between muMSRecAlg and Step1MuHypo: muMSRecAlg_Output_out
+elStep1Seq
+Data connections between FilterStep1_on_L1EM and Step1ElInputMaker: FilterStep1_on_L1EM_from_L1EM_out
+Data connections between Step1ElInputMaker and CaloClustering: Step1ElInputMaker_Output_out
+Data connections between CaloClustering and Step1ElHypo: CaloClustering_Output_out
+combStep1Seq
+Data connections between FilterStep1_on_L1EML1MU and Step1MuInputMaker: FilterStep1_on_L1EML1MU_from_L1MU_out
+Data connections between FilterStep1_on_L1EML1MU and Step1ElInputMaker: FilterStep1_on_L1EML1MU_from_L1EM_out
+Data connections between Step1MuInputMaker and muMSRecAlg: Step1MuInputMaker_Output_out
+Data connections between muMSRecAlg and Step1ComboMuElHypo: muMSRecAlg_Output_out
+Data connections between Step1ElInputMaker and CaloClustering: Step1ElInputMaker_Output_out
+Data connections between CaloClustering and Step1ComboMuElHypo: CaloClustering_Output_out
+Added stepCF Step1 to the root
+************* End of step Step1
+
+*******Filling step Step2 for chain  HLT_mu20
+Going through sequence muStep2Seq with threshold step2mu20
+Found these seeds: ['L1MU']
+Connect to previous sequence through these filter inputs:
+['Step1MuHypo_Output_out']
+Adding step2mu20 to Step2MuHypo2
+AlgNode::FilterStep2_on_muStep1Seq_Input_Output: new Alg FilterStep2_on_muStep1Seq
+Adding these seeds to filter: ['L1MU']
+Filter Done: Alg::FilterStep2_on_muStep1Seq_Input_Output  [Step1MuHypo_Output_out] -> [FilterStep2_on_muStep1Seq_from_Step1MuHypo_Output_out_out]
+Adding 1 inputs to sequence::muNodeSeq2 from Filter::FilterStep2_on_muStep1Seq (from seed L1MU)
+FilterStep2_on_muStep1Seq_from_Step1MuHypo_Output_out_out
+adding input to sequence: FilterStep2_on_muStep1Seq_from_Step1MuHypo_Output_out_out to Step2MuInputMaker
+--- CFSequence muStep2Seq ---
+ + Filter: Alg::FilterStep2_on_muStep1Seq_Input_Output  [Step1MuHypo_Output_out] -> [FilterStep2_on_muStep1Seq_from_Step1MuHypo_Output_out_out] 
+ +  MenuSequence::muStep2Seq 
+ NodeSequence::muNodeSeq2 with 
+ Seed::L1MU 
+ Alg::muMSRecAlg2_Input_Output  [Step2MuInputMaker_Output_out] -> [muMSRecAlg2_Output_out] 
+ Hypo::HypoAlg::Step2MuHypo2  [muMSRecAlg2_Output_out] -> [Step2MuHypo2_Output_out], previous = [Step2MuInputMaker_decisions], HypoTools=[step2mu20] 
+ 
+
+*******Filling step Step2 for chain  HLT_mu8
+Going through sequence muStep2Seq with threshold step2mu8
+Found these seeds: ['L1MU']
+Connect to previous sequence through these filter inputs:
+['Step1MuHypo_Output_out']
+Adding step2mu8 to Step2MuHypo2
+Filter FilterStep2_on_muStep1Seq already exists
+Adding chain HLT_mu8 to FilterStep2_on_muStep1Seq
+
+*******Filling step Step2 for chain  HLT_e20
+Going through sequence elStep2Seq with threshold step2e20
+Found these seeds: ['L1EM']
+Connect to previous sequence through these filter inputs:
+['Step1ElHypo_Output_out']
+Adding step2e20 to Step2ElHypo
+AlgNode::FilterStep2_on_elStep1Seq_Input_Output: new Alg FilterStep2_on_elStep1Seq
+Adding these seeds to filter: ['L1EM']
+Filter Done: Alg::FilterStep2_on_elStep1Seq_Input_Output  [Step1ElHypo_Output_out] -> [FilterStep2_on_elStep1Seq_from_Step1ElHypo_Output_out_out]
+Adding 1 inputs to sequence::elNodeSeq2 from Filter::FilterStep2_on_elStep1Seq (from seed L1EM)
+FilterStep2_on_elStep1Seq_from_Step1ElHypo_Output_out_out
+adding input to sequence: FilterStep2_on_elStep1Seq_from_Step1ElHypo_Output_out_out to Step2ElInputMaker
+--- CFSequence elStep2Seq ---
+ + Filter: Alg::FilterStep2_on_elStep1Seq_Input_Output  [Step1ElHypo_Output_out] -> [FilterStep2_on_elStep1Seq_from_Step1ElHypo_Output_out_out] 
+ +  MenuSequence::elStep2Seq 
+ NodeSequence::elNodeSeq2 with 
+ Seed::L1EM 
+ Alg::CaloClustering2_Input_Output  [Step2ElInputMaker_Output_out] -> [CaloClustering2_Output_out] 
+ Hypo::HypoAlg::Step2ElHypo  [CaloClustering2_Output_out] -> [Step2ElHypo_Output_out], previous = [Step2ElInputMaker_decisions], HypoTools=[step2e20] 
+ 
+
+*******Filling step Step2 for chain  HLT_mu8_e8
+Going through sequence combStep2Seq with threshold step2mu8_e8
+Found these seeds: ['L1MU', 'L1EM']
+Connect to previous sequence through these filter inputs:
+['Step1ComboMuElHypo_Output1_out', 'Step1ComboMuElHypo_Output2_out']
+Adding step2mu8_e8 to Step2ComboMuElHypo
+Adding step2mu8_e8 to Step2ComboMuElHypo
+AlgNode::FilterStep2_on_combStep1Seq_Input_Output: new Alg FilterStep2_on_combStep1Seq
+Adding these seeds to filter: ['L1MU', 'L1EM']
+Filter Done: Alg::FilterStep2_on_combStep1Seq_Input_Output  [Step1ComboMuElHypo_Output1_out Step1ComboMuElHypo_Output2_out] -> [FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output1_out_out FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output2_out_out]
+Adding 1 inputs to sequence::CombmuNodeSeq2 from Filter::FilterStep2_on_combStep1Seq (from seed L1MU)
+FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output1_out_out
+adding input to sequence: FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output1_out_out to Step2MuInputMaker
+Adding 1 inputs to sequence::CombelNodeSeq2 from Filter::FilterStep2_on_combStep1Seq (from seed L1EM)
+FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output2_out_out
+adding input to sequence: FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output2_out_out to Step2ElInputMaker
+--- CFSequence combStep2Seq ---
+ + Filter: Alg::FilterStep2_on_combStep1Seq_Input_Output  [Step1ComboMuElHypo_Output1_out Step1ComboMuElHypo_Output2_out] -> [FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output1_out_out FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output2_out_out] 
+ +  MenuSequence::combStep2Seq 
+ NodeSequence::CombmuNodeSeq2 with 
+ Seed::L1MU 
+ Alg::muMSRecAlg2_Input_Output  [Step2MuInputMaker_Output_out] -> [muMSRecAlg2_Output_out] 
+ Hypo::HypoAlg::Step2ComboMuElHypo  [muMSRecAlg2_Output_out] -> [Step2ComboMuElHypo_Output1_out], previous = [Step2MuInputMaker_decisions], HypoTools=[],
+ NodeSequence::CombelNodeSeq2 with 
+ Seed::L1EM 
+ Alg::CaloClustering2_Input_Output  [Step2ElInputMaker_Output_out] -> [CaloClustering2_Output_out] 
+ Hypo::HypoAlg::Step2ComboMuElHypo  [CaloClustering2_Output_out] -> [Step2ComboMuElHypo_Output2_out], previous = [Step2ElInputMaker_decisions], HypoTools=[] 
+ 
+
+******** Create CF Tree %s with AthSequencers Step2
+Create filter step Step2 with 3 filters
+Add  FilterStep2_on_muStep1Seq to filter node Step2
+Add  FilterStep2_on_elStep1Seq to filter node Step2
+Add  FilterStep2_on_combStep1Seq to filter node Step2
+Create reco step EmuTest_HLTAllStepsSequence_Step2 with 3 sequences
+
+ * Create CFSequence muStep2Seq
+
+ * Create CFSequence elStep2Seq
+
+ * Create CFSequence combStep2Seq
+Now Draw...
+muStep2Seq
+Data connections between FilterStep2_on_muStep1Seq and Step2MuInputMaker: FilterStep2_on_muStep1Seq_from_Step1MuHypo_Output_out_out
+Data connections between Step2MuInputMaker and muMSRecAlg2: Step2MuInputMaker_Output_out
+Data connections between muMSRecAlg2 and Step2MuHypo2: muMSRecAlg2_Output_out
+elStep2Seq
+Data connections between FilterStep2_on_elStep1Seq and Step2ElInputMaker: FilterStep2_on_elStep1Seq_from_Step1ElHypo_Output_out_out
+Data connections between Step2ElInputMaker and CaloClustering2: Step2ElInputMaker_Output_out
+Data connections between CaloClustering2 and Step2ElHypo: CaloClustering2_Output_out
+combStep2Seq
+Data connections between FilterStep2_on_combStep1Seq and Step2MuInputMaker: FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output1_out_out
+Data connections between FilterStep2_on_combStep1Seq and Step2ElInputMaker: FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output2_out_out
+Data connections between Step2MuInputMaker and muMSRecAlg2: Step2MuInputMaker_Output_out
+Data connections between muMSRecAlg2 and Step2ComboMuElHypo: muMSRecAlg2_Output_out
+Data connections between Step2ElInputMaker and CaloClustering2: Step2ElInputMaker_Output_out
+Data connections between CaloClustering2 and Step2ComboMuElHypo: CaloClustering2_Output_out
+Added stepCF Step2 to the root
+************* End of step Step2
+muStep1Seq
+Data connections between FilterStep1_on_L1MU and Step1MuInputMaker: FilterStep1_on_L1MU_from_L1MU_out
+Data connections between Step1MuInputMaker and muMSRecAlg: Step1MuInputMaker_Output_out
+Data connections between muMSRecAlg and Step1MuHypo: muMSRecAlg_Output_out
+elStep1Seq
+Data connections between FilterStep1_on_L1EM and Step1ElInputMaker: FilterStep1_on_L1EM_from_L1EM_out
+Data connections between Step1ElInputMaker and CaloClustering: Step1ElInputMaker_Output_out
+Data connections between CaloClustering and Step1ElHypo: CaloClustering_Output_out
+combStep1Seq
+Data connections between FilterStep1_on_L1EML1MU and Step1MuInputMaker: FilterStep1_on_L1EML1MU_from_L1MU_out
+Data connections between FilterStep1_on_L1EML1MU and Step1ElInputMaker: FilterStep1_on_L1EML1MU_from_L1EM_out
+Data connections between Step1MuInputMaker and muMSRecAlg: Step1MuInputMaker_Output_out
+Data connections between muMSRecAlg and Step1ComboMuElHypo: muMSRecAlg_Output_out
+Data connections between Step1ElInputMaker and CaloClustering: Step1ElInputMaker_Output_out
+Data connections between CaloClustering and Step1ComboMuElHypo: CaloClustering_Output_out
+muStep2Seq
+Data connections between FilterStep2_on_muStep1Seq and Step2MuInputMaker: FilterStep2_on_muStep1Seq_from_Step1MuHypo_Output_out_out
+Data connections between Step2MuInputMaker and muMSRecAlg2: Step2MuInputMaker_Output_out
+Data connections between muMSRecAlg2 and Step2MuHypo2: muMSRecAlg2_Output_out
+elStep2Seq
+Data connections between FilterStep2_on_elStep1Seq and Step2ElInputMaker: FilterStep2_on_elStep1Seq_from_Step1ElHypo_Output_out_out
+Data connections between Step2ElInputMaker and CaloClustering2: Step2ElInputMaker_Output_out
+Data connections between CaloClustering2 and Step2ElHypo: CaloClustering2_Output_out
+combStep2Seq
+Data connections between FilterStep2_on_combStep1Seq and Step2MuInputMaker: FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output1_out_out
+Data connections between FilterStep2_on_combStep1Seq and Step2ElInputMaker: FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output2_out_out
+Data connections between Step2MuInputMaker and muMSRecAlg2: Step2MuInputMaker_Output_out
+Data connections between muMSRecAlg2 and Step2ComboMuElHypo: muMSRecAlg2_Output_out
+Data connections between Step2ElInputMaker and CaloClustering2: Step2ElInputMaker_Output_out
+Data connections between CaloClustering2 and Step2ComboMuElHypo: CaloClustering2_Output_out
+Data connections between Step1MuHypo and FilterStep2_on_muStep1Seq: Step1MuHypo_Output_out
+Data connections between Step1ElHypo and FilterStep2_on_elStep1Seq: Step1ElHypo_Output_out
+Data connections between Step1ComboMuElHypo and FilterStep2_on_combStep1Seq: Step1ComboMuElHypo_Output1_out
+Data connections between Step1ComboMuElHypo and FilterStep2_on_combStep1Seq: Step1ComboMuElHypo_Output2_out
+Py:Athena            INFO including file "AthenaCommon/runbatch.py"
+[?1034hApplicationMgr       INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0
+MessageSvc           INFO Activating in a separate thread
+ApplicationMgr    SUCCESS 
+====================================================================================================================================
+                                                   Welcome to ApplicationMgr (GaudiCoreSvc v30r1)
+                                          running on pc-tbed-pub-26.cern.ch on Tue Mar  6 12:32:41 2018
+====================================================================================================================================
+ApplicationMgr       INFO Successfully loaded modules : AthenaServices
+ApplicationMgr       INFO Application Manager Configured successfully
+ApplicationMgr                                     INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0
+AthDictLoaderSvc                                   INFO in initialize...
+AthDictLoaderSvc                                   INFO acquired Dso-registry
+ClassIDSvc                                         INFO  getRegistryEntries: read 2849 CLIDRegistry entries for module ALL
+ChronoStatSvc                                      INFO  Number of skipped events for MemStat-1
+CoreDumpSvc                                        INFO install f-a-t-a-l handler... (flag = -1)
+CoreDumpSvc                                        INFO Handling signals: 11(Segmentation fault) 7(Bus error) 4(Illegal instruction) 8(Floating point exception) 
+AthenaHiveEventLoopMgr                             INFO Initializing AthenaHiveEventLoopMgr - package version AthenaServices-00-00-00
+ClassIDSvc                                         INFO  getRegistryEntries: read 7798 CLIDRegistry entries for module ALL
+L1Decoder                                         DEBUG Property update for OutputLevel : new value = 2
+L1Decoder                                          INFO Reading RoIB infromation from:  :  ( 'ROIB::RoIBResult' , '' )  : 
+L1Decoder.CTPUnpackingEmulationTool               DEBUG Property update for OutputLevel : new value = 2
+L1Decoder.CTPUnpackingEmulationTool               DEBUG In input file ctp.dat found 3 chain sets
+L1Decoder.EMRoIsUnpackingTool                     DEBUG Property update for OutputLevel : new value = 2
+L1Decoder.EMRoIsUnpackingTool                     DEBUG Threshold EM50 ID#761850374 mapped to chains [787761180]
+L1Decoder.EMRoIsUnpackingTool                     DEBUG Threshold EM20 ID#958951142 mapped to chains [4230506138]
+L1Decoder.EMRoIsUnpackingTool                     DEBUG Threshold EM100 ID#2688838698 mapped to chains [3739492918]
+L1Decoder.EMRoIsUnpackingTool                     DEBUG Threshold EM7 ID#3002722737 mapped to chains [3385806166]
+L1Decoder.EMRoIsUnpackingTool                     DEBUG Read in 3 pseudo events from  'InputFilename':l1emroi.dat
+L1Decoder.EMRoIsUnpackingTool                     DEBUG Input file parsed successfully. Data:
+L1Decoder.EMRoIsUnpackingTool                     DEBUG Event
+L1Decoder.EMRoIsUnpackingTool                     DEBUG Eta: 1.000000, Phi: 1.000000, Word: 0, PassedThresholdIDs: EM3, EM7, EM15, EM20, EM50, EM100, 
+L1Decoder.EMRoIsUnpackingTool                     DEBUG Eta: 1.000000, Phi: -1.200000, Word: 0, PassedThresholdIDs: EM3, EM7, 
+L1Decoder.EMRoIsUnpackingTool                     DEBUG Event
+L1Decoder.EMRoIsUnpackingTool                     DEBUG Eta: -0.600000, Phi: 0.200000, Word: 0, PassedThresholdIDs: EM3, EM7, EM15, EM20, EM50, EM100, 
+L1Decoder.EMRoIsUnpackingTool                     DEBUG Eta: 1.000000, Phi: -1.100000, Word: 0, PassedThresholdIDs: EM3, EM7, EM15, EM20, EM50, 
+L1Decoder.EMRoIsUnpackingTool                     DEBUG Event
+L1Decoder.EMRoIsUnpackingTool                     DEBUG Eta: -0.600000, Phi: 1.500000, Word: 0, PassedThresholdIDs: EM3, EM7, EM7, 
+L1Decoder.MURoIsUnpackingTool                     DEBUG Property update for OutputLevel : new value = 2
+L1Decoder.MURoIsUnpackingTool                     DEBUG Threshold MU6 ID#416314713 mapped to chains [1672162766]
+L1Decoder.MURoIsUnpackingTool                     DEBUG Threshold MU10 ID#426353733 mapped to chains [3964288416]
+L1Decoder.MURoIsUnpackingTool                     DEBUG Threshold MU8 ID#777572725 mapped to chains [3370546555, 1307018918, 3385806166]
+L1Decoder.MURoIsUnpackingTool                     DEBUG Threshold EM100 ID#2688838698 mapped to chains [3739492918]
+L1Decoder.MURoIsUnpackingTool                     DEBUG Read in 3 pseudo events from  'InputFilename':l1muroi.dat
+L1Decoder.MURoIsUnpackingTool                     DEBUG Input file parsed successfully. Data:
+L1Decoder.MURoIsUnpackingTool                     DEBUG Event
+L1Decoder.MURoIsUnpackingTool                     DEBUG Eta: 0.000000, Phi: 0.000000, Word: 0, PassedThresholdIDs: MU0, 
+L1Decoder.MURoIsUnpackingTool                     DEBUG Event
+L1Decoder.MURoIsUnpackingTool                     DEBUG Eta: -1.000000, Phi: 0.500000, Word: 0, PassedThresholdIDs: MU6, MU8, 
+L1Decoder.MURoIsUnpackingTool                     DEBUG Eta: -1.000000, Phi: 0.500000, Word: 0, PassedThresholdIDs: MU6, MU8, MU10, 
+L1Decoder.MURoIsUnpackingTool                     DEBUG Event
+L1Decoder.MURoIsUnpackingTool                     DEBUG Eta: -1.500000, Phi: -0.100000, Word: 0, PassedThresholdIDs: MU6, MU8, 
+L1Decoder.PrescalingEmulationTool                 DEBUG Property update for OutputLevel : new value = 2
+L1Decoder                                         DEBUG input handles: 0
+L1Decoder                                         DEBUG output handles: 1
+L1Decoder                                         DEBUG Registering all Tools in ToolHandleArray roiUnpackers
+L1Decoder                                         DEBUG Adding private ToolHandle tool L1Decoder.EMRoIsUnpackingTool (RoIsUnpackingEmulationTool) from ToolHandleArray roiUnpackers
+L1Decoder                                         DEBUG Adding private ToolHandle tool L1Decoder.MURoIsUnpackingTool (RoIsUnpackingEmulationTool) from ToolHandleArray roiUnpackers
+L1Decoder                                         DEBUG Adding private ToolHandle tool L1Decoder.CTPUnpackingEmulationTool (CTPUnpackingEmulationTool)
+L1Decoder                                         DEBUG Adding private ToolHandle tool L1Decoder.PrescalingEmulationTool (PrescalingEmulationTool)
+L1Decoder                                         DEBUG Data Deps for L1Decoder
+  + INPUT IGNORED  ( 'xAOD::EventInfo' , '' ) 
+  + OUTPUT  ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+L1EMRoIs' ) 
+  + OUTPUT  ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+L1MURoIs' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+HLTChains' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+L1EM' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+L1MU' ) 
+ClassIDSvc                                         INFO  getRegistryEntries: read 57 CLIDRegistry entries for module ALL
+FilterStep1_on_L1MU                               DEBUG Property update for OutputLevel : new value = 2
+FilterStep1_on_L1MU                                INFO Initializing FilterStep1_on_L1MU...
+FilterStep1_on_L1MU                               DEBUG Will consume implicit ReadDH:
+FilterStep1_on_L1MU                               DEBUG  - L1MU
+FilterStep1_on_L1MU                               DEBUG Will produce implicit WriteDH: 
+FilterStep1_on_L1MU                               DEBUG  - FilterStep1_on_L1MU_from_L1MU_out
+FilterStep1_on_L1MU                               DEBUG Configured to require chain HLT_mu8 ID#3370546555
+FilterStep1_on_L1MU                               DEBUG Configured to require chain HLT_mu20 ID#3964288416
+FilterStep1_on_L1MU                               DEBUG mergeInputs is  'MergeInputs':False
+FilterStep1_on_L1MU                               DEBUG input handles: 0
+FilterStep1_on_L1MU                               DEBUG output handles: 0
+FilterStep1_on_L1MU                               DEBUG Data Deps for FilterStep1_on_L1MU
+FilterStep1_on_L1EM                               DEBUG Property update for OutputLevel : new value = 2
+FilterStep1_on_L1EM                                INFO Initializing FilterStep1_on_L1EM...
+FilterStep1_on_L1EM                               DEBUG Will consume implicit ReadDH:
+FilterStep1_on_L1EM                               DEBUG  - L1EM
+FilterStep1_on_L1EM                               DEBUG Will produce implicit WriteDH: 
+FilterStep1_on_L1EM                               DEBUG  - FilterStep1_on_L1EM_from_L1EM_out
+FilterStep1_on_L1EM                               DEBUG Configured to require chain HLT_e20 ID#4230506138
+FilterStep1_on_L1EM                               DEBUG mergeInputs is  'MergeInputs':False
+FilterStep1_on_L1EM                               DEBUG input handles: 0
+FilterStep1_on_L1EM                               DEBUG output handles: 0
+FilterStep1_on_L1EM                               DEBUG Data Deps for FilterStep1_on_L1EM
+FilterStep1_on_L1EML1MU                           DEBUG Property update for OutputLevel : new value = 2
+FilterStep1_on_L1EML1MU                            INFO Initializing FilterStep1_on_L1EML1MU...
+FilterStep1_on_L1EML1MU                           DEBUG Will consume implicit ReadDH:
+FilterStep1_on_L1EML1MU                           DEBUG  - L1MU
+FilterStep1_on_L1EML1MU                           DEBUG  - L1EM
+FilterStep1_on_L1EML1MU                           DEBUG Will produce implicit WriteDH: 
+FilterStep1_on_L1EML1MU                           DEBUG  - FilterStep1_on_L1EML1MU_from_L1MU_out
+FilterStep1_on_L1EML1MU                           DEBUG  - FilterStep1_on_L1EML1MU_from_L1EM_out
+FilterStep1_on_L1EML1MU                           DEBUG Configured to require chain HLT_mu8_e8 ID#3385806166
+FilterStep1_on_L1EML1MU                           DEBUG mergeInputs is  'MergeInputs':False
+FilterStep1_on_L1EML1MU                           DEBUG input handles: 0
+FilterStep1_on_L1EML1MU                           DEBUG output handles: 0
+FilterStep1_on_L1EML1MU                           DEBUG Data Deps for FilterStep1_on_L1EML1MU
+ClassIDSvc                                         INFO  getRegistryEntries: read 578 CLIDRegistry entries for module ALL
+Step1MuHypo                                       DEBUG Property update for OutputLevel : new value = 2
+Step1MuHypo                                        INFO Initializing Step1MuHypo...
+Step1MuHypo                                       DEBUG Will consume implicit previous decisions Step1MuInputMaker_decisions
+Step1MuHypo.step1mu20                             DEBUG Property update for OutputLevel : new value = 2
+Step1MuHypo.step1mu20                              INFO Initializing Step1MuHypo.step1mu20...
+Step1MuHypo.step1mu20                             DEBUG 20000
+Step1MuHypo.step1mu20                             DEBUG pt
+Step1MuHypo.step1mu20                             DEBUG Configured to require chain HLT_mu20 ID#3964288416
+Step1MuHypo.step1mu8                              DEBUG Property update for OutputLevel : new value = 2
+Step1MuHypo.step1mu8                               INFO Initializing Step1MuHypo.step1mu8...
+Step1MuHypo.step1mu8                              DEBUG 8000
+Step1MuHypo.step1mu8                              DEBUG pt
+Step1MuHypo.step1mu8                              DEBUG Configured to require chain HLT_mu8 ID#3370546555
+Step1MuHypo                                       DEBUG input handles: 1
+Step1MuHypo                                       DEBUG output handles: 1
+Step1MuHypo                                       DEBUG Registering all Tools in ToolHandleArray HypoTools
+Step1MuHypo                                       DEBUG Adding private ToolHandle tool Step1MuHypo.step1mu20 (HLTTest::TestHypoTool) from ToolHandleArray HypoTools
+Step1MuHypo                                       DEBUG Adding private ToolHandle tool Step1MuHypo.step1mu8 (HLTTest::TestHypoTool) from ToolHandleArray HypoTools
+Step1MuHypo                                       DEBUG Data Deps for Step1MuHypo
+  + INPUT   ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+muMSRecAlg_Output_out' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step1MuHypo_Output_out' ) 
+Step1MuInputMaker                                 DEBUG Property update for OutputLevel : new value = 2
+Step1MuInputMaker                                  INFO Initializing Step1MuInputMaker...
+Step1MuInputMaker                                 DEBUG Will consume implicit input data:
+Step1MuInputMaker                                 DEBUG  FilterStep1_on_L1MU_from_L1MU_out
+Step1MuInputMaker                                 DEBUG  FilterStep1_on_L1EML1MU_from_L1MU_out
+Step1MuInputMaker                                 DEBUG  and produce 'StoreGateSvc+Step1MuInputMaker_Output_out'
+Step1MuInputMaker                                 DEBUG input handles: 0
+Step1MuInputMaker                                 DEBUG output handles: 2
+Step1MuInputMaker                                 DEBUG Data Deps for Step1MuInputMaker
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step1MuInputMaker_Output_out' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step1MuInputMaker_decisions' ) 
+muMSRecAlg                                        DEBUG Property update for OutputLevel : new value = 2
+muMSRecAlg                                         INFO Initializing muMSRecAlg reading input file msmu.dat
+muMSRecAlg                                        DEBUG Loaded 3 pseudo events
+muMSRecAlg                                        DEBUG input handles: 1
+muMSRecAlg                                        DEBUG output handles: 1
+muMSRecAlg                                        DEBUG Data Deps for muMSRecAlg
+  + INPUT   ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step1MuInputMaker_Output_out' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+muMSRecAlg_Output_out' ) 
+Step1ElInputMaker                                 DEBUG Property update for OutputLevel : new value = 2
+Step1ElInputMaker                                  INFO Initializing Step1ElInputMaker...
+Step1ElInputMaker                                 DEBUG Will consume implicit input data:
+Step1ElInputMaker                                 DEBUG  FilterStep1_on_L1EM_from_L1EM_out
+Step1ElInputMaker                                 DEBUG  FilterStep1_on_L1EML1MU_from_L1EM_out
+Step1ElInputMaker                                 DEBUG  and produce 'StoreGateSvc+Step1ElInputMaker_Output_out'
+Step1ElInputMaker                                 DEBUG input handles: 0
+Step1ElInputMaker                                 DEBUG output handles: 2
+Step1ElInputMaker                                 DEBUG Data Deps for Step1ElInputMaker
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step1ElInputMaker_Output_out' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step1ElInputMaker_decisions' ) 
+Step1ElHypo                                       DEBUG Property update for OutputLevel : new value = 2
+Step1ElHypo                                        INFO Initializing Step1ElHypo...
+Step1ElHypo                                       DEBUG Will consume implicit previous decisions Step1ElInputMaker_decisions
+Step1ElHypo.step1e20                              DEBUG Property update for OutputLevel : new value = 2
+Step1ElHypo.step1e20                               INFO Initializing Step1ElHypo.step1e20...
+Step1ElHypo.step1e20                              DEBUG 20000
+Step1ElHypo.step1e20                              DEBUG et
+Step1ElHypo.step1e20                              DEBUG Configured to require chain HLT_e20 ID#4230506138
+Step1ElHypo                                       DEBUG input handles: 1
+Step1ElHypo                                       DEBUG output handles: 1
+Step1ElHypo                                       DEBUG Registering all Tools in ToolHandleArray HypoTools
+Step1ElHypo                                       DEBUG Adding private ToolHandle tool Step1ElHypo.step1e20 (HLTTest::TestHypoTool) from ToolHandleArray HypoTools
+Step1ElHypo                                       DEBUG Data Deps for Step1ElHypo
+  + INPUT   ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+CaloClustering_Output_out' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step1ElHypo_Output_out' ) 
+CaloClustering                                    DEBUG Property update for OutputLevel : new value = 2
+CaloClustering                                     INFO Initializing CaloClustering reading input file emclusters.dat
+CaloClustering                                    DEBUG Loaded 3 pseudo events
+CaloClustering                                    DEBUG input handles: 1
+CaloClustering                                    DEBUG output handles: 1
+CaloClustering                                    DEBUG Data Deps for CaloClustering
+  + INPUT   ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step1ElInputMaker_Output_out' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+CaloClustering_Output_out' ) 
+Step1ComboMuElHypo                                DEBUG Property update for OutputLevel : new value = 2
+Step1ComboMuElHypo                                 INFO Initializing Step1ComboMuElHypo...
+Step1ComboMuElHypo                                DEBUG Configured to require chain HLT_mu8_e8 ID#3385806166
+Step1ComboMuElHypo                                DEBUG input handles: 2
+Step1ComboMuElHypo                                DEBUG output handles: 2
+Step1ComboMuElHypo                                DEBUG Data Deps for Step1ComboMuElHypo
+  + INPUT   ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+CaloClustering_Output_out' ) 
+  + INPUT   ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+muMSRecAlg_Output_out' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step1ComboMuElHypo_Output1_out' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step1ComboMuElHypo_Output2_out' ) 
+TriggerSummaryStep1                               DEBUG Property update for OutputLevel : new value = 2
+TriggerSummaryStep1                                INFO Initializing TriggerSummaryStep1...
+TriggerSummaryStep1                               DEBUG input handles: 1
+TriggerSummaryStep1                               DEBUG output handles: 1
+TriggerSummaryStep1                               DEBUG Data Deps for TriggerSummaryStep1
+  + INPUT   ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+HLTChains' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+MonitoringSummaryTriggerSummaryStep1' ) 
+FilterStep2_on_muStep1Seq                         DEBUG Property update for OutputLevel : new value = 2
+FilterStep2_on_muStep1Seq                          INFO Initializing FilterStep2_on_muStep1Seq...
+FilterStep2_on_muStep1Seq                         DEBUG Will consume implicit ReadDH:
+FilterStep2_on_muStep1Seq                         DEBUG  - Step1MuHypo_Output_out
+FilterStep2_on_muStep1Seq                         DEBUG Will produce implicit WriteDH: 
+FilterStep2_on_muStep1Seq                         DEBUG  - FilterStep2_on_muStep1Seq_from_Step1MuHypo_Output_out_out
+FilterStep2_on_muStep1Seq                         DEBUG Configured to require chain HLT_mu8 ID#3370546555
+FilterStep2_on_muStep1Seq                         DEBUG Configured to require chain HLT_mu20 ID#3964288416
+FilterStep2_on_muStep1Seq                         DEBUG mergeInputs is  'MergeInputs':False
+FilterStep2_on_muStep1Seq                         DEBUG input handles: 0
+FilterStep2_on_muStep1Seq                         DEBUG output handles: 0
+FilterStep2_on_muStep1Seq                         DEBUG Data Deps for FilterStep2_on_muStep1Seq
+FilterStep2_on_elStep1Seq                         DEBUG Property update for OutputLevel : new value = 2
+FilterStep2_on_elStep1Seq                          INFO Initializing FilterStep2_on_elStep1Seq...
+FilterStep2_on_elStep1Seq                         DEBUG Will consume implicit ReadDH:
+FilterStep2_on_elStep1Seq                         DEBUG  - Step1ElHypo_Output_out
+FilterStep2_on_elStep1Seq                         DEBUG Will produce implicit WriteDH: 
+FilterStep2_on_elStep1Seq                         DEBUG  - FilterStep2_on_elStep1Seq_from_Step1ElHypo_Output_out_out
+FilterStep2_on_elStep1Seq                         DEBUG Configured to require chain HLT_e20 ID#4230506138
+FilterStep2_on_elStep1Seq                         DEBUG mergeInputs is  'MergeInputs':False
+FilterStep2_on_elStep1Seq                         DEBUG input handles: 0
+FilterStep2_on_elStep1Seq                         DEBUG output handles: 0
+FilterStep2_on_elStep1Seq                         DEBUG Data Deps for FilterStep2_on_elStep1Seq
+FilterStep2_on_combStep1Seq                       DEBUG Property update for OutputLevel : new value = 2
+FilterStep2_on_combStep1Seq                        INFO Initializing FilterStep2_on_combStep1Seq...
+FilterStep2_on_combStep1Seq                       DEBUG Will consume implicit ReadDH:
+FilterStep2_on_combStep1Seq                       DEBUG  - Step1ComboMuElHypo_Output1_out
+FilterStep2_on_combStep1Seq                       DEBUG  - Step1ComboMuElHypo_Output2_out
+FilterStep2_on_combStep1Seq                       DEBUG Will produce implicit WriteDH: 
+FilterStep2_on_combStep1Seq                       DEBUG  - FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output1_out_out
+FilterStep2_on_combStep1Seq                       DEBUG  - FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output2_out_out
+FilterStep2_on_combStep1Seq                       DEBUG Configured to require chain HLT_mu8_e8 ID#3385806166
+FilterStep2_on_combStep1Seq                       DEBUG mergeInputs is  'MergeInputs':False
+FilterStep2_on_combStep1Seq                       DEBUG input handles: 0
+FilterStep2_on_combStep1Seq                       DEBUG output handles: 0
+FilterStep2_on_combStep1Seq                       DEBUG Data Deps for FilterStep2_on_combStep1Seq
+muMSRecAlg2                                       DEBUG Property update for OutputLevel : new value = 2
+muMSRecAlg2                                        INFO Initializing muMSRecAlg2 reading input file msmu.dat
+muMSRecAlg2                                       DEBUG Loaded 3 pseudo events
+muMSRecAlg2                                       DEBUG input handles: 1
+muMSRecAlg2                                       DEBUG output handles: 1
+muMSRecAlg2                                       DEBUG Data Deps for muMSRecAlg2
+  + INPUT   ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step2MuInputMaker_Output_out' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+muMSRecAlg2_Output_out' ) 
+Step2MuHypo2                                      DEBUG Property update for OutputLevel : new value = 2
+Step2MuHypo2                                       INFO Initializing Step2MuHypo2...
+Step2MuHypo2                                      DEBUG Will consume implicit previous decisions Step2MuInputMaker_decisions
+Step2MuHypo2.step2mu20                            DEBUG Property update for OutputLevel : new value = 2
+Step2MuHypo2.step2mu20                             INFO Initializing Step2MuHypo2.step2mu20...
+Step2MuHypo2.step2mu20                            DEBUG 20000
+Step2MuHypo2.step2mu20                            DEBUG pt
+Step2MuHypo2.step2mu20                            DEBUG Configured to require chain HLT_mu20 ID#3964288416
+Step2MuHypo2.step2mu8                             DEBUG Property update for OutputLevel : new value = 2
+Step2MuHypo2.step2mu8                              INFO Initializing Step2MuHypo2.step2mu8...
+Step2MuHypo2.step2mu8                             DEBUG 8000
+Step2MuHypo2.step2mu8                             DEBUG pt
+Step2MuHypo2.step2mu8                             DEBUG Configured to require chain HLT_mu8 ID#3370546555
+Step2MuHypo2                                      DEBUG input handles: 1
+Step2MuHypo2                                      DEBUG output handles: 1
+Step2MuHypo2                                      DEBUG Registering all Tools in ToolHandleArray HypoTools
+Step2MuHypo2                                      DEBUG Adding private ToolHandle tool Step2MuHypo2.step2mu20 (HLTTest::TestHypoTool) from ToolHandleArray HypoTools
+Step2MuHypo2                                      DEBUG Adding private ToolHandle tool Step2MuHypo2.step2mu8 (HLTTest::TestHypoTool) from ToolHandleArray HypoTools
+Step2MuHypo2                                      DEBUG Data Deps for Step2MuHypo2
+  + INPUT   ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+muMSRecAlg2_Output_out' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step2MuHypo2_Output_out' ) 
+Step2MuInputMaker                                 DEBUG Property update for OutputLevel : new value = 2
+Step2MuInputMaker                                  INFO Initializing Step2MuInputMaker...
+Step2MuInputMaker                                 DEBUG Will consume implicit input data:
+Step2MuInputMaker                                 DEBUG  FilterStep2_on_muStep1Seq_from_Step1MuHypo_Output_out_out
+Step2MuInputMaker                                 DEBUG  FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output1_out_out
+Step2MuInputMaker                                 DEBUG  and produce 'StoreGateSvc+Step2MuInputMaker_Output_out'
+Step2MuInputMaker                                 DEBUG input handles: 0
+Step2MuInputMaker                                 DEBUG output handles: 2
+Step2MuInputMaker                                 DEBUG Data Deps for Step2MuInputMaker
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step2MuInputMaker_Output_out' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step2MuInputMaker_decisions' ) 
+CaloClustering2                                   DEBUG Property update for OutputLevel : new value = 2
+CaloClustering2                                    INFO Initializing CaloClustering2 reading input file emclusters.dat
+CaloClustering2                                   DEBUG Loaded 3 pseudo events
+CaloClustering2                                   DEBUG input handles: 1
+CaloClustering2                                   DEBUG output handles: 1
+CaloClustering2                                   DEBUG Data Deps for CaloClustering2
+  + INPUT   ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step2ElInputMaker_Output_out' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+CaloClustering2_Output_out' ) 
+Step2ElInputMaker                                 DEBUG Property update for OutputLevel : new value = 2
+Step2ElInputMaker                                  INFO Initializing Step2ElInputMaker...
+Step2ElInputMaker                                 DEBUG Will consume implicit input data:
+Step2ElInputMaker                                 DEBUG  FilterStep2_on_elStep1Seq_from_Step1ElHypo_Output_out_out
+Step2ElInputMaker                                 DEBUG  FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output2_out_out
+Step2ElInputMaker                                 DEBUG  and produce 'StoreGateSvc+Step2ElInputMaker_Output_out'
+Step2ElInputMaker                                 DEBUG input handles: 0
+Step2ElInputMaker                                 DEBUG output handles: 2
+Step2ElInputMaker                                 DEBUG Data Deps for Step2ElInputMaker
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step2ElInputMaker_Output_out' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step2ElInputMaker_decisions' ) 
+Step2ElHypo                                       DEBUG Property update for OutputLevel : new value = 2
+Step2ElHypo                                        INFO Initializing Step2ElHypo...
+Step2ElHypo                                       DEBUG Will consume implicit previous decisions Step2ElInputMaker_decisions
+Step2ElHypo.step2e20                              DEBUG Property update for OutputLevel : new value = 2
+Step2ElHypo.step2e20                               INFO Initializing Step2ElHypo.step2e20...
+Step2ElHypo.step2e20                              DEBUG 20000
+Step2ElHypo.step2e20                              DEBUG et
+Step2ElHypo.step2e20                              DEBUG Configured to require chain HLT_e20 ID#4230506138
+Step2ElHypo                                       DEBUG input handles: 1
+Step2ElHypo                                       DEBUG output handles: 1
+Step2ElHypo                                       DEBUG Registering all Tools in ToolHandleArray HypoTools
+Step2ElHypo                                       DEBUG Adding private ToolHandle tool Step2ElHypo.step2e20 (HLTTest::TestHypoTool) from ToolHandleArray HypoTools
+Step2ElHypo                                       DEBUG Data Deps for Step2ElHypo
+  + INPUT   ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+CaloClustering2_Output_out' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step2ElHypo_Output_out' ) 
+Step2ComboMuElHypo                                DEBUG Property update for OutputLevel : new value = 2
+Step2ComboMuElHypo                                 INFO Initializing Step2ComboMuElHypo...
+Step2ComboMuElHypo                                DEBUG Configured to require chain HLT_mu8_e8 ID#3385806166
+Step2ComboMuElHypo                                DEBUG input handles: 2
+Step2ComboMuElHypo                                DEBUG output handles: 2
+Step2ComboMuElHypo                                DEBUG Data Deps for Step2ComboMuElHypo
+  + INPUT   ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+CaloClustering2_Output_out' ) 
+  + INPUT   ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+muMSRecAlg2_Output_out' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step2ComboMuElHypo_Output1_out' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step2ComboMuElHypo_Output2_out' ) 
+TriggerSummaryStep2                               DEBUG Property update for OutputLevel : new value = 2
+TriggerSummaryStep2                                INFO Initializing TriggerSummaryStep2...
+TriggerSummaryStep2                               DEBUG input handles: 1
+TriggerSummaryStep2                               DEBUG output handles: 1
+TriggerSummaryStep2                               DEBUG Data Deps for TriggerSummaryStep2
+  + INPUT   ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+HLTChains' ) 
+  + OUTPUT  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+MonitoringSummaryTriggerSummaryStep2' ) 
+ThreadPoolSvc                                      INFO no thread init tools attached
+AvalancheSchedulerSvc                              INFO Activating scheduler in a separate thread
+AvalancheSchedulerSvc                              INFO Waiting for AvalancheSchedulerSvc to activate
+AvalancheSchedulerSvc                              INFO Start checking the actionsQueue
+AvalancheSchedulerSvc                              INFO Found 28 algorithms
+AvalancheSchedulerSvc                              INFO No unmet INPUT data dependencies were found
+PrecedenceSvc                                      INFO Assembling CF and DF task precedence rules
+PrecedenceSvc                                      INFO PrecedenceSvc initialized successfully
+AvalancheSchedulerSvc                              INFO Concurrency level information:
+AvalancheSchedulerSvc                              INFO  o Number of events in flight: 1
+AvalancheSchedulerSvc                              INFO  o TBB thread pool size:  'ThreadPoolSize':1
+PrecedenceSvc                                      INFO 
+==================== Control Flow Configuration ==================
+
+  AthMasterSeq [Seq]  [Sequential] 
+    AthAlgEvtSeq [Seq]  [Sequential] 
+      AthBeginSeq [Seq]  [Sequential]  [Prompt] 
+        BeginIncFiringAlg [Alg]  [n= 1] [unclonable] 
+        IncidentProcAlg1 [Alg]  [n= 1] [unclonable] 
+      AthAllAlgSeq [Seq]  [Concurrent]  [Prompt] 
+        AthAlgSeq [Seq]  [Concurrent] 
+          SGInputLoader [Alg]  [n= 1]
+          TopHLTRootSeq [Seq]  [Sequential]  [Prompt] 
+            L1UnpackingSeq [Seq]  [Concurrent]  [OR] 
+              L1Decoder [Alg]  [n= 1] [unclonable] 
+            EmuTest_HLTAllStepsSequence [Seq]  [Sequential]  [Prompt] 
+              Step1_filter [Seq]  [Concurrent]  [OR] 
+                FilterStep1_on_L1MU [Alg]  [n= 1] [unclonable] 
+                FilterStep1_on_L1EM [Alg]  [n= 1] [unclonable] 
+                FilterStep1_on_L1EML1MU [Alg]  [n= 1] [unclonable] 
+              EmuTest_HLTAllStepsSequence_Step1_reco [Seq]  [Concurrent]  [OR] 
+                muStep1Seq [Seq]  [Sequential]  [Prompt] 
+                  FilterStep1_on_L1MU [Alg]  [n= 1] [unclonable] 
+                  muStep1Seq_reco [Seq]  [Concurrent]  [OR] 
+                    Step1MuHypo [Alg]  [n= 1] [unclonable] 
+                    Step1MuInputMaker [Alg]  [n= 1] [unclonable] 
+                    muMSRecAlg [Alg]  [n= 1] [unclonable] 
+                elStep1Seq [Seq]  [Sequential]  [Prompt] 
+                  FilterStep1_on_L1EM [Alg]  [n= 1] [unclonable] 
+                  elStep1Seq_reco [Seq]  [Concurrent]  [OR] 
+                    Step1ElInputMaker [Alg]  [n= 1] [unclonable] 
+                    Step1ElHypo [Alg]  [n= 1] [unclonable] 
+                    CaloClustering [Alg]  [n= 1] [unclonable] 
+                combStep1Seq [Seq]  [Sequential]  [Prompt] 
+                  FilterStep1_on_L1EML1MU [Alg]  [n= 1] [unclonable] 
+                  combStep1Seq_reco [Seq]  [Concurrent]  [OR] 
+                    Step1ElInputMaker [Alg]  [n= 1] [unclonable] 
+                    CaloClustering [Alg]  [n= 1] [unclonable] 
+                    Step1MuInputMaker [Alg]  [n= 1] [unclonable] 
+                    Step1ComboMuElHypo [Alg]  [n= 1] [unclonable] 
+                    muMSRecAlg [Alg]  [n= 1] [unclonable] 
+              TriggerSummaryStep1 [Alg]  [n= 1] [unclonable] 
+              Step2_filter [Seq]  [Concurrent]  [OR] 
+                FilterStep2_on_muStep1Seq [Alg]  [n= 1] [unclonable] 
+                FilterStep2_on_elStep1Seq [Alg]  [n= 1] [unclonable] 
+                FilterStep2_on_combStep1Seq [Alg]  [n= 1] [unclonable] 
+              EmuTest_HLTAllStepsSequence_Step2_reco [Seq]  [Concurrent]  [OR] 
+                muStep2Seq [Seq]  [Sequential]  [Prompt] 
+                  FilterStep2_on_muStep1Seq [Alg]  [n= 1] [unclonable] 
+                  muStep2Seq_reco [Seq]  [Concurrent]  [OR] 
+                    muMSRecAlg2 [Alg]  [n= 1] [unclonable] 
+                    Step2MuHypo2 [Alg]  [n= 1] [unclonable] 
+                    Step2MuInputMaker [Alg]  [n= 1] [unclonable] 
+                elStep2Seq [Seq]  [Sequential]  [Prompt] 
+                  FilterStep2_on_elStep1Seq [Alg]  [n= 1] [unclonable] 
+                  elStep2Seq_reco [Seq]  [Concurrent]  [OR] 
+                    CaloClustering2 [Alg]  [n= 1] [unclonable] 
+                    Step2ElInputMaker [Alg]  [n= 1] [unclonable] 
+                    Step2ElHypo [Alg]  [n= 1] [unclonable] 
+                combStep2Seq [Seq]  [Sequential]  [Prompt] 
+                  FilterStep2_on_combStep1Seq [Alg]  [n= 1] [unclonable] 
+                  combStep2Seq_reco [Seq]  [Concurrent]  [OR] 
+                    muMSRecAlg2 [Alg]  [n= 1] [unclonable] 
+                    CaloClustering2 [Alg]  [n= 1] [unclonable] 
+                    Step2ElInputMaker [Alg]  [n= 1] [unclonable] 
+                    Step2ComboMuElHypo [Alg]  [n= 1] [unclonable] 
+                    Step2MuInputMaker [Alg]  [n= 1] [unclonable] 
+              TriggerSummaryStep2 [Alg]  [n= 1] [unclonable] 
+        AthCondSeq [Seq]  [Concurrent]  [Prompt] 
+      AthEndSeq [Seq]  [Sequential]  [Prompt] 
+        EndIncFiringAlg [Alg]  [n= 1] [unclonable] 
+        IncidentProcAlg2 [Alg]  [n= 1] [unclonable] 
+    AthOutSeq [Seq]  [Concurrent]  [Prompt] 
+    AthRegSeq [Seq]  [Concurrent]  [Prompt] 
+
+PrecedenceSvc                                      INFO 
+===================== Data Flow Configuration ====================
+
+      ====================================
+      Data origins and destinations:
+      ====================================
+        CaloClustering2
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+CaloClustering2_Output_out' ) 
+        V
+        Step2ComboMuElHypo
+        Step2ElHypo
+      ====================================
+        Step2MuInputMaker
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step2MuInputMaker_decisions' ) 
+        V
+      ====================================
+        Step2MuInputMaker
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step2MuInputMaker_Output_out' ) 
+        V
+        muMSRecAlg2
+      ====================================
+        Step1ComboMuElHypo
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step1ComboMuElHypo_Output1_out' ) 
+        V
+      ====================================
+        L1Decoder
+        V
+        o  ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+L1MURoIs' ) 
+        V
+      ====================================
+        Step1ElInputMaker
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step1ElInputMaker_decisions' ) 
+        V
+      ====================================
+        Step2ComboMuElHypo
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step2ComboMuElHypo_Output1_out' ) 
+        V
+      ====================================
+        muMSRecAlg2
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+muMSRecAlg2_Output_out' ) 
+        V
+        Step2ComboMuElHypo
+        Step2MuHypo2
+      ====================================
+        Step1MuInputMaker
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step1MuInputMaker_Output_out' ) 
+        V
+        muMSRecAlg
+      ====================================
+        Step2ElInputMaker
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step2ElInputMaker_Output_out' ) 
+        V
+        CaloClustering2
+      ====================================
+        Step1MuInputMaker
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step1MuInputMaker_decisions' ) 
+        V
+      ====================================
+        Step2ComboMuElHypo
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step2ComboMuElHypo_Output2_out' ) 
+        V
+      ====================================
+        Step1ElInputMaker
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step1ElInputMaker_Output_out' ) 
+        V
+        CaloClustering
+      ====================================
+        muMSRecAlg
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+muMSRecAlg_Output_out' ) 
+        V
+        Step1ComboMuElHypo
+        Step1MuHypo
+      ====================================
+        Step2ElHypo
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step2ElHypo_Output_out' ) 
+        V
+      ====================================
+        L1Decoder
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+L1MU' ) 
+        V
+      ====================================
+        Step2MuHypo2
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step2MuHypo2_Output_out' ) 
+        V
+      ====================================
+        Step2ElInputMaker
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step2ElInputMaker_decisions' ) 
+        V
+      ====================================
+        TriggerSummaryStep2
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+MonitoringSummaryTriggerSummaryStep2' ) 
+        V
+      ====================================
+        L1Decoder
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+HLTChains' ) 
+        V
+        TriggerSummaryStep1
+        TriggerSummaryStep2
+      ====================================
+        Step1ComboMuElHypo
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step1ComboMuElHypo_Output2_out' ) 
+        V
+      ====================================
+        TriggerSummaryStep1
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+MonitoringSummaryTriggerSummaryStep1' ) 
+        V
+      ====================================
+        Step1ElHypo
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step1ElHypo_Output_out' ) 
+        V
+      ====================================
+        Step1MuHypo
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+Step1MuHypo_Output_out' ) 
+        V
+      ====================================
+        CaloClustering
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+CaloClustering_Output_out' ) 
+        V
+        Step1ComboMuElHypo
+        Step1ElHypo
+      ====================================
+        L1Decoder
+        V
+        o  ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+L1EMRoIs' ) 
+        V
+      ====================================
+        L1Decoder
+        V
+        o  ( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+L1EM' ) 
+        V
+      ====================================
+
+HistogramPersistencySvc                         WARNING Histograms saving not required.
+ApplicationMgr                                     INFO Application Manager Initialized successfully
+ApplicationMgr                                     INFO Application Manager Started successfully
+AthenaHiveEventLoopMgr                             INFO Starting loop on events
+AthenaHiveEventLoopMgr                  0   0      INFO   ===>>>  start of run 1    <<<===
+AthenaHiveEventLoopMgr                  0   0      INFO   ===>>>  start processing event #0, run #1 on slot 0,  0 events processed so far  <<<===
+L1Decoder.PrescalingEmulationTool       0   0     DEBUG Prescaling decision for chain HLT_g100 ID#3739492918 1
+L1Decoder.EMRoIsUnpackingTool           0   0     DEBUG Getting RoIs for event 0
+L1Decoder.EMRoIsUnpackingTool           0   0     DEBUG RoI word: 0x       0
+L1Decoder.EMRoIsUnpackingTool           0   0     DEBUG Passed Threshold EM3 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           0   0     DEBUG Passed Threshold EM7 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           0   0     DEBUG Passed Threshold EM15 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           0   0     DEBUG Passed Threshold EM20 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           0   0     DEBUG Passed Threshold EM50 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           0   0     DEBUG Passed Threshold EM100 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           0   0     DEBUG RoI word: 0x       0
+L1Decoder.EMRoIsUnpackingTool           0   0     DEBUG Passed Threshold EM3 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           0   0     DEBUG Passed Threshold EM7 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           0   0     DEBUG RoI Eta: 1 Phi: 1 RoIWord: 0
+L1Decoder.EMRoIsUnpackingTool           0   0     DEBUG RoI Eta: 1 Phi: -1.2 RoIWord: 0
+L1Decoder.MURoIsUnpackingTool           0   0     DEBUG Getting RoIs for event 0
+L1Decoder.MURoIsUnpackingTool           0   0     DEBUG RoI word: 0x       0
+L1Decoder.MURoIsUnpackingTool           0   0     DEBUG Passed Threshold MU0 enabling respective chains
+L1Decoder.MURoIsUnpackingTool           0   0     DEBUG RoI Eta: 0 Phi: 0 RoIWord: 0
+L1Decoder                               0   0     DEBUG Recording chains
+FilterStep1_on_L1MU                     0   0     DEBUG Executing FilterStep1_on_L1MU...
+FilterStep1_on_L1MU                     0   0     DEBUG Running on 1 input keys
+FilterStep1_on_L1MU                     0   0     DEBUG Checking inputHandle L1MU with 1 elements
+FilterStep1_on_L1MU                     0   0     DEBUG Input size 1
+FilterStep1_on_L1MU                     0   0     DEBUG Number of positive decisions for this input: 0
+FilterStep1_on_L1MU                     0   0     DEBUG No Input decisions requested by active chains
+FilterStep1_on_L1MU                     0   0     DEBUG Output size 0
+FilterStep1_on_L1MU                     0   0     DEBUG Recording output key FilterStep1_on_L1MU_from_L1MU_out of size 0 at index 0
+FilterStep1_on_L1MU                     0   0     DEBUG Filter rejected
+FilterStep1_on_L1EM                     0   0     DEBUG Executing FilterStep1_on_L1EM...
+FilterStep1_on_L1EM                     0   0     DEBUG Running on 1 input keys
+FilterStep1_on_L1EM                     0   0     DEBUG Checking inputHandle L1EM with 2 elements
+FilterStep1_on_L1EM                     0   0     DEBUG Input size 2
+FilterStep1_on_L1EM                     0   0     DEBUG Number of positive decisions for this input: 1
+FilterStep1_on_L1EM                     0   0     DEBUG  -- Positive decision HLT_g100 ID#3739492918
+FilterStep1_on_L1EM                     0   0     DEBUG No Input decisions requested by active chains
+FilterStep1_on_L1EM                     0   0     DEBUG Number of positive decisions for this input: 0
+FilterStep1_on_L1EM                     0   0     DEBUG No Input decisions requested by active chains
+FilterStep1_on_L1EM                     0   0     DEBUG Output size 0
+FilterStep1_on_L1EM                     0   0     DEBUG Recording output key FilterStep1_on_L1EM_from_L1EM_out of size 0 at index 0
+FilterStep1_on_L1EM                     0   0     DEBUG Filter rejected
+FilterStep1_on_L1EML1MU                 0   0     DEBUG Executing FilterStep1_on_L1EML1MU...
+FilterStep1_on_L1EML1MU                 0   0     DEBUG Running on 2 input keys
+FilterStep1_on_L1EML1MU                 0   0     DEBUG Checking inputHandle L1MU with 1 elements
+FilterStep1_on_L1EML1MU                 0   0     DEBUG Input size 1
+FilterStep1_on_L1EML1MU                 0   0     DEBUG Number of positive decisions for this input: 0
+FilterStep1_on_L1EML1MU                 0   0     DEBUG No Input decisions requested by active chains
+FilterStep1_on_L1EML1MU                 0   0     DEBUG Output size 0
+FilterStep1_on_L1EML1MU                 0   0     DEBUG Recording output key FilterStep1_on_L1EML1MU_from_L1MU_out of size 0 at index 0
+FilterStep1_on_L1EML1MU                 0   0     DEBUG Checking inputHandle L1EM with 2 elements
+FilterStep1_on_L1EML1MU                 0   0     DEBUG Input size 2
+FilterStep1_on_L1EML1MU                 0   0     DEBUG Number of positive decisions for this input: 1
+FilterStep1_on_L1EML1MU                 0   0     DEBUG  -- Positive decision HLT_g100 ID#3739492918
+FilterStep1_on_L1EML1MU                 0   0     DEBUG No Input decisions requested by active chains
+FilterStep1_on_L1EML1MU                 0   0     DEBUG Number of positive decisions for this input: 0
+FilterStep1_on_L1EML1MU                 0   0     DEBUG No Input decisions requested by active chains
+FilterStep1_on_L1EML1MU                 0   0     DEBUG Output size 0
+FilterStep1_on_L1EML1MU                 0   0     DEBUG Recording output key FilterStep1_on_L1EML1MU_from_L1EM_out of size 0 at index 1
+FilterStep1_on_L1EML1MU                 0   0     DEBUG Filter rejected
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #0, run #1 on slot 0,  1 events processed so far  <<<===
+AthenaHiveEventLoopMgr                  1   0      INFO   ===>>>  start processing event #1, run #1 on slot 0,  1 events processed so far  <<<===
+L1Decoder.PrescalingEmulationTool       1   0     DEBUG Prescaling decision for chain HLT_2g50 ID#787761180 1
+L1Decoder.PrescalingEmulationTool       1   0     DEBUG Prescaling decision for chain HLT_e20 ID#4230506138 1
+L1Decoder.EMRoIsUnpackingTool           1   0     DEBUG Getting RoIs for event 1
+L1Decoder.EMRoIsUnpackingTool           1   0     DEBUG RoI word: 0x       0
+L1Decoder.EMRoIsUnpackingTool           1   0     DEBUG Passed Threshold EM3 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           1   0     DEBUG Passed Threshold EM7 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           1   0     DEBUG Passed Threshold EM15 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           1   0     DEBUG Passed Threshold EM20 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           1   0     DEBUG Passed Threshold EM50 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           1   0     DEBUG Passed Threshold EM100 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           1   0     DEBUG RoI word: 0x       0
+L1Decoder.EMRoIsUnpackingTool           1   0     DEBUG Passed Threshold EM3 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           1   0     DEBUG Passed Threshold EM7 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           1   0     DEBUG Passed Threshold EM15 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           1   0     DEBUG Passed Threshold EM20 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           1   0     DEBUG Passed Threshold EM50 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           1   0     DEBUG RoI Eta: -0.6 Phi: 0.2 RoIWord: 0
+L1Decoder.EMRoIsUnpackingTool           1   0     DEBUG RoI Eta: 1 Phi: -1.1 RoIWord: 0
+L1Decoder.MURoIsUnpackingTool           1   0     DEBUG Getting RoIs for event 1
+L1Decoder.MURoIsUnpackingTool           1   0     DEBUG RoI word: 0x       0
+L1Decoder.MURoIsUnpackingTool           1   0     DEBUG Passed Threshold MU6 enabling respective chains
+L1Decoder.MURoIsUnpackingTool           1   0     DEBUG Passed Threshold MU8 enabling respective chains
+L1Decoder.MURoIsUnpackingTool           1   0     DEBUG RoI word: 0x       0
+L1Decoder.MURoIsUnpackingTool           1   0     DEBUG Passed Threshold MU6 enabling respective chains
+L1Decoder.MURoIsUnpackingTool           1   0     DEBUG Passed Threshold MU8 enabling respective chains
+L1Decoder.MURoIsUnpackingTool           1   0     DEBUG Passed Threshold MU10 enabling respective chains
+L1Decoder.MURoIsUnpackingTool           1   0     DEBUG RoI Eta: -1 Phi: 0.5 RoIWord: 0
+L1Decoder.MURoIsUnpackingTool           1   0     DEBUG RoI Eta: -1 Phi: 0.5 RoIWord: 0
+L1Decoder                               1   0     DEBUG Recording chains
+FilterStep1_on_L1MU                     1   0     DEBUG Executing FilterStep1_on_L1MU...
+FilterStep1_on_L1MU                     1   0     DEBUG Running on 1 input keys
+FilterStep1_on_L1MU                     1   0     DEBUG Checking inputHandle L1MU with 2 elements
+FilterStep1_on_L1MU                     1   0     DEBUG Input size 2
+FilterStep1_on_L1MU                     1   0     DEBUG Number of positive decisions for this input: 0
+FilterStep1_on_L1MU                     1   0     DEBUG No Input decisions requested by active chains
+FilterStep1_on_L1MU                     1   0     DEBUG Number of positive decisions for this input: 0
+FilterStep1_on_L1MU                     1   0     DEBUG No Input decisions requested by active chains
+FilterStep1_on_L1MU                     1   0     DEBUG Output size 0
+FilterStep1_on_L1MU                     1   0     DEBUG Recording output key FilterStep1_on_L1MU_from_L1MU_out of size 0 at index 0
+FilterStep1_on_L1MU                     1   0     DEBUG Filter rejected
+FilterStep1_on_L1EM                     1   0     DEBUG Executing FilterStep1_on_L1EM...
+FilterStep1_on_L1EM                     1   0     DEBUG Running on 1 input keys
+FilterStep1_on_L1EM                     1   0     DEBUG Checking inputHandle L1EM with 2 elements
+FilterStep1_on_L1EM                     1   0     DEBUG Input size 2
+FilterStep1_on_L1EM                     1   0     DEBUG Number of positive decisions for this input: 2
+FilterStep1_on_L1EM                     1   0     DEBUG  -- Positive decision HLT_2g50 ID#787761180
+FilterStep1_on_L1EM                     1   0     DEBUG  -- Positive decision HLT_e20 ID#4230506138
+FilterStep1_on_L1EM                     1   0     DEBUG Input satisfied at least one active chain
+FilterStep1_on_L1EM                     1   0     DEBUG Number of positive decisions for this input: 2
+FilterStep1_on_L1EM                     1   0     DEBUG  -- Positive decision HLT_2g50 ID#787761180
+FilterStep1_on_L1EM                     1   0     DEBUG  -- Positive decision HLT_e20 ID#4230506138
+FilterStep1_on_L1EM                     1   0     DEBUG Input satisfied at least one active chain
+FilterStep1_on_L1EM                     1   0     DEBUG Output size 2
+FilterStep1_on_L1EM                     1   0     DEBUG Recording output key FilterStep1_on_L1EM_from_L1EM_out of size 2 at index 0
+FilterStep1_on_L1EM                     1   0     DEBUG Filter passed
+FilterStep1_on_L1EML1MU                 1   0     DEBUG Executing FilterStep1_on_L1EML1MU...
+FilterStep1_on_L1EML1MU                 1   0     DEBUG Running on 2 input keys
+FilterStep1_on_L1EML1MU                 1   0     DEBUG Checking inputHandle L1MU with 2 elements
+FilterStep1_on_L1EML1MU                 1   0     DEBUG Input size 2
+FilterStep1_on_L1EML1MU                 1   0     DEBUG Number of positive decisions for this input: 0
+FilterStep1_on_L1EML1MU                 1   0     DEBUG No Input decisions requested by active chains
+FilterStep1_on_L1EML1MU                 1   0     DEBUG Number of positive decisions for this input: 0
+FilterStep1_on_L1EML1MU                 1   0     DEBUG No Input decisions requested by active chains
+FilterStep1_on_L1EML1MU                 1   0     DEBUG Output size 0
+FilterStep1_on_L1EML1MU                 1   0     DEBUG Recording output key FilterStep1_on_L1EML1MU_from_L1MU_out of size 0 at index 0
+FilterStep1_on_L1EML1MU                 1   0     DEBUG Checking inputHandle L1EM with 2 elements
+FilterStep1_on_L1EML1MU                 1   0     DEBUG Input size 2
+FilterStep1_on_L1EML1MU                 1   0     DEBUG Number of positive decisions for this input: 2
+FilterStep1_on_L1EML1MU                 1   0     DEBUG  -- Positive decision HLT_2g50 ID#787761180
+FilterStep1_on_L1EML1MU                 1   0     DEBUG  -- Positive decision HLT_e20 ID#4230506138
+FilterStep1_on_L1EML1MU                 1   0     DEBUG No Input decisions requested by active chains
+FilterStep1_on_L1EML1MU                 1   0     DEBUG Number of positive decisions for this input: 2
+FilterStep1_on_L1EML1MU                 1   0     DEBUG  -- Positive decision HLT_2g50 ID#787761180
+FilterStep1_on_L1EML1MU                 1   0     DEBUG  -- Positive decision HLT_e20 ID#4230506138
+FilterStep1_on_L1EML1MU                 1   0     DEBUG No Input decisions requested by active chains
+FilterStep1_on_L1EML1MU                 1   0     DEBUG Output size 0
+FilterStep1_on_L1EML1MU                 1   0     DEBUG Recording output key FilterStep1_on_L1EML1MU_from_L1EM_out of size 0 at index 1
+FilterStep1_on_L1EML1MU                 1   0     DEBUG Filter rejected
+Step1ElInputMaker                       1   0     DEBUG Executing Step1ElInputMaker...
+Step1ElInputMaker                       1   0     DEBUG number of implicit ReadHandles is 2
+Step1ElInputMaker                       1   0     DEBUG Got DecisionContainer from input FilterStep1_on_L1EM_from_L1EM_out with 2 elements
+Step1ElInputMaker                       1   0     DEBUG Found feature initialRoI:  RoIid: 0 RoIword: 0	 z: 0 (-225 - 225) eta: -0.6 (-0.7 - -0.5) phi: 0.2 (0.1 - 0.3)
+Step1ElInputMaker                       1   0     DEBUG Make new decision
+Step1ElInputMaker                       1   0     DEBUG Copy decisions from input 0 with exist flag=0 to output 0x7f7c890e41a0
+Step1ElInputMaker                       1   0     DEBUG Found feature initialRoI:  RoIid: 0 RoIword: 0	 z: 0 (-225 - 225) eta: 1 (0.9 - 1.1) phi: -1.1 (-1.2 - -1)
+Step1ElInputMaker                       1   0     DEBUG Make new decision
+Step1ElInputMaker                       1   0     DEBUG Copy decisions from input 1 with exist flag=0 to output 0x7f7c890e41a0
+Step1ElInputMaker                       1   0     DEBUG Got DecisionContainer from input FilterStep1_on_L1EML1MU_from_L1EM_out with 0 elements
+Step1ElInputMaker                       1   0     DEBUG Should find 2 obejcts and decisions
+Step1ElInputMaker                       1   0     DEBUG Produced 2 objects
+Step1ElInputMaker                       1   0     DEBUG Produced 2 decisions
+Step1ElInputMaker                       1   0     DEBUG Number of positive decisions for this input: 2
+Step1ElInputMaker                       1   0     DEBUG  --- found decision HLT_2g50 ID#787761180
+Step1ElInputMaker                       1   0     DEBUG  --- found decision HLT_e20 ID#4230506138
+Step1ElInputMaker                       1   0     DEBUG Number of positive decisions for this input: 2
+Step1ElInputMaker                       1   0     DEBUG  --- found decision HLT_2g50 ID#787761180
+Step1ElInputMaker                       1   0     DEBUG  --- found decision HLT_e20 ID#4230506138
+Step1MuInputMaker                       1   0     DEBUG Executing Step1MuInputMaker...
+Step1MuInputMaker                       1   0     DEBUG number of implicit ReadHandles is 2
+Step1MuInputMaker                       1   0     DEBUG Got DecisionContainer from input FilterStep1_on_L1MU_from_L1MU_out with 0 elements
+Step1MuInputMaker                       1   0     DEBUG Got DecisionContainer from input FilterStep1_on_L1EML1MU_from_L1MU_out with 0 elements
+Step1MuInputMaker                       1   0     DEBUG Should find 0 obejcts and decisions
+Step1MuInputMaker                       1   0     DEBUG Produced 0 objects
+Step1MuInputMaker                       1   0     DEBUG Produced 0 decisions
+muMSRecAlg                              1   0     DEBUG Executing muMSRecAlg...
+muMSRecAlg                              1   0     DEBUG Input Step1MuInputMaker_Output_out has 0 elements, scanning it
+muMSRecAlg                              1   0     DEBUG Reconstructed 0 objects
+Step1MuHypo                             1   0     DEBUG Executing Step1MuHypo...
+Step1MuHypo                             1   0     DEBUG Running with 0 implicit ReadHandles for previous decisions
+Step1MuHypo                             1   0     DEBUG and with 0 reco inputs
+Step1MuHypo                             1   0     DEBUG Exiting with 0 decisions
+CaloClustering                          1   0     DEBUG Executing CaloClustering...
+CaloClustering                          1   0     DEBUG Input Step1ElInputMaker_Output_out has 2 elements, scanning it
+CaloClustering                          1   0     DEBUG RoI RoIid: 0 RoIword: 0	 z: 0 (-225 - 225) eta: -0.6 (-0.7 - -0.5) phi: 0.2 (0.1 - 0.3)
+CaloClustering                          1   0     DEBUG Reconstructed object
+CaloClustering                          1   0     DEBUG   eta : 0.5
+CaloClustering                          1   0     DEBUG   phi : 0
+CaloClustering                          1   0     DEBUG   et : 120000
+CaloClustering                          1   0     DEBUG RoI RoIid: 0 RoIword: 0	 z: 0 (-225 - 225) eta: 1 (0.9 - 1.1) phi: -1.1 (-1.2 - -1)
+CaloClustering                          1   0     DEBUG Reconstructed object
+CaloClustering                          1   0     DEBUG   eta : 1
+CaloClustering                          1   0     DEBUG   phi : -1.2
+CaloClustering                          1   0     DEBUG   et : 65000
+CaloClustering                          1   0     DEBUG Reconstructed 2 objects
+Step1ElHypo                             1   0     DEBUG Executing Step1ElHypo...
+Step1ElHypo                             1   0     DEBUG Running with 2 implicit ReadHandles for previous decisions
+Step1ElHypo                             1   0     DEBUG and with 2 reco inputs
+Step1ElHypo.step1e20                    1   0     DEBUG Making new decisions Step1ElHypo.step1e20
+Step1ElHypo.step1e20                    1   0     DEBUG Number of previous decisions for input 0= 2
+Step1ElHypo.step1e20                    1   0     DEBUG  -- found decision HLT_2g50 ID#787761180
+Step1ElHypo.step1e20                    1   0     DEBUG  -- found decision HLT_e20 ID#4230506138
+Step1ElHypo.step1e20                    1   0     DEBUG   threshold 20000 passed by value: 120000
+Step1ElHypo.step1e20                    1   0     DEBUG Number of previous decisions for input 1= 2
+Step1ElHypo.step1e20                    1   0     DEBUG  -- found decision HLT_2g50 ID#787761180
+Step1ElHypo.step1e20                    1   0     DEBUG  -- found decision HLT_e20 ID#4230506138
+Step1ElHypo.step1e20                    1   0     DEBUG   threshold 20000 passed by value: 65000
+Step1ElHypo                             1   0     DEBUG Exiting with 2 decisions
+Step1ElHypo                             1   0     DEBUG Number of positive decisions for this input: 1
+Step1ElHypo                             1   0     DEBUG  --- found new decision HLT_e20 ID#4230506138
+Step1ElHypo                             1   0     DEBUG Number of positive decisions for this input: 1
+Step1ElHypo                             1   0     DEBUG  --- found new decision HLT_e20 ID#4230506138
+Step1ComboMuElHypo                      1   0     DEBUG Executing Step1ComboMuElHypo...
+Step1ComboMuElHypo                      1   0     DEBUG Running with 0 implicit Step1MuInputMaker_decisions for previous decisions of input 1
+Step1ComboMuElHypo                      1   0     DEBUG Running with 2 implicit Step1ElInputMaker_decisions for previous decisions of input 2
+Step1ComboMuElHypo                      1   0     DEBUG and with 0 reco1 inputs, and 2 reco2 inputs
+Step1ComboMuElHypo                      1   0     DEBUG Found  0 rois from input 1 
+Step1ComboMuElHypo                      1   0     DEBUG Found  2 rois from input 2 
+Step1ComboMuElHypo                      1   0     DEBUG No combined hypo found, Do not go to the tool since n.dec1=0 and n.dec2=2 
+TriggerSummaryStep1                     1   0     DEBUG Executing TriggerSummaryStep1...
+TriggerSummaryStep1                     1   0     DEBUG Found 0 Decisions for Step1MuHypo_Output_out
+TriggerSummaryStep1                     1   0     DEBUG Found 2 Decisions for Step1ElHypo_Output_out
+TriggerSummaryStep1                     1   0     DEBUG Found 0 Decisions for Step1ComboMuElHypo_Output1_out
+TriggerSummaryStep1                     1   0     DEBUG Found 2 Decisions for Step1ComboMuElHypo_Output2_out
+TriggerSummaryStep1                     1   0     DEBUG In summary 1 chains passed:
+TriggerSummaryStep1                     1   0     DEBUG  +++ HLT_e20 ID#4230506138
+FilterStep2_on_muStep1Seq               1   0     DEBUG Executing FilterStep2_on_muStep1Seq...
+FilterStep2_on_muStep1Seq               1   0     DEBUG Running on 1 input keys
+FilterStep2_on_muStep1Seq               1   0     DEBUG Checking inputHandle Step1MuHypo_Output_out with 0 elements
+FilterStep2_on_muStep1Seq               1   0     DEBUG Input size 0
+FilterStep2_on_muStep1Seq               1   0     DEBUG Output size 0
+FilterStep2_on_muStep1Seq               1   0     DEBUG Recording output key FilterStep2_on_muStep1Seq_from_Step1MuHypo_Output_out_out of size 0 at index 0
+FilterStep2_on_muStep1Seq               1   0     DEBUG Filter rejected
+FilterStep2_on_elStep1Seq               1   0     DEBUG Executing FilterStep2_on_elStep1Seq...
+FilterStep2_on_elStep1Seq               1   0     DEBUG Running on 1 input keys
+FilterStep2_on_elStep1Seq               1   0     DEBUG Checking inputHandle Step1ElHypo_Output_out with 2 elements
+FilterStep2_on_elStep1Seq               1   0     DEBUG Input size 2
+FilterStep2_on_elStep1Seq               1   0     DEBUG Number of positive decisions for this input: 1
+FilterStep2_on_elStep1Seq               1   0     DEBUG  -- Positive decision HLT_e20 ID#4230506138
+FilterStep2_on_elStep1Seq               1   0     DEBUG Input satisfied at least one active chain
+FilterStep2_on_elStep1Seq               1   0     DEBUG Number of positive decisions for this input: 1
+FilterStep2_on_elStep1Seq               1   0     DEBUG  -- Positive decision HLT_e20 ID#4230506138
+FilterStep2_on_elStep1Seq               1   0     DEBUG Input satisfied at least one active chain
+FilterStep2_on_elStep1Seq               1   0     DEBUG Output size 2
+FilterStep2_on_elStep1Seq               1   0     DEBUG Recording output key FilterStep2_on_elStep1Seq_from_Step1ElHypo_Output_out_out of size 2 at index 0
+FilterStep2_on_elStep1Seq               1   0     DEBUG Filter passed
+FilterStep2_on_combStep1Seq             1   0     DEBUG Executing FilterStep2_on_combStep1Seq...
+FilterStep2_on_combStep1Seq             1   0     DEBUG Running on 2 input keys
+FilterStep2_on_combStep1Seq             1   0     DEBUG Checking inputHandle Step1ComboMuElHypo_Output1_out with 0 elements
+FilterStep2_on_combStep1Seq             1   0     DEBUG Input size 0
+FilterStep2_on_combStep1Seq             1   0     DEBUG Output size 0
+FilterStep2_on_combStep1Seq             1   0     DEBUG Recording output key FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output1_out_out of size 0 at index 0
+FilterStep2_on_combStep1Seq             1   0     DEBUG Checking inputHandle Step1ComboMuElHypo_Output2_out with 2 elements
+FilterStep2_on_combStep1Seq             1   0     DEBUG Input size 2
+FilterStep2_on_combStep1Seq             1   0     DEBUG Number of positive decisions for this input: 0
+FilterStep2_on_combStep1Seq             1   0     DEBUG No Input decisions requested by active chains
+FilterStep2_on_combStep1Seq             1   0     DEBUG Number of positive decisions for this input: 0
+FilterStep2_on_combStep1Seq             1   0     DEBUG No Input decisions requested by active chains
+FilterStep2_on_combStep1Seq             1   0     DEBUG Output size 0
+FilterStep2_on_combStep1Seq             1   0     DEBUG Recording output key FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output2_out_out of size 0 at index 1
+FilterStep2_on_combStep1Seq             1   0     DEBUG Filter rejected
+Step2ElInputMaker                       1   0     DEBUG Executing Step2ElInputMaker...
+Step2ElInputMaker                       1   0     DEBUG number of implicit ReadHandles is 2
+Step2ElInputMaker                       1   0     DEBUG Got DecisionContainer from input FilterStep2_on_elStep1Seq_from_Step1ElHypo_Output_out_out with 2 elements
+Step2ElInputMaker                       1   0     DEBUG Found feature initialRoI:  RoIid: 0 RoIword: 0	 z: 0 (-225 - 225) eta: -0.6 (-0.7 - -0.5) phi: 0.2 (0.1 - 0.3)
+Step2ElInputMaker                       1   0     DEBUG Make new decision
+Step2ElInputMaker                       1   0     DEBUG Copy decisions from input 0 with exist flag=0 to output 0x7f7c890e41a0
+Step2ElInputMaker                       1   0     DEBUG Found feature initialRoI:  RoIid: 0 RoIword: 0	 z: 0 (-225 - 225) eta: 1 (0.9 - 1.1) phi: -1.1 (-1.2 - -1)
+Step2ElInputMaker                       1   0     DEBUG Make new decision
+Step2ElInputMaker                       1   0     DEBUG Copy decisions from input 1 with exist flag=0 to output 0x7f7c890e41a0
+Step2ElInputMaker                       1   0     DEBUG Got DecisionContainer from input FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output2_out_out with 0 elements
+Step2ElInputMaker                       1   0     DEBUG Should find 2 obejcts and decisions
+Step2ElInputMaker                       1   0     DEBUG Produced 2 objects
+Step2ElInputMaker                       1   0     DEBUG Produced 2 decisions
+Step2ElInputMaker                       1   0     DEBUG Number of positive decisions for this input: 1
+Step2ElInputMaker                       1   0     DEBUG  --- found decision HLT_e20 ID#4230506138
+Step2ElInputMaker                       1   0     DEBUG Number of positive decisions for this input: 1
+Step2ElInputMaker                       1   0     DEBUG  --- found decision HLT_e20 ID#4230506138
+Step2MuInputMaker                       1   0     DEBUG Executing Step2MuInputMaker...
+Step2MuInputMaker                       1   0     DEBUG number of implicit ReadHandles is 2
+Step2MuInputMaker                       1   0     DEBUG Got DecisionContainer from input FilterStep2_on_muStep1Seq_from_Step1MuHypo_Output_out_out with 0 elements
+Step2MuInputMaker                       1   0     DEBUG Got DecisionContainer from input FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output1_out_out with 0 elements
+Step2MuInputMaker                       1   0     DEBUG Should find 0 obejcts and decisions
+Step2MuInputMaker                       1   0     DEBUG Produced 0 objects
+Step2MuInputMaker                       1   0     DEBUG Produced 0 decisions
+muMSRecAlg2                             1   0     DEBUG Executing muMSRecAlg2...
+muMSRecAlg2                             1   0     DEBUG Input Step2MuInputMaker_Output_out has 0 elements, scanning it
+muMSRecAlg2                             1   0     DEBUG Reconstructed 0 objects
+Step2MuHypo2                            1   0     DEBUG Executing Step2MuHypo2...
+Step2MuHypo2                            1   0     DEBUG Running with 0 implicit ReadHandles for previous decisions
+Step2MuHypo2                            1   0     DEBUG and with 0 reco inputs
+Step2MuHypo2                            1   0     DEBUG Exiting with 0 decisions
+CaloClustering2                         1   0     DEBUG Executing CaloClustering2...
+CaloClustering2                         1   0     DEBUG Input Step2ElInputMaker_Output_out has 2 elements, scanning it
+CaloClustering2                         1   0     DEBUG RoI RoIid: 0 RoIword: 0	 z: 0 (-225 - 225) eta: -0.6 (-0.7 - -0.5) phi: 0.2 (0.1 - 0.3)
+CaloClustering2                         1   0     DEBUG Reconstructed object
+CaloClustering2                         1   0     DEBUG   eta : 0.5
+CaloClustering2                         1   0     DEBUG   phi : 0
+CaloClustering2                         1   0     DEBUG   et : 120000
+CaloClustering2                         1   0     DEBUG RoI RoIid: 0 RoIword: 0	 z: 0 (-225 - 225) eta: 1 (0.9 - 1.1) phi: -1.1 (-1.2 - -1)
+CaloClustering2                         1   0     DEBUG Reconstructed object
+CaloClustering2                         1   0     DEBUG   eta : 1
+CaloClustering2                         1   0     DEBUG   phi : -1.2
+CaloClustering2                         1   0     DEBUG   et : 65000
+CaloClustering2                         1   0     DEBUG Reconstructed 2 objects
+Step2ElHypo                             1   0     DEBUG Executing Step2ElHypo...
+Step2ElHypo                             1   0     DEBUG Running with 2 implicit ReadHandles for previous decisions
+Step2ElHypo                             1   0     DEBUG and with 2 reco inputs
+Step2ElHypo.step2e20                    1   0     DEBUG Making new decisions Step2ElHypo.step2e20
+Step2ElHypo.step2e20                    1   0     DEBUG Number of previous decisions for input 0= 1
+Step2ElHypo.step2e20                    1   0     DEBUG  -- found decision HLT_e20 ID#4230506138
+Step2ElHypo.step2e20                    1   0     DEBUG   threshold 20000 passed by value: 120000
+Step2ElHypo.step2e20                    1   0     DEBUG Number of previous decisions for input 1= 1
+Step2ElHypo.step2e20                    1   0     DEBUG  -- found decision HLT_e20 ID#4230506138
+Step2ElHypo.step2e20                    1   0     DEBUG   threshold 20000 passed by value: 65000
+Step2ElHypo                             1   0     DEBUG Exiting with 2 decisions
+Step2ElHypo                             1   0     DEBUG Number of positive decisions for this input: 1
+Step2ElHypo                             1   0     DEBUG  --- found new decision HLT_e20 ID#4230506138
+Step2ElHypo                             1   0     DEBUG Number of positive decisions for this input: 1
+Step2ElHypo                             1   0     DEBUG  --- found new decision HLT_e20 ID#4230506138
+Step2ComboMuElHypo                      1   0     DEBUG Executing Step2ComboMuElHypo...
+Step2ComboMuElHypo                      1   0     DEBUG Running with 0 implicit Step2MuInputMaker_decisions for previous decisions of input 1
+Step2ComboMuElHypo                      1   0     DEBUG Running with 2 implicit Step2ElInputMaker_decisions for previous decisions of input 2
+Step2ComboMuElHypo                      1   0     DEBUG and with 0 reco1 inputs, and 2 reco2 inputs
+Step2ComboMuElHypo                      1   0     DEBUG Found  0 rois from input 1 
+Step2ComboMuElHypo                      1   0     DEBUG Found  2 rois from input 2 
+Step2ComboMuElHypo                      1   0     DEBUG No combined hypo found, Do not go to the tool since n.dec1=0 and n.dec2=2 
+TriggerSummaryStep2                     1   0     DEBUG Executing TriggerSummaryStep2...
+TriggerSummaryStep2                     1   0     DEBUG Found 0 Decisions for Step2MuHypo2_Output_out
+TriggerSummaryStep2                     1   0     DEBUG Found 2 Decisions for Step2ElHypo_Output_out
+TriggerSummaryStep2                     1   0     DEBUG Found 0 Decisions for Step2ComboMuElHypo_Output1_out
+TriggerSummaryStep2                     1   0     DEBUG Found 2 Decisions for Step2ComboMuElHypo_Output2_out
+TriggerSummaryStep2                     1   0     DEBUG In summary 1 chains passed:
+TriggerSummaryStep2                     1   0     DEBUG  +++ HLT_e20 ID#4230506138
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #1, run #1 on slot 0,  2 events processed so far  <<<===
+AthenaHiveEventLoopMgr                  2   0      INFO   ===>>>  start processing event #2, run #1 on slot 0,  2 events processed so far  <<<===
+L1Decoder.PrescalingEmulationTool       2   0     DEBUG Prescaling decision for chain HLT_2mu8 ID#1307018918 1
+L1Decoder.PrescalingEmulationTool       2   0     DEBUG Prescaling decision for chain HLT_mu8 ID#3370546555 1
+L1Decoder.PrescalingEmulationTool       2   0     DEBUG Prescaling decision for chain HLT_mu8_e8 ID#3385806166 1
+L1Decoder.PrescalingEmulationTool       2   0     DEBUG Prescaling decision for chain HLT_mu20 ID#3964288416 1
+L1Decoder.EMRoIsUnpackingTool           2   0     DEBUG Getting RoIs for event 2
+L1Decoder.EMRoIsUnpackingTool           2   0     DEBUG RoI word: 0x       0
+L1Decoder.EMRoIsUnpackingTool           2   0     DEBUG Passed Threshold EM3 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           2   0     DEBUG Passed Threshold EM7 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           2   0     DEBUG Passed Threshold EM7 enabling respective chains
+L1Decoder.EMRoIsUnpackingTool           2   0     DEBUG RoI Eta: -0.6 Phi: 1.5 RoIWord: 0
+L1Decoder.MURoIsUnpackingTool           2   0     DEBUG Getting RoIs for event 2
+L1Decoder.MURoIsUnpackingTool           2   0     DEBUG RoI word: 0x       0
+L1Decoder.MURoIsUnpackingTool           2   0     DEBUG Passed Threshold MU6 enabling respective chains
+L1Decoder.MURoIsUnpackingTool           2   0     DEBUG Passed Threshold MU8 enabling respective chains
+L1Decoder.MURoIsUnpackingTool           2   0     DEBUG RoI Eta: -1.5 Phi: -0.1 RoIWord: 0
+L1Decoder                               2   0     DEBUG Recording chains
+FilterStep1_on_L1MU                     2   0     DEBUG Executing FilterStep1_on_L1MU...
+FilterStep1_on_L1MU                     2   0     DEBUG Running on 1 input keys
+FilterStep1_on_L1MU                     2   0     DEBUG Checking inputHandle L1MU with 1 elements
+FilterStep1_on_L1MU                     2   0     DEBUG Input size 1
+FilterStep1_on_L1MU                     2   0     DEBUG Number of positive decisions for this input: 3
+FilterStep1_on_L1MU                     2   0     DEBUG  -- Positive decision HLT_2mu8 ID#1307018918
+FilterStep1_on_L1MU                     2   0     DEBUG  -- Positive decision HLT_mu8 ID#3370546555
+FilterStep1_on_L1MU                     2   0     DEBUG  -- Positive decision HLT_mu8_e8 ID#3385806166
+FilterStep1_on_L1MU                     2   0     DEBUG Input satisfied at least one active chain
+FilterStep1_on_L1MU                     2   0     DEBUG Output size 1
+FilterStep1_on_L1MU                     2   0     DEBUG Recording output key FilterStep1_on_L1MU_from_L1MU_out of size 1 at index 0
+FilterStep1_on_L1MU                     2   0     DEBUG Filter passed
+FilterStep1_on_L1EM                     2   0     DEBUG Executing FilterStep1_on_L1EM...
+FilterStep1_on_L1EM                     2   0     DEBUG Running on 1 input keys
+FilterStep1_on_L1EM                     2   0     DEBUG Checking inputHandle L1EM with 1 elements
+FilterStep1_on_L1EM                     2   0     DEBUG Input size 1
+FilterStep1_on_L1EM                     2   0     DEBUG Number of positive decisions for this input: 1
+FilterStep1_on_L1EM                     2   0     DEBUG  -- Positive decision HLT_mu8_e8 ID#3385806166
+FilterStep1_on_L1EM                     2   0     DEBUG No Input decisions requested by active chains
+FilterStep1_on_L1EM                     2   0     DEBUG Output size 0
+FilterStep1_on_L1EM                     2   0     DEBUG Recording output key FilterStep1_on_L1EM_from_L1EM_out of size 0 at index 0
+FilterStep1_on_L1EM                     2   0     DEBUG Filter rejected
+FilterStep1_on_L1EML1MU                 2   0     DEBUG Executing FilterStep1_on_L1EML1MU...
+FilterStep1_on_L1EML1MU                 2   0     DEBUG Running on 2 input keys
+FilterStep1_on_L1EML1MU                 2   0     DEBUG Checking inputHandle L1MU with 1 elements
+FilterStep1_on_L1EML1MU                 2   0     DEBUG Input size 1
+FilterStep1_on_L1EML1MU                 2   0     DEBUG Number of positive decisions for this input: 3
+FilterStep1_on_L1EML1MU                 2   0     DEBUG  -- Positive decision HLT_2mu8 ID#1307018918
+FilterStep1_on_L1EML1MU                 2   0     DEBUG  -- Positive decision HLT_mu8 ID#3370546555
+FilterStep1_on_L1EML1MU                 2   0     DEBUG  -- Positive decision HLT_mu8_e8 ID#3385806166
+FilterStep1_on_L1EML1MU                 2   0     DEBUG Input satisfied at least one active chain
+FilterStep1_on_L1EML1MU                 2   0     DEBUG Output size 1
+FilterStep1_on_L1EML1MU                 2   0     DEBUG Recording output key FilterStep1_on_L1EML1MU_from_L1MU_out of size 1 at index 0
+FilterStep1_on_L1EML1MU                 2   0     DEBUG Checking inputHandle L1EM with 1 elements
+FilterStep1_on_L1EML1MU                 2   0     DEBUG Input size 1
+FilterStep1_on_L1EML1MU                 2   0     DEBUG Number of positive decisions for this input: 1
+FilterStep1_on_L1EML1MU                 2   0     DEBUG  -- Positive decision HLT_mu8_e8 ID#3385806166
+FilterStep1_on_L1EML1MU                 2   0     DEBUG Input satisfied at least one active chain
+FilterStep1_on_L1EML1MU                 2   0     DEBUG Output size 1
+FilterStep1_on_L1EML1MU                 2   0     DEBUG Recording output key FilterStep1_on_L1EML1MU_from_L1EM_out of size 1 at index 1
+FilterStep1_on_L1EML1MU                 2   0     DEBUG Filter passed
+Step1MuInputMaker                       2   0     DEBUG Executing Step1MuInputMaker...
+Step1MuInputMaker                       2   0     DEBUG number of implicit ReadHandles is 2
+Step1MuInputMaker                       2   0     DEBUG Got DecisionContainer from input FilterStep1_on_L1MU_from_L1MU_out with 1 elements
+Step1MuInputMaker                       2   0     DEBUG Found feature initialRoI:  RoIid: 0 RoIword: 0	 z: 0 (-225 - 225) eta: -1.5 (-1.6 - -1.4) phi: -0.1 (-0.2 - 1.49012e-09)
+Step1MuInputMaker                       2   0     DEBUG Make new decision
+Step1MuInputMaker                       2   0     DEBUG Copy decisions from input 0 with exist flag=0 to output 0x7f7c890e41a0
+Step1MuInputMaker                       2   0     DEBUG Got DecisionContainer from input FilterStep1_on_L1EML1MU_from_L1MU_out with 1 elements
+Step1MuInputMaker                       2   0     DEBUG Found feature initialRoI:  RoIid: 0 RoIword: 0	 z: 0 (-225 - 225) eta: -1.5 (-1.6 - -1.4) phi: -0.1 (-0.2 - 1.49012e-09)
+Step1MuInputMaker                       2   0     DEBUG Copy decisions from input 0 with exist flag=1 to output 0x7f7c890e41a0
+Step1MuInputMaker                       2   0     DEBUG Should find 1 obejcts and decisions
+Step1MuInputMaker                       2   0     DEBUG Produced 1 objects
+Step1MuInputMaker                       2   0     DEBUG Produced 1 decisions
+Step1MuInputMaker                       2   0     DEBUG Number of positive decisions for this input: 3
+Step1MuInputMaker                       2   0     DEBUG  --- found decision HLT_2mu8 ID#1307018918
+Step1MuInputMaker                       2   0     DEBUG  --- found decision HLT_mu8 ID#3370546555
+Step1MuInputMaker                       2   0     DEBUG  --- found decision HLT_mu8_e8 ID#3385806166
+muMSRecAlg                              2   0     DEBUG Executing muMSRecAlg...
+muMSRecAlg                              2   0     DEBUG Input Step1MuInputMaker_Output_out has 1 elements, scanning it
+muMSRecAlg                              2   0     DEBUG RoI RoIid: 0 RoIword: 0	 z: 0 (-225 - 225) eta: -1.5 (-1.6 - -1.4) phi: -0.1 (-0.2 - 1.49012e-09)
+muMSRecAlg                              2   0     DEBUG Reconstructed object
+muMSRecAlg                              2   0     DEBUG   eta : -1.7
+muMSRecAlg                              2   0     DEBUG   phi : -0.2
+muMSRecAlg                              2   0     DEBUG   pt : 9500
+muMSRecAlg                              2   0     DEBUG Reconstructed 1 objects
+Step1MuHypo                             2   0     DEBUG Executing Step1MuHypo...
+Step1MuHypo                             2   0     DEBUG Running with 1 implicit ReadHandles for previous decisions
+Step1MuHypo                             2   0     DEBUG and with 1 reco inputs
+Step1MuHypo.step1mu20                   2   0     DEBUG Making new decisions Step1MuHypo.step1mu20
+Step1MuHypo.step1mu20                   2   0     DEBUG Number of previous decisions for input 0= 3
+Step1MuHypo.step1mu20                   2   0     DEBUG  -- found decision HLT_2mu8 ID#1307018918
+Step1MuHypo.step1mu20                   2   0     DEBUG  -- found decision HLT_mu8 ID#3370546555
+Step1MuHypo.step1mu20                   2   0     DEBUG  -- found decision HLT_mu8_e8 ID#3385806166
+Step1MuHypo.step1mu20                   2   0     DEBUG No Input decisions requested by active chains
+Step1MuHypo.step1mu20                   2   0     DEBUG Configured to require chain HLT_mu20 ID#3964288416
+Step1MuHypo.step1mu8                    2   0     DEBUG Making new decisions Step1MuHypo.step1mu8
+Step1MuHypo.step1mu8                    2   0     DEBUG Number of previous decisions for input 0= 3
+Step1MuHypo.step1mu8                    2   0     DEBUG  -- found decision HLT_2mu8 ID#1307018918
+Step1MuHypo.step1mu8                    2   0     DEBUG  -- found decision HLT_mu8 ID#3370546555
+Step1MuHypo.step1mu8                    2   0     DEBUG  -- found decision HLT_mu8_e8 ID#3385806166
+Step1MuHypo.step1mu8                    2   0     DEBUG   threshold 8000 passed by value: 9500
+Step1MuHypo                             2   0     DEBUG Exiting with 1 decisions
+Step1MuHypo                             2   0     DEBUG Number of positive decisions for this input: 1
+Step1MuHypo                             2   0     DEBUG  --- found new decision HLT_mu8 ID#3370546555
+Step1ElInputMaker                       2   0     DEBUG Executing Step1ElInputMaker...
+Step1ElInputMaker                       2   0     DEBUG number of implicit ReadHandles is 2
+Step1ElInputMaker                       2   0     DEBUG Got DecisionContainer from input FilterStep1_on_L1EM_from_L1EM_out with 0 elements
+Step1ElInputMaker                       2   0     DEBUG Got DecisionContainer from input FilterStep1_on_L1EML1MU_from_L1EM_out with 1 elements
+Step1ElInputMaker                       2   0     DEBUG Found feature initialRoI:  RoIid: 0 RoIword: 0	 z: 0 (-225 - 225) eta: -0.6 (-0.7 - -0.5) phi: 1.5 (1.4 - 1.6)
+Step1ElInputMaker                       2   0     DEBUG Make new decision
+Step1ElInputMaker                       2   0     DEBUG Copy decisions from input 0 with exist flag=0 to output 0x7f7c890e41a0
+Step1ElInputMaker                       2   0     DEBUG Should find 1 obejcts and decisions
+Step1ElInputMaker                       2   0     DEBUG Produced 1 objects
+Step1ElInputMaker                       2   0     DEBUG Produced 1 decisions
+Step1ElInputMaker                       2   0     DEBUG Number of positive decisions for this input: 1
+Step1ElInputMaker                       2   0     DEBUG  --- found decision HLT_mu8_e8 ID#3385806166
+CaloClustering                          2   0     DEBUG Executing CaloClustering...
+CaloClustering                          2   0     DEBUG Input Step1ElInputMaker_Output_out has 1 elements, scanning it
+CaloClustering                          2   0     DEBUG RoI RoIid: 0 RoIword: 0	 z: 0 (-225 - 225) eta: -0.6 (-0.7 - -0.5) phi: 1.5 (1.4 - 1.6)
+CaloClustering                          2   0     DEBUG Reconstructed object
+CaloClustering                          2   0     DEBUG   eta : -0.6
+CaloClustering                          2   0     DEBUG   phi : 1.7
+CaloClustering                          2   0     DEBUG   et : 9000
+CaloClustering                          2   0     DEBUG Reconstructed 1 objects
+Step1ElHypo                             2   0     DEBUG Executing Step1ElHypo...
+Step1ElHypo                             2   0     DEBUG Running with 1 implicit ReadHandles for previous decisions
+Step1ElHypo                             2   0     DEBUG and with 1 reco inputs
+Step1ElHypo.step1e20                    2   0     DEBUG Making new decisions Step1ElHypo.step1e20
+Step1ElHypo.step1e20                    2   0     DEBUG Number of previous decisions for input 0= 1
+Step1ElHypo.step1e20                    2   0     DEBUG  -- found decision HLT_mu8_e8 ID#3385806166
+Step1ElHypo.step1e20                    2   0     DEBUG No Input decisions requested by active chains
+Step1ElHypo.step1e20                    2   0     DEBUG Configured to require chain HLT_e20 ID#4230506138
+Step1ElHypo                             2   0     DEBUG Exiting with 1 decisions
+Step1ElHypo                             2   0     DEBUG Number of positive decisions for this input: 0
+Step1ComboMuElHypo                      2   0     DEBUG Executing Step1ComboMuElHypo...
+Step1ComboMuElHypo                      2   0     DEBUG Running with 1 implicit Step1MuInputMaker_decisions for previous decisions of input 1
+Step1ComboMuElHypo                      2   0     DEBUG Running with 1 implicit Step1ElInputMaker_decisions for previous decisions of input 2
+Step1ComboMuElHypo                      2   0     DEBUG and with 1 reco1 inputs, and 1 reco2 inputs
+Step1ComboMuElHypo                      2   0     DEBUG Found  1 rois from input 1 
+Step1ComboMuElHypo                      2   0     DEBUG Found  1 rois from input 2 
+Step1ComboMuElHypo                      2   0     DEBUG Go to the tool with n.dec1=1 and n.dec2=1 
+Step1ComboMuElHypo                      2   0     DEBUG Number of previous decisions for input1: 3
+Step1ComboMuElHypo                      2   0     DEBUG  -- found decision HLT_2mu8 ID#1307018918
+Step1ComboMuElHypo                      2   0     DEBUG  -- found decision HLT_mu8 ID#3370546555
+Step1ComboMuElHypo                      2   0     DEBUG  -- found decision HLT_mu8_e8 ID#3385806166
+Step1ComboMuElHypo                      2   0     DEBUG Found HLT_mu8_e8 ID#3385806166 to candidate 0 in input1
+Step1ComboMuElHypo                      2   0     DEBUG Number of previous decisions for input2: 1
+Step1ComboMuElHypo                      2   0     DEBUG  -- found decision HLT_mu8_e8 ID#3385806166
+Step1ComboMuElHypo                      2   0     DEBUG Found HLT_mu8_e8 ID#3385806166 to both candidates for 0 in input2
+Step1ComboMuElHypo                      2   0     DEBUG Found good combined candidate
+Step1ComboMuElHypo                      2   0     DEBUG Prop1=9500
+Step1ComboMuElHypo                      2   0     DEBUG Prop2=9000
+Step1ComboMuElHypo                      2   0     DEBUG Adding HLT_mu8_e8 ID#3385806166 to both candaites
+TriggerSummaryStep1                     2   0     DEBUG Executing TriggerSummaryStep1...
+TriggerSummaryStep1                     2   0     DEBUG Found 1 Decisions for Step1MuHypo_Output_out
+TriggerSummaryStep1                     2   0     DEBUG Found 1 Decisions for Step1ElHypo_Output_out
+TriggerSummaryStep1                     2   0     DEBUG Found 1 Decisions for Step1ComboMuElHypo_Output1_out
+TriggerSummaryStep1                     2   0     DEBUG Found 1 Decisions for Step1ComboMuElHypo_Output2_out
+TriggerSummaryStep1                     2   0     DEBUG In summary 2 chains passed:
+TriggerSummaryStep1                     2   0     DEBUG  +++ HLT_mu8 ID#3370546555
+TriggerSummaryStep1                     2   0     DEBUG  +++ HLT_mu8_e8 ID#3385806166
+FilterStep2_on_muStep1Seq               2   0     DEBUG Executing FilterStep2_on_muStep1Seq...
+FilterStep2_on_muStep1Seq               2   0     DEBUG Running on 1 input keys
+FilterStep2_on_muStep1Seq               2   0     DEBUG Checking inputHandle Step1MuHypo_Output_out with 1 elements
+FilterStep2_on_muStep1Seq               2   0     DEBUG Input size 1
+FilterStep2_on_muStep1Seq               2   0     DEBUG Number of positive decisions for this input: 1
+FilterStep2_on_muStep1Seq               2   0     DEBUG  -- Positive decision HLT_mu8 ID#3370546555
+FilterStep2_on_muStep1Seq               2   0     DEBUG Input satisfied at least one active chain
+FilterStep2_on_muStep1Seq               2   0     DEBUG Output size 1
+FilterStep2_on_muStep1Seq               2   0     DEBUG Recording output key FilterStep2_on_muStep1Seq_from_Step1MuHypo_Output_out_out of size 1 at index 0
+FilterStep2_on_muStep1Seq               2   0     DEBUG Filter passed
+FilterStep2_on_elStep1Seq               2   0     DEBUG Executing FilterStep2_on_elStep1Seq...
+FilterStep2_on_elStep1Seq               2   0     DEBUG Running on 1 input keys
+FilterStep2_on_elStep1Seq               2   0     DEBUG Checking inputHandle Step1ElHypo_Output_out with 1 elements
+FilterStep2_on_elStep1Seq               2   0     DEBUG Input size 1
+FilterStep2_on_elStep1Seq               2   0     DEBUG Number of positive decisions for this input: 0
+FilterStep2_on_elStep1Seq               2   0     DEBUG No Input decisions requested by active chains
+FilterStep2_on_elStep1Seq               2   0     DEBUG Output size 0
+FilterStep2_on_elStep1Seq               2   0     DEBUG Recording output key FilterStep2_on_elStep1Seq_from_Step1ElHypo_Output_out_out of size 0 at index 0
+FilterStep2_on_elStep1Seq               2   0     DEBUG Filter rejected
+FilterStep2_on_combStep1Seq             2   0     DEBUG Executing FilterStep2_on_combStep1Seq...
+FilterStep2_on_combStep1Seq             2   0     DEBUG Running on 2 input keys
+FilterStep2_on_combStep1Seq             2   0     DEBUG Checking inputHandle Step1ComboMuElHypo_Output1_out with 1 elements
+FilterStep2_on_combStep1Seq             2   0     DEBUG Input size 1
+FilterStep2_on_combStep1Seq             2   0     DEBUG Number of positive decisions for this input: 1
+FilterStep2_on_combStep1Seq             2   0     DEBUG  -- Positive decision HLT_mu8_e8 ID#3385806166
+FilterStep2_on_combStep1Seq             2   0     DEBUG Input satisfied at least one active chain
+FilterStep2_on_combStep1Seq             2   0     DEBUG Output size 1
+FilterStep2_on_combStep1Seq             2   0     DEBUG Recording output key FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output1_out_out of size 1 at index 0
+FilterStep2_on_combStep1Seq             2   0     DEBUG Checking inputHandle Step1ComboMuElHypo_Output2_out with 1 elements
+FilterStep2_on_combStep1Seq             2   0     DEBUG Input size 1
+FilterStep2_on_combStep1Seq             2   0     DEBUG Number of positive decisions for this input: 1
+FilterStep2_on_combStep1Seq             2   0     DEBUG  -- Positive decision HLT_mu8_e8 ID#3385806166
+FilterStep2_on_combStep1Seq             2   0     DEBUG Input satisfied at least one active chain
+FilterStep2_on_combStep1Seq             2   0     DEBUG Output size 1
+FilterStep2_on_combStep1Seq             2   0     DEBUG Recording output key FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output2_out_out of size 1 at index 1
+FilterStep2_on_combStep1Seq             2   0     DEBUG Filter passed
+Step2MuInputMaker                       2   0     DEBUG Executing Step2MuInputMaker...
+Step2MuInputMaker                       2   0     DEBUG number of implicit ReadHandles is 2
+Step2MuInputMaker                       2   0     DEBUG Got DecisionContainer from input FilterStep2_on_muStep1Seq_from_Step1MuHypo_Output_out_out with 1 elements
+Step2MuInputMaker                       2   0     DEBUG Found feature initialRoI:  RoIid: 0 RoIword: 0	 z: 0 (-225 - 225) eta: -1.5 (-1.6 - -1.4) phi: -0.1 (-0.2 - 1.49012e-09)
+Step2MuInputMaker                       2   0     DEBUG Make new decision
+Step2MuInputMaker                       2   0     DEBUG Copy decisions from input 0 with exist flag=0 to output 0x7f7c890e41a0
+Step2MuInputMaker                       2   0     DEBUG Got DecisionContainer from input FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output1_out_out with 1 elements
+Step2MuInputMaker                       2   0     DEBUG Found feature initialRoI:  RoIid: 0 RoIword: 0	 z: 0 (-225 - 225) eta: -1.5 (-1.6 - -1.4) phi: -0.1 (-0.2 - 1.49012e-09)
+Step2MuInputMaker                       2   0     DEBUG Copy decisions from input 0 with exist flag=1 to output 0x7f7c890e41a0
+Step2MuInputMaker                       2   0     DEBUG Should find 1 obejcts and decisions
+Step2MuInputMaker                       2   0     DEBUG Produced 1 objects
+Step2MuInputMaker                       2   0     DEBUG Produced 1 decisions
+Step2MuInputMaker                       2   0     DEBUG Number of positive decisions for this input: 2
+Step2MuInputMaker                       2   0     DEBUG  --- found decision HLT_mu8 ID#3370546555
+Step2MuInputMaker                       2   0     DEBUG  --- found decision HLT_mu8_e8 ID#3385806166
+muMSRecAlg2                             2   0     DEBUG Executing muMSRecAlg2...
+muMSRecAlg2                             2   0     DEBUG Input Step2MuInputMaker_Output_out has 1 elements, scanning it
+muMSRecAlg2                             2   0     DEBUG RoI RoIid: 0 RoIword: 0	 z: 0 (-225 - 225) eta: -1.5 (-1.6 - -1.4) phi: -0.1 (-0.2 - 1.49012e-09)
+muMSRecAlg2                             2   0     DEBUG Reconstructed object
+muMSRecAlg2                             2   0     DEBUG   eta : -1.7
+muMSRecAlg2                             2   0     DEBUG   phi : -0.2
+muMSRecAlg2                             2   0     DEBUG   pt : 9500
+muMSRecAlg2                             2   0     DEBUG Reconstructed 1 objects
+Step2MuHypo2                            2   0     DEBUG Executing Step2MuHypo2...
+Step2MuHypo2                            2   0     DEBUG Running with 1 implicit ReadHandles for previous decisions
+Step2MuHypo2                            2   0     DEBUG and with 1 reco inputs
+Step2MuHypo2.step2mu20                  2   0     DEBUG Making new decisions Step2MuHypo2.step2mu20
+Step2MuHypo2.step2mu20                  2   0     DEBUG Number of previous decisions for input 0= 2
+Step2MuHypo2.step2mu20                  2   0     DEBUG  -- found decision HLT_mu8 ID#3370546555
+Step2MuHypo2.step2mu20                  2   0     DEBUG  -- found decision HLT_mu8_e8 ID#3385806166
+Step2MuHypo2.step2mu20                  2   0     DEBUG No Input decisions requested by active chains
+Step2MuHypo2.step2mu20                  2   0     DEBUG Configured to require chain HLT_mu20 ID#3964288416
+Step2MuHypo2.step2mu8                   2   0     DEBUG Making new decisions Step2MuHypo2.step2mu8
+Step2MuHypo2.step2mu8                   2   0     DEBUG Number of previous decisions for input 0= 2
+Step2MuHypo2.step2mu8                   2   0     DEBUG  -- found decision HLT_mu8 ID#3370546555
+Step2MuHypo2.step2mu8                   2   0     DEBUG  -- found decision HLT_mu8_e8 ID#3385806166
+Step2MuHypo2.step2mu8                   2   0     DEBUG   threshold 8000 passed by value: 9500
+Step2MuHypo2                            2   0     DEBUG Exiting with 1 decisions
+Step2MuHypo2                            2   0     DEBUG Number of positive decisions for this input: 1
+Step2MuHypo2                            2   0     DEBUG  --- found new decision HLT_mu8 ID#3370546555
+Step2ElInputMaker                       2   0     DEBUG Executing Step2ElInputMaker...
+Step2ElInputMaker                       2   0     DEBUG number of implicit ReadHandles is 2
+Step2ElInputMaker                       2   0     DEBUG Got DecisionContainer from input FilterStep2_on_elStep1Seq_from_Step1ElHypo_Output_out_out with 0 elements
+Step2ElInputMaker                       2   0     DEBUG Got DecisionContainer from input FilterStep2_on_combStep1Seq_from_Step1ComboMuElHypo_Output2_out_out with 1 elements
+Step2ElInputMaker                       2   0     DEBUG Found feature initialRoI:  RoIid: 0 RoIword: 0	 z: 0 (-225 - 225) eta: -0.6 (-0.7 - -0.5) phi: 1.5 (1.4 - 1.6)
+Step2ElInputMaker                       2   0     DEBUG Make new decision
+Step2ElInputMaker                       2   0     DEBUG Copy decisions from input 0 with exist flag=0 to output 0x7f7c890e41a0
+Step2ElInputMaker                       2   0     DEBUG Should find 1 obejcts and decisions
+Step2ElInputMaker                       2   0     DEBUG Produced 1 objects
+Step2ElInputMaker                       2   0     DEBUG Produced 1 decisions
+Step2ElInputMaker                       2   0     DEBUG Number of positive decisions for this input: 1
+Step2ElInputMaker                       2   0     DEBUG  --- found decision HLT_mu8_e8 ID#3385806166
+CaloClustering2                         2   0     DEBUG Executing CaloClustering2...
+CaloClustering2                         2   0     DEBUG Input Step2ElInputMaker_Output_out has 1 elements, scanning it
+CaloClustering2                         2   0     DEBUG RoI RoIid: 0 RoIword: 0	 z: 0 (-225 - 225) eta: -0.6 (-0.7 - -0.5) phi: 1.5 (1.4 - 1.6)
+CaloClustering2                         2   0     DEBUG Reconstructed object
+CaloClustering2                         2   0     DEBUG   eta : -0.6
+CaloClustering2                         2   0     DEBUG   phi : 1.7
+CaloClustering2                         2   0     DEBUG   et : 9000
+CaloClustering2                         2   0     DEBUG Reconstructed 1 objects
+Step2ElHypo                             2   0     DEBUG Executing Step2ElHypo...
+Step2ElHypo                             2   0     DEBUG Running with 1 implicit ReadHandles for previous decisions
+Step2ElHypo                             2   0     DEBUG and with 1 reco inputs
+Step2ElHypo.step2e20                    2   0     DEBUG Making new decisions Step2ElHypo.step2e20
+Step2ElHypo.step2e20                    2   0     DEBUG Number of previous decisions for input 0= 1
+Step2ElHypo.step2e20                    2   0     DEBUG  -- found decision HLT_mu8_e8 ID#3385806166
+Step2ElHypo.step2e20                    2   0     DEBUG No Input decisions requested by active chains
+Step2ElHypo.step2e20                    2   0     DEBUG Configured to require chain HLT_e20 ID#4230506138
+Step2ElHypo                             2   0     DEBUG Exiting with 1 decisions
+Step2ElHypo                             2   0     DEBUG Number of positive decisions for this input: 0
+Step2ComboMuElHypo                      2   0     DEBUG Executing Step2ComboMuElHypo...
+Step2ComboMuElHypo                      2   0     DEBUG Running with 1 implicit Step2MuInputMaker_decisions for previous decisions of input 1
+Step2ComboMuElHypo                      2   0     DEBUG Running with 1 implicit Step2ElInputMaker_decisions for previous decisions of input 2
+Step2ComboMuElHypo                      2   0     DEBUG and with 1 reco1 inputs, and 1 reco2 inputs
+Step2ComboMuElHypo                      2   0     DEBUG Found  1 rois from input 1 
+Step2ComboMuElHypo                      2   0     DEBUG Found  1 rois from input 2 
+Step2ComboMuElHypo                      2   0     DEBUG Go to the tool with n.dec1=1 and n.dec2=1 
+Step2ComboMuElHypo                      2   0     DEBUG Number of previous decisions for input1: 2
+Step2ComboMuElHypo                      2   0     DEBUG  -- found decision HLT_mu8 ID#3370546555
+Step2ComboMuElHypo                      2   0     DEBUG  -- found decision HLT_mu8_e8 ID#3385806166
+Step2ComboMuElHypo                      2   0     DEBUG Found HLT_mu8_e8 ID#3385806166 to candidate 0 in input1
+Step2ComboMuElHypo                      2   0     DEBUG Number of previous decisions for input2: 1
+Step2ComboMuElHypo                      2   0     DEBUG  -- found decision HLT_mu8_e8 ID#3385806166
+Step2ComboMuElHypo                      2   0     DEBUG Found HLT_mu8_e8 ID#3385806166 to both candidates for 0 in input2
+Step2ComboMuElHypo                      2   0     DEBUG Found good combined candidate
+Step2ComboMuElHypo                      2   0     DEBUG Prop1=9500
+Step2ComboMuElHypo                      2   0     DEBUG Prop2=9000
+Step2ComboMuElHypo                      2   0     DEBUG Adding HLT_mu8_e8 ID#3385806166 to both candaites
+TriggerSummaryStep2                     2   0     DEBUG Executing TriggerSummaryStep2...
+TriggerSummaryStep2                     2   0     DEBUG Found 1 Decisions for Step2MuHypo2_Output_out
+TriggerSummaryStep2                     2   0     DEBUG Found 1 Decisions for Step2ElHypo_Output_out
+TriggerSummaryStep2                     2   0     DEBUG Found 1 Decisions for Step2ComboMuElHypo_Output1_out
+TriggerSummaryStep2                     2   0     DEBUG Found 1 Decisions for Step2ComboMuElHypo_Output2_out
+TriggerSummaryStep2                     2   0     DEBUG In summary 2 chains passed:
+TriggerSummaryStep2                     2   0     DEBUG  +++ HLT_mu8 ID#3370546555
+TriggerSummaryStep2                     2   0     DEBUG  +++ HLT_mu8_e8 ID#3385806166
+AthenaHiveEventLoopMgr                             INFO   ===>>>  done processing event #2, run #1 on slot 0,  3 events processed so far  <<<===
+AthenaHiveEventLoopMgr                             INFO ---> Loop Finished (seconds): 0.0208018
+ApplicationMgr                                     INFO Application Manager Stopped successfully
+IncidentProcAlg1                                   INFO Finalize
+SGInputLoader                                      INFO Finalizing SGInputLoader...
+Step1MuHypo                                        INFO Finalizing Step1MuHypo...
+Step1MuInputMaker                                  INFO Finalizing Step1MuInputMaker...
+muMSRecAlg                                         INFO Finalizing muMSRecAlg...
+Step1ElInputMaker                                  INFO Finalizing Step1ElInputMaker...
+Step1ElHypo                                        INFO Finalizing Step1ElHypo...
+CaloClustering                                     INFO Finalizing CaloClustering...
+Step1ComboMuElHypo                                 INFO Finalizing Step1ComboMuElHypo...
+muMSRecAlg2                                        INFO Finalizing muMSRecAlg2...
+Step2MuHypo2                                       INFO Finalizing Step2MuHypo2...
+Step2MuInputMaker                                  INFO Finalizing Step2MuInputMaker...
+CaloClustering2                                    INFO Finalizing CaloClustering2...
+Step2ElInputMaker                                  INFO Finalizing Step2ElInputMaker...
+Step2ElHypo                                        INFO Finalizing Step2ElHypo...
+Step2ComboMuElHypo                                 INFO Finalizing Step2ComboMuElHypo...
+IncidentProcAlg2                                   INFO Finalize
+AvalancheSchedulerSvc                              INFO Joining Scheduler thread
+AvalancheSchedulerSvc                   2   0      INFO Terminating thread-pool resources
+EventDataSvc                                       INFO Finalizing EventDataSvc - package version StoreGate-00-00-00
+AthDictLoaderSvc                                   INFO in finalize...
+ToolSvc                                            INFO Removing all tools created by ToolSvc
+Step2MuHypo2.step2mu8                              INFO Finalizing Step2MuHypo2.step2mu8...
+Step2MuHypo2.step2mu20                             INFO Finalizing Step2MuHypo2.step2mu20...
+Step1MuHypo.step1mu8                               INFO Finalizing Step1MuHypo.step1mu8...
+Step1MuHypo.step1mu20                              INFO Finalizing Step1MuHypo.step1mu20...
+Step2ElHypo.step2e20                               INFO Finalizing Step2ElHypo.step2e20...
+Step1ElHypo.step1e20                               INFO Finalizing Step1ElHypo.step1e20...
+*****Chrono*****                                   INFO ****************************************************************************************************
+*****Chrono*****                                   INFO  The Final CPU consumption ( Chrono ) Table (ordered)
+*****Chrono*****                                   INFO ****************************************************************************************************
+ChronoStatSvc                                      INFO Time User   : Tot= 0.59  [s]                                             #=  1
+*****Chrono*****                                   INFO ****************************************************************************************************
+ChronoStatSvc.finalize()                           INFO  Service finalized successfully 
+ApplicationMgr                                     INFO Application Manager Finalized successfully
+ApplicationMgr                                     INFO Application Manager Terminated successfully
+Py:Athena            INFO leaving with code 0: "successful run"
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/EmuStepProcessingTest.py b/Trigger/TrigValidation/TrigUpgradeTest/share/EmuStepProcessingTest.py
index 90b8d890bdf..8110416b525 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/share/EmuStepProcessingTest.py
+++ b/Trigger/TrigValidation/TrigUpgradeTest/share/EmuStepProcessingTest.py
@@ -155,6 +155,7 @@ CombChains =[
 
 
 group_of_chains = MuChains + ElChains + CombChains
+#+ CombChains
 #+ ElChains + CombChains
 
 
@@ -170,16 +171,18 @@ topSequence += TopHLTRootSeq
 TopHLTRootSeq += L1UnpackingSeq
 
 # add the HLT steps Node
-HLTAllStepsSeq = seqAND("HLTAllStepsSeq")
+HLTAllStepsSeq = seqAND("EmuTest_HLTAllStepsSequence")
 TopHLTRootSeq += HLTAllStepsSeq
 
+# make CF tree
+
 decisionTree_From_Chains(HLTAllStepsSeq, group_of_chains, NSTEPS=nsteps)
 
 
-#from AthenaCommon.AlgSequence import dumpMasterSequence
-#dumpMasterSequence()
 
-theApp.EvtMax = 3
 
 
+#from AthenaCommon.AlgSequence import dumpMasterSequence
+#dumpMasterSequence()
 
+theApp.EvtMax = 3
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/HLTSignatureConfig.py b/Trigger/TrigValidation/TrigUpgradeTest/share/HLTSignatureConfig.py
index 35a9f9c872f..5440f077c80 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/share/HLTSignatureConfig.py
+++ b/Trigger/TrigValidation/TrigUpgradeTest/share/HLTSignatureConfig.py
@@ -11,6 +11,7 @@ def TestHypoTool(name, prop, threshold_value):
 
 from TrigUpgradeTest.TrigUpgradeTestConf import HLTTest__TestInputMaker
 def InputMakerAlg(name):
+ #   return HLTTest__TestInputMaker(name, OutputLevel = DEBUG, LinkName=linkname)
     return HLTTest__TestInputMaker(name, OutputLevel = DEBUG, LinkName="initialRoI")
 
   
@@ -43,7 +44,7 @@ def step2mu8():
 
 
 muIM= InputMakerAlg(name="Step1MuInputMaker")
-step1_mu_inputMaker = AlgNode(Alg=muIM, inputProp='Inputs', outputProp='Output')
+step1_mu_inputMaker = AlgNode(Alg=muIM, inputProp='InputDecisions', outputProp='Output')
 
 muAlg = muMSRecAlg(name="muMSRecAlg", FileName="msmu.dat")
 step1_mu_recoAlg = AlgNode( Alg=muAlg,inputProp='Input', outputProp='Output')
@@ -51,21 +52,21 @@ step1_mu_recoAlg = AlgNode( Alg=muAlg,inputProp='Input', outputProp='Output')
 muHypo = MuHypo(name="Step1MuHypo")
 
 step1_mu_HypoAlg = HypoAlgNode( Alg=muHypo,inputProp='Input', outputProp='Output')
-nodeSequence_mu = NodeSequence("muNodeSeq1",  Algs=[step1_mu_inputMaker, step1_mu_recoAlg], Hypo=step1_mu_HypoAlg, Seed="L1MU")
+nodeSequence_mu = NodeSequence("muNodeSeq1",  Maker=step1_mu_inputMaker, Algs=[step1_mu_recoAlg], Hypo=step1_mu_HypoAlg, Seed="L1MU")
 
 def muStep1Sequence():
     return MenuSequence("muStep1Seq", nodeSeqList=[nodeSequence_mu])
 
 # mu step2
 muIM2= InputMakerAlg(name="Step2MuInputMaker")
-step2_mu_inputMaker = AlgNode(Alg=muIM2, inputProp='Inputs', outputProp='Output')
+step2_mu_inputMaker = AlgNode(Alg=muIM2, inputProp='InputDecisions', outputProp='Output')
 
 muAlg2 = muMSRecAlg(name="muMSRecAlg2", FileName="msmu.dat")
 step2_mu_recoAlg = AlgNode( Alg=muAlg2,inputProp='Input', outputProp='Output')
 
 muHypo2 = MuHypo(name="Step2MuHypo2")
 step2_mu_HypoAlg = HypoAlgNode( Alg=muHypo2,inputProp='Input', outputProp='Output')
-nodeSequence2_mu = NodeSequence("muNodeSeq2",  Algs=[step2_mu_inputMaker, step2_mu_recoAlg], Hypo=step2_mu_HypoAlg, Seed="")
+nodeSequence2_mu = NodeSequence("muNodeSeq2",  Maker=step2_mu_inputMaker, Algs=[step2_mu_recoAlg], Hypo=step2_mu_HypoAlg, Seed="L1MU")
 
 def muStep2Sequence():
     return MenuSequence("muStep2Seq", nodeSeqList=[nodeSequence2_mu])
@@ -94,7 +95,7 @@ def step2e8():
     return TestHypoTool("step2e8", "et",8)
 
 elIM= InputMakerAlg(name="Step1ElInputMaker")
-step1_el_inputMaker = AlgNode(Alg=elIM, inputProp='Inputs', outputProp='Output')
+step1_el_inputMaker = AlgNode(Alg=elIM, inputProp='InputDecisions', outputProp='Output')
 
 elAlg = CaloClustering(name="CaloClustering", FileName="emclusters.dat")
 step1_el_recoAlg = AlgNode( Alg=elAlg,inputProp='Input', outputProp='Output')
@@ -102,13 +103,13 @@ step1_el_recoAlg = AlgNode( Alg=elAlg,inputProp='Input', outputProp='Output')
 elHypo = ElGamHypo(name="Step1ElHypo")
 step1_el_HypoAlg = HypoAlgNode( Alg=elHypo,inputProp='Input', outputProp='Output')
 
-nodeSequence_el = NodeSequence("elNodeSeq1",  Algs=[step1_el_inputMaker, step1_el_recoAlg], Hypo=step1_el_HypoAlg, Seed="L1EM")
+nodeSequence_el = NodeSequence("elNodeSeq1",  Maker=step1_el_inputMaker, Algs=[step1_el_recoAlg], Hypo=step1_el_HypoAlg, Seed="L1EM")
 def elStep1Sequence():
     return MenuSequence("elStep1Seq", nodeSeqList=[nodeSequence_el])
 
 #step2
 elIM2= InputMakerAlg(name="Step2ElInputMaker")
-step2_el_inputMaker = AlgNode(Alg=elIM2, inputProp='Inputs', outputProp='Output')
+step2_el_inputMaker = AlgNode(Alg=elIM2, inputProp='InputDecisions', outputProp='Output')
 
 elAlg2 = CaloClustering(name="CaloClustering2", FileName="emclusters.dat")
 step2_el_recoAlg = AlgNode( Alg=elAlg2,inputProp='Input', outputProp='Output')
@@ -116,7 +117,7 @@ step2_el_recoAlg = AlgNode( Alg=elAlg2,inputProp='Input', outputProp='Output')
 elHypo2 = ElGamHypo(name="Step2ElHypo")
 step2_el_HypoAlg = HypoAlgNode( Alg=elHypo2,inputProp='Input', outputProp='Output')
 
-nodeSequence2_el = NodeSequence("elNodeSeq2",  Algs=[step2_el_inputMaker, step2_el_recoAlg], Hypo=step2_el_HypoAlg, Seed="")
+nodeSequence2_el = NodeSequence("elNodeSeq2",  Maker=step2_el_inputMaker, Algs=[ step2_el_recoAlg], Hypo=step2_el_HypoAlg, Seed="L1EM")
 def elStep2Sequence():
     return MenuSequence("elStep2Seq", nodeSeqList=[nodeSequence2_el])
 
@@ -137,8 +138,8 @@ comboAlg = ComboMuEHypo("Step1ComboMuElHypo")
 step1_comb_HypoAlgMu =  HypoAlgNode( Alg=comboAlg,inputProp='Input1', outputProp='Output1')
 step1_comb_HypoAlgEl =  HypoAlgNode( Alg=comboAlg,inputProp='Input2', outputProp='Output2')
 
-nodeSequence_muComb = NodeSequence("CombmuNodeSeq1",  Algs=[step1_mu_inputMaker, step1_mu_recoAlg], Hypo=step1_comb_HypoAlgMu, Seed="L1MU")
-nodeSequence_elComb = NodeSequence("CombelNodeSeq1",  Algs=[step1_el_inputMaker, step1_el_recoAlg], Hypo=step1_comb_HypoAlgEl, Seed="L1EM")
+nodeSequence_muComb = NodeSequence("CombmuNodeSeq1",  Maker=step1_mu_inputMaker, Algs=[step1_mu_recoAlg], Hypo=step1_comb_HypoAlgMu, Seed="L1MU")
+nodeSequence_elComb = NodeSequence("CombelNodeSeq1",  Maker=step1_el_inputMaker, Algs=[step1_el_recoAlg], Hypo=step1_comb_HypoAlgEl, Seed="L1EM")
 
 
 def combStep1Sequence():
@@ -150,8 +151,8 @@ comboAlg2 = ComboMuEHypo("Step2ComboMuElHypo")
 step2_comb_HypoAlgMu =  HypoAlgNode( Alg=comboAlg2,inputProp='Input1', outputProp='Output1')
 step2_comb_HypoAlgEl =  HypoAlgNode( Alg=comboAlg2,inputProp='Input2', outputProp='Output2')
 
-nodeSequence2_muComb = NodeSequence("CombmuNodeSeq2",  Algs=[step2_mu_inputMaker, step2_mu_recoAlg], Hypo=step2_comb_HypoAlgMu, Seed="")
-nodeSequence2_elComb = NodeSequence("CombelNodeSeq2",  Algs=[step2_el_inputMaker, step2_el_recoAlg], Hypo=step2_comb_HypoAlgEl, Seed="")
+nodeSequence2_muComb = NodeSequence("CombmuNodeSeq2",  Maker=step2_mu_inputMaker, Algs=[step2_mu_recoAlg], Hypo=step2_comb_HypoAlgMu, Seed="L1MU")
+nodeSequence2_elComb = NodeSequence("CombelNodeSeq2",  Maker=step2_el_inputMaker, Algs=[step2_el_recoAlg], Hypo=step2_comb_HypoAlgEl, Seed="L1EM")
 
 
 def combStep2Sequence():
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.menu.py b/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.menu.py
index efa497d4b8c..38b0168eba5 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.menu.py
+++ b/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.menu.py
@@ -4,54 +4,48 @@
 
 include("TrigUpgradeTest/testHLT_MT.py")
 
-#workaround to prevent online trigger folders to be enabled
-from InDetTrigRecExample.InDetTrigFlags import InDetTrigFlags
-InDetTrigFlags.useConditionsClasses.set_Value_and_Lock(False)
+## #workaround to prevent online trigger folders to be enabled
+## from InDetTrigRecExample.InDetTrigFlags import InDetTrigFlags
+## InDetTrigFlags.useConditionsClasses.set_Value_and_Lock(False)
 
 
-from InDetRecExample.InDetJobProperties import InDetFlags
-InDetFlags.doCaloSeededBrem = False
+## from InDetRecExample.InDetJobProperties import InDetFlags
+## InDetFlags.doCaloSeededBrem = False
 
 
-from InDetRecExample.InDetJobProperties import InDetFlags
-InDetFlags.InDet25nsec = True 
-InDetFlags.doPrimaryVertex3DFinding = False 
-InDetFlags.doPrintConfigurables = False
-InDetFlags.doResolveBackTracks = True 
-InDetFlags.doSiSPSeededTrackFinder = True
-InDetFlags.doTRTPhaseCalculation = True
-InDetFlags.doTRTSeededTrackFinder = True
-InDetFlags.doTruth = False
-InDetFlags.init()
+## from InDetRecExample.InDetJobProperties import InDetFlags
+## InDetFlags.InDet25nsec = True 
+## InDetFlags.doPrimaryVertex3DFinding = False 
+## InDetFlags.doPrintConfigurables = False
+## InDetFlags.doResolveBackTracks = True 
+## InDetFlags.doSiSPSeededTrackFinder = True
+## InDetFlags.doTRTPhaseCalculation = True
+## InDetFlags.doTRTSeededTrackFinder = True
+## InDetFlags.doTruth = False
+## InDetFlags.init()
+
+## # PixelLorentzAngleSvc and SCTLorentzAngleSvc
+## include("InDetRecExample/InDetRecConditionsAccess.py")
+## from InDetRecExample.InDetKeys import InDetKeys
 
-# PixelLorentzAngleSvc and SCTLorentzAngleSvc
-include("InDetRecExample/InDetRecConditionsAccess.py")
 from AthenaCommon.AlgSequence import AlgSequence
 topSequence = AlgSequence()
 
-
-from InDetRecExample.InDetKeys import InDetKeys
-
 # provide a minimal menu information
 if globalflags.InputFormat.is_bytestream():
    topSequence.L1DecoderTest.ctpUnpacker.OutputLevel=DEBUG
    topSequence.L1DecoderTest.roiUnpackers[0].OutputLevel=DEBUG
-testChains = ["HLT_e3_etcut", "HLT_e5_etcut", "HLT_e7_etcut", "HLT_2e3_etcut", "HLT_e3e5_etcut"]
 
 
-from TrigT2CaloEgamma.TrigT2CaloEgammaConfig import T2CaloEgamma_FastAlgo
-theFastCaloAlgo=T2CaloEgamma_FastAlgo("FastCaloAlgo" )
-theFastCaloAlgo.OutputLevel=VERBOSE
-theFastCaloAlgo.ClustersName="L2CaloClusters"
-svcMgr.ToolSvc.TrigDataAccess.ApplyOffsetCorrection=False
-
-# start here new part
-#############################################################
-
 from TrigUpgradeTest.HLTCFConfig import *
 from TrigUpgradeTest.MenuComponents import *
+from ViewAlgs.ViewAlgsConf import TestEventViewCreatorAlgorithm
+from AthenaCommon.AppMgr import ServiceMgr as svcMgr
 
 
+#################################
+# first step: calo
+#################################
 def InputMakerAlg(name):
     from TrigUpgradeTest.TrigUpgradeTestConf import HLTTest__TestInputMaker
     return HLTTest__TestInputMaker(name, OutputLevel = DEBUG, LinkName="initialRoI")
@@ -65,21 +59,14 @@ def FastCaloAlg(name):
     svcMgr.ToolSvc.TrigDataAccess.ApplyOffsetCorrection=False
     return theFastCaloAlgo
 
-def fastCaloViewsMaker(name):
-    from ViewAlgs.ViewAlgsConf import EventViewCreatorAlgorithm
-    fastCaloViewsMaker = EventViewCreatorAlgorithm(name, OutputLevel=DEBUG)
-    fastCaloViewsMaker.ViewFallThrough = True
-#    fastCaloViewsMaker.Decisions = "FilteredEMRoIDecisions" # from EMRoIsUnpackingTool
-    fastCaloViewsMaker.RoIsLink = "initialRoI" # -||-
-    fastCaloViewsMaker.InViewRoIs = "EMCaloRoIs" # contract with the fastCalo
-    fastCaloViewsMaker.Views = "EMCaloViews"
- #   fastCaloViewsMaker.ViewNodeName = "fastCaloInViewAlgs"
- #add algo
-    theFastCaloAlgo = FastCaloAlg(name="FastCaloAlgo")
-    fastCaloInViewAlgs = seqAND("fastCaloInViewAlgs", [ theFastCaloAlgo ])
-    theFastCaloAlgo.RoIs = fastCaloViewsMaker.InViewRoIs
-
-
+def FastCaloViewsMaker(name):
+    testfastCaloViewsMaker = TestEventViewCreatorAlgorithm(name, OutputLevel=DEBUG)    
+    testfastCaloViewsMaker.ViewFallThrough = True
+    testfastCaloViewsMaker.RoIsLink = "initialRoI" # -||-
+    testfastCaloViewsMaker.InViewRoIs = "EMCaloRoIs"
+    testfastCaloViewsMaker.Views = "EMCaloViews"
+    testfastCaloViewsMaker.ViewNodeName = "fastCaloInViewSubNode"
+    return testfastCaloViewsMaker
   
 def FastCaloHypo(name):
   from TrigEgammaHypo.TrigEgammaHypoConf import TrigL2CaloHypoAlg
@@ -87,6 +74,11 @@ def FastCaloHypo(name):
   theFastCaloHypo.OutputLevel = DEBUG 
   return theFastCaloHypo
 
+def TestFastCaloHypo(name):
+  from TrigEgammaHypo.TrigEgammaHypoConf import TestTrigL2CaloHypoAlg
+  theFastCaloHypo = TestTrigL2CaloHypoAlg(name)
+  theFastCaloHypo.OutputLevel = DEBUG 
+  return theFastCaloHypo
 
 def TrigL2CaloHypoTool(name):
   from TrigEgammaHypo.TrigL2CaloHypoTool import TrigL2CaloHypoToolFromName
@@ -94,64 +86,478 @@ def TrigL2CaloHypoTool(name):
   hypotool.OutputLevel = DEBUG
   return hypotool
 
+
+def TestTrigL2CaloHypoTool(name):
+  #from TrigEgammaHypo.TrigEgammaHypoConf import TestTrigL2CaloHypoToolInc
+  #hypotool= TestTrigL2CaloHypoToolInc(name)
+  from TrigEgammaHypo.TestTrigL2CaloHypoTool import TestTrigL2CaloHypoToolFromName
+  hypotool= TestTrigL2CaloHypoToolFromName(name)
+  hypotool.OutputLevel = DEBUG
+  return hypotool
+
 def e3_etcut():
-  return TrigL2CaloHypoTool("HLT_e3_etcut")
+  return TestTrigL2CaloHypoTool("HLT_e3_etcut")
+#  return TrigL2CaloHypoTool("HLT_e3_etcut")
 
 def e5_etcut():
-  return TrigL2CaloHypoTool("HLT_e5_etcut")
-
+  return TestTrigL2CaloHypoTool("HLT_e5_etcut")
+#  return TrigL2CaloHypoTool("HLT_e5_etcut")
 
-#####################
-# Make the sequence
+def e7_etcut():
+  return TestTrigL2CaloHypoTool("HLT_e7_etcut")
 
+#def 2e3_etcut():
+    #TrigL2CaloHypoToolMult
+#    return TestTrigL2CaloHypoTool("HLT_2e3_etcut")
 
-fastCaloViewsMaker = fastCaloViewsMaker(name="fastCaloViewsMaker")
-theFastCaloHypo = FastCaloHypo(name="L2CaloHypo")
+# Make the calo sequence
+########################
+theFastCaloViewsMaker = FastCaloViewsMaker(name="fastCaloViewsMaker")
+theFastCaloAlgo = FastCaloAlg(name="FastCaloAlgo")
+fastCaloInViewSequence = theFastCaloViewsMaker.ViewNodeName
+theFastCaloHypo = TestFastCaloHypo(name="L2CaloHypo")
 
 # Nodes & sequence
-fastCaloViewsMakerNode = AlgNode( Alg=fastCaloViewsMaker,inputProp='Decisions', outputProp='Views') 
-fastCaloHypoNode = HypoAlgNode( Alg=theFastCaloHypo,inputProp='Views', outputProp='Decisions')
-fastCalo_NodeSequence = NodeSequence("fastCalo_NodeSequence", Algs=[fastCaloViewsMaker], Hypo=fastCaloHypoNode, Seed=EMRoIDecisions)
+fastCaloViewsMakerNode = AlgNode( Alg=theFastCaloViewsMaker,  inputProp='InputDecisions', outputProp='InViewRoIs')
+fastCaloAlgoNode       = AlgNode( Alg=theFastCaloAlgo,     inputProp='RoIs',           outputProp='ClustersName')
+fastCaloHypoNode       = HypoAlgNode( Alg=theFastCaloHypo, inputProp='CaloClusters',   outputProp='Decisions')
 
-#remaining connecitons to the Hypo
-theFastCaloHypo.RoIs = l2CaloViewsMaker.InViewRoIs
-theFastCaloHypo.CaloClusters = theFastCaloAlgo.ClustersName
-theFastCaloHypo.L1Decisions = EMRoIDecisions
+fastCaloViewVerify = CfgMgr.AthViews__ViewDataVerifier("FastCaloViewDataVerifier",\
+            DataObjects = [('TrigRoiDescriptorCollection' , 'StoreGateSvc+'+fastCaloViewsMakerNode.getOutput())])
 
-#final sequence
-fastCaloSequence = MenuSequence("egammaCaloStep", nodeSeqList=[fastCalo_NodeSequence])
-print fastCaloSequence
+caloDecisionsDumper = DumpDecisions("caloDecisionsDumper", OutputLevel=DEBUG, Decisions = theFastCaloHypo.Decisions )  
+
+
+
+fastCalo_NodeSequence = ViewNodeSequence("fastCalo_NodeSequence",
+                                           Maker=fastCaloViewsMakerNode, 
+                                           Algs=[fastCaloAlgoNode],
+                                           Hypo=fastCaloHypoNode,
+                                           OtherNodes=[AlgNode(Alg=fastCaloViewVerify), AlgNode(Alg=caloDecisionsDumper)],
+                                           Seed="EMRoIDecisions")
 
 
+#and then menu sequence
+fastCaloSequence = MenuSequence("egammaCaloStep", nodeSeqList=[fastCalo_NodeSequence])
+#print fastCaloSequence
+#print theFastCaloHypo
+
+    
 #########################################
-# here tracking.....
+# second step:  tracking.....
 #########################################
+#workaround to prevent online trigger folders to be enabled
+from InDetTrigRecExample.InDetTrigFlags import InDetTrigFlags
+InDetTrigFlags.useConditionsClasses.set_Value_and_Lock(False)
 
 
+from InDetRecExample.InDetJobProperties import InDetFlags
+InDetFlags.doCaloSeededBrem = False
+
+
+from InDetRecExample.InDetJobProperties import InDetFlags
+InDetFlags.InDet25nsec = True 
+InDetFlags.doPrimaryVertex3DFinding = False 
+InDetFlags.doPrintConfigurables = False
+InDetFlags.doResolveBackTracks = True 
+InDetFlags.doSiSPSeededTrackFinder = True
+InDetFlags.doTRTPhaseCalculation = True
+InDetFlags.doTRTSeededTrackFinder = True
+InDetFlags.doTruth = False
+InDetFlags.init()
+
+# PixelLorentzAngleSvc and SCTLorentzAngleSvc
+include("InDetRecExample/InDetRecConditionsAccess.py")
+from InDetRecExample.InDetKeys import InDetKeys
+
+
+def InDetCacheCreatorTrigViews(name="InDetCacheCreatorTrigViews"):
+    from InDetPrepRawDataFormation.InDetPrepRawDataFormationConf import InDet__CacheCreator
+    InDetCacheCreatorTrigViews = InDet__CacheCreator(name = name,
+                                                    Pixel_ClusterKey = "PixelTrigClustersCache",
+                                                    SCT_ClusterKey   = "SCT_ClustersCache",
+                                                    SpacePointCachePix = "PixelSpacePointCache",
+                                                    SpacePointCacheSCT   = "SctSpacePointCache",
+                                                    SCTRDOCacheKey       = "SctRDOCache",
+                                                    PixRDOCacheKey = "PixRDOCache",
+                                                    OutputLevel=DEBUG)
+    return InDetCacheCreatorTrigViews
+
+#Pixel
+def InDetPixelRawDataProvider():
+    from PixelRawDataByteStreamCnv.PixelRawDataByteStreamCnvConf import PixelRodDecoder
+    InDetPixelRodDecoder = PixelRodDecoder(name = "InDetPixelRodDecoder")
+    svcMgr.ToolSvc += InDetPixelRodDecoder
+
+    from PixelRawDataByteStreamCnv.PixelRawDataByteStreamCnvConf import PixelRawDataProviderTool
+    InDetPixelRawDataProviderTool = PixelRawDataProviderTool(name    = "InDetPixelRawDataProviderTool",
+                                                            Decoder = InDetPixelRodDecoder)
+    svcMgr.ToolSvc += InDetPixelRawDataProviderTool
+    if (InDetFlags.doPrintConfigurables()):
+        print InDetPixelRawDataProviderTool
+
+    # load the PixelRawDataProvider
+    from PixelRawDataByteStreamCnv.PixelRawDataByteStreamCnvConf import PixelRawDataProvider
+    InDetPixelRawDataProvider = PixelRawDataProvider(name         = "InDetPixelRawDataProvider",
+                                                    RDOKey       = InDetKeys.PixelRDOs(),
+                                                    ProviderTool = InDetPixelRawDataProviderTool,
+#                                                    RDOCacheKey  = InDetCacheCreatorTrigViews.PixRDOCacheKey,
+                                                    isRoI_Seeded = True,
+                                                    OutputLevel = INFO )
+    return InDetPixelRawDataProvider
+
+#SCT
+def InDetSCTRawDataProvider():
+    from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConf import SCT_RodDecoder
+    InDetSCTRodDecoder = SCT_RodDecoder(name        = "InDetSCTRodDecoder",
+                                        TriggerMode = False)
+    svcMgr.ToolSvc += InDetSCTRodDecoder
+
+    from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConf import SCTRawDataProviderTool
+    InDetSCTRawDataProviderTool = SCTRawDataProviderTool(name    = "InDetSCTRawDataProviderTool",
+                                                        Decoder = InDetSCTRodDecoder)
+    svcMgr.ToolSvc += InDetSCTRawDataProviderTool
+    if (InDetFlags.doPrintConfigurables()):
+        print      InDetSCTRawDataProviderTool
+
+        # load the SCTRawDataProvider
+    from SCT_RawDataByteStreamCnv.SCT_RawDataByteStreamCnvConf import SCTRawDataProvider
+    InDetSCTRawDataProvider = SCTRawDataProvider(name         = "InDetSCTRawDataProvider",
+                                                RDOKey       = InDetKeys.SCT_RDOs(),
+                                                ProviderTool = InDetSCTRawDataProviderTool,
+                                                isRoI_Seeded = True )
+    
+#    InDetSCTRawDataProvider.RDOCacheKey = InDetCacheCreatorTrigViews.SCTRDOCacheKey
+    return InDetSCTRawDataProvider
+
+#TRT
+def InDetTRTRawDataProvider():
+    from TRT_ConditionsServices.TRT_ConditionsServicesConf import TRT_CalDbSvc
+    from AthenaCommon.AppMgr import ServiceMgr as svcMgr
+    InDetTRTCalDbSvc = TRT_CalDbSvc()
+    svcMgr += InDetTRTCalDbSvc
+
+    from TRT_ConditionsServices.TRT_ConditionsServicesConf import TRT_StrawStatusSummarySvc
+    InDetTRTStrawStatusSummarySvc = TRT_StrawStatusSummarySvc(name = "InDetTRTStrawStatusSummarySvc")
+    svcMgr += InDetTRTStrawStatusSummarySvc
+
+    from TRT_RawDataByteStreamCnv.TRT_RawDataByteStreamCnvConf import TRT_RodDecoder
+    InDetTRTRodDecoder = TRT_RodDecoder(name = "InDetTRTRodDecoder",
+                                        LoadCompressTableDB = True)#(globalflags.DataSource() != 'geant4'))  
+    svcMgr.ToolSvc += InDetTRTRodDecoder
+  
+    from TRT_RawDataByteStreamCnv.TRT_RawDataByteStreamCnvConf import TRTRawDataProviderTool
+    InDetTRTRawDataProviderTool = TRTRawDataProviderTool(name    = "InDetTRTRawDataProviderTool",
+                                                        Decoder = InDetTRTRodDecoder)
+    svcMgr.ToolSvc += InDetTRTRawDataProviderTool
+
+  
+    # load the TRTRawDataProvider
+    from TRT_RawDataByteStreamCnv.TRT_RawDataByteStreamCnvConf import TRTRawDataProvider
+    InDetTRTRawDataProvider = TRTRawDataProvider(name         = "InDetTRTRawDataProvider",
+                                                RDOKey       = "TRT_RDOs",
+                                                ProviderTool = InDetTRTRawDataProviderTool,
+                                                isRoI_Seeded = True )
+
+    return InDetTRTRawDataProvider
+
+
+#Pixel clusterisation
+from SiClusterizationTool.SiClusterizationToolConf import InDet__ClusterMakerTool
+InDetClusterMakerTool = InDet__ClusterMakerTool(name                 = "InDetClusterMakerTool",
+                                                    PixelCalibSvc        = None,
+                                                    PixelOfflineCalibSvc = None,
+                                                    UsePixelCalibCondDB  = False)
+svcMgr.ToolSvc += InDetClusterMakerTool
+
+
+def InDetPixelClusterization():    
+    from SiClusterizationTool.SiClusterizationToolConf import InDet__MergedPixelsTool
+    InDetMergedPixelsTool = InDet__MergedPixelsTool(name                    = "InDetMergedPixelsTool",
+                                                    globalPosAlg            = InDetClusterMakerTool,
+                                                    MinimalSplitSize        = 0,
+                                                    MaximalSplitSize        = 49,
+                                                    MinimalSplitProbability = 0,
+                                                    DoIBLSplitting = True,
+                                                    SplitClusterAmbiguityMap= InDetKeys.SplitClusterAmbiguityMap())
+    svcMgr.ToolSvc += InDetMergedPixelsTool
+
+    from SiClusterizationTool.SiClusterizationToolConf import InDet__PixelGangedAmbiguitiesFinder
+    InDetPixelGangedAmbiguitiesFinder = InDet__PixelGangedAmbiguitiesFinder(name = "InDetPixelGangedAmbiguitiesFinder")
+    svcMgr.ToolSvc += InDetPixelGangedAmbiguitiesFinder
+
+    from InDetPrepRawDataFormation.InDetPrepRawDataFormationConf import InDet__PixelClusterization
+    InDetPixelClusterization = InDet__PixelClusterization(name                    = "InDetPixelClusterization",
+                                                        clusteringTool          = InDetMergedPixelsTool,
+                                                        gangedAmbiguitiesFinder = InDetPixelGangedAmbiguitiesFinder,
+                                                        DetectorManagerName     = InDetKeys.PixelManager(),
+                                                        DataObjectName          = InDetKeys.PixelRDOs(),
+                                                        ClustersName            = "PixelTrigClusters",
+                                                        isRoI_Seeded            = True)
+
+#    InDetPixelClusterization.ClusterContainerCacheKey = InDetCacheCreatorTrigViews.Pixel_ClusterKey
+    return InDetPixelClusterization
+
+
+def InDetSCT_Clusterization():
+    #
+    # --- SCT_ClusteringTool (public)
+    #
+    from SiClusterizationTool.SiClusterizationToolConf import InDet__SCT_ClusteringTool
+    InDetSCT_ClusteringTool = InDet__SCT_ClusteringTool(name              = "InDetSCT_ClusteringTool",
+                                                        globalPosAlg      = InDetClusterMakerTool,
+                                                        conditionsService = InDetSCT_ConditionsSummarySvc)
+    #
+    # --- SCT_Clusterization algorithm
+    #
+    from InDetPrepRawDataFormation.InDetPrepRawDataFormationConf import InDet__SCT_Clusterization
+    InDetSCT_Clusterization = InDet__SCT_Clusterization(name                    = "InDetSCT_Clusterization",
+                                                        clusteringTool          = InDetSCT_ClusteringTool,
+                                                        # ChannelStatus         = InDetSCT_ChannelStatusAlg,
+                                                        DetectorManagerName     = InDetKeys.SCT_Manager(),
+                                                        DataObjectName          = InDetKeys.SCT_RDOs(),
+                                                        ClustersName            = "SCT_TrigClusters",
+                                                        conditionsService       = InDetSCT_ConditionsSummarySvc,
+                       #                                 FlaggedConditionService = InDetSCT_FlaggedConditionSvc, 
+                                                        isRoI_Seeded            = True )
+
+#    InDetSCT_Clusterization.ClusterContainerCacheKey = InDetCacheCreatorTrigViews.SCT_ClusterKey
+    return InDetSCT_Clusterization
+
+
+def InDetSiTrackerSpacePointFinder():
+    #Space points and FTF
+
+    from SiSpacePointTool.SiSpacePointToolConf import InDet__SiSpacePointMakerTool
+    InDetSiSpacePointMakerTool = InDet__SiSpacePointMakerTool(name = "InDetSiSpacePointMakerTool")
+    svcMgr.ToolSvc += InDetSiSpacePointMakerTool
+
+    from SiSpacePointFormation.SiSpacePointFormationConf import InDet__SiTrackerSpacePointFinder
+    InDetSiTrackerSpacePointFinder = InDet__SiTrackerSpacePointFinder(name                 = "InDetSiTrackerSpacePointFinder",
+                                                                    SiSpacePointMakerTool  = InDetSiSpacePointMakerTool,
+                                                                    PixelsClustersName     = "PixelTrigClusters",
+                                                                    SCT_ClustersName       = "SCT_TrigClusters",
+                                                                    SpacePointsPixelName   = "PixelTrigSpacePoints",
+                                                                    SpacePointsSCTName     = "SCT_TrigSpacePoints",
+                                                                    SpacePointsOverlapName = InDetKeys.OverlapSpacePoints(),
+                                                                    ProcessPixels          = DetFlags.haveRIO.pixel_on(),
+                                                                    ProcessSCTs            = DetFlags.haveRIO.SCT_on(),
+                                                                    ProcessOverlaps        = DetFlags.haveRIO.SCT_on(),
+                                                                    OutputLevel=DEBUG)
+
+#    InDetSiTrackerSpacePointFinder.SpacePointCacheSCT = InDetCacheCreatorTrigViews.SpacePointCacheSCT
+#    InDetSiTrackerSpacePointFinder.SpacePointCachePix = InDetCacheCreatorTrigViews.SpacePointCachePix
+    return InDetSiTrackerSpacePointFinder
+
+
+def TrigFastTrackFinder_eGamma():
+    from TrigFastTrackFinder.TrigFastTrackFinder_Config import TrigFastTrackFinder_eGamma
+    theFTF = TrigFastTrackFinder_eGamma()
+    theFTF.OutputLevel = DEBUG
+    return theFTF
+
+def InDetTrigTrackParticleCreatorAlg():
+    from TrigInDetConf.TrigInDetRecCommonTools import InDetTrigFastTrackSummaryTool
+    from TrigInDetConf.TrigInDetPostTools import  InDetTrigParticleCreatorToolFTF
+
+    from InDetTrigParticleCreation.InDetTrigParticleCreationConf import InDet__TrigTrackingxAODCnvMT
+    theTrackParticleCreatorAlg = InDet__TrigTrackingxAODCnvMT(name = "InDetTrigTrackParticleCreatorAlg",
+                                                            doIBLresidual = False,
+                                                            TrackName = "TrigFastTrackFinder_Tracks",
+                                                            TrackParticlesName = "xAODTracks",
+                                                            ParticleCreatorTool = InDetTrigParticleCreatorToolFTF)
+
+    return theTrackParticleCreatorAlg
+
+    
+   
+# New second step
+def l2ElectronViewsMaker():
+    l2ElectronViewsMaker = TestEventViewCreatorAlgorithm("l2ElectronViewsMaker", OutputLevel=DEBUG)
+    l2ElectronViewsMaker.ViewFallThrough = True
+    l2ElectronViewsMaker.RoIsLink = "roi" # -||-
+    l2ElectronViewsMaker.InViewRoIs = "EMIDRoIs" # contract with the fastCalo
+    l2ElectronViewsMaker.Views = "EMElectronViews"    
+    #l2ElectronViewsMaker.Decisions = filterCaloRoIsAlg.Output[0] # output of L2CaloHypo
+    l2ElectronViewsMaker.ViewNodeName = "electronInViewAlgs"
+    return l2ElectronViewsMaker
+
+
+# A simple algorithm to confirm that data has been inherited from parent view
+# Required to satisfy data dependencies
+electronViewDataVerifier = CfgMgr.AthViews__ViewDataVerifier("electronViewDataVerifier")
+electronViewDataVerifier.DataObjects = [('xAOD::TrigEMClusterContainer','StoreGateSvc+'+fastCaloAlgoNode.outputProp)]
+#, ViewVerify,
+
+def L2ElectronFex_1():
+    from TrigEgammaHypo.TrigL2ElectronFexMTConfig import L2ElectronFex_1
+    theElectronFex= L2ElectronFex_1()
+#    theElectronFex.TrigEMClusterName = theFastCaloAlgo.ClustersName
+#    theElectronFex.TrackParticlesName = InDetTrigTrackParticleCreatorAlg.TrackParticlesName
+    theElectronFex.ElectronsName="Electrons"
+    theElectronFex.OutputLevel=VERBOSE
+    return theElectronFex
+
+
+def TrigL2ElectronHypoAlg():
+    from TrigEgammaHypo.TrigEgammaHypoConf import TrigL2ElectronHypoAlg
+    from TrigEgammaHypo.TrigL2ElectronHypoTool import TrigL2ElectronHypoToolFromName
+    theElectronHypo = TrigL2ElectronHypoAlg()
+    #theElectronHypo.Views = l2ElectronViewsMaker.Views
+    #theElectronHypo.Electrons = theElectronFex.ElectronsName
+    #theElectronHypo.ClusterDecisions = theFastCaloHypo.Decisions 
+    theElectronHypo.ElectronDecisions = "ElectronL2Decisions"
+    theElectronHypo.OutputLevel = VERBOSE
+    #theElectronHypo.HypoTools = [ TrigL2ElectronHypoToolFromName( c ) for c in testChains ]
+    return theElectronHypo
+
+
+#############################
+# create algorithms and nodes for second step
+#############################
+
+
+InDetCacheCreatorTrigViews = InDetCacheCreatorTrigViews()
+l2ElectronViewsMaker = l2ElectronViewsMaker()
+#ID sequence algorithms
+InDetPixelRawDataProvider = InDetPixelRawDataProvider()
+InDetSCTRawDataProvider = InDetSCTRawDataProvider()
+InDetTRTRawDataProvider = InDetTRTRawDataProvider()
+InDetPixelClusterization = InDetPixelClusterization()
+InDetSCT_Clusterization = InDetSCT_Clusterization()
+InDetSiTrackerSpacePointFinder = InDetSiTrackerSpacePointFinder()
+TrigFastTrackFinder_eGamma = TrigFastTrackFinder_eGamma()
+InDetTrigTrackParticleCreatorAlg = InDetTrigTrackParticleCreatorAlg()
+#  alg electron:
+L2ElectronFex_1 = L2ElectronFex_1()
+
+
+# now make the seuqences
+
+# rdo sequence: create RDOkeys
+#InDetPixelRawDataProvider.RDOCacheKey  = InDetCacheCreatorTrigViews.PixRDOCacheKey,
+#InDetSCTRawDataProvider.RDOCacheKey = InDetCacheCreatorTrigViews.SCTRDOCacheKey
+NodePixelRDO_InDetCacheCreatorTrigViews = AlgNode(Alg=InDetCacheCreatorTrigViews, inputProp='', outputProp='PixRDOCacheKey')
+NodeSCTRDO_InDetCacheCreatorTrigViews   = AlgNode(Alg=InDetCacheCreatorTrigViews, inputProp='', outputProp='SCTRDOCacheKey')
+
+NodeRDO_InDetPixelRawDataProvider       = AlgNode( Alg=InDetPixelRawDataProvider,  inputProp='RDOCacheKey', outputProp='')
+NodeRDO_InDetSCTRawDataProvider         = AlgNode( Alg=InDetSCTRawDataProvider,    inputProp='RDOCacheKey', outputProp='')
+
+
+# cluster seuqence:
+#InDetPixelClusterization.ClusterContainerCacheKey = InDetCacheCreatorTrigViews.Pixel_ClusterKey
+#InDetSCT_Clusterization.ClusterContainerCacheKey = InDetCacheCreatorTrigViews.SCT_ClusterKey
+
+NodePixelCluster_InDetCacheCreatorTrigViews = AlgNode(Alg=InDetCacheCreatorTrigViews, inputProp='', outputProp='Pixel_ClusterKey')
+NodeSCTCluster_InDetCacheCreatorTrigViews   = AlgNode(Alg=InDetCacheCreatorTrigViews, inputProp='', outputProp='SCT_ClusterKey')
+
+NodeCluster_InDetPixelClusterization  = AlgNode( Alg=InDetPixelClusterization,  inputProp='ClusterContainerCacheKey', outputProp='')
+NodeCluster_InDetSCT_Clusterization   = AlgNode( Alg=InDetSCT_Clusterization,   inputProp='ClusterContainerCacheKey', outputProp='')
+
+# space point sequence
+#InDetSiTrackerSpacePointFinder.SpacePointCacheSCT = InDetCacheCreatorTrigViews.SpacePointCacheSCT
+#InDetSiTrackerSpacePointFinder.SpacePointCachePix = InDetCacheCreatorTrigViews.SpacePointCachePix
+NodePixelSP_InDetCacheCreatorTrigViews     = AlgNode(Alg=InDetCacheCreatorTrigViews, inputProp='', outputProp='SpacePointCachePix')
+NodeSCTSP_InDetCacheCreatorTrigViews       = AlgNode(Alg=InDetCacheCreatorTrigViews, inputProp='', outputProp='SpacePointCacheSCT')
+
+NodePixelSP_InDetSiTrackerSpacePointFinder = AlgNode(Alg=InDetSiTrackerSpacePointFinder, inputProp='SpacePointCachePix', outputProp='')
+NodeSCTSP_InDetSiTrackerSpacePointFinder   = AlgNode(Alg=InDetSiTrackerSpacePointFinder, inputProp='SpacePointCacheSCT', outputProp='')
+
+
+# view sequence
+Node_l2ElectronViewsMaker = AlgNode(Alg=l2ElectronViewsMaker, inputProp='InputDecisions', outputProp='InViewRoIs')
+
+# algorithms in view:
+#IDSequence = [  InDetPixelRawDataProvider, InDetSCTRawDataProvider, InDetTRTRawDataProvider, InDetPixelClusterization, InDetSCT_Clusterization, InDetSiTrackerSpacePointFinder, theFTF, theTrackParticleCreatorAlg ]
+# : take rois from viewCreator
+NodeRoI_InDetPixelRawDataProvider    = AlgNode( Alg=InDetPixelRawDataProvider,  inputProp='RoIs', outputProp='')
+NodeRoI_InDetSCTRawDataProvider      = AlgNode( Alg=InDetSCTRawDataProvider, inputProp='RoIs', outputProp='')
+NodeRoI_InDetTRTRawDataProvider      = AlgNode( Alg=InDetTRTRawDataProvider,  inputProp='RoIs', outputProp='')
+NodeRoI_InDetPixelClusterization     = AlgNode( Alg=InDetPixelClusterization,  inputProp='RoIs', outputProp='')
+NodeRoI_InDetSCT_Clusterization      = AlgNode( Alg=InDetSCT_Clusterization,  inputProp='RoIs', outputProp='')
+NodeRoI_InDetSiTrackerSpacePointFinder   = AlgNode( Alg=InDetSiTrackerSpacePointFinder,  inputProp='RoIs', outputProp='')
+NodeRoI_TrigFastTrackFinder_eGamma       = AlgNode( Alg= TrigFastTrackFinder_eGamma,  inputProp='RoIs', outputProp='')
+NodeRoI_InDetTrigTrackParticleCreatorAlg = AlgNode( Alg=InDetTrigTrackParticleCreatorAlg,
+                                                     inputProp='roiCollectionName',
+                                                     outputProp='TrackParticlesName')
+# particle creator
+#theTrackParticleCreatorAlg.roiCollectionName = l2ElectronViewsMaker.InViewRoIs
+#theElectronFex.TrackParticlesName = theTrackParticleCreatorAlg.TrackParticlesName
+NodeTrack_L2ElectronFex_1      = AlgNode( Alg=L2ElectronFex_1,  inputProp='TrackParticlesName', outputProp='ElectronsName')
+
+#take rois from viewCreator
+Node_electronViewDataVerifier  = AlgNode( Alg=electronViewDataVerifier)
+NodeCluster_L2ElectronFex_1    = AlgNode( Alg=L2ElectronFex_1,  inputProp='TrigEMClusterName', outputProp='ElectronsName')
+
+
+# hypo
+
+## Node_TrigL2ElectronHypoAlg   = HypoAlgNode( Alg=TrigL2ElectronHypoAlg(), inputProp='Electrons',   outputProp='ElectronDecisions')
+
+## electron_NodeSequence = ViewNodeSequence("electron_NodeSequence",
+##                                            Maker=Node_l2ElectronViewsMaker, 
+##                                            Algs=[NodeRoI_InDetPixelRawDataProvider,
+##                                                      NodeRoI_InDetSCTRawDataProvider,
+##                                                      NodeRoI_InDetTRTRawDataProvider,
+##                                                      NodeRoI_InDetPixelClusterization ],
+##                                            Hypo=Node_TrigL2ElectronHypoAlg,
+##                                            Seed="")
+
+
+
+
+
+
+
+
+
+##########################################
 # menu
+##########################################
+#testChains = ["HLT_e3_etcut", "HLT_e5_etcut", "HLT_e7_etcut", "HLT_2e3_etcut", "HLT_e3e5_etcut"]
+
 
 testChains  = [
-  Chain(name='HLT_e3_etcut', Seed="L1_EM3",   ChainSteps=[ChainStep("Step1_e3_etcut", [SequenceHypoTool(fastCaloSequence,e3_etcut() )])]),
-  Chain(name='HLT_e5_etcut', Seed="L1_EM3",   ChainSteps=[ChainStep("Step1_e5_etcut", [SequenceHypoTool(fastCaloSequence,e5_etcut() )])])
-  ]
+    Chain(name='HLT_e3_etcut', Seed="L1_EM3",   \
+            ChainSteps=[ChainStep("Step1_e3_etcut", [SequenceHypoTool(fastCaloSequence,e3_etcut() )])]),
+    Chain(name='HLT_e5_etcut', Seed="L1_EM3",   \
+              ChainSteps=[ChainStep("Step1_e5_etcut", [SequenceHypoTool(fastCaloSequence,e5_etcut() )])]),
+    Chain(name='HLT_e7_etcut', Seed="L1_EM3",   \
+              ChainSteps=[ChainStep("Step1_e7_etcut", [SequenceHypoTool(fastCaloSequence,e7_etcut() )])]),
+  #  Chain(name='HLT_2e3_etcut', Seed="L1_EM3",   \
+  #            ChainSteps=[ChainStep("Step1_2e3_etcut", [SequenceHypoTool(fastCaloSequence, 2e3_etcut() )])])
+    ]
+    
+topSequence.L1DecoderTest.prescaler.Prescales = ["HLT_e3_etcut:2", "HLT_2e3_etcut:2.5"]
+  
+## for t in theElectronHypo.HypoTools:
+##   t.OutputLevel = VERBOSE
+## # topSequence += theElectronHypo
+## # InDetCacheCreatorTrigViews,
+## electronSequence = seqAND("electronSequence", [ InDetCacheCreatorTrigViews, l2ElectronViewsMaker, electronInViewAlgs, theElectronHypo ] )
 
+## electronDecisionsDumper = DumpDecisions("electronDecisionsDumper", OutputLevel=DEBUG, Decisions = theElectronHypo.ElectronDecisions )    
+## egammaIDStep = stepSeq("egammaIDStep", filterCaloRoIsAlg, [ electronSequence,  electronDecisionsDumper ] )
 
-# CF construction
 
+
+##########################################
+# CF construction
+##########################################
 from AthenaCommon.CFElements import parOR, seqOR, seqAND, stepSeq
 
 from DecisionHandling.DecisionHandlingConf import TriggerSummaryAlg
 summary = TriggerSummaryAlg( "TriggerSummaryAlg" )
-summary.L1Decision = "HLTChains"
+summary.InputDecision = "HLTChains"
 summary.FinalDecisions = [ "ElectronL2Decisions", "MuonL2Decisions" ]
 summary.OutputLevel = DEBUG
 
-steps = seqAND("HLTSteps"  )
+steps = seqAND("EgammaMenu_HLTSteps"  )
 decisionTree_From_Chains(steps, testChains, NSTEPS=1)
 steps += summary
 
 mon = TriggerSummaryAlg( "TriggerMonitoringAlg" )
-mon.L1Decision = "HLTChains"
+mon.InputDecision = "HLTChains"
 mon.FinalDecisions = [ "ElectronL2Decisions", "MuonL2Decisions", "WhateverElse" ]
 mon.HLTSummary = "MonitoringSummary"
 mon.OutputLevel = DEBUG
@@ -161,8 +567,8 @@ hltTop = seqOR( "hltTop", [ steps, mon] )
 topSequence += hltTop
 
 
-print fastCaloViewsMaker
-print theFastCaloHypo
+#print fastCaloViewsMaker
+#print theFastCaloHypo
 
 
 ##########################################  
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.withViews.py b/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.withViews.py
index 903feb1a978..22f3c41fa5b 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.withViews.py
+++ b/Trigger/TrigValidation/TrigUpgradeTest/share/egamma.withViews.py
@@ -80,6 +80,8 @@ fastCaloViewsMaker.Views = "EMCaloViews"
 fastCaloViewsMaker.ViewNodeName = "fastCaloInViewAlgs"
 theFastCaloAlgo.RoIs = fastCaloViewsMaker.InViewRoIs
 
+CaloViewVerify = CfgMgr.AthViews__ViewDataVerifier("FastCaloViewDataVerifier")
+CaloViewVerify.DataObjects = [('TrigRoiDescriptorCollection' , 'StoreGateSvc+fastCaloViewsMaker_InViewRoIs_out')]
 
 
 
@@ -355,21 +357,27 @@ egammaIDStep = stepSeq("egammaIDStep", filterCaloRoIsAlg, [ electronSequence,  e
 
 # CF construction
 
+from DecisionHandling.DecisionHandlingConf import TriggerSummaryAlg
+summaryStep0 = TriggerSummaryAlg( "TriggerSummaryStep1" )
+summaryStep0.InputDecision = "HLTChains"
+summaryStep0.HLTSummary = "MonitoringSummaryStep1"
+summaryStep0.FinalDecisions = [ theFastCaloHypo.Decisions ]
+summaryStep0.OutputLevel = DEBUG
 
 
-step0 = parOR("step0", [ egammaCaloStep ] )
+step0 = parOR("step0", [ egammaCaloStep, summaryStep0 ] )
 step1 = parOR("step1", [ egammaIDStep ] )
 
-from DecisionHandling.DecisionHandlingConf import TriggerSummaryAlg
+
 summary = TriggerSummaryAlg( "TriggerSummaryAlg" )
-summary.L1Decision = "HLTChains"
+summary.InputDecision = "HLTChains"
 summary.FinalDecisions = [ "ElectronL2Decisions", "MuonL2Decisions" ]
 summary.OutputLevel = DEBUG
 
 steps = seqAND("HLTSteps", [ step0, step1, summary ]  )
 
 mon = TriggerSummaryAlg( "TriggerMonitoringAlg" )
-mon.L1Decision = "HLTChains"
+mon.InputDecision = "HLTChains"
 mon.FinalDecisions = [ "ElectronL2Decisions", "MuonL2Decisions", "WhateverElse" ]
 mon.HLTSummary = "MonitoringSummary"
 mon.OutputLevel = DEBUG
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/src/TestComboHypoAlg.cxx b/Trigger/TrigValidation/TrigUpgradeTest/src/TestComboHypoAlg.cxx
index ea3e1457633..9355232e373 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/src/TestComboHypoAlg.cxx
+++ b/Trigger/TrigValidation/TrigUpgradeTest/src/TestComboHypoAlg.cxx
@@ -10,66 +10,81 @@
 
 namespace HLTTest {
 
-TestComboHypoAlg::TestComboHypoAlg( const std::string& name, 
-			  ISvcLocator* pSvcLocator ) : 
-  ::AthReentrantAlgorithm( name, pSvcLocator )  {
-  //declareProperty( "Property", m_nProperty );
-  declareProperty( "Input1", m_recoInput1 ); 
-  declareProperty( "Input2", m_recoInput2 );
-  declareProperty( "Property1", m_property1 );
-  declareProperty( "Property2", m_property2 );
-  declareProperty( "Threshold1", m_threshold1 = 0);
-  declareProperty( "Threshold2", m_threshold2 = 0);
-  declareProperty( "Output1", m_output1 );
-  declareProperty( "Output2", m_output2 );
-  declareProperty( "DecisionLabel", m_decisionLabel );
-}
-
-TestComboHypoAlg::~TestComboHypoAlg() {}
-
-StatusCode TestComboHypoAlg::initialize() {
-  ATH_MSG_INFO ("Initializing " << name() << "...");
-  CHECK( m_recoInput1.initialize() );
-  CHECK( m_recoInput2.initialize() );
-  CHECK( m_output1.initialize() );
-  CHECK( m_output2.initialize() );
-  CHECK( m_previousDecisions1.initialize() );
-  renounce(m_previousDecisions1);
-  CHECK( m_previousDecisions2.initialize() );
-  renounce(m_previousDecisions2);
-
-  CHECK( not m_chainsProperty.empty() );
+  TestComboHypoAlg::TestComboHypoAlg( const std::string& name, 
+				      ISvcLocator* pSvcLocator ) : 
+    ::AthReentrantAlgorithm( name, pSvcLocator )  {
+    //declareProperty( "Property", m_nProperty );
+    declareProperty( "Input1", m_recoInput1 ); 
+    declareProperty( "Input2", m_recoInput2 );
+    declareProperty( "Property1", m_property1 );
+    declareProperty( "Property2", m_property2 );
+    declareProperty( "Threshold1", m_threshold1 = 0);
+    declareProperty( "Threshold2", m_threshold2 = 0);
+    declareProperty( "Output1", m_output1 );
+    declareProperty( "Output2", m_output2 );
+    declareProperty( "DecisionLabel", m_decisionLabel );
+  }
+
+  TestComboHypoAlg::~TestComboHypoAlg() {}
+
+  StatusCode TestComboHypoAlg::initialize() {
+    ATH_MSG_INFO ("Initializing " << name() << "...");
+    CHECK( m_recoInput1.initialize() );
+    CHECK( m_recoInput2.initialize() );
+    CHECK( m_output1.initialize() );
+    CHECK( m_output2.initialize() );
+    CHECK( m_previousDecisions1.initialize() );
+    renounce(m_previousDecisions1);
+    CHECK( m_previousDecisions2.initialize() );
+    renounce(m_previousDecisions2);
+
+    CHECK( not m_chainsProperty.empty() );
   
-  for ( const std::string& el: m_chainsProperty ) 
-    m_chains.insert( HLT::Identifier( el ).numeric() );
+    for ( const std::string& el: m_chainsProperty ) 
+      m_chains.insert( HLT::Identifier( el ).numeric() );
   
-  for ( const HLT::Identifier& id: m_chains )
-    ATH_MSG_DEBUG( "Configured to require chain " << id );
+    for ( const HLT::Identifier& id: m_chains )
+      ATH_MSG_DEBUG( "Configured to require chain " << id );
   
-  return StatusCode::SUCCESS;
-}
+    return StatusCode::SUCCESS;
+  }
 
-StatusCode TestComboHypoAlg::finalize() {
-  ATH_MSG_INFO ("Finalizing " << name() << "...");
+  StatusCode TestComboHypoAlg::finalize() {
+    ATH_MSG_INFO ("Finalizing " << name() << "...");
 
-  return StatusCode::SUCCESS;
-}
+    return StatusCode::SUCCESS;
+  }
 
   bool TestComboHypoAlg::passed( const Decision* d1, const Decision* d2 ) const {
     {
-      auto feature1 = d1->objectLink<xAOD::TrigCompositeContainer>( "feature" );    
-      float v = (*feature1)->getDetail<float>( m_property1 );
-      ATH_MSG_DEBUG("Prop1="<<v);
-      if ( v < m_threshold1 )
-	return false;
+      auto feature1 = d1->objectLink<xAOD::TrigCompositeContainer>( "feature" );
+      if ( not feature1.isValid() )  {
+	ATH_MSG_ERROR( "Can not find reference to the object from the decision1" );
+	return false; //StatusCode::FAILURE;
+      }
+      if ( (*feature1)->hasDetail<float>(m_property1 ) ){
+	float v = (*feature1)->getDetail<float>( m_property1 );
+	ATH_MSG_DEBUG("Prop1="<<v);
+	if ( v < m_threshold1 )
+	  return false;
+      }
+      else ATH_MSG_ERROR( "Cannot find detail "<<m_property1<<" in feature1");
     }
-    {
-      auto feature2 = d2->objectLink<xAOD::TrigCompositeContainer>( "feature" );    
-      float v = (*feature2)->getDetail<float>( m_property2 );
-      ATH_MSG_DEBUG("Prop2="<<v);
-      if ( v < m_threshold2 )
-	return false;
+    
+    {      
+      auto feature2 = d2->objectLink<xAOD::TrigCompositeContainer>( "feature" );
+      if ( not feature2.isValid() )  {
+	ATH_MSG_ERROR( "Can not find reference to the object from the decision2" );
+	return false;//StatusCode::FAILURE;
+      }
+      if ( (*feature2)->hasDetail<float>(m_property2 ) ){
+	float v = (*feature2)->getDetail<float>( m_property2 );
+	ATH_MSG_DEBUG("Prop2="<<v);
+	if ( v < m_threshold2 )
+	  return false;
+      } else ATH_MSG_ERROR( "Cannot find detail "<<m_property2<<" in feature2");
     }
+    
     return true;    
   }
 
@@ -101,26 +116,40 @@ StatusCode TestComboHypoAlg::finalize() {
     size_t counter1 = 0;
     for ( auto previousDecision: *previousDecisionsHandle1 ) {
       auto roiEL = previousDecision->objectLink<TrigRoiDescriptorCollection>( "initialRoI" );
-      CHECK( roiEL.isValid() );    
-      //    for ( auto obj1Iter = input1->begin(); obj1Iter != input1->end(); ++obj1Iter, ++counter1 ) {
+      CHECK( roiEL.isValid() );
       auto d = newDecisionIn( decisions1.get() );
-      d->setObjectLink( "feature", ElementLink<xAOD::TrigCompositeContainer>( m_recoInput1.key(),  counter1) );
-      d->setObjectLink( "initialRoI", roiEL );// this is used by the InputMaker
+      if (counter1<input1->size())
+	d->setObjectLink( "feature", ElementLink<xAOD::TrigCompositeContainer>( m_recoInput1.key(),  counter1) );
+      else
+	ATH_MSG_DEBUG( "Feature not added to the new decision of type 1: counter =" << counter1<<" list size = "<<input1->size());
+      d->setObjectLink( "initialRoI", roiEL );
       d->setObjectLink( "previousDecisions", ElementLink<DecisionContainer>(m_previousDecisions1.key(), counter1) );
+      counter1++;
     }
+    ATH_MSG_DEBUG( "Found  "<<counter1<<" rois from input 1 " );
     
     size_t counter2 = 0;
     for ( auto previousDecision: *previousDecisionsHandle2 ) {
       auto roiEL = previousDecision->objectLink<TrigRoiDescriptorCollection>( "initialRoI" );
       CHECK( roiEL.isValid() );    
-      //    for ( auto obj2Iter = input2->begin(); obj2Iter != input2->end(); ++obj2Iter, ++counter2 ) {
       auto d = newDecisionIn( decisions2.get() );
-      d->setObjectLink("feature", ElementLink<xAOD::TrigCompositeContainer>( m_recoInput2.key(),  counter2) );
+      //get the feature
+      if (counter2<input2->size())
+	d->setObjectLink( "feature", ElementLink<xAOD::TrigCompositeContainer>( m_recoInput2.key(),  counter2) );
+      else
+	ATH_MSG_DEBUG( "Feature not added to the new decision of type 2");      
       d->setObjectLink( "initialRoI", roiEL );// this is used by the InputMaker
       d->setObjectLink( "previousDecisions", ElementLink<DecisionContainer>(m_previousDecisions2.key(), counter2) );
+      counter2++;
     }
-    
+    ATH_MSG_DEBUG( "Found  "<<counter2<<" rois from input 2 " );
+
     // this is the tool
+    if (decisions1->size() ==0 || decisions2->size() == 0)
+      ATH_MSG_DEBUG("No combined hypo found, Do not go to the tool since n.dec1="<<  decisions1->size() << " and n.dec2="<< decisions2->size() <<" ");
+    else
+      ATH_MSG_DEBUG("Go to the tool with n.dec1="<<  decisions1->size() << " and n.dec2="<< decisions2->size() <<" ");
+
     counter1 = 0;
     for ( auto obj1Iter = decisions1->begin(); obj1Iter != decisions1->end(); ++obj1Iter, ++counter1 ) {
       auto previousDecisions1 = (*obj1Iter)->objectLink<DecisionContainer>( "previousDecisions" ); 
@@ -135,8 +164,8 @@ StatusCode TestComboHypoAlg::finalize() {
       
       std::vector<TrigCompositeUtils::DecisionID> intersection1;
       std::set_intersection( m_chains.begin(), m_chains.end(),
-			   objDecisions1.begin(), objDecisions1.end(),
-			   std::back_inserter( intersection1 ) );
+			     objDecisions1.begin(), objDecisions1.end(),
+			     std::back_inserter( intersection1 ) );
     
       if ( not intersection1.empty() ) {
 
@@ -190,7 +219,7 @@ StatusCode TestComboHypoAlg::finalize() {
       auto h = SG::makeHandle( m_output2 );
       CHECK( h.record( std::move( decisions2 ) , std::move( aux2 ) ) );
     }
-    
+    //    ATH_MSG_DEBUG ( "Exit with "<<decisions1->size() <<" decision from input 1 and " <<decisions2->size()<<" form input 2");
     return StatusCode::SUCCESS;
   }
 
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/src/TestHypoAlg.cxx b/Trigger/TrigValidation/TrigUpgradeTest/src/TestHypoAlg.cxx
index e42701e9603..ccdc2ad9548 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/src/TestHypoAlg.cxx
+++ b/Trigger/TrigValidation/TrigUpgradeTest/src/TestHypoAlg.cxx
@@ -85,7 +85,7 @@ namespace HLTTest {
       ATH_MSG_DEBUG("Number of positive decisions for this input: " << objDecisions.size() );
 
       for ( TrigCompositeUtils::DecisionID id : objDecisions ) {
-       	ATH_MSG_DEBUG( " --- found decision " << HLT::Identifier( id ) );
+       	ATH_MSG_DEBUG( " --- found new decision " << HLT::Identifier( id ) );
       }  
 
     }
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/src/TestHypoTool.cxx b/Trigger/TrigValidation/TrigUpgradeTest/src/TestHypoTool.cxx
index a6f146084a4..8c7b63d31b4 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/src/TestHypoTool.cxx
+++ b/Trigger/TrigValidation/TrigUpgradeTest/src/TestHypoTool.cxx
@@ -40,13 +40,14 @@ namespace HLTTest {
   
   StatusCode TestHypoTool::decide( DecisionContainer* decisions ) const  {
     ATH_MSG_DEBUG( "Making new decisions " << name() );
+    size_t counter = 0;
     for ( auto d: *decisions )  {
       //get previous decisions
       auto previousDecisions = d->objectLink<DecisionContainer>( "previousDecisions" );    
       TrigCompositeUtils::DecisionIDContainer objDecisions;      
       TrigCompositeUtils::decisionIDs( *previousDecisions, objDecisions );
       
-      ATH_MSG_DEBUG("Number of previous decisions for this input: " << objDecisions.size() );
+      ATH_MSG_DEBUG("Number of previous decisions for input "<< counter <<"= " << objDecisions.size() );
       
       for ( TrigCompositeUtils::DecisionID id : objDecisions ) {
 	ATH_MSG_DEBUG( " -- found decision " << HLT::Identifier( id ) );
@@ -76,6 +77,7 @@ namespace HLTTest {
 	for ( const HLT::Identifier& id: m_chains )
 	  ATH_MSG_DEBUG( "Configured to require chain " << id );
       }
+      counter++;
     }
     
     return StatusCode::SUCCESS;
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/src/TestInputMaker.cxx b/Trigger/TrigValidation/TrigUpgradeTest/src/TestInputMaker.cxx
index 863382602ee..b43af275538 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/src/TestInputMaker.cxx
+++ b/Trigger/TrigValidation/TrigUpgradeTest/src/TestInputMaker.cxx
@@ -15,8 +15,6 @@ namespace HLTTest {
 			    ISvcLocator* pSvcLocator )    
     : AthAlgorithm( name, pSvcLocator ),
       m_linkName("feature") {
-    declareProperty( "Inputs", m_inputs, "Input Decisions (implicit)" );
-    declareProperty( "Output", m_recoOutput, "name of the output collection for input to next reco alg in sequence");
     declareProperty( "OutputType", m_outputType, "reserved for future use");
     declareProperty( "LinkName", m_linkName, "name of the link to the features in the decision, e.g. 'feature', 'InitialRoI'");
   }
@@ -35,6 +33,7 @@ namespace HLTTest {
     ATH_MSG_DEBUG(" and produce " << m_recoOutput);
 
     CHECK( m_recoOutput.initialize() );
+    CHECK( m_decisionsKey.initialize() );
     return StatusCode::SUCCESS;
   }
 
@@ -47,70 +46,127 @@ namespace HLTTest {
   StatusCode TestInputMaker::execute() {
     ATH_MSG_DEBUG( "Executing " << name() << "..." );
 
-    //auto outputHandle = SG::makeHandle(m_recoOutput);
+    // output decisions
+    auto Outdecisions = std::make_unique<DecisionContainer>();
+    auto dec_aux = std::make_unique<DecisionAuxContainer>();
+    Outdecisions->setStore( dec_aux.get() );
 
-    // make the new output collection, as a view container so it can be given const features
-    //    auto output = std::make_unique<ConstDataVector<xAOD::TrigCompositeContainer> >();
+    // output collection, as a view container so it can be given const features
     auto output = std::make_unique<xAOD::TrigCompositeContainer>();
     auto aux = std::make_unique<xAOD::TrigCompositeAuxContainer>();
     output->setStore( aux.get() );
 
-    //auto c = std::make_unique<ConstDataVector<TrigRoiDescriptorCollection> >();
-    //output->clear( SG::VIEW_ELEMENTS );
-    // view containers do not have aux stores of their own so no need to create nor call output->setStore
-
     ATH_MSG_DEBUG( "number of implicit ReadHandles is " << m_inputs.size() );
-
-    // Loop over contents of this, which are of course TrigComposites, and request their features
-    //    auto inputHandles = m_inputs.makeHandles();
+    std::map<const FeatureOBJ*,    TrigCompositeUtils::Decision* > featureFromDecision;
+      
+    // Loop over all input containers, which are of course TrigComposites, and request their features    
     size_t outputIndex = 0;
     for ( auto inputKey: m_inputs ) {
       auto inputHandle = SG::makeHandle( inputKey );
-      //    for (auto inputHandle: inputHandles){
       ATH_MSG_DEBUG( "Got DecisionContainer from input "<< inputKey.key()<<" with " << inputHandle->size() << " elements" );
 
       // loop over decisions retrieved from this input
-      // The input is a DecisionContainer, alias for a TrigCompositeContainer.
-      for (auto decision=inputHandle->begin(); decision!=inputHandle->end(); ++decision){
-	//        ATH_MSG_DEBUG( "Got Decision (TrigComposite): " << *decision);
-        // retrieve feature from TrigComposite, will in this case be a TrigRoiDescriptor
-        // objectLink method is templated with container but returns single contained class
-        //ElementLink<xAOD::TrigCompositeContainer> feature = (*decision)->objectLink<xAOD::TrigCompositeContainer>( m_linkName.value() );
-        auto featurelink = (*decision)->objectLink<TrigRoiDescriptorCollection>( m_linkName.value() );
-        if ( not featurelink.isValid() )  {
-          ATH_MSG_ERROR( " Can not find reference to " + m_linkName.value() + " from the decision" );
-          return StatusCode::FAILURE;
-        }
+      size_t counter =0;
+      for ( auto decision : *inputHandle){
+	auto roiEL = decision->objectLink<TrigRoiDescriptorCollection>( "initialRoI" );
+	CHECK( roiEL.isValid() );
+	
+	// retrieve feature  from TrigComposite, will in this case be a TrigRoiDescriptor
+	auto featurelink = (decision)->objectLink<FeatureContainer>( m_linkName.value() );
+	if ( not featurelink.isValid() )  {
+	  ATH_MSG_ERROR( " Can not find reference to " + m_linkName.value() + " from the decision" );
+	  return StatusCode::FAILURE;
+	}
         
-	auto featurePtr(featurelink.cptr());
-	ATH_MSG_DEBUG("    Found feature " <<m_linkName.value() <<": " << **featurePtr );
-
-        // copy all features to a single output collection 
-        // they just happen to be TrigComposites in this case but should be whatever is needed as input by the reco algorithm next in the sequence, e.g. CaloCells.
-      
-	//auto output = std::make_unique< ConstDataVector< xAOD::TrigCompositeContainer > > ();
-	//output->clear( SG::VIEW_ELEMENTS );
-	auto tc = new xAOD::TrigComposite;
-	output->push_back(tc); 
-	tc->setObjectLink(m_linkName.value(), featurelink);
-	//output->setObjectLink(m_linkName.value(), featurelink);
-        ATH_MSG_DEBUG( "    copied feature " << m_linkName.value() <<" to output " <<outputIndex);
-	//	CHECK( outputHandle.record( std::move( output ) ) );
-	outputIndex++;
-	//        tc->setDetail( m_linkName.value(), feature );
+	const FeatureOBJ* feature = *featurelink;
+	ATH_MSG_DEBUG("Found feature " <<m_linkName.value() <<": " << *feature );
+
+       // merge outputs that are linked to the same feature (RoI): this avoids processing the same RoI from TC decisions from different chains
+	bool already_exist=false;
+	auto it = featureFromDecision.find(feature);
+	if (it != featureFromDecision.end()){
+	  already_exist=true;	 
+	}
+
+	TrigCompositeUtils::Decision* newd;
+	if (! already_exist) {
+	  ATH_MSG_DEBUG( "Make new decision");
+
+	  // create the "reco" output
+	  auto tc = new xAOD::TrigComposite;
+	  output->push_back(tc);	  
+	  // copy all features to a single output collection 
+	  tc->setObjectLink(m_linkName.value(), featurelink);
+
+	  // create new decision
+	  newd = newDecisionIn( Outdecisions.get() );
+	  newd->setObjectLink( m_linkName.value(), featurelink);
+	  // this is done only once, the first time it is found
+	  newd->setObjectLink( "initialRoI", roiEL );
+	  // do we have to store all previous descisions?
+	  newd->setObjectLink( "previousDecisions", ElementLink<DecisionContainer>(inputKey.key(), counter) );// link to previous decision object
+	  // update map
+	  featureFromDecision.insert( std::make_pair( feature,  ( TrigCompositeUtils::Decision* ) newd ) ); 
+	  outputIndex++;	  
+	}
+	else{
+	  newd=featureFromDecision[feature];	  
+	}
+	
+	ATH_MSG_DEBUG( "Copy decisions from input " << counter <<" with exist flag=" <<already_exist <<" to output "<< &newd   );
+	{
+          //copy decisions ID
+          TrigCompositeUtils::DecisionIDContainer objDecisions;      
+          TrigCompositeUtils::decisionIDs( decision, objDecisions );
+          for ( const HLT::Identifier& id: objDecisions ){
+	    TrigCompositeUtils::addDecisionID( id, newd );
+	    // ATH_MSG_DEBUG( " -- adding decision " << HLT::Identifier( id ) );
+	  }
+	  // debug
+	  // TrigCompositeUtils::DecisionIDContainer newObjDecisions;      
+	  // TrigCompositeUtils::decisionIDs( newd, newObjDecisions );
+	  // for ( const HLT::Identifier& id: newObjDecisions ){
+	  //   ATH_MSG_DEBUG( " -- has decision " << HLT::Identifier( id ) );
+	  // }
+        }
+	
+	counter++;
 	
         // For early tests, create TC, link to RoiD, push back onto TCC.
         // Later will output RoID collection directly via tool.
         
       } // loop over decisions
     } // loop over input keys
-    
 
-    ATH_MSG_DEBUG("Produced "<<output->size() <<" objects");
+    
+   
     // Finally, record output
-    auto outputHandle = SG::makeHandle(m_recoOutput);
-    CHECK( outputHandle.record(std::move(output), std::move(aux)) );
-  
+    ATH_MSG_DEBUG("Should find "<<outputIndex<<" obejcts and decisions");
+    ATH_MSG_DEBUG("Produced "<<output->size() <<" objects");
+    auto reco_outputHandle = SG::makeHandle(m_recoOutput);
+    CHECK( reco_outputHandle.record(std::move(output), std::move(aux)) );
+
+
+    // and decision output
+    ATH_MSG_DEBUG("Produced "<<Outdecisions->size() <<" decisions");
+    auto dec_handle =  SG::makeHandle( m_decisionsKey );
+    CHECK( dec_handle.record( std::move( Outdecisions ), std::move( dec_aux ) ) );
+   
+
+    //debug
+
+    for (auto outh:  *dec_handle){
+      TrigCompositeUtils::DecisionIDContainer objDecisions;      
+      TrigCompositeUtils::decisionIDs( outh, objDecisions );
+      
+      ATH_MSG_DEBUG("Number of positive decisions for this input: " << objDecisions.size() );
+
+      for ( TrigCompositeUtils::DecisionID id : objDecisions ) {
+	ATH_MSG_DEBUG( " --- found decision " << HLT::Identifier( id ) );
+      }  
+    }
+
+
     return StatusCode::SUCCESS;
   }
 
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/src/TestInputMaker.h b/Trigger/TrigValidation/TrigUpgradeTest/src/TestInputMaker.h
index 2e29733a9bf..52d1384a221 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/src/TestInputMaker.h
+++ b/Trigger/TrigValidation/TrigUpgradeTest/src/TestInputMaker.h
@@ -40,12 +40,15 @@ namespace HLTTest {
 
   private: 
     TestInputMaker();
-    //SG::WriteHandleKey<ConstDataVector<xAOD::TrigCompositeContainer> > m_recoOutput;
-    //    SG::WriteHandleKey<ConstDataVector<TrigRoiDescriptorCollection> > m_recoOutput;
-    //SG::WriteHandleKey<ConstDataVector<TestCluster> > m_recoOutput;
+ 
+    typedef TrigRoiDescriptor FeatureOBJ;
+    typedef TrigRoiDescriptorCollection FeatureContainer;
 
-    SG::ReadHandleKeyArray<TrigCompositeUtils::DecisionContainer> m_inputs;
-    SG::WriteHandleKey<xAOD::TrigCompositeContainer> m_recoOutput;
+    SG::ReadHandleKeyArray<TrigCompositeUtils::DecisionContainer> m_inputs  { this, "InputDecisions", {}, "Input Decisions (implicit)" };
+    SG::WriteHandleKey<xAOD::TrigCompositeContainer> m_recoOutput { this, "Output", "undefined", "name of the output collection for input to next reco alg in sequence" };
+    SG::WriteHandleKey< TrigCompositeUtils::DecisionContainer > m_decisionsKey { this, "OutputDecisions", "Unspecified", "Ouput Decisions" };
+
+    
     StringProperty m_linkName; 
     StringProperty m_outputType; 
   }; 
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/src/TestRecoAlg.cxx b/Trigger/TrigValidation/TrigUpgradeTest/src/TestRecoAlg.cxx
index 0e21986ed1b..d6082a17f90 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/src/TestRecoAlg.cxx
+++ b/Trigger/TrigValidation/TrigUpgradeTest/src/TestRecoAlg.cxx
@@ -89,37 +89,53 @@ namespace HLTTest {
     using namespace TrigCompositeUtils;
     ATH_MSG_DEBUG ("Executing " << name() << "...");
 
+    const EventContext& context = Gaudi::Hive::currentContext();
+    const size_t eventNo = context.evt() % m_data.size();
+    auto objects= m_data[eventNo];
+
     auto output = std::make_unique<xAOD::TrigCompositeContainer>();
     auto aux = std::make_unique<xAOD::TrigCompositeAuxContainer>();
     output->setStore( aux.get() );
-    if ( not m_input.key().empty() ) {
-      auto inputHandle = SG::makeHandle(m_input);
-      ATH_MSG_DEBUG("Input " << m_input.key() << " should be available, scanning it");
-      for ( auto i: *inputHandle.cptr() ) {
-	auto roiLink = findLink<TrigRoiDescriptorCollection>(i, "initialRoI");
-	if ( roiLink.isValid() ) {
-	  auto roiPtr(roiLink.link.cptr());
-	  ATH_MSG_DEBUG("RoI" << **roiPtr );
-	} else {
-	  ATH_MSG_DEBUG("RoI information missing");
+    //    if ( not m_input.key().empty() ) {
+    auto inputHandle = SG::makeHandle(m_input);
+    ATH_MSG_DEBUG("Input " << m_input.key() << " has "<<inputHandle->size() <<" elements, scanning it");
+    for ( auto i: *inputHandle.cptr() ) {
+      auto roiLink = findLink<TrigRoiDescriptorCollection>(i, "initialRoI");
+      if ( roiLink.isValid() ) {
+	auto roiPtr(roiLink.link.cptr());
+	ATH_MSG_DEBUG("RoI" << **roiPtr );
+	// create new outpu objects and add the properties
+	if (objects.size() > output->size()) {
+	  auto object=objects[output->size()];
+	  auto xobj = new xAOD::TrigComposite;
+	  output->push_back( xobj );
+	  ATH_MSG_DEBUG( "Reconstructed object" );
+	  for ( auto prop : object )  {
+	    xobj->setDetail( prop.first, prop.second );
+	    ATH_MSG_DEBUG( "  " << prop.first << " : " << prop.second );
+	  }
+	}
+	else {
+	  ATH_MSG_DEBUG( "No reco object created for this RoI because it's not found in the event");
 	}
+      } else {
+	ATH_MSG_DEBUG("RoI information missing");
       }
     }
+    //}
 
       
     
-    const EventContext& context = Gaudi::Hive::currentContext();
-    const size_t eventNo = context.evt() % m_data.size();
     
-    for ( auto object: m_data[eventNo] ) {
-      auto xobj = new xAOD::TrigComposite;
-      output->push_back( xobj );
-      ATH_MSG_DEBUG( "Reconstructed object" );
-      for ( auto prop : object )  {
-	xobj->setDetail( prop.first, prop.second );
-	ATH_MSG_DEBUG( "  " << prop.first << " : " << prop.second );
-      }
-    }
+    // for ( auto object: m_data[eventNo] ) {
+    //   auto xobj = new xAOD::TrigComposite;
+    //   output->push_back( xobj );
+    //   ATH_MSG_DEBUG( "Reconstructed object" );
+    //   for ( auto prop : object )  {
+    // 	xobj->setDetail( prop.first, prop.second );
+    // 	ATH_MSG_DEBUG( "  " << prop.first << " : " << prop.second );
+    //   }
+    // }
 
     ATH_MSG_DEBUG("Reconstructed "<<output->size() <<" objects");
   
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/src/components/TrigUpgradeTest_entries.cxx b/Trigger/TrigValidation/TrigUpgradeTest/src/components/TrigUpgradeTest_entries.cxx
index f644290d8e9..fd90b375c03 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/src/components/TrigUpgradeTest_entries.cxx
+++ b/Trigger/TrigValidation/TrigUpgradeTest/src/components/TrigUpgradeTest_entries.cxx
@@ -17,3 +17,4 @@ DECLARE_COMPONENT( HLTTest::TestRecoAlg )
 DECLARE_COMPONENT( HLTTest::TestRoRSeqFilter )
 DECLARE_COMPONENT( HLTTest::TestMerger )
 DECLARE_COMPONENT( HLTTest::TestComboHypoAlg )
+
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_menu.sh b/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_menu.sh
new file mode 100755
index 00000000000..1dd05399d8a
--- /dev/null
+++ b/Trigger/TrigValidation/TrigUpgradeTest/test/test_egamma_menu.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+# art-type: build
+# art-ci: master
+
+athena --threads=1 --evtMax=10 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TrigUpgradeTest/egamma.menu.py
-- 
GitLab