diff --git a/Calorimeter/CaloRec/python/CaloTopoClusterConfig.py b/Calorimeter/CaloRec/python/CaloTopoClusterConfig.py
index 36a83169766ed09e1c97d0df9aeabd49bae63bdc..add45de403a0ccc9370a7b2106b9558987376801 100644
--- a/Calorimeter/CaloRec/python/CaloTopoClusterConfig.py
+++ b/Calorimeter/CaloRec/python/CaloTopoClusterConfig.py
@@ -401,13 +401,14 @@ def CaloTopoClusterCfg(flags, cellsname="AllCalo", clustersname=None):
              f"CaloClusterCellLinkContainer#{CaloTopoCluster.ClustersOutputName}_links"]
     toAOD = [f"xAOD::CaloClusterContainer#{CaloTopoCluster.ClustersOutputName}",
              f"CaloClusterCellLinkContainer#{CaloTopoCluster.ClustersOutputName}_links"]
-    auxItems = f"xAOD::CaloClusterAuxContainer#{CaloTopoCluster.ClustersOutputName}Aux."
-    for mom in AODMoments:
-        auxItems += "."+mom
 
-    auxItems += ".CellLink"
-    if flags.Calo.TopoCluster.addCalibrationHitDecoration:
-        auxItems += "."+flags.Calo.TopoCluster.CalibrationHitDecorationName
+    AODMoments.append("CellLink") #Add data-link to cell-link container
+    if flags.Calo.TopoCluster.addCalibrationHitDecoration: #Add calib hit deco if requried 
+        AODMoments.append("."+flags.Calo.TopoCluster.CalibrationHitDecorationName)
+
+        
+    auxItems = f"xAOD::CaloClusterAuxContainer#{CaloTopoCluster.ClustersOutputName}Aux."
+    auxItems+= ".".join(AODMoments)
     toAOD.append(auxItems)
  
     result.merge(addToESD(flags, toESD))
diff --git a/Control/SGTools/SGTools/DataStore.h b/Control/SGTools/SGTools/DataStore.h
index 71b305924bd3ff40256e9e260b8b1627e15ec27f..014ea88c708bf9d4637f1ec2947bb1ac8df3197d 100755
--- a/Control/SGTools/SGTools/DataStore.h
+++ b/Control/SGTools/SGTools/DataStore.h
@@ -29,6 +29,7 @@
 #include <typeinfo> /*typeid*/
 #include <utility>  /*std::pair*/
 #include <unordered_map>
+#include <mutex>
 
 
 class ISvcLocator;
@@ -113,6 +114,13 @@ namespace SG {
     /// the key must match exactly (no wild carding for the default key)
     SG::DataProxy* proxy_exact (sgkey_t sgkey) const;
 
+    /// Like proxy_exact, but intended to be called without holding
+    /// the store lock.  However, the store lock still must be passed
+    /// as an argument; it will be acquired should be need to call
+    /// the auditor service.
+    SG::DataProxy* proxy_exact_unlocked (sgkey_t sgkey,
+                                         std::recursive_mutex& mutex) const;
+
     /// get proxy with given id. Returns 0 to flag failure
     /// the key must match exactly (no wild carding for the default key)
     virtual SG::DataProxy* proxy_exact(const CLID& id,
diff --git a/Control/SGTools/src/DataStore.cxx b/Control/SGTools/src/DataStore.cxx
index eba8a0d84effc6ac10dbc387466c1e16a50e8d74..cd2816b0bcf6f1f616de3e6516aeeb7c5876ee23 100755
--- a/Control/SGTools/src/DataStore.cxx
+++ b/Control/SGTools/src/DataStore.cxx
@@ -509,6 +509,27 @@ DataProxy* DataStore::proxy_exact(sgkey_t sgkey) const
 }
 
 
+/// Like proxy_exact, but intended to be called without holding
+/// the store lock.  However, the store lock still must be passed
+/// as an argument; it will be acquired should be need to call
+/// the auditor service.
+DataProxy* DataStore::proxy_exact_unlocked (sgkey_t sgkey,
+                                            std::recursive_mutex& mutex) const
+{
+  if (m_pSGAudSvc) {
+    std::unique_lock lock (mutex);
+    CLID clid;
+    const std::string* strkey = m_pool.keyToString (sgkey, clid);
+    if (strkey)
+      m_pSGAudSvc->SGAudit(*strkey, clid, 0, m_storeID);
+  }
+  KeyMap_t::const_iterator i = m_keyMap.find (sgkey);
+  if (i != m_keyMap.end())
+    return i->second;
+  return 0;
+}
+
+
 /// get proxy with given key. Returns 0 to flag failure
 /// the key must match exactly (no wild carding for the default key)
 DataProxy* DataStore::proxy_exact(const CLID& id,
diff --git a/Control/StoreGate/StoreGate/tools/SGImplSvc.h b/Control/StoreGate/StoreGate/tools/SGImplSvc.h
index 4033266b034fcb66fc773e58405b6f7b46ca9f32..c82b41fe2437d64eef80d40d6ad405f6f11dc622 100644
--- a/Control/StoreGate/StoreGate/tools/SGImplSvc.h
+++ b/Control/StoreGate/StoreGate/tools/SGImplSvc.h
@@ -301,11 +301,7 @@ public:
   /// Get proxy given a hashed key+clid.
   /// Find an exact match; no handling of aliases, etc.
   /// Returns 0 to flag failure.
-  virtual SG::DataProxy* proxy_exact (SG::sgkey_t sgkey) const override final
-  {
-    lock_t lock (m_mutex);
-    return m_pStore->proxy_exact (sgkey);
-  }
+  virtual SG::DataProxy* proxy_exact (SG::sgkey_t sgkey) const override final;
     
 
   //@}
diff --git a/Control/StoreGate/src/SGImplSvc.cxx b/Control/StoreGate/src/SGImplSvc.cxx
index 51b6d45589900551c8ca699ee0982bc403d5a85b..6cd099ce88500b002502c8ab403a5e6c613daf42 100644
--- a/Control/StoreGate/src/SGImplSvc.cxx
+++ b/Control/StoreGate/src/SGImplSvc.cxx
@@ -945,6 +945,15 @@ SG::DataProxy* SGImplSvc::recordObject (SG::DataObjectSharedPtr<DataObject> obj,
 }
 
 
+/// Get proxy given a hashed key+clid.
+/// Find an exact match; no handling of aliases, etc.
+/// Returns 0 to flag failure.
+SG::DataProxy* SGImplSvc::proxy_exact (SG::sgkey_t sgkey) const
+{
+  return m_pStore->proxy_exact_unlocked (sgkey, m_mutex);
+}
+
+
 /**
  * @brief Set the Hive slot number for this store.
  * @param slot The slot number.  -1 means that this isn't a Hive store.
diff --git a/DataQuality/DataQualityTools/DataQualityTools/DQTGlobalWZFinderAlg.h b/DataQuality/DataQualityTools/DataQualityTools/DQTGlobalWZFinderAlg.h
index fdfca3a09792d6d5395a31f2bbf8ea41d5d378c1..42f60f4287b8285a61f45c19d26a1de547ed92e6 100644
--- a/DataQuality/DataQualityTools/DataQualityTools/DQTGlobalWZFinderAlg.h
+++ b/DataQuality/DataQualityTools/DataQualityTools/DQTGlobalWZFinderAlg.h
@@ -70,7 +70,7 @@ private:
   void fillEleEffHistos(bool tag_good, bool probe_good, bool probe_anti_good, bool os, double el_mass) const;
 
   void doEleTriggerTP(const xAOD::Electron* el1, const xAOD::Electron* el2, const EventContext& ctx, bool writeTTrees, const float evtWeight, bool osel, bool ssel) const;
-  void doEleTP(const xAOD::Electron* leadingAllEle, const xAOD::Electron* subleadingAllEle, const xAOD::Vertex* pVtx, const EventContext& ctx, bool writeTTrees, const float evtWeight) const; 
+  void doEleTP(const xAOD::Electron* leadingAllEle, const xAOD::Electron* subleadingAllEle, const xAOD::Vertex* pVtx, const EventContext& ctx, bool writeTTrees, bool isSimulation, const float evtWeight) const; 
   void doEleContainerTP(std::vector<const xAOD::Electron*>& allElectrons, std::vector<const xAOD::Electron*>& goodelectrons, const EventContext& ctx) const;
  
   void doMuonTriggerTP(const xAOD::Muon* mu1, const xAOD::Muon* mu2, const EventContext& ctx, bool isSimulation, bool writeTTrees, const float evtWeight) const;
diff --git a/DataQuality/DataQualityTools/src/DQTGlobalWZFinderAlg.cxx b/DataQuality/DataQualityTools/src/DQTGlobalWZFinderAlg.cxx
index 84c516c79ab60f01b1b726caa4db427f364cdf32..3651113171c4c83a2ea6dec01e2eb791e5b81694 100644
--- a/DataQuality/DataQualityTools/src/DQTGlobalWZFinderAlg.cxx
+++ b/DataQuality/DataQualityTools/src/DQTGlobalWZFinderAlg.cxx
@@ -253,7 +253,7 @@ StatusCode DQTGlobalWZFinderAlg::fillHistograms( const EventContext& ctx ) const
      
      doMuonLooseTP(goodmuonsTP, pVtx, ctx, isSimulation, writeTTrees, evtWeight);	
      doMuonInDetTP(goodmuonsTP, pVtx, ctx, isSimulation, writeTTrees, evtWeight);
-     doEleTP(leadingAllEle, subleadingAllEle, pVtx, ctx, writeTTrees, evtWeight);
+     doEleTP(leadingAllEle, subleadingAllEle, pVtx, ctx, writeTTrees, isSimulation, evtWeight);
      doEleContainerTP(allElectrons, goodelectrons, ctx);
 
      // Sort Candidates by Pt
@@ -457,7 +457,7 @@ void DQTGlobalWZFinderAlg::doEleTriggerTP(const xAOD::Electron* el1, const xAOD:
   } 
 }
 
-void DQTGlobalWZFinderAlg::doEleTP(const xAOD::Electron* leadingAllEle, const xAOD::Electron* subleadingAllEle, const xAOD::Vertex* pVtx, const EventContext& ctx, bool writeTTrees, const float evtWeight) const{
+void DQTGlobalWZFinderAlg::doEleTP(const xAOD::Electron* leadingAllEle, const xAOD::Electron* subleadingAllEle, const xAOD::Vertex* pVtx, const EventContext& ctx, bool writeTTrees, bool isSimulation, const float evtWeight) const{
 
   using namespace Monitored;
 
@@ -467,6 +467,12 @@ void DQTGlobalWZFinderAlg::doEleTP(const xAOD::Electron* leadingAllEle, const xA
 
   // first check we have both electrons
   if(leadingAllEle && subleadingAllEle){
+
+    // Truth matching
+    if (isSimulation) {
+      if (!(checkTruthElectron(leadingAllEle) && checkTruthElectron(subleadingAllEle))) return;
+    }
+
     // then get all the parameters we will need ready
     auto Zeecharge = Scalar("Zeecharge", (leadingAllEle->charge() + subleadingAllEle->charge()));
     auto p1(leadingAllEle->p4());
@@ -908,16 +914,6 @@ void DQTGlobalWZFinderAlg::doMuonTruthEff(std::vector<const xAOD::Muon*>& goodmu
 void DQTGlobalWZFinderAlg::doMuonLooseTP(std::vector<const xAOD::Muon*>& goodmuonsTP, const xAOD::Vertex* pVtx, const EventContext& ctx, bool isSimulation, bool writeTTrees, const float evtWeight) const{
   
   using namespace Monitored;
-  
-  if (isSimulation) {
-    int truthMatched = 0;
-    for (const auto mu: goodmuonsTP){
-      if (checkTruthMuon(mu) == true) {
-        truthMatched++;
-      }
-    }
-    if (truthMatched < 2) return;
-  }
 
   auto group_MuonLooseTP = getGroup("MuonLooseTP");
   auto osmatch = Scalar<bool>("osmatch", false);
@@ -937,6 +933,12 @@ void DQTGlobalWZFinderAlg::doMuonLooseTP(std::vector<const xAOD::Muon*>& goodmuo
   }
 
   for (const auto& tagmu : goodmuonsTP) {
+    
+    // Truth matching
+    if (isSimulation) {
+      if (!checkTruthMuon(tagmu)) continue;
+    }
+
     // only consider trigger-matched tags to avoid bias on probes
     bool matched = false;
     for (const auto &chain: m_Z_mm_trigger) {
@@ -948,6 +950,12 @@ void DQTGlobalWZFinderAlg::doMuonLooseTP(std::vector<const xAOD::Muon*>& goodmuo
     if (!matched) continue;
     auto tagmup4(tagmu->p4());
     for (const auto* trk : *idTracks) {
+      
+      // Truth matching
+      if (isSimulation) {
+        if (!checkTruthTrack(trk)) continue;
+      }
+
       if (trk->pt() <  m_muonPtCut*GeV || std::abs(trk->eta()) > m_muonMaxEta)
         continue;
       if (std::abs((trk->z0()+trk->vz()-pVtx->z())*std::sin(trk->theta())) > 2*mm)  continue;
@@ -978,13 +986,26 @@ void DQTGlobalWZFinderAlg::doMuonLooseTP(std::vector<const xAOD::Muon*>& goodmuo
 	      }
       }
 
+      osmatch   = false;
+      ssmatch   = false;
+      osnomatch = false;
+      ssnomatch = false;
+
       if (matched){
         mtype = (trk->charge() != tagmu->charge()) ? 0 : 1; 
-        (opp_sign) ? osmatch = true : ssmatch = true;
+        if (opp_sign) {
+          osmatch = true;
+        } else {
+          ssmatch = true;
+        }
       }
       else {
         mtype = (trk->charge() != tagmu->charge()) ? 2 : 3;
-        (opp_sign) ? osnomatch = true : ssnomatch = true;
+        if (opp_sign) {
+          osnomatch = true;
+        } else {
+          ssnomatch = true;
+        }
       }
       if (writeTTrees){
         fill(group_MuonLooseTP, pT, phi, eta, mass, isTruth, runNumber, LB, eventNumber, mtype, weight);
diff --git a/Database/APR/RootStorageSvc/src/RootTreeContainer.cpp b/Database/APR/RootStorageSvc/src/RootTreeContainer.cpp
index 8c6462b2a4b235ad1e31e20b7ab07844c9278bca..4f19419efbc6f1785eff4a8fad629ac8e16db66a 100755
--- a/Database/APR/RootStorageSvc/src/RootTreeContainer.cpp
+++ b/Database/APR/RootStorageSvc/src/RootTreeContainer.cpp
@@ -679,11 +679,11 @@ DbStatus RootTreeContainer::open( DbDatabase& dbH,
                    iret=addBranch(*i,dsc,"/C");
                    break;
                 case DbColumn::BLOB:
-                   iret=addObject(*i,dsc,"UCharDbArrayAthena", defSplitLevel, defBufferSize, branchOffsetTabLen);
+                   iret=addObject(dbH, *i, dsc, "UCharDbArrayAthena", defSplitLevel, defBufferSize, branchOffsetTabLen);
                    break;
                 case DbColumn::ANY:
                 case DbColumn::POINTER:
-                   iret=addObject(*i, dsc, (*i)->typeName(), containerSplitLevel, defBufferSize, branchOffsetTabLen);
+                   iret=addObject(dbH, *i, dsc, (*i)->typeName(), containerSplitLevel, defBufferSize, branchOffsetTabLen);
                    break;
                 default:
                    return Error;
@@ -741,11 +741,12 @@ DbStatus  RootTreeContainer::select(DbSelect& sel)    {
 }
 
 
-DbStatus  RootTreeContainer::addObject(const DbColumn* col,
+DbStatus  RootTreeContainer::addObject(DbDatabase& dbH,
+                                       const DbColumn* col,
                                        BranchDesc& dsc,
                                        const std::string& typ,
-                                       int defSplitLevel,
-                                       int defBufferSize,
+                                       int splitLevel,
+                                       int bufferSize,
                                        int branchOffsetTabLen)
 {
    try {
@@ -762,11 +763,12 @@ DbStatus  RootTreeContainer::addObject(const DbColumn* col,
                   if ( !::isalnum(*j) ) *j = '_';
                }
             }
+            int split = dsc.clazz->CanSplit() ? splitLevel : 0; // Do not split classes that don't allow it.
             dsc.branch  = m_tree->Branch(nam.c_str(),           // Branch name
                                          dsc.clazz->GetName(),  // Object class
                                          (void*)&dsc.buffer,    // Object address
-                                         defBufferSize,         // Buffer size
-                                         defSplitLevel);        // Split Mode (Levels)
+                                         bufferSize,            // Buffer size
+                                         split);                // Split Mode (Levels)
             if ( dsc.branch )  {
                dsc.leaf = dsc.branch->GetLeaf(nam.c_str());
                dsc.branch->SetAutoDelete(kFALSE);
@@ -780,12 +782,19 @@ DbStatus  RootTreeContainer::addObject(const DbColumn* col,
                if( RootAuxDynIO::hasAuxStore(nam, dsc.clazz) ) {
                   TClass *storeTClass = dsc.clazz->GetBaseClass("SG::IAuxStoreIO");
                   if( storeTClass ) {
+                     // Default splitting for dynamic attributes, one level less than aux store (since attributes are already separated).
+                     int dynSplitLevel = splitLevel ? splitLevel - 1 : 0;
+                     DbOption opt1("CONTAINER_SPLITLEVEL", RootAuxDynIO::AUXDYN_POSTFIX);
+                     dbH.getOption(opt1);
+                     opt1._getValue(dynSplitLevel);
+                     // Default buffer size for dynamic attributes, one quarter of other branches (since attrbutes hold less data).
+                     int dynBufferSize = bufferSize / 4;
                      // This is a class implementing SG::IAuxStoreIO
                      // Provide writers for its dynamic attibutes
                      dsc.aux_iostore_IFoffset = dsc.clazz->GetBaseClassOffset( storeTClass );
                      // TBranch Writer
                      bool do_branch_fill = isBranchContainer() && !m_treeFillMode;
-                     dsc.auxdyn_writer = RootAuxDynIO::getBranchAuxDynWriter(m_tree, branchOffsetTabLen, do_branch_fill);
+                     dsc.auxdyn_writer = RootAuxDynIO::getBranchAuxDynWriter(m_tree, dynBufferSize, dynSplitLevel, branchOffsetTabLen, do_branch_fill);
                   }
                }
                return Success;
diff --git a/Database/APR/RootStorageSvc/src/RootTreeContainer.h b/Database/APR/RootStorageSvc/src/RootTreeContainer.h
index dceefa2955c05113acb2abbb6bca6d5187f70cd5..7690c55af46efbd7ed73217eba966b7f6c9738a6 100755
--- a/Database/APR/RootStorageSvc/src/RootTreeContainer.h
+++ b/Database/APR/RootStorageSvc/src/RootTreeContainer.h
@@ -147,11 +147,12 @@ namespace pool  {
                         const std::string& desc);
 
     /// Add BLOB
-    DbStatus addObject( const DbColumn* col, 
+    DbStatus addObject( DbDatabase& dbH,
+                        const DbColumn* col,
                         BranchDesc& dsc,
                         const std::string& desc,
-                        int defSplitLevel, 
-                        int defBufferSize,
+                        int splitLevel,
+                        int bufferSize,
                         int branchOffsetTabLen);
 
     /// Find entry identified by his number (=primary key) in the Database
diff --git a/Database/AthenaPOOL/AthenaPoolCnvSvc/python/PoolWriteConfig.py b/Database/AthenaPOOL/AthenaPoolCnvSvc/python/PoolWriteConfig.py
index 914b08a10bb07e2cfb3e48846b2f4ddf9fa5a80e..f85359e2a245756b6f49c2d093be7b3e3cb71c0b 100644
--- a/Database/AthenaPOOL/AthenaPoolCnvSvc/python/PoolWriteConfig.py
+++ b/Database/AthenaPOOL/AthenaPoolCnvSvc/python/PoolWriteConfig.py
@@ -31,6 +31,7 @@ def PoolWriteCfg(flags, forceTreeAutoFlush=-1):
     PoolAttributes = []
     # Switch off splitting by setting default SplitLevel to 0
     PoolAttributes += ["DEFAULT_SPLITLEVEL ='0'"]
+    PoolAttributes += ["ContainerName = 'TTree=Dyn.'; CONTAINER_SPLITLEVEL = '1'"]
 
     # Set as default the member-wise streaming, ROOT default
     PoolAttributes += ["STREAM_MEMBER_WISE = '1'"]
@@ -153,6 +154,7 @@ def PoolWriteCfg(flags, forceTreeAutoFlush=-1):
         PoolAttributes += [ pah.setTreeAutoFlush( file_name, tree_name, auto_flush ) ]
         PoolAttributes += [ pah.setContainerSplitLevel( file_name, tree_name, split_level ) ]
         PoolAttributes += [ pah.setContainerSplitLevel( file_name, "Aux.", split_level ) ]
+        PoolAttributes += [ pah.setContainerSplitLevel( file_name, "Dyn.", 1 ) ]
         # Find the maximum AutoFlush across all formats
         if use_parallel_compression and auto_flush > max_auto_flush:
             max_auto_flush = auto_flush
diff --git a/Database/AthenaPOOL/AthenaPoolCnvSvc/python/WriteAthenaPool.py b/Database/AthenaPOOL/AthenaPoolCnvSvc/python/WriteAthenaPool.py
index 461988021486c0351446c6b97c0c7b98dbc87b4b..f35796beb792a85f1bfc2fbf3b2ff2d0cc43c861 100644
--- a/Database/AthenaPOOL/AthenaPoolCnvSvc/python/WriteAthenaPool.py
+++ b/Database/AthenaPOOL/AthenaPoolCnvSvc/python/WriteAthenaPool.py
@@ -34,6 +34,8 @@ def _configureWriteAthenaPool():
     from AthenaCommon.AppMgr  import ServiceMgr as svcMgr
     # Switch off splitting by setting default SplitLevel to 0
     svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ "DEFAULT_SPLITLEVEL ='0'" ]
+    svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ "ContainerName = 'TTree=Dyn.'; CONTAINER_SPLITLEVEL = '1'" ]
+
     # Set as default the member-wise streaming, ROOT default
     svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ "STREAM_MEMBER_WISE = '1'" ]
 
diff --git a/Database/AthenaPOOL/OutputStreamAthenaPool/python/MultipleStreamManager.py b/Database/AthenaPOOL/OutputStreamAthenaPool/python/MultipleStreamManager.py
index 95f056ef0652d5fd60e1461db8e1db189961d845..535dd37277c0994581cbfc718cd0a946d027e25c 100644
--- a/Database/AthenaPOOL/OutputStreamAthenaPool/python/MultipleStreamManager.py
+++ b/Database/AthenaPOOL/OutputStreamAthenaPool/python/MultipleStreamManager.py
@@ -616,6 +616,7 @@ class MultipleStreamManager:
         svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ pah.setTreeAutoFlush( FileName, "CollectionTree", str(TREE_AUTO_FLUSH) ) ]
         svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ pah.setContainerSplitLevel( FileName, "CollectionTree", str(CONTAINER_SPLITLEVEL) ) ]
         svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ pah.setContainerSplitLevel( FileName, "Aux.", str(CONTAINER_SPLITLEVEL) ) ]
+        svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ pah.setContainerSplitLevel( FileName, "Dyn.", "1" ) ]
         return theStream
 
 
@@ -653,6 +654,7 @@ class MultipleStreamManager:
         svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ pah.setTreeAutoFlush( FileName, "CollectionTree_" + StreamName, str(TREE_AUTO_FLUSH) ) ]
         svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ pah.setContainerSplitLevel( FileName, "CollectionTree_" + StreamName, str(CONTAINER_SPLITLEVEL) ) ]
         svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ pah.setContainerSplitLevel( FileName, "Aux.", str(CONTAINER_SPLITLEVEL) ) ]
+        svcMgr.AthenaPoolCnvSvc.PoolAttributes += [ pah.setContainerSplitLevel( FileName, "Dyn.", "1" ) ]
         return theStream
 
     def NewVirtualStream(self,StreamName,FileName="default", asAlg=False):
diff --git a/Database/AthenaRoot/RootAuxDynIO/RootAuxDynIO/RootAuxDynIO.h b/Database/AthenaRoot/RootAuxDynIO/RootAuxDynIO/RootAuxDynIO.h
index c72c54e70e5a4d02fafd792c08b4b8e8f516e796..4121d97c184679fc6c4db22966b2546c467d8c01 100644
--- a/Database/AthenaRoot/RootAuxDynIO/RootAuxDynIO/RootAuxDynIO.h
+++ b/Database/AthenaRoot/RootAuxDynIO/RootAuxDynIO/RootAuxDynIO.h
@@ -67,7 +67,7 @@ namespace RootAuxDynIO
    std::string getKeyFromBranch(TBranch* branch);
 
    std::unique_ptr<IRootAuxDynReader> getBranchAuxDynReader(TTree*, TBranch*);
-   std::unique_ptr<IRootAuxDynWriter> getBranchAuxDynWriter(TTree*, int offsettab_len, bool do_branch_fill);
+   std::unique_ptr<IRootAuxDynWriter> getBranchAuxDynWriter(TTree*, int bufferSize, int splitLevel, int offsettab_len, bool do_branch_fill);
    
    std::unique_ptr<IRootAuxDynReader> getNTupleAuxDynReader(const std::string&, RNTupleReader*);
    std::unique_ptr<IRNTupleWriter>    getNTupleAuxDynWriter(TFile*,  const std::string& ntupleName, int compression);
diff --git a/Database/AthenaRoot/RootAuxDynIO/src/RootAuxDynIO.cxx b/Database/AthenaRoot/RootAuxDynIO/src/RootAuxDynIO.cxx
index 681ff75de2e462f724f2bc2ccddab2cbd6258f25..6c92a507640b8011ad93fe314f7587070080b304 100644
--- a/Database/AthenaRoot/RootAuxDynIO/src/RootAuxDynIO.cxx
+++ b/Database/AthenaRoot/RootAuxDynIO/src/RootAuxDynIO.cxx
@@ -108,8 +108,8 @@ namespace RootAuxDynIO
    /// tree -> destination tree
    /// do_branch_fill -> flag telling to Fill each TBranch immediately
    std::unique_ptr<RootAuxDynIO::IRootAuxDynWriter>
-   getBranchAuxDynWriter(TTree* tree, int offsettab_len,  bool do_branch_fill) {
-      return std::make_unique<TBranchAuxDynWriter>(tree, offsettab_len, do_branch_fill);
+   getBranchAuxDynWriter(TTree* tree, int bufferSize, int splitLevel, int offsettab_len,  bool do_branch_fill) {
+      return std::make_unique<TBranchAuxDynWriter>(tree, bufferSize, splitLevel, offsettab_len, do_branch_fill);
    }
 
    std::unique_ptr<RootAuxDynIO::IRNTupleWriter>
diff --git a/Database/AthenaRoot/RootAuxDynIO/src/TBranchAuxDynWriter.cxx b/Database/AthenaRoot/RootAuxDynIO/src/TBranchAuxDynWriter.cxx
index c576b92184697c0d3b98f8364709615d5ee4e6e3..c1c16e3d6b5e98f869dfb4ab0fc83c4061b4ab69 100644
--- a/Database/AthenaRoot/RootAuxDynIO/src/TBranchAuxDynWriter.cxx
+++ b/Database/AthenaRoot/RootAuxDynIO/src/TBranchAuxDynWriter.cxx
@@ -39,9 +39,11 @@ namespace RootAuxDynIO
    }
 
 
-   TBranchAuxDynWriter::TBranchAuxDynWriter( TTree* tree, int offsettab_len, bool branch_fill ) :
+   TBranchAuxDynWriter::TBranchAuxDynWriter( TTree* tree, int bufferSize, int splitLevel, int offsettab_len, bool branch_fill ) :
       AthMessaging ("TBranchAuxDynWriter"),
       m_ttree( tree ),
+      m_bufferSize( bufferSize ),
+      m_splitLevel( splitLevel ),
       m_branchOffsetTabLen( offsettab_len ),
       m_branchFillMode( branch_fill )
    { }
@@ -93,11 +95,11 @@ namespace RootAuxDynIO
                error_type =" has no dictionary";
             } else {
                info.tclass = cl;
-               int split = cl->CanSplit() ? 1 : 0;
+               int split = cl->CanSplit() ? m_splitLevel : 0;
                info.branch = m_ttree->Branch( info.branch_name.c_str(),  // Branch name
                                               cl->GetName(),             // Object class
                                               (void*)&info.buffer,       // Object address
-                                              8192,                      // Buffer size
+                                              m_bufferSize,                // Buffer size
                                               split);                    // Split Mode (Levels)
             ATH_MSG_VERBOSE("MN: Created branch with name=" << info.branch_name << "  type: " << cl->GetName());
             }
diff --git a/Database/AthenaRoot/RootAuxDynIO/src/TBranchAuxDynWriter.h b/Database/AthenaRoot/RootAuxDynIO/src/TBranchAuxDynWriter.h
index 8c0f39bd08a21729290e50662b8d3806d13174bb..4322eb8b2f9fe6aff52ed344f6afee92ebae7e31 100644
--- a/Database/AthenaRoot/RootAuxDynIO/src/TBranchAuxDynWriter.h
+++ b/Database/AthenaRoot/RootAuxDynIO/src/TBranchAuxDynWriter.h
@@ -50,7 +50,7 @@ namespace RootAuxDynIO
    class TBranchAuxDynWriter  : public AthMessaging, public IRootAuxDynWriter
    {
    public:
-      TBranchAuxDynWriter( TTree* tree, int offsettab_len, bool branch_fill );
+      TBranchAuxDynWriter( TTree* tree, int bufferSize, int splitLevel, int offsettab_len, bool branch_fill );
       virtual ~TBranchAuxDynWriter() { }
       
       /// set Filling mode (true/false) for branch containers
@@ -75,6 +75,8 @@ namespace RootAuxDynIO
    protected:
       TFile*               m_tfile            = nullptr;
       TTree*               m_ttree            = nullptr;
+      int                  m_bufferSize       = 8192;
+      int                  m_splitLevel       = 1;
       int                  m_branchOffsetTabLen = 0;
       bool                 m_branchFillMode   = false;
       bool                 m_needsFill        = false;
diff --git a/InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/selection.xml b/InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/selection.xml
index 890138b8028533de57705a550d8c91f4823ec25f..5f54efaf6ba52a56f2ddc021e87b9ec4f07a711b 100755
--- a/InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/selection.xml
+++ b/InnerDetector/InDetConditions/TRT_ConditionsData/TRT_ConditionsData/selection.xml
@@ -97,6 +97,8 @@
 <class name="TRTCond::StrawT0ContainerTemplate<0>" />
 <class name="TRTCond::StrawT0ContainerTemplate<2>" id="773DFAFD-DFE8-4D95-A4B2-1FBE7D488AC4"/>
 <class name="TRTCond::MultChanContainer<TRTCond::StrawT0ContainerTemplate<2> >" />
+<class name="CondMultChanCollection<TRTCond::StrawT0ContainerTemplate<2> >"/>
+<class name="DataVector<TRTCond::StrawT0ContainerTemplate<2> >"/>
 <class name="TRTCond::StrawT0MultChanContainer" id="98EF6053-C576-4AEA-B58C-0E57EDB74E2B" />
 
 <class name="TRTCond::StrawDxContainerTemplate<0>" />
@@ -105,10 +107,15 @@
 <class name="TRTCond::StrawDxMultChanContainer" id="6C236AB0-DC97-4324-B5CA-B5BC8787E707" />
 
 <class name="TRTCond::RtRelationMultChanContainer" id="7FC6EBDA-8DA8-40CC-B40A-BA1C9D7347BC" />
+<class name="TRTCond::MultChanContainer<TRTCond::RtRelationLayerContainer>"/>
+<class name="CondMultChanCollection<TRTCond::NestedContainer<2,TRTCond::RtRelation*,TRTCond::NestedContainerPointerTrait<TRTCond::RtRelation*> > >"/>
+<class name="DataVector<TRTCond::NestedContainer<2,TRTCond::RtRelation*,TRTCond::NestedContainerPointerTrait<TRTCond::RtRelation*> > >"/>
 
 <class name="TRTCond::StrawStatusContainerTemplate<0>" />
 <class name="TRTCond::StrawStatusContainerTemplate<2>" id="ED8DD42D-1A67-4B82-93F4-4462D9E11705"/>
 <class name="TRTCond::MultChanContainer<TRTCond::StrawStatusContainerTemplate<2> >" />
+<class name="CondMultChanCollection<TRTCond::StrawStatusContainerTemplate<2> >"/>
+<class name="DataVector<TRTCond::StrawStatusContainerTemplate<2> >"/>
 <class name="TRTCond::StrawStatusMultChanContainer" id="F4DAED02-1987-4C00-ACAD-FEE9BE845D9B" />
 
 
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/InDetPhysValMonitoringTool.h b/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/InDetPhysValMonitoringTool.h
index d4c535bd8b30c54d82a559841271ee7d60088285..ef1fb6fbf3d15d64eb7c43d778405b343cf9a68d 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/InDetPhysValMonitoringTool.h
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/InDetPhysValMonitoring/InDetPhysValMonitoringTool.h
@@ -195,5 +195,7 @@ private:
 
     std::vector<std::string> m_trackCutflowNames;
     std::vector<int> m_trackCutflow;
+
+    bool m_usingSpecialPileupSwitch {false};
 };
 #endif
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx
index f13ca20da0cd2d0f396750f9ab8b54934f491ad4..e39dece6e1bd84b0dc2eda05800d31b90aa8b252 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx
@@ -168,6 +168,8 @@ InDetPhysValMonitoringTool::initialize() {
   if (m_doTrackInJetPlots && m_doBjetPlots){
     IDPVM::addReadDecoratorHandleKeys(*this, m_jetContainerName, empty_prefix, required_int_jet_decorations, m_intJetDecor);
   }
+
+  m_usingSpecialPileupSwitch = (m_pileupSwitch != "All");
   return StatusCode::SUCCESS;
 }
 
@@ -320,7 +322,7 @@ InDetPhysValMonitoringTool::fillHistograms() {
 
   // Mark the truth particles in our vector as "selected". 
   // This is needed because we later access the truth matching via xAOD decorations, where we do not 'know' about membership to this vector.
-  markSelectedByPileupSwitch(truthParticlesVec);
+  if (m_usingSpecialPileupSwitch) markSelectedByPileupSwitch(truthParticlesVec);
 
   IDPVM::CachedGetAssocTruth getAsTruth; // only cache one way, track->truth, not truth->tracks 
 
@@ -452,7 +454,7 @@ InDetPhysValMonitoringTool::fillHistograms() {
         tmp_truth_cutflow.update( passed.missingCuts() );
       }
 
-      if ((not std::isnan(prob)) and (prob > m_lowProb) and passed) {
+      if ((not std::isnan(prob)) and (prob > m_lowProb) and passed and (not m_usingSpecialPileupSwitch or isSelectedByPileupSwitch(*associatedTruth)) ) {
         nSelectedMatchedTracks++; 
         bool truthIsFromB = false;
         if ( m_doTruthOriginPlots and m_trackTruthOriginTool->isFrom(associatedTruth, 5) ) {
@@ -748,6 +750,7 @@ InDetPhysValMonitoringTool::bookHistograms() {
       ATH_CHECK(regTree(t.first, t.second, all));
     }
   }
+
   return StatusCode::SUCCESS;
 }
 
diff --git a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/CMakeLists.txt_offline b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/CMakeLists.txt_offline
index d275736df2d174af793257a6a44b79ab424bc3f2..c1e12123790fa91e92259b0b0d8023b7908c3500 100755
--- a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/CMakeLists.txt_offline
+++ b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/CMakeLists.txt_offline
@@ -8,6 +8,10 @@ find_package( tdaq-common COMPONENTS DataReader EventStorage eformat eformat_wri
 find_package( Boost COMPONENTS unit_test_framework)
 find_package( ROOT REQUIRED COMPONENTS Core Hist Tree RIO Gpad Graf )
 
+set( CMAKE_CXX_FLAGS "-pg")
+set( CMAKE_EXE_LINKER_FLAGS "-pg")
+set( CMAKE_SHARED_LINKER_FLAGS "-pg")
+
 # Component(s) in the package:
 atlas_add_library (MuonNSWCommonDecode
 		   src/*.cxx src/*.cpp
diff --git a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/MuonNSWCommonDecode/NSWSTGTPDecodeBitmaps.h b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/MuonNSWCommonDecode/NSWSTGTPDecodeBitmaps.h
new file mode 100644
index 0000000000000000000000000000000000000000..a7839a37b41582711ad79c480feff152d6afaef9
--- /dev/null
+++ b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/MuonNSWCommonDecode/NSWSTGTPDecodeBitmaps.h
@@ -0,0 +1,138 @@
+/*
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
+*/
+
+#ifndef _MUON_NSW_STGTP_DECODE_BITMAPS_H_
+#define _MUON_NSW_STGTP_DECODE_BITMAPS_H_
+
+namespace Muon
+{
+  namespace nsw
+  {
+    namespace STGTPL1A {
+      constexpr int size_head_fragID =                        4;
+      constexpr int size_head_sectID =                        4;
+      constexpr int size_head_EC =                            1;
+      constexpr int size_head_flags =                         7;
+      constexpr int size_head_BCID =                         12;
+      constexpr int size_head_orbit =                         2;
+      constexpr int size_head_spare =                         2;
+      constexpr int size_L1ID =                              32;
+      constexpr int size_head_wdw_open =                     12;
+      constexpr int size_head_l1a_req =                      12;
+      constexpr int size_head_wdw_close =                    12;
+      constexpr int size_head_overflowCount =                12;
+      constexpr int size_head_wdw_matching_engines_usage =   32;
+      constexpr int size_head_cfg_wdw_open_offset =          12;
+      constexpr int size_head_cfg_l1a_req_offset =           12;
+      constexpr int size_head_cfg_wdw_close_offset =         12;
+      constexpr int size_head_cfg_timeout =                  12;
+      constexpr int size_head_link_const =                   32;
+      constexpr int size_stream_head_nbits =                 16;
+      constexpr int size_stream_head_nwords =                16;
+      constexpr int size_stream_head_fifo_size =             16;
+      constexpr int size_stream_head_streamID =              16;
+      constexpr int size_trailer_CRC =                       16;
+    };
+
+    namespace STGTPPad {
+      constexpr int pad_stream_header =                      0xAAD0;
+      constexpr int n_words =                                 3; // size in 32 bit words
+      constexpr int size_coincidence_wedge =                 16;
+      constexpr int size_phiID_3 =                            6;
+      constexpr int size_phiID_2 =                            6;
+      constexpr int size_phiID_1 =                            6;
+      constexpr int size_phiID_0 =                            6;
+      constexpr int size_bandID_3 =                           8;
+      constexpr int size_bandID_2 =                           8;
+      constexpr int size_bandID_1 =                           8;
+      constexpr int size_bandID_0 =                           8;
+      constexpr int size_BCID =                              12;
+      constexpr int size_spare =                              3;
+      constexpr int size_idleFlag =                           1;
+      constexpr int size_padding =                            8;
+
+    };
+
+
+    namespace STGTPSegments {
+       constexpr int merge_stream_header  =              0xAEE0;
+       constexpr int n_words =                                32; 
+       constexpr int size_lut_choice_selection =              24;
+       constexpr int size_nsw_segment_selector =              12;
+       constexpr int size_valid_segment_selector =            12;
+       
+       constexpr int size_output_segment_7_monitor =           1;
+       constexpr int size_output_segment_7_spare =             2;
+       constexpr int size_output_segment_7_lowRes =            1;
+       constexpr int size_output_segment_7_phiRes =            1;
+       constexpr int size_output_segment_7_dTheta =            5;
+       constexpr int size_output_segment_7_phiID =             6;
+       constexpr int size_output_segment_7_rIndex =            8;
+
+       constexpr int size_output_segment_6_monitor =           1;
+       constexpr int size_output_segment_6_spare =             2;
+       constexpr int size_output_segment_6_lowRes =            1;
+       constexpr int size_output_segment_6_phiRes =            1;
+       constexpr int size_output_segment_6_dTheta =            5;
+       constexpr int size_output_segment_6_phiID =             6;
+       constexpr int size_output_segment_6_rIndex =            8;
+
+       constexpr int size_output_segment_5_monitor =           1;
+       constexpr int size_output_segment_5_spare =             2;
+       constexpr int size_output_segment_5_lowRes =            1;
+       constexpr int size_output_segment_5_phiRes =            1;
+       constexpr int size_output_segment_5_dTheta =            5;
+       constexpr int size_output_segment_5_phiID =             6;
+       constexpr int size_output_segment_5_rIndex =            8;
+
+       constexpr int size_output_segment_4_monitor =           1;
+       constexpr int size_output_segment_4_spare =             2;
+       constexpr int size_output_segment_4_lowRes =            1;
+       constexpr int size_output_segment_4_phiRes =            1;
+       constexpr int size_output_segment_4_dTheta =            5;
+       constexpr int size_output_segment_4_phiID =             6;
+       constexpr int size_output_segment_4_rIndex =            8;
+
+       constexpr int size_output_segment_3_monitor =           1;
+       constexpr int size_output_segment_3_spare =             2;
+       constexpr int size_output_segment_3_lowRes =            1;
+       constexpr int size_output_segment_3_phiRes =            1;
+       constexpr int size_output_segment_3_dTheta =            5;
+       constexpr int size_output_segment_3_phiID =             6;
+       constexpr int size_output_segment_3_rIndex =            8;
+
+       constexpr int size_output_segment_2_monitor =           1;
+       constexpr int size_output_segment_2_spare =             2;
+       constexpr int size_output_segment_2_lowRes =            1;
+       constexpr int size_output_segment_2_phiRes =            1;
+       constexpr int size_output_segment_2_dTheta =            5;
+       constexpr int size_output_segment_2_phiID =             6;
+       constexpr int size_output_segment_2_rIndex =            8;
+
+       constexpr int size_output_segment_1_monitor =           1;
+       constexpr int size_output_segment_1_spare =             2;
+       constexpr int size_output_segment_1_lowRes =            1;
+       constexpr int size_output_segment_1_phiRes =            1;
+       constexpr int size_output_segment_1_dTheta =            5;
+       constexpr int size_output_segment_1_phiID =             6;
+       constexpr int size_output_segment_1_rIndex =            8;
+
+       constexpr int size_output_segment_0_monitor =           1;
+       constexpr int size_output_segment_0_spare =             2;
+       constexpr int size_output_segment_0_lowRes =            1;
+       constexpr int size_output_segment_0_phiRes =            1;
+       constexpr int size_output_segment_0_dTheta =            5;
+       constexpr int size_output_segment_0_phiID =             6;
+       constexpr int size_output_segment_0_rIndex =            8;
+
+       constexpr int size_bcid             =                   12;
+       constexpr int size_sectorID         =                   4;
+ 
+
+    };
+
+  }
+}
+
+#endif // _MUON_NSW_STGTP_DECODE_BITMAPS_H_
diff --git a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/MuonNSWCommonDecode/NSWTriggerSTGL1AElink.h b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/MuonNSWCommonDecode/NSWTriggerSTGL1AElink.h
new file mode 100755
index 0000000000000000000000000000000000000000..e53e3db33d23004303adf5480fc42c8599d6dd08
--- /dev/null
+++ b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/MuonNSWCommonDecode/NSWTriggerSTGL1AElink.h
@@ -0,0 +1,98 @@
+/*
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
+*/
+#ifndef _MUON_NSW_TRIGGER_STGL1A_ELINK_H_
+#define _MUON_NSW_TRIGGER_STGL1A_ELINK_H_
+
+#include <stdint.h>
+#include <vector>
+#include <exception>
+
+#include "MuonNSWCommonDecode/NSWTriggerElink.h"
+#include "MuonNSWCommonDecode/NSWSTGTPDecodeBitmaps.h"
+#include "MuonNSWCommonDecode/NSWMMTPDecodeBitmaps.h"
+namespace Muon
+{
+  namespace nsw
+  {
+    class NSWResourceId;
+
+    class NSWTriggerElinkException;
+
+    class STGTPPadPacket;
+    class STGTPSegmentPacket;
+
+    class NSWTriggerSTGL1AElink : public NSWTriggerElink
+    {
+     public:
+
+      NSWTriggerSTGL1AElink (const uint32_t *bs, uint32_t remaining);
+      virtual ~NSWTriggerSTGL1AElink () = default;
+
+
+      uint32_t head_fragID () const {return m_head_fragID;};
+      uint32_t head_sectID () const {return m_head_sectID;};
+      uint32_t head_EC () const {return m_head_EC;};
+      uint32_t head_flags () const {return m_head_flags;};
+      uint32_t head_BCID () const {return m_head_BCID;};
+      uint32_t head_orbit () const {return m_head_orbit;};
+      uint32_t head_spare () const {return m_head_spare;};
+      uint32_t L1ID () const {return m_L1ID;};
+      uint32_t head_wdw_open () const {return m_head_wdw_open;};
+      uint32_t head_l1a_req () const {return m_head_l1a_req;};
+      uint32_t head_wdw_close () const {return m_head_wdw_close;};
+      uint32_t head_overflowCount () const {return m_head_overflowCount;};
+      uint32_t head_wdw_matching_engines_usage () const {return m_head_wdw_matching_engines_usage;};
+      uint32_t head_cfg_wdw_open_offset () const {return m_head_cfg_wdw_open_offset;};
+      uint32_t head_cfg_l1a_req_offset () const {return m_head_cfg_l1a_req_offset;};
+      uint32_t head_cfg_wdw_close_offset () const {return m_head_cfg_wdw_close_offset;};
+      uint32_t head_cfg_timeout () const {return m_head_cfg_timeout;};
+      uint32_t head_link_const () const {return m_head_link_const;};
+      const std::vector<uint32_t>& stream_head_nbits () const {return  m_stream_head_nbits;};
+      const std::vector<uint32_t>& stream_head_nwords () const {return  m_stream_head_nwords;};
+      const std::vector<uint32_t>& stream_head_fifo_size () const {return  m_stream_head_fifo_size;};
+      const std::vector<uint32_t>& stream_head_streamID () const {return m_stream_head_streamID;};
+      const std::vector<std::vector<std::vector<uint32_t>>> stream_data () const {return  m_stream_data;};
+      uint32_t trailer_CRC () const {return  m_trailer_CRC;};
+
+      const std::vector<std::shared_ptr<STGTPPadPacket>>& pad_packets () const {return m_pad_packets;};
+      const std::vector<std::shared_ptr<STGTPSegmentPacket>>& segment_packet () const {return m_segment_packets;};
+
+     private:
+
+      uint32_t m_head_fragID;
+      uint32_t m_head_sectID;
+      uint32_t m_head_EC;
+      uint32_t m_head_flags;
+      uint32_t m_head_BCID;
+      uint32_t m_head_orbit;
+      uint32_t m_head_spare;
+      uint32_t m_L1ID;
+      uint32_t m_head_wdw_open;
+      uint32_t m_head_l1a_req;
+      uint32_t m_head_wdw_close;
+      uint32_t m_head_overflowCount;
+      uint32_t m_head_wdw_matching_engines_usage;
+      uint32_t m_head_cfg_wdw_open_offset;
+      uint32_t m_head_cfg_l1a_req_offset;
+      uint32_t m_head_cfg_wdw_close_offset;
+      uint32_t m_head_cfg_timeout;
+      uint32_t m_head_link_const;
+      std::vector<uint32_t> m_stream_head_nbits;
+      std::vector<uint32_t> m_stream_head_nwords;
+      std::vector<uint32_t> m_stream_head_fifo_size;
+      std::vector<uint32_t> m_stream_head_streamID;
+      std::vector<std::vector<std::vector<uint32_t>>> m_stream_data; //size is potentially not known a priori...
+      //first vector had stream index
+      //second vector contains stream data words - length defined by m_stream_head_nwords
+      //third vector used because stream data size (m_stream_head_nwords) can exceed maximum compiler size (uint64_t)
+      uint32_t m_trailer_CRC;
+
+      std::vector<std::shared_ptr<STGTPPadPacket>> m_pad_packets;
+      std::vector<std::shared_ptr<STGTPSegmentPacket>> m_segment_packets; 
+    };
+  }
+}
+
+
+#endif // _MUON_NSW_TRIGGER_STGL1A_ELINK_H_
diff --git a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/MuonNSWCommonDecode/STGTPPackets.h b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/MuonNSWCommonDecode/STGTPPackets.h
new file mode 100644
index 0000000000000000000000000000000000000000..91b0acfe21efd0f919a14d858cb7c89339e1e38c
--- /dev/null
+++ b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/MuonNSWCommonDecode/STGTPPackets.h
@@ -0,0 +1,191 @@
+/*
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
+*/
+#ifndef _MUON_NSW_STGTPPACKETS_H_
+#define _MUON_NSW_STGTPPACKETS_H_
+
+#include <stdint.h>
+#include <vector>
+#include <exception>
+#include <array>
+
+namespace Muon
+{
+  namespace nsw
+  {
+    class STGTPPadPacket
+    {
+    public:
+
+      STGTPPadPacket (const std::vector<uint32_t>& payload);
+      virtual ~STGTPPadPacket () = default;
+      uint32_t BCID () const {return m_BCID;};
+      uint32_t BandID (int num) const {return m_bandIDs.at(num);};
+      uint32_t PhiID (int num) const {return m_phiIDs.at(num);};
+      uint32_t PadIdleFlag () const {return m_idleFlag;};
+    private:
+      uint32_t m_BCID;
+      std::array<uint32_t,4> m_bandIDs;
+      std::array<uint32_t,4> m_phiIDs;
+      uint32_t m_idleFlag;
+      uint32_t m_coincWege;
+
+
+    };
+
+    class STGTPSegmentPacket
+    {
+    public:
+
+       STGTPSegmentPacket(const std::vector<uint32_t>& payload);
+
+       virtual ~STGTPSegmentPacket() = default;
+       uint32_t LUT_ChoiceSelection() const { return m_lut_choice;}
+       uint32_t NSW_SegmentSelector() const { return m_nsw_segment_selector;}
+       uint32_t ValidSegmentSelector() const { return m_valid_segment_selector;}
+
+       uint32_t Monitor_Segment7() const { return m_monitor_segment_7; }
+       uint32_t Spare_Segment7() const { return m_spare_segment_7; }
+       uint32_t LowRes_Segment7() const { return m_lowRes_segment_7; }
+       uint32_t PhiRes_Segment7() const { return m_phiRes_segment_7; }
+       uint32_t DTheta_Segment7() const { return m_dTheta_segment_7; }
+       uint32_t PhiID_Segment7() const { return m_phiID_segment_7; }
+       uint32_t RIndex_Segment7() const { return m_RIndex_segment_7; }
+
+       uint32_t Monitor_Segment6() const { return m_monitor_segment_6; }
+       uint32_t Spare_Segment6() const { return m_spare_segment_6; }
+       uint32_t LowRes_Segment6() const { return m_lowRes_segment_6; }
+       uint32_t PhiRes_Segment6() const { return m_phiRes_segment_6; }
+       uint32_t DTheta_Segment6() const { return m_dTheta_segment_6; }
+       uint32_t PhiID_Segment6() const { return m_phiID_segment_6; }
+       uint32_t RIndex_Segment6() const { return m_RIndex_segment_6; }
+
+       uint32_t Monitor_Segment5() const { return m_monitor_segment_5; }
+       uint32_t Spare_Segment5() const { return m_spare_segment_5; }
+       uint32_t LowRes_Segment5() const { return m_lowRes_segment_5; }
+       uint32_t PhiRes_Segment5() const { return m_phiRes_segment_5; }
+       uint32_t DTheta_Segment5() const { return m_dTheta_segment_5; }
+       uint32_t PhiID_Segment5() const { return m_phiID_segment_5; }
+       uint32_t RIndex_Segment5() const { return m_RIndex_segment_5; }
+
+       uint32_t Monitor_Segment4() const { return m_monitor_segment_4; }
+       uint32_t Spare_Segment4() const { return m_spare_segment_4; }
+       uint32_t LowRes_Segment4() const { return m_lowRes_segment_4; }
+       uint32_t PhiRes_Segment4() const { return m_phiRes_segment_4; }
+       uint32_t DTheta_Segment4() const { return m_dTheta_segment_4; }
+       uint32_t PhiID_Segment4() const { return m_phiID_segment_4; }
+       uint32_t RIndex_Segment4() const { return m_RIndex_segment_4; }
+
+       uint32_t Monitor_Segment3() const { return m_monitor_segment_3; }
+       uint32_t Spare_Segment3() const { return m_spare_segment_3; }
+       uint32_t LowRes_Segment3() const { return m_lowRes_segment_3; }
+       uint32_t PhiRes_Segment3() const { return m_phiRes_segment_3; }
+       uint32_t DTheta_Segment3() const { return m_dTheta_segment_3; }
+       uint32_t PhiID_Segment3() const { return m_phiID_segment_3; }
+       uint32_t RIndex_Segment3() const { return m_RIndex_segment_3; }
+
+       uint32_t Monitor_Segment2() const { return m_monitor_segment_2; }
+       uint32_t Spare_Segment2() const { return m_spare_segment_2; }
+       uint32_t LowRes_Segment2() const { return m_lowRes_segment_2; }
+       uint32_t PhiRes_Segment2() const { return m_phiRes_segment_2; }
+       uint32_t DTheta_Segment2() const { return m_dTheta_segment_2; }
+       uint32_t PhiID_Segment2() const { return m_phiID_segment_2; }
+       uint32_t RIndex_Segment2() const { return m_RIndex_segment_2; }
+
+       uint32_t Monitor_Segment1() const { return m_monitor_segment_1; }
+       uint32_t Spare_Segment1() const { return m_spare_segment_1; }
+       uint32_t LowRes_Segment1() const { return m_lowRes_segment_1; }
+       uint32_t PhiRes_Segment1() const { return m_phiRes_segment_1; }
+       uint32_t DTheta_Segment1() const { return m_dTheta_segment_1; }
+       uint32_t PhiID_Segment1() const { return m_phiID_segment_1; }
+       uint32_t RIndex_Segment1() const { return m_RIndex_segment_1; }
+
+       uint32_t Monitor_Segment0() const { return m_monitor_segment_0; }
+       uint32_t Spare_Segment0() const { return m_spare_segment_0; }
+       uint32_t LowRes_Segment0() const { return m_lowRes_segment_0; }
+       uint32_t PhiRes_Segment0() const { return m_phiRes_segment_0; }
+       uint32_t DTheta_Segment0() const { return m_dTheta_segment_0; }
+       uint32_t PhiID_Segment0() const { return m_phiID_segment_0; }
+       uint32_t RIndex_Segment0() const { return m_RIndex_segment_0; }
+
+       uint32_t BCID () const {return m_BCID;};
+       uint32_t SectorID () const {return m_sectorID; }
+       
+    private:
+       uint32_t m_lut_choice;
+       uint32_t m_nsw_segment_selector;
+       uint32_t m_valid_segment_selector;
+
+       uint32_t m_monitor_segment_7;
+       uint32_t m_spare_segment_7;
+       uint32_t m_lowRes_segment_7;
+       uint32_t m_phiRes_segment_7;
+       uint32_t m_dTheta_segment_7;
+       uint32_t m_phiID_segment_7;
+       uint32_t m_RIndex_segment_7;
+
+       uint32_t m_monitor_segment_6;
+       uint32_t m_spare_segment_6;
+       uint32_t m_lowRes_segment_6;
+       uint32_t m_phiRes_segment_6;
+       uint32_t m_dTheta_segment_6;
+       uint32_t m_phiID_segment_6;
+       uint32_t m_RIndex_segment_6;
+
+       uint32_t m_monitor_segment_5;
+       uint32_t m_spare_segment_5;
+       uint32_t m_lowRes_segment_5;
+       uint32_t m_phiRes_segment_5;
+       uint32_t m_dTheta_segment_5;
+       uint32_t m_phiID_segment_5;
+       uint32_t m_RIndex_segment_5;
+
+       uint32_t m_monitor_segment_4;
+       uint32_t m_spare_segment_4;
+       uint32_t m_lowRes_segment_4;
+       uint32_t m_phiRes_segment_4;
+       uint32_t m_dTheta_segment_4;
+       uint32_t m_phiID_segment_4;
+       uint32_t m_RIndex_segment_4;
+
+       uint32_t m_monitor_segment_3;
+       uint32_t m_spare_segment_3;
+       uint32_t m_lowRes_segment_3;
+       uint32_t m_phiRes_segment_3;
+       uint32_t m_dTheta_segment_3;
+       uint32_t m_phiID_segment_3;
+       uint32_t m_RIndex_segment_3;
+
+       uint32_t m_monitor_segment_2;
+       uint32_t m_spare_segment_2;
+       uint32_t m_lowRes_segment_2;
+       uint32_t m_phiRes_segment_2;
+       uint32_t m_dTheta_segment_2;
+       uint32_t m_phiID_segment_2;
+       uint32_t m_RIndex_segment_2;
+
+       uint32_t m_monitor_segment_1;
+       uint32_t m_spare_segment_1;
+       uint32_t m_lowRes_segment_1;
+       uint32_t m_phiRes_segment_1;
+       uint32_t m_dTheta_segment_1;
+       uint32_t m_phiID_segment_1;
+       uint32_t m_RIndex_segment_1;
+
+       uint32_t m_monitor_segment_0;
+       uint32_t m_spare_segment_0; 
+       uint32_t m_lowRes_segment_0;
+       uint32_t m_phiRes_segment_0;
+       uint32_t m_dTheta_segment_0;
+       uint32_t m_phiID_segment_0;
+       uint32_t m_RIndex_segment_0;
+
+       uint32_t m_BCID;
+       uint32_t m_sectorID; 
+    };
+
+
+  }
+}
+
+#endif // _MUON_NSW_STGPPACKETS_H_
diff --git a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/NSWTriggerCommonDecoder.cxx b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/NSWTriggerCommonDecoder.cxx
index e7004715ae9aa013dec9ee2c2ab7b0a4603eca86..3305716b7ebbc91c952e232aaede5d78149afc6b 100644
--- a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/NSWTriggerCommonDecoder.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/NSWTriggerCommonDecoder.cxx
@@ -7,6 +7,7 @@
 #include "MuonNSWCommonDecode/NSWTriggerElink.h"
 #include "MuonNSWCommonDecode/NSWTriggerMML1AElink.h"
 #include "MuonNSWCommonDecode/NSWTriggerMMMonElink.h"
+#include "MuonNSWCommonDecode/NSWTriggerSTGL1AElink.h"
 #include "MuonNSWCommonDecode/NSWPadTriggerL1a.h"
 #include "MuonNSWCommonDecode/NSWTriggerCommonDecoder.h"
 
@@ -43,6 +44,9 @@ Muon::nsw::NSWTriggerCommonDecoder::NSWTriggerCommonDecoder (const eformat::read
       } else if ( m_triggerType== "PadL1A" ) {
 	std::shared_ptr<Muon::nsw::NSWPadTriggerL1a> tmplink = std::make_shared<Muon::nsw::NSWPadTriggerL1a>(pp, remaining);
 	elink = tmplink;
+      } else if ( m_triggerType== "STGL1A" ) {
+        std::shared_ptr<Muon::nsw::NSWTriggerSTGL1AElink> tmplink = std::make_shared<Muon::nsw::NSWTriggerSTGL1AElink>(pp, remaining);
+        elink = tmplink;
       } else {
 	std::shared_ptr<Muon::nsw::NSWTriggerElink> tmplink = std::make_shared<Muon::nsw::NSWTriggerElink>(pp, remaining);
 	elink = tmplink;
diff --git a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/NSWTriggerSTGL1AElink.cxx b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/NSWTriggerSTGL1AElink.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..f4896aab0c2beff83176d6de1ff650b77fd5b844
--- /dev/null
+++ b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/NSWTriggerSTGL1AElink.cxx
@@ -0,0 +1,118 @@
+/*
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
+*/
+#include <vector>
+#include <exception>
+#include <sstream>
+#include <string>
+#include <stdexcept>
+#include <cmath> 
+#include "ers/ers.h"
+
+#include "MuonNSWCommonDecode/NSWSTGTPDecodeBitmaps.h"
+
+#include "MuonNSWCommonDecode/NSWTriggerElink.h"
+#include "MuonNSWCommonDecode/NSWTriggerSTGL1AElink.h"
+#include "MuonNSWCommonDecode/NSWResourceId.h"
+#include "MuonNSWCommonDecode/STGTPPackets.h"
+
+#define DBG_L std::cout << "E123: " << __LINE__ << " " << __FILE__ << std::endl;
+Muon::nsw::NSWTriggerSTGL1AElink::NSWTriggerSTGL1AElink (const uint32_t *bs, const uint32_t remaining):
+  NSWTriggerElink (bs, remaining)
+{
+  // 2 felix header 32b words already decoded;
+  uint pp = 2 * 32;
+  //once format finalized, checking a minimum size
+
+  //NB bit_slice(start, end) includes edges
+  m_head_fragID =                       bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_fragID-1);                     pp+= Muon::nsw::STGTPL1A::size_head_fragID;
+  m_head_sectID =                       bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_sectID-1);                     pp+= Muon::nsw::STGTPL1A::size_head_sectID;
+  m_head_EC =                           bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_EC-1);                         pp+= Muon::nsw::STGTPL1A::size_head_EC;
+  m_head_flags =                        bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_flags-1);                      pp+= Muon::nsw::STGTPL1A::size_head_flags;
+  m_head_BCID =                         bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_BCID-1);                       pp+= Muon::nsw::STGTPL1A::size_head_BCID;
+  m_head_orbit =                        bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_orbit-1);                      pp+= Muon::nsw::STGTPL1A::size_head_orbit;
+  m_head_spare =                        bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_spare-1);                      pp+= Muon::nsw::STGTPL1A::size_head_spare;
+  m_L1ID =                              bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_L1ID-1);                            pp+= Muon::nsw::STGTPL1A::size_L1ID;
+  m_head_wdw_open =                     bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_wdw_open-1);                   pp+= Muon::nsw::STGTPL1A::size_head_wdw_open;
+  m_head_l1a_req =                      bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_l1a_req-1);                    pp+= Muon::nsw::STGTPL1A::size_head_l1a_req;
+  m_head_wdw_close =                    bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_wdw_close-1);                  pp+= Muon::nsw::STGTPL1A::size_head_wdw_close;
+  m_head_overflowCount =                bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_overflowCount-1);              pp+= Muon::nsw::STGTPL1A::size_head_overflowCount;
+  m_head_wdw_matching_engines_usage =   bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_wdw_matching_engines_usage-1); pp+= Muon::nsw::STGTPL1A::size_head_wdw_matching_engines_usage;
+  m_head_cfg_wdw_open_offset =          bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_cfg_wdw_open_offset-1);        pp+= Muon::nsw::STGTPL1A::size_head_cfg_wdw_open_offset;
+  m_head_cfg_l1a_req_offset =           bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_cfg_l1a_req_offset-1);         pp+= Muon::nsw::STGTPL1A::size_head_cfg_l1a_req_offset;
+  m_head_cfg_wdw_close_offset =         bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_cfg_wdw_close_offset-1);       pp+= Muon::nsw::STGTPL1A::size_head_cfg_wdw_close_offset;
+  m_head_cfg_timeout =                  bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_cfg_timeout-1);                pp+= Muon::nsw::STGTPL1A::size_head_cfg_timeout;
+  m_head_link_const =                   bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_head_link_const-1);                 pp+= Muon::nsw::STGTPL1A::size_head_link_const;
+  //this is important! It identifies the elink! It should be ABCD1230/ABCD1231/ABCD1232
+  //not checked during decoding but must be checked at some point
+  unsigned int max_pp = (m_wordCountFlx-1) * sizeof(uint32_t) * 8; // we use this to make sure we are consistent with the size
+  while ( pp < remaining * sizeof(uint32_t) * 8 && pp < (m_wordCountFlx-1) * sizeof(uint32_t) * 8 ){
+    // DEBUG 
+    ERS_DEBUG (2, "pp: " << pp << " rem: " << remaining << " wc: " << m_wordCountFlx );
+    //a -2 needed cause remaining includes felix header words
+    uint32_t current_stream_head_nbits =     bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_stream_head_nbits-1);     pp+= Muon::nsw::STGTPL1A::size_stream_head_nbits;
+    uint32_t current_stream_head_nwords =    bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_stream_head_nwords-1);    pp+= Muon::nsw::STGTPL1A::size_stream_head_nwords;
+    uint32_t current_stream_head_fifo_size = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_stream_head_fifo_size-1); pp+= Muon::nsw::STGTPL1A::size_stream_head_fifo_size;
+    uint32_t current_stream_head_streamID =  bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_stream_head_streamID-1);  pp+= Muon::nsw::STGTPL1A::size_stream_head_streamID;
+
+    m_stream_head_nbits.push_back ( current_stream_head_nbits );
+    m_stream_head_nwords.push_back ( current_stream_head_nwords );
+    m_stream_head_fifo_size.push_back ( current_stream_head_fifo_size );
+    m_stream_head_streamID.push_back ( current_stream_head_streamID );
+
+    int dataSize = ceil(current_stream_head_nbits/32.0); 
+    std::vector<std::vector<uint32_t>> current_stream_data;
+   
+    // DEBUG
+    ERS_DEBUG (2," stream_head_nbits: " << current_stream_head_nbits );
+    ERS_DEBUG (2," stream_head_nwords: "  << current_stream_head_nwords);
+    ERS_DEBUG (2," stream_head_fifo_size: " << current_stream_head_fifo_size);
+    ERS_DEBUG (2," stream_head_streamID: " << current_stream_head_streamID);
+    
+    unsigned int total_expected_size = dataSize * current_stream_head_nwords;
+    // DEBUG 
+    ERS_DEBUG (2, "total_expected_size: " << dataSize * current_stream_head_nwords);
+    ERS_DEBUG (2, "m_wordCountFlx: " << m_wordCountFlx << " ceil(pp/32.0): " << ceil(pp/32.0));
+    
+    if (total_expected_size > m_wordCountFlx-ceil(pp/32.0) + 1)
+    {
+       throw std::length_error("STG stream inconsistent size inconsistent with expected packet size");
+    }
+   
+    //this block data agnostic
+    for (uint i = 0; i<current_stream_head_nwords; i++){
+      std::vector<uint32_t> data;
+      for (int j = 0; j < dataSize && pp < max_pp; j++, pp += 32){
+        data.push_back( bit_slice<uint64_t,uint32_t>(bs, pp, pp+31));
+      }
+      current_stream_data.push_back(data);
+    }
+    m_stream_data.push_back(current_stream_data);
+  }
+
+  for (uint i=0; i<m_stream_data.size(); i++){
+     for (uint j=0; j<m_stream_data.at(i).size(); j++)
+     {
+        if (m_stream_head_streamID[i] == Muon::nsw::STGTPPad::pad_stream_header){ 
+          int inconsistent_message_size = (m_stream_data.at(i).at(j).size()  != std::ceil(m_stream_head_nbits[i]/32.0)); 
+          if (inconsistent_message_size){
+            throw std::length_error("Pad stream inconsistent size inconsistent with integer number of pad-messages");
+          }
+          std::vector<uint32_t> pad_packet = m_stream_data.at(i).at(j);
+	  m_pad_packets.push_back( std::make_shared<STGTPPadPacket>(pad_packet));
+          continue;
+        }  
+        if (m_stream_head_streamID[i] == Muon::nsw::STGTPSegments::merge_stream_header){
+          int inconsistent_message_size = (m_stream_data.at(i).at(j).size() != std::ceil(m_stream_head_nbits[i]/32.0));
+          if (inconsistent_message_size){
+            throw std::length_error("Merge stream inconsistent size inconsistent with integer number of segment-messages");
+          }
+          m_segment_packets.push_back( std::make_shared<Muon::nsw::STGTPSegmentPacket>(m_stream_data.at(i).at(j)));
+          continue;
+        }
+      }
+   }
+  //warning: how the swROD is behaving if the last work is a uint16 only? Just 0-padding?
+  m_trailer_CRC = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPL1A::size_trailer_CRC-1); pp+= Muon::nsw::STGTPL1A::size_trailer_CRC;
+ 
+}
diff --git a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/STGTPPackets.cxx b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/STGTPPackets.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..dcb2181734fd5c508cb6547efaee182596e7bd42
--- /dev/null
+++ b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/STGTPPackets.cxx
@@ -0,0 +1,126 @@
+/*
+  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+*/
+#include <vector>
+#include <exception>
+#include <sstream>
+#include <string>
+#include <algorithm>
+#include <tuple>
+
+#include "MuonNSWCommonDecode/STGTPPackets.h"
+#include "MuonNSWCommonDecode/NSWSTGTPDecodeBitmaps.h"
+#include "MuonNSWCommonDecode/NSWMMTPDecodeBitmaps.h"
+#define PARSE_VAR(var,st,pp,siz) {\
+var =  bit_slice<uint64_t,uint32_t>(st,pp,pp+siz-1);\
+pp += siz;\
+}
+
+Muon::nsw::STGTPPadPacket::STGTPPadPacket (const std::vector<uint32_t>& packet){
+  uint pp = 0;
+
+  uint32_t bs[3]={packet[0],packet[1],packet[2]};
+  m_coincWege =    bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_coincidence_wedge-1);     pp+= Muon::nsw::STGTPPad::size_coincidence_wedge;
+  uint32_t phi_3 = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_phiID_3-1);     pp+= Muon::nsw::STGTPPad::size_phiID_3;
+  uint32_t phi_2 = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_phiID_2-1);     pp+= Muon::nsw::STGTPPad::size_phiID_2;
+  uint32_t phi_1 = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_phiID_1-1);     pp+= Muon::nsw::STGTPPad::size_phiID_1;
+  uint32_t phi_0 = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_phiID_0-1);     pp+= Muon::nsw::STGTPPad::size_phiID_0;
+  m_phiIDs[0]=phi_0;
+  m_phiIDs[1]=phi_1;
+  m_phiIDs[2]=phi_2;
+  m_phiIDs[3]=phi_3;
+  
+  uint32_t band_3 = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_bandID_3-1);     pp+= Muon::nsw::STGTPPad::size_bandID_3;
+  uint32_t band_2 = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_bandID_2-1);     pp+= Muon::nsw::STGTPPad::size_bandID_2;
+  uint32_t band_1 = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_bandID_1-1);     pp+= Muon::nsw::STGTPPad::size_bandID_1;
+  uint32_t band_0 = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_bandID_0-1);     pp+= Muon::nsw::STGTPPad::size_bandID_0;
+  m_bandIDs[0]=band_0;
+  m_bandIDs[1]=band_1;
+  m_bandIDs[2]=band_2;
+  m_bandIDs[3]=band_3;
+
+  m_BCID = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_BCID-1);     pp+= Muon::nsw::STGTPPad::size_BCID;
+
+  pp+=Muon::nsw::STGTPPad::size_spare;
+  m_idleFlag = bit_slice<uint64_t,uint32_t>(bs, pp, pp+Muon::nsw::STGTPPad::size_idleFlag-1);     pp+= Muon::nsw::STGTPPad::size_idleFlag; 
+
+}
+
+Muon::nsw::STGTPSegmentPacket::STGTPSegmentPacket(const std::vector<uint32_t>& packet)
+{
+  uint pp = 0;
+  uint32_t bs[8]={packet[0],packet[1],packet[2],packet[3],packet[4],packet[5],packet[6],packet[7]};
+  PARSE_VAR(m_lut_choice,bs,pp,Muon::nsw::STGTPSegments::size_lut_choice_selection);
+  PARSE_VAR(m_nsw_segment_selector,bs,pp,Muon::nsw::STGTPSegments::size_nsw_segment_selector);
+  PARSE_VAR(m_valid_segment_selector,bs,pp,Muon::nsw::STGTPSegments::size_valid_segment_selector);
+
+  PARSE_VAR(m_monitor_segment_7,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_7_monitor);
+  PARSE_VAR(m_spare_segment_7,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_7_spare);
+  PARSE_VAR(m_lowRes_segment_7,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_7_lowRes);
+  PARSE_VAR(m_phiRes_segment_7,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_7_phiRes);
+  PARSE_VAR(m_dTheta_segment_7,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_7_dTheta);
+  PARSE_VAR(m_phiID_segment_7,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_7_phiID);
+  PARSE_VAR(m_RIndex_segment_7,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_7_rIndex);
+
+  PARSE_VAR(m_monitor_segment_6,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_6_monitor);
+  PARSE_VAR(m_spare_segment_6,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_6_spare);
+  PARSE_VAR(m_lowRes_segment_6,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_6_lowRes);
+  PARSE_VAR(m_phiRes_segment_6,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_6_phiRes);
+  PARSE_VAR(m_dTheta_segment_6,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_6_dTheta);
+  PARSE_VAR(m_phiID_segment_6,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_6_phiID);
+  PARSE_VAR(m_RIndex_segment_6,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_6_rIndex);
+
+  PARSE_VAR(m_monitor_segment_5,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_5_monitor);
+  PARSE_VAR(m_spare_segment_5,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_5_spare);
+  PARSE_VAR(m_lowRes_segment_5,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_5_lowRes);
+  PARSE_VAR(m_phiRes_segment_5,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_5_phiRes);
+  PARSE_VAR(m_dTheta_segment_5,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_5_dTheta);
+  PARSE_VAR(m_phiID_segment_5,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_5_phiID);
+  PARSE_VAR(m_RIndex_segment_5,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_5_rIndex);
+
+  PARSE_VAR(m_monitor_segment_4,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_4_monitor);
+  PARSE_VAR(m_spare_segment_4,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_4_spare);
+  PARSE_VAR(m_lowRes_segment_4,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_4_lowRes);
+  PARSE_VAR(m_phiRes_segment_4,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_4_phiRes);
+  PARSE_VAR(m_dTheta_segment_4,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_4_dTheta);
+  PARSE_VAR(m_phiID_segment_4,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_4_phiID);
+  PARSE_VAR(m_RIndex_segment_4,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_4_rIndex);
+
+  PARSE_VAR(m_monitor_segment_3,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_3_monitor);
+  PARSE_VAR(m_spare_segment_3,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_3_spare);
+  PARSE_VAR(m_lowRes_segment_3,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_3_lowRes);
+  PARSE_VAR(m_phiRes_segment_3,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_3_phiRes);
+  PARSE_VAR(m_dTheta_segment_3,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_3_dTheta);
+  PARSE_VAR(m_phiID_segment_3,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_3_phiID);
+  PARSE_VAR(m_RIndex_segment_3,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_3_rIndex);
+
+  PARSE_VAR(m_monitor_segment_2,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_2_monitor);
+  PARSE_VAR(m_spare_segment_2,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_2_spare);
+  PARSE_VAR(m_lowRes_segment_2,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_2_lowRes);
+  PARSE_VAR(m_phiRes_segment_2,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_2_phiRes);
+  PARSE_VAR(m_dTheta_segment_2,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_2_dTheta);
+  PARSE_VAR(m_phiID_segment_2,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_2_phiID);
+  PARSE_VAR(m_RIndex_segment_2,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_2_rIndex);
+
+  PARSE_VAR(m_monitor_segment_1,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_1_monitor);
+  PARSE_VAR(m_spare_segment_1,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_1_spare);
+  PARSE_VAR(m_lowRes_segment_1,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_1_lowRes);
+  PARSE_VAR(m_phiRes_segment_1,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_1_phiRes);
+  PARSE_VAR(m_dTheta_segment_1,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_1_dTheta);
+  PARSE_VAR(m_phiID_segment_1,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_1_phiID);
+  PARSE_VAR(m_RIndex_segment_1,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_1_rIndex); 
+ 
+  PARSE_VAR(m_monitor_segment_0,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_0_monitor);
+  PARSE_VAR(m_spare_segment_0,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_0_spare);
+  PARSE_VAR(m_lowRes_segment_0,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_0_lowRes);
+  PARSE_VAR(m_phiRes_segment_0,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_0_phiRes); 
+  PARSE_VAR(m_dTheta_segment_0,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_0_dTheta); 
+  PARSE_VAR(m_phiID_segment_0,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_0_phiID);
+  PARSE_VAR(m_RIndex_segment_0,bs,pp,Muon::nsw::STGTPSegments::size_output_segment_0_rIndex);
+
+  PARSE_VAR(m_BCID,bs,pp,Muon::nsw::STGTPSegments::size_bcid);
+  PARSE_VAR(m_sectorID,bs,pp,Muon::nsw::STGTPSegments::size_sectorID);
+
+
+}
+
diff --git a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/test/test_nsw_trigger_common_decoder.cxx b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/test/test_nsw_trigger_common_decoder.cxx
index 20b6804bb7553566339fee8a7a1e41a282777529..2de72ff8b4fe0465def53da5e1aef29f74199937 100644
--- a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/test/test_nsw_trigger_common_decoder.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/test/test_nsw_trigger_common_decoder.cxx
@@ -1,6 +1,6 @@
 /*
-  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
-*/
+   Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
+   */
 
 // STL include files
 
@@ -23,7 +23,8 @@
 #include "MuonNSWCommonDecode/NSWResourceId.h"
 #include "MuonNSWCommonDecode/MMARTPacket.h"
 #include "MuonNSWCommonDecode/MMTrigPacket.h"
-
+#include "MuonNSWCommonDecode/NSWTriggerSTGL1AElink.h"
+#include "MuonNSWCommonDecode/STGTPPackets.h"
 
 
 #include <TFile.h>
@@ -31,673 +32,1136 @@
 
 struct Params
 {
-  bool print_only {false};
-  uint32_t printout_level {0};
-  uint32_t max_events {0};
-  std::vector <std::string> file_names; //outfiles will just rename input ones
+	bool print_only {false};
+	uint32_t printout_level {0};
+	uint32_t max_events {0};
+	std::vector <std::string> file_names; //outfiles will just rename input ones
 };
 
 struct Statistics
 {
-  uint32_t nevents {0};
-  uint32_t nevents_not_decoded {0};
-  uint32_t nevents_sus_felix_stat {0};
-  double total_decoding_time {0};
-  double avg_decoding_time {0};
-  //can be extended for any quick stat wanted
+	uint32_t nevents {0};
+	uint32_t nevents_not_decoded {0};
+	uint32_t nevents_sus_felix_stat {0};
+	double total_decoding_time {0};
+	double avg_decoding_time {0};
+	double avg_fill_time {0};
+	double avg_write_time {0};
+	double total_write_time {0};
+	double total_fill_time {0};
+	//can be extended for any quick stat wanted
 };
 
 struct outBranches
 {
-  //each event has multple ROBs (e.g. multiple sectors)
-  //each ROB then has multiple elinks
-  //MML1A - comtemplating multiple elinks,
-  //so the vector is on elinks
-  std::vector<uint32_t> b_MML1A_ROD_sourceID = {} ;
-  std::vector<uint32_t> b_MML1A_ROD_subdetID = {} ;
-  std::vector<uint32_t> b_MML1A_ROD_moduleID = {} ;
-  std::vector<uint32_t> b_MML1A_ROD_L1ID = {} ;
-  std::vector<uint32_t> b_MML1A_ROD_n_words = {} ;
-  std::vector<uint32_t> b_MML1A_head_fragID = {} ;
-  std::vector<uint32_t> b_MML1A_head_sectID = {} ;
-  std::vector<uint32_t> b_MML1A_head_EC = {} ;
-  std::vector<uint32_t> b_MML1A_head_flags = {} ;
-  std::vector<uint32_t> b_MML1A_head_BCID = {} ;
-  std::vector<uint32_t> b_MML1A_head_orbit = {} ;
-  std::vector<uint32_t> b_MML1A_head_spare = {} ;
-  std::vector<uint32_t> b_MML1A_L1ID = {} ;
-  std::vector<uint32_t> b_MML1A_head_wdw_open = {} ;
-  std::vector<uint32_t> b_MML1A_head_l1a_req = {} ;
-  std::vector<uint32_t> b_MML1A_head_wdw_close = {} ;
-  std::vector<uint32_t> b_MML1A_head_overflowCount = {} ;
-  std::vector<uint32_t> b_MML1A_head_wdw_matching_engines_usage = {} ;
-  std::vector<uint32_t> b_MML1A_head_cfg_wdw_open_offset = {} ;
-  std::vector<uint32_t> b_MML1A_head_cfg_l1a_req_offset = {} ;
-  std::vector<uint32_t> b_MML1A_head_cfg_wdw_close_offset = {} ;
-  std::vector<uint32_t> b_MML1A_head_cfg_timeout = {} ;
-  std::vector<uint32_t> b_MML1A_head_link_const = {} ;
-  std::vector<std::vector<uint32_t>> b_MML1A_stream_head_nbits = {} ;
-  std::vector<std::vector<uint32_t>> b_MML1A_stream_head_nwords = {} ;
-  std::vector<std::vector<uint32_t>> b_MML1A_stream_head_fifo_size = {} ;
-  std::vector<std::vector<uint32_t>> b_MML1A_stream_head_streamID = {} ;
-  std::vector<std::vector<uint32_t>> b_MML1A_art_BCID = {} ;
-  std::vector<std::vector<uint32_t>> b_MML1A_art_layers = {} ;
-  std::vector<std::vector<uint32_t>> b_MML1A_art_channels = {} ;
-  std::vector<std::vector<uint32_t>> b_MML1A_trig_BCID = {} ;
-  std::vector<std::vector<uint32_t>> b_MML1A_trig_dTheta = {} ;
-  std::vector<std::vector<uint32_t>> b_MML1A_trig_phiBin = {} ;
-  std::vector<std::vector<uint32_t>> b_MML1A_trig_rBin = {} ;
-  std::vector<uint32_t> b_MML1A_trailer_CRC = {} ;
-  //MMMon - comtemplating multiple elinks (even if only one possible in current design)
-  //so the vector is on elinks
-  std::vector<uint32_t> b_MMMon_ROD_sourceID = {} ;
-  std::vector<uint32_t> b_MMMon_ROD_subdetID = {} ;
-  std::vector<uint32_t> b_MMMon_ROD_moduleID = {} ;
-  std::vector<uint32_t> b_MMMon_ROD_L1ID = {} ;
-  std::vector<uint32_t> b_MMMon_ROD_n_words = {} ;
-  std::vector<uint32_t> b_MMMon_head_fragID = {} ;
-  std::vector<uint32_t> b_MMMon_head_sectID = {} ;
-  std::vector<uint32_t> b_MMMon_head_EC = {} ;
-  std::vector<uint32_t> b_MMMon_head_flags = {} ;
-  std::vector<uint32_t> b_MMMon_head_BCID = {} ;
-  std::vector<uint32_t> b_MMMon_head_orbit = {} ;
-  std::vector<uint32_t> b_MMMon_head_spare = {} ;
-  std::vector<uint32_t> b_MMMon_L1ID = {} ;
-  std::vector<uint32_t> b_MMMon_head_coincBCID = {} ;
-  std::vector<uint32_t> b_MMMon_head_regionCount = {} ;
-  std::vector<uint32_t> b_MMMon_head_coincRegion = {} ;
-  std::vector<uint32_t> b_MMMon_head_reserved = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_finder_streamID = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_finder_regionCount = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_finder_triggerID = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_finder_V1 = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_finder_V0 = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_finder_U1 = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_finder_U0 = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_finder_X3 = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_finder_X2 = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_finder_X1 = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_finder_X0 = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_fitter_streamID = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_fitter_regionCount = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_fitter_triggerID = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_fitter_filler = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_fitter_mxG = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_fitter_muG = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_fitter_mvG = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_fitter_mxL = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_fitter_mx_ROI = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_fitter_dTheta = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_fitter_zero = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_fitter_phiSign = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_fitter_phiBin = {} ;
-  std::vector<std::vector<uint32_t>> b_MMMon_fitter_rBin = {} ;
-  std::vector<uint32_t> b_MMMon_trailer_CRC = {} ;
-  //PadL1A - comtemplating multiple elinks
-  //so the vector is on elinks
-  std::vector<uint32_t> b_PadL1A_ROD_sourceID = {} ;
-  std::vector<uint32_t> b_PadL1A_ROD_subdetID = {} ;
-  std::vector<uint32_t> b_PadL1A_ROD_moduleID = {} ;
-  std::vector<uint32_t> b_PadL1A_ROD_L1ID = {} ;
-  std::vector<uint32_t> b_PadL1A_ROD_n_words = {} ;
-  std::vector<uint32_t> b_PadL1A_flags = {} ;
-  std::vector<uint32_t> b_PadL1A_ec = {} ;
-  std::vector<uint32_t> b_PadL1A_fragid = {} ;
-  std::vector<uint32_t> b_PadL1A_secid = {} ;
-  std::vector<uint32_t> b_PadL1A_spare = {} ;
-  std::vector<uint32_t> b_PadL1A_orbit = {} ;
-  std::vector<uint32_t> b_PadL1A_bcid = {} ;
-  std::vector<uint32_t> b_PadL1A_l1id = {} ;
-  std::vector<uint32_t> b_PadL1A_hit_n = {} ;
-  std::vector<uint32_t> b_PadL1A_pfeb_n = {} ;
-  std::vector<uint32_t> b_PadL1A_trigger_n = {} ;
-  std::vector<uint32_t> b_PadL1A_bcid_n = {} ;
-  std::vector<std::vector<uint32_t>> b_PadL1A_hit_relbcid = {} ;
-  std::vector<std::vector<uint32_t>> b_PadL1A_hit_pfeb = {} ;
-  std::vector<std::vector<uint32_t>> b_PadL1A_hit_tdschannel = {} ;
-  std::vector<std::vector<uint32_t>> b_PadL1A_hit_vmmchannel = {} ;
-  std::vector<std::vector<uint32_t>> b_PadL1A_hit_vmm = {} ;
-  std::vector<std::vector<uint32_t>> b_PadL1A_hit_padchannel = {} ;
-  std::vector<std::vector<uint32_t>> b_PadL1A_pfeb_addr = {} ;
-  std::vector<std::vector<uint32_t>> b_PadL1A_pfeb_nchan = {} ;
-  std::vector<std::vector<uint32_t>> b_PadL1A_pfeb_disconnected = {} ;
-  std::vector<std::vector<uint32_t>> b_PadL1A_trigger_bandid = {} ;
-  std::vector<std::vector<uint32_t>> b_PadL1A_trigger_phiid = {} ;
-  std::vector<std::vector<uint32_t>> b_PadL1A_trigger_relbcid = {} ;
-  std::vector<std::vector<uint32_t>> b_PadL1A_bcid_rel = {} ;
-  std::vector<std::vector<uint32_t>> b_PadL1A_bcid_status = {} ;
-  std::vector<std::vector<uint32_t>> b_PadL1A_bcid_multzero = {} ;
+	//each event has multple ROBs (e.g. multiple sectors)
+	//each ROB then has multiple elinks
+	//MML1A - comtemplating multiple elinks,
+	//so the vector is on elinks
+	std::vector<uint32_t> b_MML1A_ROD_sourceID = {} ;
+	std::vector<uint32_t> b_MML1A_ROD_subdetID = {} ;
+	std::vector<uint32_t> b_MML1A_ROD_moduleID = {} ;
+	std::vector<uint32_t> b_MML1A_ROD_L1ID = {} ;
+	std::vector<uint32_t> b_MML1A_ROD_n_words = {} ;
+	std::vector<uint32_t> b_MML1A_head_fragID = {} ;
+	std::vector<uint32_t> b_MML1A_head_sectID = {} ;
+	std::vector<uint32_t> b_MML1A_head_EC = {} ;
+	std::vector<uint32_t> b_MML1A_head_flags = {} ;
+	std::vector<uint32_t> b_MML1A_head_BCID = {} ;
+	std::vector<uint32_t> b_MML1A_head_orbit = {} ;
+	std::vector<uint32_t> b_MML1A_head_spare = {} ;
+	std::vector<uint32_t> b_MML1A_L1ID = {} ;
+	std::vector<uint32_t> b_MML1A_head_wdw_open = {} ;
+	std::vector<uint32_t> b_MML1A_head_l1a_req = {} ;
+	std::vector<uint32_t> b_MML1A_head_wdw_close = {} ;
+	std::vector<uint32_t> b_MML1A_head_overflowCount = {} ;
+	std::vector<uint32_t> b_MML1A_head_wdw_matching_engines_usage = {} ;
+	std::vector<uint32_t> b_MML1A_head_cfg_wdw_open_offset = {} ;
+	std::vector<uint32_t> b_MML1A_head_cfg_l1a_req_offset = {} ;
+	std::vector<uint32_t> b_MML1A_head_cfg_wdw_close_offset = {} ;
+	std::vector<uint32_t> b_MML1A_head_cfg_timeout = {} ;
+	std::vector<uint32_t> b_MML1A_head_link_const = {} ;
+	std::vector<std::vector<uint32_t>> b_MML1A_stream_head_nbits = {} ;
+	std::vector<std::vector<uint32_t>> b_MML1A_stream_head_nwords = {} ;
+	std::vector<std::vector<uint32_t>> b_MML1A_stream_head_fifo_size = {} ;
+	std::vector<std::vector<uint32_t>> b_MML1A_stream_head_streamID = {} ;
+	std::vector<std::vector<uint32_t>> b_MML1A_art_BCID = {} ;
+	std::vector<std::vector<uint32_t>> b_MML1A_art_layers = {} ;
+	std::vector<std::vector<uint32_t>> b_MML1A_art_channels = {} ;
+	std::vector<std::vector<uint32_t>> b_MML1A_trig_BCID = {} ;
+	std::vector<std::vector<uint32_t>> b_MML1A_trig_dTheta = {} ;
+	std::vector<std::vector<uint32_t>> b_MML1A_trig_phiBin = {} ;
+	std::vector<std::vector<uint32_t>> b_MML1A_trig_rBin = {} ;
+	std::vector<uint32_t> b_MML1A_trailer_CRC = {} ;
+	//MMMon - comtemplating multiple elinks (even if only one possible in current design)
+	//so the vector is on elinks
+	std::vector<uint32_t> b_MMMon_ROD_sourceID = {} ;
+	std::vector<uint32_t> b_MMMon_ROD_subdetID = {} ;
+	std::vector<uint32_t> b_MMMon_ROD_moduleID = {} ;
+	std::vector<uint32_t> b_MMMon_ROD_L1ID = {} ;
+	std::vector<uint32_t> b_MMMon_ROD_n_words = {} ;
+	std::vector<uint32_t> b_MMMon_head_fragID = {} ;
+	std::vector<uint32_t> b_MMMon_head_sectID = {} ;
+	std::vector<uint32_t> b_MMMon_head_EC = {} ;
+	std::vector<uint32_t> b_MMMon_head_flags = {} ;
+	std::vector<uint32_t> b_MMMon_head_BCID = {} ;
+	std::vector<uint32_t> b_MMMon_head_orbit = {} ;
+	std::vector<uint32_t> b_MMMon_head_spare = {} ;
+	std::vector<uint32_t> b_MMMon_L1ID = {} ;
+	std::vector<uint32_t> b_MMMon_head_coincBCID = {} ;
+	std::vector<uint32_t> b_MMMon_head_regionCount = {} ;
+	std::vector<uint32_t> b_MMMon_head_coincRegion = {} ;
+	std::vector<uint32_t> b_MMMon_head_reserved = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_finder_streamID = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_finder_regionCount = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_finder_triggerID = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_finder_V1 = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_finder_V0 = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_finder_U1 = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_finder_U0 = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_finder_X3 = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_finder_X2 = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_finder_X1 = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_finder_X0 = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_fitter_streamID = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_fitter_regionCount = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_fitter_triggerID = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_fitter_filler = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_fitter_mxG = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_fitter_muG = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_fitter_mvG = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_fitter_mxL = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_fitter_mx_ROI = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_fitter_dTheta = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_fitter_zero = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_fitter_phiSign = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_fitter_phiBin = {} ;
+	std::vector<std::vector<uint32_t>> b_MMMon_fitter_rBin = {} ;
+	std::vector<uint32_t> b_MMMon_trailer_CRC = {} ;
+	//PadL1A - comtemplating multiple elinks
+	//so the vector is on elinks
+	std::vector<uint32_t> b_PadL1A_ROD_sourceID = {} ;
+	std::vector<uint32_t> b_PadL1A_ROD_subdetID = {} ;
+	std::vector<uint32_t> b_PadL1A_ROD_moduleID = {} ;
+	std::vector<uint32_t> b_PadL1A_ROD_L1ID = {} ;
+	std::vector<uint32_t> b_PadL1A_ROD_n_words = {} ;
+	std::vector<uint32_t> b_PadL1A_flags = {} ;
+	std::vector<uint32_t> b_PadL1A_ec = {} ;
+	std::vector<uint32_t> b_PadL1A_fragid = {} ;
+	std::vector<uint32_t> b_PadL1A_secid = {} ;
+	std::vector<uint32_t> b_PadL1A_spare = {} ;
+	std::vector<uint32_t> b_PadL1A_orbit = {} ;
+	std::vector<uint32_t> b_PadL1A_bcid = {} ;
+	std::vector<uint32_t> b_PadL1A_l1id = {} ;
+	std::vector<uint32_t> b_PadL1A_hit_n = {} ;
+	std::vector<uint32_t> b_PadL1A_pfeb_n = {} ;
+	std::vector<uint32_t> b_PadL1A_trigger_n = {} ;
+	std::vector<uint32_t> b_PadL1A_bcid_n = {} ;
+	std::vector<std::vector<uint32_t>> b_PadL1A_hit_relbcid = {} ;
+	std::vector<std::vector<uint32_t>> b_PadL1A_hit_pfeb = {} ;
+	std::vector<std::vector<uint32_t>> b_PadL1A_hit_tdschannel = {} ;
+	std::vector<std::vector<uint32_t>> b_PadL1A_hit_vmmchannel = {} ;
+	std::vector<std::vector<uint32_t>> b_PadL1A_hit_vmm = {} ;
+	std::vector<std::vector<uint32_t>> b_PadL1A_hit_padchannel = {} ;
+	std::vector<std::vector<uint32_t>> b_PadL1A_pfeb_addr = {} ;
+	std::vector<std::vector<uint32_t>> b_PadL1A_pfeb_nchan = {} ;
+	std::vector<std::vector<uint32_t>> b_PadL1A_pfeb_disconnected = {} ;
+	std::vector<std::vector<uint32_t>> b_PadL1A_trigger_bandid = {} ;
+	std::vector<std::vector<uint32_t>> b_PadL1A_trigger_phiid = {} ;
+	std::vector<std::vector<uint32_t>> b_PadL1A_trigger_relbcid = {} ;
+	std::vector<std::vector<uint32_t>> b_PadL1A_bcid_rel = {} ;
+	std::vector<std::vector<uint32_t>> b_PadL1A_bcid_status = {} ;
+	std::vector<std::vector<uint32_t>> b_PadL1A_bcid_multzero = {} ;
+
+	std::vector<uint32_t> b_STGL1A_ROD_sourceID = {} ;
+	std::vector<uint32_t> b_STGL1A_ROD_subdetID = {} ;
+	std::vector<uint32_t> b_STGL1A_ROD_moduleID = {} ;
+	std::vector<uint32_t> b_STGL1A_ROD_L1ID = {} ;
+	std::vector<uint32_t> b_STGL1A_ROD_n_words = {} ;
+	std::vector<uint32_t> b_STGL1A_head_fragID = {} ;
+	std::vector<uint32_t> b_STGL1A_head_sectID = {} ;
+	std::vector<uint32_t> b_STGL1A_head_EC = {} ;
+	std::vector<uint32_t> b_STGL1A_head_flags = {} ;
+	std::vector<uint32_t> b_STGL1A_head_BCID = {} ;
+	std::vector<uint32_t> b_STGL1A_head_orbit = {} ;
+	std::vector<uint32_t> b_STGL1A_head_spare = {} ;
+	std::vector<uint32_t> b_STGL1A_L1ID = {} ;
+	std::vector<uint32_t> b_STGL1A_head_wdw_open = {} ;
+	std::vector<uint32_t> b_STGL1A_head_l1a_req = {} ;
+	std::vector<uint32_t> b_STGL1A_head_wdw_close = {} ;
+	std::vector<uint32_t> b_STGL1A_head_overflowCount = {} ;
+	std::vector<uint32_t> b_STGL1A_head_wdw_matching_engines_usage = {} ;
+	std::vector<uint32_t> b_STGL1A_head_cfg_wdw_open_offset = {} ;
+	std::vector<uint32_t> b_STGL1A_head_cfg_l1a_req_offset = {} ;
+	std::vector<uint32_t> b_STGL1A_head_cfg_wdw_close_offset = {} ;
+	std::vector<uint32_t> b_STGL1A_head_cfg_timeout = {} ;
+	std::vector<uint32_t> b_STGL1A_head_link_const = {} ;
+	std::vector<std::vector<uint32_t>> b_STGL1A_stream_head_nbits = {} ;
+	std::vector<std::vector<uint32_t>> b_STGL1A_stream_head_nwords = {} ;
+	std::vector<std::vector<uint32_t>> b_STGL1A_stream_head_fifo_size = {} ;
+	std::vector<std::vector<uint32_t>> b_STGL1A_stream_head_streamID = {};
+
+	std::vector<std::vector<uint32_t>> b_STGL1A_pad_coincidence_wedge = {};
+
+	std::vector<std::vector<uint32_t>> b_STGL1A_pad_phiID_3 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_pad_phiID_2 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_pad_phiID_1 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_pad_phiID_0 = {};
+
+	std::vector<std::vector<uint32_t>> b_STGL1A_pad_bandID_3 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_pad_bandID_2 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_pad_bandID_1 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_pad_bandID_0 = {};
+
+	std::vector<std::vector<uint32_t>> b_STGL1A_pad_BCID = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_pad_idleFlag = {};
+
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_LUT_choiceSelection = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_nsw_segmentSelector = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_valid_segmentSelector = {};
+
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment7 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment7 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment7 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment7 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment7 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment7 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment7 = {};
+
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment6 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment6 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment6 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment6 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment6 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment6 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment6 = {};
+
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment5 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment5 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment5 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment5 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment5 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment5 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment5 = {};
+
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment4 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment4 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment4 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment4 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment4 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment4 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment4 = {};
+
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment3 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment3 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment3 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment3 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment3 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment3 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment3 = {};
+
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment2 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment2 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment2 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment2 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment2 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment2 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment2 = {};
+
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment1 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment1 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment1 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment1 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment1 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment1 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment1 = {};
+
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment0 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment0 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment0 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment0 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment0 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment0 = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment0 = {};
+
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_BCID = {};
+	std::vector<std::vector<uint32_t>> b_STGL1A_merge_sectorID = {};
+
+	std::vector<uint32_t> b_STGL1A_trailer_CRC = {} ;
 
 };
 
 void test_nsw_trigger_common_decoder_help (char *progname)
 {
-  std::cout << "Usage: " << progname
-	<< " [-h] [-n events] [-p] [-v] file1, file2, ..." << std::endl;
-  std::cout << "\t\t[-n events] maximum number of events to read (default = all)" << std::endl;
-  std::cout << "\t\t[-p] only print raw fragments" << std::endl;
-  std::cout << "\t\tMultiple [-v] options increase printout detail level" << std::endl;
+	std::cout << "Usage: " << progname
+		<< " [-h] [-n events] [-p] [-v] file1, file2, ..." << std::endl;
+	std::cout << "\t\t[-n events] maximum number of events to read (default = all)" << std::endl;
+	std::cout << "\t\t[-p] only print raw fragments" << std::endl;
+	std::cout << "\t\tMultiple [-v] options increase printout detail level" << std::endl;
 }
 
 int test_nsw_trigger_common_decoder_opt (int argc, char **argv, Params& params)
 {
-  int i;
-  for (i=1; i < argc; ++i){
-    if (argv[i][0] == '-'){
-      switch (argv[i][1]){
-        case 'v':
-          ++params.printout_level;
-          break;
-        case 'p':
-	        params.print_only = true;
-	        break;
-        case 'n':
-          params.max_events = static_cast <uint32_t> (strtol(argv[++i], NULL, 10));
-          break;
-        case 'h':
-	        test_nsw_trigger_common_decoder_help (argv[0]);
-          return 1;
-        default:
-	        test_nsw_trigger_common_decoder_help (argv[0]);
-	        return 1;
-      }
-    } else {
-      std::string data_file_name (argv[i]);
-      params.file_names.push_back (data_file_name);
-    }
-  }
-
-  if (params.file_names.size () == 0)
-  {
-    test_nsw_trigger_common_decoder_help (argv[0]);
-    std::cout << "\t\tNo input files provided" << std::endl;
-    return 2;
-  }
-
-  return 0;
+	int i;
+	for (i=1; i < argc; ++i){
+		if (argv[i][0] == '-'){
+			switch (argv[i][1]){
+				case 'v':
+					++params.printout_level;
+					break;
+				case 'p':
+					params.print_only = true;
+					break;
+				case 'n':
+					params.max_events = static_cast <uint32_t> (strtol(argv[++i], NULL, 10));
+					break;
+				case 'h':
+					test_nsw_trigger_common_decoder_help (argv[0]);
+					return 1;
+				default:
+					test_nsw_trigger_common_decoder_help (argv[0]);
+					return 1;
+			}
+		} else {
+			std::string data_file_name (argv[i]);
+			params.file_names.push_back (data_file_name);
+		}
+	}
+
+	if (params.file_names.size () == 0)
+	{
+		test_nsw_trigger_common_decoder_help (argv[0]);
+		std::cout << "\t\tNo input files provided" << std::endl;
+		return 2;
+	}
+
+	return 0;
 }
 
 int test_nsw_trigger_common_decoder_init_tree (TTree &outtree, outBranches &data)
 {
 
-    //creating always all branches... you never know which swROD modules are connected...
-    //can change later if needed (but this is a test app so...)
-    outtree.Branch( "MML1A_ROD_sourceID", &data.b_MML1A_ROD_sourceID);
-    outtree.Branch( "MML1A_ROD_subdetID", &data.b_MML1A_ROD_subdetID);
-    outtree.Branch( "MML1A_ROD_moduleID", &data.b_MML1A_ROD_moduleID);
-    outtree.Branch( "MML1A_ROD_L1ID", &data.b_MML1A_ROD_L1ID);
-    outtree.Branch( "MML1A_ROD_n_words", &data.b_MML1A_ROD_n_words);
-    outtree.Branch( "MML1A_head_fragID", &data.b_MML1A_head_fragID);
-    outtree.Branch( "MML1A_head_sectID", &data.b_MML1A_head_sectID);
-    outtree.Branch( "MML1A_head_EC", &data.b_MML1A_head_EC);
-    outtree.Branch( "MML1A_head_flags", &data.b_MML1A_head_flags);
-    outtree.Branch( "MML1A_head_BCID", &data.b_MML1A_head_BCID);
-    outtree.Branch( "MML1A_head_orbit", &data.b_MML1A_head_orbit);
-    outtree.Branch( "MML1A_head_spare", &data.b_MML1A_head_spare);
-    outtree.Branch( "MML1A_L1ID", &data.b_MML1A_L1ID);
-    outtree.Branch( "MML1A_head_wdw_open", &data.b_MML1A_head_wdw_open);
-    outtree.Branch( "MML1A_head_l1a_req", &data.b_MML1A_head_l1a_req);
-    outtree.Branch( "MML1A_head_wdw_close", &data.b_MML1A_head_wdw_close);
-    outtree.Branch( "MML1A_head_overflowCount", &data.b_MML1A_head_overflowCount);
-    outtree.Branch( "MML1A_head_wdw_matching_engines_usage", &data.b_MML1A_head_wdw_matching_engines_usage);
-    outtree.Branch( "MML1A_head_cfg_wdw_open_offset", &data.b_MML1A_head_cfg_wdw_open_offset);
-    outtree.Branch( "MML1A_head_cfg_l1a_req_offset", &data.b_MML1A_head_cfg_l1a_req_offset);
-    outtree.Branch( "MML1A_head_cfg_wdw_close_offset", &data.b_MML1A_head_cfg_wdw_close_offset);
-    outtree.Branch( "MML1A_head_cfg_timeout", &data.b_MML1A_head_cfg_timeout);
-    outtree.Branch( "MML1A_head_link_const", &data.b_MML1A_head_link_const);
-    outtree.Branch( "MML1A_stream_head_nbits", &data.b_MML1A_stream_head_nbits);
-    outtree.Branch( "MML1A_stream_head_nwords", &data.b_MML1A_stream_head_nwords);
-    outtree.Branch( "MML1A_stream_head_fifo_size", &data.b_MML1A_stream_head_fifo_size);
-    outtree.Branch( "MML1A_stream_head_streamID", &data.b_MML1A_stream_head_streamID);
-    outtree.Branch( "MML1A_trailer_CRC", &data.b_MML1A_trailer_CRC);
-    outtree.Branch( "MML1A_art_BCID", &data.b_MML1A_art_BCID);
-    outtree.Branch( "MML1A_art_layers", &data.b_MML1A_art_layers);
-    outtree.Branch( "MML1A_art_channels", &data.b_MML1A_art_channels);
-    outtree.Branch( "MML1A_trig_BCID", &data.b_MML1A_trig_BCID);
-    outtree.Branch( "MML1A_trig_dTheta", &data.b_MML1A_trig_dTheta);
-    outtree.Branch( "MML1A_trig_phiBin", &data.b_MML1A_trig_phiBin);
-    outtree.Branch( "MML1A_trig_rBin", &data.b_MML1A_trig_rBin);
-
-    outtree.Branch("MMMon_ROD_sourceID", &data.b_MMMon_ROD_sourceID);
-    outtree.Branch("MMMon_ROD_subdetID", &data.b_MMMon_ROD_subdetID);
-    outtree.Branch("MMMon_ROD_moduleID", &data.b_MMMon_ROD_moduleID);
-    outtree.Branch("MMMon_ROD_L1ID", &data.b_MMMon_ROD_L1ID);
-    outtree.Branch("MMMon_ROD_n_words", &data.b_MMMon_ROD_n_words);
-    outtree.Branch("MMMon_head_fragID", &data.b_MMMon_head_fragID);
-    outtree.Branch("MMMon_head_sectID", &data.b_MMMon_head_sectID);
-    outtree.Branch("MMMon_head_EC", &data.b_MMMon_head_EC);
-    outtree.Branch("MMMon_head_flags", &data.b_MMMon_head_flags);
-    outtree.Branch("MMMon_head_BCID", &data.b_MMMon_head_BCID);
-    outtree.Branch("MMMon_head_orbit", &data.b_MMMon_head_orbit);
-    outtree.Branch("MMMon_head_spare", &data.b_MMMon_head_spare);
-    outtree.Branch("MMMon_L1ID", &data.b_MMMon_L1ID);
-    outtree.Branch("MMMon_head_coincBCID", &data.b_MMMon_head_coincBCID);
-    outtree.Branch("MMMon_head_regionCount", &data.b_MMMon_head_regionCount);
-    outtree.Branch("MMMon_head_coincRegion", &data.b_MMMon_head_coincRegion);
-    outtree.Branch("MMMon_head_reserved", &data.b_MMMon_head_reserved);
-    outtree.Branch("MMMon_finder_streamID", &data.b_MMMon_finder_streamID);
-    outtree.Branch("MMMon_finder_regionCount", &data.b_MMMon_finder_regionCount);
-    outtree.Branch("MMMon_finder_triggerID", &data.b_MMMon_finder_triggerID);
-    outtree.Branch("MMMon_finder_V1", &data.b_MMMon_finder_V1);
-    outtree.Branch("MMMon_finder_V0", &data.b_MMMon_finder_V0);
-    outtree.Branch("MMMon_finder_U1", &data.b_MMMon_finder_U1);
-    outtree.Branch("MMMon_finder_U0", &data.b_MMMon_finder_U0);
-    outtree.Branch("MMMon_finder_X3", &data.b_MMMon_finder_X3);
-    outtree.Branch("MMMon_finder_X2", &data.b_MMMon_finder_X2);
-    outtree.Branch("MMMon_finder_X1", &data.b_MMMon_finder_X1);
-    outtree.Branch("MMMon_finder_X0", &data.b_MMMon_finder_X0);
-    outtree.Branch("MMMon_fitter_streamID", &data.b_MMMon_fitter_streamID);
-    outtree.Branch("MMMon_fitter_regionCount", &data.b_MMMon_fitter_regionCount);
-    outtree.Branch("MMMon_fitter_triggerID", &data.b_MMMon_fitter_triggerID);
-    outtree.Branch("MMMon_fitter_filler", &data.b_MMMon_fitter_filler);
-    outtree.Branch("MMMon_fitter_mxG", &data.b_MMMon_fitter_mxG);
-    outtree.Branch("MMMon_fitter_muG", &data.b_MMMon_fitter_muG);
-    outtree.Branch("MMMon_fitter_mvG", &data.b_MMMon_fitter_mvG);
-    outtree.Branch("MMMon_fitter_mxL", &data.b_MMMon_fitter_mxL);
-    outtree.Branch("MMMon_fitter_mx_ROI", &data.b_MMMon_fitter_mx_ROI);
-    outtree.Branch("MMMon_fitter_dTheta", &data.b_MMMon_fitter_dTheta);
-    outtree.Branch("MMMon_fitter_zero", &data.b_MMMon_fitter_zero);
-    outtree.Branch("MMMon_fitter_phiSign", &data.b_MMMon_fitter_phiSign);
-    outtree.Branch("MMMon_fitter_phiBin", &data.b_MMMon_fitter_phiBin);
-    outtree.Branch("MMMon_fitter_rBin", &data.b_MMMon_fitter_rBin);
-    outtree.Branch("MMMon_trailer_CRC", &data.b_MMMon_trailer_CRC);
-
-    outtree.Branch( "PadL1A_ROD_sourceID", &data.b_PadL1A_ROD_sourceID);
-    outtree.Branch( "PadL1A_ROD_subdetID", &data.b_PadL1A_ROD_subdetID);
-    outtree.Branch( "PadL1A_ROD_moduleID", &data.b_PadL1A_ROD_moduleID);
-    outtree.Branch( "PadL1A_ROD_L1ID", &data.b_PadL1A_ROD_L1ID);
-    outtree.Branch( "PadL1A_ROD_n_words", &data.b_PadL1A_ROD_n_words);
-    outtree.Branch( "PadL1A_flags", &data.b_PadL1A_flags);
-    outtree.Branch( "PadL1A_ec", &data.b_PadL1A_ec);
-    outtree.Branch( "PadL1A_fragid", &data.b_PadL1A_fragid);
-    outtree.Branch( "PadL1A_secid", &data.b_PadL1A_secid);
-    outtree.Branch( "PadL1A_spare", &data.b_PadL1A_spare);
-    outtree.Branch( "PadL1A_orbit", &data.b_PadL1A_orbit);
-    outtree.Branch( "PadL1A_bcid", &data.b_PadL1A_bcid);
-    outtree.Branch( "PadL1A_l1id", &data.b_PadL1A_l1id);
-    outtree.Branch( "PadL1A_hit_n", &data.b_PadL1A_hit_n);
-    outtree.Branch( "PadL1A_pfeb_n", &data.b_PadL1A_pfeb_n);
-    outtree.Branch( "PadL1A_trigger_n", &data.b_PadL1A_trigger_n);
-    outtree.Branch( "PadL1A_bcid_n", &data.b_PadL1A_bcid_n);
-    outtree.Branch( "PadL1A_hit_relbcid", &data.b_PadL1A_hit_relbcid);
-    outtree.Branch( "PadL1A_hit_pfeb", &data.b_PadL1A_hit_pfeb);
-    outtree.Branch( "PadL1A_hit_tdschannel", &data.b_PadL1A_hit_tdschannel);
-    outtree.Branch( "PadL1A_hit_vmmchannel", &data.b_PadL1A_hit_vmmchannel);
-    outtree.Branch( "PadL1A_hit_vmm", &data.b_PadL1A_hit_vmm);
-    outtree.Branch( "PadL1A_hit_padchannel", &data.b_PadL1A_hit_padchannel);
-    outtree.Branch( "PadL1A_pfeb_addr", &data.b_PadL1A_pfeb_addr);
-    outtree.Branch( "PadL1A_pfeb_nchan", &data.b_PadL1A_pfeb_nchan);
-    outtree.Branch( "PadL1A_pfeb_disconnected", &data.b_PadL1A_pfeb_disconnected);
-    outtree.Branch( "PadL1A_trigger_bandid", &data.b_PadL1A_trigger_bandid);
-    outtree.Branch( "PadL1A_trigger_phiid", &data.b_PadL1A_trigger_phiid);
-    outtree.Branch( "PadL1A_trigger_relbcid", &data.b_PadL1A_trigger_relbcid);
-    outtree.Branch( "PadL1A_bcid_rel", &data.b_PadL1A_bcid_rel);
-    outtree.Branch( "PadL1A_bcid_status", &data.b_PadL1A_bcid_status);
-    outtree.Branch( "PadL1A_bcid_multzero", &data.b_PadL1A_bcid_multzero);
-
-  return 0;
+	//creating always all branches... you never know which swROD modules are connected...
+	//can change later if needed (but this is a test app so...)
+	outtree.Branch( "MML1A_ROD_sourceID", &data.b_MML1A_ROD_sourceID);
+	outtree.Branch( "MML1A_ROD_subdetID", &data.b_MML1A_ROD_subdetID);
+	outtree.Branch( "MML1A_ROD_moduleID", &data.b_MML1A_ROD_moduleID);
+	outtree.Branch( "MML1A_ROD_L1ID", &data.b_MML1A_ROD_L1ID);
+	outtree.Branch( "MML1A_ROD_n_words", &data.b_MML1A_ROD_n_words);
+	outtree.Branch( "MML1A_head_fragID", &data.b_MML1A_head_fragID);
+	outtree.Branch( "MML1A_head_sectID", &data.b_MML1A_head_sectID);
+	outtree.Branch( "MML1A_head_EC", &data.b_MML1A_head_EC);
+	outtree.Branch( "MML1A_head_flags", &data.b_MML1A_head_flags);
+	outtree.Branch( "MML1A_head_BCID", &data.b_MML1A_head_BCID);
+	outtree.Branch( "MML1A_head_orbit", &data.b_MML1A_head_orbit);
+	outtree.Branch( "MML1A_head_spare", &data.b_MML1A_head_spare);
+	outtree.Branch( "MML1A_L1ID", &data.b_MML1A_L1ID);
+	outtree.Branch( "MML1A_head_wdw_open", &data.b_MML1A_head_wdw_open);
+	outtree.Branch( "MML1A_head_l1a_req", &data.b_MML1A_head_l1a_req);
+	outtree.Branch( "MML1A_head_wdw_close", &data.b_MML1A_head_wdw_close);
+	outtree.Branch( "MML1A_head_overflowCount", &data.b_MML1A_head_overflowCount);
+	outtree.Branch( "MML1A_head_wdw_matching_engines_usage", &data.b_MML1A_head_wdw_matching_engines_usage);
+	outtree.Branch( "MML1A_head_cfg_wdw_open_offset", &data.b_MML1A_head_cfg_wdw_open_offset);
+	outtree.Branch( "MML1A_head_cfg_l1a_req_offset", &data.b_MML1A_head_cfg_l1a_req_offset);
+	outtree.Branch( "MML1A_head_cfg_wdw_close_offset", &data.b_MML1A_head_cfg_wdw_close_offset);
+	outtree.Branch( "MML1A_head_cfg_timeout", &data.b_MML1A_head_cfg_timeout);
+	outtree.Branch( "MML1A_head_link_const", &data.b_MML1A_head_link_const);
+	outtree.Branch( "MML1A_stream_head_nbits", &data.b_MML1A_stream_head_nbits);
+	outtree.Branch( "MML1A_stream_head_nwords", &data.b_MML1A_stream_head_nwords);
+	outtree.Branch( "MML1A_stream_head_fifo_size", &data.b_MML1A_stream_head_fifo_size);
+	outtree.Branch( "MML1A_stream_head_streamID", &data.b_MML1A_stream_head_streamID);
+	outtree.Branch( "MML1A_trailer_CRC", &data.b_MML1A_trailer_CRC);
+	outtree.Branch( "MML1A_art_BCID", &data.b_MML1A_art_BCID);
+	outtree.Branch( "MML1A_art_layers", &data.b_MML1A_art_layers);
+	outtree.Branch( "MML1A_art_channels", &data.b_MML1A_art_channels);
+	outtree.Branch( "MML1A_trig_BCID", &data.b_MML1A_trig_BCID);
+	outtree.Branch( "MML1A_trig_dTheta", &data.b_MML1A_trig_dTheta);
+	outtree.Branch( "MML1A_trig_phiBin", &data.b_MML1A_trig_phiBin);
+	outtree.Branch( "MML1A_trig_rBin", &data.b_MML1A_trig_rBin);
+
+	outtree.Branch("MMMon_ROD_sourceID", &data.b_MMMon_ROD_sourceID);
+	outtree.Branch("MMMon_ROD_subdetID", &data.b_MMMon_ROD_subdetID);
+	outtree.Branch("MMMon_ROD_moduleID", &data.b_MMMon_ROD_moduleID);
+	outtree.Branch("MMMon_ROD_L1ID", &data.b_MMMon_ROD_L1ID);
+	outtree.Branch("MMMon_ROD_n_words", &data.b_MMMon_ROD_n_words);
+	outtree.Branch("MMMon_head_fragID", &data.b_MMMon_head_fragID);
+	outtree.Branch("MMMon_head_sectID", &data.b_MMMon_head_sectID);
+	outtree.Branch("MMMon_head_EC", &data.b_MMMon_head_EC);
+	outtree.Branch("MMMon_head_flags", &data.b_MMMon_head_flags);
+	outtree.Branch("MMMon_head_BCID", &data.b_MMMon_head_BCID);
+	outtree.Branch("MMMon_head_orbit", &data.b_MMMon_head_orbit);
+	outtree.Branch("MMMon_head_spare", &data.b_MMMon_head_spare);
+	outtree.Branch("MMMon_L1ID", &data.b_MMMon_L1ID);
+	outtree.Branch("MMMon_head_coincBCID", &data.b_MMMon_head_coincBCID);
+	outtree.Branch("MMMon_head_regionCount", &data.b_MMMon_head_regionCount);
+	outtree.Branch("MMMon_head_coincRegion", &data.b_MMMon_head_coincRegion);
+	outtree.Branch("MMMon_head_reserved", &data.b_MMMon_head_reserved);
+	outtree.Branch("MMMon_finder_streamID", &data.b_MMMon_finder_streamID);
+	outtree.Branch("MMMon_finder_regionCount", &data.b_MMMon_finder_regionCount);
+	outtree.Branch("MMMon_finder_triggerID", &data.b_MMMon_finder_triggerID);
+	outtree.Branch("MMMon_finder_V1", &data.b_MMMon_finder_V1);
+	outtree.Branch("MMMon_finder_V0", &data.b_MMMon_finder_V0);
+	outtree.Branch("MMMon_finder_U1", &data.b_MMMon_finder_U1);
+	outtree.Branch("MMMon_finder_U0", &data.b_MMMon_finder_U0);
+	outtree.Branch("MMMon_finder_X3", &data.b_MMMon_finder_X3);
+	outtree.Branch("MMMon_finder_X2", &data.b_MMMon_finder_X2);
+	outtree.Branch("MMMon_finder_X1", &data.b_MMMon_finder_X1);
+	outtree.Branch("MMMon_finder_X0", &data.b_MMMon_finder_X0);
+	outtree.Branch("MMMon_fitter_streamID", &data.b_MMMon_fitter_streamID);
+	outtree.Branch("MMMon_fitter_regionCount", &data.b_MMMon_fitter_regionCount);
+	outtree.Branch("MMMon_fitter_triggerID", &data.b_MMMon_fitter_triggerID);
+	outtree.Branch("MMMon_fitter_filler", &data.b_MMMon_fitter_filler);
+	outtree.Branch("MMMon_fitter_mxG", &data.b_MMMon_fitter_mxG);
+	outtree.Branch("MMMon_fitter_muG", &data.b_MMMon_fitter_muG);
+	outtree.Branch("MMMon_fitter_mvG", &data.b_MMMon_fitter_mvG);
+	outtree.Branch("MMMon_fitter_mxL", &data.b_MMMon_fitter_mxL);
+	outtree.Branch("MMMon_fitter_mx_ROI", &data.b_MMMon_fitter_mx_ROI);
+	outtree.Branch("MMMon_fitter_dTheta", &data.b_MMMon_fitter_dTheta);
+	outtree.Branch("MMMon_fitter_zero", &data.b_MMMon_fitter_zero);
+	outtree.Branch("MMMon_fitter_phiSign", &data.b_MMMon_fitter_phiSign);
+	outtree.Branch("MMMon_fitter_phiBin", &data.b_MMMon_fitter_phiBin);
+	outtree.Branch("MMMon_fitter_rBin", &data.b_MMMon_fitter_rBin);
+	outtree.Branch("MMMon_trailer_CRC", &data.b_MMMon_trailer_CRC);
+
+	outtree.Branch( "PadL1A_ROD_sourceID", &data.b_PadL1A_ROD_sourceID);
+	outtree.Branch( "PadL1A_ROD_subdetID", &data.b_PadL1A_ROD_subdetID);
+	outtree.Branch( "PadL1A_ROD_moduleID", &data.b_PadL1A_ROD_moduleID);
+	outtree.Branch( "PadL1A_ROD_L1ID", &data.b_PadL1A_ROD_L1ID);
+	outtree.Branch( "PadL1A_ROD_n_words", &data.b_PadL1A_ROD_n_words);
+	outtree.Branch( "PadL1A_flags", &data.b_PadL1A_flags);
+	outtree.Branch( "PadL1A_ec", &data.b_PadL1A_ec);
+	outtree.Branch( "PadL1A_fragid", &data.b_PadL1A_fragid);
+	outtree.Branch( "PadL1A_secid", &data.b_PadL1A_secid);
+	outtree.Branch( "PadL1A_spare", &data.b_PadL1A_spare);
+	outtree.Branch( "PadL1A_orbit", &data.b_PadL1A_orbit);
+	outtree.Branch( "PadL1A_bcid", &data.b_PadL1A_bcid);
+	outtree.Branch( "PadL1A_l1id", &data.b_PadL1A_l1id);
+	outtree.Branch( "PadL1A_hit_n", &data.b_PadL1A_hit_n);
+	outtree.Branch( "PadL1A_pfeb_n", &data.b_PadL1A_pfeb_n);
+	outtree.Branch( "PadL1A_trigger_n", &data.b_PadL1A_trigger_n);
+	outtree.Branch( "PadL1A_bcid_n", &data.b_PadL1A_bcid_n);
+	outtree.Branch( "PadL1A_hit_relbcid", &data.b_PadL1A_hit_relbcid);
+	outtree.Branch( "PadL1A_hit_pfeb", &data.b_PadL1A_hit_pfeb);
+	outtree.Branch( "PadL1A_hit_tdschannel", &data.b_PadL1A_hit_tdschannel);
+	outtree.Branch( "PadL1A_hit_vmmchannel", &data.b_PadL1A_hit_vmmchannel);
+	outtree.Branch( "PadL1A_hit_vmm", &data.b_PadL1A_hit_vmm);
+	outtree.Branch( "PadL1A_hit_padchannel", &data.b_PadL1A_hit_padchannel);
+	outtree.Branch( "PadL1A_pfeb_addr", &data.b_PadL1A_pfeb_addr);
+	outtree.Branch( "PadL1A_pfeb_nchan", &data.b_PadL1A_pfeb_nchan);
+	outtree.Branch( "PadL1A_pfeb_disconnected", &data.b_PadL1A_pfeb_disconnected);
+	outtree.Branch( "PadL1A_trigger_bandid", &data.b_PadL1A_trigger_bandid);
+	outtree.Branch( "PadL1A_trigger_phiid", &data.b_PadL1A_trigger_phiid);
+	outtree.Branch( "PadL1A_trigger_relbcid", &data.b_PadL1A_trigger_relbcid);
+	outtree.Branch( "PadL1A_bcid_rel", &data.b_PadL1A_bcid_rel);
+	outtree.Branch( "PadL1A_bcid_status", &data.b_PadL1A_bcid_status);
+	outtree.Branch( "PadL1A_bcid_multzero", &data.b_PadL1A_bcid_multzero);
+
+	outtree.Branch( "STGL1A_ROD_sourceID", &data.b_STGL1A_ROD_sourceID);
+	outtree.Branch( "STGL1A_ROD_subdetID", &data.b_STGL1A_ROD_subdetID);
+	outtree.Branch( "STGL1A_ROD_moduleID", &data.b_STGL1A_ROD_moduleID);
+	outtree.Branch( "STGL1A_ROD_L1ID", &data.b_STGL1A_ROD_L1ID);
+	outtree.Branch( "STGL1A_ROD_n_words", &data.b_STGL1A_ROD_n_words);
+	outtree.Branch( "STGL1A_head_fragID", &data.b_STGL1A_head_fragID);
+	outtree.Branch( "STGL1A_head_sectID", &data.b_STGL1A_head_sectID);
+	outtree.Branch( "STGL1A_head_EC", &data.b_STGL1A_head_EC);
+	outtree.Branch( "STGL1A_head_flags", &data.b_STGL1A_head_flags);
+	outtree.Branch( "STGL1A_head_BCID", &data.b_STGL1A_head_BCID);
+	outtree.Branch( "STGL1A_head_orbit", &data.b_STGL1A_head_orbit);
+	outtree.Branch( "STGL1A_head_spare", &data.b_STGL1A_head_spare);
+	outtree.Branch( "STGL1A_L1ID", &data.b_STGL1A_L1ID);
+	outtree.Branch( "STGL1A_head_wdw_open", &data.b_STGL1A_head_wdw_open);
+	outtree.Branch( "STGL1A_head_l1a_req", &data.b_STGL1A_head_l1a_req);
+	outtree.Branch( "STGL1A_head_wdw_close", &data.b_STGL1A_head_wdw_close);
+	outtree.Branch( "STGL1A_head_overflowCount", &data.b_STGL1A_head_overflowCount);
+	outtree.Branch( "STGL1A_head_wdw_matching_engines_usage", &data.b_STGL1A_head_wdw_matching_engines_usage);
+	outtree.Branch( "STGL1A_head_cfg_wdw_open_offset", &data.b_STGL1A_head_cfg_wdw_open_offset);
+	outtree.Branch( "STGL1A_head_cfg_l1a_req_offset", &data.b_STGL1A_head_cfg_l1a_req_offset);
+	outtree.Branch( "STGL1A_head_cfg_wdw_close_offset", &data.b_STGL1A_head_cfg_wdw_close_offset);
+	outtree.Branch( "STGL1A_head_cfg_timeout", &data.b_STGL1A_head_cfg_timeout);
+	outtree.Branch( "STGL1A_head_link_const", &data.b_STGL1A_head_link_const);
+	outtree.Branch( "STGL1A_stream_head_nbits", &data.b_STGL1A_stream_head_nbits);
+	outtree.Branch( "STGL1A_stream_head_nwords", &data.b_STGL1A_stream_head_nwords);
+	outtree.Branch( "STGL1A_stream_head_fifo_size", &data.b_STGL1A_stream_head_fifo_size);
+	outtree.Branch( "STGL1A_stream_head_streamID", &data.b_STGL1A_stream_head_streamID);
+
+	outtree.Branch( "STGL1A_pad_coincidence_wedge", &data.b_STGL1A_pad_coincidence_wedge);
+	outtree.Branch( "STGL1A_pad_phiID_3", &data.b_STGL1A_pad_phiID_3);
+	outtree.Branch( "STGL1A_pad_phiID_2", &data.b_STGL1A_pad_phiID_2);
+	outtree.Branch( "STGL1A_pad_phiID_1", &data.b_STGL1A_pad_phiID_1);
+	outtree.Branch( "STGL1A_pad_phiID_0", &data.b_STGL1A_pad_phiID_0);
+
+	outtree.Branch( "STGL1A_pad_bandID_3", &data.b_STGL1A_pad_bandID_3);
+	outtree.Branch( "STGL1A_pad_bandID_2", &data.b_STGL1A_pad_bandID_2);
+	outtree.Branch( "STGL1A_pad_bandID_1", &data.b_STGL1A_pad_bandID_1);
+	outtree.Branch( "STGL1A_pad_bandID_0", &data.b_STGL1A_pad_bandID_0);
+
+	outtree.Branch( "STGL1A_pad_BCID", &data.b_STGL1A_pad_BCID);
+	outtree.Branch( "STGL1A_pad_idleFlag", &data.b_STGL1A_pad_idleFlag);
+
+	outtree.Branch( "STGL1A_merge_LUT_choiceSelection", &data.b_STGL1A_merge_LUT_choiceSelection);
+	outtree.Branch( "STGL1A_merge_nsw_segmentSelector", &data.b_STGL1A_merge_nsw_segmentSelector);
+	outtree.Branch( "STGL1A_merge_valid_segmentSelector", &data.b_STGL1A_merge_valid_segmentSelector);
+
+	outtree.Branch( "STGL1A_merge_monitor_segment7", &data.b_STGL1A_merge_monitor_segment7);
+	outtree.Branch( "STGL1A_merge_spare_segment7", &data.b_STGL1A_merge_spare_segment7);
+	outtree.Branch( "STGL1A_merge_lowRes_segment7", &data.b_STGL1A_merge_lowRes_segment7);
+	outtree.Branch( "STGL1A_merge_phiRes_segment7", &data.b_STGL1A_merge_phiRes_segment7);
+	outtree.Branch( "STGL1A_merge_dTheta_segment7", &data.b_STGL1A_merge_dTheta_segment7);
+	outtree.Branch( "STGL1A_merge_phiID_segment7", &data.b_STGL1A_merge_phiID_segment7);
+	outtree.Branch( "STGL1A_merge_RIndex_segment7", &data.b_STGL1A_merge_RIndex_segment7);
+
+	outtree.Branch( "STGL1A_merge_monitor_segment6", &data.b_STGL1A_merge_monitor_segment6);
+	outtree.Branch( "STGL1A_merge_spare_segment6", &data.b_STGL1A_merge_spare_segment6);
+	outtree.Branch( "STGL1A_merge_lowRes_segment6", &data.b_STGL1A_merge_lowRes_segment6);
+	outtree.Branch( "STGL1A_merge_phiRes_segment6", &data.b_STGL1A_merge_phiRes_segment6);
+	outtree.Branch( "STGL1A_merge_dTheta_segment6", &data.b_STGL1A_merge_dTheta_segment6);
+	outtree.Branch( "STGL1A_merge_phiID_segment6", &data.b_STGL1A_merge_phiID_segment6);
+	outtree.Branch( "STGL1A_merge_RIndex_segment6", &data.b_STGL1A_merge_RIndex_segment6);
+
+	outtree.Branch( "STGL1A_merge_monitor_segment5", &data.b_STGL1A_merge_monitor_segment5);
+	outtree.Branch( "STGL1A_merge_spare_segment5", &data.b_STGL1A_merge_spare_segment5);
+	outtree.Branch( "STGL1A_merge_lowRes_segment5", &data.b_STGL1A_merge_lowRes_segment5);
+	outtree.Branch( "STGL1A_merge_phiRes_segment5", &data.b_STGL1A_merge_phiRes_segment5);
+	outtree.Branch( "STGL1A_merge_dTheta_segment5", &data.b_STGL1A_merge_dTheta_segment5);
+	outtree.Branch( "STGL1A_merge_phiID_segment5", &data.b_STGL1A_merge_phiID_segment5);
+	outtree.Branch( "STGL1A_merge_RIndex_segment5", &data.b_STGL1A_merge_RIndex_segment5);
+
+	outtree.Branch( "STGL1A_merge_monitor_segment4", &data.b_STGL1A_merge_monitor_segment4);
+	outtree.Branch( "STGL1A_merge_spare_segment4", &data.b_STGL1A_merge_spare_segment4);
+	outtree.Branch( "STGL1A_merge_lowRes_segment4", &data.b_STGL1A_merge_lowRes_segment4);
+	outtree.Branch( "STGL1A_merge_phiRes_segment4", &data.b_STGL1A_merge_phiRes_segment4);
+	outtree.Branch( "STGL1A_merge_dTheta_segment4", &data.b_STGL1A_merge_dTheta_segment4);
+	outtree.Branch( "STGL1A_merge_phiID_segment4", &data.b_STGL1A_merge_phiID_segment4);
+	outtree.Branch( "STGL1A_merge_RIndex_segment4", &data.b_STGL1A_merge_RIndex_segment4);
+
+	outtree.Branch( "STGL1A_merge_monitor_segment3", &data.b_STGL1A_merge_monitor_segment3);
+	outtree.Branch( "STGL1A_merge_spare_segment3", &data.b_STGL1A_merge_spare_segment3);
+	outtree.Branch( "STGL1A_merge_lowRes_segment3", &data.b_STGL1A_merge_lowRes_segment3);
+	outtree.Branch( "STGL1A_merge_phiRes_segment3", &data.b_STGL1A_merge_phiRes_segment3);
+	outtree.Branch( "STGL1A_merge_dTheta_segment3", &data.b_STGL1A_merge_dTheta_segment3);
+	outtree.Branch( "STGL1A_merge_phiID_segment3", &data.b_STGL1A_merge_phiID_segment3);
+	outtree.Branch( "STGL1A_merge_RIndex_segment3", &data.b_STGL1A_merge_RIndex_segment3);
+
+	outtree.Branch( "STGL1A_merge_monitor_segment2", &data.b_STGL1A_merge_monitor_segment2);
+	outtree.Branch( "STGL1A_merge_spare_segment2", &data.b_STGL1A_merge_spare_segment2);
+	outtree.Branch( "STGL1A_merge_lowRes_segment2", &data.b_STGL1A_merge_lowRes_segment2);
+	outtree.Branch( "STGL1A_merge_phiRes_segment2", &data.b_STGL1A_merge_phiRes_segment2);
+	outtree.Branch( "STGL1A_merge_dTheta_segment2", &data.b_STGL1A_merge_dTheta_segment2);
+	outtree.Branch( "STGL1A_merge_phiID_segment2", &data.b_STGL1A_merge_phiID_segment2);
+	outtree.Branch( "STGL1A_merge_RIndex_segment2", &data.b_STGL1A_merge_RIndex_segment2);
+
+	outtree.Branch( "STGL1A_merge_monitor_segment1", &data.b_STGL1A_merge_monitor_segment1);
+	outtree.Branch( "STGL1A_merge_spare_segment1", &data.b_STGL1A_merge_spare_segment1);
+	outtree.Branch( "STGL1A_merge_lowRes_segment1", &data.b_STGL1A_merge_lowRes_segment1);
+	outtree.Branch( "STGL1A_merge_phiRes_segment1", &data.b_STGL1A_merge_phiRes_segment1);
+	outtree.Branch( "STGL1A_merge_dTheta_segment1", &data.b_STGL1A_merge_dTheta_segment1);
+	outtree.Branch( "STGL1A_merge_phiID_segment1", &data.b_STGL1A_merge_phiID_segment1);
+	outtree.Branch( "STGL1A_merge_RIndex_segment1", &data.b_STGL1A_merge_RIndex_segment1);
+
+	outtree.Branch( "STGL1A_merge_monitor_segment0", &data.b_STGL1A_merge_monitor_segment0);
+	outtree.Branch( "STGL1A_merge_spare_segment0", &data.b_STGL1A_merge_spare_segment0);
+	outtree.Branch( "STGL1A_merge_lowRes_segment0", &data.b_STGL1A_merge_lowRes_segment0);
+	outtree.Branch( "STGL1A_merge_phiRes_segment0", &data.b_STGL1A_merge_phiRes_segment0);
+	outtree.Branch( "STGL1A_merge_dTheta_segment0", &data.b_STGL1A_merge_dTheta_segment0);
+	outtree.Branch( "STGL1A_merge_phiID_segment0", &data.b_STGL1A_merge_phiID_segment0);
+	outtree.Branch( "STGL1A_merge_RIndex_segment0", &data.b_STGL1A_merge_RIndex_segment0);
+
+	outtree.Branch( "STGL1A_merge_BCID", &data.b_STGL1A_merge_BCID);
+	outtree.Branch( "STGL1A_merge_sectorID", &data.b_STGL1A_merge_sectorID);
+
+	return 0;
 }
 
 int test_nsw_trigger_common_decoder_end (Statistics &statistics)
 {
-  std::cout << "Total event processed             = " << statistics.nevents << std::endl;
-  std::cout << "Total event not decoded           = " << statistics.nevents_not_decoded << std::endl;
-  std::cout << "Total event with flx elink errors = " << statistics.nevents_sus_felix_stat << std::endl;
-  std::cout << "Total decoding time (ms)          = " << statistics.total_decoding_time << std::endl;
-  return 0;
+	std::cout << "Total event processed             = " << statistics.nevents << std::endl;
+	std::cout << "Total event not decoded           = " << statistics.nevents_not_decoded << std::endl;
+	std::cout << "Total event with flx elink errors = " << statistics.nevents_sus_felix_stat << std::endl;
+	std::cout << "Total fill time                   = " << statistics.total_fill_time << std::endl;
+	std::cout << "Total write time                  = " << statistics.total_write_time << std::endl;
+	std::cout << "Total decoding time (ms)          = " << statistics.total_decoding_time << std::endl;
+	return 0;
 }
 
 int test_nsw_trigger_common_decoder_event (const eformat::read::FullEventFragment &f, outBranches &data, Params &params, Statistics &statistics)
 {
-  std::vector <eformat::read::ROBFragment> robs;
-
-  if (params.printout_level > 2)
-    std::cout << "Entering fragment analysis" << std::endl;
-
-  f.robs (robs);
-
-  for (auto r = robs.begin (); r != robs.end (); ++r)
-  {
-    bool is_nsw = false, is_mmg = false, is_stg = false;
-    bool is_tp = false, is_pt = false, is_l1a = false, is_mon = false; //is_l1a and is_mon are actuall
-
-    // check fragment for errors
-    try{ r->check (); }
-    catch(...) { std::cout << "Something wrong with a fragment ROB" << std::endl; continue; }
-
-    uint32_t sid = r->rob_source_id ();
-    eformat::helper::SourceIdentifier source_id (sid);
-    eformat::SubDetector s = source_id.subdetector_id ();
-    uint16_t m = source_id.module_id ();
-
-    if (s == eformat::MUON_MMEGA_ENDCAP_A_SIDE || s == eformat::MUON_MMEGA_ENDCAP_C_SIDE)
-      is_nsw = is_mmg = true;
-    else if (s == eformat::MUON_STGC_ENDCAP_A_SIDE  || s == eformat::MUON_STGC_ENDCAP_C_SIDE)
-      is_nsw = is_stg = true;
-
-    //int sector = m & 0xf;
-    if      ((m & 0xf0) == 0x10) {is_tp = true; is_l1a = true;}
-    else if ((m & 0xf0) == 0x20) {is_pt = true; is_l1a = true;}
-    else if ((m & 0xf0) == 0x50) {is_tp = true; is_mon = true;}
-
-
-    if (params.printout_level > 1 && is_nsw){
-      std::cout << "ROB source ID                = 0x" << std::hex << sid << std::dec << std::endl;
-      std::cout << "ROB subdet ID                = 0x" << std::hex << s   << std::dec << std::endl;
-      std::cout << "ROB module ID                = 0x" << std::hex << m   << std::dec << std::endl;
-      //std::cout << "is_nsw                = " << (is_nsw?"Yes":"No") << std::endl;
-      std::cout << "is_mmg                = " << (is_mmg?"Yes":"No") << std::endl;
-      std::cout << "is_stg                = " << (is_stg?"Yes":"No") << std::endl;
-      std::cout << "is_pt                 = " << (is_pt?"Yes":"No") << std::endl;
-      std::cout << "is_tp                 = " << (is_tp?"Yes":"No") << std::endl;
-      std::cout << "is_l1a                = " << (is_l1a?"Yes":"No") << std::endl;
-      std::cout << "is_mon                = " << (is_mon?"Yes":"No") << std::endl;
-    }
-
-
-    if (is_nsw && (is_pt || is_tp)){
-      if (params.printout_level > 0 || params.print_only){
-        std::cout << "NSW Trigger fragment found: length " << r->rod_ndata () << std::endl;
-      }
-
-      const uint32_t *bs = r->rod_data ();
-
-      // Print out raw fragment
-      if (params.print_only){
-	std::cout << "ROD Fragment size in words:" << std::endl;
-	std::cout << "ROD Total: " << r->rod_fragment_size_word () << std::endl;
-	std::cout << "ROD Header: " << r->rod_header_size_word () << std::endl;
-	std::cout << "ROD Trailer: " << r->rod_trailer_size_word () << std::endl;
-	std::cout << "ROD L1 ID: " << std::hex << r->rod_lvl1_id () << std::dec << std::endl;
-	std::cout << "ROD Data words: " << r->rod_ndata () << std::endl;
-
-        std::cout << "Printing raw data (ignoring any structure)" << std::endl;
-        std::cout << std::hex;
-        for (unsigned int i = 0; i < r->rod_ndata (); ++i){
-          std::cout << " " << std::setfill('0') << std::setw(8) << bs[i];
-          if (i % 4 == 3) std::cout << std::endl;
-        }
-        std::cout << std::dec;
-        std::cout << std::endl;
-      }
-
-      if (!params.print_only){
-        std::string robType = std::string(is_pt?"Pad":(is_mmg?"MM":"STG")) + std::string(is_l1a?"L1A":(is_mon?"Mon":""));
-        std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now ();
-        Muon::nsw::NSWTriggerCommonDecoder nsw_trigger_decoder (*r, robType);
-        std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now ();
-        unsigned int time_elapsed = std::chrono::duration_cast <std::chrono::microseconds> (end - begin).count ();
-  	    float time_elapsed_ms = static_cast <float> (time_elapsed) / 1000;
-        if (params.printout_level > 1){
-          std::cout << "Time for decoding this event (ms): " << time_elapsed_ms << std::endl;
-          std::cout << std::endl;
-        }
-        statistics.total_decoding_time += time_elapsed_ms;
-
-        if (robType=="PadL1A"){
-          for (size_t i = 0; i < nsw_trigger_decoder.get_elinks().size(); ++i) {
-            std::shared_ptr<Muon::nsw::NSWPadTriggerL1a> link = std::dynamic_pointer_cast<Muon::nsw::NSWPadTriggerL1a>(nsw_trigger_decoder.get_elinks()[i]);
-            data.b_PadL1A_ROD_sourceID.push_back( sid );
-            data.b_PadL1A_ROD_subdetID.push_back( s );
-            data.b_PadL1A_ROD_moduleID.push_back( m );
-            data.b_PadL1A_ROD_L1ID.push_back( r->rod_lvl1_id () );
-            data.b_PadL1A_ROD_n_words.push_back( r->rod_ndata () );
-            data.b_PadL1A_flags.push_back( link->getFlags() );
-            data.b_PadL1A_ec.push_back( link->getEc() );
-            data.b_PadL1A_fragid.push_back( link->getFragid() );
-            data.b_PadL1A_secid.push_back( link->getSecid() );
-            data.b_PadL1A_spare.push_back( link->getSpare() );
-            data.b_PadL1A_orbit.push_back( link->getOrbit() );
-            data.b_PadL1A_bcid.push_back( link->getBcid() );
-            data.b_PadL1A_l1id.push_back( link->getL1id() );
-            data.b_PadL1A_hit_n.push_back( link->getNumberOfHits() );
-            data.b_PadL1A_pfeb_n.push_back( link->getNumberOfPfebs() );
-            data.b_PadL1A_trigger_n.push_back( link->getNumberOfTriggers() );
-            data.b_PadL1A_bcid_n.push_back( link->getNumberOfBcids() );
-            data.b_PadL1A_hit_relbcid.push_back( link->getHitRelBcids() );
-            data.b_PadL1A_hit_pfeb.push_back( link->getHitPfebs() );
-            data.b_PadL1A_hit_tdschannel.push_back( link->getHitTdsChannels() );
-            data.b_PadL1A_hit_vmmchannel.push_back( link->getHitVmmChannels() );
-            data.b_PadL1A_hit_vmm.push_back( link->getHitVmms() );
-            data.b_PadL1A_hit_padchannel.push_back( link->getHitPadChannels() );
-            data.b_PadL1A_pfeb_addr.push_back( link->getPfebAddresses() );
-            data.b_PadL1A_pfeb_nchan.push_back( link->getPfebNChannels() );
-            data.b_PadL1A_pfeb_disconnected.push_back( link->getPfebDisconnecteds() );
-            data.b_PadL1A_trigger_bandid.push_back( link->getTriggerBandIds() );
-            data.b_PadL1A_trigger_phiid.push_back( link->getTriggerPhiIds() );
-            data.b_PadL1A_trigger_relbcid.push_back( link->getTriggerRelBcids() );
-            data.b_PadL1A_bcid_rel.push_back( link->getBcidRels() );
-            data.b_PadL1A_bcid_status.push_back( link->getBcidStatuses() );
-            data.b_PadL1A_bcid_multzero.push_back( link->getBcidMultZeros() );
-          }
-        }
-        if (robType=="MML1A") {
-          for (size_t i = 0; i < nsw_trigger_decoder.get_elinks().size(); ++i) {
-      	    std::shared_ptr<Muon::nsw::NSWTriggerMML1AElink> link = std::dynamic_pointer_cast<Muon::nsw::NSWTriggerMML1AElink>(nsw_trigger_decoder.get_elinks()[i]);
-            data.b_MML1A_ROD_sourceID.push_back( sid );
-            data.b_MML1A_ROD_subdetID.push_back( s );
-            data.b_MML1A_ROD_moduleID.push_back( m );
-            data.b_MML1A_ROD_L1ID.push_back( r->rod_lvl1_id () );
-            data.b_MML1A_ROD_n_words.push_back( r->rod_ndata () );
-            data.b_MML1A_head_fragID.push_back( link->head_fragID() );
-            data.b_MML1A_head_sectID.push_back( link->head_sectID() );
-            data.b_MML1A_head_EC.push_back( link->head_EC() );
-            data.b_MML1A_head_flags.push_back( link->head_flags() );
-            data.b_MML1A_head_BCID.push_back( link->head_BCID() );
-            data.b_MML1A_head_orbit.push_back( link->head_orbit() );
-            data.b_MML1A_head_spare.push_back( link->head_spare() );
-            data.b_MML1A_L1ID.push_back( link->L1ID() );
-            data.b_MML1A_head_wdw_open.push_back( link->head_wdw_open() );
-            data.b_MML1A_head_l1a_req.push_back( link->head_l1a_req() );
-            data.b_MML1A_head_wdw_close.push_back( link->head_wdw_close() );
-            data.b_MML1A_head_overflowCount.push_back( link->head_overflowCount() );
-            data.b_MML1A_head_wdw_matching_engines_usage.push_back( link->head_wdw_matching_engines_usage() );
-            data.b_MML1A_head_cfg_wdw_open_offset.push_back( link->head_cfg_wdw_open_offset() );
-            data.b_MML1A_head_cfg_l1a_req_offset.push_back( link->head_cfg_l1a_req_offset() );
-            data.b_MML1A_head_cfg_wdw_close_offset.push_back( link->head_cfg_wdw_close_offset() );
-            data.b_MML1A_head_cfg_timeout.push_back( link->head_cfg_timeout() );
-            data.b_MML1A_head_link_const.push_back( link->head_link_const() );
-            data.b_MML1A_stream_head_nbits.push_back( link->stream_head_nbits() );
-            data.b_MML1A_stream_head_nwords.push_back( link->stream_head_nwords() );
-            data.b_MML1A_stream_head_fifo_size.push_back( link->stream_head_fifo_size() );
-            data.b_MML1A_stream_head_streamID.push_back( link->stream_head_streamID() );
-
-      	    const std::vector<std::shared_ptr<Muon::nsw::MMARTPacket>>& arts = link->art_packets();
-      	    std::vector<uint32_t> tmp_art_BCIDs;
-            std::vector<uint32_t> tmp_art_layers;
-            std::vector<uint32_t> tmp_art_channels;
-      	    for (auto art : arts){
-              for (uint i = 0; i < art->channels().size(); ++i){
-                //so that there's a timestamp per channel
-                tmp_art_layers.push_back( art->channels()[i].first );
-      		      tmp_art_channels.push_back( art->channels()[i].second );
-      		      tmp_art_BCIDs.push_back( art->art_BCID() );
-              }
-            }
-            data.b_MML1A_art_BCID.push_back( tmp_art_BCIDs );
-            data.b_MML1A_art_layers.push_back( tmp_art_layers );
-            data.b_MML1A_art_channels.push_back( tmp_art_channels );
-
-            const std::vector<std::shared_ptr<Muon::nsw::MMTrigPacket>>& trigs = link->trig_packets();
-            std::vector<uint32_t> tmp_trig_BCID;
-            std::vector<uint32_t> tmp_trig_dTheta;
-            std::vector<uint32_t> tmp_trig_phiBin;
-            std::vector<uint32_t> tmp_trig_rBin;
-      	    for (auto trig : trigs){
-              tmp_trig_BCID.push_back( trig->trig_BCID() );
-              tmp_trig_dTheta.push_back( trig->trig_dTheta() );
-              tmp_trig_phiBin.push_back( trig->trig_phiBin() );
-              tmp_trig_rBin.push_back( trig->trig_rBin() );
-            }
-            data.b_MML1A_trig_BCID.push_back( tmp_trig_BCID );
-            data.b_MML1A_trig_dTheta.push_back( tmp_trig_dTheta );
-            data.b_MML1A_trig_phiBin.push_back( tmp_trig_phiBin );
-            data.b_MML1A_trig_rBin.push_back( tmp_trig_rBin );
-
-            data.b_MML1A_trailer_CRC.push_back( link->trailer_CRC() );
-
-          }
-        }
-        if (robType=="MMMon") {
-          for (size_t i = 0; i < nsw_trigger_decoder.get_elinks().size(); ++i) {
-            std::shared_ptr<Muon::nsw::NSWTriggerMMMonElink> link = std::dynamic_pointer_cast<Muon::nsw::NSWTriggerMMMonElink>(nsw_trigger_decoder.get_elinks()[i]);
-            data.b_MMMon_ROD_sourceID.push_back( sid );
-            data.b_MMMon_ROD_subdetID.push_back( s );
-            data.b_MMMon_ROD_moduleID.push_back( m );
-            data.b_MMMon_ROD_L1ID.push_back( r->rod_lvl1_id () );
-            data.b_MMMon_ROD_n_words.push_back( r->rod_ndata () );
-            data.b_MMMon_head_fragID.push_back( link->head_fragID() );
-            data.b_MMMon_head_sectID.push_back( link->head_sectID() );
-            data.b_MMMon_head_EC.push_back( link->head_EC() );
-            data.b_MMMon_head_flags.push_back( link->head_flags() );
-            data.b_MMMon_head_BCID.push_back( link->head_BCID() );
-            data.b_MMMon_head_orbit.push_back( link->head_orbit() );
-            data.b_MMMon_head_spare.push_back( link->head_spare() );
-            data.b_MMMon_L1ID.push_back( link->L1ID() );
-            data.b_MMMon_head_coincBCID.push_back( link->head_coincBCID() );
-            data.b_MMMon_head_regionCount.push_back( link->head_regionCount() );
-            data.b_MMMon_head_coincRegion.push_back( link->head_coincRegion() );
-            data.b_MMMon_head_reserved.push_back( link->head_reserved() );
-            data.b_MMMon_finder_streamID.push_back( link->finder_streamID() );
-            data.b_MMMon_finder_regionCount.push_back( link->finder_regionCount() );
-            data.b_MMMon_finder_triggerID.push_back( link->finder_triggerID() );
-            data.b_MMMon_finder_V1.push_back( link->finder_V1() );
-            data.b_MMMon_finder_V0.push_back( link->finder_V0() );
-            data.b_MMMon_finder_U1.push_back( link->finder_U1() );
-            data.b_MMMon_finder_U0.push_back( link->finder_U0() );
-            data.b_MMMon_finder_X3.push_back( link->finder_X3() );
-            data.b_MMMon_finder_X2.push_back( link->finder_X2() );
-            data.b_MMMon_finder_X1.push_back( link->finder_X1() );
-            data.b_MMMon_finder_X0.push_back( link->finder_X0() );
-            data.b_MMMon_fitter_streamID.push_back( link->fitter_streamID() );
-            data.b_MMMon_fitter_regionCount.push_back( link->fitter_regionCount() );
-            data.b_MMMon_fitter_triggerID.push_back( link->fitter_triggerID() );
-            data.b_MMMon_fitter_filler.push_back( link->fitter_filler() );
-            data.b_MMMon_fitter_mxG.push_back( link->fitter_mxG() );
-            data.b_MMMon_fitter_muG.push_back( link->fitter_muG() );
-            data.b_MMMon_fitter_mvG.push_back( link->fitter_mvG() );
-            data.b_MMMon_fitter_mxL.push_back( link->fitter_mxL() );
-            data.b_MMMon_fitter_mx_ROI.push_back( link->fitter_mx_ROI() );
-            data.b_MMMon_fitter_dTheta.push_back( link->fitter_dTheta() );
-            data.b_MMMon_fitter_zero.push_back( link->fitter_zero() );
-            data.b_MMMon_fitter_phiSign.push_back( link->fitter_phiSign() );
-            data.b_MMMon_fitter_phiBin.push_back( link->fitter_phiBin() );
-            data.b_MMMon_fitter_rBin.push_back( link->fitter_rBin() );
-            data.b_MMMon_trailer_CRC.push_back( link->trailer_CRC() );
-          }
-        }
-      }
-    } //end if is_nsw
-  } //end for loop on robs
- 
-  return 0;
+	std::vector <eformat::read::ROBFragment> robs;
+
+	if (params.printout_level > 2)
+		std::cout << "Entering fragment analysis" << std::endl;
+
+	f.robs (robs);
+
+	for (auto r = robs.begin (); r != robs.end (); ++r)
+	{
+		bool is_nsw = false, is_mmg = false, is_stg = false;
+		bool is_tp = false, is_pt = false, is_l1a = false, is_mon = false; //is_l1a and is_mon are actuall
+
+		// check fragment for errors
+		try{ r->check (); }
+		catch(...) { std::cout << "Something wrong with a fragment ROB" << std::endl; continue; }
+
+		uint32_t sid = r->rob_source_id ();
+		eformat::helper::SourceIdentifier source_id (sid);
+		eformat::SubDetector s = source_id.subdetector_id ();
+		uint16_t m = source_id.module_id ();
+
+		if (s == eformat::MUON_MMEGA_ENDCAP_A_SIDE || s == eformat::MUON_MMEGA_ENDCAP_C_SIDE)
+			is_nsw = is_mmg = true;
+		else if (s == eformat::MUON_STGC_ENDCAP_A_SIDE  || s == eformat::MUON_STGC_ENDCAP_C_SIDE)
+			is_nsw = is_stg = true;
+
+		//int sector = m & 0xf;
+		if      ((m & 0xf0) == 0x10) {is_tp = true; is_l1a = true;}
+		else if ((m & 0xf0) == 0x20) {is_pt = true; is_l1a = true;}
+		else if ((m & 0xf0) == 0x50) {is_tp = true; is_mon = true;}
+
+
+		if (params.printout_level > 1 && is_nsw){
+			std::cout << "ROB source ID                = 0x" << std::hex << sid << std::dec << std::endl;
+			std::cout << "ROB subdet ID                = 0x" << std::hex << s   << std::dec << std::endl;
+			std::cout << "ROB module ID                = 0x" << std::hex << m   << std::dec << std::endl;
+			//std::cout << "is_nsw                = " << (is_nsw?"Yes":"No") << std::endl;
+			std::cout << "is_mmg                = " << (is_mmg?"Yes":"No") << std::endl;
+			std::cout << "is_stg                = " << (is_stg?"Yes":"No") << std::endl;
+			std::cout << "is_pt                 = " << (is_pt?"Yes":"No") << std::endl;
+			std::cout << "is_tp                 = " << (is_tp?"Yes":"No") << std::endl;
+			std::cout << "is_l1a                = " << (is_l1a?"Yes":"No") << std::endl;
+			std::cout << "is_mon                = " << (is_mon?"Yes":"No") << std::endl;
+		}
+
+
+		if (is_nsw && (is_pt || is_tp)){
+			if (params.printout_level > 0 || params.print_only){
+				std::cout << "NSW Trigger fragment found: length " << r->rod_ndata () << std::endl;
+			}
+
+			const uint32_t *bs = r->rod_data ();
+
+			// Print out raw fragment
+			if (params.print_only){
+				std::cout << "ROD Fragment size in words:" << std::endl;
+				std::cout << "ROD Total: " << r->rod_fragment_size_word () << std::endl;
+				std::cout << "ROD Header: " << r->rod_header_size_word () << std::endl;
+				std::cout << "ROD Trailer: " << r->rod_trailer_size_word () << std::endl;
+				std::cout << "ROD L1 ID: " << std::hex << r->rod_lvl1_id () << std::dec << std::endl;
+				std::cout << "ROD Data words: " << r->rod_ndata () << std::endl;
+
+				std::cout << "Printing raw data (ignoring any structure)" << std::endl;
+				std::cout << std::hex;
+				for (unsigned int i = 0; i < r->rod_ndata (); ++i){
+					std::cout << " " << std::setfill('0') << std::setw(8) << bs[i];
+					if (i % 4 == 3) std::cout << std::endl;
+				}
+				std::cout << std::dec;
+				std::cout << std::endl;
+			}
+
+			if (!params.print_only){
+				std::string robType = std::string(is_pt?"Pad":(is_mmg?"MM":"STG")) + std::string(is_l1a?"L1A":(is_mon?"Mon":""));
+				std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now ();
+				Muon::nsw::NSWTriggerCommonDecoder nsw_trigger_decoder (*r, robType);
+				std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now ();
+				unsigned int time_elapsed = std::chrono::duration_cast <std::chrono::microseconds> (end - begin).count ();
+				float time_elapsed_ms = static_cast <float> (time_elapsed) / 1000;
+				if (params.printout_level > 1){
+					std::cout << "Time for decoding this event (ms): " << time_elapsed_ms << std::endl;
+					std::cout << std::endl;
+				}
+				statistics.total_decoding_time += time_elapsed_ms;
+
+				if (robType=="PadL1A"){
+					for (size_t i = 0; i < nsw_trigger_decoder.get_elinks().size(); ++i) {
+						std::shared_ptr<Muon::nsw::NSWPadTriggerL1a> link = std::dynamic_pointer_cast<Muon::nsw::NSWPadTriggerL1a>(nsw_trigger_decoder.get_elinks()[i]);
+						data.b_PadL1A_ROD_sourceID.push_back( sid );
+						data.b_PadL1A_ROD_subdetID.push_back( s );
+						data.b_PadL1A_ROD_moduleID.push_back( m );
+						data.b_PadL1A_ROD_L1ID.push_back( r->rod_lvl1_id () );
+						data.b_PadL1A_ROD_n_words.push_back( r->rod_ndata () );
+						data.b_PadL1A_flags.push_back( link->getFlags() );
+						data.b_PadL1A_ec.push_back( link->getEc() );
+						data.b_PadL1A_fragid.push_back( link->getFragid() );
+						data.b_PadL1A_secid.push_back( link->getSecid() );
+						data.b_PadL1A_spare.push_back( link->getSpare() );
+						data.b_PadL1A_orbit.push_back( link->getOrbit() );
+						data.b_PadL1A_bcid.push_back( link->getBcid() );
+						data.b_PadL1A_l1id.push_back( link->getL1id() );
+						data.b_PadL1A_hit_n.push_back( link->getNumberOfHits() );
+						data.b_PadL1A_pfeb_n.push_back( link->getNumberOfPfebs() );
+						data.b_PadL1A_trigger_n.push_back( link->getNumberOfTriggers() );
+						data.b_PadL1A_bcid_n.push_back( link->getNumberOfBcids() );
+						data.b_PadL1A_hit_relbcid.push_back( link->getHitRelBcids() );
+						data.b_PadL1A_hit_pfeb.push_back( link->getHitPfebs() );
+						data.b_PadL1A_hit_tdschannel.push_back( link->getHitTdsChannels() );
+						data.b_PadL1A_hit_vmmchannel.push_back( link->getHitVmmChannels() );
+						data.b_PadL1A_hit_vmm.push_back( link->getHitVmms() );
+						data.b_PadL1A_hit_padchannel.push_back( link->getHitPadChannels() );
+						data.b_PadL1A_pfeb_addr.push_back( link->getPfebAddresses() );
+						data.b_PadL1A_pfeb_nchan.push_back( link->getPfebNChannels() );
+						data.b_PadL1A_pfeb_disconnected.push_back( link->getPfebDisconnecteds() );
+						data.b_PadL1A_trigger_bandid.push_back( link->getTriggerBandIds() );
+						data.b_PadL1A_trigger_phiid.push_back( link->getTriggerPhiIds() );
+						data.b_PadL1A_trigger_relbcid.push_back( link->getTriggerRelBcids() );
+						data.b_PadL1A_bcid_rel.push_back( link->getBcidRels() );
+						data.b_PadL1A_bcid_status.push_back( link->getBcidStatuses() );
+						data.b_PadL1A_bcid_multzero.push_back( link->getBcidMultZeros() );
+					}
+				}
+				if (robType=="MML1A") {
+					for (size_t i = 0; i < nsw_trigger_decoder.get_elinks().size(); ++i) {
+						std::shared_ptr<Muon::nsw::NSWTriggerMML1AElink> link = std::dynamic_pointer_cast<Muon::nsw::NSWTriggerMML1AElink>(nsw_trigger_decoder.get_elinks()[i]);
+						data.b_MML1A_ROD_sourceID.push_back( sid );
+						data.b_MML1A_ROD_subdetID.push_back( s );
+						data.b_MML1A_ROD_moduleID.push_back( m );
+						data.b_MML1A_ROD_L1ID.push_back( r->rod_lvl1_id () );
+						data.b_MML1A_ROD_n_words.push_back( r->rod_ndata () );
+						data.b_MML1A_head_fragID.push_back( link->head_fragID() );
+						data.b_MML1A_head_sectID.push_back( link->head_sectID() );
+						data.b_MML1A_head_EC.push_back( link->head_EC() );
+						data.b_MML1A_head_flags.push_back( link->head_flags() );
+						data.b_MML1A_head_BCID.push_back( link->head_BCID() );
+						data.b_MML1A_head_orbit.push_back( link->head_orbit() );
+						data.b_MML1A_head_spare.push_back( link->head_spare() );
+						data.b_MML1A_L1ID.push_back( link->L1ID() );
+						data.b_MML1A_head_wdw_open.push_back( link->head_wdw_open() );
+						data.b_MML1A_head_l1a_req.push_back( link->head_l1a_req() );
+						data.b_MML1A_head_wdw_close.push_back( link->head_wdw_close() );
+						data.b_MML1A_head_overflowCount.push_back( link->head_overflowCount() );
+						data.b_MML1A_head_wdw_matching_engines_usage.push_back( link->head_wdw_matching_engines_usage() );
+						data.b_MML1A_head_cfg_wdw_open_offset.push_back( link->head_cfg_wdw_open_offset() );
+						data.b_MML1A_head_cfg_l1a_req_offset.push_back( link->head_cfg_l1a_req_offset() );
+						data.b_MML1A_head_cfg_wdw_close_offset.push_back( link->head_cfg_wdw_close_offset() );
+						data.b_MML1A_head_cfg_timeout.push_back( link->head_cfg_timeout() );
+						data.b_MML1A_head_link_const.push_back( link->head_link_const() );
+						data.b_MML1A_stream_head_nbits.push_back( link->stream_head_nbits() );
+						data.b_MML1A_stream_head_nwords.push_back( link->stream_head_nwords() );
+						data.b_MML1A_stream_head_fifo_size.push_back( link->stream_head_fifo_size() );
+						data.b_MML1A_stream_head_streamID.push_back( link->stream_head_streamID() );
+
+						const std::vector<std::shared_ptr<Muon::nsw::MMARTPacket>>& arts = link->art_packets();
+						std::vector<uint32_t> tmp_art_BCIDs;
+						std::vector<uint32_t> tmp_art_layers;
+						std::vector<uint32_t> tmp_art_channels;
+						for (auto art : arts){
+							for (uint i = 0; i < art->channels().size(); ++i){
+								//so that there's a timestamp per channel
+								tmp_art_layers.push_back( art->channels()[i].first );
+								tmp_art_channels.push_back( art->channels()[i].second );
+								tmp_art_BCIDs.push_back( art->art_BCID() );
+							}
+						}
+						data.b_MML1A_art_BCID.push_back( tmp_art_BCIDs );
+						data.b_MML1A_art_layers.push_back( tmp_art_layers );
+						data.b_MML1A_art_channels.push_back( tmp_art_channels );
+
+						const std::vector<std::shared_ptr<Muon::nsw::MMTrigPacket>>& trigs = link->trig_packets();
+						std::vector<uint32_t> tmp_trig_BCID;
+						std::vector<uint32_t> tmp_trig_dTheta;
+						std::vector<uint32_t> tmp_trig_phiBin;
+						std::vector<uint32_t> tmp_trig_rBin;
+						for (auto trig : trigs){
+							tmp_trig_BCID.push_back( trig->trig_BCID() );
+							tmp_trig_dTheta.push_back( trig->trig_dTheta() );
+							tmp_trig_phiBin.push_back( trig->trig_phiBin() );
+							tmp_trig_rBin.push_back( trig->trig_rBin() );
+						}
+						data.b_MML1A_trig_BCID.push_back( tmp_trig_BCID );
+						data.b_MML1A_trig_dTheta.push_back( tmp_trig_dTheta );
+						data.b_MML1A_trig_phiBin.push_back( tmp_trig_phiBin );
+						data.b_MML1A_trig_rBin.push_back( tmp_trig_rBin );
+
+						data.b_MML1A_trailer_CRC.push_back( link->trailer_CRC() );
+
+					}
+				}
+				if (robType=="MMMon") {
+					for (size_t i = 0; i < nsw_trigger_decoder.get_elinks().size(); ++i) {
+						std::shared_ptr<Muon::nsw::NSWTriggerMMMonElink> link = std::dynamic_pointer_cast<Muon::nsw::NSWTriggerMMMonElink>(nsw_trigger_decoder.get_elinks()[i]);
+						data.b_MMMon_ROD_sourceID.push_back( sid );
+						data.b_MMMon_ROD_subdetID.push_back( s );
+						data.b_MMMon_ROD_moduleID.push_back( m );
+						data.b_MMMon_ROD_L1ID.push_back( r->rod_lvl1_id () );
+						data.b_MMMon_ROD_n_words.push_back( r->rod_ndata () );
+						data.b_MMMon_head_fragID.push_back( link->head_fragID() );
+						data.b_MMMon_head_sectID.push_back( link->head_sectID() );
+						data.b_MMMon_head_EC.push_back( link->head_EC() );
+						data.b_MMMon_head_flags.push_back( link->head_flags() );
+						data.b_MMMon_head_BCID.push_back( link->head_BCID() );
+						data.b_MMMon_head_orbit.push_back( link->head_orbit() );
+						data.b_MMMon_head_spare.push_back( link->head_spare() );
+						data.b_MMMon_L1ID.push_back( link->L1ID() );
+						data.b_MMMon_head_coincBCID.push_back( link->head_coincBCID() );
+						data.b_MMMon_head_regionCount.push_back( link->head_regionCount() );
+						data.b_MMMon_head_coincRegion.push_back( link->head_coincRegion() );
+						data.b_MMMon_head_reserved.push_back( link->head_reserved() );
+						data.b_MMMon_finder_streamID.push_back( link->finder_streamID() );
+						data.b_MMMon_finder_regionCount.push_back( link->finder_regionCount() );
+						data.b_MMMon_finder_triggerID.push_back( link->finder_triggerID() );
+						data.b_MMMon_finder_V1.push_back( link->finder_V1() );
+						data.b_MMMon_finder_V0.push_back( link->finder_V0() );
+						data.b_MMMon_finder_U1.push_back( link->finder_U1() );
+						data.b_MMMon_finder_U0.push_back( link->finder_U0() );
+						data.b_MMMon_finder_X3.push_back( link->finder_X3() );
+						data.b_MMMon_finder_X2.push_back( link->finder_X2() );
+						data.b_MMMon_finder_X1.push_back( link->finder_X1() );
+						data.b_MMMon_finder_X0.push_back( link->finder_X0() );
+						data.b_MMMon_fitter_streamID.push_back( link->fitter_streamID() );
+						data.b_MMMon_fitter_regionCount.push_back( link->fitter_regionCount() );
+						data.b_MMMon_fitter_triggerID.push_back( link->fitter_triggerID() );
+						data.b_MMMon_fitter_filler.push_back( link->fitter_filler() );
+						data.b_MMMon_fitter_mxG.push_back( link->fitter_mxG() );
+						data.b_MMMon_fitter_muG.push_back( link->fitter_muG() );
+						data.b_MMMon_fitter_mvG.push_back( link->fitter_mvG() );
+						data.b_MMMon_fitter_mxL.push_back( link->fitter_mxL() );
+						data.b_MMMon_fitter_mx_ROI.push_back( link->fitter_mx_ROI() );
+						data.b_MMMon_fitter_dTheta.push_back( link->fitter_dTheta() );
+						data.b_MMMon_fitter_zero.push_back( link->fitter_zero() );
+						data.b_MMMon_fitter_phiSign.push_back( link->fitter_phiSign() );
+						data.b_MMMon_fitter_phiBin.push_back( link->fitter_phiBin() );
+						data.b_MMMon_fitter_rBin.push_back( link->fitter_rBin() );
+						data.b_MMMon_trailer_CRC.push_back( link->trailer_CRC() );
+					}
+				}
+
+
+				if (robType=="STGL1A") {
+					// resize vectors
+					unsigned int n_elinks = nsw_trigger_decoder.get_elinks().size();
+					data.b_STGL1A_pad_BCID.resize(n_elinks);
+					data.b_STGL1A_pad_bandID_0.resize(n_elinks);
+					data.b_STGL1A_pad_bandID_1.resize(n_elinks);
+					data.b_STGL1A_pad_bandID_2.resize(n_elinks);
+					data.b_STGL1A_pad_bandID_3.resize(n_elinks);
+					data.b_STGL1A_pad_phiID_0.resize(n_elinks);
+					data.b_STGL1A_pad_phiID_1.resize(n_elinks);
+					data.b_STGL1A_pad_phiID_2.resize(n_elinks);
+					data.b_STGL1A_pad_phiID_3.resize(n_elinks);
+					data.b_STGL1A_pad_idleFlag.resize(n_elinks);
+					data.b_STGL1A_merge_LUT_choiceSelection.resize(n_elinks);
+					data.b_STGL1A_merge_nsw_segmentSelector.resize(n_elinks);
+					data.b_STGL1A_merge_valid_segmentSelector.resize(n_elinks);
+
+					data.b_STGL1A_merge_monitor_segment7.resize(n_elinks);
+					data.b_STGL1A_merge_spare_segment7.resize(n_elinks);
+					data.b_STGL1A_merge_lowRes_segment7.resize(n_elinks);
+					data.b_STGL1A_merge_phiRes_segment7.resize(n_elinks);
+					data.b_STGL1A_merge_dTheta_segment7.resize(n_elinks);
+					data.b_STGL1A_merge_phiID_segment7.resize(n_elinks);
+					data.b_STGL1A_merge_RIndex_segment7.resize(n_elinks);
+
+					data.b_STGL1A_merge_monitor_segment6.resize(n_elinks);
+					data.b_STGL1A_merge_spare_segment6.resize(n_elinks);
+					data.b_STGL1A_merge_lowRes_segment6.resize(n_elinks);
+					data.b_STGL1A_merge_phiRes_segment6.resize(n_elinks);
+					data.b_STGL1A_merge_dTheta_segment6.resize(n_elinks);
+					data.b_STGL1A_merge_phiID_segment6.resize(n_elinks);
+					data.b_STGL1A_merge_RIndex_segment6.resize(n_elinks);
+
+					data.b_STGL1A_merge_monitor_segment5.resize(n_elinks);
+					data.b_STGL1A_merge_spare_segment5.resize(n_elinks);
+					data.b_STGL1A_merge_lowRes_segment5.resize(n_elinks);
+					data.b_STGL1A_merge_phiRes_segment5.resize(n_elinks);
+					data.b_STGL1A_merge_dTheta_segment5.resize(n_elinks);
+					data.b_STGL1A_merge_phiID_segment5.resize(n_elinks);
+					data.b_STGL1A_merge_RIndex_segment5.resize(n_elinks);
+
+					data.b_STGL1A_merge_monitor_segment4.resize(n_elinks);
+					data.b_STGL1A_merge_spare_segment4.resize(n_elinks);
+					data.b_STGL1A_merge_lowRes_segment4.resize(n_elinks);
+					data.b_STGL1A_merge_phiRes_segment4.resize(n_elinks);
+					data.b_STGL1A_merge_dTheta_segment4.resize(n_elinks);
+					data.b_STGL1A_merge_phiID_segment4.resize(n_elinks);
+					data.b_STGL1A_merge_RIndex_segment4.resize(n_elinks);
+
+					data.b_STGL1A_merge_monitor_segment3.resize(n_elinks);
+					data.b_STGL1A_merge_spare_segment3.resize(n_elinks);
+					data.b_STGL1A_merge_lowRes_segment3.resize(n_elinks);
+					data.b_STGL1A_merge_phiRes_segment3.resize(n_elinks);
+					data.b_STGL1A_merge_dTheta_segment3.resize(n_elinks);
+					data.b_STGL1A_merge_phiID_segment3.resize(n_elinks);
+					data.b_STGL1A_merge_RIndex_segment3.resize(n_elinks);
+
+					data.b_STGL1A_merge_monitor_segment2.resize(n_elinks);
+					data.b_STGL1A_merge_spare_segment2.resize(n_elinks);
+					data.b_STGL1A_merge_lowRes_segment2.resize(n_elinks);
+					data.b_STGL1A_merge_phiRes_segment2.resize(n_elinks);
+					data.b_STGL1A_merge_dTheta_segment2.resize(n_elinks);
+					data.b_STGL1A_merge_phiID_segment2.resize(n_elinks);
+					data.b_STGL1A_merge_RIndex_segment2.resize(n_elinks);
+
+					data.b_STGL1A_merge_monitor_segment1.resize(n_elinks);
+					data.b_STGL1A_merge_spare_segment1.resize(n_elinks);
+					data.b_STGL1A_merge_lowRes_segment1.resize(n_elinks);
+					data.b_STGL1A_merge_phiRes_segment1.resize(n_elinks);
+					data.b_STGL1A_merge_dTheta_segment1.resize(n_elinks);
+					data.b_STGL1A_merge_phiID_segment1.resize(n_elinks);
+					data.b_STGL1A_merge_RIndex_segment1.resize(n_elinks);
+
+					data.b_STGL1A_merge_monitor_segment0.resize(n_elinks);
+					data.b_STGL1A_merge_spare_segment0.resize(n_elinks);
+					data.b_STGL1A_merge_lowRes_segment0.resize(n_elinks);
+					data.b_STGL1A_merge_phiRes_segment0.resize(n_elinks);
+					data.b_STGL1A_merge_dTheta_segment0.resize(n_elinks);
+					data.b_STGL1A_merge_phiID_segment0.resize(n_elinks);
+					data.b_STGL1A_merge_RIndex_segment0.resize(n_elinks);
+
+					data.b_STGL1A_merge_BCID.resize(n_elinks);
+					data.b_STGL1A_merge_sectorID.resize(n_elinks);
+
+					for (size_t i = 0; i < nsw_trigger_decoder.get_elinks().size(); ++i) {
+
+						std::shared_ptr<Muon::nsw::NSWTriggerSTGL1AElink> link = std::dynamic_pointer_cast<Muon::nsw::NSWTriggerSTGL1AElink>(nsw_trigger_decoder.get_elinks()[i]);
+						data.b_STGL1A_ROD_sourceID.push_back( sid );
+						data.b_STGL1A_ROD_subdetID.push_back( s );
+						data.b_STGL1A_ROD_moduleID.push_back( m );
+						data.b_STGL1A_ROD_L1ID.push_back( 0 );
+						data.b_STGL1A_ROD_n_words.push_back( 0 );
+						data.b_STGL1A_head_fragID.push_back( link->head_fragID() );
+						data.b_STGL1A_head_sectID.push_back( link->head_sectID() );
+						data.b_STGL1A_head_EC.push_back( link->head_EC() );
+						data.b_STGL1A_head_flags.push_back( link->head_flags() );
+						data.b_STGL1A_head_BCID.push_back( link->head_BCID() );
+						data.b_STGL1A_head_orbit.push_back( link->head_orbit() );
+						data.b_STGL1A_head_spare.push_back( link->head_spare() );
+						data.b_STGL1A_L1ID.push_back( link->L1ID() );
+						data.b_STGL1A_head_wdw_open.push_back( link->head_wdw_open() );
+						data.b_STGL1A_head_l1a_req.push_back( link->head_l1a_req() );
+						data.b_STGL1A_head_wdw_close.push_back( link->head_wdw_close() );
+						data.b_STGL1A_head_overflowCount.push_back( link->head_overflowCount() );
+						data.b_STGL1A_head_wdw_matching_engines_usage.push_back( link->head_wdw_matching_engines_usage() );
+						data.b_STGL1A_head_cfg_wdw_open_offset.push_back( link->head_cfg_wdw_open_offset() );
+						data.b_STGL1A_head_cfg_l1a_req_offset.push_back( link->head_cfg_l1a_req_offset() );
+						data.b_STGL1A_head_cfg_wdw_close_offset.push_back( link->head_cfg_wdw_close_offset() );
+						data.b_STGL1A_head_cfg_timeout.push_back( link->head_cfg_timeout() );
+						data.b_STGL1A_head_link_const.push_back( link->head_link_const() );
+						data.b_STGL1A_stream_head_nbits.push_back( link->stream_head_nbits() );
+						data.b_STGL1A_stream_head_nwords.push_back( link->stream_head_nwords() );
+						data.b_STGL1A_stream_head_fifo_size.push_back( link->stream_head_fifo_size() );
+						data.b_STGL1A_stream_head_streamID.push_back( link->stream_head_streamID() );
+
+						// pad block
+						const auto& pad_packets = link-> pad_packets();
+
+						for (auto packet : pad_packets)
+						{
+							data.b_STGL1A_pad_BCID[i].push_back(packet->BCID());
+							data.b_STGL1A_pad_bandID_0[i].push_back(packet->BandID(0));
+							data.b_STGL1A_pad_bandID_1[i].push_back(packet->BandID(1));
+							data.b_STGL1A_pad_bandID_2[i].push_back(packet->BandID(2));
+							data.b_STGL1A_pad_bandID_3[i].push_back(packet->BandID(3));
+
+							data.b_STGL1A_pad_phiID_0[i].push_back(packet->PhiID(0));
+							data.b_STGL1A_pad_phiID_1[i].push_back(packet->PhiID(1));
+							data.b_STGL1A_pad_phiID_2[i].push_back(packet->PhiID(2));
+							data.b_STGL1A_pad_phiID_3[i].push_back(packet->PhiID(3));
+
+							data.b_STGL1A_pad_idleFlag[i].push_back(packet->PadIdleFlag());
+
+						}
+
+						const auto& segment_packets = link-> segment_packet();
+
+
+					        for (auto packet: segment_packets) {
+							data.b_STGL1A_merge_LUT_choiceSelection[i].push_back(packet->LUT_ChoiceSelection());
+							data.b_STGL1A_merge_nsw_segmentSelector[i].push_back(packet->NSW_SegmentSelector());
+							data.b_STGL1A_merge_valid_segmentSelector[i].push_back(packet->ValidSegmentSelector());
+							data.b_STGL1A_merge_monitor_segment7[i].push_back(packet->Monitor_Segment7());
+
+							data.b_STGL1A_merge_spare_segment7[i].push_back(packet->Spare_Segment7());
+							data.b_STGL1A_merge_lowRes_segment7[i].push_back(packet->LowRes_Segment7());
+							data.b_STGL1A_merge_phiRes_segment7[i].push_back(packet->PhiRes_Segment7());
+							data.b_STGL1A_merge_dTheta_segment7[i].push_back(packet->DTheta_Segment7());
+							data.b_STGL1A_merge_phiID_segment7[i].push_back(packet->DTheta_Segment7());
+							data.b_STGL1A_merge_phiID_segment7[i].push_back(packet->PhiID_Segment7());
+							data.b_STGL1A_merge_RIndex_segment7[i].push_back(packet->RIndex_Segment7());
+
+							data.b_STGL1A_merge_spare_segment6[i].push_back(packet->Spare_Segment6());
+							data.b_STGL1A_merge_lowRes_segment6[i].push_back(packet->LowRes_Segment6());
+							data.b_STGL1A_merge_phiRes_segment6[i].push_back(packet->PhiRes_Segment6());
+							data.b_STGL1A_merge_dTheta_segment6[i].push_back(packet->DTheta_Segment6());
+							data.b_STGL1A_merge_phiID_segment6[i].push_back(packet->DTheta_Segment6());
+							data.b_STGL1A_merge_phiID_segment6[i].push_back(packet->PhiID_Segment6());
+							data.b_STGL1A_merge_RIndex_segment6[i].push_back(packet->RIndex_Segment6());
+
+							data.b_STGL1A_merge_spare_segment5[i].push_back(packet->Spare_Segment5());
+							data.b_STGL1A_merge_lowRes_segment5[i].push_back(packet->LowRes_Segment5());
+							data.b_STGL1A_merge_phiRes_segment5[i].push_back(packet->PhiRes_Segment5());
+							data.b_STGL1A_merge_dTheta_segment5[i].push_back(packet->DTheta_Segment5());
+							data.b_STGL1A_merge_phiID_segment5[i].push_back(packet->DTheta_Segment5());
+							data.b_STGL1A_merge_phiID_segment5[i].push_back(packet->PhiID_Segment5());
+							data.b_STGL1A_merge_RIndex_segment5[i].push_back(packet->RIndex_Segment5());
+
+							data.b_STGL1A_merge_spare_segment4[i].push_back(packet->Spare_Segment4());
+							data.b_STGL1A_merge_lowRes_segment4[i].push_back(packet->LowRes_Segment4());
+							data.b_STGL1A_merge_phiRes_segment4[i].push_back(packet->PhiRes_Segment4());
+							data.b_STGL1A_merge_dTheta_segment4[i].push_back(packet->DTheta_Segment4());
+							data.b_STGL1A_merge_phiID_segment4[i].push_back(packet->DTheta_Segment4());
+							data.b_STGL1A_merge_phiID_segment4[i].push_back(packet->PhiID_Segment4());
+							data.b_STGL1A_merge_RIndex_segment4[i].push_back(packet->RIndex_Segment4());
+
+							data.b_STGL1A_merge_spare_segment3[i].push_back(packet->Spare_Segment3());
+							data.b_STGL1A_merge_lowRes_segment3[i].push_back(packet->LowRes_Segment3());
+							data.b_STGL1A_merge_phiRes_segment3[i].push_back(packet->PhiRes_Segment3());
+							data.b_STGL1A_merge_dTheta_segment3[i].push_back(packet->DTheta_Segment3());
+							data.b_STGL1A_merge_phiID_segment3[i].push_back(packet->DTheta_Segment3());
+							data.b_STGL1A_merge_phiID_segment3[i].push_back(packet->PhiID_Segment3());
+							data.b_STGL1A_merge_RIndex_segment3[i].push_back(packet->RIndex_Segment3());
+
+							data.b_STGL1A_merge_spare_segment2[i].push_back(packet->Spare_Segment2());
+							data.b_STGL1A_merge_lowRes_segment2[i].push_back(packet->LowRes_Segment2());
+							data.b_STGL1A_merge_phiRes_segment2[i].push_back(packet->PhiRes_Segment2());
+							data.b_STGL1A_merge_dTheta_segment2[i].push_back(packet->DTheta_Segment2());
+							data.b_STGL1A_merge_phiID_segment2[i].push_back(packet->DTheta_Segment2());
+							data.b_STGL1A_merge_phiID_segment2[i].push_back(packet->PhiID_Segment2());
+							data.b_STGL1A_merge_RIndex_segment2[i].push_back(packet->RIndex_Segment2());
+
+							data.b_STGL1A_merge_spare_segment1[i].push_back(packet->Spare_Segment1());
+							data.b_STGL1A_merge_lowRes_segment1[i].push_back(packet->LowRes_Segment1());
+							data.b_STGL1A_merge_phiRes_segment1[i].push_back(packet->PhiRes_Segment1());
+							data.b_STGL1A_merge_dTheta_segment1[i].push_back(packet->DTheta_Segment1());
+							data.b_STGL1A_merge_phiID_segment1[i].push_back(packet->DTheta_Segment1());
+							data.b_STGL1A_merge_phiID_segment1[i].push_back(packet->PhiID_Segment1());
+							data.b_STGL1A_merge_RIndex_segment1[i].push_back(packet->RIndex_Segment1());
+
+							data.b_STGL1A_merge_spare_segment0[i].push_back(packet->Spare_Segment0());
+							data.b_STGL1A_merge_lowRes_segment0[i].push_back(packet->LowRes_Segment0());
+							data.b_STGL1A_merge_phiRes_segment0[i].push_back(packet->PhiRes_Segment0());
+							data.b_STGL1A_merge_dTheta_segment0[i].push_back(packet->DTheta_Segment0());
+							data.b_STGL1A_merge_phiID_segment0[i].push_back(packet->DTheta_Segment0());
+							data.b_STGL1A_merge_phiID_segment0[i].push_back(packet->PhiID_Segment0());
+							data.b_STGL1A_merge_RIndex_segment0[i].push_back(packet->RIndex_Segment0());
+
+							data.b_STGL1A_merge_BCID[i].push_back(packet->BCID());
+							data.b_STGL1A_merge_sectorID[i].push_back(packet->SectorID());
+
+
+						} // end of merge packets
+					} // end of stgc elink loop
+				} // end of stgc l1a block
+			} //not print only
+		}
+	} 
+	//end for loop on robs
+
+	return 0;
 }
 
 
 int test_nsw_trigger_common_decoder_loop (Params &params, Statistics &statistics)
 {
-  outBranches data;
-
-  bool anyBrokenFile = false;
-  //int err;
-
-  for (const std::string &filename : params.file_names)
-  {
-
-    char *buf = nullptr;
-    unsigned int size = 0;
-
-    TFile* outfile = nullptr;
-    TTree* outtree = nullptr; //no need for a smart pointer for ttrees, given root behaviour (deleting ttree's when closing files)
-
-    std::string data_file_name (filename);
-    std::string out_file_name = data_file_name.substr(data_file_name.find_last_of("/\\") + 1) + ".decoded.root";
-
-    std::cout << "Reading file " << data_file_name << std::endl;
-    if (!params.print_only) {
-      std::cout << "Saving here file " << out_file_name << std::endl;
-      outfile = new TFile(out_file_name.c_str(), "recreate");
-      outtree = new TTree("decoded_data", "decoded_data");
-      test_nsw_trigger_common_decoder_init_tree (*outtree, data);
-    }
-
-    std::unique_ptr <DataReader> reader (pickDataReader (data_file_name));
-
-    if (!reader || !reader->good ())
-    {
-      std::cout << "Cannot open this file properly; skipping to next one" << std::endl;
-      anyBrokenFile = true;
-    }
-    else {
-      while (!reader->endOfFile () && (params.max_events == 0 || statistics.nevents < params.max_events))
-      {
-        try
-        {
-          DRError err = reader->getData (size, &buf);
-
-          if (err != EventStorage::DROK)
-          {
-            std::cout << "Cannot get data properly from file" << data_file_name.c_str () << "; skipping it!" << std::endl;
-            anyBrokenFile = true;
-            if (buf) delete buf;
-            break;
-          }
-
-          eformat::read::FullEventFragment f ((unsigned int *) buf);
-          f.check ();
-
-          //reset branches
-          data = outBranches();
-
-          if ( test_nsw_trigger_common_decoder_event (f, data, params, statistics) )
-          {
-            std::cout << "Cannot decode properly event " << statistics.nevents << "; skipping it!" <<std::endl;
-            if (buf) delete buf;
-            continue;
-          }
-
-	  
-          if (!params.print_only) {outtree->Fill();}
-          ++statistics.nevents;
-        }
-
-        catch (std::runtime_error& error)
-        {
-          std::cout << "Exception!" << std::endl;
-          std::cout << error.what() << std::endl;
-          if (buf) delete buf;
-          break;
-        }
-
-        if (buf) delete buf;
-      }
-    }
-
-    if (!params.print_only) {
-      outtree->Write();
-      outfile->Close();
-    }
-  }
-
-  if (anyBrokenFile) return 3;
-  return 0;
+	outBranches data;
+
+	bool anyBrokenFile = false;
+	//int err;
+
+	for (const std::string &filename : params.file_names)
+	{
+
+		char *buf = nullptr;
+		unsigned int size = 0;
+
+		TFile* outfile = nullptr;
+		TTree* outtree = nullptr; //no need for a smart pointer for ttrees, given root behaviour (deleting ttree's when closing files)
+
+		std::string data_file_name (filename);
+		std::string out_file_name = data_file_name.substr(data_file_name.find_last_of("/\\") + 1) + ".decoded.root";
+
+		std::cout << "Reading file " << data_file_name << std::endl;
+		if (!params.print_only) {
+			std::cout << "Saving here file " << out_file_name << std::endl;
+			outfile = new TFile(out_file_name.c_str(), "recreate"); 
+			outtree = new TTree("decoded_data", "decoded_data");
+			test_nsw_trigger_common_decoder_init_tree (*outtree, data);
+		}
+
+		std::unique_ptr <DataReader> reader (pickDataReader (data_file_name));
+
+		if (!reader || !reader->good ())
+		{
+			std::cout << "Cannot open this file properly; skipping to next one" << std::endl;
+			anyBrokenFile = true;
+		}
+		else {
+			while (!reader->endOfFile () && (params.max_events == 0 || statistics.nevents < params.max_events))
+			{
+				try
+				{
+					DRError err = reader->getData (size, &buf);
+
+					if (err != EventStorage::DROK)
+					{
+						std::cout << "Cannot get data properly from file" << data_file_name.c_str () << "; skipping it!" << std::endl;
+						anyBrokenFile = true;
+						if (buf) delete buf;
+						break;
+					}
+
+					eformat::read::FullEventFragment f ((unsigned int *) buf);
+					f.check ();
+
+					//reset branches
+					data = outBranches();
+
+					if ( test_nsw_trigger_common_decoder_event (f, data, params, statistics) )
+					{
+						std::cout << "Cannot decode properly event " << statistics.nevents << "; skipping it!" <<std::endl;
+						if (buf) delete buf;
+						continue;
+					}
+
+
+					if (!params.print_only) {
+						std::chrono::steady_clock::time_point start= std::chrono::steady_clock::now ();
+						outtree->Fill();
+						std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now ();
+						unsigned int time_elapsed = std::chrono::duration_cast <std::chrono::microseconds> (end - start).count ();
+						statistics.total_fill_time += time_elapsed;
+					}
+					++statistics.nevents;
+				}
+
+				catch (std::runtime_error& error)
+				{
+					std::cout << "Exception!" << std::endl;
+					std::cout << error.what() << std::endl;
+					if (buf) delete buf;
+					break;
+				}
+
+				if (buf) delete buf;
+			}
+		}
+
+		if (!params.print_only) {
+			std::chrono::steady_clock::time_point start= std::chrono::steady_clock::now ();
+			outtree->Write();
+			std::chrono::steady_clock::time_point end = std::chrono::steady_clock::now ();
+			unsigned int time_elapsed = std::chrono::duration_cast <std::chrono::microseconds> (end - start).count ();
+			statistics.total_write_time += time_elapsed;
+			outfile->Close();
+		}
+	}
+
+	if (anyBrokenFile) return 3;
+	return 0;
 }
 
 int main (int argc, char **argv)
 {
-  Params params;
-  Statistics statistics;
+	Params params;
+	Statistics statistics;
 
-  int err;
+	int err;
 
-  if ( (err = test_nsw_trigger_common_decoder_opt (argc, argv, params)) )
-    return err;
+	if ( (err = test_nsw_trigger_common_decoder_opt (argc, argv, params)) )
+		return err;
 
-  if ( (err = test_nsw_trigger_common_decoder_loop (params, statistics)) )
-    return err;
+	if ( (err = test_nsw_trigger_common_decoder_loop (params, statistics)) )
+		return err;
 
-  if ( (err = test_nsw_trigger_common_decoder_end (statistics)) )
-    return err;
+	if ( (err = test_nsw_trigger_common_decoder_end (statistics)) )
+		return err;
 
-  return err;
+	return err;
 }
diff --git a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/test/test_nsw_trigger_common_decoder_txt.cxx b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/test/test_nsw_trigger_common_decoder_txt.cxx
index da776cd23b97187fb8995a14e67a4ad1876d8999..563bb79318fb38a3c049eca4da6d67d9566dab79 100644
--- a/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/test/test_nsw_trigger_common_decoder_txt.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonNSWCommonDecode/src/test/test_nsw_trigger_common_decoder_txt.cxx
@@ -24,7 +24,8 @@
 #include "MuonNSWCommonDecode/NSWResourceId.h"
 #include "MuonNSWCommonDecode/MMARTPacket.h"
 #include "MuonNSWCommonDecode/MMTrigPacket.h"
-
+#include "MuonNSWCommonDecode/NSWTriggerSTGL1AElink.h"
+#include "MuonNSWCommonDecode/STGTPPackets.h"
 #include <TFile.h>
 #include <TTree.h>
 
@@ -170,6 +171,124 @@ struct outBranches
   std::vector<std::vector<uint32_t>> b_PadL1A_bcid_status = {} ;
   std::vector<std::vector<uint32_t>> b_PadL1A_bcid_multzero = {} ;
 
+
+  /// stg
+  std::vector<uint32_t> b_STGL1A_ROD_sourceID = {} ;
+  std::vector<uint32_t> b_STGL1A_ROD_subdetID = {} ;
+  std::vector<uint32_t> b_STGL1A_ROD_moduleID = {} ;
+  std::vector<uint32_t> b_STGL1A_ROD_L1ID = {} ;
+  std::vector<uint32_t> b_STGL1A_ROD_n_words = {} ;
+  std::vector<uint32_t> b_STGL1A_head_fragID = {} ;
+  std::vector<uint32_t> b_STGL1A_head_sectID = {} ;
+  std::vector<uint32_t> b_STGL1A_head_EC = {} ;
+  std::vector<uint32_t> b_STGL1A_head_flags = {} ;
+  std::vector<uint32_t> b_STGL1A_head_BCID = {} ;
+  std::vector<uint32_t> b_STGL1A_head_orbit = {} ;
+  std::vector<uint32_t> b_STGL1A_head_spare = {} ;
+  std::vector<uint32_t> b_STGL1A_L1ID = {} ;
+  std::vector<uint32_t> b_STGL1A_head_wdw_open = {} ;
+  std::vector<uint32_t> b_STGL1A_head_l1a_req = {} ;
+  std::vector<uint32_t> b_STGL1A_head_wdw_close = {} ;
+  std::vector<uint32_t> b_STGL1A_head_overflowCount = {} ;
+  std::vector<uint32_t> b_STGL1A_head_wdw_matching_engines_usage = {} ;
+  std::vector<uint32_t> b_STGL1A_head_cfg_wdw_open_offset = {} ;
+  std::vector<uint32_t> b_STGL1A_head_cfg_l1a_req_offset = {} ;
+  std::vector<uint32_t> b_STGL1A_head_cfg_wdw_close_offset = {} ;
+  std::vector<uint32_t> b_STGL1A_head_cfg_timeout = {} ;
+  std::vector<uint32_t> b_STGL1A_head_link_const = {} ;
+  std::vector<std::vector<uint32_t>> b_STGL1A_stream_head_nbits = {} ;
+  std::vector<std::vector<uint32_t>> b_STGL1A_stream_head_nwords = {} ;
+  std::vector<std::vector<uint32_t>> b_STGL1A_stream_head_fifo_size = {} ;
+  std::vector<std::vector<uint32_t>> b_STGL1A_stream_head_streamID = {};
+
+  std::vector<std::vector<uint32_t>> b_STGL1A_pad_coincidence_wedge = {};
+
+  std::vector<std::vector<uint32_t>> b_STGL1A_pad_phiID_3 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_pad_phiID_2 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_pad_phiID_1 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_pad_phiID_0 = {};
+
+  std::vector<std::vector<uint32_t>> b_STGL1A_pad_bandID_3 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_pad_bandID_2 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_pad_bandID_1 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_pad_bandID_0 = {};
+
+  std::vector<std::vector<uint32_t>> b_STGL1A_pad_BCID = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_pad_idleFlag = {};
+
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_LUT_choiceSelection = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_nsw_segmentSelector = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_valid_segmentSelector = {};
+
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment7 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment7 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment7 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment7 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment7 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment7 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment7 = {};
+  
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment6 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment6 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment6 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment6 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment6 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment6 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment6 = {};
+
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment5 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment5 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment5 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment5 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment5 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment5 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment5 = {};
+
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment4 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment4 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment4 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment4 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment4 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment4 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment4 = {};
+
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment3 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment3 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment3 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment3 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment3 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment3 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment3 = {};
+
+
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment2 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment2 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment2 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment2 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment2 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment2 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment2 = {};
+
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment1 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment1 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment1 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment1 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment1 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment1 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment1 = {};
+
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_monitor_segment0 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_spare_segment0 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_lowRes_segment0 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiRes_segment0 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_dTheta_segment0 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_phiID_segment0 = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_RIndex_segment0 = {};
+
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_BCID = {};
+  std::vector<std::vector<uint32_t>> b_STGL1A_merge_sectorID = {};
+
+  std::vector<uint32_t> b_STGL1A_trailer_CRC = {} ; 
 };
 
 void test_nsw_trigger_common_decoder_help (char *progname)
@@ -178,7 +297,7 @@ void test_nsw_trigger_common_decoder_help (char *progname)
 	<< " [-h] [-n events] [-p] [-d MML1A/MMMon/PadL1A] [-e XXXXXXXX] [-m XXXXXXXX] [-v] file_txt" << std::endl;
   std::cout << "\t\t[-n events] maximum number of events to read; default = all" << std::endl;
   std::cout << "\t\t[-p] only print raw packets" << std::endl;
-  std::cout << "\t\t[-d MML1A/MMMon/PadL1A] elink type; only one elink type per txt file" << std::endl;
+  std::cout << "\t\t[-d MML1A/MMMon/PadL1A/STGL1A] elink type; only one elink type per txt file" << std::endl;
   std::cout << "\t\t[-e XXXXXXXX] elink ID if known; 4bytes; default = CAFECAFE" << std::endl;
   std::cout << "\t\t[-m XXXXXXXX] ROB ID if known; 4bytes; default = CAFECAFE" << std::endl;
   std::cout << "\t\tMultiple [-v] options increase printout detail level" << std::endl;
@@ -220,7 +339,7 @@ int test_nsw_trigger_common_decoder_opt (int argc, char **argv, Params& params)
     }
   }
 
-  if (params.elink_type != "" && params.elink_type != "MML1A" && params.elink_type != "MMMon" && params.elink_type != "PadL1A")
+  if (params.elink_type != "" && params.elink_type != "MML1A" && params.elink_type != "MMMon" && params.elink_type != "PadL1A" && params.elink_type != "STGL1A" )
   {
     test_nsw_trigger_common_decoder_help (argv[0]);
     std::cout << "\n\tNo valid elink type provided: " << params.elink_type << std::endl;
@@ -357,7 +476,123 @@ int test_nsw_trigger_common_decoder_init_tree (TTree &outtree, outBranches &data
     outtree.Branch( "PadL1A_bcid_status", &data.b_PadL1A_bcid_status);
     outtree.Branch( "PadL1A_bcid_multzero", &data.b_PadL1A_bcid_multzero);
   }
+  
+  if (params.elink_type == "STGL1A")
+  {
+    outtree.Branch( "STGL1A_ROD_sourceID", &data.b_STGL1A_ROD_sourceID);
+    outtree.Branch( "STGL1A_ROD_subdetID", &data.b_STGL1A_ROD_subdetID);
+    outtree.Branch( "STGL1A_ROD_moduleID", &data.b_STGL1A_ROD_moduleID);
+    outtree.Branch( "STGL1A_ROD_L1ID", &data.b_STGL1A_ROD_L1ID);
+    outtree.Branch( "STGL1A_ROD_n_words", &data.b_STGL1A_ROD_n_words);
+    outtree.Branch( "STGL1A_head_fragID", &data.b_STGL1A_head_fragID);
+    outtree.Branch( "STGL1A_head_sectID", &data.b_STGL1A_head_sectID);
+    outtree.Branch( "STGL1A_head_EC", &data.b_STGL1A_head_EC);
+    outtree.Branch( "STGL1A_head_flags", &data.b_STGL1A_head_flags);
+    outtree.Branch( "STGL1A_head_BCID", &data.b_STGL1A_head_BCID);
+    outtree.Branch( "STGL1A_head_orbit", &data.b_STGL1A_head_orbit);
+    outtree.Branch( "STGL1A_head_spare", &data.b_STGL1A_head_spare);
+    outtree.Branch( "STGL1A_L1ID", &data.b_STGL1A_L1ID);
+    outtree.Branch( "STGL1A_head_wdw_open", &data.b_STGL1A_head_wdw_open);
+    outtree.Branch( "STGL1A_head_l1a_req", &data.b_STGL1A_head_l1a_req);
+    outtree.Branch( "STGL1A_head_wdw_close", &data.b_STGL1A_head_wdw_close);
+    outtree.Branch( "STGL1A_head_overflowCount", &data.b_STGL1A_head_overflowCount);
+    outtree.Branch( "STGL1A_head_wdw_matching_engines_usage", &data.b_STGL1A_head_wdw_matching_engines_usage);
+    outtree.Branch( "STGL1A_head_cfg_wdw_open_offset", &data.b_STGL1A_head_cfg_wdw_open_offset);
+    outtree.Branch( "STGL1A_head_cfg_l1a_req_offset", &data.b_STGL1A_head_cfg_l1a_req_offset);
+    outtree.Branch( "STGL1A_head_cfg_wdw_close_offset", &data.b_STGL1A_head_cfg_wdw_close_offset);
+    outtree.Branch( "STGL1A_head_cfg_timeout", &data.b_STGL1A_head_cfg_timeout);
+    outtree.Branch( "STGL1A_head_link_const", &data.b_STGL1A_head_link_const);
+    outtree.Branch( "STGL1A_stream_head_nbits", &data.b_STGL1A_stream_head_nbits);
+    outtree.Branch( "STGL1A_stream_head_nwords", &data.b_STGL1A_stream_head_nwords);
+    outtree.Branch( "STGL1A_stream_head_fifo_size", &data.b_STGL1A_stream_head_fifo_size);
+    outtree.Branch( "STGL1A_stream_head_streamID", &data.b_STGL1A_stream_head_streamID);
+
+    outtree.Branch( "STGL1A_pad_coincidence_wedge", &data.b_STGL1A_pad_coincidence_wedge);
+    outtree.Branch( "STGL1A_pad_phiID_3", &data.b_STGL1A_pad_phiID_3);
+    outtree.Branch( "STGL1A_pad_phiID_2", &data.b_STGL1A_pad_phiID_2);
+    outtree.Branch( "STGL1A_pad_phiID_1", &data.b_STGL1A_pad_phiID_1);
+    outtree.Branch( "STGL1A_pad_phiID_0", &data.b_STGL1A_pad_phiID_0);
+
+    outtree.Branch( "STGL1A_pad_bandID_3", &data.b_STGL1A_pad_bandID_3);
+    outtree.Branch( "STGL1A_pad_bandID_2", &data.b_STGL1A_pad_bandID_2);
+    outtree.Branch( "STGL1A_pad_bandID_1", &data.b_STGL1A_pad_bandID_1);
+    outtree.Branch( "STGL1A_pad_bandID_0", &data.b_STGL1A_pad_bandID_0);
+    
+   outtree.Branch( "STGL1A_pad_BCID", &data.b_STGL1A_pad_BCID);
+   outtree.Branch( "STGL1A_pad_idleFlag", &data.b_STGL1A_pad_idleFlag);
+
+   outtree.Branch( "STGL1A_merge_LUT_choiceSelection", &data.b_STGL1A_merge_LUT_choiceSelection);
+   outtree.Branch( "STGL1A_merge_nsw_segmentSelector", &data.b_STGL1A_merge_nsw_segmentSelector);
+   outtree.Branch( "STGL1A_merge_valid_segmentSelector", &data.b_STGL1A_merge_valid_segmentSelector);
+
+   outtree.Branch( "STGL1A_merge_monitor_segment7", &data.b_STGL1A_merge_monitor_segment7);
+   outtree.Branch( "STGL1A_merge_spare_segment7", &data.b_STGL1A_merge_spare_segment7);
+   outtree.Branch( "STGL1A_merge_lowRes_segment7", &data.b_STGL1A_merge_lowRes_segment7);
+   outtree.Branch( "STGL1A_merge_phiRes_segment7", &data.b_STGL1A_merge_phiRes_segment7);
+   outtree.Branch( "STGL1A_merge_dTheta_segment7", &data.b_STGL1A_merge_dTheta_segment7);
+   outtree.Branch( "STGL1A_merge_phiID_segment7", &data.b_STGL1A_merge_phiID_segment7);
+   outtree.Branch( "STGL1A_merge_RIndex_segment7", &data.b_STGL1A_merge_RIndex_segment7);
+
+   outtree.Branch( "STGL1A_merge_monitor_segment6", &data.b_STGL1A_merge_monitor_segment6);
+   outtree.Branch( "STGL1A_merge_spare_segment6", &data.b_STGL1A_merge_spare_segment6);
+   outtree.Branch( "STGL1A_merge_lowRes_segment6", &data.b_STGL1A_merge_lowRes_segment6);
+   outtree.Branch( "STGL1A_merge_phiRes_segment6", &data.b_STGL1A_merge_phiRes_segment6);
+   outtree.Branch( "STGL1A_merge_dTheta_segment6", &data.b_STGL1A_merge_dTheta_segment6);
+   outtree.Branch( "STGL1A_merge_phiID_segment6", &data.b_STGL1A_merge_phiID_segment6);
+   outtree.Branch( "STGL1A_merge_RIndex_segment6", &data.b_STGL1A_merge_RIndex_segment6);
+
+   outtree.Branch( "STGL1A_merge_monitor_segment5", &data.b_STGL1A_merge_monitor_segment5);
+   outtree.Branch( "STGL1A_merge_spare_segment5", &data.b_STGL1A_merge_spare_segment5);
+   outtree.Branch( "STGL1A_merge_lowRes_segment5", &data.b_STGL1A_merge_lowRes_segment5);
+   outtree.Branch( "STGL1A_merge_phiRes_segment5", &data.b_STGL1A_merge_phiRes_segment5);
+   outtree.Branch( "STGL1A_merge_dTheta_segment5", &data.b_STGL1A_merge_dTheta_segment5);
+   outtree.Branch( "STGL1A_merge_phiID_segment5", &data.b_STGL1A_merge_phiID_segment5);
+   outtree.Branch( "STGL1A_merge_RIndex_segment5", &data.b_STGL1A_merge_RIndex_segment5);
+
+   outtree.Branch( "STGL1A_merge_monitor_segment4", &data.b_STGL1A_merge_monitor_segment4);
+   outtree.Branch( "STGL1A_merge_spare_segment4", &data.b_STGL1A_merge_spare_segment4);
+   outtree.Branch( "STGL1A_merge_lowRes_segment4", &data.b_STGL1A_merge_lowRes_segment4);
+   outtree.Branch( "STGL1A_merge_phiRes_segment4", &data.b_STGL1A_merge_phiRes_segment4);
+   outtree.Branch( "STGL1A_merge_dTheta_segment4", &data.b_STGL1A_merge_dTheta_segment4);
+   outtree.Branch( "STGL1A_merge_phiID_segment4", &data.b_STGL1A_merge_phiID_segment4);
+   outtree.Branch( "STGL1A_merge_RIndex_segment4", &data.b_STGL1A_merge_RIndex_segment4);
+
+   outtree.Branch( "STGL1A_merge_monitor_segment3", &data.b_STGL1A_merge_monitor_segment3);
+   outtree.Branch( "STGL1A_merge_spare_segment3", &data.b_STGL1A_merge_spare_segment3);
+   outtree.Branch( "STGL1A_merge_lowRes_segment3", &data.b_STGL1A_merge_lowRes_segment3);
+   outtree.Branch( "STGL1A_merge_phiRes_segment3", &data.b_STGL1A_merge_phiRes_segment3);
+   outtree.Branch( "STGL1A_merge_dTheta_segment3", &data.b_STGL1A_merge_dTheta_segment3);
+   outtree.Branch( "STGL1A_merge_phiID_segment3", &data.b_STGL1A_merge_phiID_segment3);
+   outtree.Branch( "STGL1A_merge_RIndex_segment3", &data.b_STGL1A_merge_RIndex_segment3);
+
+   outtree.Branch( "STGL1A_merge_monitor_segment2", &data.b_STGL1A_merge_monitor_segment2);
+   outtree.Branch( "STGL1A_merge_spare_segment2", &data.b_STGL1A_merge_spare_segment2);
+   outtree.Branch( "STGL1A_merge_lowRes_segment2", &data.b_STGL1A_merge_lowRes_segment2);
+   outtree.Branch( "STGL1A_merge_phiRes_segment2", &data.b_STGL1A_merge_phiRes_segment2);
+   outtree.Branch( "STGL1A_merge_dTheta_segment2", &data.b_STGL1A_merge_dTheta_segment2);
+   outtree.Branch( "STGL1A_merge_phiID_segment2", &data.b_STGL1A_merge_phiID_segment2);
+   outtree.Branch( "STGL1A_merge_RIndex_segment2", &data.b_STGL1A_merge_RIndex_segment2);
+
+   outtree.Branch( "STGL1A_merge_monitor_segment1", &data.b_STGL1A_merge_monitor_segment1);
+   outtree.Branch( "STGL1A_merge_spare_segment1", &data.b_STGL1A_merge_spare_segment1);
+   outtree.Branch( "STGL1A_merge_lowRes_segment1", &data.b_STGL1A_merge_lowRes_segment1);
+   outtree.Branch( "STGL1A_merge_phiRes_segment1", &data.b_STGL1A_merge_phiRes_segment1);
+   outtree.Branch( "STGL1A_merge_dTheta_segment1", &data.b_STGL1A_merge_dTheta_segment1);
+   outtree.Branch( "STGL1A_merge_phiID_segment1", &data.b_STGL1A_merge_phiID_segment1);
+   outtree.Branch( "STGL1A_merge_RIndex_segment1", &data.b_STGL1A_merge_RIndex_segment1);
+
+   outtree.Branch( "STGL1A_merge_monitor_segment0", &data.b_STGL1A_merge_monitor_segment0);
+   outtree.Branch( "STGL1A_merge_spare_segment0", &data.b_STGL1A_merge_spare_segment0);
+   outtree.Branch( "STGL1A_merge_lowRes_segment0", &data.b_STGL1A_merge_lowRes_segment0);
+   outtree.Branch( "STGL1A_merge_phiRes_segment0", &data.b_STGL1A_merge_phiRes_segment0);
+   outtree.Branch( "STGL1A_merge_dTheta_segment0", &data.b_STGL1A_merge_dTheta_segment0);
+   outtree.Branch( "STGL1A_merge_phiID_segment0", &data.b_STGL1A_merge_phiID_segment0);
+   outtree.Branch( "STGL1A_merge_RIndex_segment0", &data.b_STGL1A_merge_RIndex_segment0);
+
+   outtree.Branch( "STGL1A_merge_BCID", &data.b_STGL1A_merge_BCID);
+   outtree.Branch( "STGL1A_merge_sectorID", &data.b_STGL1A_merge_sectorID);
 
+  }
   return 0;
 }
 
@@ -603,6 +838,225 @@ int test_nsw_trigger_common_decoder_event (std::string &line, outBranches &data,
     }
   }
 
+  if (params.elink_type=="STGL1A") {
+    for (size_t i = 0; i < nsw_trigger_decoder.get_elinks().size(); ++i) {
+      std::shared_ptr<Muon::nsw::NSWTriggerSTGL1AElink> link = std::dynamic_pointer_cast<Muon::nsw::NSWTriggerSTGL1AElink>(nsw_trigger_decoder.get_elinks()[i]);
+      data.b_STGL1A_ROD_sourceID.push_back( params.rob_id );
+      data.b_STGL1A_ROD_subdetID.push_back( s );
+      data.b_STGL1A_ROD_moduleID.push_back( m );
+      data.b_STGL1A_ROD_L1ID.push_back( 0 );
+      data.b_STGL1A_ROD_n_words.push_back( 0 );
+      data.b_STGL1A_head_fragID.push_back( link->head_fragID() );
+      data.b_STGL1A_head_sectID.push_back( link->head_sectID() );
+      data.b_STGL1A_head_EC.push_back( link->head_EC() );
+      data.b_STGL1A_head_flags.push_back( link->head_flags() );
+      data.b_STGL1A_head_BCID.push_back( link->head_BCID() );
+      data.b_STGL1A_head_orbit.push_back( link->head_orbit() );
+      data.b_STGL1A_head_spare.push_back( link->head_spare() );
+      data.b_STGL1A_L1ID.push_back( link->L1ID() );
+      data.b_STGL1A_head_wdw_open.push_back( link->head_wdw_open() );
+      data.b_STGL1A_head_l1a_req.push_back( link->head_l1a_req() );
+      data.b_STGL1A_head_wdw_close.push_back( link->head_wdw_close() );
+      data.b_STGL1A_head_overflowCount.push_back( link->head_overflowCount() );
+      data.b_STGL1A_head_wdw_matching_engines_usage.push_back( link->head_wdw_matching_engines_usage() );
+      data.b_STGL1A_head_cfg_wdw_open_offset.push_back( link->head_cfg_wdw_open_offset() );
+      data.b_STGL1A_head_cfg_l1a_req_offset.push_back( link->head_cfg_l1a_req_offset() );
+      data.b_STGL1A_head_cfg_wdw_close_offset.push_back( link->head_cfg_wdw_close_offset() );
+      data.b_STGL1A_head_cfg_timeout.push_back( link->head_cfg_timeout() );
+      data.b_STGL1A_head_link_const.push_back( link->head_link_const() );
+      data.b_STGL1A_stream_head_nbits.push_back( link->stream_head_nbits() );
+      data.b_STGL1A_stream_head_nwords.push_back( link->stream_head_nwords() );
+      data.b_STGL1A_stream_head_fifo_size.push_back( link->stream_head_fifo_size() );
+      data.b_STGL1A_stream_head_streamID.push_back( link->stream_head_streamID() );
+
+     // pad block
+     const auto& pad_packets = link-> pad_packets();
+     std::vector<uint32_t> dummy;
+     data.b_STGL1A_pad_BCID.push_back(dummy);
+     data.b_STGL1A_pad_bandID_0.push_back(dummy);
+     data.b_STGL1A_pad_bandID_1.push_back(dummy);
+     data.b_STGL1A_pad_bandID_2.push_back(dummy);
+     data.b_STGL1A_pad_bandID_3.push_back(dummy);
+
+     data.b_STGL1A_pad_phiID_0.push_back(dummy);
+     data.b_STGL1A_pad_phiID_1.push_back(dummy);
+     data.b_STGL1A_pad_phiID_2.push_back(dummy);
+     data.b_STGL1A_pad_phiID_3.push_back(dummy);
+
+     data.b_STGL1A_pad_idleFlag.push_back(dummy);
+
+     for (unsigned int i_pad = 0; i_pad < pad_packets.size(); i_pad++)
+     {
+       auto packet = pad_packets.at(i_pad);
+       data.b_STGL1A_pad_BCID.back().push_back(packet->BCID());
+       data.b_STGL1A_pad_bandID_0.back().push_back(packet->BandID(0));
+       data.b_STGL1A_pad_bandID_1.back().push_back(packet->BandID(1));
+       data.b_STGL1A_pad_bandID_2.back().push_back(packet->BandID(2));
+       data.b_STGL1A_pad_bandID_3.back().push_back(packet->BandID(3));
+
+       data.b_STGL1A_pad_phiID_0.back().push_back(packet->PhiID(0));
+       data.b_STGL1A_pad_phiID_1.back().push_back(packet->PhiID(1));
+       data.b_STGL1A_pad_phiID_2.back().push_back(packet->PhiID(2));
+       data.b_STGL1A_pad_phiID_3.back().push_back(packet->PhiID(3));
+       
+       data.b_STGL1A_pad_idleFlag.back().push_back(packet->PadIdleFlag());
+
+     }
+
+     //merge block
+     const auto& segment_packets = link-> segment_packet();
+  
+    data.b_STGL1A_merge_LUT_choiceSelection.push_back(dummy);
+    data.b_STGL1A_merge_nsw_segmentSelector.push_back(dummy);
+    data.b_STGL1A_merge_valid_segmentSelector.push_back(dummy);
+  
+    data.b_STGL1A_merge_monitor_segment7.push_back(dummy);
+    data.b_STGL1A_merge_spare_segment7.push_back(dummy);
+    data.b_STGL1A_merge_lowRes_segment7.push_back(dummy);
+    data.b_STGL1A_merge_phiRes_segment7.push_back(dummy);
+    data.b_STGL1A_merge_dTheta_segment7.push_back(dummy);
+    data.b_STGL1A_merge_phiID_segment7.push_back(dummy);
+    data.b_STGL1A_merge_RIndex_segment7.push_back(dummy);
+  
+    data.b_STGL1A_merge_monitor_segment6.push_back(dummy);
+    data.b_STGL1A_merge_spare_segment6.push_back(dummy);
+    data.b_STGL1A_merge_lowRes_segment6.push_back(dummy);
+    data.b_STGL1A_merge_phiRes_segment6.push_back(dummy);
+    data.b_STGL1A_merge_dTheta_segment6.push_back(dummy);
+    data.b_STGL1A_merge_phiID_segment6.push_back(dummy);
+    data.b_STGL1A_merge_RIndex_segment6.push_back(dummy);
+
+    data.b_STGL1A_merge_monitor_segment5.push_back(dummy);
+    data.b_STGL1A_merge_spare_segment5.push_back(dummy);
+    data.b_STGL1A_merge_lowRes_segment5.push_back(dummy);
+    data.b_STGL1A_merge_phiRes_segment5.push_back(dummy);
+    data.b_STGL1A_merge_dTheta_segment5.push_back(dummy);
+    data.b_STGL1A_merge_phiID_segment5.push_back(dummy);
+    data.b_STGL1A_merge_RIndex_segment5.push_back(dummy);
+
+    data.b_STGL1A_merge_monitor_segment4.push_back(dummy);
+    data.b_STGL1A_merge_spare_segment4.push_back(dummy);
+    data.b_STGL1A_merge_lowRes_segment4.push_back(dummy);
+    data.b_STGL1A_merge_phiRes_segment4.push_back(dummy);
+    data.b_STGL1A_merge_dTheta_segment4.push_back(dummy);
+    data.b_STGL1A_merge_phiID_segment4.push_back(dummy);
+    data.b_STGL1A_merge_RIndex_segment4.push_back(dummy);
+
+
+    data.b_STGL1A_merge_monitor_segment3.push_back(dummy);
+    data.b_STGL1A_merge_spare_segment3.push_back(dummy);
+    data.b_STGL1A_merge_lowRes_segment3.push_back(dummy);
+    data.b_STGL1A_merge_phiRes_segment3.push_back(dummy);
+    data.b_STGL1A_merge_dTheta_segment3.push_back(dummy);
+    data.b_STGL1A_merge_phiID_segment3.push_back(dummy);
+    data.b_STGL1A_merge_RIndex_segment3.push_back(dummy);
+
+    data.b_STGL1A_merge_monitor_segment2.push_back(dummy);
+    data.b_STGL1A_merge_spare_segment2.push_back(dummy);
+    data.b_STGL1A_merge_lowRes_segment2.push_back(dummy);
+    data.b_STGL1A_merge_phiRes_segment2.push_back(dummy);
+    data.b_STGL1A_merge_dTheta_segment2.push_back(dummy);
+    data.b_STGL1A_merge_phiID_segment2.push_back(dummy);
+    data.b_STGL1A_merge_RIndex_segment2.push_back(dummy);
+
+    data.b_STGL1A_merge_monitor_segment1.push_back(dummy);
+    data.b_STGL1A_merge_spare_segment1.push_back(dummy);
+    data.b_STGL1A_merge_lowRes_segment1.push_back(dummy);
+    data.b_STGL1A_merge_phiRes_segment1.push_back(dummy);
+    data.b_STGL1A_merge_dTheta_segment1.push_back(dummy);
+    data.b_STGL1A_merge_phiID_segment1.push_back(dummy);
+    data.b_STGL1A_merge_RIndex_segment1.push_back(dummy);
+
+    data.b_STGL1A_merge_monitor_segment0.push_back(dummy);
+    data.b_STGL1A_merge_spare_segment0.push_back(dummy);
+    data.b_STGL1A_merge_lowRes_segment0.push_back(dummy);
+    data.b_STGL1A_merge_phiRes_segment0.push_back(dummy);
+    data.b_STGL1A_merge_dTheta_segment0.push_back(dummy);
+    data.b_STGL1A_merge_phiID_segment0.push_back(dummy);
+    data.b_STGL1A_merge_RIndex_segment0.push_back(dummy);
+  
+    data.b_STGL1A_merge_BCID.push_back(dummy);
+    data.b_STGL1A_merge_sectorID.push_back(dummy);
+   
+     for (unsigned int i_merge = 0; i_merge < segment_packets.size(); i_merge++)
+     {
+       auto packet = segment_packets.at(i_merge);
+       data.b_STGL1A_merge_LUT_choiceSelection.back().push_back(packet->LUT_ChoiceSelection());
+       data.b_STGL1A_merge_nsw_segmentSelector.back().push_back(packet->NSW_SegmentSelector());
+       data.b_STGL1A_merge_valid_segmentSelector.back().push_back(packet->ValidSegmentSelector()); 
+       data.b_STGL1A_merge_monitor_segment7.back().push_back(packet->Monitor_Segment7());
+
+       data.b_STGL1A_merge_spare_segment7.back().push_back(packet->Spare_Segment7());
+       data.b_STGL1A_merge_lowRes_segment7.back().push_back(packet->LowRes_Segment7());
+       data.b_STGL1A_merge_phiRes_segment7.back().push_back(packet->PhiRes_Segment7());
+       data.b_STGL1A_merge_dTheta_segment7.back().push_back(packet->DTheta_Segment7());
+       data.b_STGL1A_merge_phiID_segment7.back().push_back(packet->DTheta_Segment7());
+       data.b_STGL1A_merge_phiID_segment7.back().push_back(packet->PhiID_Segment7());
+       data.b_STGL1A_merge_RIndex_segment7.back().push_back(packet->RIndex_Segment7());
+
+       data.b_STGL1A_merge_spare_segment6.back().push_back(packet->Spare_Segment6());
+       data.b_STGL1A_merge_lowRes_segment6.back().push_back(packet->LowRes_Segment6());
+       data.b_STGL1A_merge_phiRes_segment6.back().push_back(packet->PhiRes_Segment6());
+       data.b_STGL1A_merge_dTheta_segment6.back().push_back(packet->DTheta_Segment6());
+       data.b_STGL1A_merge_phiID_segment6.back().push_back(packet->DTheta_Segment6());
+       data.b_STGL1A_merge_phiID_segment6.back().push_back(packet->PhiID_Segment6());
+       data.b_STGL1A_merge_RIndex_segment6.back().push_back(packet->RIndex_Segment6());
+
+       data.b_STGL1A_merge_spare_segment5.back().push_back(packet->Spare_Segment5());
+       data.b_STGL1A_merge_lowRes_segment5.back().push_back(packet->LowRes_Segment5());
+       data.b_STGL1A_merge_phiRes_segment5.back().push_back(packet->PhiRes_Segment5());
+       data.b_STGL1A_merge_dTheta_segment5.back().push_back(packet->DTheta_Segment5());
+       data.b_STGL1A_merge_phiID_segment5.back().push_back(packet->DTheta_Segment5());
+       data.b_STGL1A_merge_phiID_segment5.back().push_back(packet->PhiID_Segment5());
+       data.b_STGL1A_merge_RIndex_segment5.back().push_back(packet->RIndex_Segment5());
+
+       data.b_STGL1A_merge_spare_segment4.back().push_back(packet->Spare_Segment4());
+       data.b_STGL1A_merge_lowRes_segment4.back().push_back(packet->LowRes_Segment4());
+       data.b_STGL1A_merge_phiRes_segment4.back().push_back(packet->PhiRes_Segment4());
+       data.b_STGL1A_merge_dTheta_segment4.back().push_back(packet->DTheta_Segment4());
+       data.b_STGL1A_merge_phiID_segment4.back().push_back(packet->DTheta_Segment4());
+       data.b_STGL1A_merge_phiID_segment4.back().push_back(packet->PhiID_Segment4());
+       data.b_STGL1A_merge_RIndex_segment4.back().push_back(packet->RIndex_Segment4());
+
+       data.b_STGL1A_merge_spare_segment3.back().push_back(packet->Spare_Segment3());
+       data.b_STGL1A_merge_lowRes_segment3.back().push_back(packet->LowRes_Segment3());
+       data.b_STGL1A_merge_phiRes_segment3.back().push_back(packet->PhiRes_Segment3());
+       data.b_STGL1A_merge_dTheta_segment3.back().push_back(packet->DTheta_Segment3());
+       data.b_STGL1A_merge_phiID_segment3.back().push_back(packet->DTheta_Segment3());
+       data.b_STGL1A_merge_phiID_segment3.back().push_back(packet->PhiID_Segment3());
+       data.b_STGL1A_merge_RIndex_segment3.back().push_back(packet->RIndex_Segment3());
+
+       data.b_STGL1A_merge_spare_segment2.back().push_back(packet->Spare_Segment2());
+       data.b_STGL1A_merge_lowRes_segment2.back().push_back(packet->LowRes_Segment2());
+       data.b_STGL1A_merge_phiRes_segment2.back().push_back(packet->PhiRes_Segment2());
+       data.b_STGL1A_merge_dTheta_segment2.back().push_back(packet->DTheta_Segment2());
+       data.b_STGL1A_merge_phiID_segment2.back().push_back(packet->DTheta_Segment2());
+       data.b_STGL1A_merge_phiID_segment2.back().push_back(packet->PhiID_Segment2());
+       data.b_STGL1A_merge_RIndex_segment2.back().push_back(packet->RIndex_Segment2());
+
+       data.b_STGL1A_merge_spare_segment1.back().push_back(packet->Spare_Segment1());
+       data.b_STGL1A_merge_lowRes_segment1.back().push_back(packet->LowRes_Segment1());
+       data.b_STGL1A_merge_phiRes_segment1.back().push_back(packet->PhiRes_Segment1());
+       data.b_STGL1A_merge_dTheta_segment1.back().push_back(packet->DTheta_Segment1());
+       data.b_STGL1A_merge_phiID_segment1.back().push_back(packet->DTheta_Segment1());
+       data.b_STGL1A_merge_phiID_segment1.back().push_back(packet->PhiID_Segment1());
+       data.b_STGL1A_merge_RIndex_segment1.back().push_back(packet->RIndex_Segment1());
+
+       data.b_STGL1A_merge_spare_segment0.back().push_back(packet->Spare_Segment0());
+       data.b_STGL1A_merge_lowRes_segment0.back().push_back(packet->LowRes_Segment0());
+       data.b_STGL1A_merge_phiRes_segment0.back().push_back(packet->PhiRes_Segment0());
+       data.b_STGL1A_merge_dTheta_segment0.back().push_back(packet->DTheta_Segment0());
+       data.b_STGL1A_merge_phiID_segment0.back().push_back(packet->DTheta_Segment0());
+       data.b_STGL1A_merge_phiID_segment0.back().push_back(packet->PhiID_Segment0());
+       data.b_STGL1A_merge_RIndex_segment0.back().push_back(packet->RIndex_Segment0());
+
+       data.b_STGL1A_merge_BCID.back().push_back(packet->BCID());
+       data.b_STGL1A_merge_sectorID.back().push_back(packet->SectorID());
+
+  
+   }
+  }
+  } 
   return 0;
 
 }
diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/MdtCondDbData.h b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/MdtCondDbData.h
index d20c494a9e56f9e3aff4f77a2f1ada8c47a28ed0..dd852554771b03bdd98762a0b10dd2e8af2bff01 100644
--- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/MdtCondDbData.h
+++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/MuonCondData/MdtCondDbData.h
@@ -1,13 +1,12 @@
 /*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef MUONCONDDATA_MDTCONDDBDATA_H
 #define MUONCONDDATA_MDTCONDDBDATA_H
 
 //STL includes
-#include <string>
-#include <vector>
+#include <set>
 
 //Athena includes
 #include "AthenaKernel/CondCont.h" 
@@ -41,29 +40,29 @@ public:
     void setNoisyStation   (Identifier);
     void setNoisyChamber   (Identifier);
    
-    const std::vector<std::string>& getDeadTubes      () const;
-    const std::vector<std::string>& getDeadLayers     () const;
-    const std::vector<std::string>& getDeadMultilayers() const;
-    const std::vector<std::string>& getDeadStations   () const;
-    const std::vector<std::string>& getDeadChambers   () const;
+    const std::set<std::string>& getDeadTubes      () const;
+    const std::set<std::string>& getDeadLayers     () const;
+    const std::set<std::string>& getDeadMultilayers() const;
+    const std::set<std::string>& getDeadStations   () const;
+    const std::set<std::string>& getDeadChambers   () const;
     
-    const std::vector<Identifier>& getDeadTubesId      () const;
-    const std::vector<Identifier>& getDeadLayersId     () const;
-    const std::vector<Identifier>& getDeadMultilayersId() const;
-    const std::vector<Identifier>& getDeadStationsId   () const;
-    const std::vector<Identifier>& getDeadChambersId   () const;
-
-    const std::vector<std::string>& getNoisyTubes      () const;
-    const std::vector<std::string>& getNoisyLayers     () const;
-    const std::vector<std::string>& getNoisyMultilayers() const;
-    const std::vector<std::string>& getNoisyStations   () const;
-    const std::vector<std::string>& getNoisyChambers   () const;
+    const std::set<Identifier>& getDeadTubesId      () const;
+    const std::set<Identifier>& getDeadLayersId     () const;
+    const std::set<Identifier>& getDeadMultilayersId() const;
+    const std::set<Identifier>& getDeadStationsId   () const;
+    const std::set<Identifier>& getDeadChambersId   () const;
+
+    const std::set<std::string>& getNoisyTubes      () const;
+    const std::set<std::string>& getNoisyLayers     () const;
+    const std::set<std::string>& getNoisyMultilayers() const;
+    const std::set<std::string>& getNoisyStations   () const;
+    const std::set<std::string>& getNoisyChambers   () const;
     
-    const std::vector<Identifier>& getNoisyTubesId      () const;
-    const std::vector<Identifier>& getNoisyLayersId     () const;
-    const std::vector<Identifier>& getNoisyMultilayersId() const;
-    const std::vector<Identifier>& getNoisyStationsId   () const;
-    const std::vector<Identifier>& getNoisyChambersId   () const;
+    const std::set<Identifier>& getNoisyTubesId      () const;
+    const std::set<Identifier>& getNoisyLayersId     () const;
+    const std::set<Identifier>& getNoisyMultilayersId() const;
+    const std::set<Identifier>& getNoisyStationsId   () const;
+    const std::set<Identifier>& getNoisyChambersId   () const;
   
     /// Returns if the identifier (tube/multiLayer/chamber) is masked
     /// in the conditions database
@@ -80,36 +79,33 @@ public:
     bool isGoodStation   (const Identifier & Id) const;
     ///  Returns true if the complete chamber has not dead channels
     bool isGoodChamber   (const Identifier & Id) const;
-    
-    /// Alias of isGood (to be removed in a future MR)
-    bool isGoodChannel   (const MdtIdHelper *, const Identifier & Id) const;
-
+   
  
 private:
 
-    std::vector<std::string> m_cachedDeadTubes{};
-    std::vector<std::string> m_cachedDeadLayers{};
-    std::vector<std::string> m_cachedDeadMultilayers{};
-    std::vector<std::string> m_cachedDeadStations{};
-    std::vector<std::string> m_cachedDeadChambers{};
-
-    std::vector<Identifier> m_cachedDeadTubesId{};
-    std::vector<Identifier> m_cachedDeadLayersId{};
-    std::vector<Identifier> m_cachedDeadMultilayersId{};
-    std::vector<Identifier> m_cachedDeadStationsId{};
-    std::vector<Identifier> m_cachedDeadChambersId{};
+    std::set<std::string> m_cachedDeadTubes{};
+    std::set<std::string> m_cachedDeadLayers{};
+    std::set<std::string> m_cachedDeadMultilayers{};
+    std::set<std::string> m_cachedDeadStations{};
+    std::set<std::string> m_cachedDeadChambers{};
+
+    std::set<Identifier> m_cachedDeadTubesId{};
+    std::set<Identifier> m_cachedDeadLayersId{};
+    std::set<Identifier> m_cachedDeadMultilayersId{};
+    std::set<Identifier> m_cachedDeadStationsId{};
+    std::set<Identifier> m_cachedDeadChambersId{};
  
-    std::vector<std::string> m_cachedNoisyTubes{};
-    std::vector<std::string> m_cachedNoisyLayers{};
-    std::vector<std::string> m_cachedNoisyMultilayers{};
-    std::vector<std::string> m_cachedNoisyStations{};
-    std::vector<std::string> m_cachedNoisyChambers{};
-
-    std::vector<Identifier> m_cachedNoisyTubesId{};
-    std::vector<Identifier> m_cachedNoisyLayersId{};
-    std::vector<Identifier> m_cachedNoisyMultilayersId{};
-    std::vector<Identifier> m_cachedNoisyStationsId{};
-    std::vector<Identifier> m_cachedNoisyChambersId{};
+    std::set<std::string> m_cachedNoisyTubes{};
+    std::set<std::string> m_cachedNoisyLayers{};
+    std::set<std::string> m_cachedNoisyMultilayers{};
+    std::set<std::string> m_cachedNoisyStations{};
+    std::set<std::string> m_cachedNoisyChambers{};
+
+    std::set<Identifier> m_cachedNoisyTubesId{};
+    std::set<Identifier> m_cachedNoisyLayersId{};
+    std::set<Identifier> m_cachedNoisyMultilayersId{};
+    std::set<Identifier> m_cachedNoisyStationsId{};
+    std::set<Identifier> m_cachedNoisyChambersId{};
 
     const  MdtIdHelper& m_id_helper;   
 
diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/MdtCondDbData.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/MdtCondDbData.cxx
index f49c4122dd5faff36f544a5074b2a05ec656fdc0..f2bb627f7a0fc72efcedd63f158723fd5d0b002e 100644
--- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/MdtCondDbData.cxx
+++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondData/src/MdtCondDbData.cxx
@@ -11,75 +11,65 @@ MdtCondDbData::MdtCondDbData(const MdtIdHelper& id_helper):
 // setDeadTube
 void
 MdtCondDbData::setDeadTube(std::string_view id_name, Identifier Id){
-    if(std::find(m_cachedDeadTubesId.begin(), m_cachedDeadTubesId.end(), Id)!=m_cachedDeadTubesId.end()) return;
-    m_cachedDeadTubes  .push_back(std::string(id_name));
-    m_cachedDeadTubesId.push_back(Id  );
+    m_cachedDeadTubes  .emplace(std::string(id_name));
+    m_cachedDeadTubesId.insert(Id  );
 }
 
 // setDeadLayer
 void
 MdtCondDbData::setDeadLayer(std::string_view id_name, Identifier Id){
-    if(std::find(m_cachedDeadLayersId.begin(), m_cachedDeadLayersId.end(), Id)!=m_cachedDeadLayersId.end()) return;
-    m_cachedDeadLayers  .push_back(std::string(id_name));
-    m_cachedDeadLayersId.push_back(Id  );
+    m_cachedDeadLayers  .emplace(id_name);
+    m_cachedDeadLayersId.insert(Id  );
 }
 
 // setDeadMultilayer
 void
 MdtCondDbData::setDeadMultilayer(std::string_view id_name, Identifier Id){
-    if(std::find(m_cachedDeadMultilayersId.begin(), m_cachedDeadMultilayersId.end(), Id)!=m_cachedDeadMultilayersId.end()) return;
-    m_cachedDeadMultilayers  .push_back(std::string(id_name));
-    m_cachedDeadMultilayersId.push_back(Id  );
+    m_cachedDeadMultilayers  .emplace(id_name);
+    m_cachedDeadMultilayersId.insert(Id  );
 }
 
 // setDeadStation (= a chamber dead by itself)
 void
 MdtCondDbData::setDeadStation(std::string_view id_name, Identifier Id){
-    if(std::find(m_cachedDeadStationsId.begin(), m_cachedDeadStationsId.end(), Id)!=m_cachedDeadStationsId.end()) return;
-    m_cachedDeadStations  .push_back(std::string(id_name));
-    m_cachedDeadStationsId.push_back(Id  );
+    m_cachedDeadStations  .emplace(id_name);
+    m_cachedDeadStationsId.insert(Id  );
 }
 
 // setDeadChamber (= a chamber with dead channels)
 void
 MdtCondDbData::setDeadChamber(Identifier Id){
-    if(std::find(m_cachedDeadChambersId.begin(), m_cachedDeadChambersId.end(), Id)!=m_cachedDeadChambersId.end()) return;
-    m_cachedDeadChambersId.push_back(Id  );
+    m_cachedDeadChambersId.insert(Id  );
 }
 
 // setNoisyTube
 void
 MdtCondDbData::setNoisyTube(Identifier Id){
-    if(std::find(m_cachedNoisyTubesId.begin(), m_cachedNoisyTubesId.end(), Id)!=m_cachedNoisyTubesId.end()) return;
-    m_cachedNoisyTubesId.push_back(Id  );
+    m_cachedNoisyTubesId.insert(Id  );
 }
 
 // setNoisyLayer
 void
 MdtCondDbData::setNoisyLayer(Identifier Id){
-    if(std::find(m_cachedNoisyLayersId.begin(), m_cachedNoisyLayersId.end(), Id)!=m_cachedNoisyLayersId.end()) return;
-    m_cachedNoisyLayersId.push_back(Id  );
+    m_cachedNoisyLayersId.insert(Id  );
 }
 
 // setNoisyMultilayer
 void
 MdtCondDbData::setNoisyMultilayer(Identifier Id){
-    if(std::find(m_cachedNoisyMultilayersId.begin(), m_cachedNoisyMultilayersId.end(), Id)!=m_cachedNoisyMultilayersId.end()) return;
-    m_cachedNoisyMultilayersId.push_back(Id  );
+    m_cachedNoisyMultilayersId.insert(Id  );
 }
 
 // setNoisyStation
 void
 MdtCondDbData::setNoisyStation(Identifier Id){
-    if(std::find(m_cachedNoisyStationsId.begin(), m_cachedNoisyStationsId.end(), Id)!=m_cachedNoisyStationsId.end()) return;
-    m_cachedNoisyStationsId.push_back(Id  );
+    m_cachedNoisyStationsId.insert(Id  );
 }
 
 // setNoisyChamber
 void
 MdtCondDbData::setNoisyChamber(Identifier Id){
-    if(std::find(m_cachedNoisyChambersId.begin(), m_cachedNoisyChambersId.end(), Id)!=m_cachedNoisyChambersId.end()) return;
-    m_cachedNoisyChambersId.push_back(Id  );
+    m_cachedNoisyChambersId.insert(Id  );
 }
 
 
@@ -88,35 +78,35 @@ MdtCondDbData::setNoisyChamber(Identifier Id){
 
 // --- reading identifiers -------
 
-const std::vector<std::string>& MdtCondDbData::getDeadTubes() const{return m_cachedDeadTubes;}
-const std::vector<std::string>& MdtCondDbData::getDeadLayers() const{return m_cachedDeadLayers;}
-const std::vector<std::string>& MdtCondDbData::getDeadMultilayers() const{ return m_cachedDeadMultilayers;}
-const std::vector<std::string>& MdtCondDbData::getDeadStations() const{ return m_cachedDeadStations;}
-const std::vector<std::string>& MdtCondDbData::getDeadChambers() const{return m_cachedDeadChambers;}
+const std::set<std::string>& MdtCondDbData::getDeadTubes() const{return m_cachedDeadTubes;}
+const std::set<std::string>& MdtCondDbData::getDeadLayers() const{return m_cachedDeadLayers;}
+const std::set<std::string>& MdtCondDbData::getDeadMultilayers() const{ return m_cachedDeadMultilayers;}
+const std::set<std::string>& MdtCondDbData::getDeadStations() const{ return m_cachedDeadStations;}
+const std::set<std::string>& MdtCondDbData::getDeadChambers() const{return m_cachedDeadChambers;}
 
 
 
-const std::vector<Identifier>& MdtCondDbData::getDeadTubesId() const{ return m_cachedDeadTubesId;}
-const std::vector<Identifier>& MdtCondDbData::getDeadLayersId() const{ return m_cachedDeadLayersId; }
-const std::vector<Identifier>& MdtCondDbData::getDeadMultilayersId() const{ return m_cachedDeadMultilayersId;}
-const std::vector<Identifier>& MdtCondDbData::getDeadStationsId() const{ return m_cachedDeadStationsId;}
-const std::vector<Identifier>& MdtCondDbData::getDeadChambersId() const{ return m_cachedDeadChambersId;}
+const std::set<Identifier>& MdtCondDbData::getDeadTubesId() const{ return m_cachedDeadTubesId;}
+const std::set<Identifier>& MdtCondDbData::getDeadLayersId() const{ return m_cachedDeadLayersId; }
+const std::set<Identifier>& MdtCondDbData::getDeadMultilayersId() const{ return m_cachedDeadMultilayersId;}
+const std::set<Identifier>& MdtCondDbData::getDeadStationsId() const{ return m_cachedDeadStationsId;}
+const std::set<Identifier>& MdtCondDbData::getDeadChambersId() const{ return m_cachedDeadChambersId;}
 
 
 
-const std::vector<std::string>& MdtCondDbData::getNoisyTubes() const{ return m_cachedNoisyTubes;}
-const std::vector<std::string>& MdtCondDbData::getNoisyLayers() const{ return m_cachedNoisyLayers;}
-const std::vector<std::string>& MdtCondDbData::getNoisyMultilayers() const{return m_cachedNoisyMultilayers;}
-const std::vector<std::string>& MdtCondDbData::getNoisyStations() const{ return m_cachedNoisyStations;}
-const std::vector<std::string>& MdtCondDbData::getNoisyChambers() const{ return m_cachedNoisyChambers;}
+const std::set<std::string>& MdtCondDbData::getNoisyTubes() const{ return m_cachedNoisyTubes;}
+const std::set<std::string>& MdtCondDbData::getNoisyLayers() const{ return m_cachedNoisyLayers;}
+const std::set<std::string>& MdtCondDbData::getNoisyMultilayers() const{return m_cachedNoisyMultilayers;}
+const std::set<std::string>& MdtCondDbData::getNoisyStations() const{ return m_cachedNoisyStations;}
+const std::set<std::string>& MdtCondDbData::getNoisyChambers() const{ return m_cachedNoisyChambers;}
 
 
 
-const std::vector<Identifier>& MdtCondDbData::getNoisyTubesId() const{ return m_cachedNoisyTubesId;}
-const std::vector<Identifier>& MdtCondDbData::getNoisyLayersId() const{return m_cachedNoisyLayersId;}
-const std::vector<Identifier>& MdtCondDbData::getNoisyMultilayersId() const{return m_cachedNoisyMultilayersId;}
-const std::vector<Identifier>& MdtCondDbData::getNoisyStationsId() const{ return m_cachedNoisyStationsId;}
-const std::vector<Identifier>& MdtCondDbData::getNoisyChambersId() const{return m_cachedNoisyChambersId;}
+const std::set<Identifier>& MdtCondDbData::getNoisyTubesId() const{ return m_cachedNoisyTubesId;}
+const std::set<Identifier>& MdtCondDbData::getNoisyLayersId() const{return m_cachedNoisyLayersId;}
+const std::set<Identifier>& MdtCondDbData::getNoisyMultilayersId() const{return m_cachedNoisyMultilayersId;}
+const std::set<Identifier>& MdtCondDbData::getNoisyStationsId() const{ return m_cachedNoisyStationsId;}
+const std::set<Identifier>& MdtCondDbData::getNoisyChambersId() const{return m_cachedNoisyChambersId;}
 
 
 
@@ -127,35 +117,26 @@ MdtCondDbData::isGood(const Identifier & Id) const{
     // probing id in all lists
     const Identifier multilayerId = m_id_helper.multilayerID(Id); 
     const Identifier chamberId    = m_id_helper.elementID   (Id); 
-    if(not isGoodStation   (chamberId   )) return false;
-    if(not isGoodMultilayer(multilayerId)) return false;
-    if(not isGoodTube      (Id          )) return false;
+    if(!isGoodStation   (chamberId   )) return false;
+    if(!isGoodMultilayer(multilayerId)) return false;
+    if(!isGoodTube      (Id          )) return false;
     return true;
 }
-bool MdtCondDbData::isGoodChannel(const MdtIdHelper* , const Identifier & Id) const{ return isGood(Id);}
 
 bool MdtCondDbData::isGoodTube(const Identifier & Id) const{
-    if(m_cachedDeadTubesId.empty()) return true;
-    bool found = std::find(m_cachedDeadTubesId.begin(), m_cachedDeadTubesId.end(), Id)!=m_cachedDeadTubesId.end();
-    return !found;
+    return !m_cachedDeadTubesId.count(Id);
 } 
 
 bool MdtCondDbData::isGoodLayer(const Identifier & Id) const{
-    if(m_cachedDeadLayersId.empty()) return true;
-    bool found = std::find(m_cachedDeadLayersId.begin(), m_cachedDeadLayersId.end(), Id)!=m_cachedDeadLayersId.end();
-    return !found;
+    return !m_cachedDeadLayersId.count(Id);
 } 
 
 bool MdtCondDbData::isGoodMultilayer(const Identifier & Id) const{
-    if(m_cachedDeadMultilayersId.empty()) return true;
-    bool found = std::find(m_cachedDeadMultilayersId.begin(), m_cachedDeadMultilayersId.end(), Id)!=m_cachedDeadMultilayersId.end();
-    return !found;
+    return !m_cachedDeadMultilayersId.count(Id);
 } 
 
 bool MdtCondDbData::isGoodStation(const Identifier & Id) const{
-    if(m_cachedDeadStationsId.empty()) return true;
-    bool found = std::find(m_cachedDeadStationsId.begin(), m_cachedDeadStationsId.end(), Id)!=m_cachedDeadStationsId.end();
-    return !found;
+    return !m_cachedDeadStationsId.count(Id);
 } 
 
 // isGoodChamber
@@ -164,9 +145,7 @@ bool MdtCondDbData::isGoodStation(const Identifier & Id) const{
 /// latter, you need to use isGoodStation.
 bool
 MdtCondDbData::isGoodChamber(const Identifier & Id) const{
-    if(m_cachedDeadChambersId.empty()) return true;
-    bool found = std::find(m_cachedDeadChambersId.begin(), m_cachedDeadChambersId.end(), Id)!=m_cachedDeadChambersId.end();
-    return !found;
+    return !m_cachedDeadChambersId.count(Id);
 } 
 
 
diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlg.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlg.cxx
deleted file mode 100644
index a467ca4aab816a30e32b6d56f3742a6057aaaeb8..0000000000000000000000000000000000000000
--- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlg.cxx
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
-*/
-
-#include "MDTConditionsTestAlg.h"
-
-#include "MuonCondSvc/MuonHierarchy.h"
-
-// Gaudi includes
-#include "GaudiKernel/StatusCode.h"
-
-// Athena includes
-#include "Identifier/Identifier.h"
-
-MDTConditionsTestAlg::MDTConditionsTestAlg(const std::string& name, ISvcLocator* pSvcLocator) :
-    AthAlgorithm(name, pSvcLocator), m_pSummarySvc("MDTCondSummarySvc", name) {}
-
-MDTConditionsTestAlg::~MDTConditionsTestAlg() = default;
-// Initialize
-StatusCode MDTConditionsTestAlg::initialize() {
-    StatusCode sc(StatusCode::SUCCESS);
-    msg(MSG::INFO) << "Calling initialize" << endmsg;
-    sc = m_pSummarySvc.retrieve();
-
-    if (StatusCode::SUCCESS not_eq sc) { msg(MSG::ERROR) << "Could not retrieve the summary service" << endmsg; }
-
-    return sc;
-}
-
-// Execute
-StatusCode MDTConditionsTestAlg::execute() {
-    StatusCode sc(StatusCode::SUCCESS);
-
-    msg(MSG::INFO) << "Calling execute" << endmsg;
-    msg(MSG::INFO) << "Dummy call for the MDT STATUS" << endmsg;
-    msg(MSG::INFO) << "THE CHAMBER SWITCHED OFF ARE: " << endmsg;
-    m_pSummarySvc->deadStations();
-    int size = m_pSummarySvc->deadStations().size();
-    msg(MSG::INFO) << "writing from Algo SERVICE \n" << size << endmsg;
-    for (int k = 0; k < size; k++) {
-        std::string chamber = (m_pSummarySvc->deadStations()[k]);
-        msg(MSG::INFO) << "writing from Algo SERVICE CHAMBER \n" << chamber << endmsg;
-    }
-
-    std::cout << "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$4" << std::endl;
-    if (m_pSummarySvc->isGoodChamber(Identifier(1699348480)))
-        msg(MSG::VERBOSE) << "The chamber is good\n" << endmsg;
-    else
-        msg(MSG::INFO) << "The chamber is not good\n" << endmsg;
-    int size_id = m_pSummarySvc->deadStationsId().size();
-    msg(MSG::INFO) << "writing from Algo SERVICE Identifier\n" << size_id << endmsg;
-    for (int k = 0; k < size_id; k++) {
-        Identifier Id = (m_pSummarySvc->deadStationsId()[k]);
-        msg(MSG::INFO) << "writing from Algo SERVICE CHAMBER \n" << Id << endmsg;
-    }
-    std::cout << "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$4" << std::endl;
-
-    int size_id2 = m_pSummarySvc->deadMultiLayersId().size();
-    msg(MSG::INFO) << "writing from Algo SERVICE Identifier\n" << size_id2 << endmsg;
-    for (int k = 0; k < size_id2; k++) {
-        Identifier Id = (m_pSummarySvc->deadMultiLayersId()[k]);
-        msg(MSG::INFO) << "writing from Algo SERVICE MULTILAYERS \n" << Id << endmsg;
-    }
-
-    std::cout << "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$4" << std::endl;
-    m_pSummarySvc->deadTubes();
-    int size2 = m_pSummarySvc->deadTubes().size();
-    msg(MSG::INFO) << "writing from Algo SERVICE TUBES\n" << size2 << endmsg;
-    std::cout << "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$4" << std::endl;
-
-    m_pSummarySvc->deadTubesId();
-    int size2id = m_pSummarySvc->deadTubesId().size();
-    msg(MSG::INFO) << "writing from Algo SERVICE TUBES\n" << size2id << endmsg;
-    std::cout << "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$4" << std::endl;
-    return sc;
-}
diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlg.h b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlg.h
deleted file mode 100644
index b75ae8b3efa66b0b13baf84323d1f955d649c5a8..0000000000000000000000000000000000000000
--- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlg.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
-*/
-
-#ifndef MDTConditionsTestAlg_H
-#define MDTConditionsTestAlg_H
-// STL
-#include <string>
-
-// Gaudi
-#include "AthenaBaseComps/AthAlgorithm.h"
-#include "GaudiKernel/ServiceHandle.h"
-
-// Athena
-
-//#include "MuonCondInterface/IMuonConditionsSvc.h"
-#include "MuonCondInterface/IMDTConditionsSvc.h"
-
-// Forward declarations
-class ISvcLocator;
-class StatusCode;
-
-/// Example class to show calling the SCT_ConditionsSummarySvc
-class MDTConditionsTestAlg : public AthAlgorithm {
-public:
-    MDTConditionsTestAlg(const std::string &name, ISvcLocator *pSvcLocator);
-    ~MDTConditionsTestAlg();
-
-    StatusCode initialize() override;
-    StatusCode execute() override;
-
-private:
-    ServiceHandle<IMDTConditionsSvc> m_pSummarySvc;
-};  // end of class
-
-#endif
diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlgMT.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlgMT.cxx
index a77740410c4cb47cca12319231df6695264bf552..7e4e17f4c2119eb1968cd916cce3b5da76408562 100644
--- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlgMT.cxx
+++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlgMT.cxx
@@ -14,62 +14,62 @@ MDTConditionsTestAlgMT::~MDTConditionsTestAlgMT() = default;
 StatusCode MDTConditionsTestAlgMT::initialize() {
     ATH_MSG_INFO("Calling initialize");
     ATH_CHECK(m_readKey.initialize());
+    ATH_CHECK(m_idHelperSvc.retrieve());
     return StatusCode::SUCCESS;
 }
 
 // Execute
-StatusCode MDTConditionsTestAlgMT::execute() {
-    StatusCode sc(StatusCode::SUCCESS);
+StatusCode MDTConditionsTestAlgMT::execute() {   
 
     ATH_MSG_INFO("Calling execute");
-    std::stringstream ss;
-    ss << "Now setting up read handle: ";
+   
     SG::ReadCondHandle<MdtCondDbData> readHandle{m_readKey};
     const MdtCondDbData* readCdo{*readHandle};
-    if (readCdo == nullptr) {
-        ss << "DID NOT WORK!";
-        ATH_MSG_INFO(ss.str());
+    if (!readCdo) {
         ATH_MSG_ERROR("Null pointer to the read conditions object");
         return StatusCode::FAILURE;
     } else {
-        ss << "WORKED!";
-        ATH_MSG_INFO(ss.str());
+       ATH_MSG_INFO("Loaded successfully the dead channel data");
     }
 
-    ss.clear();
-    ss << "Reading Dead Tubes: ";
-    int size = readCdo->getDeadTubesId().size();
-    ss << "found " << size << " via Id; containing:";
-    ATH_MSG_INFO(ss.str());
-    for (int k = 0; k < size; ++k) { ATH_MSG_INFO("\t" << k << ": " << readCdo->getDeadTubes()[k]); }
-
-    ss.clear();
-    ss << "Reading Dead Layers: ";
-    size = readCdo->getDeadLayersId().size();
-    ss << "found " << size << " via Id; containing:";
-    ATH_MSG_INFO(ss.str());
-    for (int k = 0; k < size; ++k) { ATH_MSG_INFO("\t" << k << ": " << readCdo->getDeadLayers()[k]); }
-
-    ss.clear();
-    ss << "Reading Dead Multilayers: ";
-    size = readCdo->getDeadMultilayersId().size();
-    ss << "found " << size << " via Id; containing:";
-    ATH_MSG_INFO(ss.str());
-    for (int k = 0; k < size; ++k) { ATH_MSG_INFO("\t" << k << ": " << readCdo->getDeadMultilayers()[k]); }
+    {
+        std::stringstream sstr{};
+        for (const Identifier& dead_tube : readCdo->getDeadTubesId()) {
+            sstr<<"   **** "<<m_idHelperSvc->toString(dead_tube)<<std::endl;
+        }
+        ATH_MSG_INFO("Found "<<readCdo->getDeadTubes().size()<<" dead tubes"<<std::endl<<sstr.str());
+    }
+    
+    {
+        std::stringstream sstr{};
+        for (const Identifier& dead_lay : readCdo->getDeadLayersId()) {
+            sstr<<"   **** "<<m_idHelperSvc->toString(dead_lay)<<std::endl;
+        }
+        ATH_MSG_INFO("Found "<<readCdo->getDeadLayersId().size()<<" dead layers"<<std::endl<<sstr.str());
+    }
+    {
+        std::stringstream sstr{};
+        for (const Identifier& dead_ml : readCdo->getDeadMultilayersId()) {
+            sstr<<"   **** "<<m_idHelperSvc->toString(dead_ml)<<std::endl;
+        }
+        ATH_MSG_INFO("Found "<<readCdo->getDeadMultilayersId().size()<<" dead multi layers"<<std::endl<<sstr.str());
+    }
 
-    ss.clear();
-    ss << "Reading Dead Stations: ";
-    size = readCdo->getDeadStationsId().size();
-    ss << "found " << size << " via Id; containing:";
-    ATH_MSG_INFO(ss.str());
-    for (int k = 0; k < size; ++k) { ATH_MSG_INFO("\t" << k << ": " << readCdo->getDeadStations()[k]); }
+    {
+        std::stringstream sstr{};
+        for (const Identifier& dead_cham : readCdo->getDeadStationsId()) {
+            sstr<<"   **** "<<m_idHelperSvc->toString(dead_cham)<<std::endl;
+        }
+        ATH_MSG_INFO("Found "<<readCdo->getDeadStationsId().size()<<" dead stations"<<std::endl<<sstr.str());
+    }
+    {
+        std::stringstream sstr{};
+        for (const Identifier& dead_cham : readCdo->getDeadChambersId()) {
+            sstr<<"   **** "<<m_idHelperSvc->toString(dead_cham)<<std::endl;
+        }
+        ATH_MSG_INFO("Found "<<readCdo->getDeadChambersId().size()<<" dead stations"<<std::endl<<sstr.str());
 
-    ss.clear();
-    ss << "Reading Chambers with Dead Channels: ";
-    size = readCdo->getDeadChambersId().size();
-    ss << "found " << size << " via Id; containing:";
-    ATH_MSG_INFO(ss.str());
-    for (int k = 0; k < size; ++k) { ATH_MSG_INFO("\t" << k << ": " << readCdo->getDeadChambersId()[k]); }
+    }
 
     ATH_MSG_INFO("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
 
@@ -77,5 +77,5 @@ StatusCode MDTConditionsTestAlgMT::execute() {
     ATH_MSG_INFO("ID=1699348480; isGood? " << readCdo->isGood(Identifier(1699348480)));
 
     ATH_MSG_INFO("MADE IT TO THE END!!");
-    return sc;
+    return StatusCode::SUCCESS;
 }
diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlgMT.h b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlgMT.h
index fcb0f7b9494d12da273a60282cf760199b5e22cc..1700d68371dda152e7b6aeb2b042a942ec491294 100644
--- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlgMT.h
+++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/MDTConditionsTestAlgMT.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef MDTConditionsTestAlgMT_H
@@ -7,25 +7,17 @@
 
 // STL
 #include <sstream>
-#include <string>
+
 
 // Gaudi
 #include "AthenaBaseComps/AthAlgorithm.h"
-#include "GaudiKernel/ServiceHandle.h"
-#include "GaudiKernel/StatusCode.h"
+#include "MuonIdHelpers/IMuonIdHelperSvc.h"
 
 // Athena
 #include "Identifier/Identifier.h"
 #include "MuonCondData/MdtCondDbData.h"
-#include "MuonCondInterface/IMDTConditionsSvc.h"
-#include "MuonCondSvc/MuonHierarchy.h"
-
-// Forward declarations
-class ISvcLocator;
-class StatusCode;
-class MdtCondDbData;
 
-/// Example class to show calling the SCT_ConditionsSummarySvc
+/// Example class to show calling the MDTConditionsTestAlgMT
 class MDTConditionsTestAlgMT : public AthAlgorithm {
 public:
     MDTConditionsTestAlgMT(const std::string &name, ISvcLocator *pSvcLocator);
@@ -37,6 +29,8 @@ public:
 private:
     SG::ReadCondHandleKey<MdtCondDbData> m_readKey{this, "ReadKey", "MdtCondDbData", "Key of MdtCondDbData"};
 
+    ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc{this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
+
 };  // end of class
 
 #endif
diff --git a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/components/MuonCondTest_entries.cxx b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/components/MuonCondTest_entries.cxx
index dc597b9cd90307bc62de56669e6a4240d6610be2..cab14efb1b0c3614d264210a49d5bb0181734a4e 100644
--- a/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/components/MuonCondTest_entries.cxx
+++ b/MuonSpectrometer/MuonConditions/MuonCondGeneral/MuonCondTest/src/components/MuonCondTest_entries.cxx
@@ -3,7 +3,6 @@
 */
 #include "../AlignCondAthTest.h"
 #include "../CSCConditionsTestAlgMT.h"
-#include "../MDTConditionsTestAlg.h"
 #include "../MDTConditionsTestAlgMT.h"
 #include "../NswCondTestAlg.h"
 #include "../NswPassivationTestAlg.h"
@@ -12,7 +11,6 @@
 #include "../MdtCablMezzAlg.h"
 
 DECLARE_COMPONENT(AlignCondAthTest)
-DECLARE_COMPONENT(MDTConditionsTestAlg)
 DECLARE_COMPONENT(MDTConditionsTestAlgMT)
 DECLARE_COMPONENT(CSCConditionsTestAlgMT)
 DECLARE_COMPONENT(NswCondTestAlg)
diff --git a/MuonSpectrometer/MuonDigitization/MDT_Digitization/MDT_Digitization/MdtDigitizationTool.h b/MuonSpectrometer/MuonDigitization/MDT_Digitization/MDT_Digitization/MdtDigitizationTool.h
index 3ecc7de07f59102586ab9349f3e16a158fe06289..84f70945e83d002ef71ec929e9c326da74689930 100644
--- a/MuonSpectrometer/MuonDigitization/MDT_Digitization/MDT_Digitization/MdtDigitizationTool.h
+++ b/MuonSpectrometer/MuonDigitization/MDT_Digitization/MDT_Digitization/MdtDigitizationTool.h
@@ -220,7 +220,7 @@ private:
     std::vector<maskedStation> m_vMaskedStations;
 
     // list of Identifiers returned by the Conditions Service to mask stations
-    std::vector<Identifier> m_IdentifiersToMask;
+    std::set<Identifier> m_IdentifiersToMask;
 
     // pile-up
     std::unique_ptr<TimedHitCollection<MDTSimHit>> m_thpcMDT{};  // the hits
diff --git a/MuonSpectrometer/MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx b/MuonSpectrometer/MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx
index fd456ffad76bafecc41c77343853128140a7ac16..4cf7e4892c21ed7aa4831ff804b2ba99ee859dab 100644
--- a/MuonSpectrometer/MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx
+++ b/MuonSpectrometer/MuonDigitization/MDT_Digitization/src/MdtDigitizationTool.cxx
@@ -353,15 +353,8 @@ StatusCode MdtDigitizationTool::doDigitization(const EventContext& ctx, Collecti
             ATH_MSG_WARNING(readHandle.fullKey() << " is not available.");
             return StatusCode::FAILURE;
         }
-        m_IdentifiersToMask.clear();
-        int size_id = readCdo->getDeadStationsId().size();
-        ATH_MSG_DEBUG("Number of dead/missing stations retrieved from CondService= " << size_id);
-
-        for (int k = 0; k < size_id; ++k) {
-            Identifier Id = readCdo->getDeadStationsId()[k];
-            m_IdentifiersToMask.push_back(readCdo->getDeadStationsId()[k]);
-            ATH_MSG_VERBOSE("Dead/missing chambers id from CondDB: " << m_idHelperSvc->mdtIdHelper().show_to_string(Id));
-        }
+        m_IdentifiersToMask = readCdo->getDeadStationsId();       
+        ATH_MSG_DEBUG("Number of dead/missing stations retrieved from CondService= " << readCdo->getDeadStationsId().size());
     }
 
     // get the iterator infos for this DetEl
@@ -668,9 +661,8 @@ bool MdtDigitizationTool::checkMDTSimHit(const MDTSimHit& hit) const {
 
     //+MASKING OF DEAD/MISSING CHAMBERS
     if (m_UseDeadChamberSvc) {
-        for (unsigned int i = 0; i < m_IdentifiersToMask.size(); ++i) {
-            Identifier Id = m_IdentifiersToMask[i];
-
+        for (const Identifier& Id : m_IdentifiersToMask) {
+         
             if ((stationName == m_idHelperSvc->mdtIdHelper().stationNameString(m_idHelperSvc->mdtIdHelper().stationName(Id))) &&
                 (stationEta == m_idHelperSvc->mdtIdHelper().stationEta(Id)) &&
                 (stationPhi == m_idHelperSvc->mdtIdHelper().stationPhi(Id))) {
diff --git a/MuonSpectrometer/MuonDigitization/sTGC_Digitization/src/sTgcDigitMaker.cxx b/MuonSpectrometer/MuonDigitization/sTGC_Digitization/src/sTgcDigitMaker.cxx
index 7cedab42ccde319b791fdb3404008a6484e29ddf..8aeefb236c689b92bd5a9b7a90cb82ea3001d93a 100644
--- a/MuonSpectrometer/MuonDigitization/sTGC_Digitization/src/sTgcDigitMaker.cxx
+++ b/MuonSpectrometer/MuonDigitization/sTGC_Digitization/src/sTgcDigitMaker.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "sTGC_Digitization/sTgcDigitMaker.h"
@@ -841,7 +841,7 @@ StatusCode sTgcDigitMaker::readFileOfEffChamber() {
 
   // Find path to the sTGC_Digitization_EffChamber.dat file
   const std::string fileName = "sTGC_Digitization_EffChamber.dat";
-  std::string fileWithPath = PathResolver::find_file(fileName.c_str(), "DATAPATH");
+  std::string fileWithPath = PathResolver::find_file(fileName, "DATAPATH");
   if(fileWithPath.empty()) {
     ATH_MSG_FATAL("readFileOfEffChamber(): Could not find file " << fileName.c_str() );
     return StatusCode::FAILURE;
@@ -936,7 +936,7 @@ int sTgcDigitMaker::getIStationName(const std::string& stationName) const {
 StatusCode sTgcDigitMaker::readFileOfTimeArrival() {
   // Verify the file sTGC_Digitization_timeArrival.dat exists
   const std::string file_name = "sTGC_Digitization_timeArrival.dat";
-  std::string file_path = PathResolver::find_file(file_name.c_str(), "DATAPATH");
+  std::string file_path = PathResolver::find_file(file_name, "DATAPATH");
   if(file_path.empty()) {
     ATH_MSG_FATAL("readFileOfTimeWindowOffset(): Could not find file " << file_name.c_str() );
     return StatusCode::FAILURE;
@@ -1015,7 +1015,7 @@ double sTgcDigitMaker::getMostProbableArrivalTime(double distance) const {
 StatusCode sTgcDigitMaker::readFileOfTimeOffsetStrip() {
   // Verify the file sTGC_Digitization_timeOffsetStrip.dat exists
   const std::string file_name = "sTGC_Digitization_timeOffsetStrip.dat";
-  std::string file_path = PathResolver::find_file(file_name.c_str(), "DATAPATH");
+  std::string file_path = PathResolver::find_file(file_name, "DATAPATH");
   if(file_path.empty()) {
     ATH_MSG_FATAL("readFileOfTimeWindowOffset(): Could not find file " << file_name.c_str() );
     return StatusCode::FAILURE;
diff --git a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectCond/src/MdtIntersectGeometry.cxx b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectCond/src/MdtIntersectGeometry.cxx
index 4686cbc8b4bb74ed5ad532d4f7f51295222d7195..416571ebb7a2a83710508f19898f4db54e27adb2 100755
--- a/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectCond/src/MdtIntersectGeometry.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonRecUtils/MuonStationIntersectCond/src/MdtIntersectGeometry.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 
 #include "MuonStationIntersectCond/MdtIntersectGeometry.h"
@@ -173,7 +173,7 @@ namespace Muon {
         Identifier secondIdml0 = m_idHelperSvc->mdtIdHelper().channelID(name, eta, phi, firstMlIndex, 1, 2);
         Amg::Vector3D secondTubeMl0 = transform() * (m_detElMl0->tubePos(secondIdml0));
 
-        if (m_detElMl0) fillDeadTubes(m_detElMl0, msg);
+                        fillDeadTubes(m_detElMl0, msg);
         if (m_detElMl1) fillDeadTubes(m_detElMl1, msg);
 
         // position first tube in second layer ml 0
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/CMakeLists.txt b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/CMakeLists.txt
index 584652d708a11452ee5be98d824fabff3e4e6c0a..93477481f370069b476fd4b51fc9dd851996840e 100644
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/CMakeLists.txt
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/CMakeLists.txt
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 
 # Declare the package name:
 atlas_subdir( StgcRawDataMonitoring )
@@ -6,9 +6,10 @@ atlas_subdir( StgcRawDataMonitoring )
 # Component(s) in the package:
 atlas_add_component( StgcRawDataMonitoring
    StgcRawDataMonitoring/*.h src/*.cxx src/components/*.cxx
-   LINK_LIBRARIES AthenaMonitoringLib MuonIdHelpersLib MuonPrepRawData StoreGateLib MuonRIO_OnTrack MuonSegment ) 
+   LINK_LIBRARIES AthenaMonitoringLib MuonIdHelpersLib MuonPrepRawData StoreGateLib MuonRIO_OnTrack TrkToolInterfaces TrkParameters) 
 
 # Install files from the package:
 atlas_install_joboptions( share/*.py )
 atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} )
 
+  
\ No newline at end of file
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/StgcRawDataMonitoring/StgcRawDataMonAlg.h b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/StgcRawDataMonitoring/StgcRawDataMonAlg.h
index 7c52f1e55bf432191cda438210841efd1784d5b1..cc416a949fe5c4b5084c132434379a13de10b72f 100644
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/StgcRawDataMonitoring/StgcRawDataMonAlg.h
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/StgcRawDataMonitoring/StgcRawDataMonAlg.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 
 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -25,9 +25,11 @@
 #include "MuonPrepRawData/sTgcPrepData.h"
 #include "MuonReadoutGeometry/MuonDetectorManager.h"
 #include "MuonIdHelpers/sTgcIdHelper.h"
-
 #include "MuonRIO_OnTrack/sTgcClusterOnTrack.h"
-#include "MuonSegment/MuonSegment.h"
+
+#include "TrkToolInterfaces/IResidualPullCalculator.h"
+#include "TrkParameters/TrackParameters.h"
+
 
 // stl includes                                                                                 
 #include <string>
@@ -37,7 +39,7 @@ namespace Muon {
 }
 
 namespace GeometricSectors {
-  static const std::array<std::string, 2> sTgcSide = {"CSide", "ASide"};
+  static const std::array<std::string, 2> sTgcSide = {"C", "A"};
 }
 
 class sTgcRawDataMonAlg: public AthMonitorAlgorithm {
@@ -49,20 +51,17 @@ class sTgcRawDataMonAlg: public AthMonitorAlgorithm {
   virtual StatusCode fillHistograms(const EventContext& ctx) const override;
  private:  
   ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"};
-    
-  void fillsTgcOverviewHistograms(const Muon::sTgcPrepData*, const Muon::MuonPrepDataCollection<Muon::sTgcPrepData> &prd) const;
+  ToolHandle<Trk::IResidualPullCalculator> m_residualPullCalculator {this, "ResPullCalc", "Trk::ResidualPullCalculator/ResidualPullCalculator"};
+  
   void fillsTgcOccupancyHistograms(const Muon::sTgcPrepData*, const MuonGM::MuonDetectorManager*) const;
   void fillsTgcLumiblockHistograms(const Muon::sTgcPrepData*, const int lb) const;
-  void fillsTgcTimingHistograms(const Muon::sTgcPrepData*) const;
-  void fillsTgcClusterFromSegmentsHistograms(const Trk::SegmentCollection*) const;
   void fillsTgcClusterFromTrackHistograms(const xAOD::TrackParticleContainer*) const;
 
   int getSectors(const Identifier& id) const;
   int getLayer(const int multiplet, const int gasGap) const;
   
   SG::ReadHandleKey<Muon::sTgcPrepDataContainer> m_sTgcContainerKey{this,"sTgcPrepDataContainerName", "STGC_Measurements"};
-  SG::ReadCondHandleKey<MuonGM::MuonDetectorManager> m_detectorManagerKey{this, "DetectorManagerKey", "MuonDetectorManager","Key of input MuonDetectorManager condition data"};
-  SG::ReadHandleKey<Trk::SegmentCollection> m_segmentManagerKey{this, "segmentManagerKey", "TrkMuonSegments", "Muon segments"}; 
+  SG::ReadCondHandleKey<MuonGM::MuonDetectorManager> m_detectorManagerKey{this, "DetectorManagerKey", "MuonDetectorManager","Key of input MuonDetectorManager condition data"}; 
   SG::ReadHandleKey<xAOD::TrackParticleContainer> m_meTrkKey{this, "METrkContainer", "ExtrapolatedMuonTrackParticles"};
 
   Gaudi::Property<bool> m_dosTgcESD{this,"dosTgcESD", true};
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/python/StgcMonitorAlgorithm.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/python/StgcMonitorAlgorithm.py
index 764d0c58e6f50b990489af667461395bb96dd813..fbada549cfdcd8bfeae2f714c75ed23738add0c6 100644
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/python/StgcMonitorAlgorithm.py
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/python/StgcMonitorAlgorithm.py
@@ -30,113 +30,122 @@ def sTgcMonitoringConfig(inputFlags):
     sTgcMonAlg = helper.addAlgorithm(CompFactory.sTgcRawDataMonAlg,'sTgcMonAlg')
     sTgcMonAlg.dosTgcESD = True  
 
-    # Add a generic monitoring tool (a "group" in old language). The returned      
-    # object here is the standard GenericMonitoringTool. 
-    sTgcOverviewGroup           = helper.addGroup(sTgcMonAlg, 'sTgcOverview', 'Muon/MuonRawDataMonitoring/sTgc/sTgcOverview')
-    sTgcLayerGroup              = helper.addGroup(sTgcMonAlg, 'sTgcLayers', 'Muon/MuonRawDataMonitoring/sTgc/sTgcLayers')
-    sTgcOccupancyGroup          = helper.addGroup(sTgcMonAlg, 'sTgcOccupancy', 'Muon/MuonRawDataMonitoring/sTgc/sTgcOccupancy')
-    sTgcLumiblockGroup          = helper.addGroup(sTgcMonAlg, 'sTgcLumiblock', 'Muon/MuonRawDataMonitoring/sTgc/sTgcLumiblock')
-    sTgcTimingGroup             = helper.addGroup(sTgcMonAlg, 'sTgcTiming', 'Muon/MuonRawDataMonitoring/sTgc/sTgcTiming')
-    sTgcClusterFromSegmentGroup = helper.addGroup(sTgcMonAlg, 'sTgcClusterFromSegment', 'Muon/MuonRawDataMonitoring/sTgc/sTgcClusterFromSegment')
-    sTgYvsXGroup                = helper.addGroup(sTgcMonAlg, 'sTgcYvsX', 'Muon/MuonRawDataMonitoring/sTgc/sTgcYvsX')
+    #Shifter
+    sTgcOverviewGroup  = helper.addGroup(sTgcMonAlg, 'sTgcOverview', 'Muon/MuonRawDataMonitoring/sTgc/Shifter')
+    sTgcQuadOccupancyGroup     = helper.addGroup(sTgcMonAlg, 'sTgcQuadOccupancy', 'Muon/MuonRawDataMonitoring/sTgc/Shifter/Occupancy')
+    sTgcLumiblockGroup = helper.addGroup(sTgcMonAlg, 'sTgcLumiblock', 'Muon/MuonRawDataMonitoring/sTgc/Shifter/Lumiblock')
+    sTgcTimingGroup = helper.addGroup(sTgcMonAlg, 'sTgcTiming', 'Muon/MuonRawDataMonitoring/sTgc/Shifter/Timing')
     
-    # Configure histograms
-    # Overview histograms
-    sTgcOverviewGroup.defineHistogram('charge;chargeOverview', type = 'TH1F', title = 'charge; charge [fC]; number of entries', path = 'Overview', xbins = 100, xmin = 0., xmax = 1000.)
-    sTgcOverviewGroup.defineHistogram('numberOfStripsPerCluster;numberOfStripsPerCluster', type = 'TH1F', title = 'number of strips per cluster; number of strips per cluster; number of entries', path = 'Overview', xbins = 20, xmin = 0., xmax = 20.)
-    sTgcOverviewGroup.defineHistogram('numberOfStripsPerClusterMuonSegments;numberOfStripsPerClusterMuonSegmentsOverview', type = 'TH1F', title = 'number of strips per cluster (muon segments); number of strips per cluster; number of entries', path = 'Overview', xbins = 20, xmin = 0., xmax = 20.)
-    sTgcOverviewGroup.defineHistogram('time;timeOverview', type = 'TH1F', title = 'time; time [ns]; number of entries', path = 'Overview', xbins = 900, xmin = -200., xmax = 700.) 
-    sTgcOverviewGroup.defineHistogram('stripTimes;stripTimesOverview', type = 'TH1F', title = 'strip time; strip time [ns]; number of entries', path = 'Overview', xbins = 900, xmin = -200., xmax = 700.) 
-    sTgcOverviewGroup.defineHistogram('stripCharges;stripChargesOverview', type = 'TH1F', title = 'strip charge; strip charge [fC]; number of entries', path = 'Overview', xbins = 120, xmin = 0., xmax = 1200.) 
-
-    sTgcOverviewGroup.defineHistogram('stripNumbers;stripNumbersOverview', type = 'TH1F', title = 'strip number; strip number; number of entries', path = 'Overview', xbins = 410, xmin = 0., xmax = 410.) 
-    sTgcOverviewGroup.defineHistogram('x,y;xyOverview', type = 'TH2F', title='y vs x; sTgc-GlobalX [mm]; sTgc-GlobalY [mm]; number of entries', path = 'Overview', xbins = 500, xmin = -5000., xmax = 5000., ybins = 500, ymin = -5000., ymax = 5000.) 
-    sTgcOverviewGroup.defineHistogram('r,z;rzOverview', type = 'TH2F', title = 'z vs R; sTgc-GlobalR [mm]; sTgc-GlobalZ [mm]; number of entries', path = 'Overview', xbins = 500, xmin = 0., xmax = 5000., ybins = 1000, ymin = -10000., ymax = 10000.) 
+    #Expert
+    sTgcOccupancyGroup = helper.addGroup(sTgcMonAlg, 'sTgcOccupancy', 'Muon/MuonRawDataMonitoring/sTgc/Expert/Occupancy')
 
+    
     # Layered and occupancy histograms
-    side          = ['ASide', 'CSide']
+    side          = ['A', 'C']
     stationEtaMax = 3
     sectorMax     = 16
     layerMax      = 8
-        
-    for layerIndex in range(1, layerMax + 1):
-        titlePadOccupancy  = f'layer {layerIndex}; sector; pad number; hits'
-        varPadOccupancy    = f'sector_layer_{layerIndex},padNumber_layer_{layerIndex};padOccupancy_layer_{layerIndex}'
-        weightPadOccupancy = f'padHit_layer_{layerIndex}' 
-        sTgcOccupancyGroup.defineHistogram(varPadOccupancy, type = 'TH2F', title = titlePadOccupancy, path = 'padOccupancy', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 317, ymin = 0., ymax = 317., opt = 'kAlwaysCreate', weight = weightPadOccupancy)
-                        
-        titleStripOccupancy  = f'layer {layerIndex}; sector; strip number; hits'
-        varStripOccupancy    = f'sector_layer_{layerIndex},stripNumber_layer_{layerIndex};stripOccupancy_layer_{layerIndex}'
-        weightStripOccupancy = f'stripHit_layer_{layerIndex}' 
-        sTgcOccupancyGroup.defineHistogram(varStripOccupancy, type = 'TH2F', title = titleStripOccupancy, path = 'stripOccupancy', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 1130, ymin = 0., ymax = 1130., opt = 'kAlwaysCreate', weight = weightStripOccupancy)
-            
-        titleWireGroupOccupancyPerQuad  = f'layer {layerIndex}; wire group number; station eta; hits'
-        varWireGroupOccupancyPerQuad    = f'wireGroupNumber_layer_{layerIndex},stationEta_layer_{layerIndex};wireGroupOccupancyPerQuad_layer_{layerIndex}'
-        weightWireGroupOccupancyPerQuad = f'wireGroupHit_layer_{layerIndex}'
-        sTgcOccupancyGroup.defineHistogram(varWireGroupOccupancyPerQuad, type = 'TH2F', title = titleWireGroupOccupancyPerQuad, path = 'wireGroupOccupancy', xbins = 58*sectorMax, xmin = 0., xmax = float(58*sectorMax), ybins = 2*stationEtaMax + 2, ymin = -float(stationEtaMax + 1), ymax = float(stationEtaMax + 1), opt = 'kAlwaysCreate', weight = weightWireGroupOccupancyPerQuad)
-            
-        titleStationEtaSectorPadHitMap  = f'layer {layerIndex}; sector; station eta; pad hits'
-        varStationEtaSectorPadHitMap    = f'sector_layer_{layerIndex},stationEta_layer_{layerIndex};stationEtaSectorPadHitMap_layer_{layerIndex}'
-        weightStationEtaSectorPadHitMap = f'padHitLayers_layer_{layerIndex}'
-        sTgcLayerGroup.defineHistogram(varStationEtaSectorPadHitMap, type = 'TH2F', title = titleStationEtaSectorPadHitMap, path = 'stationEtaSectorPadHitMap', xbins = sectorMax, xmin = 1., xmax = float(sectorMax + 1), ybins = 2*stationEtaMax + 2, ymin = -float(stationEtaMax + 1), ymax = float(stationEtaMax + 1), opt = 'kAlwaysCreate', weight = weightStationEtaSectorPadHitMap)
+    
+    for stationEtaIndex in range(1, stationEtaMax + 1):
+        sTgcPadTimingExpertGroup = helper.addGroup(sTgcMonAlg, f'padTiming_quad_{stationEtaIndex}', 'Muon/MuonRawDataMonitoring/sTgc/Expert/Timing/Pad')
+        sTgcStripTimingExpertGroup = helper.addGroup(sTgcMonAlg, f'stripTiming_quad_{stationEtaIndex}', 'Muon/MuonRawDataMonitoring/sTgc/Expert/Timing/Strip')
+        sTgcWireTimingExpertGroup = helper.addGroup(sTgcMonAlg, f'wireTiming_quad_{stationEtaIndex}', 'Muon/MuonRawDataMonitoring/sTgc/Expert/Timing/Wire')
+        for layerIndex in range(1, layerMax + 1):
+            titleTimingPadTrack  = f'Q{stationEtaIndex}L{layerIndex}; Sector; Pad Timing (on-track) [ns]; Hits'
+            varTimingPadTrack    = f'padTrackSectorSided_quad_{stationEtaIndex}_layer_{layerIndex},padTrackTiming_quad_{stationEtaIndex}_layer_{layerIndex};All_pad_timing_in_Q{stationEtaIndex}_Layer{layerIndex}'
+            sTgcPadTimingExpertGroup.defineHistogram(varTimingPadTrack, type = 'TH2F', title = titleTimingPadTrack, path = f'Q{stationEtaIndex}', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 200, ymin = -75., ymax = 125., opt = 'kAlwaysCreate')
+
+            titleTimingStripTrack  = f'Q{stationEtaIndex}L{layerIndex}; Sector; Strip Cluster Timing (on-track) [ns]; Hits'
+            varTimingStripTrack    = f'stripTrackSectorSided_quad_{stationEtaIndex}_layer_{layerIndex},stripTrackTiming_quad_{stationEtaIndex}_layer_{layerIndex};All_strip_timing_in_Q{stationEtaIndex}_Layer{layerIndex}'
+            sTgcStripTimingExpertGroup.defineHistogram(varTimingStripTrack, type = 'TH2F', title = titleTimingStripTrack, path = f'Q{stationEtaIndex}', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 200, ymin = -75., ymax = 125., opt = 'kAlwaysCreate')
             
-        titleStationEtaSectorStripHitMap  = f'layer {layerIndex}; sector; station eta; strip hits'
-        varStationEtaSectorStripHitMap    = f'sector_layer_{layerIndex},stationEta_layer_{layerIndex};stationEtaSectorStripHitMap_layer_{layerIndex}'
-        weightStationEtaSectorStripHitMap = f'stripHitLayers_layer_{layerIndex}'
-        sTgcLayerGroup.defineHistogram(varStationEtaSectorStripHitMap, type = 'TH2F', title = titleStationEtaSectorStripHitMap, path = 'stationEtaSectorStripHitMap', xbins = sectorMax, xmin = 1., xmax = float(sectorMax + 1), ybins = 2*stationEtaMax + 2, ymin = -float(stationEtaMax + 1), ymax = float(stationEtaMax + 1), opt = 'kAlwaysCreate', weight = weightStationEtaSectorStripHitMap)
-
-        titleStationEtaSectorWireGroupHitMap  = f'layer {layerIndex}; sector; station eta; wire group hits'
-        varStationEtaSectorWireGroupHitMap    = f'sector_layer_{layerIndex},stationEta_layer_{layerIndex};stationEtaSectorStripHitMap_layer_{layerIndex}'
-        weightStationEtaSectorWireGroupHitMap = f'wireGroupHitLayers_layer_{layerIndex}'
-        sTgcLayerGroup.defineHistogram(varStationEtaSectorWireGroupHitMap, type = 'TH2F', title = titleStationEtaSectorWireGroupHitMap, path = 'stationEtaSectorWireGroupHitMap', xbins = sectorMax, xmin = 1., xmax = float(sectorMax + 1), ybins = 2*stationEtaMax + 2, ymin = -float(stationEtaMax + 1), ymax = float(stationEtaMax + 1), opt = 'kAlwaysCreate', weight = weightStationEtaSectorWireGroupHitMap)
+            titleTimingWireTrack  = f'Q{stationEtaIndex}L{layerIndex}; Sector; Wire Group Timing (on-track) [ns]; Hits'
+            varTimingWireTrack    = f'wireTrackSectorSided_quad_{stationEtaIndex}_layer_{layerIndex},wireTrackTiming_quad_{stationEtaIndex}_layer_{layerIndex};All_wire_timing_in_Q{stationEtaIndex}_Layer{layerIndex}'
+            sTgcWireTimingExpertGroup.defineHistogram(varTimingWireTrack, type = 'TH2F', title = titleTimingWireTrack, path = f'Q{stationEtaIndex}', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 200, ymin = -75., ymax = 125., opt = 'kAlwaysCreate')
+
+    for sideIndex in side:
+        for stationEtaIndex in range(1, stationEtaMax + 1):
+            for sectorIndex in range(1, sectorMax + 1):            
+                padChargeGroup = helper.addGroup(sTgcMonAlg, f'padCharge_{sideIndex}{sectorIndex}_quad_{stationEtaIndex}', f'Muon/MuonRawDataMonitoring/sTgc/Expert/Charge/{sideIndex}' + f'{sectorIndex}'.zfill(2) + '/Pad')
+                stripChargeGroup = helper.addGroup(sTgcMonAlg, f'stripCharge_{sideIndex}{sectorIndex}_quad_{stationEtaIndex}', f'Muon/MuonRawDataMonitoring/sTgc/Expert/Charge/{sideIndex}' + f'{sectorIndex}'.zfill(2) + '/Strip')
+                wireGroupChargeGroup = helper.addGroup(sTgcMonAlg, f'wireGroupCharge_{sideIndex}{sectorIndex}_quad_{stationEtaIndex}', f'Muon/MuonRawDataMonitoring/sTgc/Expert/Charge/{sideIndex}' + f'{sectorIndex}'.zfill(2) + '/Wire')
+                residualGroup = helper.addGroup(sTgcMonAlg, f'sTgcResiduals_{sideIndex}{sectorIndex}_quad_{stationEtaIndex}', f'Muon/MuonRawDataMonitoring/sTgc/Expert/Residuals/{sideIndex}' + f'{sectorIndex}'.zfill(2))
+                
+                for layerIndex in range(1, layerMax + 1):
+                    titlePadChargeTrack = f'{sideIndex}' + f'{sectorIndex}'.zfill(2) + f'L{layerIndex}Q{stationEtaIndex}; Pad Charge (on-track) [fC]; Number of Entries'
+                    varPadChargeTrack   = f'padTrackCharge_{sideIndex}_quad_{stationEtaIndex}_sector_{sectorIndex}_layer_{layerIndex};All_pad_charge_in_Q{stationEtaIndex}_Layer{layerIndex}'
+                    padChargeGroup.defineHistogram(varPadChargeTrack, type = 'TH1F', title = titlePadChargeTrack, path = f'Q{stationEtaIndex}', xbins = 100, xmin = 0., xmax = 1000., opt = 'kAlwaysCreate')
+
+                    titleStripChargeTrack = f'{sideIndex}' + f'{sectorIndex}'.zfill(2) + f'L{layerIndex}Q{stationEtaIndex}; Strip Cluster Charge (on-track) [fC]; Number of Entries'
+                    varStripChargeTrack   = f'stripTrackCharge_{sideIndex}_quad_{stationEtaIndex}_sector_{sectorIndex}_layer_{layerIndex};All_strip_charge_in_Q{stationEtaIndex}_Layer{layerIndex}'
+                    stripChargeGroup.defineHistogram(varStripChargeTrack, type = 'TH1F', title = titleStripChargeTrack, path = f'Q{stationEtaIndex}', xbins = 120, xmin = 0., xmax = 1200., opt = 'kAlwaysCreate')
+    
+                    titleWireGroupChargeTrack = f'{sideIndex}' + f'{sectorIndex}'.zfill(2) + f'L{layerIndex}Q{stationEtaIndex}; Wire Group Charge (on-track) [fC]; Number of Entries'
+                    varWireGroupChargeTrack   = f'wireGroupTrackCharge_{sideIndex}_quad_{stationEtaIndex}_sector_{sectorIndex}_layer_{layerIndex};All_wire_charge_in_Q{stationEtaIndex}_Layer{layerIndex}'
+                    wireGroupChargeGroup.defineHistogram(varWireGroupChargeTrack, type = 'TH1F', title = titleWireGroupChargeTrack, path = f'Q{stationEtaIndex}', xbins = 100, xmin = 0., xmax = 1000., opt = 'kAlwaysCreate')
+                    
+                    titleResidual = f'{sideIndex}' + f'{sectorIndex}'.zfill(2) + f'L{layerIndex}Q{stationEtaIndex}; Residual [mm]; Number of Entries'
+                    varResidual = f'residual_{sideIndex}_quad_{stationEtaIndex}_sector_{sectorIndex}_layer_{layerIndex};Residuals_in_Q{stationEtaIndex}_Layer{layerIndex}'
+                    residualGroup.defineHistogram(varResidual, type = 'TH1F', title = titleResidual, path = f'Q{stationEtaIndex}', xbins = 1000, xmin = -2., xmax = 2., opt = 'kAlwaysCreate')
+
+    
+    for layerIndex in range(1, layerMax + 1):
+        titleStripClusterSizeTrack = f'L{layerIndex}; Sector; Strip Cluster Size (on-track); Hits'
+        varStripClusterSizeTrack   = f'stripTrackSectorSided_layer_{layerIndex},stripTrackClusterSize_layer_{layerIndex};Strip_cluster_size_ontrk_per_sector_Layer{layerIndex}'
+        sTgcOverviewGroup.defineHistogram(varStripClusterSizeTrack, type = 'TH2F', title = titleStripClusterSizeTrack, path = 'Overview', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 10, ymin = 0., ymax = 10., opt = 'kAlwaysCreate')
+
+        titleTimingStripTrack  = f'L{layerIndex}; Sector; Strip Cluster Timing (on-track) [ns]; Hits'
+        varTimingStripTrack    = f'stripTrackSectorSided_layer_{layerIndex},stripTrackTiming_layer_{layerIndex};Strip_cluster_timing_ontrk_per_sector_Layer{layerIndex}'
+        sTgcOverviewGroup.defineHistogram(varTimingStripTrack, type = 'TH2F', title = titleTimingStripTrack, path = 'Overview', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 200, ymin = -75., ymax = 125., opt = 'kAlwaysCreate')
+        
+        titleStationEtaSectorPadHitMap  = f'L{layerIndex}; Sector; Quad; Hits'
+        varStationEtaSectorPadHitMap    = f'sector_layer_{layerIndex},stationEta_layer_{layerIndex};Pad_quad_occupancy_per_sector_Layer{layerIndex}'
+        sTgcQuadOccupancyGroup.defineHistogram(varStationEtaSectorPadHitMap, type = 'TH2F', title = titleStationEtaSectorPadHitMap, path = 'Pad', xbins = sectorMax, xmin = 1., xmax = float(sectorMax + 1), ybins = 2*stationEtaMax + 2, ymin = -float(stationEtaMax + 1), ymax = float(stationEtaMax + 1), opt = 'kAlwaysCreate')
             
-        titleTimingPad  = f'layer {layerIndex}; sector; time (pad) [ns]; hits'
-        varTimingPad    = f'padSectorSided_layer_{layerIndex},padTiming_layer_{layerIndex};padTiming_layer_{layerIndex}'
-        weightTimingPad = f'padHit_layer_{layerIndex}'
-        sTgcTimingGroup.defineHistogram(varTimingPad, type = 'TH2F', title = titleTimingPad, path = 'padTiming', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 200, ymin = -75., ymax = 125., opt = 'kAlwaysCreate', weight = weightTimingPad)
-
-        titleTimingWireGroup  = f'layer {layerIndex}; sector; time (wire group) [ns]; hits'
-        varTimingWireGroup    = f'wireGroupSectorSided_layer_{layerIndex},wireGroupTiming_layer_{layerIndex};wireGroupTiming_layer_{layerIndex}'
-        weightTimingWireGroup = f'wireGroupHit_layer_{layerIndex}'
-        sTgcTimingGroup.defineHistogram(varTimingWireGroup, type = 'TH2F', title = titleTimingWireGroup, path = 'wireGroupTiming', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 200, ymin = -75., ymax = 125., opt = 'kAlwaysCreate', weight = weightTimingWireGroup)
-
-        titleTimingStripCluster  = f'layer {layerIndex}; sector; time (strip segments) [ns]; hits'
-        varTimingStripCluster    = f'stripClusterSectorSided_layer_{layerIndex},stripClusterTiming_layer_{layerIndex};stripClusterTiming_layer_{layerIndex}'
-        weightTimingStripCluster = f'stripClusterHit_layer_{layerIndex}'
-        sTgcClusterFromSegmentGroup.defineHistogram(varTimingStripCluster, type = 'TH2F', title = titleTimingStripCluster, path = 'stripClusterTime', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 220, ymin = -85., ymax = 135., opt = 'kAlwaysCreate', weight = weightTimingStripCluster)
-
-        titleStripClusterSize  = f'layer {layerIndex}; sector; cluster size (segments); hits'
-        varStripClusterSize    = f'stripClusterSectorSided_layer_{layerIndex},stripClusterSize_layer_{layerIndex};stripClusterSize_layer_{layerIndex}'
-        weightStripClusterSize = f'stripClusterHit_layer_{layerIndex}'
-        sTgcClusterFromSegmentGroup.defineHistogram(varStripClusterSize, type = 'TH2F', title = titleStripClusterSize, path = 'stripClusterSize', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 20, ymin = 0., ymax = 20., opt = 'kAlwaysCreate', weight = weightStripClusterSize)
-
-        titleSectorsVersusLumiblockPad  = f'layer {layerIndex}; LB; all sectors; pad hits'
-        varSectorsVersusLumiblockPad    = f'padLumiblock_layer_{layerIndex},padStationEta_layer_{layerIndex};sectorsVersusLumiblockPad_layer_{layerIndex}'
-        weightSectorsVersusLumiblockPad = f'padHit_layer_{layerIndex}'
-        sTgcLumiblockGroup.defineHistogram(varSectorsVersusLumiblockPad, type = 'TH2F', title = titleSectorsVersusLumiblockPad, path = 'padSTGClumiblock', xbins = 3000, xmin = 0., xmax = 3000., ybins = 2*(3*sectorMax + 1), ymin = -float(3*sectorMax + 1), ymax = float(3*sectorMax + 1), ylabels = LumiblockYlabel, opt = 'kAlwaysCreate', weight = weightSectorsVersusLumiblockPad)
+        titleStationEtaSectorStripHitMap  = f'L{layerIndex}; Sector; Quad; Hits'
+        varStationEtaSectorStripHitMap    = f'sector_layer_{layerIndex},stationEta_layer_{layerIndex};Strip_quad_occupancy_per_sector_Layer{layerIndex}'
+        sTgcQuadOccupancyGroup.defineHistogram(varStationEtaSectorStripHitMap, type = 'TH2F', title = titleStationEtaSectorStripHitMap, path = 'Strip', xbins = sectorMax, xmin = 1., xmax = float(sectorMax + 1), ybins = 2*stationEtaMax + 2, ymin = -float(stationEtaMax + 1), ymax = float(stationEtaMax + 1), opt = 'kAlwaysCreate')
+
+        titleStationEtaSectorWireGroupHitMap  = f'L{layerIndex}; Sector; Quad; Hits'
+        varStationEtaSectorWireGroupHitMap    = f'sector_layer_{layerIndex},stationEta_layer_{layerIndex};Wire_quad_occupancy_per_sector_Layer{layerIndex}'
+        sTgcQuadOccupancyGroup.defineHistogram(varStationEtaSectorWireGroupHitMap, type = 'TH2F', title = titleStationEtaSectorWireGroupHitMap, path = 'Wire', xbins = sectorMax, xmin = 1., xmax = float(sectorMax + 1), ybins = 2*stationEtaMax + 2, ymin = -float(stationEtaMax + 1), ymax = float(stationEtaMax + 1), opt = 'kAlwaysCreate')
+
+        titleTimingPadTrack  = f'L{layerIndex}; Sector; Pad Timing (on-track) [ns]; Hits'
+        varTimingPadTrack    = f'padTrackSectorSided_layer_{layerIndex},padTrackTiming_layer_{layerIndex};All_pad_timing_per_sector_Layer{layerIndex}'
+        sTgcTimingGroup.defineHistogram(varTimingPadTrack, type = 'TH2F', title = titleTimingPadTrack, path = 'Pad', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 200, ymin = -75., ymax = 125., opt = 'kAlwaysCreate')
+
+        titleTimingStripTrack  = f'L{layerIndex}; Sector; Strip Cluster Timing (on-track) [ns]; Hits'
+        varTimingStripTrack    = f'stripTrackSectorSided_layer_{layerIndex},stripTrackTiming_layer_{layerIndex};All_strip_timing_per_sector_Layer{layerIndex}'
+        sTgcTimingGroup.defineHistogram(varTimingStripTrack, type = 'TH2F', title = titleTimingStripTrack, path = 'Strip', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 200, ymin = -75., ymax = 125., opt = 'kAlwaysCreate')
+        
+        titleTimingWireGroupTrack  = f'L{layerIndex}; Sector; Wire Group timing (on-track) [ns]; Hits'
+        varTimingWireGroupTrack    = f'wireGroupTrackSectorSided_layer_{layerIndex},wireGroupTrackTiming_layer_{layerIndex};All_wire_timing_per_sector_Layer{layerIndex}'
+        sTgcTimingGroup.defineHistogram(varTimingWireGroupTrack, type = 'TH2F', title = titleTimingWireGroupTrack, path = 'Wire', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 200, ymin = -75., ymax = 125., opt = 'kAlwaysCreate')
+
+        titleSectorsVersusLumiblockPad  = f'L{layerIndex}; LB (Pad); All Sectors; Hits'
+        varSectorsVersusLumiblockPad    = f'padLumiblock_layer_{layerIndex},padStationEta_layer_{layerIndex};Nhits_all_pad_in_sector_per_LB_Layer{layerIndex}'
+        sTgcLumiblockGroup.defineHistogram(varSectorsVersusLumiblockPad, type = 'TH2F', title = titleSectorsVersusLumiblockPad, path = 'Pad', xbins = 3000, xmin = 0., xmax = 3000., ybins = 2*(3*sectorMax + 1), ymin = -float(3*sectorMax + 1), ymax = float(3*sectorMax + 1), ylabels = LumiblockYlabel, opt = 'kAlwaysCreate')
             
-        titleSectorsVersusLumiblockStrip  = f'layer {layerIndex}; LB; all sectors; strip hits'
-        varSectorsVersusLumiblockStrip    = f'stripLumiblock_layer_{layerIndex},stripStationEta_layer_{layerIndex};sectorsVersusLumiblockStrip_layer_{layerIndex}'
-        weightSectorsVersusLumiblockStrip = f'stripHit_layer_{layerIndex}'
-        sTgcLumiblockGroup.defineHistogram(varSectorsVersusLumiblockStrip, type = 'TH2F', title = titleSectorsVersusLumiblockStrip, path = 'stripSTGClumiblock', xbins = 3000, xmin = 0., xmax = 3000., ybins = 2*(3*sectorMax + 1), ymin = -float(3*sectorMax + 1), ymax = float(3*sectorMax + 1), ylabels = LumiblockYlabel, opt = 'kAlwaysCreate', weight = weightSectorsVersusLumiblockStrip)
-
-        titleSectorsVersusLumiblockWireGroup  = f'layer {layerIndex}; LB; all sectors; wireGroup hits'
-        varSectorsVersusLumiblockWireGroup    = f'wireGroupLumiblock_layer_{layerIndex},wireGroupStationEta_layer_{layerIndex};sectorsVersusLumiblockWireGroup_layer_{layerIndex}'
-        weightSectorsVersusLumiblockWireGroup = f'wireGroupHit_layer_{layerIndex}'
-        sTgcLumiblockGroup.defineHistogram(varSectorsVersusLumiblockWireGroup, type = 'TH2F', title = titleSectorsVersusLumiblockWireGroup, path = 'wireGroupSTGClumiblock', xbins = 3000, xmin = 0., xmax = 3000., ybins = 2*(3*sectorMax + 1), ymin = -float(3*sectorMax + 1), ymax = float(3*sectorMax + 1), ylabels = LumiblockYlabel, opt = 'kAlwaysCreate', weight = weightSectorsVersusLumiblockWireGroup)
+        titleSectorsVersusLumiblockStrip  = f'L{layerIndex}; LB (Strip); All Sectors; Hits'
+        varSectorsVersusLumiblockStrip    = f'stripLumiblock_layer_{layerIndex},stripStationEta_layer_{layerIndex};Nhits_all_strip_in_sector_per_LB_Layer{layerIndex}'
+        sTgcLumiblockGroup.defineHistogram(varSectorsVersusLumiblockStrip, type = 'TH2F', title = titleSectorsVersusLumiblockStrip, path = 'Strip', xbins = 3000, xmin = 0., xmax = 3000., ybins = 2*(3*sectorMax + 1), ymin = -float(3*sectorMax + 1), ymax = float(3*sectorMax + 1), ylabels = LumiblockYlabel, opt = 'kAlwaysCreate')
+
+        titleSectorsVersusLumiblockWireGroup  = f'L{layerIndex}; LB (Wire); All Sectors; Hits'
+        varSectorsVersusLumiblockWireGroup    = f'wireGroupLumiblock_layer_{layerIndex},wireGroupStationEta_layer_{layerIndex};Nhits_all_wire_in_sector_per_LB_Layer{layerIndex}'
+        sTgcLumiblockGroup.defineHistogram(varSectorsVersusLumiblockWireGroup, type = 'TH2F', title = titleSectorsVersusLumiblockWireGroup, path = 'Wire', xbins = 3000, xmin = 0., xmax = 3000., ybins = 2*(3*sectorMax + 1), ymin = -float(3*sectorMax + 1), ymax = float(3*sectorMax + 1), ylabels = LumiblockYlabel, opt = 'kAlwaysCreate')
         
-        for sideIndex in side:
-            titleYvsXclusterPad = f'{sideIndex} layer {layerIndex}; sTgc-GlobalX-Pad (on track) [mm]; sTgc-GlobalY-Pad (on track) [mm]'
-            varYvsXclusterPad = f'xPosPad_{sideIndex}_layer_{layerIndex},yPosPad_{sideIndex}_layer_{layerIndex};sTgcYvsXclusterPad_{sideIndex}_layer_{layerIndex}'
-            sTgYvsXGroup.defineHistogram(varYvsXclusterPad, type = 'TH2F', title = titleYvsXclusterPad, path = 'YvsXtracksPad', xbins = 500, xmin = -5000., xmax = 5000., ybins = 500, ymin = -5000., ymax = 5000., opt = 'kAlwaysCreate')
-
-            titleYvsXclusterStrip = f'{sideIndex} layer {layerIndex}; sTgc-GlobalX-Strip (on track) [mm]; sTgc-GlobalY-Strip (on track) [mm]'
-            varYvsXclusterStrip = f'xPosStrip_{sideIndex}_layer_{layerIndex},yPosStrip_{sideIndex}_layer_{layerIndex};sTgcYvsXclusterStrip_{sideIndex}_layer_{layerIndex}'
-            sTgYvsXGroup.defineHistogram(varYvsXclusterStrip, type = 'TH2F', title = titleYvsXclusterStrip, path = 'YvsXtracksStrip', xbins = 500, xmin = -5000., xmax = 5000., ybins = 500, ymin = -5000., ymax = 5000., opt = 'kAlwaysCreate')
+        titlePadOccupancy  = f'L{layerIndex}; Sector; Pad Number; Hits'
+        varPadOccupancy    = f'sector_layer_{layerIndex},padNumber_layer_{layerIndex};Pad_ch_occupancy_per_sector_Layer{layerIndex}'
+        sTgcOccupancyGroup.defineHistogram(varPadOccupancy, type = 'TH2F', title = titlePadOccupancy, path = 'Pad', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 317, ymin = 0., ymax = 317., opt = 'kAlwaysCreate')
+                        
+        titleStripOccupancy  = f'L{layerIndex}; Sector; Strip Number; Hits'
+        varStripOccupancy    = f'sector_layer_{layerIndex},stripNumber_layer_{layerIndex};Strip_ch_occupancy_per_sector_Layer{layerIndex}'
+        sTgcOccupancyGroup.defineHistogram(varStripOccupancy, type = 'TH2F', title = titleStripOccupancy, path = 'Strip', xbins = 2*sectorMax + 2, xmin = -float(sectorMax + 1), xmax = float(sectorMax + 1), ybins = 1130, ymin = 0., ymax = 1130., opt = 'kAlwaysCreate')
             
-            titleYvsXclusterWireGroup = f'{sideIndex} layer {layerIndex}; sTgc-GlobalX-WireGroup (on track) [mm]; sTgc-GlobalY-WireGroup (on track) [mm]'
-            varYvsXclusterWireGroup = f'xPosWireGroup_{sideIndex}_layer_{layerIndex},yPosWireGroup_{sideIndex}_layer_{layerIndex};sTgcYvsXclusterWireGroup_{sideIndex}_layer_{layerIndex}'
-            sTgYvsXGroup.defineHistogram(varYvsXclusterWireGroup, type = 'TH2F', title = titleYvsXclusterWireGroup, path = 'YvsXtracksWireGroup', xbins = 500, xmin = -5000., xmax = 5000., ybins = 500, ymin = -5000., ymax = 5000., opt = 'kAlwaysCreate')
+        titleWireGroupOccupancyPerQuad  = f'L{layerIndex}; Wire Group Number; Quad; Hits'
+        varWireGroupOccupancyPerQuad    = f'wireGroupNumber_layer_{layerIndex},stationEta_layer_{layerIndex};Wire_ch_occupancy_per_sector_Layer{layerIndex}'
+        sTgcOccupancyGroup.defineHistogram(varWireGroupOccupancyPerQuad, type = 'TH2F', title = titleWireGroupOccupancyPerQuad, path = 'Wire', xbins = 58*sectorMax, xmin = 0., xmax = float(58*sectorMax), ybins = 2*stationEtaMax + 2, ymin = -float(stationEtaMax + 1), ymax = float(stationEtaMax + 1), opt = 'kAlwaysCreate')
+    
 
     acc = helper.result()
     result.merge(acc)
@@ -148,7 +157,7 @@ if __name__=='__main__':
     parser = argparse.ArgumentParser()
     parser.add_argument("--events", default = 100, type = int, help = 'Number of events that you want to run.')
     parser.add_argument("--samples", nargs = "+", default = None, help = 'Path to the input samples. If you want to run multiple samples at once you have to introduce them separated by blank spaces.')
-    parser.add_argument("--output", default = "monitor_sTgc.root", help = 'Name of the output ROOT file.')
+    parser.add_argument("--output", default = "sTgcExampleOutput.root", help = 'Name of the output ROOT file.')
     args = parser.parse_args()
 
     flags = initConfigFlags()
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/src/StgcRawDataMonAlg.cxx b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/src/StgcRawDataMonAlg.cxx
index cb8afa8ce53b187f43269956fa89c1be439c3fce..613eb2662c5bad2a49a6618fe0711ccc4fc98774 100644
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/src/StgcRawDataMonAlg.cxx
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonRawDataMonitoring/StgcRawDataMonitoring/src/StgcRawDataMonAlg.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -29,43 +29,30 @@ StatusCode sTgcRawDataMonAlg::initialize() {
   ATH_CHECK(m_idHelperSvc.retrieve());
   ATH_CHECK(m_sTgcContainerKey.initialize());
   ATH_CHECK(m_detectorManagerKey.initialize());
-  ATH_CHECK(m_segmentManagerKey.initialize());
   ATH_CHECK(m_meTrkKey.initialize());
-  
+  ATH_CHECK(m_residualPullCalculator.retrieve());
   return StatusCode::SUCCESS;
 } 
 
 StatusCode sTgcRawDataMonAlg::fillHistograms(const EventContext& ctx) const {  
   SG::ReadHandle<Muon::sTgcPrepDataContainer> sTgcContainer(m_sTgcContainerKey, ctx);
-  SG::ReadCondHandle<MuonGM::MuonDetectorManager> detectorManagerKey(m_detectorManagerKey, ctx);
-  
+  SG::ReadCondHandle<MuonGM::MuonDetectorManager> detectorManagerKey(m_detectorManagerKey, ctx); 
   SG::ReadHandle<xAOD::TrackParticleContainer> meTPContainer(m_meTrkKey, ctx);
-  
+
   if (!meTPContainer.isValid()) {
     ATH_MSG_FATAL("Could not get track particle container: " << m_meTrkKey.fullKey());
     return StatusCode::FAILURE;
   }
-  
+ 
   fillsTgcClusterFromTrackHistograms(meTPContainer.cptr());
-
-  SG::ReadHandle<Trk::SegmentCollection> segmentContainer(m_segmentManagerKey, ctx);
-  
-  if(!segmentContainer.isValid()) {
-    ATH_MSG_ERROR("Could not get segmentContainer");      
-    return StatusCode::FAILURE;
-  }
-  
-  fillsTgcClusterFromSegmentsHistograms(segmentContainer.cptr());
-  
+ 
   const int lumiblock = GetEventInfo(ctx) -> lumiBlock();
   
   if (m_dosTgcESD && m_dosTgcOverview) {
     for(const Muon::sTgcPrepDataCollection* coll : *sTgcContainer) {
       for (const Muon::sTgcPrepData* prd : *coll) {
-	fillsTgcOverviewHistograms(prd, *coll);
 	fillsTgcOccupancyHistograms(prd, detectorManagerKey.cptr());
 	fillsTgcLumiblockHistograms(prd, lumiblock);
-	fillsTgcTimingHistograms(prd);
       }
     }
   }
@@ -73,62 +60,6 @@ StatusCode sTgcRawDataMonAlg::fillHistograms(const EventContext& ctx) const {
   return StatusCode::SUCCESS;
 }
 
-void sTgcRawDataMonAlg::fillsTgcOverviewHistograms(const Muon::sTgcPrepData* sTgcObject, const Muon::MuonPrepDataCollection<Muon::sTgcPrepData> &prd) const {   
-  auto chargeMon = Monitored::Collection("charge", prd, [] (const Muon::sTgcPrepData* aux) 
-					 {
-					   return aux -> charge();
-					 });
-  
-  auto numberOfStripsPerClusterMon = Monitored::Collection("numberOfStripsPerCluster", prd, [] (const Muon::sTgcPrepData* aux) 
-							   {
-							     const std::vector<Identifier> &stripIds = aux -> rdoList(); 
-							     return stripIds.size();
-							   });
-  
-  auto timeMon = Monitored::Collection("time", prd, [] (const Muon::sTgcPrepData* aux) 
-				       {
-					 return aux -> time();
-				       });
-
-  fill("sTgcOverview", chargeMon, numberOfStripsPerClusterMon, timeMon);
-  
-  std::vector<short int> stripTimesVec           = sTgcObject -> stripTimes();
-  std::vector<int> stripChargesVec               = sTgcObject -> stripCharges();
-  std::vector<short unsigned int> stripNumberVec = sTgcObject -> stripNumbers();
-
-  auto stripTimesMon   = Monitored::Collection("stripTimes", stripTimesVec);
-  auto stripChargesMon = Monitored::Collection("stripCharges", stripChargesVec);
-  auto stripNumbersMon = Monitored::Collection("stripNumbers", stripNumberVec);
-
-  fill("sTgcOverview", stripTimesMon, stripChargesMon, stripNumbersMon);
-
-  auto xMon = Monitored::Collection("x", prd, [] (const Muon::sTgcPrepData* aux) 
-				    {
-				      Amg::Vector3D pos = aux -> globalPosition(); 
-				      return pos.x();
-				    });
-  
-  auto yMon = Monitored::Collection("y", prd, [] (const Muon::sTgcPrepData* aux) 
-				    {
-				      Amg::Vector3D pos = aux -> globalPosition(); 
-				      return pos.y();
-				    });
-  
-  auto zMon = Monitored::Collection("z", prd, [] (const Muon::sTgcPrepData* aux) 
-				    {
-				      Amg::Vector3D pos = aux -> globalPosition(); 
-				      return pos.z();
-				    });
-  
-  auto rMon = Monitored::Collection("r", prd, [] (const Muon::sTgcPrepData* aux) 
-				    {
-				      Amg::Vector3D pos = aux -> globalPosition(); 
-				      return std::hypot(pos.x(), pos.y());
-				    });
-
-  fill("sTgcOverview", xMon, yMon, zMon, rMon);
-}
-
 void sTgcRawDataMonAlg::fillsTgcOccupancyHistograms(const Muon::sTgcPrepData* sTgcObject, const MuonGM::MuonDetectorManager* muonDetectorManagerObject) const {
   Identifier id    = sTgcObject -> identify();
 
@@ -157,33 +88,28 @@ void sTgcRawDataMonAlg::fillsTgcOccupancyHistograms(const Muon::sTgcPrepData* sT
     const MuonGM::sTgcReadoutElement* sTgcReadoutObjectPadQ2 = muonDetectorManagerObject -> getsTgcReadoutElement(idPadQ2);
     int maxPadNumberQ1 = sTgcReadoutObjectPadQ1 -> maxPadNumber(idPadQ1);
     int maxPadNumberQ2 = sTgcReadoutObjectPadQ2 -> maxPadNumber(idPadQ2);    
-    auto padHit        = 1;
             
     if (std::abs(stationEta) == 1) {
       auto sectorMon    = Monitored::Scalar<int>("sector_layer_" + std::to_string(layer), sectorsTotalShifted);
       auto padNumberMon = Monitored::Scalar<int>("padNumber_layer_" + std::to_string(layer), padNumber);
-      auto padHitMon    = Monitored::Scalar<int>("padHit_layer_" + std::to_string(layer), (int) padHit);
-      fill("sTgcOccupancy", sectorMon, padNumberMon, padHitMon);
+      fill("sTgcOccupancy", sectorMon, padNumberMon);
     }
   
     else if (std::abs(stationEta) == 2) {
       auto sectorMon    = Monitored::Scalar<int>("sector_layer_" + std::to_string(layer), sectorsTotalShifted);
       auto padNumberMon = Monitored::Scalar<int>("padNumber_layer_" + std::to_string(layer), padNumber + maxPadNumberQ1);
-      auto padHitMon    = Monitored::Scalar<int>("padHit_layer_" + std::to_string(layer), (int) padHit);
-      fill("sTgcOccupancy", sectorMon, padNumberMon, padHitMon);
+      fill("sTgcOccupancy", sectorMon, padNumberMon);
     }
    
     else {
       auto sectorMon    = Monitored::Scalar<int>("sector_layer_" + std::to_string(layer), sectorsTotalShifted);
       auto padNumberMon = Monitored::Scalar<int>("padNumber_layer_" + std::to_string(layer), padNumber + maxPadNumberQ1 + maxPadNumberQ2);
-      auto padHitMon    = Monitored::Scalar<int>("padHit_layer_" + std::to_string(layer), (int) padHit);
-      fill("sTgcOccupancy", sectorMon, padNumberMon, padHitMon);
+      fill("sTgcOccupancy", sectorMon, padNumberMon);
     }
     
     auto sectorSidedMon       = Monitored::Scalar<int>("sector_layer_" + std::to_string(layer), sector);
     auto stationEtaSidedMon   = Monitored::Scalar<int>("stationEta_layer_" + std::to_string(layer), stationEtaShifted);
-    auto padHitLayersSidedMon = Monitored::Scalar<int>("padHitLayers_layer_" + std::to_string(layer), (int) padHit);
-    fill("sTgcLayers", sectorSidedMon, stationEtaSidedMon, padHitLayersSidedMon);
+    fill("sTgcQuadOccupancy", sectorSidedMon, stationEtaSidedMon);
   }
   
   else if (channelType == sTgcIdHelper::sTgcChannelTypes::Strip) {
@@ -194,33 +120,28 @@ void sTgcRawDataMonAlg::fillsTgcOccupancyHistograms(const Muon::sTgcPrepData* sT
     const MuonGM::sTgcReadoutElement* sTgcReadoutObjectStripQ2 = muonDetectorManagerObject -> getsTgcReadoutElement(idStripQ2);    
     int maxStripNumberQ1 = sTgcReadoutObjectStripQ1 -> numberOfStrips(idStripQ1);
     int maxStripNumberQ2 = sTgcReadoutObjectStripQ2 -> numberOfStrips(idStripQ2);
-    auto stripHit        = 1;
             
     if (std::abs(stationEta) == 1) {
       auto sectorMon      = Monitored::Scalar<int>("sector_layer_" + std::to_string(layer), sectorsTotalShifted);
       auto stripNumberMon = Monitored::Scalar<int>("stripNumber_layer_" + std::to_string(layer), stripNumber);
-      auto stripHitMon    = Monitored::Scalar<int>("stripHit_layer_" + std::to_string(layer), (int) stripHit);
-      fill("sTgcOccupancy", sectorMon, stripNumberMon, stripHitMon);
+      fill("sTgcOccupancy", sectorMon, stripNumberMon);
     }
     
     else if (std::abs(stationEta) == 2) {
       auto sectorMon      = Monitored::Scalar<int>("sector_layer_" + std::to_string(layer), sectorsTotalShifted);
       auto stripNumberMon = Monitored::Scalar<int>("stripNumber_layer_" + std::to_string(layer), stripNumber + maxStripNumberQ1 + 1);
-      auto stripHitMon    = Monitored::Scalar<int>("stripHit_layer_" + std::to_string(layer), (int) stripHit);
-      fill("sTgcOccupancy", sectorMon, stripNumberMon, stripHitMon);
+      fill("sTgcOccupancy", sectorMon, stripNumberMon);
     }
     
     else {
       auto sectorMon      = Monitored::Scalar<int>("sector_layer_" + std::to_string(layer), sectorsTotalShifted);
       auto stripNumberMon = Monitored::Scalar<int>("stripNumber_layer_" + std::to_string(layer), stripNumber + maxStripNumberQ1 + maxStripNumberQ2 + 1);
-      auto stripHitMon    = Monitored::Scalar<int>("stripHit_layer_" + std::to_string(layer), (int) stripHit);
-      fill("sTgcOccupancy", sectorMon, stripNumberMon, stripHitMon);
+      fill("sTgcOccupancy", sectorMon, stripNumberMon);
     }
     
     auto sectorSidedMon         = Monitored::Scalar<int>("sector_layer_" + std::to_string(layer), sector);
     auto stationEtaSidedMon     = Monitored::Scalar<int>("stationEta_layer_" + std::to_string(layer), stationEtaShifted); 
-    auto stripHitLayersSidedMon = Monitored::Scalar<int>("stripHitLayers_layer_" + std::to_string(layer), (int) stripHit);
-    fill("sTgcLayers", sectorSidedMon, stationEtaSidedMon, stripHitLayersSidedMon);
+    fill("sTgcQuadOccupancy", sectorSidedMon, stationEtaSidedMon);
   }
   
   else if (channelType == sTgcIdHelper::sTgcChannelTypes::Wire) {
@@ -228,17 +149,14 @@ void sTgcRawDataMonAlg::fillsTgcOccupancyHistograms(const Muon::sTgcPrepData* sT
     Identifier idWireGroupQ3 = m_idHelperSvc -> stgcIdHelper().channelID("STL", 3, stationPhi, 1, 3, channelType, 1);
     const MuonGM::sTgcReadoutElement* sTgcReadoutObjectWireGroupQ3 = muonDetectorManagerObject -> getsTgcReadoutElement(idWireGroupQ3);
     int maxWireGroupNumberQ3 = sTgcReadoutObjectWireGroupQ3 -> numberOfStrips(idWireGroupQ3);
-    auto wireGroupHit        = 1;
     
     auto stationEtaMon      = Monitored::Scalar<int>("stationEta_layer_" + std::to_string(layer), stationEtaShifted);
     auto wireGroupNumberMon = Monitored::Scalar<int>("wireGroupNumber_layer_" + std::to_string(layer), wireGroupNumber + (sector - 1)*maxWireGroupNumberQ3); 
-    auto wireGroupHitMon    = Monitored::Scalar<int>("wireGroupHit_layer_" + std::to_string(layer), (int) wireGroupHit);
-    fill("sTgcOccupancy", stationEtaMon, wireGroupNumberMon, wireGroupHitMon);
+    fill("sTgcOccupancy", stationEtaMon, wireGroupNumberMon);
 
     auto sectorSidedMon             = Monitored::Scalar<int>("sector_layer_" + std::to_string(layer), sector);
     auto stationEtaSidedMon         = Monitored::Scalar<int>("stationEta_layer_" + std::to_string(layer), stationEtaShifted); 
-    auto wireGroupHitLayersSidedMon = Monitored::Scalar<int>("wireGroupHitLayers_layer_" + std::to_string(layer), (int) wireGroupHit);
-    fill("sTgcLayers", sectorSidedMon, stationEtaSidedMon, wireGroupHitLayersSidedMon);
+    fill("sTgcQuadOccupancy", sectorSidedMon, stationEtaSidedMon);
   }
 }
 
@@ -260,164 +178,134 @@ void sTgcRawDataMonAlg::fillsTgcLumiblockHistograms(const Muon::sTgcPrepData* sT
   int stationEtaShiftedModified = (stationEta < 0) ? stationEta - 1 - 3*(sector - 1) : stationEta + 3*(sector - 1);
 
   if (channelType == sTgcIdHelper::sTgcChannelTypes::Pad) {
-    auto padHit = 1;
     auto padStationEtaMon = Monitored::Scalar<int>("padStationEta_layer_" + std::to_string(layer), stationEtaShiftedModified);
     auto padLumiblockMon  = Monitored::Scalar<int>("padLumiblock_layer_" + std::to_string(layer), lb);
-    auto padHitMon        = Monitored::Scalar<int>("padHit_layer_" + std::to_string(layer), padHit);
-    fill("sTgcLumiblock", padStationEtaMon, padLumiblockMon, padHitMon);
+    fill("sTgcLumiblock", padStationEtaMon, padLumiblockMon);
   }
 
   else if (channelType == sTgcIdHelper::sTgcChannelTypes::Strip) {
-    auto stripHit = 1;
     auto stripStationEtaMon = Monitored::Scalar<int>("stripStationEta_layer_" + std::to_string(layer), stationEtaShiftedModified);
     auto stripLumiblockMon  = Monitored::Scalar<int>("stripLumiblock_layer_" + std::to_string(layer), lb);
-    auto stripHitMon        = Monitored::Scalar<int>("stripHit_layer_" + std::to_string(layer), stripHit);
-    fill("sTgcLumiblock", stripStationEtaMon, stripLumiblockMon, stripHitMon);
+    fill("sTgcLumiblock", stripStationEtaMon, stripLumiblockMon);
   }
 
   else if (channelType == sTgcIdHelper::sTgcChannelTypes::Wire) {
-    auto wireGroupHit = 1;
     auto wireGroupStationEtaMon = Monitored::Scalar<int>("wireGroupStationEta_layer_" + std::to_string(layer), stationEtaShiftedModified);
     auto wireGroupLumiblockMon  = Monitored::Scalar<int>("wireGroupLumiblock_layer_" + std::to_string(layer), lb);
-    auto wireGroupHitMon        = Monitored::Scalar<int>("wireGroupHit_layer_" + std::to_string(layer), wireGroupHit);
-    fill("sTgcLumiblock", wireGroupStationEtaMon, wireGroupLumiblockMon, wireGroupHitMon);
+    fill("sTgcLumiblock", wireGroupStationEtaMon, wireGroupLumiblockMon);
   }
 }
 
-void sTgcRawDataMonAlg::fillsTgcTimingHistograms(const Muon::sTgcPrepData* sTgcObject) const {
-  Identifier id = sTgcObject -> identify();
-
-  if(!id.is_valid()) {
-    ATH_MSG_DEBUG("Invalid identifier found in Muon::sTgcPrepData");
-    return;
-  }
-
-  int channelType          = m_idHelperSvc -> stgcIdHelper().channelType(id);
-  int multiplet            = m_idHelperSvc -> stgcIdHelper().multilayer(id);
-  int gasGap               = m_idHelperSvc -> stgcIdHelper().gasGap(id);
-  int sectorsTotal         = getSectors(id);
-  int sectorsTotalShifted  = (sectorsTotal < 0) ? sectorsTotal - 1: sectorsTotal;
-  int layer                = getLayer(multiplet, gasGap);
-  short int time           = sTgcObject -> time();
-  
-  if (channelType == sTgcIdHelper::sTgcChannelTypes::Pad) {
-    auto padHit = 1;
-    auto padSectorSidedMon = Monitored::Scalar<int>("padSectorSided_layer_" + std::to_string(layer), sectorsTotalShifted);
-    auto padTimingMon      = Monitored::Scalar<int>("padTiming_layer_" + std::to_string(layer), time);
-    auto padHitMon         = Monitored::Scalar<int>("padHit_layer_" + std::to_string(layer), padHit);
-    fill("sTgcTiming", padSectorSidedMon, padTimingMon, padHitMon);
-  }
-  
-  else if (channelType == sTgcIdHelper::sTgcChannelTypes::Wire) {
-    auto wireGroupHit = 1;
-    auto wireGroupSectorSidedMon = Monitored::Scalar<int>("wireGroupSectorSided_layer_" + std::to_string(layer), sectorsTotalShifted);
-    auto wireGroupTimingMon      = Monitored::Scalar<int>("wireGroupTiming_layer_" + std::to_string(layer), time);
-    auto wireGroupHitMon         = Monitored::Scalar<int>("wireGroupHit_layer_" + std::to_string(layer), wireGroupHit);
-    fill("sTgcTiming", wireGroupSectorSidedMon, wireGroupTimingMon, wireGroupHitMon);
-  }  
-}
+void sTgcRawDataMonAlg::fillsTgcClusterFromTrackHistograms(const xAOD::TrackParticleContainer*  trkPartCont) const {
+  for (const xAOD::TrackParticle* meTP : *trkPartCont) {
+    const Trk::Track* meTrack = meTP -> track();
+    if(!meTrack) continue;
+ 
+    for (const Trk::TrackStateOnSurface* trk_state : *meTrack -> trackStateOnSurfaces()) {
+      const Trk::MeasurementBase* it = trk_state -> measurementOnTrack();
+      if(!it) continue;
+      
+      const Trk::RIO_OnTrack* rot = dynamic_cast<const Trk::RIO_OnTrack*>(it);
+      if(!rot) continue;
+      
+      Identifier rot_id = rot -> identify();
 
-void sTgcRawDataMonAlg::fillsTgcClusterFromSegmentsHistograms(const Trk::SegmentCollection* segmentObject) const {
-  for (Trk::SegmentCollection::const_iterator s = segmentObject -> begin(); s != segmentObject -> end(); ++s) {
-    const Muon::MuonSegment* muonSegmentObject = dynamic_cast<const Muon::MuonSegment*>(*s);
-    
-    if (muonSegmentObject == nullptr) {
-      ATH_MSG_DEBUG("No pointer to segment!");
-      break;
-    }
+      if(!rot_id.is_valid()) {
+	ATH_MSG_DEBUG("Invalid identifier found in Trk::RIO_OnTrack");
+	continue;
+      }
 
-    for (unsigned int irot = 0; irot < muonSegmentObject -> numberOfContainedROTs(); ++irot) {
-      const Trk::RIO_OnTrack* rioOnTrackObject = muonSegmentObject -> rioOnTrack(irot);
-      if (!rioOnTrackObject) continue;
-      Identifier rioOnTrackID = rioOnTrackObject -> identify();
-      const Muon::sTgcClusterOnTrack* sTgcClusterOnTrackObject = dynamic_cast<const Muon::sTgcClusterOnTrack*>(rioOnTrackObject);
-      if (!sTgcClusterOnTrackObject) continue;
-      const Muon::sTgcPrepData* prd = sTgcClusterOnTrackObject -> prepRawData();
-      const std::vector<Identifier>& stripIds = prd->rdoList();
-      unsigned int csize = stripIds.size();
-       
-      int channelType         = m_idHelperSvc -> stgcIdHelper().channelType(rioOnTrackID);
-      int stationEta          = m_idHelperSvc -> stgcIdHelper().stationEta(rioOnTrackID);
-      int multiplet           = m_idHelperSvc -> stgcIdHelper().multilayer(rioOnTrackID);
-      int gasGap              = m_idHelperSvc -> stgcIdHelper().gasGap(rioOnTrackID);
-      int iside               = (stationEta > 0) ? 1 : 0;
-      std::string side        = GeometricSectors::sTgcSide[iside];
-      int sectorsTotal        = getSectors(rioOnTrackID);
-      int layer               = getLayer(multiplet, gasGap);
+      if(!m_idHelperSvc -> issTgc(rot_id)) continue;
+      
+      const Muon::sTgcClusterOnTrack* cluster = dynamic_cast<const Muon::sTgcClusterOnTrack*>(rot);
+      if(!cluster) continue;
+      
+      const Muon::sTgcPrepData* prd = cluster -> prepRawData();
+      if (!prd) continue;
+
+      int channelType = m_idHelperSvc  -> stgcIdHelper().channelType(rot_id);
+      int stEta       =  m_idHelperSvc -> stgcIdHelper().stationEta(rot_id);
+      int multi       = m_idHelperSvc  -> stgcIdHelper().multilayer(rot_id);
+      int gap         = m_idHelperSvc  -> stgcIdHelper().gasGap(rot_id);
+      int sector      = m_idHelperSvc -> sector(rot_id);
+      int sectorsTotal        = getSectors(rot_id);
       int sectorsTotalShifted = (sectorsTotal < 0) ? sectorsTotal - 1: sectorsTotal;
+      int layer               = getLayer(multi, gap);
+      int iside               = (stEta > 0) ? 1 : 0;
+      std::string side        = GeometricSectors::sTgcSide[iside];
 
+      if (channelType == sTgcIdHelper::sTgcChannelTypes::Pad) {
+	float padCharge     = prd -> charge();
+	auto padChargeMon = Monitored::Scalar<float>("padTrackCharge_" + side + "_quad_" + std::to_string(std::abs(stEta)) + "_sector_" + std::to_string(sector)  + "_layer_" + std::to_string(layer), padCharge);
+	fill("padCharge_" + side + std::to_string(sector) + "_quad_" + std::to_string(std::abs(stEta)), padChargeMon);
+
+	short int padTiming = prd -> time();
+	auto padSectorSidedMon = Monitored::Scalar<int>("padTrackSectorSided_layer_" + std::to_string(layer), sectorsTotalShifted);
+	auto padTimingMon      = Monitored::Scalar<float>("padTrackTiming_layer_" + std::to_string(layer), padTiming);
+	fill("sTgcTiming", padSectorSidedMon, padTimingMon);
+        
+	auto padSectorSidedExpertMon = Monitored::Scalar<int>("padTrackSectorSided_quad_" + std::to_string(std::abs(stEta)) + "_layer_" + std::to_string(layer), sectorsTotalShifted);
+	auto padTimingExpertMon      = Monitored::Scalar<float>("padTrackTiming_quad_" + std::to_string(std::abs(stEta)) + "_layer_" + std::to_string(layer), padTiming);
+	fill("padTiming_quad_" + std::to_string(std::abs(stEta)), padSectorSidedExpertMon, padTimingExpertMon);
+      }
       
-      if (channelType == sTgcIdHelper::sTgcChannelTypes::Strip) {
+      else if (channelType == sTgcIdHelper::sTgcChannelTypes::Strip) {
+	const std::vector<Identifier>& stripIds = prd->rdoList();
+	unsigned int csize = stripIds.size();
+	
 	std::vector<short int> stripTimesVec = prd -> stripTimes();
+	std::vector<int> stripChargesVec = prd -> stripCharges();
+
 	float stripClusterTimes = 0;
+	float stripClusterCharges = 0;
 	
 	for (unsigned int sIdx = 0; sIdx < csize; ++sIdx) {
 	  stripClusterTimes += stripTimesVec.at(sIdx);
+	  stripClusterCharges += stripChargesVec.at(sIdx);
 	}
 	
 	stripClusterTimes /= stripTimesVec.size();
 	
-	auto stripClusterHit = 1;
-	auto stripClusterSectorSidedMon = Monitored::Scalar<int>("stripClusterSectorSided_layer_" + std::to_string(layer), sectorsTotalShifted);
-	auto stripClusterTimesMon       = Monitored::Scalar<float>("stripClusterTiming_layer_" + std::to_string(layer), stripClusterTimes);
-	auto stripClusterSizeMon        = Monitored::Scalar<unsigned int>("stripClusterSize_layer_" + std::to_string(layer), csize);
-	auto stripClusterHitMon         = Monitored::Scalar<int>("stripClusterHit_layer_" + std::to_string(layer), stripClusterHit);
-	fill("sTgcClusterFromSegment", stripClusterSectorSidedMon, stripClusterTimesMon, stripClusterSizeMon, stripClusterHitMon);
-      }
-    }
-  }
-}
-
-void sTgcRawDataMonAlg::fillsTgcClusterFromTrackHistograms(const xAOD::TrackParticleContainer*  muonContainer) const {
-  for (const xAOD::TrackParticle* meTP : *muonContainer) {
-    if (!meTP) continue;
-
-    const Trk::Track* meTrack = meTP -> track();
-    if(!meTrack) continue;
-    
-    for(const Trk::TrackStateOnSurface* trkState : *meTrack -> trackStateOnSurfaces()) {
-      if(!(trkState)) continue;
-      if (!trkState -> type(Trk::TrackStateOnSurface::Measurement)) continue;
-      Identifier surfaceId = (trkState) -> surface().associatedDetectorElementIdentifier();
-      if(!m_idHelperSvc -> issTgc(surfaceId)) continue;
-
-      const Trk::MeasurementBase* meas = trkState->measurementOnTrack();
-      if(!meas) continue;
+	auto stripClusterChargesPerSideQuadMon = Monitored::Scalar<float>("stripTrackCharge_" + side  + "_quad_" + std::to_string(std::abs(stEta)) + "_sector_" + std::to_string(sector)  +  "_layer_" + std::to_string(layer), stripClusterCharges);
+	fill("stripCharge_" + side + std::to_string(sector) + "_quad_" + std::to_string(std::abs(stEta)), stripClusterChargesPerSideQuadMon);
+	
+	auto stripClusterSectorSidedMon = Monitored::Scalar<int>("stripTrackSectorSided_layer_" + std::to_string(layer), sectorsTotalShifted);
+	auto stripClusterTimesMon       = Monitored::Scalar<float>("stripTrackTiming_layer_" + std::to_string(layer), stripClusterTimes);
+	auto stripClusterSizeMon        = Monitored::Scalar<unsigned int>("stripTrackClusterSize_layer_" + std::to_string(layer), csize);
+	fill("sTgcTiming", stripClusterSectorSidedMon, stripClusterTimesMon);
+	fill("sTgcOverview", stripClusterSectorSidedMon, stripClusterTimesMon, stripClusterSizeMon);
       
-      const Trk::RIO_OnTrack* rot = dynamic_cast<const Trk::RIO_OnTrack*>(meas);
-      if(!rot) continue;
-      Identifier rot_id = rot->identify();
-      if(!m_idHelperSvc -> issTgc(rot_id)) continue;
+	auto stripSectorSidedExpertMon = Monitored::Scalar<int>("stripTrackSectorSided_quad_" + std::to_string(std::abs(stEta)) + "_layer_" + std::to_string(layer), sectorsTotalShifted);
+	auto stripTimingExpertMon      = Monitored::Scalar<float>("stripTrackTiming_quad_" + std::to_string(std::abs(stEta)) + "_layer_" + std::to_string(layer), stripClusterTimes);
+	fill("stripTiming_quad_" + std::to_string(std::abs(stEta)), stripSectorSidedExpertMon, stripTimingExpertMon);
 
-      const Amg::Vector3D& pos = (trkState) -> trackParameters() -> position();
-      float xPosSegm = pos.x();
-      float yPosSegm = pos.y();
-      
-      int channelType  = m_idHelperSvc -> stgcIdHelper().channelType(surfaceId);
-      int stationEta   = m_idHelperSvc -> stgcIdHelper().stationEta(surfaceId);
-      int multiplet    = m_idHelperSvc -> stgcIdHelper().multilayer(surfaceId);
-      int gasGap       = m_idHelperSvc -> stgcIdHelper().gasGap(surfaceId);
-      int iside        = (stationEta > 0) ? 1 : 0;
-      std::string side = GeometricSectors::sTgcSide[iside];
-      int layer        = getLayer(multiplet, gasGap);
-     
-      if (channelType == sTgcIdHelper::sTgcChannelTypes::Pad) {
-	auto xPosSegmPadMon = Monitored::Scalar<float>("xPosPad_" + side + "_layer_" + std::to_string(layer), xPosSegm); 
-	auto yPosSegmPadMon = Monitored::Scalar<float>("yPosPad_" + side + "_layer_" + std::to_string(layer), yPosSegm);
-	fill("sTgcYvsX", xPosSegmPadMon, yPosSegmPadMon);
-      }
 
-      else if (channelType == sTgcIdHelper::sTgcChannelTypes::Strip) {
-	auto xPosSegmStripMon = Monitored::Scalar<float>("xPosStrip_" + side + "_layer_" + std::to_string(layer), xPosSegm); 
-	auto yPosSegmStripMon = Monitored::Scalar<float>("yPosStrip_" + side + "_layer_" + std::to_string(layer), yPosSegm);
-	fill("sTgcYvsX", xPosSegmStripMon, yPosSegmStripMon);
+	std::unique_ptr<const Trk::ResidualPull> resPull(m_residualPullCalculator -> residualPull(trk_state -> measurementOnTrack(), trk_state -> trackParameters(), Trk::ResidualPull::ResidualType::Biased));	
+
+	if (resPull) {
+	  float residual = resPull -> residual()[Trk::locX];
+	  auto residualMon  = Monitored::Scalar<float>("residual_" + side + "_quad_" + std::to_string(std::abs(stEta)) + "_sector_" + std::to_string(sector) + "_layer_" + std::to_string(layer), residual);
+	  fill("sTgcResiduals_" + side + std::to_string(sector) + "_quad_" + std::to_string(std::abs(stEta)), residualMon);	    
+	}
       }
 
       else if (channelType == sTgcIdHelper::sTgcChannelTypes::Wire) {
-	auto xPosSegmWireGroupMon = Monitored::Scalar<float>("xPosWireGroup_" + side + "_layer_" + std::to_string(layer), xPosSegm); 
-	auto yPosSegmWireGroupMon = Monitored::Scalar<float>("yPosWireGroup_" + side + "_layer_" + std::to_string(layer), yPosSegm);
-	fill("sTgcYvsX", xPosSegmWireGroupMon, yPosSegmWireGroupMon);
-      }   
+	float wireGroupCharge     = prd -> charge();
+	auto wireGroupChargeMon = Monitored::Scalar<float>("wireGroupTrackCharge_" + side + "_quad_" + std::to_string(std::abs(stEta)) + "_sector_" + std::to_string(sector)  + "_layer_" + std::to_string(layer), wireGroupCharge);
+	fill("wireGroupCharge_" + side + std::to_string(sector) + "_quad_" + std::to_string(std::abs(stEta)), wireGroupChargeMon);
+	
+	short int wireGroupTiming = prd -> time();
+	auto wireGroupSectorSidedMon = Monitored::Scalar<int>("wireGroupTrackSectorSided_layer_" + std::to_string(layer), sectorsTotalShifted);
+	auto wireGroupTimingMon      = Monitored::Scalar<float>("wireGroupTrackTiming_layer_" + std::to_string(layer), wireGroupTiming);
+	fill("sTgcTiming", wireGroupSectorSidedMon, wireGroupTimingMon);
+      
+	auto wireSectorSidedExpertMon = Monitored::Scalar<int>("wireTrackSectorSided_quad_" + std::to_string(std::abs(stEta)) + "_layer_" + std::to_string(layer), sectorsTotalShifted);
+	auto wireTimingExpertMon      = Monitored::Scalar<float>("wireTrackTiming_quad_" + std::to_string(std::abs(stEta)) + "_layer_" + std::to_string(layer), wireGroupTiming);
+	fill("wireTiming_quad_" + std::to_string(std::abs(stEta)), wireSectorSidedExpertMon, wireTimingExpertMon);
+      }
     }
   }
 }
+
+
+
diff --git a/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/python/MuonTrackMonitorAlgorithm.py b/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/python/MuonTrackMonitorAlgorithm.py
index 6e15284ee099ac96ea0032f4295604f7b28ec7d4..6a60033248d25c730242f1d77f045f192a441dbd 100644
--- a/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/python/MuonTrackMonitorAlgorithm.py
+++ b/MuonSpectrometer/MuonValidation/MuonDQA/MuonTrackMonitoring/python/MuonTrackMonitorAlgorithm.py
@@ -3,9 +3,10 @@ Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 2020 Matthias Schott - Uni Mainz
 """
 
+from AthenaConfiguration.Enums import BeamType, Format
 
-from AthenaConfiguration.Enums import BeamType
-def MuonTrackConfig(inputFlags, isOld=False, **kwargs):
+
+def MuonTrackConfig(flags, isOld=False, **kwargs):
     if isOld:
         # Run-2 style configuration
         from AthenaMonitoring import AthMonitorCfgHelperOld as AthMonitorCfgHelper
@@ -15,14 +16,16 @@ def MuonTrackConfig(inputFlags, isOld=False, **kwargs):
         from AthenaConfiguration.ComponentFactory import CompFactory
         MuonTrackMonitorAlgorithm = CompFactory.MuonTrackMonitorAlgorithm
 
-    helper = AthMonitorCfgHelper(inputFlags, "MuonTrackMonitoringConfig")
-    if inputFlags.Beam.Type != BeamType.Collisions:
-         kwargs.setdefault("PrimaryVerticesKey", "")
-         kwargs.setdefault("RequireBeamSpot", False)
-    elif inputFlags.Output.doWriteESD or inputFlags.Output.doWriteAOD:
+    helper = AthMonitorCfgHelper(flags, "MuonTrackMonitoringConfig")
+    if flags.Beam.Type != BeamType.Collisions:
+        kwargs.setdefault("PrimaryVerticesKey", "")
+        kwargs.setdefault("RequireBeamSpot", False)
+    elif flags.Input.Format is Format.BS:
+        # TODO: not sure if this is needed at all, probably it was needed due to wrapping
+        # it has been agreed on that beamspot decoration is done once centrally during RAWtoALL
         from xAODEventInfoCnv.EventInfoBeamSpotDecoratorAlgConfig import (
             EventInfoBeamSpotDecoratorAlgCfg)
-        helper.resobj.merge(EventInfoBeamSpotDecoratorAlgCfg(inputFlags))
+        helper.resobj.merge(EventInfoBeamSpotDecoratorAlgCfg(flags))
 
     muonTrackAlg = helper.addAlgorithm(MuonTrackMonitorAlgorithm, "MuonTrackMonitorAlg", **kwargs)
 
diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagDerivationConfig.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagDerivationConfig.py
index fae228ecff2aa5c0c4722a5adb4586c10186075d..bc367c74867591501aa304cb8016fa68a7654877 100644
--- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagDerivationConfig.py
+++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkFlavourTag/python/FtagDerivationConfig.py
@@ -116,8 +116,10 @@ def getFtagComponent(cfgFlags, jetcol, pvCol):
 
     jetcol_name_without_Jets = jetcol.replace('Jets','')
     track_collection = 'InDetTrackParticles'
+    input_muons = 'Muons'
     if cfgFlags.BTagging.Pseudotrack:
         track_collection = 'InDetPseudoTrackParticles'
+        input_muons = None
 
     acc = ComponentAccumulator()
     acc.merge(BTagTrackAugmenterAlgCfg(
@@ -148,6 +150,7 @@ def getFtagComponent(cfgFlags, jetcol, pvCol):
         nnList=GetTaggerTrainingMap(cfgFlags, jetcol_name_without_Jets),
         trackCollection=track_collection,
         primaryVertices=pvCol,
+        muons=input_muons,
         renameTrackJets=True,
         AddedJetSuffix='Jets',
     ))
diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/python/PHYSLITE.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/python/PHYSLITE.py
index 9a33eeda6ba0bedcf8f6740737ae13eb08534b7d..33bd6353040bbada620a9246b56d60cc01ebd84c 100755
--- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/python/PHYSLITE.py
+++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkPhys/python/PHYSLITE.py
@@ -271,7 +271,7 @@ def PHYSLITECfg(ConfigFlags):
     PHYSLITESlimmingHelper.ExtraVariables = [ 
         'AnalysisElectrons.trackParticleLinks.pt.eta.phi.m.charge.author.DFCommonElectronsLHVeryLoose.DFCommonElectronsLHLoose.DFCommonElectronsLHLooseBL.DFCommonElectronsLHMedium.DFCommonElectronsLHTight.DFCommonElectronsLHVeryLooseIsEMValue.DFCommonElectronsLHLooseIsEMValue.DFCommonElectronsLHLooseBLIsEMValue.DFCommonElectronsLHMediumIsEMValue.DFCommonElectronsLHTightIsEMValue.DFCommonElectronsECIDS.DFCommonElectronsECIDSResult.topoetcone20.neflowisol20.ptcone20_Nonprompt_All_MaxWeightTTVALooseCone_pt500.ptcone20_Nonprompt_All_MaxWeightTTVALooseCone_pt1000.ptvarcone30_Nonprompt_All_MaxWeightTTVALooseCone_pt500.ptvarcone30_Nonprompt_All_MaxWeightTTVALooseCone_pt1000.caloClusterLinks.ambiguityLink.TruthLink.truthParticleLink.truthOrigin.truthType.truthPdgId.firstEgMotherTruthType.firstEgMotherTruthOrigin.firstEgMotherTruthParticleLink.firstEgMotherPdgId.ambiguityType.OQ',
         'AnalysisPhotons.pt.eta.phi.m.author.OQ.DFCommonPhotonsIsEMLoose.DFCommonPhotonsIsEMTight.DFCommonPhotonsIsEMTightIsEMValue.DFCommonPhotonsCleaning.DFCommonPhotonsCleaningNoTime.ptcone20.topoetcone20.topoetcone40.topoetcone20ptCorrection.topoetcone40ptCorrection.caloClusterLinks.vertexLinks.ambiguityLink.TruthLink.truthParticleLink.truthOrigin.truthType',
-        'GSFTrackParticles.chiSquared.phi.d0.theta.qOverP.definingParametersCovMatrixDiag.definingParametersCovMatrixOffDiag.z0.vz.charge.vertexLink.numberOfPixelHits.numberOfSCTHits',
+        'GSFTrackParticles.chiSquared.phi.d0.theta.qOverP.definingParametersCovMatrixDiag.definingParametersCovMatrixOffDiag.z0.vz.charge.vertexLink.numberOfPixelHits.numberOfSCTHits.originalTrackParticle',
         'GSFConversionVertices.trackParticleLinks.x.y.z.px.py.pz.pt1.pt2.neutralParticleLinks.minRfirstHit',
         'egammaClusters.calE.calEta.calPhi.calM.e_sampl.eta_sampl.ETACALOFRAME.PHICALOFRAME.ETA2CALOFRAME.PHI2CALOFRAME.constituentClusterLinks',
         'AnalysisMuons.pt.eta.phi.truthType.truthOrigin.author.muonType.quality.inDetTrackParticleLink.muonSpectrometerTrackParticleLink.combinedTrackParticleLink.InnerDetectorPt.MuonSpectrometerPt.DFCommonGoodMuon.neflowisol20.TruthLink.truthParticleLink.charge.extrapolatedMuonSpectrometerTrackParticleLink.allAuthors.ptcone20_Nonprompt_All_MaxWeightTTVA_pt1000.ptcone20_Nonprompt_All_MaxWeightTTVA_pt500.ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt1000.ptvarcone30_Nonprompt_All_MaxWeightTTVA_pt500.numberOfPrecisionLayers.combinedTrackOutBoundsPrecisionHits.numberOfPrecisionLayers.numberOfPrecisionHoleLayers.numberOfGoodPrecisionLayers.innerSmallHits.innerLargeHits.middleSmallHits.middleLargeHits.outerSmallHits.outerLargeHits.extendedSmallHits.extendedLargeHits.extendedSmallHoles.isSmallGoodSectors.cscUnspoiledEtaHits.EnergyLoss.energyLossType.momentumBalanceSignificance.scatteringCurvatureSignificance.scatteringNeighbourSignificance.CaloMuonIDTag.CaloMuonScore',
diff --git a/Reconstruction/RecExample/RecJobTransformTests/test/test_data17AFP_13tev.sh b/Reconstruction/RecExample/RecJobTransformTests/test/test_data17AFP_13tev.sh
deleted file mode 100755
index f51bc3e349159670f4643bf02c7a4d8d3f0ca267..0000000000000000000000000000000000000000
--- a/Reconstruction/RecExample/RecJobTransformTests/test/test_data17AFP_13tev.sh
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-#
-# art-description: Reco_tf runs on 13TeV collision data 2017, run 338480 has AFP detector included.
-# art-athena-mt: 8
-# art-type: grid
-# art-include: master/Athena
-# art-include: 23.0/Athena
-
-export ATHENA_CORE_NUMBER=8
-#The setup for run2 data is described in test_data15_13TeV.sh     
-Reco_tf.py  --CA --multithreaded  --inputBSFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/RecJobTransformTests/data17_13TeV/data17_13TeV.00338480.physics_Main.daq.RAW._lb0309._SFO-4._0006.data --maxEvents 300 --conditionsTag="CONDBR2-BLKPA-RUN2-10" --geometryVersion="ATLAS-R2-2016-01-00-01" --preExec="flags.DQ.Steering.doHLTMon=False" --ignoreErrors 'False' --ignorePatterns 'LArRawDataReadingAlg.+ERROR.+Found.+unsupported.+Rod.+block.+type.+0|LArRawDataReadingAlg.+\|.+ERROR.+\|.|ERROR.+message.+limit.+LArRawDataReadingAlg.' --outputESDFile myESD.pool.root --outputAODFile myAOD.pool.root --outputHISTFile myHist.root
-#Remember retval of transform as art result
-RES=$?
-
-xAODDigest.py myAOD.pool.root digest.txt
-
-echo "art-result: $RES Reco"
-
diff --git a/Reconstruction/RecExample/RecJobTransformTests/test/test_data22AFP_13p6tev.sh b/Reconstruction/RecExample/RecJobTransformTests/test/test_data22AFP_13p6tev.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d09926bd4548e83f5551d6c56cc1bd8a4c0a609d
--- /dev/null
+++ b/Reconstruction/RecExample/RecJobTransformTests/test/test_data22AFP_13p6tev.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+#
+# art-description: Reco_tf runs on 13p6TeV collision data 2022, run 435229 has AFP detector included. Details at https://twiki.cern.ch/twiki/bin/view/AtlasProtected/SpecialRunsIn2022#done_47_SM_HI_combined_LHCf_ZDC
+# art-athena-mt: 8
+# art-type: grid
+# art-include: master/Athena
+# art-include: 23.0/Athena
+
+export ATHENA_CORE_NUMBER=8
+#The setup for 2022 data is described in test_data22_13p6TeV.sh      
+Reco_tf.py  --CA --multithreaded  --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/RecJobTransformTests/data22_13p6TeV/data22_13p6TeV.00435229.physics_Main.daq.RAW/data22_13p6TeV.00435229.physics_Main.daq.RAW._lb1526._SFO-12._0001.data --conditionsTag="CONDBR2-BLKPA-2022-09" --geometryVersion="ATLAS-R3S-2021-03-01-00" --postExec="cfg.getCondAlgo(\"PixelConfigCondAlg\").doRUN3PIXLinearExtrapolation=True" --outputESDFile myESD.pool.root --outputAODFile myAOD.pool.root --outputHISTFile myHist.root --maxEvents=10
+#Remember retval of transform as art result
+RES=$?
+
+xAODDigest.py myAOD.pool.root digest.txt
+
+echo "art-result: $RES Reco"
+
diff --git a/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/NewVrtSecInclusiveTool/NewVrtSecInclusiveTool.h b/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/NewVrtSecInclusiveTool/NewVrtSecInclusiveTool.h
index 6fe19871d5526d310abf48cff06e773d8c30f6ed..5956cf198f46d4647d95354c26c0b57a01e03db4 100755
--- a/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/NewVrtSecInclusiveTool/NewVrtSecInclusiveTool.h
+++ b/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/NewVrtSecInclusiveTool/NewVrtSecInclusiveTool.h
@@ -289,6 +289,7 @@ namespace Rec {
          double chi2{};
          double projectedVrt=0.;
          int detachedTrack=-1;
+         double BDT=1.1;
       };
 
 
diff --git a/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/src/Sel2TrkVertices.cxx b/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/src/Sel2TrkVertices.cxx
index 728aa1b5d56c3e5174aa9de1bb408cee82f67803..617ee84f1de5f8a413557ec9728a22ff5391bc08 100755
--- a/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/src/Sel2TrkVertices.cxx
+++ b/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/src/Sel2TrkVertices.cxx
@@ -88,7 +88,8 @@ namespace Rec{
           h.m_curTup->nTrk=NTracks < DevTuple::maxNTrk ? NTracks : DevTuple::maxNTrk ;
           h.m_curTup->n2Vrt=0;
       }
-
+   
+      std::vector<std::vector<std::tuple<int,float>>> trkCount(NTracks);
       std::unique_ptr<Trk::IVKalState> state = m_fitSvc->makeState();
       m_fitSvc->setMassInputParticles( inpMass, *state );     // Use pion masses for fit
       for (i=0; i<NTracks-1; i++) {
@@ -150,6 +151,7 @@ namespace Rec{
 // Check pixel hits vs vertex positions.
              int ihitIBL  = getIBLHit(selectedTracks[i]);
              int jhitIBL  = getIBLHit(selectedTracks[j]);
+             if( (ihitIBL==0&&jhitIBL>0) || (ihitIBL>0&&jhitIBL==0) ) continue;
              int ihitBL   = getBLHit (selectedTracks[i]);
              int jhitBL   = getBLHit (selectedTracks[j]);
 //--Very general cleaning cuts based on ID geometry and applicable to all processes
@@ -231,8 +233,43 @@ namespace Rec{
 //
              add_edge(i,j,compatibilityGraph);
              goodVrt[NTracks*i+j]=std::vector<double>{tmpVrt.fitVertex.x(),tmpVrt.fitVertex.y(),tmpVrt.fitVertex.z()};
+             trkCount[i].push_back(std::make_tuple(j,wgtSelect)); trkCount[j].push_back(std::make_tuple(i,wgtSelect));            
+         }
+      }
+      //=== Resolve -!----!- case to speed up cluster finding
+      for(int t=0; t<NTracks; t++){
+         if(trkCount[t].size()==2){
+            i=std::get<0>(trkCount[t][0]);
+            j=std::get<0>(trkCount[t][1]);
+            if(trkCount[i].size()==1 && trkCount[j].size()==1 ){
+               if( std::get<1>(trkCount[t][0]) < std::get<1>(trkCount[t][1]) ) {
+                  remove_edge(t,i,compatibilityGraph);
+                  if(t<i)goodVrt.erase(NTracks*t+i); else goodVrt.erase(NTracks*i+t);
+                  trkCount[i].clear();
+                  trkCount[t].erase(trkCount[t].begin()+0);
+               } else {
+                  remove_edge(t,j,compatibilityGraph);
+                  if(t<j)goodVrt.erase(NTracks*t+j); else goodVrt.erase(NTracks*j+t);
+                  trkCount[j].clear();
+                  trkCount[t].erase(trkCount[t].begin()+1);
+               }
+            }      
          }
-      } 
+      }
+      //=== Remove isolated 2track vertices
+      for(int t=0; t<NTracks; t++){
+         if(trkCount[t].size()==1){
+            i=std::get<0>(trkCount[t][0]);
+            if(trkCount[i].size()==1){
+               if( std::get<1>(trkCount[t][0]) < m_v2tFinBDTCut ) {
+                  remove_edge(t,i,compatibilityGraph);
+                  if(t<i)goodVrt.erase(NTracks*t+i); else goodVrt.erase(NTracks*i+t);
+                  trkCount[t].clear();
+                  trkCount[i].clear();
+               }
+            }      
+         }
+      }
 
       return;
    }
diff --git a/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/src/VrtSecMulti.cxx b/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/src/VrtSecMulti.cxx
index d33ce16400da0665f86c90d7db502f03c68f7985..91a7e670215777b2d05527cc93566b2177015458 100755
--- a/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/src/VrtSecMulti.cxx
+++ b/Reconstruction/VKalVrt/NewVrtSecInclusiveTool/src/VrtSecMulti.cxx
@@ -381,6 +381,7 @@ namespace Rec{
              VARS[8]=SVPV.Eta();
              VARS[9]=std::max(rhit0,rhit1);
              float wgtSelect=m_SV2T_BDT->GetGradBoostMVA(VARS);
+             curVrt.BDT=wgtSelect;
              if(m_fillHist){
                Hists& h = getHists();
                h.m_hb_fakeSVBDT->Fill(wgtSelect,1.);
@@ -440,6 +441,7 @@ namespace Rec{
 //-------------------------------------------
 // Final vertex refit for full covariance matrix and xAOD::Vertex creation
 //
+    static const SG::AuxElement::Decorator<float> wgtBDT("wgtBDT");
     int n1trVrt=0;           // Final number of good 1-track vertices
     for(auto & iv : goodVertexMap){
           WrkVrt & curVrt=iv.second;
@@ -480,7 +482,10 @@ namespace Rec{
              tmpVertex->addTrackAtVertex(TEL,1.);
              n1trVrt++;
           }
-          if(tmpVertex)finalVertices.push_back(tmpVertex);
+          if(tmpVertex){
+            wgtBDT(*tmpVertex)=curVrt.BDT;
+            finalVertices.push_back(tmpVertex);
+          }
     }
     if(m_fillHist){
       Hists& h = getHists();
diff --git a/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/ComparisonFunction.h b/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/ComparisonFunction.h
index d4cefcb7d8c1eb5173709590db66cbb127325b98..2b93e28aa97351107c73bb14dea42ae75e70ed10 100755
--- a/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/ComparisonFunction.h
+++ b/Tracking/TrkEvent/TrkEventUtils/TrkEventUtils/ComparisonFunction.h
@@ -99,7 +99,12 @@ public:
     return (fabs(distOne) < fabs(distTwo));
   }
 
-private:
+  bool operator()(const std::unique_ptr<T>& one,
+                  const std::unique_ptr<T>& two) const {
+    return this->operator()(one.get(), two.get());
+  }
+
+ private:
   Amg::Vector3D m_point;
   Amg::Vector3D m_line;
   double m_radius = 0.;
diff --git a/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/Extrapolator.h b/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/Extrapolator.h
index 8947f24ed79b3df7367e9b4711629f5125f03586..c1e5d24ae7ba42115bd056cb8ee751981034feb2 100755
--- a/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/Extrapolator.h
+++ b/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/Extrapolator.h
@@ -59,7 +59,6 @@ class AlignableTrackingVolume;
 class ExtrapolationCache;
 class TrackingVolume;
 
-typedef std::vector<Trk::TrackParameters*> TrackParametersPtrVector;
 typedef std::vector<std::unique_ptr<Trk::TrackParameters>> TrackParametersUVector;
 typedef std::pair<const Surface*, BoundaryCheck> DestSurf;
 
diff --git a/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/LocalExtrapolatorCache.h b/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/LocalExtrapolatorCache.h
index 45ae068cd36add4f23fd3511fc4f4351f1232fa3..a0a68b3a194b8491d5fe3826829f28194ee32b71 100644
--- a/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/LocalExtrapolatorCache.h
+++ b/Tracking/TrkExtrapolation/TrkExTools/TrkExTools/LocalExtrapolatorCache.h
@@ -28,7 +28,7 @@ struct Cache
   {
     using TrackParmContainer = ObjContainer<Trk::TrackParameters>;
     using ManagedTrackParmPtr = ObjPtr<Trk::TrackParameters>;
-    typedef std::vector<Trk::TrackParameters*> TrackParametersPtrVector;
+    typedef std::vector<std::unique_ptr<Trk::TrackParameters>> TrackParametersUVector;
     typedef std::vector<std::pair<std::unique_ptr<Trk::TrackParameters>, int>> identifiedParameters_t;
     using TrackParmPtr = ObjRef;
     typedef std::pair<const Surface*, BoundaryCheck> DestSurf;
@@ -45,7 +45,6 @@ struct Cache
     //!< Flag the recall solution
     bool m_recall = false;
     bool m_robustSampling = true;
-    bool m_ownParametersOnDetElements = true;
     unsigned int m_layerResolved{};
     unsigned int m_methodSequence = 0;
     const Surface* m_destinationSurface = nullptr;
@@ -60,8 +59,9 @@ struct Cache
     const Trk::TrackingVolume* m_currentStatic = nullptr;
     const Trk::TrackingVolume* m_currentDense = nullptr;
     const Trk::TrackingVolume* m_highestVolume = nullptr;
-    //!< return helper for parameters on detector elements
-    TrackParametersPtrVector* m_parametersOnDetElements = nullptr;
+    //!< Pointer (not owning) pointing 
+    //to a vector of unique parameters of detector elements
+    TrackParametersUVector* m_parametersOnDetElements = nullptr;
     //!< cache layer with last material update
     const Layer* m_lastMaterialLayer = nullptr;
     //!< cache for collecting the total X0 ans Eloss
@@ -93,8 +93,8 @@ struct Cache
     
     //methods
     Cache();
-    Cache(const std::vector<const IMaterialEffectsUpdator*> & updaters);
     ~Cache();
+    Cache(const std::vector<const IMaterialEffectsUpdator*> & updaters);
 
     TrackParmContainer& trackParmContainer() { return m_trackParmContainer; }
  
diff --git a/Tracking/TrkExtrapolation/TrkExTools/src/EnergyLossUpdator.cxx b/Tracking/TrkExtrapolation/TrkExTools/src/EnergyLossUpdator.cxx
index 6f3ef7552152b7cccb5a527df26dd56382d4ece8..e0bc4e2e04dd117c8093eaf684c3f58ccfa92aa7 100755
--- a/Tracking/TrkExtrapolation/TrkExTools/src/EnergyLossUpdator.cxx
+++ b/Tracking/TrkExtrapolation/TrkExTools/src/EnergyLossUpdator.cxx
@@ -560,7 +560,7 @@ Trk::EnergyLossUpdator::updateEnergyLoss(Trk::EnergyLoss& eLoss,
     }
   }
 
-  return EnergyLoss(deltaE,
+  return {deltaE,
                     sigmaDeltaE,
                     sigmaMinusDeltaE,
                     sigmaPlusDeltaE,
@@ -568,7 +568,7 @@ Trk::EnergyLossUpdator::updateEnergyLoss(Trk::EnergyLoss& eLoss,
                     sigmaDeltaE_ioni,
                     deltaE_rad,
                     sigmaDeltaE_rad,
-                    depth);
+                    depth};
 }
 
 // public interface method
diff --git a/Tracking/TrkExtrapolation/TrkExTools/src/Extrapolator.cxx b/Tracking/TrkExtrapolation/TrkExTools/src/Extrapolator.cxx
index 41e23f3db17b2f78d2a2bac76ee7d2d67dea731a..5bb3d10443714ae7ad347490254493b4fbba3040 100755
--- a/Tracking/TrkExtrapolation/TrkExTools/src/Extrapolator.cxx
+++ b/Tracking/TrkExtrapolation/TrkExTools/src/Extrapolator.cxx
@@ -472,9 +472,9 @@ Trk::Extrapolator::extrapolateStepwiseImpl(const EventContext& ctx,
   ATH_MSG_DEBUG("F-[" << cache.m_methodSequence << "] extrapolateStepwise(...) ");
   // initialize the return parameters vector
   // create a new internal helper vector
-  Trk::TrackParametersPtrVector tmp;
+  Trk::TrackParametersUVector tmp;
+  //The m_parametersOnDetElements point to it
   cache.m_parametersOnDetElements = &tmp;
-  cache.m_ownParametersOnDetElements = true;
   // Material effect updator cache
   cache.populateMatEffUpdatorCache(m_subupdaters);
   //TODO revisit when objcontainer is streamlined
@@ -484,22 +484,13 @@ Trk::Extrapolator::extrapolateStepwiseImpl(const EventContext& ctx,
     ctx, cache, prop, cache.manage(std::move(cloneInput)).index(), sf, dir, bcheck, particle));
   // assign the return parameter and set cache.m_parametersOnDetElements = 0;
   if (parameterOnSf) {
-    tmp.push_back(parameterOnSf.release());
-    cache.m_parametersOnDetElements = nullptr;
-    cache.m_ownParametersOnDetElements = false;
+    tmp.emplace_back(parameterOnSf.release());
   } else {
-
-    if (!cache.m_ownParametersOnDetElements) {
-      std::stringstream msg;
-      msg << "Will not cleanup " << static_cast<const void*>(cache.m_parametersOnDetElements);
-      throw std::logic_error(msg.str());
-    }
-    for (const Trk::TrackParameters* p : tmp) {
-      delete p;
-    }
     tmp.clear();
   }
-  return Trk::TrackParametersUVector(tmp.begin(), tmp.end());
+  //m_parametersOnDetElements point to nullptr
+  cache.m_parametersOnDetElements = nullptr;
+  return Trk::TrackParametersUVector(std::move(tmp));
 }
 
 std::pair<std::unique_ptr<Trk::TrackParameters>, const Trk::Layer*>
@@ -2870,21 +2861,20 @@ Trk::Extrapolator::extrapolateBlindlyImpl(const EventContext& ctx,
   cache.m_boundaryVolume = boundaryVol;
   // initialize the return parameters vector
   // create a new internal helper vector
-  Trk::TrackParametersPtrVector tmp;
+  Trk::TrackParametersUVector tmp;
+  //The m_parametersOnDetElements point to it
   cache.m_parametersOnDetElements = &tmp;
-  cache.m_ownParametersOnDetElements = true;
   // run the extrapolation
   {
     ManagedTrackParmPtr parameterOnSf(
       extrapolateImpl(ctx, cache, prop, parm, *m_referenceSurface, dir, bcheck, particle));
   }
-  // assign the return parameter and set cache.m_parametersOnDetElements = 0;
+  // reset the .m_parametersOnDetElements to point to nullptr
   cache.m_parametersOnDetElements = nullptr;
-  cache.m_ownParametersOnDetElements = false;
   // reset the boundary Volume
   cache.m_boundaryVolume = nullptr;
   // return what you have
-  return Trk::TrackParametersUVector(tmp.begin(), tmp.end());
+  return Trk::TrackParametersUVector(std::move(tmp));
 }
 
 // ----------------------- The private Volume extrapolation methods --------------------------
@@ -3976,7 +3966,7 @@ Trk::Extrapolator::overlapSearch(const EventContext& ctx,
   bool isStartLayer = (detSurface && detSurface == startSurface);
 
   // the temporary vector (might have to be ordered)
-  std::vector<Trk::TrackParameters*> detParametersOnLayer;
+  TrackParametersUVector detParametersOnLayer;
   bool reorderDetParametersOnLayer = false;
   // the first test for the detector surface to be hit (false test)
   // - only do this if the parameters aren't on the surface
@@ -4020,9 +4010,7 @@ Trk::Extrapolator::overlapSearch(const EventContext& ctx,
     if (surfaceHit && detSurface != startSurface && detSurface != cache.m_destinationSurface) {
       ATH_MSG_VERBOSE("  [H] Hit with detector surface recorded ! ");
       // push into the temporary vector
-      detParametersOnLayer.push_back(
-        detParameters.release()); // after this line detParameters == nullptr;
-      //      track_parm_for_overlap=TrackParmPtr(*(detParametersOnLayer.back()));
+      detParametersOnLayer.emplace_back(detParameters.release()); 
     } else if (detParameters) {
       // no hit -> fill into the garbage bin
       ATH_MSG_VERBOSE(
@@ -4071,7 +4059,7 @@ Trk::Extrapolator::overlapSearch(const EventContext& ctx,
             // distinguish whether sorting is needed or not
             reorderDetParametersOnLayer = true;
             // push back into the temporary vector
-            detParametersOnLayer.push_back(overlapParameters.release());
+            detParametersOnLayer.emplace_back(overlapParameters.release());
           } else { // the parameters have been cancelled by start/end surface
             // no hit -> fill into the garbage bin
             ATH_MSG_VERBOSE(
@@ -4093,9 +4081,8 @@ Trk::Extrapolator::overlapSearch(const EventContext& ctx,
   if (cache.m_parametersOnDetElements->empty()) {
     *(cache.m_parametersOnDetElements) = std::move(detParametersOnLayer);
   } else {
-    std::copy(detParametersOnLayer.begin(),
-              detParametersOnLayer.end(),
-              back_inserter(*(cache.m_parametersOnDetElements)));
+    std::move(detParametersOnLayer.begin(), detParametersOnLayer.end(),
+              std::back_inserter(*(cache.m_parametersOnDetElements)));
   }
 }
 
@@ -5200,7 +5187,7 @@ Trk::Extrapolator::extrapolateToVolumeWithPathLimit(const EventContext& ctx,
                           particle);
           } else if (nextLayer->layerType() > 0 && nextLayer->isOnLayer(nextPar->position())) {
             ATH_MSG_VERBOSE("  [o] Collecting intersection with active layer.");
-            cache.m_parametersOnDetElements->push_back(nextPar->clone());
+            cache.m_parametersOnDetElements->emplace_back(nextPar->uniqueClone());
           }
         } // -------------------------- Fatras mode off -----------------------------------
 
diff --git a/Tracking/TrkExtrapolation/TrkExTools/src/LocalExtrapolatorCache.cxx b/Tracking/TrkExtrapolation/TrkExTools/src/LocalExtrapolatorCache.cxx
index f322ed1a2c88be8ce37d3ec301916c3083a14f27..6075c4bde0b7f44fc79414aeac6048e7c604d562 100644
--- a/Tracking/TrkExtrapolation/TrkExTools/src/LocalExtrapolatorCache.cxx
+++ b/Tracking/TrkExtrapolation/TrkExTools/src/LocalExtrapolatorCache.cxx
@@ -26,15 +26,8 @@ namespace Trk{
     m_navigVolsInt.reserve(64);
     populateMatEffUpdatorCache(updaters);
   }
-    
-    Cache::~Cache()
-    {
-      if (m_ownParametersOnDetElements && m_parametersOnDetElements) {
-        for (const Trk::TrackParameters* parm : *m_parametersOnDetElements) {
-          delete parm;
-        }
-      }
-    }
+
+  Cache::~Cache() = default;
 
   IMaterialEffectsUpdator::ICache&
   Cache::subMaterialEffectsUpdatorCache( const TrackingVolume& tvol){
diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/ITkFastTrackFinderStandaloneConfig.py b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/ITkFastTrackFinderStandaloneConfig.py
index cca6ce6236df37e6e7216b69f0fb16899a11d0cc..7426c51b8abc7bdfe4f6a7eb7c5a88d6bd729a06 100644
--- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/ITkFastTrackFinderStandaloneConfig.py
+++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/ITkFastTrackFinderStandaloneConfig.py
@@ -36,10 +36,10 @@ def ITkFastTrackFinderStandaloneCfg(flags):
                                                                     UseSctSpacePoints = False,
                                                                     layerNumberTool   = acc.getPublicTool("TrigL2LayerNumberTool_FTF") ) )
 
-    from TrigFastTrackFinder.TrigFastTrackFinder_Config import TrigFastTrackFinderMonitoring
+    from TrigFastTrackFinder.TrigFastTrackFinder_Config import TrigFastTrackFinderMonitoringArg
     from TriggerJobOpts.TriggerHistSvcConfig import TriggerHistSvcConfig
     acc.merge(TriggerHistSvcConfig(newflags))
-    monTool = TrigFastTrackFinderMonitoring(flags, name = "FullScan", doResMon=False)
+    monTool = TrigFastTrackFinderMonitoringArg(flags, name = "FullScan", doResMon=False)
     
     ftf = CompFactory.TrigFastTrackFinder( name = "TrigFastTrackFinder_",
                                             LayerNumberTool          = acc.getPublicTool( "TrigL2LayerNumberTool_FTF" ),
diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinder_Config.py b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinder_Config.py
index 6c40e5b96dc9299f44121db70cccbbbc4f97f993..4e7a7a87fb5179ff0f47ea3d636495bc8c8bcfb3 100755
--- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinder_Config.py
+++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinder_Config.py
@@ -5,6 +5,11 @@ from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool
 def TrigFastTrackFinderMonitoring(flags):
     name =    "trigfasttrackfinder_" + flags.InDet.Tracking.ActiveConfig.name
     doResMon= flags.InDet.Tracking.ActiveConfig.doResMon
+    return TrigFastTrackFinderMonitoringArg(flags, name, doResMon)
+
+    
+def TrigFastTrackFinderMonitoringArg(flags, name, doResMon):
+
 
     def addSPHistograms(montool, name):
         if name in ['FS', 'JetFS', 'FullScan', 'fullScan', 'fullScanUTT', 'jet']:
diff --git a/Trigger/TrigCost/TrigCostAnalysis/python/CostMetadataUtil.py b/Trigger/TrigCost/TrigCostAnalysis/python/CostMetadataUtil.py
index bc3dfc8698ed27269616e565f5f5f0bfbcadf37a..7fee13c053df3f0e0f1546de8f7f2520f8a9c356 100644
--- a/Trigger/TrigCost/TrigCostAnalysis/python/CostMetadataUtil.py
+++ b/Trigger/TrigCost/TrigCostAnalysis/python/CostMetadataUtil.py
@@ -383,11 +383,18 @@ def readDetailsFromTRP(inputFile, runNumber, maxRanges, itemName="L1_TAU8--enabl
             lbRangeDetailsDict[lbRange] = {"avgPileup" : round(pileupAvg, 3), "minPileup" : round(min(pileupArr), 3), 
                                            "maxPileup" : round(max(pileupArr), 3), "deadtime" : round(physicsDeadtimeAvg, 3)}
 
-    except ImportError:
+    except ImportError as e:
         log.error("The pbeast python library was not found! Remember to setup tdaq release!")
+        log.debug(e)
         return {}
-    except RuntimeError:
-        log.error("Error when reading from Pbeast! Remember to export pbeast server sso: export PBEAST_SERVER_SSO_SETUP_TYPE=AutoUpdateKerberos")
+    except RuntimeError as e:
+        if "Sign in to your account" in str(e):
+            log.error("PBeast authentication failed! Remember to export pbeast server sso: export PBEAST_SERVER_SSO_SETUP_TYPE=AutoUpdateKerberos")
+        elif "cannot create CERN SSO cookie" in str(e):
+            log.error("PBeast authentication requires the cookies, please setup")
+        else:
+            log.error("Error when reading from Pbeast! ")
+        log.debug(e)
         return {}
 
     log.debug("The final lumiblock dictionary is {0}".format(lbRangeDetailsDict))
diff --git a/Trigger/TrigHypothesis/TrigBjetHypo/python/TrigBjetBtagHypoAlgConfig.py b/Trigger/TrigHypothesis/TrigBjetHypo/python/TrigBjetBtagHypoAlgConfig.py
new file mode 100644
index 0000000000000000000000000000000000000000..d346dee1730bcc0ab9a611c154740e882b7fcc74
--- /dev/null
+++ b/Trigger/TrigHypothesis/TrigBjetHypo/python/TrigBjetBtagHypoAlgConfig.py
@@ -0,0 +1,13 @@
+# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
+
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
+from AthenaConfiguration.ComponentFactory import CompFactory
+
+def TrigBjetBtagHypoAlgCfg(flags, name: str = "TrigBjetBtagHypoAlg", **kwargs) -> ComponentAccumulator:
+    acc = ComponentAccumulator()
+
+    kwargs.setdefault("HypoTools", CompFactory.TrigBjetBtagHypoTool())
+    kwargs.setdefault("MonTool", CompFactory.TrigBjetOnlineMonitoring())
+
+    acc.addEventAlgo(CompFactory.TrigBjetBtagHypoAlg(name=name, **kwargs))
+    return acc
diff --git a/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitoringMTConfig.py b/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitoringMTConfig.py
index 9b99386bf6dd790180faf6f3c2f1798b73177427..e0b21e54ffa16a94b3a2e9995e385cc58dc6f7f4 100644
--- a/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitoringMTConfig.py
+++ b/Trigger/TrigMonitoring/TrigEgammaMonitoring/python/TrigEgammaMonitoringMTConfig.py
@@ -201,7 +201,7 @@ class TrigEgammaMonAlgBuilder:
 
 
   #
-  # Create all minitor algorithms
+  # Create all monitor algorithms
   #
   def configureMonitor( self ):
    
@@ -703,6 +703,7 @@ class TrigEgammaMonAlgBuilder:
     monGroup = self.addGroup( monAlg, trigger+'_Distributions_' + ("HLT" if online else "Offline"), 
                               self.basePath+'/Shifter/'+trigger+'/Distributions/' + (level if online else "Offline") )
     
+    info = self.getTrigInfo(trigger)
 
     self.addHistogram(monGroup, TH1F("Rhad", "Rhad; Rhad ; Count", 35, -0.3, 0.3))
     self.addHistogram(monGroup, TH1F("Rhad1", "Rhad1; Rhad1 ; Count", 30, -0.3, 0.3))
@@ -717,10 +718,12 @@ class TrigEgammaMonAlgBuilder:
     self.addHistogram(monGroup, TH1F("highet", "Offline E_{T}; E_{T} [GeV] ; Count", 100, 0., 500.))
     self.addHistogram(monGroup, TH1F("eta", "eta; eta ; Count", self._nEtabins, self._etabins))
     self.addHistogram(monGroup, TH1F("phi", "phi; phi ; Count", 20, -3.2, 3.2))
-    self.addHistogram(monGroup, TH1F("topoetcone20", "topoetcone20; topoetcone20 [GeV] ; Count", 100, -10.0, 10.0))
-    self.addHistogram(monGroup, TH1F("topoetcone20_rel", "topoetcone20/pt; topoetcone20/pt ; Count", 100, -0.5, 0.5))
-    self.addHistogram(monGroup, TH1F("topoetcone40_shift", "topoetcone40-2.45 GeV; topoetcone40-2.45 GeV [GeV] ; Count", 100, -10.0, 10.0))
-    self.addHistogram(monGroup, TH1F("topoetcone40_shift_rel", "(topoetcone40-2.45 GeV)/pt; (topoetcone40-2.45 GeV)/pt ; Count", 100, -0.5, 0.5))
+    
+    if not info.isElectron():
+      self.addHistogram(monGroup, TH1F("topoetcone20", "topoetcone20; topoetcone20 [GeV] ; Count", 100, -10.0, 10.0))
+      self.addHistogram(monGroup, TH1F("topoetcone20_rel", "topoetcone20/pt; topoetcone20/pt ; Count", 100, -0.5, 0.5))
+      self.addHistogram(monGroup, TH1F("topoetcone40_shift", "topoetcone40-2.45 GeV; topoetcone40-2.45 GeV [GeV] ; Count", 100, -10.0, 10.0))
+      self.addHistogram(monGroup, TH1F("topoetcone40_shift_rel", "(topoetcone40-2.45 GeV)/pt; (topoetcone40-2.45 GeV)/pt ; Count", 100, -0.5, 0.5))
 
 
   #
diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/FEXReprocessingRun3.py b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/FEXReprocessingRun3.py
index 180f69c9a1d46a53962f32da6d4e8bafc0af6bb3..4e58c2469142835bda3a033e89cfc978ab7fead2 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/FEXReprocessingRun3.py
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/FEXReprocessingRun3.py
@@ -156,7 +156,7 @@ if __name__ == '__main__':
         ##################################################    
         jFEX = CompFactory.LVL1.jFEXDriver('jFEXDriver')
         jFEX.jSuperCellTowerMapperTool = CompFactory.LVL1.jSuperCellTowerMapper('jSuperCellTowerMapper')
-        jFEX.jSuperCellTowerMapperTool.SCellMasking = True
+        jFEX.jSuperCellTowerMapperTool.SCellMasking = not flags.Input.isMC
         jFEX.jFEXSysSimTool = CompFactory.LVL1.jFEXSysSim('jFEXSysSimTool')
         
         #TOBs
@@ -243,7 +243,7 @@ if __name__ == '__main__':
         ##################################################  
         gFEX = CompFactory.LVL1.gFEXDriver('gFEXDriver')
         gFEX.gSuperCellTowerMapperTool = CompFactory.LVL1.gSuperCellTowerMapper('gSuperCellTowerMapper')
-        gFEX.gSuperCellTowerMapperTool.SCellMasking = True
+        gFEX.gSuperCellTowerMapperTool.SCellMasking = not flags.Input.isMC
         gFEX.gFEXSysSimTool = CompFactory.LVL1.gFEXSysSim('gFEXSysSimTool')
         
         #TOBs
diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/L1CaloFEXSimCfg.py b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/L1CaloFEXSimCfg.py
index 4a230259560d85af0c4f5d5662729998d399f9cf..a28e805c268635900bd3b9bd18c342547d09bbb4 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/L1CaloFEXSimCfg.py
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/python/L1CaloFEXSimCfg.py
@@ -106,12 +106,14 @@ def L1CaloFEXSimCfg(flags):
     if flags.Trigger.L1.dojFex:
         jFEX = CompFactory.LVL1.jFEXDriver('jFEXDriver')
         jFEX.jSuperCellTowerMapperTool = CompFactory.LVL1.jSuperCellTowerMapper('jSuperCellTowerMapper', SCell=sCellType)
+        jFEX.jSuperCellTowerMapperTool.SCellMasking = not flags.Input.isMC
         jFEX.jFEXSysSimTool = CompFactory.LVL1.jFEXSysSim('jFEXSysSimTool')
         acc.addEventAlgo(jFEX)
 
     if flags.Trigger.L1.dogFex:
         gFEX = CompFactory.LVL1.gFEXDriver('gFEXDriver')
         gFEX.gSuperCellTowerMapperTool = CompFactory.LVL1.gSuperCellTowerMapper('gSuperCellTowerMapper', SCell=sCellType)
+        gFEX.gSuperCellTowerMapperTool.SCellMasking = not flags.Input.isMC
         gFEX.gFEXSysSimTool = CompFactory.LVL1.gFEXSysSim('gFEXSysSimTool')
         acc.addEventAlgo(gFEX)
 
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettings.py b/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettings.py
index 5e14e2eeb18e033f1fb8fff98f26a7674630fb5a..0835b0facb9aa26d6d014a28f88f0f286ebf3516 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettings.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettings.py
@@ -109,7 +109,6 @@ class ConfigSettings_tauIso( _ConfigSettingsBase ):
       self._vertex         = "HLT_IDVertex_Tau"
       self._electronPID    = False
       self._pTmin          = 0.8*GeV
-      #self._Xi2max         = 9     Revert to default value for 2023
       # potential change coming up ...
       # self._minNSiHits_vtx = 6
 
@@ -138,8 +137,6 @@ class ConfigSettings_bjet( _ConfigSettingsBase ):
       self._phiHalfWidth    = 0.4
       self._zedHalfWidth    = 10.0
       self._pTmin  = 0.8*GeV
-      self._Xi2max = 12
-
 
 class ConfigSettings_jetSuper( _ConfigSettingsBase ):
    def __init__( self ):
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettingsBase.py b/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettingsBase.py
index ea38e599b0f2c62ffeb63ecac0f504290dec8d9d..2933aea56efbfb5fba23c852c624c3f6056e22d9 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettingsBase.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/ConfigSettingsBase.py
@@ -17,7 +17,6 @@ class _ConfigSettingsBase() :
       self._name                = None
       self._suffix              = None
       self._pTmin               = 1.*GeV
-      self._Xi2max              = 9.
       self._TripletDoPPS        = True
       self._Triplet_D0Max       = 4.0
       self._Triplet_D0_PPS_Max  = 1.7
@@ -142,10 +141,6 @@ class _ConfigSettingsBase() :
    def pTmin(self):
       return self._pTmin
 
-   @property
-   def Xi2max(self):
-      return self._Xi2max
-
    @property
    def TripletDoPPS(self):
       return self._TripletDoPPS
@@ -420,7 +415,6 @@ class _ConfigSettingsBase() :
       log.info( " %s :", self._name )
       log.info( " %s :", self._input_name )
       log.info( "   pTmin                 : %s", self._pTmin )
-      log.info( "   Xi2max                : %s", self._Xi2max )
       log.info( "   TripletDoPPS          : %s", self._TripletDoPPS )
       log.info( "   Triplet_D0Max         : %s", self._Triplet_D0Max )
       log.info( "   Triplet_D0_PPS_Max    : %s", self._Triplet_D0_PPS_Max )
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfigITk.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfigITk.py
index 5302546d07484ba696b2e681526cdd31e6ceecfa..9a55564cc7d401b8da5057d185f542f801d53e32 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfigITk.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfigITk.py
@@ -41,8 +41,8 @@ def ITkftfCfg(flags, roisKey, signature, signatureName):
                                                                     UseSctSpacePoints = False,
                                                                     layerNumberTool   = acc.getPublicTool("TrigL2LayerNumberToolITk_FTF") ) )
 
-    from TrigFastTrackFinder.TrigFastTrackFinder_Config import TrigFastTrackFinderMonitoring
-    monTool = TrigFastTrackFinderMonitoring(flags, name = "trigfasttrackfinder_" + signature, doResMon=False)
+    from TrigFastTrackFinder.TrigFastTrackFinder_Config import TrigFastTrackFinderMonitoringArg
+    monTool = TrigFastTrackFinderMonitoringArg(flags, name = "trigfasttrackfinder_" + signature, doResMon=False)
 
     ftf = CompFactory.TrigFastTrackFinder( name = "TrigFastTrackFinder_" + signature,
                                             LayerNumberTool          = acc.getPublicTool( "TrigL2LayerNumberToolITk_FTF" ),
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingPassFlags.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingPassFlags.py
index a185c4db3117fba34e3021de9ec0cd2fa8ccb48a..43c02afb6a60c1bf8b3b1b4b0f91cb78b24de556 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingPassFlags.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingPassFlags.py
@@ -1,16 +1,86 @@
 # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 import AthenaCommon.SystemOfUnits as Units
-from InDetConfig.TrackingPassFlags import createTrackingPassFlags
+
+from InDetConfig.TrackingPassFlags import createTrackingPassFlags,createITkTrackingPassFlags
 from TrigEDMConfig.TriggerEDMRun3 import recordable
 
+def signatureSpecificSettingOfFlags(flags,mode):
+  
+  #temporary - to be reworked
+  if mode=="InDet":
+    flags.minPT = flags.pTmin   #hack to sync pT threshold used in offline and trigger
+    flags.Xi2max              = 9. if flags.input_name != "bjet" else 12.
+    flags.Xi2maxNoAdd         = 25.
+    flags.nHolesMax           = 2
+    flags.nHolesGapMax        = 2
+    flags.nWeightedClustersMin= 6
+    
+  else:                         #ITk specific settings can be done here while we rely on ConfigSettings
+    flags.minPT = [flags.pTmin] #ITk flags have eta dependant settings
+    flags.Xi2max              = [9.]
+    flags.Xi2maxNoAdd         = [25.]
+    flags.nHolesMax           = [2]
+    flags.nHolesGapMax        = [2]
+    flags.nWeightedClustersMin= [6]
+  
+  flags.seedFilterLevel     = 0
+  
+  if flags.isLRT:
+    flags.nHolesGapMax        = 1
+    flags.nWeightedClustersMin= 8
+    
+  if flags.input_name=="cosmics":
+    flags.nClustersMin        = 4
+    flags.nHolesMax           = 3
+    flags.Xi2max              = 60.  if mode=="InDet" else [60.]
+    flags.Xi2maxNoAdd         = 100. if mode=="InDet" else [100.]
+    flags.nWeightedClustersMin= 8
+
+  def collToRecordable(flags,name):
+    ret = name
+    signature = flags.input_name
+    firstStage = True if "FTF" in name else False
+    record = True
+    if firstStage:
+      if signature in ["tau","tauTau",
+                       "minBias","bjetLRT",
+                       "beamSpot","BeamSpot"]:
+        record = False
+    else:
+      if signature in ["tauCore","tauIso","tauIsoBDT",
+                       "jet","fullScan","FS","jetSuper",
+                       "beamSpot", "BeamSpot","beamSpotFS",
+                       "bjetLRT","DJetLRT","DVtxLRT"]:
+        record = False
+
+    if record:
+      ret = recordable(name)
+      
+    return ret
+
+  flags.addFlag("trkTracks_FTF", f'HLT_IDTrkTrack_{flags.suffix}_FTF')
+  flags.addFlag("tracks_FTF", collToRecordable(flags, f'HLT_IDTrack_{flags.suffix}_FTF'))
+  flags.addFlag("trkTracks_IDTrig", f'HLT_IDTrkTrack_{flags.suffix}_IDTrig')
+  flags.addFlag("tracks_IDTrig", collToRecordable(flags, f"HLT_IDTrack_{flags.suffix}_IDTrig"))
+
+  flags.addFlag("refitROT", False) # should likely be moved to ConfigSettingsBase
+  flags.addFlag("trtExtensionType", "xf") # should likely be moved to ConfigSettingsBase
 
-def __flagsFromConfigSettings(settings):
-    flags = createTrackingPassFlags()
+
+    
+def createTrigTrackingPassFlags(mode="InDet"):
+  def __flagsFromConfigSettings(settings, mode):
+    if mode == "InDet":
+      flags = createTrackingPassFlags()
+    elif mode == "ITk":
+      flags = createITkTrackingPassFlags()
+    else:
+      raise RuntimeError("createTrigTrackingPassFlags cannot create flags for detector not in InDet or ITk: {}".format(mode)) 
+  
     for setting, value in settings.__dict__.items():
         setting = setting.lstrip("_")
         if setting in flags._flagdict:
             if value is not None: 
-                #flags._flagdict[setting] = value
                 flags._flagdict[setting].set(value)
         else:
             if value is None: 
@@ -18,63 +88,30 @@ def __flagsFromConfigSettings(settings):
             else:
                 flags.addFlag(setting, value)
 
-    def collToRecordable(flags,name):
-      ret = name
-      if flags.InDet.Tracking.ActiveConfig.doRecord:
-        ret = recordable(name)
-      return ret
-
-    flags.addFlag("trkTracks_FTF", f'HLT_IDTrkTrack_{flags.suffix}_FTF')
-    flags.addFlag("tracks_FTF", lambda ofl: collToRecordable(ofl, f'HLT_IDTrack_{flags.suffix}_FTF'))
-    flags.addFlag("trkTracks_IDTrig", f'HLT_IDTrkTrack_{flags.suffix}_IDTrig')
-    flags.addFlag("tracks_IDTrig", lambda ofl: collToRecordable(ofl, f"HLT_IDTrack_{flags.suffix}_IDTrig"))
-    
-    flags.addFlag("refitROT", False) # should likely be moved to ConfigSettingsBase
-    flags.addFlag("trtExtensionType", "xf") # should likely be moved to ConfigSettingsBase
-    flags.minPT = flags.pTmin # hack to sync pT threshold used in offline and trigger
-
-    #temporary - to be reworked
-    flags.nHolesMax           = 2
-    flags.nHolesGapMax        = 2
-    flags.Xi2max              = 9.
-    flags.Xi2maxNoAdd         = 25.
-    flags.seedFilterLevel     = 0.
-    flags.nWeightedClustersMin= 6
-    
-    if flags.isLRT:
-      flags.nHolesGapMax        = 1
-      flags.nWeightedClustersMin= 8
-    if flags.input_name=="cosmics":
-      flags.nClustersMin        = 4
-      flags.nHolesMax           = 3
-      flags.Xi2max              = 60.
-      flags.Xi2maxNoAdd         = 100.
-      flags.nWeightedClustersMin= 8
-    
+    signatureSpecificSettingOfFlags(flags,mode)
 
     return flags
-
-
-def createTrigTrackingPassFlags():
     
-    #hide instantiation of flags in a function that can be consumed by addFlagsCategory
-    def flagsFactory(settings):
-        def hidearg():
-            return __flagsFromConfigSettings(settings)
-        return hidearg
-
-    from AthenaConfiguration.AthConfigFlags import AthConfigFlags
-    flags = AthConfigFlags()
-    from TrigInDetConfig.ConfigSettings import ConfigSettingsInstances,getInDetTrigConfig
-
-    for i in ConfigSettingsInstances.keys():
-      category = f'Trigger.InDetTracking.{i}'
-      factory = flagsFactory(getInDetTrigConfig(i))     
-      flags.addFlagsCategory(category,factory,prefix=True)
-
-    flags.addFlag('Trigger.InDetTracking.RoiZedWidthDefault', 180.0)
-
-    return flags
+  #hide instantiation of flags in a function that can be consumed by addFlagsCategory
+  def flagsFactory(settings,mode):
+    def hidearg():
+        return __flagsFromConfigSettings(settings,mode)
+    return hidearg
+
+  from AthenaConfiguration.AthConfigFlags import AthConfigFlags
+  flags = AthConfigFlags()
+  from TrigInDetConfig.ConfigSettings import ConfigSettingsInstances,getInDetTrigConfig
+  category = 'Trigger.InDetTracking' if mode=="InDet" else 'Trigger.ITkTracking'
+  
+  for i in ConfigSettingsInstances.keys():
+    signatureCategory = "{}.{}".format(category,i)
+    factory = flagsFactory(getInDetTrigConfig(i),mode)     
+    flags.addFlagsCategory(signatureCategory,factory,prefix=True)
+
+  #TBD make a function for global settings too
+  flags.addFlag(f'{category}.RoiZedWidthDefault', 180.0 * Units.mm)
+
+  return flags
 
 
 import unittest
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingPassFlagsITk.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingPassFlagsITk.py
index d0fa86eaac7ef9cfed547ca9ab12c330df093398..4e687fcdf0164f4525f7076c8949b344230ab8a7 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingPassFlagsITk.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigTrackingPassFlagsITk.py
@@ -1,51 +1,11 @@
 # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 import AthenaCommon.SystemOfUnits as Units
-from InDetConfig.TrackingPassFlags import createITkTrackingPassFlags
-
-
-def __flagsFromConfigSettings(settings):
-    flags = createITkTrackingPassFlags()
-    for setting, value in settings.__dict__.items():
-        setting = setting.lstrip("_")
-        if setting in flags._flagdict:
-            if value is not None: 
-                #flags._flagdict[setting] = value
-                flags._flagdict[setting].set(value)
-        else:
-            if value is None: 
-                flags.addFlag(setting, lambda pf: None)
-            else:
-                flags.addFlag(setting, value)
-
-    flags.addFlag("trkTracks_FTF", f'HLT_IDTrkTrack_{flags.suffix}_FTF')
-    flags.addFlag("tracks_FTF", f'HLT_IDTrack_{flags.suffix}_FTF')
-    flags.addFlag("trkTracks_IDTrig", f'HLT_IDTrkTrack_{flags.suffix}_IDTrig')
-    flags.addFlag("tracks_IDTrig", f"HLT_IDTrack_{flags.suffix}_IDTrig")
-    flags.addFlag("refitROT", False) # should likely be moved to ConfigSettingsBase
-    flags.addFlag("trtExtensionType", "xf") # should likely be moved to ConfigSettingsBase
-    flags.input_name = flags.name
-    flags.minPT = [flags.pTmin] # hack to sync pT threshold used in offline and trigger
-    return flags
-
+from TrigInDetConfig.TrigTrackingPassFlags import createTrigTrackingPassFlags
 
 def createTrigTrackingPassFlagsITk():
     
-    #hide instantiation of flags in a function that can be consumed by addFlagsCategory
-    def flagsFactory(settings):
-        def hidearg():
-            return __flagsFromConfigSettings(settings)
-        return hidearg
-
-    from AthenaConfiguration.AthConfigFlags import AthConfigFlags
-    flags = AthConfigFlags()
-    from TrigInDetConfig.ConfigSettings import ConfigSettingsInstances,getInDetTrigConfig
-
-    for i in ConfigSettingsInstances.keys():
-      category = f'Trigger.ITkTracking.{i}'
-      factory = flagsFactory(getInDetTrigConfig(i))     
-      flags.addFlagsCategory(category,factory,prefix=True)
-
-    return flags
+  flags = createTrigTrackingPassFlags(mode="ITk")
+  return flags
 
 
 import unittest
diff --git a/Trigger/TrigTools/TrigInDetConfig/share/IDTrig_MC23a_preInclude.py b/Trigger/TrigTools/TrigInDetConfig/share/IDTrig_MC23a_preInclude.py
index 874236f448b870d80d0655e183d295686aa7d986..42cd93808357cd555727411834793c86f46e38a9 100644
--- a/Trigger/TrigTools/TrigInDetConfig/share/IDTrig_MC23a_preInclude.py
+++ b/Trigger/TrigTools/TrigInDetConfig/share/IDTrig_MC23a_preInclude.py
@@ -2,11 +2,10 @@ from TrigInDetConfig.ConfigSettings import getInDetTrigConfig;
 from AthenaCommon.SystemOfUnits import GeV; 
 getInDetTrigConfig('tauCore')._pTmin = 1*GeV; 
 getInDetTrigConfig('tauIso')._pTmin = 1*GeV; 
-getInDetTrigConfig('tauIso')._Xi2max = 9; 
-getInDetTrigConfig('bjet')._Xi2max = 9;
 getInDetTrigConfig('jetSuper')._zedHalfWidth = 150.;
 getInDetTrigConfig('bphysics')._zedHalfWidth = 225.;
 getInDetTrigConfig('bphysics')._SuperRoI = False;
 
 from AthenaConfiguration.AllConfigFlags import ConfigFlags as flags
 flags.Trigger.InDetTracking.RoiZedWidthDefault=0.0
+flags.Trigger.InDetTracking.bjet.Xi2max=9.
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
index 2059d4d75b0bf3a253b184f1716c8277859f579b..ae4fd5a8e656b221faff39c3ad27ca82f4f29a3f 100644
--- a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
+++ b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
@@ -57,7 +57,7 @@ HLT_2e17_idperf_loose_L12eEM18M:
     3: 1
     4: 1
   stepFeatures:
-    0: 4
+    0: 3
     1: 2
     2: 2
     3: 2
@@ -82,7 +82,7 @@ HLT_2e17_idperf_loose_nogsf_L12eEM18M:
     2: 1
     3: 1
   stepFeatures:
-    0: 4
+    0: 3
     1: 2
     2: 2
     3: 2
@@ -101,7 +101,7 @@ HLT_2e17_lhvloose_L12eEM18M:
     0: 1
     1: 1
   stepFeatures:
-    0: 4
+    0: 3
     1: 2
     2: 1
 HLT_2e17_lhvloose_g20_tight_probe_L12EM15VHI:
@@ -128,7 +128,7 @@ HLT_2e17_lhvloose_g22_tight_probe_L12eEM18M:
     0: 1
     1: 1
   stepFeatures:
-    0: 4
+    0: 3
     1: 2
     2: 1
 HLT_2e17_lhvloose_g25_medium_probe_L12EM15VHI:
@@ -146,7 +146,7 @@ HLT_2e17_lhvloose_g25_medium_probe_L12eEM18M:
     0: 1
     1: 1
   stepFeatures:
-    0: 4
+    0: 3
     1: 2
     2: 1
 HLT_2e17_lhvloose_g35_medium_probe_L12EM15VHI:
@@ -164,7 +164,7 @@ HLT_2e17_lhvloose_g35_medium_probe_L12eEM18M:
     0: 1
     1: 1
   stepFeatures:
-    0: 4
+    0: 3
     1: 2
     2: 1
 HLT_2e17_lhvloose_g50_loose_probe_L12EM15VHI:
@@ -182,7 +182,7 @@ HLT_2e17_lhvloose_g50_loose_probe_L12eEM18M:
     0: 1
     1: 1
   stepFeatures:
-    0: 4
+    0: 3
     1: 2
     2: 1
 HLT_2e24_lhvloose_L12EM20VH:
@@ -196,13 +196,8 @@ HLT_2e24_lhvloose_L12EM20VH:
     2: 1
 HLT_2e24_lhvloose_L12eEM24L:
   eventCount: 0
-  stepCounts:
-    0: 1
-    1: 1
   stepFeatures:
-    0: 4
-    1: 2
-    2: 1
+    0: 1
 HLT_2e24_lhvloose_g20_tight_probe_L12EM20VH:
   eventCount: 0
   stepCounts:
@@ -223,13 +218,8 @@ HLT_2e24_lhvloose_g22_tight_probe_L12EM20VH:
     2: 1
 HLT_2e24_lhvloose_g22_tight_probe_L12eEM24L:
   eventCount: 0
-  stepCounts:
-    0: 1
-    1: 1
   stepFeatures:
-    0: 4
-    1: 2
-    2: 1
+    0: 1
 HLT_2e24_lhvloose_g25_medium_probe_L12EM20VH:
   eventCount: 0
   stepCounts:
@@ -241,13 +231,8 @@ HLT_2e24_lhvloose_g25_medium_probe_L12EM20VH:
     2: 1
 HLT_2e24_lhvloose_g25_medium_probe_L12eEM24L:
   eventCount: 0
-  stepCounts:
-    0: 1
-    1: 1
   stepFeatures:
-    0: 4
-    1: 2
-    2: 1
+    0: 1
 HLT_2e24_lhvloose_g35_medium_probe_L12EM20VH:
   eventCount: 0
   stepCounts:
@@ -259,13 +244,8 @@ HLT_2e24_lhvloose_g35_medium_probe_L12EM20VH:
     2: 1
 HLT_2e24_lhvloose_g35_medium_probe_L12eEM24L:
   eventCount: 0
-  stepCounts:
-    0: 1
-    1: 1
   stepFeatures:
-    0: 4
-    1: 2
-    2: 1
+    0: 1
 HLT_2e24_lhvloose_g50_loose_probe_L12EM20VH:
   eventCount: 0
   stepCounts:
@@ -277,13 +257,8 @@ HLT_2e24_lhvloose_g50_loose_probe_L12EM20VH:
     2: 1
 HLT_2e24_lhvloose_g50_loose_probe_L12eEM24L:
   eventCount: 0
-  stepCounts:
-    0: 1
-    1: 1
   stepFeatures:
-    0: 4
-    1: 2
-    2: 1
+    0: 1
 HLT_2e5_lhmedium_j70_j50a_j0_DJMASS900j50_L1MJJ-500-NFF:
   eventCount: 0
   stepCounts:
@@ -422,17 +397,17 @@ HLT_2e5_lhvloose_nogsf_bBeeM6000_L12EM3:
 HLT_2g10_loose_L1eEM9_mu20_L1MU14FCH:
   eventCount: 0
   stepCounts:
-    0: 5
+    0: 3
   stepFeatures:
-    0: 28
-    1: 8
+    0: 25
+    1: 5
 HLT_2g10_loose_L1eEM9_mu20_L1MU18VFCH:
   eventCount: 0
   stepCounts:
-    0: 5
+    0: 3
   stepFeatures:
-    0: 28
-    1: 8
+    0: 25
+    1: 5
 HLT_2g10_loose_mu20_L1MU14FCH:
   eventCount: 0
   stepCounts:
@@ -503,13 +478,13 @@ HLT_2g20_loose_L12EM15VH:
 HLT_2g20_loose_L12eEM18L:
   eventCount: 1
   stepCounts:
-    0: 5
+    0: 3
     1: 2
     2: 1
     3: 1
   stepFeatures:
-    0: 10
-    1: 7
+    0: 6
+    1: 5
     2: 3
     3: 2
 HLT_2g20_tight_L12EM15VHI:
@@ -537,12 +512,12 @@ HLT_2g20_tight_icaloloose_L12EM15VHI:
 HLT_2g20_tight_icaloloose_L12eEM18M:
   eventCount: 0
   stepCounts:
-    0: 4
+    0: 3
     1: 2
     2: 1
   stepFeatures:
-    0: 8
-    1: 6
+    0: 6
+    1: 5
     2: 3
     3: 1
 HLT_2g22_tight_L12EM15VHI:
@@ -563,7 +538,7 @@ HLT_2g22_tight_L12eEM18M:
     1: 2
     2: 1
   stepFeatures:
-    0: 7
+    0: 6
     1: 5
     2: 3
     3: 1
@@ -582,7 +557,7 @@ HLT_2g25_loose_g15_loose_L12EM20VH:
 HLT_2g25_loose_g15_loose_L12eEM24L:
   eventCount: 0
   stepFeatures:
-    0: 16
+    0: 8
 HLT_2g50_loose_L12EM20VH:
   eventCount: 0
   stepCounts:
@@ -595,7 +570,7 @@ HLT_2g50_loose_L12eEM24L:
   stepCounts:
     0: 1
   stepFeatures:
-    0: 5
+    0: 3
     1: 1
 HLT_2g50_tight_L1EM7_EMPTY:
   eventCount: 0
@@ -619,14 +594,14 @@ HLT_2g9_loose_25dphiAA_invmAA80_L12EM7:
 HLT_2g9_loose_25dphiAA_invmAA80_L1DPHI-M70-2eEM9:
   eventCount: 0
   stepCounts:
-    0: 7
-    1: 5
-    2: 4
+    0: 5
+    1: 4
+    2: 3
   stepFeatures:
-    0: 30
-    1: 14
-    2: 15
-    3: 5
+    0: 22
+    1: 11
+    2: 12
+    3: 3
 HLT_2g9_loose_25dphiAA_invmAA80_L1DPHI-M70-2eEM9L:
   eventCount: 0
 HLT_2j100_L1CEP-CjJ100:
@@ -2691,9 +2666,9 @@ HLT_e10_lhvloose_L1eEM9:
     5: 13
     6: 11
   stepFeatures:
-    0: 17
-    1: 17
-    2: 46
+    0: 16
+    1: 16
+    2: 35
     3: 13
     4: 13
     5: 13
@@ -2909,7 +2884,7 @@ HLT_e14_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-EM12:
 HLT_e14_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-eEM15:
   eventCount: 0
   stepFeatures:
-    0: 28
+    0: 25
 HLT_e14_lhtight_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM12:
   eventCount: 0
   stepCounts:
@@ -3132,19 +3107,19 @@ HLT_e20_idperf_loose_lrtloose_L1EM15VH:
     3: 12
     4: 12
 HLT_e20_idperf_loose_lrtloose_L1eEM18L:
-  eventCount: 11
+  eventCount: 10
   stepCounts:
+    0: 10
+    1: 10
+    2: 10
+    3: 10
+    4: 10
+  stepFeatures:
     0: 11
     1: 11
     2: 11
     3: 11
     4: 11
-  stepFeatures:
-    0: 12
-    1: 12
-    2: 12
-    3: 12
-    4: 12
 HLT_e20_lhloose_L1EM15VH:
   eventCount: 9
   stepCounts:
@@ -3290,23 +3265,23 @@ HLT_e20_lhvloose_L1EM15VH:
     5: 10
     6: 10
 HLT_e20_lhvloose_L1eEM18L:
-  eventCount: 10
+  eventCount: 9
   stepCounts:
+    0: 10
+    1: 10
+    2: 9
+    3: 9
+    4: 9
+    5: 9
+    6: 9
+  stepFeatures:
     0: 11
     1: 11
-    2: 10
-    3: 10
-    4: 10
-    5: 10
-    6: 10
-  stepFeatures:
-    0: 12
-    1: 12
-    2: 14
-    3: 10
-    4: 10
-    5: 10
-    6: 10
+    2: 13
+    3: 9
+    4: 9
+    5: 9
+    6: 9
 HLT_e24_lhmedium_g12_loose_g12_loose_02dRAB_02dRAC_02dRBC_L1EM20VH_3EM10VH:
   eventCount: 0
   stepFeatures:
@@ -3333,17 +3308,17 @@ HLT_e24_lhmedium_g25_medium_02dRAB_L12EM20VH:
 HLT_e24_lhmedium_g25_medium_02dRAB_L12eEM24L:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 2
-    2: 2
+    0: 1
+    1: 1
+    2: 1
     3: 1
     4: 1
     5: 1
   stepFeatures:
-    0: 12
-    1: 9
-    2: 4
-    3: 3
+    0: 5
+    1: 3
+    2: 2
+    3: 2
     4: 1
     5: 1
     6: 1
@@ -3376,7 +3351,7 @@ HLT_e24_lhmedium_ivarloose_tau20_mediumRNN_tracktwoMVA_03dRAB_L1eEM26M:
     5: 5
     6: 1
   stepFeatures:
-    0: 49
+    0: 46
     1: 37
     2: 39
     3: 24
@@ -3461,15 +3436,15 @@ HLT_e25_mergedtight_g35_medium_90invmAB_02dRAB_L12EM20VH:
 HLT_e25_mergedtight_g35_medium_90invmAB_02dRAB_L12eEM24L:
   eventCount: 0
   stepCounts:
-    0: 3
+    0: 2
     1: 2
     2: 2
     3: 1
     4: 1
     5: 1
   stepFeatures:
-    0: 12
-    1: 8
+    0: 7
+    1: 6
     2: 30
     3: 4
     4: 1
@@ -3780,9 +3755,9 @@ HLT_e26_lhtight_e14_etcut_L1eEM26M:
     5: 2
     6: 2
   stepFeatures:
-    0: 42
-    1: 27
-    2: 91
+    0: 38
+    1: 26
+    2: 86
     3: 13
     4: 2
     5: 2
@@ -3835,9 +3810,9 @@ HLT_e26_lhtight_e14_etcut_probe_50invmAB130_L1eEM26M:
     4: 6
     5: 6
     6: 6
-    7: 17
-    8: 15
-    9: 65
+    7: 16
+    8: 14
+    9: 60
     10: 9
 HLT_e26_lhtight_e14_idperf_tight_nogsf_probe_50invmAB130_L1EM22VHI:
   eventCount: 0
@@ -4201,9 +4176,9 @@ HLT_e26_lhtight_ivarloose_e14_etcut_probe_L1eEM26M:
     4: 6
     5: 6
     6: 6
-    7: 17
-    8: 15
-    9: 65
+    7: 16
+    8: 14
+    9: 60
     10: 9
 HLT_e26_lhtight_ivarloose_e14_idperf_tight_probe_L1EM22VHI:
   eventCount: 0
@@ -4517,7 +4492,7 @@ HLT_e26_lhtight_ivarloose_e4_etcut_probe_L1EM22VHI:
     9: 88
     10: 29
 HLT_e26_lhtight_ivarloose_e4_etcut_probe_L1eEM26M:
-  eventCount: 5
+  eventCount: 4
   stepCounts:
     0: 8
     1: 8
@@ -4526,10 +4501,10 @@ HLT_e26_lhtight_ivarloose_e4_etcut_probe_L1eEM26M:
     4: 6
     5: 6
     6: 6
-    7: 5
-    8: 5
-    9: 5
-    10: 5
+    7: 4
+    8: 4
+    9: 4
+    10: 4
   stepFeatures:
     0: 8
     1: 8
@@ -4538,10 +4513,10 @@ HLT_e26_lhtight_ivarloose_e4_etcut_probe_L1eEM26M:
     4: 6
     5: 6
     6: 6
-    7: 43
-    8: 42
-    9: 127
-    10: 55
+    7: 29
+    8: 27
+    9: 97
+    10: 40
 HLT_e26_lhtight_ivarloose_e5_idperf_loose_lrtloose_probe_L1EM22VHI:
   eventCount: 5
   stepCounts:
@@ -4580,8 +4555,8 @@ HLT_e26_lhtight_ivarloose_e5_lhtight_noringer_probe_L1eEM26M:
     4: 6
     5: 6
     6: 6
-    7: 5
-    8: 5
+    7: 4
+    8: 4
     9: 3
     10: 3
     11: 3
@@ -4594,12 +4569,12 @@ HLT_e26_lhtight_ivarloose_e5_lhtight_noringer_probe_L1eEM26M:
     4: 6
     5: 6
     6: 6
-    7: 16
-    8: 15
-    9: 28
-    10: 12
-    11: 12
-    12: 12
+    7: 13
+    8: 11
+    9: 22
+    10: 10
+    11: 10
+    12: 10
     13: 3
 HLT_e26_lhtight_ivarloose_e5_lhtight_probe_L1EM22VHI:
   eventCount: 0
@@ -4642,12 +4617,12 @@ HLT_e26_lhtight_ivarloose_e5_lhtight_probe_L1eEM26M:
     4: 6
     5: 6
     6: 6
-    7: 3
-    8: 3
-    9: 3
-    10: 3
-    11: 3
-    12: 3
+    7: 2
+    8: 2
+    9: 2
+    10: 2
+    11: 2
+    12: 2
   stepFeatures:
     0: 8
     1: 8
@@ -4656,15 +4631,15 @@ HLT_e26_lhtight_ivarloose_e5_lhtight_probe_L1eEM26M:
     4: 6
     5: 6
     6: 6
-    7: 12
-    8: 9
-    9: 15
-    10: 9
-    11: 9
-    12: 9
-    13: 3
+    7: 9
+    8: 5
+    9: 8
+    10: 5
+    11: 5
+    12: 5
+    13: 2
 HLT_e26_lhtight_ivarloose_e5_loose_lrtloose_idperf_probe_L1eEM26M:
-  eventCount: 3
+  eventCount: 2
   stepCounts:
     0: 8
     1: 8
@@ -4673,11 +4648,11 @@ HLT_e26_lhtight_ivarloose_e5_loose_lrtloose_idperf_probe_L1eEM26M:
     4: 6
     5: 6
     6: 6
-    7: 3
-    8: 3
-    9: 3
-    10: 3
-    11: 3
+    7: 2
+    8: 2
+    9: 2
+    10: 2
+    11: 2
   stepFeatures:
     0: 8
     1: 8
@@ -4686,11 +4661,11 @@ HLT_e26_lhtight_ivarloose_e5_loose_lrtloose_idperf_probe_L1eEM26M:
     4: 6
     5: 6
     6: 6
-    7: 12
-    8: 9
-    9: 9
-    10: 9
-    11: 9
+    7: 9
+    8: 5
+    9: 5
+    10: 5
+    11: 5
 HLT_e26_lhtight_ivarloose_e7_lhmedium_probe_L1EM22VHI:
   eventCount: 0
   stepCounts:
@@ -4746,9 +4721,9 @@ HLT_e26_lhtight_ivarloose_e9_etcut_probe_L1eEM26M:
     4: 6
     5: 6
     6: 6
-    7: 5
-    8: 5
-    9: 5
+    7: 4
+    8: 4
+    9: 4
     10: 4
   stepFeatures:
     0: 8
@@ -4758,10 +4733,10 @@ HLT_e26_lhtight_ivarloose_e9_etcut_probe_L1eEM26M:
     4: 6
     5: 6
     6: 6
-    7: 32
-    8: 31
-    9: 113
-    10: 19
+    7: 27
+    8: 25
+    9: 96
+    10: 18
 HLT_e26_lhtight_ivarloose_e9_lhtight_probe_L1EM22VHI:
   eventCount: 0
   stepCounts:
@@ -4808,9 +4783,9 @@ HLT_e26_lhtight_ivarloose_e9_lhtight_probe_L1eEM26M:
     4: 6
     5: 6
     6: 6
-    7: 10
-    8: 6
-    9: 10
+    7: 9
+    8: 5
+    9: 8
     10: 2
 HLT_e26_lhtight_ivarloose_j20_pf_ftf_L1EM22VHI:
   eventCount: 5
@@ -5765,13 +5740,13 @@ HLT_e30_lhloose_nopix_lrtmedium_probe_g25_medium_L1EM20VH:
 HLT_e30_lhloose_nopix_lrtmedium_probe_g25_medium_L1eEM24L:
   eventCount: 0
   stepCounts:
-    0: 12
+    0: 11
     1: 10
     2: 10
     3: 8
   stepFeatures:
-    0: 18
-    1: 12
+    0: 13
+    1: 11
     2: 10
     3: 8
     4: 7
@@ -5988,27 +5963,27 @@ HLT_e5_idperf_loose_lrtloose_probe_g25_medium_L1EM20VH:
     7: 12
     8: 12
 HLT_e5_idperf_loose_lrtloose_probe_g25_medium_L1eEM24L:
-  eventCount: 5
+  eventCount: 4
   stepCounts:
-    0: 14
-    1: 12
+    0: 11
+    1: 10
     2: 10
     3: 8
-    4: 5
-    5: 5
-    6: 5
-    7: 5
-    8: 5
+    4: 4
+    5: 4
+    6: 4
+    7: 4
+    8: 4
   stepFeatures:
-    0: 18
-    1: 14
+    0: 13
+    1: 11
     2: 10
     3: 8
-    4: 20
-    5: 17
-    6: 13
-    7: 13
-    8: 13
+    4: 13
+    5: 9
+    6: 9
+    7: 9
+    8: 9
 HLT_e5_idperf_tight_L1EM3:
   eventCount: 17
   stepCounts:
@@ -6026,17 +6001,17 @@ HLT_e5_idperf_tight_L1EM3:
 HLT_e5_idperf_tight_L1eEM5:
   eventCount: 17
   stepCounts:
-    0: 19
-    1: 19
+    0: 17
+    1: 17
     2: 17
     3: 17
     4: 17
   stepFeatures:
-    0: 53
-    1: 53
-    2: 43
-    3: 43
-    4: 43
+    0: 34
+    1: 34
+    2: 34
+    3: 34
+    4: 34
 HLT_e5_idperf_tight_nogsf_L1EM3:
   eventCount: 17
   stepCounts:
@@ -6052,15 +6027,15 @@ HLT_e5_idperf_tight_nogsf_L1EM3:
 HLT_e5_idperf_tight_nogsf_L1eEM5:
   eventCount: 17
   stepCounts:
-    0: 19
-    1: 19
+    0: 17
+    1: 17
     2: 17
     3: 17
   stepFeatures:
-    0: 53
-    1: 53
-    2: 43
-    3: 43
+    0: 34
+    1: 34
+    2: 34
+    3: 34
 HLT_e5_lhtight_L1EM3:
   eventCount: 9
   stepCounts:
@@ -6093,17 +6068,17 @@ HLT_e5_lhtight_e14_etcut_1invmAB5_L1JPSI-1M5-EM12:
 HLT_e5_lhtight_e14_etcut_1invmAB5_L1JPSI-1M5-eEM15:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 3
-    2: 3
+    0: 2
+    1: 2
+    2: 2
     3: 2
     4: 2
     5: 2
   stepFeatures:
-    0: 14
-    1: 12
-    2: 76
-    3: 13
+    0: 13
+    1: 7
+    2: 33
+    3: 9
     4: 3
     5: 3
 HLT_e5_lhtight_e14_etcut_probe_1invmAB5_L1JPSI-1M5-EM12:
@@ -6144,17 +6119,17 @@ HLT_e5_lhtight_e9_etcut_1invmAB5_L1JPSI-1M5-EM7:
 HLT_e5_lhtight_e9_etcut_1invmAB5_L1JPSI-1M5-eEM9:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 3
-    2: 3
+    0: 2
+    1: 2
+    2: 2
     3: 2
     4: 2
     5: 2
   stepFeatures:
-    0: 18
-    1: 16
-    2: 98
-    3: 19
+    0: 14
+    1: 8
+    2: 36
+    3: 10
     4: 3
     5: 3
 HLT_e5_lhtight_e9_etcut_probe_1invmAB5_L1JPSI-1M5-EM7:
@@ -6638,35 +6613,35 @@ HLT_e70_lhloose_xe70_cell_L1eEM26M:
 HLT_e7_lhmedium_L1eEM5_mu24_L1MU14FCH:
   eventCount: 0
   stepCounts:
-    0: 5
-    1: 5
-    2: 5
+    0: 4
+    1: 4
+    2: 4
     3: 3
     4: 3
     5: 3
   stepFeatures:
-    0: 18
-    1: 16
-    2: 35
-    3: 10
-    4: 5
-    5: 5
+    0: 14
+    1: 11
+    2: 22
+    3: 8
+    4: 4
+    5: 4
 HLT_e7_lhmedium_L1eEM5_mu24_L1MU18VFCH:
   eventCount: 0
   stepCounts:
-    0: 5
-    1: 5
-    2: 5
+    0: 4
+    1: 4
+    2: 4
     3: 3
     4: 3
     5: 3
   stepFeatures:
-    0: 18
-    1: 16
-    2: 35
-    3: 10
-    4: 5
-    5: 5
+    0: 14
+    1: 11
+    2: 22
+    3: 8
+    4: 4
+    5: 4
 HLT_e7_lhmedium_mu24_L1MU14FCH:
   eventCount: 0
   stepCounts:
@@ -6767,7 +6742,7 @@ HLT_e9_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-EM7:
 HLT_e9_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-eEM9:
   eventCount: 0
   stepFeatures:
-    0: 28
+    0: 25
 HLT_e9_lhtight_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM7:
   eventCount: 0
   stepCounts:
@@ -6973,9 +6948,9 @@ HLT_g0_hiptrt_L1EM22VHI:
 HLT_g0_hiptrt_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 12
+    0: 11
   stepFeatures:
-    0: 14
+    0: 12
 HLT_g100_loose_L1EM22VHI:
   eventCount: 1
   stepCounts:
@@ -7016,13 +6991,13 @@ HLT_g10_loose_L1eEM9:
   eventCount: 14
   stepCounts:
     0: 20
-    1: 18
+    1: 17
     2: 17
     3: 14
   stepFeatures:
-    0: 64
-    1: 23
-    2: 23
+    0: 56
+    1: 21
+    2: 22
     3: 16
 HLT_g120_loose_L1EM22VHI:
   eventCount: 1
@@ -7134,7 +7109,7 @@ HLT_g15_loose_L1eEM12L:
     2: 14
     3: 13
   stepFeatures:
-    0: 23
+    0: 21
     1: 17
     2: 16
     3: 15
@@ -7158,7 +7133,7 @@ HLT_g15_tight_L1eEM12L:
     2: 14
     3: 11
   stepFeatures:
-    0: 23
+    0: 21
     1: 17
     2: 16
     3: 11
@@ -7187,17 +7162,17 @@ HLT_g20_loose_L1EM15VHI:
     2: 12
     3: 11
 HLT_g20_loose_L1eEM18L:
-  eventCount: 12
+  eventCount: 11
   stepCounts:
-    0: 15
-    1: 13
+    0: 13
+    1: 12
+    2: 12
+    3: 11
+  stepFeatures:
+    0: 16
+    1: 14
     2: 13
     3: 12
-  stepFeatures:
-    0: 20
-    1: 15
-    2: 14
-    3: 13
 HLT_g20_loose_noiso_L1EM15VH:
   eventCount: 12
   stepCounts:
@@ -7261,17 +7236,17 @@ HLT_g20_tight_L1EM15VHI:
     2: 12
     3: 8
 HLT_g20_tight_L1eEM18M:
-  eventCount: 10
+  eventCount: 9
   stepCounts:
-    0: 15
-    1: 13
-    2: 13
-    3: 10
+    0: 13
+    1: 12
+    2: 12
+    3: 9
   stepFeatures:
-    0: 19
-    1: 15
-    2: 14
-    3: 10
+    0: 16
+    1: 14
+    2: 13
+    3: 9
 HLT_g20_tight_icaloloose_L1EM15VHI:
   eventCount: 8
   stepCounts:
@@ -7287,19 +7262,19 @@ HLT_g20_tight_icaloloose_L1EM15VHI:
     3: 8
     4: 8
 HLT_g20_tight_icaloloose_L1eEM18M:
-  eventCount: 10
+  eventCount: 9
   stepCounts:
-    0: 15
-    1: 13
-    2: 13
-    3: 10
-    4: 10
+    0: 13
+    1: 12
+    2: 12
+    3: 9
+    4: 9
   stepFeatures:
-    0: 19
-    1: 15
-    2: 14
-    3: 10
-    4: 10
+    0: 16
+    1: 14
+    2: 13
+    3: 9
+    4: 9
 HLT_g20_tight_icaloloose_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS500j35_pf_ftf_L1EM18VHI_MJJ-300:
   eventCount: 0
   stepCounts:
@@ -7373,13 +7348,13 @@ HLT_g22_tight_L1EM15VHI:
 HLT_g22_tight_L1eEM18M:
   eventCount: 9
   stepCounts:
-    0: 15
-    1: 13
+    0: 13
+    1: 12
     2: 12
     3: 9
   stepFeatures:
-    0: 18
-    1: 15
+    0: 16
+    1: 14
     2: 13
     3: 9
 HLT_g250_etcut_L1EM22VHI:
@@ -7401,13 +7376,13 @@ HLT_g25_loose_L1EM20VH:
 HLT_g25_loose_L1eEM24L:
   eventCount: 9
   stepCounts:
-    0: 14
-    1: 12
+    0: 11
+    1: 10
     2: 10
     3: 9
   stepFeatures:
-    0: 18
-    1: 14
+    0: 13
+    1: 11
     2: 10
     3: 9
 HLT_g25_loose_xe40_cell_xe50_tcpufit_18dphiAB_18dphiAC_80mTAC_L1EM22VHI:
@@ -7427,14 +7402,14 @@ HLT_g25_loose_xe40_cell_xe50_tcpufit_18dphiAB_18dphiAC_80mTAC_L1EM22VHI:
 HLT_g25_loose_xe40_cell_xe50_tcpufit_18dphiAB_18dphiAC_80mTAC_L1eEM26M:
   eventCount: 2
   stepCounts:
-    0: 12
+    0: 11
     1: 10
     2: 10
     3: 9
     4: 2
   stepFeatures:
-    0: 14
-    1: 11
+    0: 12
+    1: 10
     2: 10
     3: 9
     4: 7
@@ -7479,7 +7454,7 @@ HLT_g25_medium_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90XX2a20_L1EM
 HLT_g25_medium_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90XX2a20_L1eEM26M:
   eventCount: 4
   stepCounts:
-    0: 12
+    0: 11
     1: 10
     2: 10
     3: 8
@@ -7488,8 +7463,8 @@ HLT_g25_medium_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90XX2a20_L1eE
     6: 4
     7: 4
   stepFeatures:
-    0: 14
-    1: 11
+    0: 12
+    1: 10
     2: 10
     3: 8
     4: 16
@@ -7511,13 +7486,13 @@ HLT_g25_medium_4j35a_j0_DJMASS1000j35_L1EM22VHI:
 HLT_g25_medium_4j35a_j0_DJMASS1000j35_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 12
+    0: 11
     1: 10
     2: 10
     3: 8
   stepFeatures:
-    0: 14
-    1: 11
+    0: 12
+    1: 10
     2: 10
     3: 8
 HLT_g25_medium_L1EM20VH:
@@ -7559,13 +7534,13 @@ HLT_g25_medium_L1eEM18L_mu24_L1MU18VFCH:
 HLT_g25_medium_L1eEM24L:
   eventCount: 8
   stepCounts:
-    0: 14
-    1: 12
+    0: 11
+    1: 10
     2: 10
     3: 8
   stepFeatures:
-    0: 18
-    1: 14
+    0: 13
+    1: 11
     2: 10
     3: 8
 HLT_g25_medium_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf_L1EM22VHI:
@@ -7601,15 +7576,15 @@ HLT_g25_medium_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf_presela20
 HLT_g25_medium_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf_presela20b85XX3a20_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 12
+    0: 11
     1: 10
     2: 10
     3: 8
     4: 8
     5: 6
   stepFeatures:
-    0: 14
-    1: 11
+    0: 12
+    1: 10
     2: 10
     3: 8
     4: 24
@@ -7667,13 +7642,13 @@ HLT_g25_medium_tau25_dikaonmass_tracktwoMVA_50invmAB_L1EM22VHI:
 HLT_g25_medium_tau25_dikaonmass_tracktwoMVA_50invmAB_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 12
+    0: 11
     1: 10
     2: 10
     3: 8
   stepFeatures:
-    0: 51
-    1: 48
+    0: 47
+    1: 45
     2: 40
     3: 38
 HLT_g25_medium_tau25_dipion1_tracktwoMVA_50invmAB_L1EM22VHI:
@@ -7691,13 +7666,13 @@ HLT_g25_medium_tau25_dipion1_tracktwoMVA_50invmAB_L1EM22VHI:
 HLT_g25_medium_tau25_dipion1_tracktwoMVA_50invmAB_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 12
+    0: 11
     1: 10
     2: 10
     3: 8
   stepFeatures:
-    0: 51
-    1: 48
+    0: 47
+    1: 45
     2: 40
     3: 38
 HLT_g25_medium_tau25_dipion2_tracktwoMVA_50invmAB_L1EM22VHI:
@@ -7715,25 +7690,25 @@ HLT_g25_medium_tau25_dipion2_tracktwoMVA_50invmAB_L1EM22VHI:
 HLT_g25_medium_tau25_dipion2_tracktwoMVA_50invmAB_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 12
+    0: 11
     1: 10
     2: 10
     3: 8
   stepFeatures:
-    0: 51
-    1: 48
+    0: 47
+    1: 45
     2: 40
     3: 38
 HLT_g25_medium_tau25_dipion4_tracktwoMVA_50invmAB_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 12
+    0: 11
     1: 10
     2: 10
     3: 8
   stepFeatures:
-    0: 51
-    1: 48
+    0: 47
+    1: 45
     2: 40
     3: 38
 HLT_g25_medium_tau25_kaonpi1_tracktwoMVA_50invmAB_L1EM22VHI:
@@ -7751,13 +7726,13 @@ HLT_g25_medium_tau25_kaonpi1_tracktwoMVA_50invmAB_L1EM22VHI:
 HLT_g25_medium_tau25_kaonpi1_tracktwoMVA_50invmAB_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 12
+    0: 11
     1: 10
     2: 10
     3: 8
   stepFeatures:
-    0: 51
-    1: 48
+    0: 47
+    1: 45
     2: 40
     3: 38
 HLT_g25_medium_tau25_kaonpi2_tracktwoMVA_50invmAB_L1EM22VHI:
@@ -7775,13 +7750,13 @@ HLT_g25_medium_tau25_kaonpi2_tracktwoMVA_50invmAB_L1EM22VHI:
 HLT_g25_medium_tau25_kaonpi2_tracktwoMVA_50invmAB_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 12
+    0: 11
     1: 10
     2: 10
     3: 8
   stepFeatures:
-    0: 51
-    1: 48
+    0: 47
+    1: 45
     2: 40
     3: 38
 HLT_g25_medium_tau25_singlepion_tracktwoMVA_50invmAB_L1EM22VHI:
@@ -7799,13 +7774,13 @@ HLT_g25_medium_tau25_singlepion_tracktwoMVA_50invmAB_L1EM22VHI:
 HLT_g25_medium_tau25_singlepion_tracktwoMVA_50invmAB_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 12
+    0: 11
     1: 10
     2: 10
     3: 8
   stepFeatures:
-    0: 51
-    1: 48
+    0: 47
+    1: 45
     2: 40
     3: 38
 HLT_g25_tight_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_L1EM22VHI:
@@ -7891,7 +7866,7 @@ HLT_g25_tight_icaloloose_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90X
 HLT_g25_tight_icaloloose_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90XX2a20_L1eEM26M:
   eventCount: 4
   stepCounts:
-    0: 12
+    0: 11
     1: 10
     2: 10
     3: 8
@@ -7901,8 +7876,8 @@ HLT_g25_tight_icaloloose_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90X
     7: 4
     8: 4
   stepFeatures:
-    0: 14
-    1: 11
+    0: 12
+    1: 10
     2: 10
     3: 8
     4: 8
@@ -7975,7 +7950,7 @@ HLT_g25_tight_icaloloose_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf
 HLT_g25_tight_icaloloose_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf_presela20b85XX3a20_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 12
+    0: 11
     1: 10
     2: 10
     3: 8
@@ -7983,8 +7958,8 @@ HLT_g25_tight_icaloloose_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf
     5: 8
     6: 6
   stepFeatures:
-    0: 14
-    1: 11
+    0: 12
+    1: 10
     2: 10
     3: 8
     4: 8
@@ -8127,7 +8102,7 @@ HLT_g25_tight_icalotight_xe40_cell_xe40_tcpufit_xe40_pfopufit_80mTAC_L1EM22VHI:
 HLT_g25_tight_icalotight_xe40_cell_xe40_tcpufit_xe40_pfopufit_80mTAC_L1eEM26M:
   eventCount: 1
   stepCounts:
-    0: 12
+    0: 11
     1: 10
     2: 10
     3: 8
@@ -8135,8 +8110,8 @@ HLT_g25_tight_icalotight_xe40_cell_xe40_tcpufit_xe40_pfopufit_80mTAC_L1eEM26M:
     5: 2
     6: 1
   stepFeatures:
-    0: 14
-    1: 11
+    0: 12
+    1: 10
     2: 10
     3: 8
     4: 9
@@ -8220,15 +8195,15 @@ HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_80mTAC_L1EM22VHI:
 HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_80mTAC_L1eEM26M:
   eventCount: 1
   stepCounts:
-    0: 12
+    0: 11
     1: 10
     2: 10
     3: 8
     4: 8
     5: 1
   stepFeatures:
-    0: 14
-    1: 11
+    0: 12
+    1: 10
     2: 10
     3: 8
     4: 9
@@ -8251,15 +8226,15 @@ HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_L1EM22VHI:
 HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_L1eEM26M:
   eventCount: 1
   stepCounts:
-    0: 12
+    0: 11
     1: 10
     2: 10
     3: 8
     4: 8
     5: 1
   stepFeatures:
-    0: 14
-    1: 11
+    0: 12
+    1: 10
     2: 10
     3: 8
     4: 9
@@ -8328,12 +8303,12 @@ HLT_g30_loose_L1EM20VH:
 HLT_g30_loose_L1eEM24L:
   eventCount: 8
   stepCounts:
-    0: 12
+    0: 11
     1: 10
     2: 9
     3: 8
   stepFeatures:
-    0: 15
+    0: 13
     1: 11
     2: 9
     3: 8
@@ -8411,7 +8386,7 @@ HLT_g35_loose_mu18_L1eEM28M:
     2: 1
     3: 1
   stepFeatures:
-    0: 15
+    0: 14
     1: 4
     2: 2
     3: 2
@@ -8478,12 +8453,12 @@ HLT_g35_medium_L1EM20VH:
 HLT_g35_medium_L1eEM24L:
   eventCount: 7
   stepCounts:
-    0: 11
+    0: 10
     1: 9
     2: 9
     3: 7
   stepFeatures:
-    0: 13
+    0: 11
     1: 9
     2: 9
     3: 7
@@ -8499,12 +8474,12 @@ HLT_g35_medium_g25_medium_L12EM20VH:
 HLT_g35_medium_g25_medium_L12eEM24L:
   eventCount: 0
   stepCounts:
-    0: 4
-    1: 2
+    0: 2
+    1: 1
   stepFeatures:
-    0: 14
-    1: 10
-    2: 4
+    0: 7
+    1: 5
+    2: 2
 HLT_g35_medium_g25_medium_L1EM7_EMPTY:
   eventCount: 0
 HLT_g35_medium_g25_medium_L1EM7_UNPAIRED_ISO:
@@ -8972,12 +8947,12 @@ HLT_g40_loose_L1EM20VH:
 HLT_g40_loose_L1eEM24L:
   eventCount: 7
   stepCounts:
-    0: 11
+    0: 10
     1: 9
     2: 8
     3: 7
   stepFeatures:
-    0: 13
+    0: 11
     1: 9
     2: 8
     3: 7
@@ -12304,7 +12279,7 @@ HLT_j80_roiftf_preselj20_L1J20:
   stepFeatures:
     0: 45
     1: 145
-    2: 11
+    2: 10
 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d72_pf_ftf_preselc60XXc45XXc25XXc20_L1J45p0ETA21_3J15p0ETA25
 : eventCount: 4
   stepCounts:
@@ -12314,7 +12289,7 @@ HLT_j80_roiftf_preselj20_L1J20:
   stepFeatures:
     0: 45
     1: 145
-    2: 11
+    2: 10
 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d75_pf_ftf_preselc60XXc45XXc25XXc20_L1J45p0ETA21_3J15p0ETA25
 : eventCount: 5
   stepCounts:
@@ -12493,7 +12468,7 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d77_
   stepFeatures:
     0: 45
     1: 145
-    2: 11
+    2: 10
 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d72_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25
 : eventCount: 0
   stepCounts:
@@ -12513,7 +12488,7 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d77_
   stepFeatures:
     0: 45
     1: 145
-    2: 11
+    2: 10
 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d75_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25
 : eventCount: 0
   stepCounts:
@@ -12781,7 +12756,7 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d82_
   stepFeatures:
     0: 45
     1: 145
-    2: 13
+    2: 12
 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bgn185_pf_ftf_presel2c20XX2c20b85_L1J45p0ETA21_3J15p0ETA25
 : eventCount: 1
   stepCounts:
@@ -12845,7 +12820,7 @@ HLT_j80c_j55c_j28c_j20c_SHARED_2j20c_bdl1d70_pf_ftf_presel4c20_L1J45p0ETA21_3J15
   stepFeatures:
     0: 45
     1: 153
-    2: 11
+    2: 10
 HLT_j80c_j55c_j28c_j20c_SHARED_2j20c_bdl1d77_pf_ftf_presel4c20_L1J45p0ETA21_3J15p0ETA25:
   eventCount: 6
   stepCounts:
diff --git a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref
index f246d716c35c96b2bdd9f81f38b46b808d09e577..0bb205d79c7982a9d21fffd58a70c938ceab886a 100644
--- a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref
+++ b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref
@@ -72,20 +72,6 @@ HLT_2e5_lhmedium_j70_j50a_j0_DJMASS900j50_L1MJJ-500-NFF:
   eventCount: 0
 HLT_2e5_lhmedium_j70_j50a_j0_DJMASS900j50_L1jMJJ-500-NFF:
   eventCount: 0
-  stepCounts:
-    0: 1
-    1: 1
-    2: 1
-    3: 1
-    4: 1
-    5: 1
-  stepFeatures:
-    0: 6
-    1: 2
-    2: 4
-    3: 2
-    4: 2
-    5: 2
 HLT_2e5_lhvloose_bBeeM6000_L14J15:
   eventCount: 0
 HLT_2e5_lhvloose_bBeeM6000_L1All:
@@ -265,16 +251,8 @@ HLT_2j100_L1CEP-CjJ90:
   eventCount: 0
 HLT_2j110_0eta180_emergingPTF0p09dR1p2_a10sd_cssk_pf_jes_ftf_L1jLJ140:
   eventCount: 0
-  stepCounts:
-    0: 50
-  stepFeatures:
-    0: 50
 HLT_2j110_0eta200_emergingPTF0p1dR1p2_a10sd_cssk_pf_jes_ftf_L1jLJ140:
   eventCount: 0
-  stepCounts:
-    0: 50
-  stepFeatures:
-    0: 50
 HLT_2j120_mb_afprec_afpdijet_L1AFP_A_AND_C_TOF_J50:
   eventCount: 0
 HLT_2j120_mb_afprec_afpdijet_L1AFP_A_AND_C_TOF_jJ90:
@@ -365,32 +343,14 @@ HLT_2j35_0eta290_020jvt_bdl1d60_3j35_pf_ftf_presel3j25XX2j25b85_L15J15p0ETA25:
   eventCount: 0
 HLT_2j35_0eta290_020jvt_bdl1d60_3j35_pf_ftf_presel3j25XX2j25b85_L15jJ40p0ETA25:
   eventCount: 0
-  stepCounts:
-    0: 4
-    1: 1
-  stepFeatures:
-    0: 8
-    1: 2
 HLT_2j35_0eta290_020jvt_bdl1d70_2j35_0eta290_020jvt_bdl1d85_pf_ftf_presel4j25b95_L14J15p0ETA25:
   eventCount: 0
 HLT_2j35_0eta290_020jvt_bdl1d70_2j35_0eta290_020jvt_bdl1d85_pf_ftf_presel4j25b95_L14jJ40p0ETA25:
   eventCount: 0
-  stepCounts:
-    0: 6
-    1: 1
-  stepFeatures:
-    0: 12
-    1: 2
 HLT_2j35c_020jvt_bdl1d60_2j35c_020jvt_pf_ftf_presel2j25XX2j25b85_L14J15p0ETA25:
   eventCount: 0
 HLT_2j35c_020jvt_bdl1d60_2j35c_020jvt_pf_ftf_presel2j25XX2j25b85_L14jJ40p0ETA25:
   eventCount: 0
-  stepCounts:
-    0: 6
-    1: 1
-  stepFeatures:
-    0: 12
-    1: 2
 HLT_2j35c_2j35c_85bdips_roiftf_presel4c35_L14J15p0ETA25:
   eventCount: 0
 HLT_2j35c_2j35c_85bdips_roiftf_presel4c35_L1J45p0ETA21_3J15p0ETA25:
@@ -399,22 +359,10 @@ HLT_2j45_0eta290_020jvt_bdl1d60_2j45_pf_ftf_presel2j25XX2j25b85_L14J15p0ETA25:
   eventCount: 0
 HLT_2j45_0eta290_020jvt_bdl1d60_2j45_pf_ftf_presel2j25XX2j25b85_L14jJ40p0ETA25:
   eventCount: 0
-  stepCounts:
-    0: 6
-    1: 1
-  stepFeatures:
-    0: 12
-    1: 2
 HLT_2j45_0eta290_020jvt_bdl1d60_3j45_pf_ftf_presel3j25XX2j25b85_L15J15p0ETA25:
   eventCount: 0
 HLT_2j45_0eta290_020jvt_bdl1d60_3j45_pf_ftf_presel3j25XX2j25b85_L15jJ40p0ETA25:
   eventCount: 0
-  stepCounts:
-    0: 4
-    1: 1
-  stepFeatures:
-    0: 8
-    1: 2
 HLT_2j45_0eta290_020jvt_bdl1d60_pf_ftf_xe50_cell_xe85_pfopufit_L12J15_XE55:
   eventCount: 0
 HLT_2j45_0eta290_020jvt_bdl1d60_pf_ftf_xe50_cell_xe85_tcpufit_L12J15_XE55:
@@ -423,10 +371,6 @@ HLT_2j45_0eta290_020jvt_bdl1d70_j0_HT300_j0_DJMASS700j35_pf_ftf_L1HT150-J20s5pET
   eventCount: 0
 HLT_2j45_0eta290_020jvt_bdl1d70_j0_HT300_j0_DJMASS700j35_pf_ftf_L1jHT150-jJ50s5pETA31_jMJJ-400-CF:
   eventCount: 0
-  stepCounts:
-    0: 8
-  stepFeatures:
-    0: 24
 HLT_2j45c_2j35c_85bdips_roiftf_presel4c45_L14J15p0ETA25:
   eventCount: 0
 HLT_2j45c_2j35c_85bdips_roiftf_presel4c45_L1J45p0ETA21_3J15p0ETA25:
@@ -435,12 +379,6 @@ HLT_2j55_0eta290_020jvt_bdl1d60_2j55_pf_ftf_presel2j25XX2j25b85_L14J15p0ETA25:
   eventCount: 0
 HLT_2j55_0eta290_020jvt_bdl1d60_2j55_pf_ftf_presel2j25XX2j25b85_L14jJ40p0ETA25:
   eventCount: 0
-  stepCounts:
-    0: 6
-    1: 1
-  stepFeatures:
-    0: 12
-    1: 2
 HLT_2mu10_PhysicsTLA_L12MU8F:
   eventCount: 0
 HLT_2mu10_bJpsimumu_L12MU8F:
@@ -1009,12 +947,6 @@ HLT_3j35_0eta290_020jvt_bdl1d70_j35_pf_ftf_presel2j25XX2j25b85_L14J15p0ETA25:
   eventCount: 0
 HLT_3j35_0eta290_020jvt_bdl1d70_j35_pf_ftf_presel2j25XX2j25b85_L14jJ40p0ETA25:
   eventCount: 0
-  stepCounts:
-    0: 6
-    1: 1
-  stepFeatures:
-    0: 12
-    1: 2
 HLT_3j65_0eta290_020jvt_bdl1d77_pf_ftf_presel3j45b95_L13J35p0ETA23:
   eventCount: 0
 HLT_3j65_0eta290_020jvt_bdl1d77_pf_ftf_presel3j45b95_L13jJ70p0ETA23:
@@ -1095,12 +1027,6 @@ HLT_4j35_0eta290_020jvt_bdl1d77_pf_ftf_presel4j25b95_L14J15p0ETA25:
   eventCount: 0
 HLT_4j35_0eta290_020jvt_bdl1d77_pf_ftf_presel4j25b95_L14jJ40p0ETA25:
   eventCount: 0
-  stepCounts:
-    0: 6
-    1: 1
-  stepFeatures:
-    0: 6
-    1: 1
 HLT_4mu4_L14MU3V:
   eventCount: 0
 HLT_4mu4_bDimu6000_L14MU3V:
@@ -1109,26 +1035,14 @@ HLT_5j35c_020jvt_j25c_020jvt_SHARED_j25c_020jvt_bdl1d60_pf_ftf_presel5c25XXc25b8
   eventCount: 0
 HLT_5j35c_020jvt_j25c_020jvt_SHARED_j25c_020jvt_bdl1d60_pf_ftf_presel5c25XXc25b85_L14jJ40:
   eventCount: 0
-  stepCounts:
-    0: 1
-  stepFeatures:
-    0: 3
 HLT_5j35c_020jvt_j25c_020jvt_SHARED_j25c_020jvt_boffperf_pf_ftf_presel6c25_L14J15:
   eventCount: 0
 HLT_5j35c_020jvt_j25c_020jvt_SHARED_j25c_020jvt_boffperf_pf_ftf_presel6c25_L14jJ40:
   eventCount: 0
-  stepCounts:
-    0: 1
-  stepFeatures:
-    0: 3
 HLT_5j45c_020jvt_j25c_020jvt_SHARED_j25c_020jvt_bdl1d60_pf_ftf_presel5c25XXc25b85_L14J15:
   eventCount: 0
 HLT_5j45c_020jvt_j25c_020jvt_SHARED_j25c_020jvt_bdl1d60_pf_ftf_presel5c25XXc25b85_L14jJ40:
   eventCount: 0
-  stepCounts:
-    0: 1
-  stepFeatures:
-    0: 3
 HLT_5j70c_L14J15:
   eventCount: 0
 HLT_5j70c_L14jJ40:
@@ -1183,20 +1097,12 @@ HLT_6j35c_020jvt_pf_ftf_presel6c25_L14J15:
   eventCount: 0
 HLT_6j35c_020jvt_pf_ftf_presel6c25_L14jJ40:
   eventCount: 0
-  stepCounts:
-    0: 1
-  stepFeatures:
-    0: 1
 HLT_6j35c_pf_ftf_presel6c25_L14J15:
   eventCount: 0
 HLT_6j45c_020jvt_pf_ftf_presel6c25_L14J15:
   eventCount: 0
 HLT_6j45c_020jvt_pf_ftf_presel6c25_L14jJ40:
   eventCount: 0
-  stepCounts:
-    0: 1
-  stepFeatures:
-    0: 1
 HLT_6j55c_L14J15:
   eventCount: 0
 HLT_6j55c_L14jJ40:
@@ -1252,10 +1158,10 @@ HLT_distrk20_medium_L1XE55:
 HLT_distrk20_medium_L1jXE100:
   eventCount: 1
   stepCounts:
-    0: 50
+    0: 2
     1: 1
   stepFeatures:
-    0: 50
+    0: 2
     1: 1
 HLT_distrk20_tight_L1XE50:
   eventCount: 0
@@ -1264,10 +1170,10 @@ HLT_distrk20_tight_L1XE55:
 HLT_distrk20_tight_L1jXE100:
   eventCount: 1
   stepCounts:
-    0: 50
+    0: 2
     1: 1
   stepFeatures:
-    0: 50
+    0: 2
     1: 1
 HLT_e100_etcut_L1EM22VHI:
   eventCount: 0
@@ -1310,19 +1216,19 @@ HLT_e10_lhvloose_L1EM7:
 HLT_e10_lhvloose_L1eEM9:
   eventCount: 0
   stepCounts:
-    0: 4
-    1: 4
-    2: 4
-    3: 3
-    4: 3
-    5: 3
+    0: 2
+    1: 2
+    2: 2
+    3: 2
+    4: 2
+    5: 2
   stepFeatures:
-    0: 5
-    1: 5
-    2: 8
-    3: 3
-    4: 3
-    5: 3
+    0: 3
+    1: 3
+    2: 4
+    3: 2
+    4: 2
+    5: 2
 HLT_e120_etcut_L1EM22VHI:
   eventCount: 0
 HLT_e120_etcut_L1eEM26M:
@@ -1432,7 +1338,7 @@ HLT_e14_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-EM12:
 HLT_e14_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-eEM15:
   eventCount: 0
   stepFeatures:
-    0: 15
+    0: 7
 HLT_e14_lhtight_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM12:
   eventCount: 0
 HLT_e14_lhtight_e4_idperf_tight_nogsf_probe_1invmAB5_L1JPSI-1M5-EM12:
@@ -1582,7 +1488,7 @@ HLT_e24_lhmedium_ivarloose_tau20_mediumRNN_tracktwoMVA_03dRAB_L1EM22VHI:
 HLT_e24_lhmedium_ivarloose_tau20_mediumRNN_tracktwoMVA_03dRAB_L1eEM26M:
   eventCount: 0
   stepFeatures:
-    0: 4
+    0: 3
 HLT_e24_lhtight_ivarloose_L1EM22VHI:
   eventCount: 0
 HLT_e24_lhtight_ivarloose_L1eEM26M:
@@ -1662,7 +1568,7 @@ HLT_e26_lhtight_e14_etcut_L1EM22VHI:
 HLT_e26_lhtight_e14_etcut_L1eEM26M:
   eventCount: 0
   stepFeatures:
-    0: 5
+    0: 4
 HLT_e26_lhtight_e14_etcut_probe_50invmAB130_L1EM22VHI:
   eventCount: 0
 HLT_e26_lhtight_e14_etcut_probe_50invmAB130_L1eEM26M:
@@ -1916,14 +1822,14 @@ HLT_e30_lhloose_nopix_lrtmedium_probe_g25_medium_L1EM20VH:
 HLT_e30_lhloose_nopix_lrtmedium_probe_g25_medium_L1eEM24L:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
   stepFeatures:
-    0: 4
-    1: 2
-    2: 2
+    0: 3
+    1: 1
+    2: 1
     3: 1
 HLT_e30_lhvloose_L1EM22VHI:
   eventCount: 0
@@ -2066,14 +1972,14 @@ HLT_e5_idperf_loose_lrtloose_probe_g25_medium_L1EM20VH:
 HLT_e5_idperf_loose_lrtloose_probe_g25_medium_L1eEM24L:
   eventCount: 0
   stepCounts:
-    0: 4
-    1: 3
-    2: 3
+    0: 3
+    1: 2
+    2: 2
     3: 1
   stepFeatures:
-    0: 4
-    1: 3
-    2: 3
+    0: 3
+    1: 2
+    2: 2
     3: 1
 HLT_e5_idperf_tight_L1EM3:
   eventCount: 16
@@ -2090,19 +1996,19 @@ HLT_e5_idperf_tight_L1EM3:
     3: 25
     4: 25
 HLT_e5_idperf_tight_L1eEM5:
-  eventCount: 13
+  eventCount: 9
   stepCounts:
-    0: 19
-    1: 19
-    2: 13
-    3: 13
-    4: 13
+    0: 9
+    1: 9
+    2: 9
+    3: 9
+    4: 9
   stepFeatures:
-    0: 28
-    1: 28
-    2: 20
-    3: 20
-    4: 20
+    0: 14
+    1: 14
+    2: 14
+    3: 14
+    4: 14
 HLT_e5_idperf_tight_nogsf_L1EM3:
   eventCount: 16
   stepCounts:
@@ -2116,17 +2022,17 @@ HLT_e5_idperf_tight_nogsf_L1EM3:
     2: 25
     3: 25
 HLT_e5_idperf_tight_nogsf_L1eEM5:
-  eventCount: 13
+  eventCount: 9
   stepCounts:
-    0: 19
-    1: 19
-    2: 13
-    3: 13
+    0: 9
+    1: 9
+    2: 9
+    3: 9
   stepFeatures:
-    0: 28
-    1: 28
-    2: 20
-    3: 20
+    0: 14
+    1: 14
+    2: 14
+    3: 14
 HLT_e5_lhtight_L1EM3:
   eventCount: 0
   stepCounts:
@@ -2147,20 +2053,8 @@ HLT_e5_lhtight_e14_etcut_1invmAB5_L1JPSI-1M5-EM12:
   eventCount: 0
 HLT_e5_lhtight_e14_etcut_1invmAB5_L1JPSI-1M5-eEM15:
   eventCount: 0
-  stepCounts:
-    0: 2
-    1: 2
-    2: 1
-    3: 1
-    4: 1
-    5: 1
   stepFeatures:
-    0: 7
-    1: 5
-    2: 11
-    3: 3
-    4: 2
-    5: 2
+    0: 3
 HLT_e5_lhtight_e14_etcut_probe_1invmAB5_L1JPSI-1M5-EM12:
   eventCount: 0
 HLT_e5_lhtight_e9_etcut_1invmAB5_L1JPSI-1M5-EM7:
@@ -2168,19 +2062,19 @@ HLT_e5_lhtight_e9_etcut_1invmAB5_L1JPSI-1M5-EM7:
 HLT_e5_lhtight_e9_etcut_1invmAB5_L1JPSI-1M5-eEM9:
   eventCount: 0
   stepCounts:
-    0: 2
-    1: 2
+    0: 1
+    1: 1
     2: 1
     3: 1
     4: 1
     5: 1
   stepFeatures:
-    0: 8
-    1: 6
-    2: 13
-    3: 3
-    4: 2
-    5: 2
+    0: 5
+    1: 2
+    2: 5
+    3: 2
+    4: 1
+    5: 1
 HLT_e5_lhtight_e9_etcut_probe_1invmAB5_L1JPSI-1M5-EM7:
   eventCount: 0
 HLT_e5_lhtight_noringer_L1EM3:
@@ -2282,20 +2176,6 @@ HLT_e5_lhvloose_j70_j50a_j0_DJMASS1000j50_xe50_tcpufit_L1MJJ-500-NFF:
   eventCount: 0
 HLT_e5_lhvloose_j70_j50a_j0_DJMASS1000j50_xe50_tcpufit_L1jMJJ-500-NFF:
   eventCount: 0
-  stepCounts:
-    0: 5
-    1: 5
-    2: 3
-    3: 3
-    4: 3
-    5: 3
-  stepFeatures:
-    0: 6
-    1: 6
-    2: 7
-    3: 4
-    4: 4
-    5: 4
 HLT_e5_lhvloose_nogsf_bBeeM6000_L1BPH-0DR3-EM7J15:
   eventCount: 0
   stepCounts:
@@ -2387,7 +2267,7 @@ HLT_e9_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-EM7:
 HLT_e9_lhtight_e4_etcut_1invmAB5_L1JPSI-1M5-eEM9:
   eventCount: 0
   stepFeatures:
-    0: 15
+    0: 10
 HLT_e9_lhtight_e4_etcut_probe_1invmAB5_L1JPSI-1M5-EM7:
   eventCount: 0
 HLT_e9_lhtight_e4_idperf_tight_nogsf_probe_1invmAB5_L1JPSI-1M5-EM7:
@@ -2447,9 +2327,9 @@ HLT_g0_hiptrt_L1EM22VHI:
 HLT_g0_hiptrt_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 3
+    0: 2
   stepFeatures:
-    0: 3
+    0: 2
 HLT_g100_loose_L1EM22VHI:
   eventCount: 0
 HLT_g100_loose_L1eEM26M:
@@ -2469,14 +2349,14 @@ HLT_g10_loose_L1EM7:
 HLT_g10_loose_L1eEM9:
   eventCount: 4
   stepCounts:
-    0: 17
-    1: 8
-    2: 8
+    0: 14
+    1: 7
+    2: 7
     3: 4
   stepFeatures:
-    0: 25
-    1: 8
-    2: 9
+    0: 21
+    1: 7
+    2: 8
     3: 4
 HLT_g120_loose_L1EM22VHI:
   eventCount: 0
@@ -2521,14 +2401,14 @@ HLT_g15_loose_L1eEM10L_2mu10_msonly_L1MU5VF_EMPTY:
 HLT_g15_loose_L1eEM12L:
   eventCount: 3
   stepCounts:
-    0: 8
-    1: 5
-    2: 4
+    0: 6
+    1: 4
+    2: 3
     3: 3
   stepFeatures:
-    0: 9
-    1: 5
-    2: 4
+    0: 7
+    1: 4
+    2: 3
     3: 3
 HLT_g15_tight_L1EM10VH:
   eventCount: 1
@@ -2545,14 +2425,14 @@ HLT_g15_tight_L1EM10VH:
 HLT_g15_tight_L1eEM12L:
   eventCount: 1
   stepCounts:
-    0: 8
-    1: 5
-    2: 4
+    0: 6
+    1: 4
+    2: 3
     3: 1
   stepFeatures:
-    0: 9
-    1: 5
-    2: 4
+    0: 7
+    1: 4
+    2: 3
     3: 1
 HLT_g20_loose_L1EM15VH:
   eventCount: 2
@@ -2581,14 +2461,14 @@ HLT_g20_loose_L1EM15VHI:
 HLT_g20_loose_L1eEM18L:
   eventCount: 2
   stepCounts:
-    0: 4
-    1: 3
-    2: 3
+    0: 3
+    1: 2
+    2: 2
     3: 2
   stepFeatures:
-    0: 4
-    1: 3
-    2: 3
+    0: 3
+    1: 2
+    2: 2
     3: 2
 HLT_g20_loose_noiso_L1EM15VH:
   eventCount: 2
@@ -2700,20 +2580,6 @@ HLT_g20_tight_icaloloose_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS500j35_pf_ftf
     0: 1
 HLT_g20_tight_icaloloose_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS500j35_pf_ftf_L1eEM22M_jMJJ-300:
   eventCount: 0
-  stepCounts:
-    0: 2
-    1: 1
-    2: 1
-    3: 1
-    4: 1
-    5: 1
-  stepFeatures:
-    0: 2
-    1: 1
-    2: 1
-    3: 1
-    4: 1
-    5: 3
 HLT_g20_tight_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS500j35_pf_ftf_L1EM18VHI_MJJ-300:
   eventCount: 0
   stepCounts:
@@ -2775,14 +2641,14 @@ HLT_g25_loose_L1EM20VH:
 HLT_g25_loose_L1eEM24L:
   eventCount: 2
   stepCounts:
-    0: 4
-    1: 3
-    2: 3
+    0: 3
+    1: 2
+    2: 2
     3: 2
   stepFeatures:
-    0: 4
-    1: 3
-    2: 3
+    0: 3
+    1: 2
+    2: 2
     3: 2
 HLT_g25_loose_xe40_cell_xe50_tcpufit_18dphiAB_18dphiAC_80mTAC_L1EM22VHI:
   eventCount: 0
@@ -2799,15 +2665,15 @@ HLT_g25_loose_xe40_cell_xe50_tcpufit_18dphiAB_18dphiAC_80mTAC_L1EM22VHI:
 HLT_g25_loose_xe40_cell_xe50_tcpufit_18dphiAB_18dphiAC_80mTAC_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 2
-    2: 2
-    3: 2
+    0: 2
+    1: 1
+    2: 1
+    3: 1
   stepFeatures:
-    0: 3
-    1: 2
-    2: 2
-    3: 2
+    0: 2
+    1: 1
+    2: 1
+    3: 1
 HLT_g25_medium_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_L1EM22VHI:
   eventCount: 0
   stepCounts:
@@ -2839,15 +2705,15 @@ HLT_g25_medium_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90XX2a20_L1EM
 HLT_g25_medium_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90XX2a20_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
     4: 1
   stepFeatures:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
     4: 2
 HLT_g25_medium_4j35a_j0_DJMASS1000j35_L1EM22VHI:
@@ -2865,14 +2731,14 @@ HLT_g25_medium_4j35a_j0_DJMASS1000j35_L1EM22VHI:
 HLT_g25_medium_4j35a_j0_DJMASS1000j35_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
   stepFeatures:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
 HLT_g25_medium_L1EM20VH:
   eventCount: 1
@@ -2893,14 +2759,14 @@ HLT_g25_medium_L1eEM18L_mu24_L1MU18VFCH:
 HLT_g25_medium_L1eEM24L:
   eventCount: 1
   stepCounts:
-    0: 4
-    1: 3
-    2: 3
+    0: 3
+    1: 2
+    2: 2
     3: 1
   stepFeatures:
-    0: 4
-    1: 3
-    2: 3
+    0: 3
+    1: 2
+    2: 2
     3: 1
 HLT_g25_medium_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf_L1EM22VHI:
   eventCount: 0
@@ -2933,15 +2799,15 @@ HLT_g25_medium_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf_presela20
 HLT_g25_medium_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf_presela20b85XX3a20_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
     4: 1
   stepFeatures:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
     4: 3
 HLT_g25_medium_mu24_L1MU14FCH:
@@ -2967,15 +2833,15 @@ HLT_g25_medium_tau25_dikaonmass_tracktwoMVA_50invmAB_L1EM22VHI:
 HLT_g25_medium_tau25_dikaonmass_tracktwoMVA_50invmAB_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
   stepFeatures:
-    0: 7
-    1: 6
-    2: 4
-    3: 3
+    0: 5
+    1: 4
+    2: 2
+    3: 2
 HLT_g25_medium_tau25_dipion1_tracktwoMVA_50invmAB_L1EM22VHI:
   eventCount: 0
   stepCounts:
@@ -2991,15 +2857,15 @@ HLT_g25_medium_tau25_dipion1_tracktwoMVA_50invmAB_L1EM22VHI:
 HLT_g25_medium_tau25_dipion1_tracktwoMVA_50invmAB_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
   stepFeatures:
-    0: 7
-    1: 6
-    2: 4
-    3: 3
+    0: 5
+    1: 4
+    2: 2
+    3: 2
 HLT_g25_medium_tau25_dipion2_tracktwoMVA_50invmAB_L1EM22VHI:
   eventCount: 0
   stepCounts:
@@ -3015,27 +2881,27 @@ HLT_g25_medium_tau25_dipion2_tracktwoMVA_50invmAB_L1EM22VHI:
 HLT_g25_medium_tau25_dipion2_tracktwoMVA_50invmAB_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
   stepFeatures:
-    0: 7
-    1: 6
-    2: 4
-    3: 3
+    0: 5
+    1: 4
+    2: 2
+    3: 2
 HLT_g25_medium_tau25_dipion4_tracktwoMVA_50invmAB_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
   stepFeatures:
-    0: 7
-    1: 6
-    2: 4
-    3: 3
+    0: 5
+    1: 4
+    2: 2
+    3: 2
 HLT_g25_medium_tau25_kaonpi1_tracktwoMVA_50invmAB_L1EM22VHI:
   eventCount: 0
   stepCounts:
@@ -3051,15 +2917,15 @@ HLT_g25_medium_tau25_kaonpi1_tracktwoMVA_50invmAB_L1EM22VHI:
 HLT_g25_medium_tau25_kaonpi1_tracktwoMVA_50invmAB_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
   stepFeatures:
-    0: 7
-    1: 6
-    2: 4
-    3: 3
+    0: 5
+    1: 4
+    2: 2
+    3: 2
 HLT_g25_medium_tau25_kaonpi2_tracktwoMVA_50invmAB_L1EM22VHI:
   eventCount: 0
   stepCounts:
@@ -3075,15 +2941,15 @@ HLT_g25_medium_tau25_kaonpi2_tracktwoMVA_50invmAB_L1EM22VHI:
 HLT_g25_medium_tau25_kaonpi2_tracktwoMVA_50invmAB_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
   stepFeatures:
-    0: 7
-    1: 6
-    2: 4
-    3: 3
+    0: 5
+    1: 4
+    2: 2
+    3: 2
 HLT_g25_medium_tau25_singlepion_tracktwoMVA_50invmAB_L1EM22VHI:
   eventCount: 0
   stepCounts:
@@ -3099,15 +2965,15 @@ HLT_g25_medium_tau25_singlepion_tracktwoMVA_50invmAB_L1EM22VHI:
 HLT_g25_medium_tau25_singlepion_tracktwoMVA_50invmAB_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
   stepFeatures:
-    0: 7
-    1: 6
-    2: 4
-    3: 3
+    0: 5
+    1: 4
+    2: 2
+    3: 2
 HLT_g25_tight_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_L1EM22VHI:
   eventCount: 0
   stepCounts:
@@ -3171,16 +3037,16 @@ HLT_g25_tight_icaloloose_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90X
 HLT_g25_tight_icaloloose_2j35_0eta290_020jvt_bdl1d77_2j35a_pf_ftf_presel2a20b90XX2a20_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
     4: 1
     5: 1
   stepFeatures:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
     4: 1
     5: 2
@@ -3247,16 +3113,16 @@ HLT_g25_tight_icaloloose_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf
 HLT_g25_tight_icaloloose_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf_presela20b85XX3a20_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
     4: 1
     5: 1
   stepFeatures:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
     4: 1
     5: 3
@@ -3394,15 +3260,15 @@ HLT_g25_tight_icalotight_xe40_cell_xe40_tcpufit_xe40_pfopufit_80mTAC_L1EM22VHI:
 HLT_g25_tight_icalotight_xe40_cell_xe40_tcpufit_xe40_pfopufit_80mTAC_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
     4: 1
   stepFeatures:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
     4: 1
     5: 1
@@ -3479,15 +3345,15 @@ HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_80mTAC_L1EM22VHI:
 HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_80mTAC_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
     4: 1
   stepFeatures:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
     4: 1
 HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_L1EM22VHI:
@@ -3507,15 +3373,15 @@ HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_L1EM22VHI:
 HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_L1eEM26M:
   eventCount: 0
   stepCounts:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
     4: 1
   stepFeatures:
-    0: 3
-    1: 2
-    2: 2
+    0: 2
+    1: 1
+    2: 1
     3: 1
     4: 1
 HLT_g25_tight_icalotight_xe40_cell_xe50_tcpufit_xe70_nn_80mTAD_L1EM22VHI:
@@ -3985,10 +3851,6 @@ HLT_g45_loose_6j45c_L14J15p0ETA25:
   eventCount: 0
 HLT_g45_loose_6j45c_L14jJ40p0ETA25:
   eventCount: 0
-  stepCounts:
-    0: 1
-  stepFeatures:
-    0: 1
 HLT_g45_tight_2j55_0eta200_emergingPTF0p1dR0p4_pf_ftf_L1EM22VHI:
   eventCount: 0
   stepCounts:
@@ -4132,31 +3994,19 @@ HLT_hitdvjet200_medium_L1XE55:
 HLT_hitdvjet200_medium_L1jXE100:
   eventCount: 0
   stepCounts:
-    0: 50
-    1: 50
+    0: 2
+    1: 2
   stepFeatures:
-    0: 50
-    1: 50
+    0: 2
+    1: 2
 HLT_hitdvjet260_medium_L1J100:
   eventCount: 0
 HLT_hitdvjet260_medium_L1jJ160:
   eventCount: 0
-  stepCounts:
-    0: 47
-    1: 47
-  stepFeatures:
-    0: 47
-    1: 47
 HLT_hitdvjet260_tight_L1J100:
   eventCount: 0
 HLT_hitdvjet260_tight_L1jJ160:
   eventCount: 0
-  stepCounts:
-    0: 47
-    1: 47
-  stepFeatures:
-    0: 47
-    1: 47
 HLT_isotrk50_L1XE50:
   eventCount: 0
 HLT_j0_FBDJNOSHARED10etXX20etXX34massXX50fbet_L1J20:
@@ -4298,15 +4148,7 @@ HLT_j100_0eta290_020jvt_boffperf_pf_ftf_preselj80_L1J50:
     1: 2
     2: 2
 HLT_j100_0eta290_020jvt_boffperf_pf_ftf_preselj80_L1jJ90:
-  eventCount: 2
-  stepCounts:
-    0: 5
-    1: 2
-    2: 2
-  stepFeatures:
-    0: 5
-    1: 2
-    2: 2
+  eventCount: 0
 HLT_j110_L1J30:
   eventCount: 1
   stepCounts:
@@ -4328,29 +4170,17 @@ HLT_j110_a10sd_cssk_pf_jes_ftf_preselj80_L1J30:
     0: 4
     1: 1
 HLT_j110_a10sd_cssk_pf_jes_ftf_preselj80_L1gLJ80:
-  eventCount: 2
-  stepCounts:
-    0: 6
-    1: 2
-  stepFeatures:
-    0: 6
-    1: 2
+  eventCount: 0
 HLT_j110_a10sd_cssk_pf_jes_ftf_preselj80_L1jJ60:
   eventCount: 2
   stepCounts:
-    0: 6
+    0: 3
     1: 2
   stepFeatures:
-    0: 6
+    0: 3
     1: 2
 HLT_j110_a10sd_cssk_pf_jes_ftf_preselj80_L1jLJ80:
-  eventCount: 2
-  stepCounts:
-    0: 6
-    1: 2
-  stepFeatures:
-    0: 6
-    1: 2
+  eventCount: 0
 HLT_j110_a10t_lcw_jes_L1J30:
   eventCount: 3
   stepCounts:
@@ -4358,23 +4188,15 @@ HLT_j110_a10t_lcw_jes_L1J30:
   stepFeatures:
     0: 4
 HLT_j110_a10t_lcw_jes_L1gLJ80:
-  eventCount: 6
-  stepCounts:
-    0: 6
-  stepFeatures:
-    0: 8
+  eventCount: 0
 HLT_j110_a10t_lcw_jes_L1jJ60:
-  eventCount: 6
+  eventCount: 3
   stepCounts:
-    0: 6
+    0: 3
   stepFeatures:
-    0: 8
+    0: 4
 HLT_j110_a10t_lcw_jes_L1jLJ80:
-  eventCount: 6
-  stepCounts:
-    0: 6
-  stepFeatures:
-    0: 8
+  eventCount: 0
 HLT_j110_pf_ftf_preselj80_L1J30:
   eventCount: 1
   stepCounts:
@@ -4386,10 +4208,10 @@ HLT_j110_pf_ftf_preselj80_L1J30:
 HLT_j110_pf_ftf_preselj80_L1jJ60:
   eventCount: 2
   stepCounts:
-    0: 5
+    0: 3
     1: 2
   stepFeatures:
-    0: 5
+    0: 3
     1: 2
 HLT_j110f_L1J30p31ETA49:
   eventCount: 0
@@ -4405,10 +4227,6 @@ HLT_j150_2j55_0eta290_020jvt_bdl1d70_pf_ftf_preselj80XX2j45b90_L1J85_3J30:
   eventCount: 0
 HLT_j150_2j55_0eta290_020jvt_bdl1d70_pf_ftf_preselj80XX2j45b90_L1jJ140_3jJ60:
   eventCount: 0
-  stepCounts:
-    0: 1
-  stepFeatures:
-    0: 2
 HLT_j15f_L1RD0_FILLED:
   eventCount: 10
   stepCounts:
@@ -4437,10 +4255,6 @@ HLT_j175_0eta180_emergingPTF0p08dR1p2_a10sd_cssk_pf_jes_ftf_L1J100:
   eventCount: 0
 HLT_j175_0eta180_emergingPTF0p08dR1p2_a10sd_cssk_pf_jes_ftf_L1jLJ140:
   eventCount: 0
-  stepCounts:
-    0: 50
-  stepFeatures:
-    0: 50
 HLT_j175_0eta180_emergingPTF0p08dR1p2_a10sd_cssk_pf_jes_ftf_preselj225_L1J100:
   eventCount: 0
 HLT_j175_0eta290_020jvt_bdl1d60_j60_0eta290_020jvt_bdl1d60_pf_ftf_preselj140b85XXj45b85_L1J100:
@@ -4473,10 +4287,6 @@ HLT_j175_pf_ftf_preselj140_L1jJ90:
   eventCount: 0
 HLT_j175_tracklessdR1p2_a10r_subjesIS_ftf_0eta200_L1jLJ140:
   eventCount: 0
-  stepCounts:
-    0: 50
-  stepFeatures:
-    0: 50
 HLT_j175f_L1J50p31ETA49:
   eventCount: 0
 HLT_j175f_L1jJ90p31ETA49:
@@ -4532,25 +4342,25 @@ HLT_j20_0eta290_020jvt_boffperf_pf_ftf_L1RD0_FILLED:
     1: 71
     2: 71
 HLT_j20_0eta290_020jvt_boffperf_pf_ftf_L1jJ30:
-  eventCount: 25
+  eventCount: 7
   stepCounts:
-    0: 50
-    1: 25
-    2: 25
+    0: 7
+    1: 7
+    2: 7
   stepFeatures:
-    0: 50
-    1: 71
-    2: 71
+    0: 7
+    1: 23
+    2: 23
 HLT_j20_0eta290_020jvt_boffperf_pf_ftf_L1jJ40:
-  eventCount: 25
+  eventCount: 5
   stepCounts:
-    0: 50
-    1: 25
-    2: 25
+    0: 5
+    1: 5
+    2: 5
   stepFeatures:
-    0: 50
-    1: 71
-    2: 71
+    0: 5
+    1: 18
+    2: 18
 HLT_j20_0eta290_boffperf_pf_ftf_L1HT190-J15s5pETA21:
   eventCount: 0
 HLT_j20_0eta290_boffperf_pf_ftf_preselcHT450_PhysicsTLA_L1HT190-J15s5pETA21:
@@ -4566,15 +4376,7 @@ HLT_j20_L1HT190-J15s5pETA21:
 HLT_j20_PhysicsTLA_L1HT190-J15s5pETA21:
   eventCount: 0
 HLT_j20_PhysicsTLA_L1HT190-jJ40s5pETA21:
-  eventCount: 35
-  stepCounts:
-    0: 35
-    1: 35
-    2: 35
-  stepFeatures:
-    0: 110
-    1: 110
-    2: 35
+  eventCount: 0
 HLT_j20_PhysicsTLA_L1J100:
   eventCount: 0
 HLT_j20_PhysicsTLA_L1J50_DETA20-J50J:
@@ -4588,25 +4390,9 @@ HLT_j20_PhysicsTLA_L1J50_DETA20-J50J:
     1: 10
     2: 3
 HLT_j20_PhysicsTLA_L1jJ160:
-  eventCount: 38
-  stepCounts:
-    0: 38
-    1: 38
-    2: 38
-  stepFeatures:
-    0: 125
-    1: 125
-    2: 38
+  eventCount: 0
 HLT_j20_PhysicsTLA_L1jJ90_DETA20-jJ90J:
-  eventCount: 41
-  stepCounts:
-    0: 41
-    1: 41
-    2: 41
-  stepFeatures:
-    0: 134
-    1: 134
-    2: 41
+  eventCount: 0
 HLT_j20_pf_ftf_presel4j85_PhysicsTLA_L13J50:
   eventCount: 0
 HLT_j20_pf_ftf_presel5j50_PhysicsTLA_L14J15:
@@ -4741,10 +4527,6 @@ HLT_j260_pf_ftf_preselj200_L1jJ125:
   eventCount: 0
 HLT_j260_tracklessdR1p2_a10r_subjesIS_ftf_0eta200_L1jLJ140:
   eventCount: 0
-  stepCounts:
-    0: 50
-  stepFeatures:
-    0: 50
 HLT_j260f_L1J75p31ETA49:
   eventCount: 0
 HLT_j260f_L1jJ125p31ETA49:
@@ -4804,15 +4586,15 @@ HLT_j30_0eta290_020jvt_boffperf_pf_ftf_L1J20:
     1: 21
     2: 21
 HLT_j30_0eta290_020jvt_boffperf_pf_ftf_L1jJ50:
-  eventCount: 19
+  eventCount: 4
   stepCounts:
-    0: 50
-    1: 19
-    2: 19
+    0: 4
+    1: 4
+    2: 4
   stepFeatures:
-    0: 50
-    1: 33
-    2: 33
+    0: 4
+    1: 9
+    2: 9
 HLT_j30_CLEANllp_calratio_L1LLP-NOMATCH:
   eventCount: 0
 HLT_j30_CLEANllp_calratio_L1TAU100:
@@ -5048,15 +4830,15 @@ HLT_j45_0eta290_020jvt_boffperf_pf_ftf_L1J20:
     1: 17
     2: 17
 HLT_j45_0eta290_020jvt_boffperf_pf_ftf_L1jJ50:
-  eventCount: 9
+  eventCount: 4
   stepCounts:
-    0: 50
-    1: 9
-    2: 9
-  stepFeatures:
-    0: 50
-    1: 17
-    2: 17
+    0: 4
+    1: 4
+    2: 4
+  stepFeatures:
+    0: 4
+    1: 7
+    2: 7
 HLT_j45_0eta290_020jvt_pf_ftf_boffperf_L1J20:
   eventCount: 9
   stepCounts:
@@ -5068,15 +4850,15 @@ HLT_j45_0eta290_020jvt_pf_ftf_boffperf_L1J20:
     1: 17
     2: 17
 HLT_j45_0eta290_020jvt_pf_ftf_boffperf_L1jJ50:
-  eventCount: 9
+  eventCount: 4
   stepCounts:
-    0: 50
-    1: 9
-    2: 9
+    0: 4
+    1: 4
+    2: 4
   stepFeatures:
-    0: 50
-    1: 17
-    2: 17
+    0: 4
+    1: 7
+    2: 7
 HLT_j45_320eta490_L1J15p31ETA49:
   eventCount: 1
   stepCounts:
@@ -5120,13 +4902,13 @@ HLT_j45_pf_ftf_preselj20_L1RD0_FILLED:
     0: 41
     1: 24
 HLT_j45_pf_ftf_preselj20_L1jJ40:
-  eventCount: 11
+  eventCount: 5
   stepCounts:
-    0: 41
-    1: 11
+    0: 5
+    1: 5
   stepFeatures:
-    0: 41
-    1: 24
+    0: 5
+    1: 13
 HLT_j45f_L1J15p31ETA49:
   eventCount: 1
   stepCounts:
@@ -5262,15 +5044,7 @@ HLT_j60_0eta290_020jvt_boffperf_pf_ftf_L1J50:
     1: 7
     2: 7
 HLT_j60_0eta290_020jvt_boffperf_pf_ftf_L1jJ90:
-  eventCount: 5
-  stepCounts:
-    0: 50
-    1: 5
-    2: 5
-  stepFeatures:
-    0: 50
-    1: 8
-    2: 8
+  eventCount: 0
 HLT_j60_L1J20:
   eventCount: 8
   stepCounts:
@@ -5300,13 +5074,13 @@ HLT_j60_pf_ftf_preselj50_L1J20:
     0: 11
     1: 10
 HLT_j60_pf_ftf_preselj50_L1jJ50:
-  eventCount: 6
+  eventCount: 4
   stepCounts:
-    0: 12
-    1: 6
+    0: 4
+    1: 4
   stepFeatures:
-    0: 12
-    1: 10
+    0: 4
+    1: 7
 HLT_j60f_L1J20p31ETA49:
   eventCount: 1
   stepCounts:
@@ -5314,11 +5088,7 @@ HLT_j60f_L1J20p31ETA49:
   stepFeatures:
     0: 1
 HLT_j60f_L1jJ50p31ETA49:
-  eventCount: 1
-  stepCounts:
-    0: 1
-  stepFeatures:
-    0: 1
+  eventCount: 0
 HLT_j70_j50a_j0_DJMASS1000j50dphi200x400deta_L1MJJ-500-NFF:
   eventCount: 0
 HLT_j70_j50a_j0_DJMASS1000j50dphi200x400deta_L1jMJJ-500-NFF:
@@ -5327,16 +5097,10 @@ HLT_j70_j50a_j0_DJMASS1000j50dphi240_xe90_tcpufit_xe50_cell_L1MJJ-500-NFF:
   eventCount: 0
 HLT_j70_j50a_j0_DJMASS1000j50dphi240_xe90_tcpufit_xe50_cell_L1jMJJ-500-NFF:
   eventCount: 0
-  stepFeatures:
-    0: 1
 HLT_j70a_j50a_2j35a_SHARED_2j35_0eta290_020jvt_bdl1d70_j0_DJMASS1000j50_pf_ftf_presela60XXa40XX2a25_L1MJJ-500-NFF:
   eventCount: 0
 HLT_j70a_j50a_2j35a_SHARED_2j35_0eta290_020jvt_bdl1d70_j0_DJMASS1000j50_pf_ftf_presela60XXa40XX2a25_L1jMJJ-500-NFF:
   eventCount: 0
-  stepCounts:
-    0: 3
-  stepFeatures:
-    0: 15
 HLT_j75_0eta290_020jvt_bdl1d60_3j75_pf_ftf_preselj50b85XX3j50_L14J20:
   eventCount: 0
 HLT_j75_0eta290_020jvt_bdl1d60_3j75_pf_ftf_preselj50b85XX3j50_L14jJ50:
@@ -5358,15 +5122,7 @@ HLT_j80_0eta290_020jvt_boffperf_pf_ftf_L1J50:
     1: 5
     2: 5
 HLT_j80_0eta290_020jvt_boffperf_pf_ftf_L1jJ90:
-  eventCount: 4
-  stepCounts:
-    0: 50
-    1: 4
-    2: 4
-  stepFeatures:
-    0: 50
-    1: 5
-    2: 5
+  eventCount: 0
 HLT_j80_77bdips_roiftf_preselj20_L1J20:
   eventCount: 0
   stepCounts:
@@ -5435,12 +5191,6 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d77_
     0: 10
 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d77_pf_ftf_presel2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25
 : eventCount: 0
-  stepCounts:
-    0: 11
-    1: 1
-  stepFeatures:
-    0: 55
-    1: 5
 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d77_pf_ftf_presel2c20XX2c20b90_L1J45p0ETA21_3J15p0ETA25
 : eventCount: 0
 HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_2j20c_020jvt_bdl1d77_pf_ftf_presel2c20XX2c20b90_L1MU8F_2J15_J20:
@@ -5497,12 +5247,6 @@ HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d82_
     0: 10
 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d82_pf_ftf_presel2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25
 : eventCount: 0
-  stepCounts:
-    0: 11
-    1: 1
-  stepFeatures:
-    0: 55
-    1: 5
 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d82_pf_ftf_preselc60XXc45XXc25XXc20_L1J45p0ETA21_3J15p0ETA25
 : eventCount: 0
 ? HLT_j80c_020jvt_j55c_020jvt_j28c_020jvt_j20c_020jvt_SHARED_3j20c_020jvt_bdl1d85_pf_ftf_presel2c20XX2c20b90_L1J45p0ETA21_3J15p0ETA25
@@ -5576,21 +5320,21 @@ HLT_j85_a10sd_cssk_pf_jes_ftf_preselj50_L1J20:
     0: 11
     1: 9
 HLT_j85_a10sd_cssk_pf_jes_ftf_preselj50_L1jJ50:
-  eventCount: 5
+  eventCount: 4
   stepCounts:
-    0: 19
-    1: 5
+    0: 4
+    1: 4
   stepFeatures:
-    0: 19
-    1: 9
+    0: 4
+    1: 8
 HLT_j85_a10sd_cssk_pf_jes_ftf_preselj50_L1jLJ60:
-  eventCount: 5
+  eventCount: 4
   stepCounts:
-    0: 19
-    1: 5
+    0: 4
+    1: 4
   stepFeatures:
-    0: 19
-    1: 9
+    0: 4
+    1: 8
 HLT_j85_a10sd_cssk_pf_nojcalib_ftf_preselj50_L1J20:
   eventCount: 2
   stepCounts:
@@ -5602,18 +5346,18 @@ HLT_j85_a10sd_cssk_pf_nojcalib_ftf_preselj50_L1J20:
 HLT_j85_a10sd_cssk_pf_nojcalib_ftf_preselj50_L1jJ50:
   eventCount: 2
   stepCounts:
-    0: 19
+    0: 4
     1: 2
   stepFeatures:
-    0: 19
+    0: 4
     1: 2
 HLT_j85_a10sd_cssk_pf_nojcalib_ftf_preselj50_L1jLJ60:
   eventCount: 2
   stepCounts:
-    0: 19
+    0: 4
     1: 2
   stepFeatures:
-    0: 19
+    0: 4
     1: 2
 HLT_j85_a10t_lcw_jes_L1J20:
   eventCount: 9
@@ -5622,17 +5366,17 @@ HLT_j85_a10t_lcw_jes_L1J20:
   stepFeatures:
     0: 17
 HLT_j85_a10t_lcw_jes_L1jJ50:
-  eventCount: 14
+  eventCount: 4
   stepCounts:
-    0: 14
+    0: 4
   stepFeatures:
-    0: 23
+    0: 9
 HLT_j85_a10t_lcw_jes_L1jLJ60:
-  eventCount: 14
+  eventCount: 4
   stepCounts:
-    0: 14
+    0: 4
   stepFeatures:
-    0: 23
+    0: 9
 HLT_j85_a10t_lcw_nojcalib_L1J20:
   eventCount: 8
   stepCounts:
@@ -5640,17 +5384,17 @@ HLT_j85_a10t_lcw_nojcalib_L1J20:
   stepFeatures:
     0: 16
 HLT_j85_a10t_lcw_nojcalib_L1jJ50:
-  eventCount: 12
+  eventCount: 4
   stepCounts:
-    0: 12
+    0: 4
   stepFeatures:
-    0: 21
+    0: 9
 HLT_j85_a10t_lcw_nojcalib_L1jLJ60:
-  eventCount: 12
+  eventCount: 4
   stepCounts:
-    0: 12
+    0: 4
   stepFeatures:
-    0: 21
+    0: 9
 HLT_j85_pf_ftf_preselj50_L1J20:
   eventCount: 4
   stepCounts:
@@ -5662,10 +5406,10 @@ HLT_j85_pf_ftf_preselj50_L1J20:
 HLT_j85_pf_ftf_preselj50_L1jJ50:
   eventCount: 4
   stepCounts:
-    0: 12
+    0: 4
     1: 4
   stepFeatures:
-    0: 12
+    0: 4
     1: 4
 HLT_j85f_L1J20p31ETA49:
   eventCount: 0
@@ -5721,32 +5465,14 @@ HLT_mu10_j225_0eta290_020jvt_boffperf_pf_ftf_preselj180_dRAB04_L1J100:
   eventCount: 0
 HLT_mu10_j225_0eta290_020jvt_boffperf_pf_ftf_preselj180_dRAB04_L1jJ160:
   eventCount: 0
-  stepCounts:
-    0: 4
-    1: 1
-  stepFeatures:
-    0: 4
-    1: 1
 HLT_mu10_j300_0eta290_020jvt_boffperf_pf_ftf_preselj225_dRAB04_L1J100:
   eventCount: 0
 HLT_mu10_j300_0eta290_020jvt_boffperf_pf_ftf_preselj225_dRAB04_L1jJ160:
   eventCount: 0
-  stepCounts:
-    0: 4
-    1: 1
-  stepFeatures:
-    0: 4
-    1: 1
 HLT_mu10_j360_0eta290_020jvt_boffperf_pf_ftf_preselj225_dRAB04_L1J100:
   eventCount: 0
 HLT_mu10_j360_0eta290_020jvt_boffperf_pf_ftf_preselj225_dRAB04_L1jJ160:
   eventCount: 0
-  stepCounts:
-    0: 4
-    1: 1
-  stepFeatures:
-    0: 4
-    1: 1
 HLT_mu10_l2mt_L1MU10BO:
   eventCount: 0
 HLT_mu10_l2mt_L1MU10BOM:
@@ -6427,23 +6153,15 @@ HLT_mu4_j20_0eta290_020jvt_boffperf_pf_ftf_dRAB03_L1MU3V_J15:
     5: 7
     6: 7
 HLT_mu4_j20_0eta290_020jvt_boffperf_pf_ftf_dRAB03_L1MU3V_jJ40:
-  eventCount: 1
+  eventCount: 0
   stepCounts:
-    0: 10
-    1: 8
-    2: 5
-    3: 4
-    4: 4
-    5: 4
-    6: 1
+    0: 1
+    1: 1
+    2: 1
   stepFeatures:
-    0: 12
-    1: 9
-    2: 5
-    3: 4
-    4: 4
-    5: 12
-    6: 12
+    0: 1
+    1: 1
+    2: 1
 HLT_mu4_j20_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V:
   eventCount: 2
   stepCounts:
@@ -6499,23 +6217,15 @@ HLT_mu4_j20_0eta290_boffperf_pf_ftf_dRAB04_L1MU3V_J12:
     5: 15
     6: 15
 HLT_mu4_j20_0eta290_boffperf_pf_ftf_dRAB04_L1MU3V_jJ30:
-  eventCount: 2
+  eventCount: 0
   stepCounts:
-    0: 10
-    1: 8
-    2: 5
-    3: 4
-    4: 4
-    5: 4
-    6: 2
+    0: 2
+    1: 2
+    2: 1
   stepFeatures:
-    0: 12
-    1: 9
-    2: 5
-    3: 4
-    4: 4
-    5: 17
-    6: 17
+    0: 2
+    1: 2
+    2: 1
 HLT_mu4_j35_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15:
   eventCount: 1
   stepCounts:
@@ -6536,34 +6246,18 @@ HLT_mu4_j35_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15:
     6: 3
 HLT_mu4_j35_0eta290_boffperf_pf_ftf_dRAB03_L1BTAG-MU3VjJ40:
   eventCount: 0
-  stepCounts:
-    0: 1
-  stepFeatures:
-    0: 1
 HLT_mu4_j35_0eta290_boffperf_pf_ftf_dRAB04_L1BTAG-MU3VjJ40:
   eventCount: 0
+HLT_mu4_j35_0eta290_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40:
+  eventCount: 0
   stepCounts:
     0: 1
+    1: 1
+    2: 1
   stepFeatures:
     0: 1
-HLT_mu4_j35_0eta290_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40:
-  eventCount: 1
-  stepCounts:
-    0: 10
-    1: 8
-    2: 5
-    3: 4
-    4: 4
-    5: 1
-    6: 1
-  stepFeatures:
-    0: 12
-    1: 9
-    2: 5
-    3: 4
-    4: 4
-    5: 3
-    6: 3
+    1: 1
+    2: 1
 HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15:
   eventCount: 1
   stepCounts:
@@ -6575,51 +6269,29 @@ HLT_mu4_j45_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15:
     5: 1
     6: 1
   stepFeatures:
-    0: 5
-    1: 4
-    2: 3
-    3: 2
-    4: 2
-    5: 2
-    6: 2
-HLT_mu4_j45_0eta290_boffperf_pf_ftf_dRAB04_L1BTAG-MU3VjJ40:
-  eventCount: 0
-  stepCounts:
-    0: 1
-  stepFeatures:
-    0: 1
-HLT_mu4_j45_0eta290_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40:
-  eventCount: 1
-  stepCounts:
-    0: 10
-    1: 8
-    2: 5
-    3: 4
-    4: 4
-    5: 1
-    6: 1
-  stepFeatures:
-    0: 12
-    1: 9
-    2: 5
-    3: 4
-    4: 4
+    0: 5
+    1: 4
+    2: 3
+    3: 2
+    4: 2
     5: 2
     6: 2
-HLT_mu4_j70_j50a_j0_DJMASS1000j50_xe50_tcpufit_L1MJJ-500-NFF:
+HLT_mu4_j45_0eta290_boffperf_pf_ftf_dRAB04_L1BTAG-MU3VjJ40:
   eventCount: 0
-HLT_mu4_j70_j50a_j0_DJMASS1000j50_xe50_tcpufit_L1jMJJ-500-NFF:
+HLT_mu4_j45_0eta290_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40:
   eventCount: 0
   stepCounts:
-    0: 2
-    1: 2
-    2: 2
-    3: 1
+    0: 1
+    1: 1
+    2: 1
   stepFeatures:
-    0: 2
-    1: 2
-    2: 2
-    3: 1
+    0: 1
+    1: 1
+    2: 1
+HLT_mu4_j70_j50a_j0_DJMASS1000j50_xe50_tcpufit_L1MJJ-500-NFF:
+  eventCount: 0
+HLT_mu4_j70_j50a_j0_DJMASS1000j50_xe50_tcpufit_L1jMJJ-500-NFF:
+  eventCount: 0
 HLT_mu4_l2io_L1MU3V:
   eventCount: 4
   stepCounts:
@@ -6792,18 +6464,6 @@ HLT_mu6_j100_0eta290_boffperf_pf_ftf_dRAB04_L1BTAG-MU5VFjJ90:
   eventCount: 0
 HLT_mu6_j100_0eta290_boffperf_pf_ftf_dRAB04_L1MU5VF_jJ90:
   eventCount: 0
-  stepCounts:
-    0: 7
-    1: 5
-    2: 3
-    3: 2
-    4: 2
-  stepFeatures:
-    0: 7
-    1: 5
-    2: 3
-    3: 2
-    4: 2
 HLT_mu6_j45_0eta290_boffperf_pf_ftf_dRAB03_L1BTAG-MU5VFjJ50:
   eventCount: 0
 HLT_mu6_j45_nojcalib_L1J20:
@@ -6832,24 +6492,16 @@ HLT_mu6_j60_0eta290_020jvt_boffperf_pf_ftf_dRAB04_L1MU3V_J15:
     4: 1
 HLT_mu6_j60_0eta290_boffperf_pf_ftf_dRAB04_L1BTAG-MU3VjJ40:
   eventCount: 0
-  stepCounts:
-    0: 1
-  stepFeatures:
-    0: 1
 HLT_mu6_j60_0eta290_boffperf_pf_ftf_dRAB04_L1MU3V_jJ40:
   eventCount: 0
   stepCounts:
-    0: 10
-    1: 7
-    2: 5
-    3: 3
-    4: 3
+    0: 1
+    1: 1
+    2: 1
   stepFeatures:
-    0: 10
-    1: 7
-    2: 5
-    3: 3
-    4: 3
+    0: 1
+    1: 1
+    2: 1
 HLT_mu6_l2io_mu4_l2io_invmDimu_L1BPH-2M9-0DR15-MU5VFMU3V:
   eventCount: 0
 HLT_mu6_msonly_L1MU5VF:
@@ -7202,23 +6854,23 @@ HLT_noalg_L1XE50:
 HLT_noalg_L1XE55:
   eventCount: 0
 HLT_noalg_L1gJ160:
-  eventCount: 27
+  eventCount: 0
 HLT_noalg_L1gLJ160:
-  eventCount: 30
+  eventCount: 0
 HLT_noalg_L1gXEJWOJ100:
-  eventCount: 44
+  eventCount: 0
 HLT_noalg_L1gXENC100:
-  eventCount: 46
+  eventCount: 0
 HLT_noalg_L1gXERHO100:
-  eventCount: 46
+  eventCount: 0
 HLT_noalg_L1jJ160:
-  eventCount: 47
+  eventCount: 0
 HLT_noalg_L1jJ500:
   eventCount: 0
 HLT_noalg_L1jLJ140:
-  eventCount: 50
+  eventCount: 0
 HLT_noalg_L1jXE100:
-  eventCount: 50
+  eventCount: 2
 HLT_noalg_L1jXEPerf100:
   eventCount: 0
 HLT_tau0_mediumRNN_tracktwoMVA_tau0_mediumRNN_tracktwoMVA_03dRAB30_L1DR-TAU20ITAU12I-J25:
@@ -7286,7 +6938,7 @@ HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55:
 HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55:
@@ -7294,7 +6946,7 @@ HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55:
 HLT_tau160_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau160_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau160_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55:
@@ -7302,7 +6954,7 @@ HLT_tau160_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55:
 HLT_tau160_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau160_perf_tracktwoMVABDT_L1TAU100:
   eventCount: 0
 HLT_tau160_perf_tracktwoMVABDT_L1eTAU140:
@@ -7324,7 +6976,7 @@ HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1XE55:
 HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55:
@@ -7332,7 +6984,7 @@ HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55:
 HLT_tau180_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau180_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau180_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE55:
@@ -7340,7 +6992,7 @@ HLT_tau180_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE55:
 HLT_tau180_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau180_tightRNN_tracktwoLLP_L1TAU100:
   eventCount: 0
 HLT_tau180_tightRNN_tracktwoLLP_L1eTAU140:
@@ -7550,7 +7202,7 @@ HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55:
 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55:
@@ -7558,7 +7210,7 @@ HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55:
 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55:
@@ -7566,7 +7218,7 @@ HLT_tau20_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55:
 HLT_tau20_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau20_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_02dRAB10_L1cTAU20M_DR-eTAU20eTAU12-jJ40:
   eventCount: 0
 HLT_tau20_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB10_L1cTAU20M_DR-eTAU20eTAU12-jJ40:
@@ -7640,19 +7292,19 @@ HLT_tau25_idperf_tracktwoMVABDT_L1TAU12IM:
     3: 14
     4: 14
 HLT_tau25_idperf_tracktwoMVABDT_L1cTAU20M:
-  eventCount: 9
+  eventCount: 10
   stepCounts:
-    0: 9
-    1: 9
-    2: 9
-    3: 9
-    4: 9
+    0: 10
+    1: 10
+    2: 10
+    3: 10
+    4: 10
   stepFeatures:
-    0: 13
-    1: 13
-    2: 13
-    3: 13
-    4: 13
+    0: 14
+    1: 14
+    2: 14
+    3: 14
+    4: 14
 HLT_tau25_idperf_tracktwoMVABDT_L1eTAU20:
   eventCount: 10
   stepCounts:
@@ -7696,19 +7348,19 @@ HLT_tau25_idperf_tracktwoMVA_L1TAU12IM:
     3: 14
     4: 14
 HLT_tau25_idperf_tracktwoMVA_L1cTAU20M:
-  eventCount: 9
+  eventCount: 10
   stepCounts:
-    0: 9
-    1: 9
-    2: 9
-    3: 9
-    4: 9
+    0: 10
+    1: 10
+    2: 10
+    3: 10
+    4: 10
   stepFeatures:
-    0: 13
-    1: 13
-    2: 13
-    3: 13
-    4: 13
+    0: 14
+    1: 14
+    2: 14
+    3: 14
+    4: 14
 HLT_tau25_idperf_tracktwoMVA_L1eTAU20:
   eventCount: 10
   stepCounts:
@@ -7738,19 +7390,19 @@ HLT_tau25_idperf_tracktwoMVA_L1eTAU20M:
     3: 17
     4: 17
 HLT_tau25_idperf_tracktwoMVA_L1jTAU20:
-  eventCount: 14
+  eventCount: 12
   stepCounts:
-    0: 14
-    1: 14
-    2: 14
-    3: 14
-    4: 14
+    0: 12
+    1: 12
+    2: 12
+    3: 12
+    4: 12
   stepFeatures:
-    0: 24
-    1: 24
-    2: 24
-    3: 24
-    4: 24
+    0: 20
+    1: 20
+    2: 20
+    3: 20
+    4: 20
 HLT_tau25_looseRNN_trackLRT_L1TAU12IM:
   eventCount: 4
   stepCounts:
@@ -7806,14 +7458,14 @@ HLT_tau25_mediumRNN_trackLRT_L1TAU12IM:
 HLT_tau25_mediumRNN_trackLRT_L1cTAU20M:
   eventCount: 4
   stepCounts:
-    0: 9
-    1: 9
-    2: 9
+    0: 10
+    1: 10
+    2: 10
     3: 4
   stepFeatures:
-    0: 13
-    1: 13
-    2: 13
+    0: 14
+    1: 14
+    2: 14
     3: 4
 HLT_tau25_mediumRNN_trackLRT_L1eTAU20:
   eventCount: 4
@@ -7842,19 +7494,19 @@ HLT_tau25_mediumRNN_tracktwoLLP_L1TAU12IM:
     3: 14
     4: 5
 HLT_tau25_mediumRNN_tracktwoLLP_L1cTAU20M:
-  eventCount: 4
+  eventCount: 5
   stepCounts:
-    0: 9
-    1: 9
-    2: 9
-    3: 9
-    4: 4
+    0: 10
+    1: 10
+    2: 10
+    3: 10
+    4: 5
   stepFeatures:
-    0: 13
-    1: 13
-    2: 13
-    3: 13
-    4: 4
+    0: 14
+    1: 14
+    2: 14
+    3: 14
+    4: 5
 HLT_tau25_mediumRNN_tracktwoMVABDT_L1TAU12IM:
   eventCount: 2
   stepCounts:
@@ -7870,19 +7522,19 @@ HLT_tau25_mediumRNN_tracktwoMVABDT_L1TAU12IM:
     3: 14
     4: 2
 HLT_tau25_mediumRNN_tracktwoMVABDT_L1cTAU20M:
-  eventCount: 1
+  eventCount: 2
   stepCounts:
-    0: 9
-    1: 9
-    2: 9
-    3: 9
-    4: 1
+    0: 10
+    1: 10
+    2: 10
+    3: 10
+    4: 2
   stepFeatures:
-    0: 13
-    1: 13
-    2: 13
-    3: 13
-    4: 1
+    0: 14
+    1: 14
+    2: 14
+    3: 14
+    4: 2
 HLT_tau25_mediumRNN_tracktwoMVABDT_L1eTAU20:
   eventCount: 2
   stepCounts:
@@ -7934,19 +7586,19 @@ HLT_tau25_mediumRNN_tracktwoMVA_L1TAU12IM:
     3: 14
     4: 2
 HLT_tau25_mediumRNN_tracktwoMVA_L1cTAU20M:
-  eventCount: 1
+  eventCount: 2
   stepCounts:
-    0: 9
-    1: 9
-    2: 9
-    3: 9
-    4: 1
+    0: 10
+    1: 10
+    2: 10
+    3: 10
+    4: 2
   stepFeatures:
-    0: 13
-    1: 13
-    2: 13
-    3: 13
-    4: 1
+    0: 14
+    1: 14
+    2: 14
+    3: 14
+    4: 2
 HLT_tau25_mediumRNN_tracktwoMVA_L1eTAU20:
   eventCount: 2
   stepCounts:
@@ -7976,19 +7628,19 @@ HLT_tau25_mediumRNN_tracktwoMVA_L1eTAU20M:
     3: 17
     4: 2
 HLT_tau25_mediumRNN_tracktwoMVA_L1jTAU20:
-  eventCount: 3
+  eventCount: 2
   stepCounts:
-    0: 14
-    1: 14
-    2: 14
-    3: 14
-    4: 3
+    0: 12
+    1: 12
+    2: 12
+    3: 12
+    4: 2
   stepFeatures:
-    0: 24
-    1: 24
-    2: 24
-    3: 24
-    4: 4
+    0: 20
+    1: 20
+    2: 20
+    3: 20
+    4: 2
 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55:
@@ -7996,7 +7648,7 @@ HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55:
 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55:
@@ -8004,7 +7656,7 @@ HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55:
 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55:
@@ -8012,7 +7664,7 @@ HLT_tau25_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55:
 HLT_tau25_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau25_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_02dRAB10_L1cTAU20M_DR-eTAU20eTAU12-jJ40:
   eventCount: 0
 HLT_tau25_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB30_L1DR-TAU20ITAU12I-J25:
@@ -8023,16 +7675,6 @@ HLT_tau25_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB_j70_j50a_j0_D
   eventCount: 0
 HLT_tau25_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB_j70_j50a_j0_DJMASS900j50_L1jMJJ-500-NFF:
   eventCount: 0
-  stepCounts:
-    0: 5
-    1: 5
-    2: 5
-    3: 5
-  stepFeatures:
-    0: 20
-    1: 20
-    2: 20
-    3: 20
 HLT_tau25_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_03dRAB30_L1DR-TAU20ITAU12I-J25:
   eventCount: 0
 HLT_tau25_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_03dRAB_L1TAU20IM_2TAU12IM_4J12p0ETA25:
@@ -8052,19 +7694,19 @@ HLT_tau25_perf_tracktwoMVABDT_L1TAU12IM:
     3: 14
     4: 8
 HLT_tau25_perf_tracktwoMVABDT_L1cTAU20M:
-  eventCount: 6
+  eventCount: 7
   stepCounts:
-    0: 9
-    1: 9
-    2: 9
-    3: 9
-    4: 6
-  stepFeatures:
-    0: 13
-    1: 13
-    2: 13
-    3: 13
+    0: 10
+    1: 10
+    2: 10
+    3: 10
     4: 7
+  stepFeatures:
+    0: 14
+    1: 14
+    2: 14
+    3: 14
+    4: 8
 HLT_tau25_perf_tracktwoMVABDT_L1eTAU20:
   eventCount: 7
   stepCounts:
@@ -8108,19 +7750,19 @@ HLT_tau25_perf_tracktwoMVA_L1TAU12IM:
     3: 14
     4: 8
 HLT_tau25_perf_tracktwoMVA_L1cTAU20M:
-  eventCount: 6
+  eventCount: 7
   stepCounts:
-    0: 9
-    1: 9
-    2: 9
-    3: 9
-    4: 6
-  stepFeatures:
-    0: 13
-    1: 13
-    2: 13
-    3: 13
+    0: 10
+    1: 10
+    2: 10
+    3: 10
     4: 7
+  stepFeatures:
+    0: 14
+    1: 14
+    2: 14
+    3: 14
+    4: 8
 HLT_tau25_perf_tracktwoMVA_L1eTAU20:
   eventCount: 7
   stepCounts:
@@ -8150,19 +7792,19 @@ HLT_tau25_perf_tracktwoMVA_L1eTAU20M:
     3: 17
     4: 8
 HLT_tau25_perf_tracktwoMVA_L1jTAU20:
-  eventCount: 12
+  eventCount: 10
   stepCounts:
-    0: 14
-    1: 14
-    2: 14
-    3: 14
-    4: 12
+    0: 12
+    1: 12
+    2: 12
+    3: 12
+    4: 10
   stepFeatures:
-    0: 24
-    1: 24
-    2: 24
-    3: 24
-    4: 15
+    0: 20
+    1: 20
+    2: 20
+    3: 20
+    4: 11
 HLT_tau25_tightRNN_trackLRT_L1TAU12IM:
   eventCount: 3
   stepCounts:
@@ -8274,11 +7916,11 @@ HLT_tau35_idperf_tracktwoMVA_L1jTAU30:
     3: 9
     4: 9
   stepFeatures:
-    0: 15
-    1: 15
-    2: 15
-    3: 15
-    4: 15
+    0: 14
+    1: 14
+    2: 14
+    3: 14
+    4: 14
 HLT_tau35_idperf_tracktwoMVA_L1jTAU30M:
   eventCount: 6
   stepCounts:
@@ -8288,11 +7930,11 @@ HLT_tau35_idperf_tracktwoMVA_L1jTAU30M:
     3: 6
     4: 6
   stepFeatures:
-    0: 10
-    1: 10
-    2: 10
-    3: 10
-    4: 10
+    0: 9
+    1: 9
+    2: 9
+    3: 9
+    4: 9
 HLT_tau35_looseRNN_tracktwoMVA_L1TAU20IM:
   eventCount: 2
   stepCounts:
@@ -8362,10 +8004,10 @@ HLT_tau35_mediumRNN_tracktwoMVA_L1jTAU30:
     3: 9
     4: 1
   stepFeatures:
-    0: 15
-    1: 15
-    2: 15
-    3: 15
+    0: 14
+    1: 14
+    2: 14
+    3: 14
     4: 1
 HLT_tau35_mediumRNN_tracktwoMVA_L1jTAU30M:
   eventCount: 1
@@ -8376,10 +8018,10 @@ HLT_tau35_mediumRNN_tracktwoMVA_L1jTAU30M:
     3: 6
     4: 1
   stepFeatures:
-    0: 10
-    1: 10
-    2: 10
-    3: 10
+    0: 9
+    1: 9
+    2: 9
+    3: 9
     4: 1
 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE50:
   eventCount: 0
@@ -8388,7 +8030,7 @@ HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55:
 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55:
@@ -8396,7 +8038,7 @@ HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55:
 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55:
@@ -8404,7 +8046,7 @@ HLT_tau35_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55:
 HLT_tau35_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau35_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB30_L1DR-TAU20ITAU12I-J25:
   eventCount: 0
 HLT_tau35_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB_L1TAU20IM_2TAU12IM_4J12p0ETA25:
@@ -8449,16 +8091,6 @@ HLT_tau35_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_03dRAB_L1cTAU30M_2cT
     3: 15
 HLT_tau35_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_03dRAB_L1cTAU30M_2cTAU20M_4jJ30p0ETA25:
   eventCount: 0
-  stepCounts:
-    0: 4
-    1: 4
-    2: 4
-    3: 4
-  stepFeatures:
-    0: 15
-    1: 15
-    2: 15
-    3: 15
 HLT_tau35_perf_tracktwoMVA_L1TAU20IM:
   eventCount: 5
   stepCounts:
@@ -8510,10 +8142,10 @@ HLT_tau35_perf_tracktwoMVA_L1jTAU30:
     3: 9
     4: 6
   stepFeatures:
-    0: 15
-    1: 15
-    2: 15
-    3: 15
+    0: 14
+    1: 14
+    2: 14
+    3: 14
     4: 7
 HLT_tau35_perf_tracktwoMVA_L1jTAU30M:
   eventCount: 2
@@ -8524,10 +8156,10 @@ HLT_tau35_perf_tracktwoMVA_L1jTAU30M:
     3: 6
     4: 2
   stepFeatures:
-    0: 10
-    1: 10
-    2: 10
-    3: 10
+    0: 9
+    1: 9
+    2: 9
+    3: 9
     4: 2
 HLT_tau35_tightRNN_tracktwoMVA_L1TAU20IM:
   eventCount: 1
@@ -8554,7 +8186,7 @@ HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55:
 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55:
@@ -8562,7 +8194,7 @@ HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55:
 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55:
@@ -8570,7 +8202,7 @@ HLT_tau40_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55:
 HLT_tau40_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau40_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB30_L1DR-TAU20ITAU12I-J25:
   eventCount: 0
 HLT_tau40_mediumRNN_tracktwoMVA_tau20_mediumRNN_tracktwoMVA_03dRAB_L1TAU20IM_2TAU12IM_4J12p0ETA25:
@@ -8603,48 +8235,18 @@ HLT_tau40_mediumRNN_tracktwoMVA_tau35_mediumRNN_tracktwoMVA_03dRAB_L1cTAU35M_2cT
     3: 12
 HLT_tau40_mediumRNN_tracktwoMVA_tau35_mediumRNN_tracktwoMVA_03dRAB_L1cTAU35M_2cTAU30M_2jJ55_3jJ50:
   eventCount: 0
-  stepCounts:
-    0: 3
-    1: 3
-    2: 3
-    3: 3
-  stepFeatures:
-    0: 12
-    1: 12
-    2: 12
-    3: 12
 HLT_tau50_mediumRNN_tracktwoMVA_xe80_pfopufit_xe50_cell_L1XE50:
   eventCount: 0
 HLT_tau50_mediumRNN_tracktwoMVA_xe80_pfopufit_xe50_cell_L1XE55:
   eventCount: 0
 HLT_tau50_mediumRNN_tracktwoMVA_xe80_pfopufit_xe50_cell_L1jXE100:
   eventCount: 0
-  stepCounts:
-    0: 4
-    1: 4
-    2: 4
-    3: 4
-  stepFeatures:
-    0: 5
-    1: 5
-    2: 5
-    3: 5
 HLT_tau50_mediumRNN_tracktwoMVA_xe80_tcpufit_xe50_cell_L1XE50:
   eventCount: 0
 HLT_tau50_mediumRNN_tracktwoMVA_xe80_tcpufit_xe50_cell_L1XE55:
   eventCount: 0
 HLT_tau50_mediumRNN_tracktwoMVA_xe80_tcpufit_xe50_cell_L1jXE100:
   eventCount: 0
-  stepCounts:
-    0: 4
-    1: 4
-    2: 4
-    3: 4
-  stepFeatures:
-    0: 5
-    1: 5
-    2: 5
-    3: 5
 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1XE55:
@@ -8652,7 +8254,7 @@ HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1XE55:
 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55:
@@ -8660,7 +8262,7 @@ HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55:
 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE55:
@@ -8668,7 +8270,7 @@ HLT_tau60_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE55:
 HLT_tau60_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau60_mediumRNN_tracktwoMVA_L1TAU40:
   eventCount: 0
   stepCounts:
@@ -8700,7 +8302,7 @@ HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55:
 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55:
@@ -8708,7 +8310,7 @@ HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55:
 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55:
@@ -8716,7 +8318,7 @@ HLT_tau60_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55:
 HLT_tau60_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau60_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_xe50_cell_03dRAB_L1TAU40_2TAU12IM_XE40:
   eventCount: 0
 HLT_tau80_idperf_trackLRT_L1TAU60:
@@ -8786,7 +8388,7 @@ HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1XE55:
 HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55:
@@ -8794,7 +8396,7 @@ HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1XE55:
 HLT_tau80_mediumRNN_tracktwoLLP_probe_xe65_cell_xe90_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau80_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau80_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE55:
@@ -8802,7 +8404,7 @@ HLT_tau80_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1XE55:
 HLT_tau80_mediumRNN_tracktwoLLP_probe_xe75_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau80_mediumRNN_tracktwoLLP_tau60_mediumRNN_tracktwoLLP_03dRAB_L1TAU60_2TAU40:
   eventCount: 0
   stepCounts:
@@ -8886,7 +8488,7 @@ HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1XE55:
 HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55:
@@ -8894,7 +8496,7 @@ HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1XE55:
 HLT_tau80_mediumRNN_tracktwoMVA_probe_xe65_cell_xe90_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau80_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE50:
   eventCount: 0
 HLT_tau80_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55:
@@ -8902,7 +8504,7 @@ HLT_tau80_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1XE55:
 HLT_tau80_mediumRNN_tracktwoMVA_probe_xe75_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_tau80_mediumRNN_tracktwoMVA_tau35_mediumRNN_tracktwoMVA_03dRAB30_L1TAU60_DR-TAU20ITAU12I:
   eventCount: 0
 HLT_tau80_mediumRNN_tracktwoMVA_tau35_mediumRNN_tracktwoMVA_03dRAB30_L1eTAU80_2cTAU30M_DR-eTAU30eTAU20:
@@ -8982,11 +8584,11 @@ HLT_xe30_cell_xe30_tcpufit_L1XE30:
   stepFeatures:
     0: 2
 HLT_xe30_cell_xe30_tcpufit_L1jXE70:
-  eventCount: 5
+  eventCount: 3
   stepCounts:
-    0: 5
+    0: 3
   stepFeatures:
-    0: 23
+    0: 6
 HLT_xe30_cvfpufit_L1XE30:
   eventCount: 1
   stepCounts:
@@ -9079,12 +8681,10 @@ HLT_xe30_trkmht_L1XE30:
     1: 1
 HLT_xe55_cell_xe105_nn_L1gXEJWOJ100:
   eventCount: 0
-  stepFeatures:
-    0: 44
 HLT_xe55_cell_xe105_nn_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_xe55_cell_xe70_tcpufit_L1XE50:
   eventCount: 0
 HLT_xe55_cell_xe70_tcpufit_L1XE55:
@@ -9096,7 +8696,7 @@ HLT_xe55_cell_xe70_tcpufit_xe90_pfsum_vssk_L1XE55:
 HLT_xe55_cell_xe70_tcpufit_xe90_pfsum_vssk_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_xe55_cell_xe70_tcpufit_xe95_pfsum_cssk_L1XE50:
   eventCount: 0
 HLT_xe55_cell_xe70_tcpufit_xe95_pfsum_cssk_L1XE55:
@@ -9104,15 +8704,13 @@ HLT_xe55_cell_xe70_tcpufit_xe95_pfsum_cssk_L1XE55:
 HLT_xe55_cell_xe70_tcpufit_xe95_pfsum_cssk_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_xe55_cell_xe90_nn_L1gXEJWOJ100:
   eventCount: 0
-  stepFeatures:
-    0: 44
 HLT_xe55_cell_xe90_nn_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_xe60_cell_L1XE50:
   eventCount: 0
 HLT_xe60_cell_xe95_pfsum_cssk_L1XE50:
@@ -9122,27 +8720,21 @@ HLT_xe60_cell_xe95_pfsum_cssk_L1XE55:
 HLT_xe60_cell_xe95_pfsum_cssk_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_xe65_cell_xe100_mhtpufit_pf_L1XE50:
   eventCount: 0
 HLT_xe65_cell_xe100_mhtpufit_pf_L1XE55:
   eventCount: 0
 HLT_xe65_cell_xe100_mhtpufit_pf_L1gXEJWOJ100:
   eventCount: 0
-  stepFeatures:
-    0: 44
 HLT_xe65_cell_xe100_mhtpufit_pf_L1gXENC100:
   eventCount: 0
-  stepFeatures:
-    0: 46
 HLT_xe65_cell_xe100_mhtpufit_pf_L1gXERHO100:
   eventCount: 0
-  stepFeatures:
-    0: 46
 HLT_xe65_cell_xe100_mhtpufit_pf_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_xe65_cell_xe100_pfopufit_L1XE50:
   eventCount: 0
 HLT_xe65_cell_xe100_pfopufit_L1XE55:
@@ -9150,7 +8742,7 @@ HLT_xe65_cell_xe100_pfopufit_L1XE55:
 HLT_xe65_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_xe65_cell_xe105_mhtpufit_em_L1XE50:
   eventCount: 0
 HLT_xe65_cell_xe105_mhtpufit_em_L1XE55:
@@ -9158,17 +8750,15 @@ HLT_xe65_cell_xe105_mhtpufit_em_L1XE55:
 HLT_xe65_cell_xe105_mhtpufit_em_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_xe65_cell_xe105_nn_L1XE50:
   eventCount: 0
 HLT_xe65_cell_xe105_nn_L1gXEJWOJ100:
   eventCount: 0
-  stepFeatures:
-    0: 44
 HLT_xe65_cell_xe105_nn_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_xe65_cell_xe110_tcpufit_L1XE50:
   eventCount: 0
 HLT_xe65_cell_xe110_tcpufit_L1jXE100:
@@ -9181,32 +8771,24 @@ HLT_xe65_cell_xe90_nn_L1XE50:
   eventCount: 0
 HLT_xe65_cell_xe90_nn_L1gXEJWOJ100:
   eventCount: 0
-  stepFeatures:
-    0: 44
 HLT_xe65_cell_xe90_nn_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_xe65_cell_xe90_pfopufit_L1XE50:
   eventCount: 0
 HLT_xe65_cell_xe90_pfopufit_L1XE55:
   eventCount: 0
 HLT_xe65_cell_xe90_pfopufit_L1gXEJWOJ100:
   eventCount: 0
-  stepFeatures:
-    0: 44
 HLT_xe65_cell_xe90_pfopufit_L1gXENC100:
   eventCount: 0
-  stepFeatures:
-    0: 46
 HLT_xe65_cell_xe90_pfopufit_L1gXERHO100:
   eventCount: 0
-  stepFeatures:
-    0: 46
 HLT_xe65_cell_xe90_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_xe65_cell_xe90_pfopufit_sig30_L1XE50:
   eventCount: 0
 HLT_xe65_cell_xe90_pfopufit_sig30_L1XE55:
@@ -9218,7 +8800,7 @@ HLT_xe65_cell_xe95_pfsum_vssk_L1XE55:
 HLT_xe65_cell_xe95_pfsum_vssk_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_xe75_cell_xe100_pfopufit_L1XE50:
   eventCount: 0
 HLT_xe75_cell_xe100_pfopufit_L1XE55:
@@ -9226,7 +8808,7 @@ HLT_xe75_cell_xe100_pfopufit_L1XE55:
 HLT_xe75_cell_xe100_pfopufit_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_xe75_cell_xe65_tcpufit_xe90_trkmht_L1XE50:
   eventCount: 0
 HLT_xe75_cell_xe65_tcpufit_xe90_trkmht_L1XE55:
@@ -9234,7 +8816,7 @@ HLT_xe75_cell_xe65_tcpufit_xe90_trkmht_L1XE55:
 HLT_xe75_cell_xe65_tcpufit_xe90_trkmht_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_xe80_cell_xe115_tcpufit_L1XE50:
   eventCount: 0
 HLT_xe80_cell_xe115_tcpufit_L1XE55:
@@ -9282,7 +8864,7 @@ HLT_xe80_tcpufit_hitdvjet200_medium_L1XE55:
 HLT_xe80_tcpufit_hitdvjet200_medium_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_xe80_tcpufit_hitdvjet200_tight_L1XE50:
   eventCount: 0
 HLT_xe80_tcpufit_hitdvjet200_tight_L1XE55:
@@ -9290,7 +8872,7 @@ HLT_xe80_tcpufit_hitdvjet200_tight_L1XE55:
 HLT_xe80_tcpufit_hitdvjet200_tight_L1jXE100:
   eventCount: 0
   stepFeatures:
-    0: 50
+    0: 2
 HLT_xe80_tcpufit_isotrk100_medium_iaggrmedium_L1XE50:
   eventCount: 0
 HLT_xe80_tcpufit_isotrk100_medium_iaggrmedium_L1XE55:
diff --git a/Trigger/TrigValidation/TriggerTest/test/test_trig_mc_newJO_v1lowMu_build.py b/Trigger/TrigValidation/TriggerTest/test/test_trig_mc_newJO_v1lowMu_build.py
new file mode 100755
index 0000000000000000000000000000000000000000..46c10e0b901ab77688cb6c8e37103f5f9771b9c5
--- /dev/null
+++ b/Trigger/TrigValidation/TriggerTest/test/test_trig_mc_newJO_v1lowMu_build.py
@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
+
+# art-description: Trigger RDO->RDO_TRIG athena test of the lowMu menu
+# art-type: build
+# art-include: master/Athena
+# art-include: 23.0/Athena
+# Skipping art-output which has no effect for build tests.
+# If you create a grid version, check art-output in existing grid tests.
+
+import sys
+from TrigValTools.TrigValSteering import Test, ExecStep, CheckSteps, Input
+
+ex = ExecStep.ExecStep('athena')
+ex.type = 'other'
+ex.executable = 'runHLT_standalone_newJO.py'
+ex.input = 'minbias'
+ex.args += ' --filesInput='+Input.get_input(ex.input).paths[0]
+ex.args += ' Trigger.triggerMenuSetup="PhysicsP1_pp_lowMu_run3_v1"'
+ex.args += ' Trigger.disableChains=[]'  # Do not disable any chains
+ex.args += ' Trigger.doRuntimeNaviVal=True'
+ex.args += ' IOVDb.GlobalTag="OFLCOND-MC21-SDR-RUN3-07"'
+ex.prmon = False
+
+test = Test.Test()
+test.art_type = 'build'
+test.exec_steps = [ex]
+test.check_steps = CheckSteps.default_check_steps(test)
+
+sys.exit(test.run())
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CalibCosmicMon/EnhancedBiasChainConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CalibCosmicMon/EnhancedBiasChainConfiguration.py
index c59973a375da0e046e1ca5fed52dd7d659e4fa33..b97226587b3715e25c519b9a4b1891964a0af317 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CalibCosmicMon/EnhancedBiasChainConfiguration.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CalibCosmicMon/EnhancedBiasChainConfiguration.py
@@ -1,11 +1,8 @@
 # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 
-from TrigHypoCommonTools.TrigHypoCommonToolsConf import L1InfoHypo, L1InfoHypoTool
-
+from AthenaConfiguration.ComponentFactory import CompFactory, isComponentAccumulatorCfg
 from TriggerMenuMT.HLT.Config.ChainConfigurationBase import ChainConfigurationBase
-from TriggerMenuMT.HLT.Config.MenuComponents import MenuSequence, RecoFragmentsPool
-from DecisionHandling.DecisionHandlingConf import InputMakerForRoI, ViewCreatorInitialROITool
-from AthenaCommon.CFElements import seqAND
+from TriggerMenuMT.HLT.Config.MenuComponents import MenuSequenceCA, SelectionCA, InEventRecoCA, menuSequenceCAToGlobalWrapper
 
 from AthenaCommon.Logging import logging
 logging.getLogger().info("Importing %s",__name__)
@@ -59,46 +56,51 @@ l1seeds = { 'low'  : \
                 'L1_TAU20IM_2TAU12IM_XE35',\
                 'L1_TAU40',\
                 'L1_XE35',
-            ] }
+            ] 
+}
 
-def enhancedBiasAthSequence(flags):
-        inputMakerAlg = InputMakerForRoI("IM_enhancedBias")
-        inputMakerAlg.RoITool = ViewCreatorInitialROITool()
-        inputMakerAlg.RoIs="enhancedBiasInputRoIs"
-        enhancedBiasSequence = seqAND("enhancedBiasSequence", [inputMakerAlg])
 
-        return (enhancedBiasAthSequence, inputMakerAlg, enhancedBiasSequence)
+def enhancedBiasReco(flags):
+    inputMakerAlg = CompFactory.InputMakerForRoI("IM_enhancedBias")
+    inputMakerAlg.RoITool = CompFactory.ViewCreatorInitialROITool()
+    inputMakerAlg.RoIs="enhancedBiasInputRoIs"
 
+    reco = InEventRecoCA("EnhancedBiasReco", inputMaker=inputMakerAlg)
+    
+    return reco
 
-def enahncedBiasSequence_Cfg(flags):
-    return enhancedBiasMenuSequence(flags)
+
+def EnhancedBiasHypoToolGen(chainDict):
+    tool = CompFactory.L1InfoHypoTool(chainDict['chainName'])
+    tool.CTPUnpackingTool.UseTBPBits = True
+
+    key = chainDict['chainParts'][0]['algType']
+    if key not in l1seeds:
+        log.error("No configuration exist for EB chain: ", key)
+    else:
+        tool.L1ItemNames = l1seeds[key]
+
+    return tool
 
 
 def enhancedBiasMenuSequence(flags):
-        # InputMaker and sequence
-        (_, inputMakerAlg, enhancedBiasSequence) = RecoFragmentsPool.retrieve(enhancedBiasAthSequence, flags)
-
-        # Hypo
-        hypoAlg = L1InfoHypo("EnhancedBiasHypo")
-
-        # HypoToolGen
-        def EnhancedBiasHypoToolGen(chainDict):
-            tool = L1InfoHypoTool(chainDict['chainName'])
-            tool.CTPUnpackingTool.UseTBPBits = True
-
-            key = chainDict['chainParts'][0]['algType']
-            if key not in l1seeds:
-                log.error("No configuration exist for EB chain: ", key)
-            else:
-                tool.L1ItemNames = l1seeds[key]
-
-            return tool
-
-        return MenuSequence(flags,
-                            Sequence   = enhancedBiasSequence,
-                            Maker       = inputMakerAlg,
-                            Hypo        = hypoAlg,
-                            HypoToolGen = EnhancedBiasHypoToolGen)
+
+    reco = enhancedBiasReco(flags)
+    selAcc = SelectionCA("enhancedBiasSequence") 
+    selAcc.mergeReco(reco)
+    selAcc.addHypoAlgo(CompFactory.L1InfoHypo("EnhancedBiasHypo"))
+
+    return MenuSequenceCA(flags,
+                          selAcc,
+                          HypoToolGen = EnhancedBiasHypoToolGen)
+
+
+
+def enahncedBiasSequence_Cfg(flags):
+    if isComponentAccumulatorCfg():
+        return enhancedBiasMenuSequence(flags)
+    else:
+        return menuSequenceCAToGlobalWrapper(enhancedBiasMenuSequence, flags)
 
 
 class EnhancedBiasChainConfiguration(ChainConfigurationBase):
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/MenuComponents.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/MenuComponents.py
index a549bb4708fc4a3df4b5122d7b80d56036c54b75..213d9ae82c66f037e717533031ea5bf862eafc3e 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/MenuComponents.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Config/MenuComponents.py
@@ -1100,7 +1100,13 @@ def menuSequenceCAToGlobalWrapper(gen, flags, *args, **kwargs):
     with ConfigurableCABehavior():
         msca = gen(flags, *args, **kwargs)
         assert isinstance(msca, MenuSequenceCA), "Function provided to menuSequenceCAToGlobalWrapper does not generate MenuSequenceCA"
+    return appendMenuSequenceCAToAthena(msca, flags)
 
+def appendMenuSequenceCAToAthena(msca, flags):
+    """
+    Converts MenuSequenceCA into the MenuSequence, in addition appending aux stuff to global configuration.
+    For use when MSCA generator function returns a tuple instead of bare MSCA
+    """
     from AthenaCommon.AlgSequence import AthSequencer
     from AthenaCommon.CFElements import compName, isSequence
     hypo = conf2toConfigurable(msca.hypo.Alg)
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/L1CaloThresholdMapping.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/L1CaloThresholdMapping.py
index 0a7cecd1ef2b9564b360d724c431f26bd43d9c0b..ac04df991ba77f7a9d9c10ce45908ed58bc75830 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/L1CaloThresholdMapping.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/L1CaloThresholdMapping.py
@@ -10,17 +10,17 @@
 
 threshold_mapping = {
     'eEM': { # TODO: Update when eFEX EM calibrations are applied
-        5:3,
-        7:5,
-        9:7,
-        10:8,
-        12:10,
-        15:12,
-        18:15,
-        22:18,
-        24:20,
-        26:22,
-        28:24,
+        5:4,
+        7:6,
+        9:8,
+        10:9,
+        12:11,
+        15:14,
+        18:17,
+        22:21,
+        24:23,
+        26:25,
+        28:27,
     },
     'jEM': {
         20:15,
@@ -61,7 +61,7 @@ threshold_mapping = {
         140:140,
         160:160,
         180:180,
-        500:500,
+        500:400,
     },
     'gJ':
     {
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TypeWideThresholdConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TypeWideThresholdConfig.py
index b35ae57206f27a5b6dd3bfe24098d4b7d7dabb3d..8daab947e41d1141522f16185d1496192d10cda4 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TypeWideThresholdConfig.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TypeWideThresholdConfig.py
@@ -114,15 +114,15 @@ def getConfig_eEM():
     bitshift_reta = 3
     bitshift_rhad = 3
     bitshift_wstot = 5   
-    reta_fw_loose = 53
-    reta_fw_medium = 65
-    reta_fw_tight = 72
-    rhad_fw_loose = 16
-    rhad_fw_medium = 22
-    rhad_fw_tight = 23
+    reta_fw_loose = 72
+    reta_fw_medium = 81
+    reta_fw_tight = 92
+    rhad_fw_loose = 92
+    rhad_fw_medium = 126
+    rhad_fw_tight = 192
     wstot_fw_loose = 8
-    wstot_fw_medium = 9
-    wstot_fw_tight = 25 
+    wstot_fw_medium = 16
+    wstot_fw_tight = 29 
     # based on https://indico.cern.ch/event/1035198/contributions/4378014/attachments/2251846/3820098/20210526_l1calo_TGM.pdf
     confObj["workingPoints"]["Loose"] = [
         odict([("reta_fw", reta_fw_loose), ("reta", eFEXfwToFloatConversion(reta_fw_loose,bitshift_reta)), 
@@ -196,7 +196,7 @@ def getConfig_eEM():
                ("etamin", 14), ("etamax", 15), ("priority", 1)]),
     ]
     confObj["ptMinToTopo"] = 3 
-    confObj["maxEt"] = 50
+    confObj["maxEt"] = 60
     confObj["resolutionMeV"] = 100
 
     # Check that FW values are integers