diff --git a/Control/AthenaMonitoring/python/DefineHistogram.py b/Control/AthenaMonitoring/python/DefineHistogram.py
new file mode 100644
index 0000000000000000000000000000000000000000..bb7e2993423696a1fa712ba50de6a238ef09e3e0
--- /dev/null
+++ b/Control/AthenaMonitoring/python/DefineHistogram.py
@@ -0,0 +1,25 @@
+def defineHistogram(varname, type='TH1F', path='EXPERT',
+                    title='Unspecified_title_for_the_histogram_is_truly_annoying,_because_this_default_is_long;unspecified_label;unspecified_label',
+                    xbins=100, xmin=0, xmax=1,
+                    ybins=None, ymin=None, ymax=None, zmin=None, zmax=None, opt='', labels=None):
+    """ Generates the histogram definition string which is digestable by TrigGenericMonitoringTool.
+
+
+    Note that defaults are compleetly unreasonable. The tile is intentionally made annoying.
+    For histogras types supported and allowed paths have a look at TrigGenericMonitoringTool documentation.
+    """
+    coded = "%s, %s, %s, %s, %d, %f, %f" % (path, type, varname, title, xbins, xmin, xmax)
+    if ybins is not None:
+        coded += ",%d, %f, %f" % (ybins, ymin, ymax)
+        if zmin is not None:
+            coded += ", %f, %f" % (zmin, zmax)
+    if ybins is None and ymin is not None:
+        coded += ", %f, %f" % (ymin, ymax)
+    if labels is not None:
+        labels = labels.strip()   # remove spurious white-spaces
+        if len(labels)>0:
+            if labels[-1]!=':': labels += ':'  # C++ parser expects at least one ":"
+            coded += ",%s " % labels
+    coded += ", %s" % opt
+
+    return coded
diff --git a/Trigger/TrigMonitoring/TrigMonitorBase/python/TrigGenericMonitoringToolConfig.py b/Trigger/TrigMonitoring/TrigMonitorBase/python/TrigGenericMonitoringToolConfig.py
index a3ac8ec2222d8bcb32b5f8c00e035998d0ad8f87..ef91cf401263d354ce6b36cd79d7ae5e3b7d4e2b 100755
--- a/Trigger/TrigMonitoring/TrigMonitorBase/python/TrigGenericMonitoringToolConfig.py
+++ b/Trigger/TrigMonitoring/TrigMonitorBase/python/TrigGenericMonitoringToolConfig.py
@@ -19,32 +19,8 @@ else:
         as TrigGenericMonitoringTool
     log.info("Using thread-safe TrigGenericMonitoringTool")
 
-
-def defineHistogram(varname, type='TH1F', path='EXPERT',
-                    title='Unspecified_title_for_the_histogram_is_truly_annoying,_because_this_default_is_long;unspecified_label;unspecified_label',
-                    xbins=100, xmin=0, xmax=1,
-                    ybins=None, ymin=None, ymax=None, zmin=None, zmax=None, opt='', labels=None):
-    """ Generates the histogram definition string which is digestable by TrigGenericMonitoringTool.
-
-
-    Note that defaults are compleetly unreasonable. The tile is intentionally made annoying.
-    For histogras types supported and allowed paths have a look at TrigGenericMonitoringTool documentation.
-    """
-    coded = "%s, %s, %s, %s, %d, %f, %f" % (path, type, varname, title, xbins, xmin, xmax)
-    if ybins is not None:
-        coded += ",%d, %f, %f" % (ybins, ymin, ymax)
-        if zmin is not None:
-            coded += ", %f, %f" % (zmin, zmax)
-    if ybins is None and ymin is not None:
-        coded += ", %f, %f" % (ymin, ymax)
-    if labels is not None:
-        labels = labels.strip()   # remove spurious white-spaces
-        if len(labels)>0:
-            if labels[-1]!=':': labels += ':'  # C++ parser expects at least one ":"
-            coded += ",%s " % labels
-    coded += ", %s" % opt
-
-    return coded
+from AthenaMonitoring.DefineHistogram import defineHistogram as __defineHistogram
+defineHistogram = __defineHistogram
 
 
 class TrigGenericMonitoringToolConfig(TrigGenericMonitoringTool):
diff --git a/Trigger/TrigSteer/L1Decoder/CMakeLists.txt b/Trigger/TrigSteer/L1Decoder/CMakeLists.txt
index 7711fd4b891f4b8550f7682403435dcec2f6816b..560d50baa503ddbae48d812599c90a21f352d657 100644
--- a/Trigger/TrigSteer/L1Decoder/CMakeLists.txt
+++ b/Trigger/TrigSteer/L1Decoder/CMakeLists.txt
@@ -52,6 +52,7 @@ atlas_add_component( L1Decoder
 		     L1DecoderLib	
                      )
 
+atlas_install_python_modules( python/*.py)
 # Install files from the package:
 atlas_install_headers( L1Decoder )
 atlas_install_joboptions( share/*.py )
diff --git a/Trigger/TrigSteer/L1Decoder/python/L1DecoderMonitoring.py b/Trigger/TrigSteer/L1Decoder/python/L1DecoderMonitoring.py
new file mode 100644
index 0000000000000000000000000000000000000000..b262ca91a19f26f27b22518441484b45d6193118
--- /dev/null
+++ b/Trigger/TrigSteer/L1Decoder/python/L1DecoderMonitoring.py
@@ -0,0 +1,12 @@
+from AthenaMonitoring.AthenaMonitoringConf import GenericMonitoringTool
+from AthenaMonitoring.DefineHistogram import defineHistogram
+
+
+def CTPUnpackingMonitoring(maxItems, maxChains):
+    tool = GenericMonitoringTool('CTPUnpackingMonitoring')
+    tool.HistogramsGroupName="L1Decoder";
+    tool.Histograms = [defineHistogram('TAVItems', path='EXPERT', type='TH1F', title='Number of active L1 TAV items;N Items;N Events',
+                                       xbins=maxItems, xmin=0, xmax=maxItems),
+                       defineHistogram('Chains', path='EXPERT', type='TH1F', title='Number of activated Chains;N Chains;N Events',
+                                       xbins=maxChains, xmin=0, xmax=maxChains) ]
+    return tool
diff --git a/Trigger/TrigSteer/L1Decoder/share/decodeBS.py b/Trigger/TrigSteer/L1Decoder/share/decodeBS.py
index 12ca54b270c2f47d2426bfb087993c9624bfd5a5..8ebd64b2d903c9bf1c592545b2fb0737213f8ab5 100755
--- a/Trigger/TrigSteer/L1Decoder/share/decodeBS.py
+++ b/Trigger/TrigSteer/L1Decoder/share/decodeBS.py
@@ -60,6 +60,11 @@ if not hasattr( svcMgr, "ByteStreamAddressProviderSvc" ):
     from ByteStreamCnvSvcBase.ByteStreamCnvSvcBaseConf import ByteStreamAddressProviderSvc 
     svcMgr += ByteStreamAddressProviderSvc()
 
+if not hasattr(svcMgr, 'THistSvc'):
+  from GaudiSvc.GaudiSvcConf import THistSvc
+  svcMgr += THistSvc()
+svcMgr.THistSvc.Output = ["EXPERT DATAFILE='expert-monitoring.root', OPT='RECREATE'"]
+
 
 from TrigConfigSvc.TrigConfigSvcConf import TrigConf__LVL1ConfigSvc
 l1svc = TrigConf__LVL1ConfigSvc("LVL1ConfigSvc")
@@ -83,30 +88,21 @@ if nThreads >= 1:
   topSequence += SGInputLoader( OutputLevel=INFO, ShowEventDump=False )
   topSequence.SGInputLoader.Load = [ ('ROIB::RoIBResult','RoIBResult') ]
 
-
-doL1Emulation=False
+from L1Decoder.L1DecoderMonitoring import *
 from L1Decoder.L1DecoderConf import CTPUnpackingTool, EMRoIsUnpackingTool, L1Decoder, MURoIsUnpackingTool
 from L1Decoder.L1DecoderConf import CTPUnpackingEmulationTool, RoIsUnpackingEmulationTool
 l1Decoder = L1Decoder( OutputLevel=DEBUG )
-if doL1Emulation:
-    ctpUnpacker = CTPUnpackingEmulationTool( OutputLevel =  DEBUG, ForceEnableAllChains=True )
-else:
-    ctpUnpacker = CTPUnpackingTool( OutputLevel =  DEBUG, ForceEnableAllChains=True )
+ctpUnpacker = CTPUnpackingTool( OutputLevel =  DEBUG, ForceEnableAllChains=True )
+
 
 l1Decoder.ctpUnpacker = ctpUnpacker
+l1Decoder.ctpUnpacker.MonTool = CTPUnpackingMonitoring(512, 200)
 l1Decoder.ctpUnpacker.CTPToChainMapping = ["0:HLT_e3",  "0:HLT_g5", "1:HLT_e7", "2:HLT_2e3", "15:HLT_mu6", "33:HLT_2mu6", "15:HLT_mu6idperf", "42:HLT_e15mu4"] # this are real IDs of L1_* items in pp_v5 menu
 
-if doL1Emulation:
-    emUnpacker = RoIsUnpackingEmulationTool("EMRoIsUnpackingTool", OutputLevel=DEBUG )
-else:
-    emUnpacker = EMRoIsUnpackingTool( OutputLevel=DEBUG )
-
+emUnpacker = EMRoIsUnpackingTool( OutputLevel=DEBUG )
 emUnpacker.ThresholdToChainMapping = ["EM3 : HLT_e3", "EM3 : HLT_g5",  "EM7 : HLT_e7", "EM15 : HLT_e15mu4" ]
 
-if doL1Emulation:
-    muUnpacker = RoIsUnpackingEmulationTool("MURoIsUnpackingTool", OutputLevel=DEBUG )
-else:
-    muUnpacker = MURoIsUnpackingTool( OutputLevel=DEBUG )
+muUnpacker = MURoIsUnpackingTool( OutputLevel=DEBUG )
 muUnpacker.ThresholdToChainMapping = ["MU6 : HLT_mu6", "MU6 : HLT_mu6idperf", "MU4 : HLT_e15mu4"] 
 # do not know yet how to configure the services for it
 
@@ -125,18 +121,6 @@ chainSeedingDumper.Decisions = "HLTChainsResult"
 topSequence += chainSeedingDumper
 
 
-
-# caloDecoder = L1CaloDecoder() # by default it is steered towards the RoIBResult of the name above
-# caloDecoder.OutputLevel=VERBOSE
-# topSequence += caloDecoder
-
-# #Dumper
-# from ViewAlgs.ViewAlgsConf import DumpDecisions
-# dumper = DumpDecisions("L1CaloDecisions")
-# dumper.OutputLevel=VERBOSE
-# topSequence += dumper
-
-
 #--------------------------------------------------------------
 # Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL)
 #--------------------------------------------------------------
diff --git a/Trigger/TrigSteer/L1Decoder/src/CTPUnpackingTool.cxx b/Trigger/TrigSteer/L1Decoder/src/CTPUnpackingTool.cxx
index ff1d559876a0a614eaf02c0d5897237bc5a7ad16..d15026af6fba21510c912480740446f2d83d58cd 100644
--- a/Trigger/TrigSteer/L1Decoder/src/CTPUnpackingTool.cxx
+++ b/Trigger/TrigSteer/L1Decoder/src/CTPUnpackingTool.cxx
@@ -11,20 +11,29 @@ using namespace HLT;
 CTPUnpackingTool::CTPUnpackingTool( const std::string& type,
 				    const std::string& name, 
 				    const IInterface* parent ) 
-  : AthAlgTool(type, name, parent) {
+  : AthAlgTool(type, name, parent),
+    m_monTool("GenericMonitoringTool/MonTool", this) {  
   declareProperty("CTPToChainMapping", m_ctpToChainProperty, "Mapping of the form: '34:HLT_x', '35:HLT_y', ..., both CTP ID and chain may appear many times");
   declareProperty("ForceEnableAllChains", m_forceEnable=false, "Enables all chains in each event, testing mode");
+  declareProperty("MonTool", m_monTool=ToolHandle<GenericMonitoringTool>("", this), "Basic Monitoring");
 }
 
-
 CTPUnpackingTool::~CTPUnpackingTool()
 {}
 
+StatusCode CTPUnpackingTool::initialize() {   
+  if ( not m_monTool.name().empty() ) 
+    CHECK( m_monTool.retrieve() );
+  return decodeCTPToChainMapping(); 
+}
+
 
 
 StatusCode CTPUnpackingTool::decode( const ROIB::RoIBResult& roib,  HLT::IDVec& enabledChains ) const {
-  size_t numberPfActivatedBits= 0;
-  
+  using namespace Monitored;
+  auto nTAVItems = MonitoredScalar::declare("TAVItems", 0);
+  auto nChains   = MonitoredScalar::declare("Chains", 0);
+  auto monitorit = MonitoredScope::declare(m_monTool, nTAVItems, nChains);
   auto tav = roib.cTPResult().TAV();
   const size_t tavSize = tav.size();
 
@@ -34,19 +43,24 @@ StatusCode CTPUnpackingTool::decode( const ROIB::RoIBResult& roib,  HLT::IDVec&
       const bool decision = ( tav[wordCounter].roIWord() & (1 << bitCounter) ) > 0;
 
       if ( decision == true or m_forceEnable ) {
-	if ( decision ) 
+	if ( decision ) {
+	  nTAVItems = nTAVItems + 1;	  
 	  ATH_MSG_DEBUG( "L1 item " << ctpIndex << " active, enabling chains");
-	numberPfActivatedBits++;
+	}
+
 	auto itr = m_ctpToChain.find(ctpIndex);
-	if ( itr != m_ctpToChain.end() ) 
+	if ( itr != m_ctpToChain.end() ) {
 	  enabledChains.insert( enabledChains.end(), itr->second.begin(), itr->second.end() );
+
+	}
       }
     }    
   }
+  nChains = enabledChains.size();
   for ( auto chain: enabledChains ) {
     ATH_MSG_DEBUG( "Enabling chain: " << chain );
   }
-  if ( numberPfActivatedBits == 0 ) {
+  if ( nTAVItems == 0 ) {
     ATH_MSG_ERROR( "All CTP bits were disabled, this event shoudl not have shown here" );
     return StatusCode::FAILURE;
   }
diff --git a/Trigger/TrigSteer/L1Decoder/src/CTPUnpackingTool.h b/Trigger/TrigSteer/L1Decoder/src/CTPUnpackingTool.h
index dffc7967c6478b43ef85355bb2e473cc0de57726..3c4f412affa6a37c4874f8b1c92eab713d3ac99b 100644
--- a/Trigger/TrigSteer/L1Decoder/src/CTPUnpackingTool.h
+++ b/Trigger/TrigSteer/L1Decoder/src/CTPUnpackingTool.h
@@ -9,6 +9,7 @@
 #include "GaudiKernel/IAlgTool.h"
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "DecisionHandling/HLTIdentifier.h"
+#include "AthenaMonitoring/GenericMonitoringTool.h"
 
 #include "./ICTPUnpackingTool.h"
 
@@ -17,6 +18,8 @@ namespace ROIB {
 }
 
 
+
+
 class CTPUnpackingTool:  public AthAlgTool, virtual public ::ICTPUnpackingTool{
 
 public:
@@ -35,12 +38,12 @@ public:
    */
   StatusCode decode(const ROIB::RoIBResult& roib, HLT::IDVec& enabledChains) const override;
 
-  StatusCode initialize() override { return decodeCTPToChainMapping(); }
+  StatusCode initialize() override;
   
   
 
 private:
- 
+  ToolHandle<GenericMonitoringTool> m_monTool;
 }; 
 
 
diff --git a/Trigger/TrigSteer/L1Decoder/src/FakeCTP.cxx b/Trigger/TrigSteer/L1Decoder/src/FakeCTP.cxx
index fcb7fbf0c7d3f6fcdea3ccd096f9991c8abaaf6b..fffa8998f5268b8b455295a7e5020db35eb63206 100644
--- a/Trigger/TrigSteer/L1Decoder/src/FakeCTP.cxx
+++ b/Trigger/TrigSteer/L1Decoder/src/FakeCTP.cxx
@@ -49,6 +49,9 @@ StatusCode FakeCTP::execute() {
   m_decisions = CxxUtils::make_unique< xAOD::TrigCompositeContainer >();
   m_decisionsAux = CxxUtils::make_unique< xAOD::TrigCompositeAuxContainer>();
   m_decisions->setStore(m_decisionsAux.ptr());
+
+
+
   
   for ( const auto& chain : m_events[m_currentEvent] ) {
     ATH_MSG_DEBUG("Enabling chain " << TrigConf::HLTUtils::hash2string(chain, "chain"));
diff --git a/Trigger/TrigSteer/L1Decoder/src/IRoIsUnpackingTool.h b/Trigger/TrigSteer/L1Decoder/src/IRoIsUnpackingTool.h
index d402cac5839f5b18c73a862aef6644c0e7807c35..c561ac43e9e8105af7dd578edee7678417dfee08 100644
--- a/Trigger/TrigSteer/L1Decoder/src/IRoIsUnpackingTool.h
+++ b/Trigger/TrigSteer/L1Decoder/src/IRoIsUnpackingTool.h
@@ -52,6 +52,8 @@ protected:
   std::vector<std::string>              m_thresholdToChainProperty;
   std::map<HLT::Identifier, HLT::IDVec> m_thresholdToChainMapping;
 
+  //  ToolHandle<GenericMonitoringTool> m_monTool;
+
   StatusCode decodeMapping();
   void addChainsToDecision( HLT::Identifier thresholdId,
 			    TrigCompositeUtils::Decision* d,
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt b/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt
index 207226f2f1673b4e0f464a710af3bae039b46b20..50cef248d0e24208eed5fcf5d382a151fabea921 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt
+++ b/Trigger/TrigValidation/TrigUpgradeTest/CMakeLists.txt
@@ -58,5 +58,7 @@ atlas_add_test( caloRunData   SCRIPT scripts/caloRunData.sh
 
 atlas_add_test( EmuL1DecodingTest SCRIPT scripts/EmuL1DecodingTest.sh)
 
+atlas_add_test( DataL1DecodingTest SCRIPT scripts/DataL1DecodingTest.sh )
+
 atlas_install_joboptions( share/*.py )
 atlas_install_python_modules( python/*.py )
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/scripts/DataL1DecodingTest.sh b/Trigger/TrigValidation/TrigUpgradeTest/scripts/DataL1DecodingTest.sh
new file mode 100755
index 0000000000000000000000000000000000000000..56c20b088502c5324c1c81615fe0f5105c5926cc
--- /dev/null
+++ b/Trigger/TrigValidation/TrigUpgradeTest/scripts/DataL1DecodingTest.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/env sh
+
+get_files -xmls LVL1config_Physics_pp_v5.xml
+ln -s /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/atn-test/data15_13TeV.00266904.physics_EnhancedBias.merge.RAW._lb0452._SFO-1._0001.1 input.data
+
+athena.py --threads=1 L1Decoder/decodeBS.py
+
+cat <<EOF > hasStat.C
+void hasStat( const char* hname) {
+
+  TH1* h = (TH1*)_file0->Get( hname );
+  if ( h == 0 ) {
+     cout << "Missing histogram " << hname << "\n";
+     exit (EXIT_FAILURE);
+  }
+  Long_t entries = h->GetEntries();
+  if ( entries == 0 ) {
+     cout << "Histogram " << hname << " has ) entries \n";
+     exit (EXIT_FAILURE);
+  }
+  cout << "Histogram " << hname << " has " << entries << " entries \n";
+}
+EOF
+
+
+root -b -q expert-monitoring.root 'hasStat.C("L1Decoder/TAVItems")'
+root -b -q expert-monitoring.root 'hasStat.C("L1Decoder/Chains")'
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/scripts/EmuL1DecodingTest.sh b/Trigger/TrigValidation/TrigUpgradeTest/scripts/EmuL1DecodingTest.sh
index e465237de8d3e80382cce9e298afee3febc60105..30f0f8b3de3db5f898e331b6c55ed8fbefb3fca4 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/scripts/EmuL1DecodingTest.sh
+++ b/Trigger/TrigValidation/TrigUpgradeTest/scripts/EmuL1DecodingTest.sh
@@ -1,6 +1,6 @@
 #!/usr/bin/env sh
-get_files -xmls LVL1config_Physics_pp_v5.xml
+#get_files -xmls LVL1config_Physics_pp_v5.xml
 #get_files -data CTPEmulation.dat
-ln -s /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/atn-test/data15_13TeV.00266904.physics_EnhancedBias.merge.RAW._lb0452._SFO-1._0001.1 input.data
+#ln -s /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/atn-test/data15_13TeV.00266904.physics_EnhancedBias.merge.RAW._lb0452._SFO-1._0001.1 input.data
 
 athena.py --threads=1 TrigUpgradeTest/EmuL1DecodingTest.py
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/EmuL1DecodingTest.py b/Trigger/TrigValidation/TrigUpgradeTest/share/EmuL1DecodingTest.py
index b0230b84c0a615cbefcd98f79a5a3a9bf4b6395a..53663aaff37398467e7c5d2b15cbe652cebbe932 100755
--- a/Trigger/TrigValidation/TrigUpgradeTest/share/EmuL1DecodingTest.py
+++ b/Trigger/TrigValidation/TrigUpgradeTest/share/EmuL1DecodingTest.py
@@ -2,30 +2,13 @@
 #  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 #
 
-#
-# get_files LVL1config_Physics_pp_v5.xml
-# ln -s /afs/cern.ch/atlas/project/trigger/pesa-sw/validation/atn-test/data15_13TeV.00266904.physics_EnhancedBias.merge.RAW._lb0452._SFO-1._0001.1 input.data
-# exact config for this data is: https://atlas-trigconf.cern.ch/run2/smkey/2142/l1key/1077/hltkey/765/
-
 import os.path
-assert os.path.isfile('input.data'), 'No input file: see the JO to see how to get it'
-
-## @file L1Topo_ReadBS_test.py
-## @brief Example job options file to read BS file to test a converter
-## $Id: decodeBS.parallel.py 717359 2016-01-12 14:40:21Z bwynne $
-###############################################################
-#
-# This Job option:
-# ----------------
-# 1. Read ByteStream test data file and decode the L1Topo part
-#
-#==============================================================
 
 ## basic job configuration
 import AthenaCommon.AtlasUnixStandardJob
 #import AthenaCommon.AtlasThreadedJob
 
-include( "ByteStreamCnvSvc/BSEventStorageEventSelector_jobOptions.py" )
+#include( "ByteStreamCnvSvc/BSEventStorageEventSelector_jobOptions.py" )
 
 ## get a handle on the ServiceManager
 from AthenaCommon.AppMgr import ServiceMgr as svcMgr
@@ -46,79 +29,34 @@ if nThreads >= 1:
 from AthenaCommon.AlgSequence import AlgSequence
 topSequence = AlgSequence()
 
-# older file, has wrong ROD id: svcMgr.ByteStreamInputSvc.FullFileName = [ "/afs/cern.ch/user/m/mzinser/public/l1calo-event.sim"]
-#svcMgr.ByteStreamInputSvc.FullFileName = [ "/afs/cern.ch/user/m/mzinser/public/InputSimon/Mode7/l1calo-event.sim" ]
-svcMgr.ByteStreamInputSvc.FullFileName = [ "./input.data" ]
-#svcMgr.ByteStreamInputSvc.FullFileName = [ "/afs/cern.ch/user/s/sgeorge/atlaspublic/L1TopoCnv/mergedsim._0001.data" ]
-
-svcMgr.ByteStreamInputSvc.ValidateEvent = True
-svcMgr.EventSelector.ProcessBadEvent = True
-
-
-
-if not hasattr( svcMgr, "ByteStreamAddressProviderSvc" ):
-    from ByteStreamCnvSvcBase.ByteStreamCnvSvcBaseConf import ByteStreamAddressProviderSvc 
-    svcMgr += ByteStreamAddressProviderSvc()
-
-
-from TrigConfigSvc.TrigConfigSvcConf import TrigConf__LVL1ConfigSvc
-l1svc = TrigConf__LVL1ConfigSvc("LVL1ConfigSvc")
-l1svc.XMLMenuFile = "LVL1config_Physics_pp_v5.xml"
-svcMgr += l1svc
-
-
-# This is the list of proxies to set up so that retrieval attempt will trigger the BS conversion
-svcMgr.ByteStreamAddressProviderSvc.TypeNames += [
-    "ROIB::RoIBResult/RoIBResult" ]
-
-#--------------------------------------------------------------
-# Private Application Configuration options
-#--------------------------------------------------------------
-# Load "user algorithm" top algorithms to be run, and the libraries that house them
-
-
-if nThreads >= 1:
-  #Retrieve input data
-  from SGComps.SGCompsConf import SGInputLoader
-  topSequence += SGInputLoader( OutputLevel=INFO, ShowEventDump=False )
-  topSequence.SGInputLoader.Load = [ ('ROIB::RoIBResult','RoIBResult') ]
-
- 
-doL1Emulation=True
     
 from L1Decoder.L1DecoderConf import CTPUnpackingTool, EMRoIsUnpackingTool, L1Decoder, MURoIsUnpackingTool
 from L1Decoder.L1DecoderConf import CTPUnpackingEmulationTool, RoIsUnpackingEmulationTool
 l1Decoder = L1Decoder( OutputLevel=DEBUG )
-if doL1Emulation:
-    data = {}
-    data['CTPEmulation'] = ['HLT_e3 HLT_g5 HLT_e7 HLT_2e3 HLT_mu6 HLT_2mu6 HLT_mu6idperf HLT_e15mu4']      
-    data['RoIEmulation'] = ['1.3,2.9,2704088841,EM3,EM7; 1.2,3.1,2972524297,EM3,EM7,EM10,EM15; -3.2,-2.0,3103727387,MU0,MU4,MU6,MU8',
-                            '1.2,1.9,2733969453,MU0,MU4,MU6,MU8,MU10;2.2,1.0,2733969453,MU0,MU4,MU6',
-                            '-3.2,3.0,2704088841,MU0,MU4,MU6,MU8;3.0,1.6,2972524297,MU0,MU4',
-                            '1.3,1.9,3103727387,MU0,MU10;1.2,2.6,2733969453,MU6;-1.1,2.6,2972524297,MU6; -1.2,2.6,2704088842,MU20']
+l1Decoder.RoIBResult=""
 
-    from TrigUpgradeTest.TestUtils import writeEmulationFiles
-    writeEmulationFiles(data)
+data = {}
+data['CTPEmulation'] = ['HLT_e3 HLT_g5 HLT_e7 HLT_2e3 HLT_mu6 HLT_2mu6 HLT_mu6idperf HLT_e15mu4', 
+                        'HLT_e3 HLT_g5 HLT_mu6 HLT_2mu6 HLT_mu6idperf HLT_e15mu4', 
+                        'HLT_e3 HLT_g5 HLT_e7 HLT_2e3 HLT_mu6 HLT_2mu6', 
+                        'HLT_mu6 HLT_2mu6 HLT_mu6idperf HLT_e15mu4', ]   # just to see some change   
+data['RoIEmulation'] = ['1.3,2.9,2704088841,EM3,EM7; 1.2,3.1,2972524297,EM3,EM7,EM10,EM15; -3.2,-2.0,3103727387,MU0,MU4,MU6,MU8',
+                        '1.2,1.9,2733969453,MU0,MU4,MU6,MU8,MU10;2.2,1.0,2733969453,MU0,MU4,MU6',
+                        '-3.2,3.0,2704088841,MU0,MU4,MU6,MU8;3.0,1.6,2972524297,MU0,MU4',
+                        '1.3,1.9,3103727387,MU0,MU10;1.2,2.6,2733969453,MU6;-1.1,2.6,2972524297,MU6; -1.2,2.6,2704088842,MU20']
 
+from TrigUpgradeTest.TestUtils import writeEmulationFiles
+writeEmulationFiles(data)
 
-    ctpUnpacker = CTPUnpackingEmulationTool( OutputLevel =  DEBUG, ForceEnableAllChains=True )
-else:
-    ctpUnpacker = CTPUnpackingTool( OutputLevel =  DEBUG, ForceEnableAllChains=True )
+ctpUnpacker = CTPUnpackingEmulationTool( OutputLevel =  DEBUG, ForceEnableAllChains=True )
 
 l1Decoder.ctpUnpacker = ctpUnpacker
 l1Decoder.ctpUnpacker.CTPToChainMapping = ["0:HLT_e3",  "0:HLT_g5", "1:HLT_e7", "2:HLT_2e3", "15:HLT_mu6", "33:HLT_2mu6", "15:HLT_mu6idperf", "42:HLT_e15mu4"] # this are real IDs of L1_* items in pp_v5 menu
 
-if doL1Emulation:
-    emUnpacker = RoIsUnpackingEmulationTool("EMRoIsUnpackingTool", OutputLevel=DEBUG )
-else:
-    emUnpacker = EMRoIsUnpackingTool( OutputLevel=DEBUG )
-
+emUnpacker = RoIsUnpackingEmulationTool("EMRoIsUnpackingTool", OutputLevel=DEBUG )
 emUnpacker.ThresholdToChainMapping = ["EM3 : HLT_e3", "EM3 : HLT_g5",  "EM7 : HLT_e7", "EM15 : HLT_e15mu4" ]
 
-if doL1Emulation:
-    muUnpacker = RoIsUnpackingEmulationTool("MURoIsUnpackingTool", OutputLevel=DEBUG )
-else:
-    muUnpacker = MURoIsUnpackingTool( OutputLevel=DEBUG )
+muUnpacker = RoIsUnpackingEmulationTool("MURoIsUnpackingTool", OutputLevel=DEBUG )
 muUnpacker.ThresholdToChainMapping = ["MU6 : HLT_mu6", "MU6 : HLT_mu6idperf", "MU4 : HLT_e15mu4"] 
 # do not know yet how to configure the services for it
 
@@ -138,15 +76,6 @@ topSequence += chainSeedingDumper
 
 
 
-# caloDecoder = L1CaloDecoder() # by default it is steered towards the RoIBResult of the name above
-# caloDecoder.OutputLevel=VERBOSE
-# topSequence += caloDecoder
-
-# #Dumper
-# from ViewAlgs.ViewAlgsConf import DumpDecisions
-# dumper = DumpDecisions("L1CaloDecisions")
-# dumper.OutputLevel=VERBOSE
-# topSequence += dumper
 
 
 #--------------------------------------------------------------
@@ -157,18 +86,15 @@ svcMgr.MessageSvc.Format = "% F%42W%S%7W%R%T %0W%M"
 svcMgr.MessageSvc.verboseLimit = 0
 svcMgr.StoreGateSvc.OutputLevel = INFO
 svcMgr.StoreGateSvc.Dump=False #This is required to avoid a bug in bytestream decoding in AthenaMT mode
-svcMgr.ByteStreamAddressProviderSvc.OutputLevel = INFO
-svcMgr.ByteStreamCnvSvc.OutputLevel = INFO
-svcMgr.ByteStreamInputSvc.OutputLevel = INFO
+# svcMgr.ByteStreamAddressProviderSvc.OutputLevel = INFO
+# svcMgr.ByteStreamCnvSvc.OutputLevel = INFO
+# svcMgr.ByteStreamInputSvc.OutputLevel = INFO
 svcMgr.AthDictLoaderSvc.OutputLevel = INFO
 svcMgr.EventPersistencySvc.OutputLevel = INFO
-svcMgr.ROBDataProviderSvc.OutputLevel = INFO
+#svcMgr.ROBDataProviderSvc.OutputLevel = INFO
 print svcMgr
 
-
-theApp.EvtMax = 100
-if doL1Emulation:
-    theApp.EvtMax = len(data['RoIEmulation'])
+theApp.EvtMax = len(data['RoIEmulation'])
 
 print "topSequence dump:", topSequence
 #