diff --git a/AtlasGeometryCommon/CavernInfraGeoModel/CMakeLists.txt b/AtlasGeometryCommon/CavernInfraGeoModel/CMakeLists.txt
index 3b69f275c1f4001ae99ba4d1703eb32d310f3f21..bf9fc89ebf3fc5bcb883e0f34f718cdca8c94d75 100644
--- a/AtlasGeometryCommon/CavernInfraGeoModel/CMakeLists.txt
+++ b/AtlasGeometryCommon/CavernInfraGeoModel/CMakeLists.txt
@@ -5,11 +5,10 @@ atlas_subdir( CavernInfraGeoModel )
 
 # External dependencies:
 find_package( GeoModel COMPONENTS GeoModelKernel )
-find_package( Boost )
 
 # Component(s) in the package:
 atlas_add_component( CavernInfraGeoModel
                      src/*.cxx
                      src/components/*.cxx
-                     INCLUDE_DIRS ${GEOMODEL_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS}
+                     INCLUDE_DIRS ${GEOMODEL_INCLUDE_DIRS} 
                      LINK_LIBRARIES ${GEOMODEL_LIBRARIES} AthenaKernel GaudiKernel GeoModelInterfaces GeoModelUtilities RDBAccessSvcLib StoreGateLib )
diff --git a/AtlasGeometryCommon/CavernInfraGeoModel/src/CavernInfraDetectorTool.cxx b/AtlasGeometryCommon/CavernInfraGeoModel/src/CavernInfraDetectorTool.cxx
index edbd5098ae3ea7080c486368e88b5eb5194c8c87..e2548860c921b09f4be2b9094ff71a2d957c09d1 100755
--- a/AtlasGeometryCommon/CavernInfraGeoModel/src/CavernInfraDetectorTool.cxx
+++ b/AtlasGeometryCommon/CavernInfraGeoModel/src/CavernInfraDetectorTool.cxx
@@ -10,7 +10,7 @@
 #include "GeoModelInterfaces/IGeoDbTagSvc.h"
 #include "GeoModelUtilities/GeoModelExperiment.h"
 #include "RDBAccessSvc/IRDBAccessSvc.h"
-#include "boost/algorithm/string/predicate.hpp"
+
 
 CavernInfraDetectorTool::CavernInfraDetectorTool( const std::string& type, 
 						  const std::string& name,
@@ -57,7 +57,7 @@ StatusCode CavernInfraDetectorTool::create()
     return sc;
   }
 
-  if (boost::starts_with (cavernInfraVersion, "CavernInfra")) {
+  if (cavernInfraVersion.rfind("CavernInfra",0) == 0) { //starts with "CavernInfra"
     std::string geoVersion = cavernInfraVersion.substr(12,2);
     if(geoVersion=="00" || geoVersion=="01") {
       msg(MSG::ERROR) << "ERROR. Version " << cavernInfraVersion << " is obsolete and cannot be supported anymore" << endmsg;
diff --git a/Control/AthToolSupport/AsgTesting/test/gt_UnitTest_test.cxx b/Control/AthToolSupport/AsgTesting/test/gt_UnitTest_test.cxx
index c51b1b5e4a3e57431a59290c0b51257dcde77ffb..de516e641816b5d1fb24ee8968428ca2602e5b3d 100644
--- a/Control/AthToolSupport/AsgTesting/test/gt_UnitTest_test.cxx
+++ b/Control/AthToolSupport/AsgTesting/test/gt_UnitTest_test.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
 */
 
 /// @author Nils Krumnack
@@ -55,6 +55,7 @@ namespace asg
   }
 
 
+  // cppcheck-suppress syntaxError
   TEST (AssertTest, success_success)
   {
     ASSERT_SUCCESS (functionSuccess());
diff --git a/Control/AthenaConfiguration/python/AllConfigFlags.py b/Control/AthenaConfiguration/python/AllConfigFlags.py
index 609b1265056293b93a85b75bd02ebf27790b5980..956a50a8b0105da6b57f63bb042584de97db2a91 100644
--- a/Control/AthenaConfiguration/python/AllConfigFlags.py
+++ b/Control/AthenaConfiguration/python/AllConfigFlags.py
@@ -27,6 +27,7 @@ def initConfigFlags():
     acf.addFlag('Exec.MaxEvents',-1)
     acf.addFlag('Exec.SkipEvents',0)
     acf.addFlag('Exec.DebugStage','')
+    acf.addFlag('Exec.Interactive',"")
     acf.addFlag('Exec.FPE',0) #-2: No FPE check at all, -1: Abort with core-dump, 0: FPE Auditor w/o stack-tace (default) , >0: number of stack-trace printed by the job
 
     #Custom messaging for components, see Utils.setupLoggingLevels
diff --git a/Control/AthenaConfiguration/python/AthConfigFlags.py b/Control/AthenaConfiguration/python/AthConfigFlags.py
index bc3d049efd227b51b570fd67192b86b7e707cb67..a0723813ea6309ae6118d4b8c8a7561dd293388a 100644
--- a/Control/AthenaConfiguration/python/AthConfigFlags.py
+++ b/Control/AthenaConfiguration/python/AthConfigFlags.py
@@ -438,6 +438,7 @@ class AthConfigFlags(object):
         import argparse
         parser= argparse.ArgumentParser()
         parser.add_argument("-d","--debug", default=None, help="attach debugger (gdb) before run, <stage>: init, exec, fini")
+        parser.add_argument("-i","--interactive", default=None, help="Drop into interactive mode before <stage>: init or run")
         parser.add_argument("--evtMax", type=int, default=None, help="Max number of events to process")
         parser.add_argument("--skipEvents", type=int, default=None, help="Number of events to skip")
         parser.add_argument("--filesInput", default=None, help="Input file(s), supports * wildcard")
@@ -469,6 +470,11 @@ class AthConfigFlags(object):
                 raise ValueError("Unknown debug stage, allowed values {}".format(DbgStage.allowed_values))
             self.Exec.DebugStage=args.debug
 
+        if args.interactive:
+            if args.interactive not in ("init","run"):
+                raise ValueError("Unknown value for interactive, allowed values are 'init' and 'run'")
+            self.Exec.Interactive=args.interactive
+
         if args.evtMax:
             self.Exec.MaxEvents=args.evtMax
 
diff --git a/Control/AthenaConfiguration/python/ComponentAccumulator.py b/Control/AthenaConfiguration/python/ComponentAccumulator.py
index a813e454fdf6ebfe1df7346ce4c5e564259cf730..1537831df4d5508199d0275791c6c114b7e456de 100644
--- a/Control/AthenaConfiguration/python/ComponentAccumulator.py
+++ b/Control/AthenaConfiguration/python/ComponentAccumulator.py
@@ -119,6 +119,7 @@ class ComponentAccumulator:
         self._creationCallStack = Context.hint if "trackCA" not in ComponentAccumulator.debugMode else shortCallStack()
         self._componentsContext = dict()
         self._debugStage = DbgStage()
+        self.interactive = ""
 
     def setAsTopLevel(self):
         self._isMergable = False
@@ -1100,6 +1101,12 @@ class ComponentAccumulator:
             else:
                 maxEvents=-1
 
+        if self.interactive == 'init':
+            printInteractiveMsg_init()
+            from sys import exit # noqa: F401
+            import code
+            code.interact(local=locals())
+
         #At this point, we don't need the internal structures of this CA any more, clean them up
         self._cleanup()
 
@@ -1117,10 +1124,19 @@ class ComponentAccumulator:
 
         if (self._debugStage.value=="exec"):
             hookDebugger()
-        sc = app.run(maxEvents)
-        if not sc.isSuccess():
-            self._msg.error("Failure running application")
-            return sc
+
+
+        if self.interactive == 'run':
+            printInteractiveMsg_run()
+            import code
+            from AthenaPython.PyAthena import py_svc
+            sg=py_svc("StoreGateSvc/StoreGateSvc")
+            code.interact(local=locals())
+        else:
+            sc = app.run(maxEvents)
+            if not sc.isSuccess():
+                self._msg.error("Failure running application")
+                return sc
 
         app.stop().ignore()
 
@@ -1157,3 +1173,21 @@ class ComponentAccumulator:
 from AthenaConfiguration.LegacySupport import (conf2toConfigurable,  # noqa: F401 (for client use)
                                                CAtoGlobalWrapper,
                                                appendCAtoAthena)
+
+
+def printInteractiveMsg_init():
+    print("Interactive mode")
+    print("\tThe ComponentAccumulator is known as 'self', you can inspect it but changes are not taken into account")
+    print("\tThe application is known as 'app' but not yet initialized")
+    print("\t^D will exit the interactive mode and athena will continue")
+    print("\texit() will terminate the program now")
+    return 
+
+
+def printInteractiveMsg_run():
+    print("Interactive mode")
+    print("\tThe application is known as 'app' and initialized")
+    print("\tYou process n events with 'app.run(n)'") 
+    print("\tStoreGate is accessible as 'sg'") 
+    print("\t^D will exit the interactive mode and athena will finalize")
+    return 
diff --git a/Control/AthenaConfiguration/python/MainServicesConfig.py b/Control/AthenaConfiguration/python/MainServicesConfig.py
index 80cf3b8b3eee81195a8fe13c3c1fd89f92011efe..bce28d294e5b7ac3acfe62e46c3d304387181ad8 100644
--- a/Control/AthenaConfiguration/python/MainServicesConfig.py
+++ b/Control/AthenaConfiguration/python/MainServicesConfig.py
@@ -191,15 +191,20 @@ def addMainSequences(flags, cfg):
 
 
 def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr'):
-    # Run a serial job for threads=0
-    if flags.Concurrency.NumThreads > 0:
-        if flags.Concurrency.NumConcurrentEvents==0:
-            raise Exception("Requested Concurrency.NumThreads>0 and Concurrency.NumConcurrentEvents==0, "
-                            "which will not process events!")
-        LoopMgr = "AthenaHiveEventLoopMgr"
 
-    if flags.Concurrency.NumProcs > 0:
-        LoopMgr = "AthMpEvtLoopMgr"
+    if flags.Exec.Interactive == "run":
+        print ("Interactive mode, switch to PyAthenaEventLoopMgr")
+        LoopMgr="PyAthenaEventLoopMgr"
+    else:
+        # Run a serial job for threads=0
+        if flags.Concurrency.NumThreads > 0:
+            if flags.Concurrency.NumConcurrentEvents==0:
+                raise Exception("Requested Concurrency.NumThreads>0 and Concurrency.NumConcurrentEvents==0, "
+                                "which will not process events!")
+            LoopMgr = "AthenaHiveEventLoopMgr"
+
+        if flags.Concurrency.NumProcs > 0:
+            LoopMgr = "AthMpEvtLoopMgr"
 
     # Core components needed for serial and threaded jobs:
     cfg = MainServicesMiniCfg(flags, loopMgr=LoopMgr, masterSequence='AthMasterSeq')
@@ -232,6 +237,8 @@ def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr'):
     if flags.Exec.DebugStage != "":
         cfg.setDebugStage(flags.Exec.DebugStage)
 
+    cfg.interactive=flags.Exec.Interactive
+
     if flags.Concurrency.NumProcs > 0:
         from AthenaMP.AthenaMPConfig import AthenaMPCfg
         mploop = AthenaMPCfg(flags)
diff --git a/Control/AthenaServices/python/PyAthenaEventLoopMgr.py b/Control/AthenaServices/python/PyAthenaEventLoopMgr.py
index abf11a4b6598babce35338a261d0c9070b40e77a..5b9efe5aea3ae1f5994a257abdf678abfd5de7a0 100644
--- a/Control/AthenaServices/python/PyAthenaEventLoopMgr.py
+++ b/Control/AthenaServices/python/PyAthenaEventLoopMgr.py
@@ -6,6 +6,7 @@
 
 import GaudiPython.Bindings as PyGaudi
 
+
 # The following method is setup at ApplicationMgr creation time; this works
 # because the event loop manager, which imports this module if it is the
 # python one at initialization time, will instantiate the event selector in
@@ -56,7 +57,11 @@ def enable_seeking(silent=False):
    return
 
 def _setupEvtSelForSeekOps():
-   return enable_seeking(silent=True)
+   from AthenaConfiguration.ComponentFactory import isComponentAccumulatorCfg
+   if isComponentAccumulatorCfg():
+      return
+   else:
+      return enable_seeking(silent=True)
 
 _setupEvtSelForSeekOps()
 del _setupEvtSelForSeekOps
@@ -114,22 +119,18 @@ class PyAthenaEventLoopMgr( PyGaudi.iService ):
       return super( PyAthenaEventLoopMgr, self ).__getattr__( attr )
 
    def executeAlgorithms( self, cppcontext ):
-      try:                   import GaudiPython.Bindings as PyGaudi
-      except AttributeError: import GaudiPython          as PyGaudi
-      except ImportError:    import gaudimodule          as PyGaudi
-      from AthenaCommon.AppMgr import theApp
 
+      from AthenaPython.PyAthena import py_svc
+      from AthenaPython.PyAthenaComps import StatusCode
+      appmgr = py_svc('ApplicationMgr',iface="IProperty")      
+      algmgr = py_svc('ApplicationMgr',iface='IAlgManager')
+     
       import cppyy
       ctx = cppyy.bind_object(cppcontext, "EventContext")
 
-      result = PyGaudi.SUCCESS
-
       try:
-         for name in theApp.TopAlg:
-            alg = theApp.algorithm( name[ name.find('/')+1 : ] )
-            if not alg._ialg:
-               alg.retrieveInterface()
-            ialg = alg._ialg
+         for name in appmgr.getProperty("TopAlg"):
+            ialg=algmgr.algorithm(name).get()
             ialg.execState(ctx).reset()
             result = ialg.sysExecute(ctx)
             if result.isFailure():
@@ -139,6 +140,6 @@ class PyAthenaEventLoopMgr( PyGaudi.iService ):
       except KeyboardInterrupt:
          from AthenaCommon.Logging import log as msg
          msg.critical( "event loop stopped by user interrupt" )
-         return PyGaudi.FAILURE.getCode()
+         return StatusCode.Failure
 
-      return result.getCode()
+      return StatusCode.Success
diff --git a/Control/Hephaestus/src/HephProf/HephProf.cxx b/Control/Hephaestus/src/HephProf/HephProf.cxx
index 78ec7f1a6c0b0c4710de28c80ff8d691e4c7ca8d..41c5f76a1f85ce39519a8fcda49d3969d85cd061 100644
--- a/Control/Hephaestus/src/HephProf/HephProf.cxx
+++ b/Control/Hephaestus/src/HephProf/HephProf.cxx
@@ -18,7 +18,7 @@
 
 #include <sys/stat.h>
 
-#include <tr1/unordered_map>
+#include <unordered_map>
 #include "boost/io/ios_state.hpp"
 
 
@@ -34,7 +34,7 @@ int Usage( const char* prog ) {
 //- helper classes
 class CallPoint;
 typedef unsigned long Address_t;
-typedef std::tr1::unordered_map< Address_t, std::string >  Symbols_t;
+typedef std::unordered_map< Address_t, std::string >  Symbols_t;
 typedef std::pair< Address_t, Address_t > CallInfo_t;
 typedef std::map< CallInfo_t, CallPoint > CallTree_t;
 
diff --git a/Event/xAOD/xAODTrackingCnv/python/xAODTrackingCnvConfig.py b/Event/xAOD/xAODTrackingCnv/python/xAODTrackingCnvConfig.py
index c361208536ecd78a10a51da3a0fcc93af7579a34..0eefbcba44bff63e8b3a7a5af81d33bdfc000a8e 100644
--- a/Event/xAOD/xAODTrackingCnv/python/xAODTrackingCnvConfig.py
+++ b/Event/xAOD/xAODTrackingCnv/python/xAODTrackingCnvConfig.py
@@ -188,7 +188,10 @@ def TrackParticleCnvAlgPIDCheckCfg(flags, name,
     result.merge(TrackParticleCnvAlgCfg(flags, name, **kwargs))
     return result
 
-def TrackParticleCnvAlgNoPIDCfg(flags, name, **kwargs):
+def TrackParticleCnvAlgNoPIDCfg(flags, name,
+                                ClusterSplitProbabilityName = "",
+                                AssociationMapName = "",
+                                **kwargs):
     result = ComponentAccumulator()
 
     if "TrackParticleCreator" not in kwargs:
@@ -197,9 +200,13 @@ def TrackParticleCnvAlgNoPIDCfg(flags, name, **kwargs):
             TrackParticleCreatorToolNoPIDCfg(
                 flags,
                 name = kwargs["xAODTrackParticlesFromTracksContainerName"] \
-                + "CreatorTool")))
+                + "CreatorTool",
+                ClusterSplitProbabilityName = ClusterSplitProbabilityName,
+                AssociationMapName = AssociationMapName)))
 
-    result.merge(TrackParticleCnvAlgCfg(flags, name, **kwargs))
+    result.merge(TrackParticleCnvAlgCfg(flags, name,
+                                        ClusterSplitProbabilityName,
+                                        AssociationMapName, **kwargs))
     return result
 
 def ObserverTrackParticleCnvAlgCfg(flags, name="ObserverTrackParticleCnvAlg",
diff --git a/ForwardDetectors/ForwardTracker/CMakeLists.txt b/ForwardDetectors/ForwardTracker/CMakeLists.txt
index 23df7289103009f7db96eabf1b59e6289fbee9cf..439b8c9234acf7fb16e25b388e8e464afa3c30a8 100644
--- a/ForwardDetectors/ForwardTracker/CMakeLists.txt
+++ b/ForwardDetectors/ForwardTracker/CMakeLists.txt
@@ -14,9 +14,7 @@ find_package( Boost COMPONENTS program_options filesystem thread system )
 # Component(s) in the package:
 atlas_add_library( ForwardTracker
                    src/*.cxx
-                   PUBLIC_HEADERS ForwardTracker
-                   INCLUDE_DIRS ${Boost_INCLUDE_DIRS}
-                   LINK_LIBRARIES ${Boost_LIBRARIES} )
+                   PUBLIC_HEADERS ForwardTracker)
 
 atlas_add_executable( forwardTrackerMain
                       test/forwardTrackerMain.cxx
diff --git a/ForwardDetectors/ForwardTracker/ForwardTracker/Collimator.h b/ForwardDetectors/ForwardTracker/ForwardTracker/Collimator.h
index 0547f3e84f5547f6be1a176e857f730dcdca0f0d..f1b22f8dd06de357f31e57bbdc5e496b066c5138 100644
--- a/ForwardDetectors/ForwardTracker/ForwardTracker/Collimator.h
+++ b/ForwardDetectors/ForwardTracker/ForwardTracker/Collimator.h
@@ -9,6 +9,7 @@
 #include "Point.h"
 
 #include <limits>
+#include <algorithm>
 
 namespace ForwardTracker {
   
@@ -32,7 +33,7 @@ namespace ForwardTracker {
 
     void track(IParticle&) const;
     
-    typedef boost::shared_ptr< const Collimator > ConstPtr_t;
+    typedef std::shared_ptr< const Collimator > ConstPtr_t;
     typedef std::vector< ConstPtr_t >             Container_t;
     
     std::string str() const;
diff --git a/ForwardDetectors/ForwardTracker/ForwardTracker/IBeamElement.h b/ForwardDetectors/ForwardTracker/ForwardTracker/IBeamElement.h
index 4b1aed9d458a0d7e67ad7733309d9d2a5a44f702..9d1d025c60de4550031cacca5d1ae2af6b0cabe9 100644
--- a/ForwardDetectors/ForwardTracker/ForwardTracker/IBeamElement.h
+++ b/ForwardDetectors/ForwardTracker/ForwardTracker/IBeamElement.h
@@ -7,7 +7,7 @@
 
 #include "ForwardTracker/ForwardTrackerConstants.h"
 
-#include "boost/shared_ptr.hpp"
+#include <memory>
 
 #include <string>
 #include <vector>
@@ -34,9 +34,9 @@ namespace ForwardTracker {
 
     virtual void track(IParticle&) const = 0;
     
-    virtual boost::shared_ptr<const IBeamElement> clone() const = 0;
+    virtual std::shared_ptr<const IBeamElement> clone() const = 0;
 
-    typedef boost::shared_ptr<const IBeamElement> ConstPtr_t;
+    typedef std::shared_ptr<const IBeamElement> ConstPtr_t;
     typedef std::vector<ConstPtr_t>               Container_t;
     typedef Container_t::iterator                 Iter_t;
     typedef Container_t::const_iterator           ConstIter_t;
diff --git a/ForwardDetectors/ForwardTracker/ForwardTracker/IBender.h b/ForwardDetectors/ForwardTracker/ForwardTracker/IBender.h
index f95a2395c9ff9198adafbc3c4fbc1e58677397ab..9d569f63dc02cb69c6ea6b1aec8042d025e384ee 100644
--- a/ForwardDetectors/ForwardTracker/ForwardTracker/IBender.h
+++ b/ForwardDetectors/ForwardTracker/ForwardTracker/IBender.h
@@ -5,7 +5,7 @@
 #ifndef FORWARDTRACKER_IBENDER_H
 #define FORWARDTRACKER_IBENDER_H
 
-#include "boost/shared_ptr.hpp"
+#include <memory>
 
 namespace ForwardTracker {
 
@@ -18,7 +18,7 @@ namespace ForwardTracker {
     virtual ~IBender() {}
     virtual void bend(IParticle&) const = 0;
 
-    typedef boost::shared_ptr<IBender> ConstPtr_t;
+    typedef std::shared_ptr<IBender> ConstPtr_t;
   };
 }
 
diff --git a/ForwardDetectors/ForwardTracker/ForwardTracker/Magnet.h b/ForwardDetectors/ForwardTracker/ForwardTracker/Magnet.h
index 4979a0525754f0bd68463f8f87e757e8704d7671..808ee5b7f035df369cb832c54ffc908af82d72e4 100644
--- a/ForwardDetectors/ForwardTracker/ForwardTracker/Magnet.h
+++ b/ForwardDetectors/ForwardTracker/ForwardTracker/Magnet.h
@@ -35,7 +35,7 @@ namespace ForwardTracker {
     
     enum Type {hbDipole, hfQuadrupole, vfQuadrupole, vbDipole, notAMagnet};
 
-    typedef boost::shared_ptr<const Magnet> ConstPtr_t;
+    typedef std::shared_ptr<const Magnet> ConstPtr_t;
     typedef std::vector<ConstPtr_t>         Container_t;
     
     std::string label()        const { return m_label; }
diff --git a/ForwardDetectors/ForwardTracker/ForwardTracker/Plane.h b/ForwardDetectors/ForwardTracker/ForwardTracker/Plane.h
index 7c9261afddba649d909f0f63d621c02c41335419..ad57c49fc5165c2d037e8f1a2fa72147a68f97aa 100644
--- a/ForwardDetectors/ForwardTracker/ForwardTracker/Plane.h
+++ b/ForwardDetectors/ForwardTracker/ForwardTracker/Plane.h
@@ -30,7 +30,7 @@ namespace ForwardTracker {
 
     void track(IParticle&) const;
   
-    typedef boost::shared_ptr<const Plane> ConstPtr_t;
+    typedef std::shared_ptr<const Plane> ConstPtr_t;
     typedef std::vector<ConstPtr_t>        Container_t;
 
     std::string str() const;
diff --git a/ForwardDetectors/ForwardTracker/ForwardTracker/Spacer.h b/ForwardDetectors/ForwardTracker/ForwardTracker/Spacer.h
index d08fd60005ca2ed7c200d6c8a903fbfcc0fcb33a..dff825e3972006dd7ea38a80970b178997c1dc78 100644
--- a/ForwardDetectors/ForwardTracker/ForwardTracker/Spacer.h
+++ b/ForwardDetectors/ForwardTracker/ForwardTracker/Spacer.h
@@ -35,7 +35,7 @@ namespace ForwardTracker {
     
     void track(IParticle&) const;
 
-    typedef boost::shared_ptr<const Spacer> ConstPtr_t;
+    typedef std::shared_ptr<const Spacer> ConstPtr_t;
 
     std::string str() const;    
 
diff --git a/ForwardDetectors/ForwardTracker/ForwardTracker/TwissFile.h b/ForwardDetectors/ForwardTracker/ForwardTracker/TwissFile.h
index a3c48e15b3d75bde0c5ee20bfd422279476909fc..5374f15d58c7979fae2cb7bdd78f98431d76fd50 100644
--- a/ForwardDetectors/ForwardTracker/ForwardTracker/TwissFile.h
+++ b/ForwardDetectors/ForwardTracker/ForwardTracker/TwissFile.h
@@ -8,11 +8,11 @@
 #include "ConfigData.h"
 #include "ForwardTrackerConstants.h"
 
-#include "boost/shared_ptr.hpp"
+#include <memory>
 
 namespace ForwardTracker {
 
-  boost::shared_ptr<std::ifstream> TwissFile(const ConfigData&, const Side&);
+  std::shared_ptr<std::ifstream> TwissFile(const ConfigData&, const Side&);
 
   double GetBeamEnergy (std::ifstream&);
   void   TwissFilePrint(std::ifstream&, double endMarker);
diff --git a/ForwardDetectors/ForwardTracker/src/Beamline.cxx b/ForwardDetectors/ForwardTracker/src/Beamline.cxx
index a46ac4bcbf87f9c4b90cf7731c8d5fd58f3d31e3..f3ce1a5cfc8a6b753155eb8cefc39c964f86d083 100644
--- a/ForwardDetectors/ForwardTracker/src/Beamline.cxx
+++ b/ForwardDetectors/ForwardTracker/src/Beamline.cxx
@@ -97,7 +97,7 @@ namespace ForwardTracker {
 
   private:
     
-    boost::shared_ptr<std::stringstream> m_ost;
+    std::shared_ptr<std::stringstream> m_ost;
   };
   
   std::string Beamline::str() const { return (std::for_each(m_elements.begin(), m_elements.end(), Stringer())).str(); }
diff --git a/ForwardDetectors/ForwardTracker/src/MagnetSet.cxx b/ForwardDetectors/ForwardTracker/src/MagnetSet.cxx
index 3535f373bf331aa5685606caae179e16e9fe3dc0..2948d3a1f73edcb9b13872fb26b056b6f7c239c3 100644
--- a/ForwardDetectors/ForwardTracker/src/MagnetSet.cxx
+++ b/ForwardDetectors/ForwardTracker/src/MagnetSet.cxx
@@ -11,6 +11,7 @@
 #include "ForwardTracker/TransverseShift.h"
 
 #include <fstream>
+#include <algorithm>
 
 namespace ForwardTracker {
   
@@ -18,7 +19,7 @@ namespace ForwardTracker {
 
     Magnet::Container_t magnets; // (x, y, z) = (left, up, forward)
 
-    boost::shared_ptr<std::ifstream> twissFile = TwissFile(cData, side);   
+    std::shared_ptr<std::ifstream> twissFile = TwissFile(cData, side);   
     
     std::ifstream& pfile = *twissFile;
 
diff --git a/ForwardDetectors/ForwardTracker/src/TwissFile.cxx b/ForwardDetectors/ForwardTracker/src/TwissFile.cxx
index 6a30ca56ef095b0fae9d0e0cc6798594b5defc72..0354ee788e74266601ce8f598586398a843aeda4 100644
--- a/ForwardDetectors/ForwardTracker/src/TwissFile.cxx
+++ b/ForwardDetectors/ForwardTracker/src/TwissFile.cxx
@@ -11,13 +11,13 @@
 
 namespace ForwardTracker {
  
-  boost::shared_ptr<std::ifstream> TwissFile(const ConfigData& cData, const Side& side) {
+  std::shared_ptr<std::ifstream> TwissFile(const ConfigData& cData, const Side& side) {
     
     if (side != beam1 && side != beam2) throw std::runtime_error("Allowed side values are beam1 or beam2.");
     
     std::string fn = (side == beam1) ? cData.twissFile1 : cData.twissFile2;
     
-    boost::shared_ptr<std::ifstream> twissFile(new std::ifstream);
+    std::shared_ptr<std::ifstream> twissFile(new std::ifstream);
     
     ForwardTracker::openFile(fn, twissFile);
 
diff --git a/ForwardDetectors/ForwardTracker/test/forwardTrackerMain.cxx b/ForwardDetectors/ForwardTracker/test/forwardTrackerMain.cxx
index 5387b01cdd07763a46dd1bdccc31078536335300..f3be5859ce7ca113216c2ae54788cfd0c4a50391 100644
--- a/ForwardDetectors/ForwardTracker/test/forwardTrackerMain.cxx
+++ b/ForwardDetectors/ForwardTracker/test/forwardTrackerMain.cxx
@@ -68,7 +68,7 @@ int main(int argc, char** argv) {
   Beamline fBeamline1 = BeamlineSetup(cData, beam1); std::cout << fBeamline1;
   Beamline fBeamline2 = BeamlineSetup(cData, beam2); std::cout << fBeamline2;
     
-  boost::shared_ptr<IParticle> iParticle(new Particle(particleX, particleY, particleZ, particlePX, particlePY, particlePZ, 1));
+  std::shared_ptr<IParticle> iParticle(new Particle(particleX, particleY, particleZ, particlePX, particlePY, particlePZ, 1));
 
   IParticle& fParticle = *iParticle;
   
diff --git a/ForwardDetectors/ZDC/ZdcNtuple/ZdcNtuple/ZdcNtuple.h b/ForwardDetectors/ZDC/ZdcNtuple/ZdcNtuple/ZdcNtuple.h
index 0537dc9c17cd94d84b67a74da896757e719e7950..71ee0bb4f2b919cf9effd138356e507169c895cf 100644
--- a/ForwardDetectors/ZDC/ZdcNtuple/ZdcNtuple/ZdcNtuple.h
+++ b/ForwardDetectors/ZDC/ZdcNtuple/ZdcNtuple/ZdcNtuple.h
@@ -35,7 +35,6 @@
 #include "PATInterfaces/SystematicVariation.h"
 #include "PATInterfaces/SystematicRegistry.h"
 
-#include "boost/unordered_map.hpp"
 #include "ZdcAnalysis/IZdcAnalysisTool.h"
 
 class ZdcNtuple : public EL::AnaAlgorithm
diff --git a/ForwardDetectors/ZDC/ZdcRec/ZdcRec/ZdcRecNoiseTool.h b/ForwardDetectors/ZDC/ZdcRec/ZdcRec/ZdcRecNoiseTool.h
index 469ad664b955ea54066dea4474d8e06643db65b9..0c5a4319ca2c08e6b1c34783e9c288d07a0b4d12 100644
--- a/ForwardDetectors/ZDC/ZdcRec/ZdcRec/ZdcRecNoiseTool.h
+++ b/ForwardDetectors/ZDC/ZdcRec/ZdcRec/ZdcRecNoiseTool.h
@@ -15,10 +15,6 @@
 
 #include <string>
 #include <map>
-//#include <boost/accumulators/accumulators.hpp>
-//#include <boost/accumulators/statistics/min.hpp>
-//#include <boost/accumulators/statistics/max.hpp>
-//#include <boost/accumulators/statistics/mean.hpp>
 
 #include "AthenaBaseComps/AthAlgTool.h"
 #include "GaudiKernel/ToolHandle.h"
@@ -62,11 +58,6 @@ private:
 
 	ZdcDigitsCollection* m_pedestalData{};
 
-	//Boost accumulator
-	//boost::accumulators::accumulator_set< double, boost::accumulators::features<
-	//															boost::accumulators::tag::min,
-	//															boost::accumulators::tag::max,
-	//															boost::accumulators::tag::mean > > m_acc;
 };
 
 #endif /* ZDCRECNOISETOOL_H_ */
diff --git a/InnerDetector/InDetConfig/python/InDetConfigFlags.py b/InnerDetector/InDetConfig/python/InDetConfigFlags.py
index cdf052fcbdfe93340011fc02fd9d8110a9ea6dea..cb4ae545ccc4240f501606e1a853c8f6b72a558e 100644
--- a/InnerDetector/InDetConfig/python/InDetConfigFlags.py
+++ b/InnerDetector/InDetConfig/python/InDetConfigFlags.py
@@ -32,10 +32,12 @@ def createInDetConfigFlags():
     icf.addFlag("InDet.checkDeadElementsOnTrack", True)
     # Turn running of Event Info TRT Occupancy Filling Alg on and off (also whether it is used in TRT PID calculation)
     icf.addFlag("InDet.doTRTGlobalOccupancy", False)
-    icf.addFlag("InDet.noTRTTiming",
-                lambda prevFlags: prevFlags.Beam.Type is BeamType.SingleBeam)
-    icf.addFlag("InDet.doTRTPhase",
-                lambda prevFlags: prevFlags.Beam.Type is BeamType.Cosmics)
+    icf.addFlag("InDet.noTRTTiming", lambda prevFlags:
+                prevFlags.Beam.Type is BeamType.SingleBeam and
+                prevFlags.Detector.EnableTRT)
+    icf.addFlag("InDet.doTRTPhase", lambda prevFlags:
+                prevFlags.Beam.Type is BeamType.Cosmics and
+                prevFlags.Detector.EnableTRT)
 
     # Tracking parameters
 
@@ -64,25 +66,33 @@ def createInDetConfigFlags():
     # Turn running of track segment creation in pixel on and off
     icf.addFlag("InDet.Tracking.doTrackSegmentsPixel",
                 lambda prevFlags: (
-                    prevFlags.Tracking.doMinBias or
-                    prevFlags.Tracking.doLowMu or
-                    prevFlags.Beam.Type is BeamType.Cosmics))
+                    prevFlags.Detector.EnablePixel and (
+                        prevFlags.Tracking.doMinBias or
+                        prevFlags.Tracking.doLowMu or
+                        prevFlags.Beam.Type is BeamType.Cosmics)))
     # Turn running of track segment creation in SCT on and off
     icf.addFlag("InDet.Tracking.doTrackSegmentsSCT",
-                lambda prevFlags: (prevFlags.Tracking.doLowMu or
-                                   prevFlags.Beam.Type is BeamType.Cosmics))
+                lambda prevFlags: (
+                    prevFlags.Detector.EnableSCT and (
+                        prevFlags.Tracking.doLowMu or
+                        prevFlags.Beam.Type is BeamType.Cosmics)))
     # Turn running of track segment creation in TRT on and off
     icf.addFlag("InDet.Tracking.doTrackSegmentsTRT",
-                lambda prevFlags: (prevFlags.Tracking.doLowMu or
-                                   prevFlags.Beam.Type is BeamType.Cosmics))
+                lambda prevFlags: (
+                    prevFlags.Detector.EnableTRT and
+                    (prevFlags.Tracking.doLowMu or
+                     prevFlags.Beam.Type is BeamType.Cosmics)))
     # turn on / off TRT extensions
-    icf.addFlag("InDet.Tracking.doTRTExtension", True)
+    icf.addFlag("InDet.Tracking.doTRTExtension",
+                lambda prevFlags: prevFlags.Detector.EnableTRT)
     # control to run TRT Segment finding (do it always after new tracking!)
     icf.addFlag("InDet.Tracking.doTRTSegments",
-                lambda prevFlags: (prevFlags.InDet.Tracking.doBackTracking or
-                                   prevFlags.InDet.Tracking.doTRTStandalone))
+                lambda prevFlags: (prevFlags.Detector.EnableTRT and
+                                   (prevFlags.InDet.Tracking.doBackTracking or
+                                    prevFlags.InDet.Tracking.doTRTStandalone)))
     # Turn running of backtracking on and off
     icf.addFlag("InDet.Tracking.doBackTracking", lambda prevFlags: (
+        prevFlags.Detector.EnableTRT and
         not(prevFlags.Beam.Type in [BeamType.SingleBeam, BeamType.Cosmics] or
             prevFlags.Reco.EnableHI or
             prevFlags.Tracking.doHighPileup or
@@ -95,6 +105,7 @@ def createInDetConfigFlags():
     icf.addFlag("InDet.Tracking.doVeryLowPt", False)
     # control TRT Standalone
     icf.addFlag("InDet.Tracking.doTRTStandalone", lambda prevFlags: (
+        prevFlags.Detector.EnableTRT and
         not(prevFlags.Reco.EnableHI or
             prevFlags.Tracking.doHighPileup or
             prevFlags.Tracking.doVtxLumi or
diff --git a/InnerDetector/InDetConfig/python/TRTPreProcessing.py b/InnerDetector/InDetConfig/python/TRTPreProcessing.py
index c6787aa11681b7cf671c5a972bf8f78a050f3fd3..23432e5e66f36b9a19b379a43e93858dd0cd02da 100644
--- a/InnerDetector/InDetConfig/python/TRTPreProcessing.py
+++ b/InnerDetector/InDetConfig/python/TRTPreProcessing.py
@@ -7,8 +7,11 @@
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.Enums import Format, BeamType
 
+
 def TRTPreProcessingCfg(flags, **kwargs):
     acc = ComponentAccumulator()
+    if not flags.Detector.EnableTRT:
+        return acc
 
     if flags.Input.Format is Format.BS or 'TRT_RDOs' in flags.Input.Collections:
 
@@ -16,31 +19,39 @@ def TRTPreProcessingCfg(flags, **kwargs):
         # --- TRT_RIO_Maker Algorithm
         #
         if flags.Beam.Type is BeamType.Cosmics:
-            from InDetConfig.InDetPrepRawDataFormationConfig import InDetTRT_NoTime_RIO_MakerCfg
+            from InDetConfig.InDetPrepRawDataFormationConfig import (
+                InDetTRT_NoTime_RIO_MakerCfg)
             acc.merge(InDetTRT_NoTime_RIO_MakerCfg(flags))
         else:
-            from InDetConfig.InDetPrepRawDataFormationConfig import InDetTRT_RIO_MakerCfg
+            from InDetConfig.InDetPrepRawDataFormationConfig import (
+                InDetTRT_RIO_MakerCfg)
             acc.merge(InDetTRT_RIO_MakerCfg(flags))
 
         if flags.InDet.doSplitReco:
-            from InDetConfig.InDetPrepRawDataFormationConfig import InDetTRT_RIO_MakerPUCfg
+            from InDetConfig.InDetPrepRawDataFormationConfig import (
+                InDetTRT_RIO_MakerPUCfg)
             acc.merge(InDetTRT_RIO_MakerPUCfg(flags))
 
         #
         #    Include alg to save the local occupancy inside xAOD::EventInfo
         #
         if flags.InDet.doTRTGlobalOccupancy:
-            from InDetConfig.TRT_ElectronPidToolsConfig import TRTOccupancyIncludeCfg
+            from InDetConfig.TRT_ElectronPidToolsConfig import (
+                TRTOccupancyIncludeCfg)
             acc.merge(TRTOccupancyIncludeCfg(flags))
 
     #
     # --- we need to do truth association if requested (not for uncalibrated hits in cosmics)
     #
-    if flags.InDet.doTruth and flags.Beam.Type is not BeamType.Cosmics and 'PRD_MultiTruthTRT' not in flags.Input.Collections:
-        from InDetConfig.InDetTruthAlgsConfig import InDetPRD_MultiTruthMakerTRTCfg
+    if flags.InDet.doTruth and (
+            flags.Beam.Type is not BeamType.Cosmics and
+            'PRD_MultiTruthTRT' not in flags.Input.Collections):
+        from InDetConfig.InDetTruthAlgsConfig import (
+            InDetPRD_MultiTruthMakerTRTCfg)
         acc.merge(InDetPRD_MultiTruthMakerTRTCfg(flags))
-        if flags.InDet.doSplitReco :
-            from InDetConfig.InDetTruthAlgsConfig import InDetPRD_MultiTruthMakerTRTPUCfg
+        if flags.InDet.doSplitReco:
+            from InDetConfig.InDetTruthAlgsConfig import (
+                InDetPRD_MultiTruthMakerTRTPUCfg)
             acc.merge(InDetPRD_MultiTruthMakerTRTPUCfg(flags))
     return acc
 
@@ -50,13 +61,14 @@ if __name__ == "__main__":
     flags = initConfigFlags()
 
     from AthenaConfiguration.TestDefaults import defaultTestFiles
-    flags.Input.Files=defaultTestFiles.RDO_RUN2
+    flags.Input.Files = defaultTestFiles.RDO_RUN2
 
     # TODO: TRT only?
 
-    numThreads=1
-    flags.Concurrency.NumThreads=numThreads
-    flags.Concurrency.NumConcurrentEvents=numThreads # Might change this later, but good enough for the moment.
+    numThreads = 1
+    flags.Concurrency.NumThreads = numThreads
+    # Might change this later, but good enough for the moment.
+    flags.Concurrency.NumConcurrentEvents = numThreads
 
     flags.lock()
     flags.dump()
@@ -78,6 +90,6 @@ if __name__ == "__main__":
     top_acc.merge(TRTPreProcessingCfg(flags))
 
     iovsvc = top_acc.getService('IOVDbSvc')
-    iovsvc.OutputLevel=5
+    iovsvc.OutputLevel = 5
     top_acc.run(25)
     top_acc.store(open("test_TRTPrepocessing.pkl", "wb"))
diff --git a/InnerDetector/InDetConfig/python/TrackRecoConfig.py b/InnerDetector/InDetConfig/python/TrackRecoConfig.py
index 161591b4bb6809e61f23cfa434d6312bc4ae8dd7..1581c1e9817474a34e0ac359da0bc5e8d78075bd 100644
--- a/InnerDetector/InDetConfig/python/TrackRecoConfig.py
+++ b/InnerDetector/InDetConfig/python/TrackRecoConfig.py
@@ -528,21 +528,6 @@ def InDetTrackRecoCfg(flags):
                 from TrkConfig.TrkTruthTrackAlgsConfig import TruthTrackingCfg
                 result.merge(TruthTrackingCfg(current_flags))
 
-                # Old config only scheduled InDetTrackTruth for IdealPseudoTracking, while the TrackParticleCnvAlg requires it if "doTruth" is enabled
-                PseudoTracks = 'InDetPseudoTracks'
-                result.merge(InDetTrackTruthCfg(
-                    current_flags,
-                    Tracks=PseudoTracks,
-                    DetailedTruth=PseudoTracks + 'DetailedTruth',
-                    TrackTruth=PseudoTracks + 'TruthCollection'))
-
-                result.merge(TrackParticleCnvAlgPIDCheckCfg(
-                    current_flags,
-                    name="PseudoTrackParticleCnvAlg",
-                    TrackContainerName=PseudoTracks,
-                    xAODTrackParticlesFromTracksContainerName=(
-                        "InDetPseudoTrackParticles")))
-
             isPrimaryPass = False
 
     # ----------------------------------------------------
@@ -578,6 +563,13 @@ def InDetTrackRecoCfg(flags):
     if flags.Tracking.doTruth:
         result.merge(InDetTrackTruthCfg(flags))
 
+        if (flags.InDet.Tracking.doPseudoTracking or
+            flags.InDet.Tracking.doIdealPseudoTracking):
+            result.merge(InDetTrackTruthCfg(
+                flags,
+                Tracks="InDetPseudoTracks",
+                DetailedTruth="InDetPseudoTracksDetailedTruth",
+                TracksTruth="InDetPseudoTracksTruthCollection"))
         if flags.Tracking.doTIDE_AmbiTrackMonitoring:
             result.merge(InDetTrackTruthCfg(
                 flags,
@@ -597,10 +589,23 @@ def InDetTrackRecoCfg(flags):
             flags),
         AssociationMapName="PRDtoTrackMapCombinedInDetTracks"))
 
+    if (flags.InDet.Tracking.doPseudoTracking or
+        flags.InDet.Tracking.doIdealPseudoTracking):
+        result.merge(TrackParticleCnvAlgCfg(
+            flags,
+            name="PseudoTrackParticleCnvAlg",
+            TrackContainerName="InDetPseudoTracks",
+            xAODTrackParticlesFromTracksContainerName=(
+                "InDetPseudoTrackParticles"),
+            AssociationMapName=(
+                "PRDtoTrackMapCombinedInDetTracks")))
     if flags.Tracking.doTIDE_AmbiTrackMonitoring:
         from xAODTrackingCnv.xAODTrackingCnvConfig import (
             ObserverTrackParticleCnvAlgCfg)
-        result.merge(ObserverTrackParticleCnvAlgCfg(flags))
+        result.merge(ObserverTrackParticleCnvAlgCfg(
+            flags,
+            AssociationMapName = (
+                "PRDtoTrackMapCombinedInDetTracks")))
 
     if flags.Tracking.doStoreTrackSeeds:
         from xAODTrackingCnv.xAODTrackingCnvConfig import (
@@ -630,8 +635,10 @@ def InDetTrackRecoCfg(flags):
             flags,
             name = "SiSPSeededTracksCnvAlg",
             TrackContainerName = TrackContainer,
-            xAODTrackParticlesFromTracksContainerName = \
-            "SiSPSeededTracksTrackParticles"))
+            xAODTrackParticlesFromTracksContainerName=(
+                "SiSPSeededTracksTrackParticles"),
+            AssociationMapName=(
+                "PRDtoTrackMapCombinedInDetTracks")))
 
     # ---------------------------------------
     # --- Primary vertexing
diff --git a/InnerDetector/InDetRawAlgs/InDetOverlay/test/BCMOverlay_test.cxx b/InnerDetector/InDetRawAlgs/InDetOverlay/test/BCMOverlay_test.cxx
index 84d04b09af2a4096f4e83d3a1e773937d78b8781..87334628fc0556b79bb53e5b487eb9bde9f24a7a 100644
--- a/InnerDetector/InDetRawAlgs/InDetOverlay/test/BCMOverlay_test.cxx
+++ b/InnerDetector/InDetRawAlgs/InDetOverlay/test/BCMOverlay_test.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
 */
 
 /** @class BCMOverlay_test
@@ -57,6 +57,7 @@ namespace OverlayTesting {
   };   // BCMOverlay_test fixture
 
 
+  // cppcheck-suppress syntaxError
   TEST_F(BCMOverlay_test, set_properties) {
     EventContext ctx(0,0);
     ctx.setExtension( Atlas::ExtendedEventContext( m_sg, 0 ) );
diff --git a/InnerDetector/InDetRawAlgs/InDetOverlay/test/PixelOverlay_test.cxx b/InnerDetector/InDetRawAlgs/InDetOverlay/test/PixelOverlay_test.cxx
index 4d95c73b3c041a5c8a40fd0910a5c5d5204db38b..ae25f14ea377216a9e10fa3c286f8dda028fbf8e 100644
--- a/InnerDetector/InDetRawAlgs/InDetOverlay/test/PixelOverlay_test.cxx
+++ b/InnerDetector/InDetRawAlgs/InDetOverlay/test/PixelOverlay_test.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
 */
 
 /**
@@ -55,6 +55,7 @@ namespace OverlayTesting {
   };   // PixelOverlay_test fixture
 
 
+  // cppcheck-suppress syntaxError
   TEST_F(PixelOverlay_test, set_properties) {
     EventContext ctx(0,0);
     ctx.setExtension( Atlas::ExtendedEventContext( m_sg, 0 ) );
diff --git a/InnerDetector/InDetRawAlgs/InDetOverlay/test/SCTOverlay_test.cxx b/InnerDetector/InDetRawAlgs/InDetOverlay/test/SCTOverlay_test.cxx
index 91f020f57b69d3c3d9d1c25134e981274ad93225..24ae797e3b1ad869704d8d34ec7e692825cc36fc 100644
--- a/InnerDetector/InDetRawAlgs/InDetOverlay/test/SCTOverlay_test.cxx
+++ b/InnerDetector/InDetRawAlgs/InDetOverlay/test/SCTOverlay_test.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
 */
 
 /**
@@ -83,6 +83,7 @@ namespace OverlayTesting {
   };   // SCTOverlay_test fixture
 
 
+  // cppcheck-suppress syntaxError
   TEST_F(SCTOverlay_test, set_properties) {
     EventContext ctx(0,0);
     ctx.setExtension( Atlas::ExtendedEventContext( m_sg, 0 ) );
diff --git a/InnerDetector/InDetRawAlgs/InDetOverlay/test/TRTOverlay_test.cxx b/InnerDetector/InDetRawAlgs/InDetOverlay/test/TRTOverlay_test.cxx
index b68838a55278f8e79fe9d23283271f49991d6145..761f10fba359bdd5bd496cfaad6f891e56d77959 100644
--- a/InnerDetector/InDetRawAlgs/InDetOverlay/test/TRTOverlay_test.cxx
+++ b/InnerDetector/InDetRawAlgs/InDetOverlay/test/TRTOverlay_test.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
 */
 
 /**
@@ -336,6 +336,7 @@ namespace OverlayTesting {
   };   // TRTOverlay_test fixture
 
 
+  // cppcheck-suppress syntaxError
   TEST_F(TRTOverlay_test, missing_inputs_alg_execute) {
     EventContext ctx = initEventContext(m_sg);
     ASSERT_TRUE( m_alg->initialize().isSuccess() );
diff --git a/InnerDetector/InDetRecTools/TRT_SeededSpacePointFinderTool/src/TRT_SeededSpacePointFinder_ATL.cxx b/InnerDetector/InDetRecTools/TRT_SeededSpacePointFinderTool/src/TRT_SeededSpacePointFinder_ATL.cxx
index 82b03e4277960f7bf443f0259ca160e4581179f1..06ae2342e1a5bd8c6c1ff5c26e05fd801d8b2a90 100755
--- a/InnerDetector/InDetRecTools/TRT_SeededSpacePointFinderTool/src/TRT_SeededSpacePointFinder_ATL.cxx
+++ b/InnerDetector/InDetRecTools/TRT_SeededSpacePointFinderTool/src/TRT_SeededSpacePointFinder_ATL.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
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -43,9 +43,9 @@ using namespace std;
 InDet::TRT_SeededSpacePointFinder_ATL::TRT_SeededSpacePointFinder_ATL
 (const std::string& t,const std::string& n,const IInterface* p)
   : AthAlgTool(t,n,p),
+    m_fieldmode("MapSolenoid"),
     m_sctId(nullptr)
 {
-  m_fieldmode = "MapSolenoid"              ;
   m_ptmin     =   500.  ;  //Lowest pT of track.Up to 2000MeV bending in (r,phi) is +-4
   m_r_rmax      = 600.  ;  //Max radial extend of Si ID
   m_r_rmin      = 0.    ;  //Min radial extend for loading SPs in ID
diff --git a/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx b/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx
index 1092c840fe99e186042a39f9ec0118b7956cf8a8..9ed7d58241c5729cb32e3299235a563bbe4fdc78 100755
--- a/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx
+++ b/InnerDetector/InDetRecTools/TRT_SeededTrackFinderTool/src/TRT_SeededTrackFinder_ATL.cxx
@@ -88,13 +88,14 @@ namespace{
 InDet::TRT_SeededTrackFinder_ATL::TRT_SeededTrackFinder_ATL
 (const std::string& t,const std::string& n,const IInterface* p)
   : AthAlgTool(t,n,p),
+    m_fieldmode("MapSolenoid"),
     m_roadmaker("InDet::SiDetElementsRoadMaker_xk"),
     m_proptool("Trk::RungeKuttaPropagator/InDetPropagator"),
     m_updatorTool("Trk::KalmanUpdator_xk/InDetPatternUpdator"),
     m_tracksfinder("InDet::SiCombinatorialTrackFinder_xk", this),
-    m_trtId(nullptr)
+    m_trtId(nullptr),
+    m_errorScale {1., 1., 1., 1., 1.}
 {
-  m_fieldmode    = "MapSolenoid"    ;   //Field Mode
   m_xi2max       = 15.              ;   //Maximum chi2 per DOF to accept track candidate
   m_xi2maxNoAdd  = 50.              ;   //Chi2 to accept as hit
   m_xi2maxlink   = 100.             ;   //Chi2 during cluster search
@@ -106,7 +107,6 @@ InDet::TRT_SeededTrackFinder_ATL::TRT_SeededTrackFinder_ATL
   m_bremCorrect  = false            ;   //Repeat seed search after brem correction
   m_propR        = false            ;   //Clean-up seeds by propagating to the first endcap hit
   m_useassoTool  = false            ;   //Use prd-track association tool during combinatorial track finding
-  m_errorScale   = {1., 1., 1., 1., 1.};
   m_outlierCut   = 25.              ;
   m_searchInCaloROI   = false       ;
   m_phiWidth     = .3                 ;
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Resolution.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Resolution.cxx
index 0fc15043a9ff4ea0badb0a56163172ec67973c89..be4224382837c403b8cac6df45594566b34ede52 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Resolution.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPerfPlot_Resolution.cxx
@@ -328,17 +328,10 @@ InDetPerfPlot_Resolution::getPlots(float weight) {
     if(iparam == PT) continue;
     m_pull[iparam]->Fill(m_pullP[iparam], weight);
     m_res[iparam]->Fill(m_resP[iparam], weight);
-    if(iparam == QOVERPT){
-      m_sigma[iparam]->Fill(m_sigP[iparam], weight);
-      m_sigma_vs_eta[iparam]->Fill(eta,  m_sigP[iparam], weight);
-      m_sigma_vs_pt[iparam]->Fill(m_truetrkP[PT], m_sigP[iparam], weight);
-      m_sigma_vs_lowpt[iparam]->Fill(m_truetrkP[PT], m_sigP[iparam], weight);
-    } else {
-      m_sigma[iparam]->Fill(m_sigP[iparam], weight);
-      m_sigma_vs_eta[iparam]->Fill(eta, m_sigP[iparam], weight);
-      m_sigma_vs_pt[iparam]->Fill(m_truetrkP[PT], m_sigP[iparam], weight);
-      m_sigma_vs_lowpt[iparam]->Fill(m_truetrkP[PT], m_sigP[iparam], weight);
-    }
+    m_sigma[iparam]->Fill(m_sigP[iparam], weight);
+    m_sigma_vs_eta[iparam]->Fill(eta, m_sigP[iparam], weight);
+    m_sigma_vs_pt[iparam]->Fill(m_truetrkP[PT], m_sigP[iparam], weight);
+    m_sigma_vs_lowpt[iparam]->Fill(m_truetrkP[PT], m_sigP[iparam], weight);
     m_resHelpereta[iparam]->Fill(eta, m_resP[iparam], weight);
     m_resHelperpt[iparam]->Fill(m_truetrkP[PT], m_resP[iparam], weight);
     m_resHelperlowpt[iparam]->Fill(m_truetrkP[PT], m_resP[iparam], weight);
diff --git a/MuonSpectrometer/MuonCnv/MuonMM_CnvTools/src/MM_RawDataProviderToolCore.cxx b/MuonSpectrometer/MuonCnv/MuonMM_CnvTools/src/MM_RawDataProviderToolCore.cxx
index dc03fed9aa35c27e7612c743185ef684159a5957..665d6f3450fa1c76fc2895c1566acda5eca7caca 100644
--- a/MuonSpectrometer/MuonCnv/MuonMM_CnvTools/src/MM_RawDataProviderToolCore.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonMM_CnvTools/src/MM_RawDataProviderToolCore.cxx
@@ -1,9 +1,14 @@
 /*
-  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 
-#include <atomic>
+
 #include "MM_RawDataProviderToolCore.h"
+#include "Identifier/IdentifierHash.h"
+#include <atomic>
+#include <memory> //for unique_ptr
+#include <unordered_map>
+
 using OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment;
 
 //================ Constructor =================================================
@@ -13,7 +18,8 @@ Muon::MM_RawDataProviderToolCore::MM_RawDataProviderToolCore(const std::string&
 { }
 
 //================ Initialisation ==============================================
-StatusCode Muon::MM_RawDataProviderToolCore::initialize()
+StatusCode 
+Muon::MM_RawDataProviderToolCore::initialize()
 {
   ATH_CHECK(AthAlgTool::initialize());
   ATH_CHECK(m_idHelperSvc.retrieve());
@@ -27,7 +33,8 @@ StatusCode Muon::MM_RawDataProviderToolCore::initialize()
 }
 
 //==============================================================================
-StatusCode Muon::MM_RawDataProviderToolCore::convertIntoContainer(const std::vector<const ROBFragment*>& vecRobs, const std::vector<IdentifierHash>& rdoIdhVect, MM_RawDataContainer& mmRdoContainer) const
+StatusCode 
+Muon::MM_RawDataProviderToolCore::convertIntoContainer(const std::vector<const ROBFragment*>& vecRobs, const std::vector<IdentifierHash>& rdoIdhVect, MM_RawDataContainer& mmRdoContainer) const
 {
   // Since there can be multiple ROBFragments contributing to the same RDO collection a temporary cache is setup and passed to fillCollection by reference. Once all ROBFragments are processed the collections are added into the rdo container
 
@@ -45,7 +52,7 @@ StatusCode Muon::MM_RawDataProviderToolCore::convertIntoContainer(const std::vec
   // add the RDO collections created from the data of this ROB into the identifiable container.
   for (auto& [hash, collection]: rdo_map) {
 
-    if (!collection->size()) continue; // skip empty collections
+    if ((!collection) or collection->empty()) continue; // skip empty collections
 
     MM_RawDataContainer::IDC_WriteHandle lock = mmRdoContainer.getWriteHandle(hash);
 
diff --git a/MuonSpectrometer/MuonCnv/MuonMM_CnvTools/src/MM_RawDataProviderToolCore.h b/MuonSpectrometer/MuonCnv/MuonMM_CnvTools/src/MM_RawDataProviderToolCore.h
index 9621a5226ba746994a6bf6f9907409a54791da58..5dac841b148827b1dd76ee5403a3aa3a673bd0a5 100644
--- a/MuonSpectrometer/MuonCnv/MuonMM_CnvTools/src/MM_RawDataProviderToolCore.h
+++ b/MuonSpectrometer/MuonCnv/MuonMM_CnvTools/src/MM_RawDataProviderToolCore.h
@@ -13,6 +13,11 @@
 #include "MuonMM_CnvTools/IMM_ROD_Decoder.h"
 
 #include "MuonRDO/MM_RawDataContainer.h"
+#include "ByteStreamData/RawEvent.h" //OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment (typedef)
+#include <string>
+#include <vector>
+
+class IdentifierHash;
 
 namespace Muon {
 
diff --git a/MuonSpectrometer/MuonCnv/MuonSTGC_CnvTools/src/STGC_RawDataProviderToolCore.cxx b/MuonSpectrometer/MuonCnv/MuonSTGC_CnvTools/src/STGC_RawDataProviderToolCore.cxx
index b655e3d47a6bf717883e9ff8460ff411cd340b13..ef66008f3732187a8a6a804d78c57829c21e1d65 100644
--- a/MuonSpectrometer/MuonCnv/MuonSTGC_CnvTools/src/STGC_RawDataProviderToolCore.cxx
+++ b/MuonSpectrometer/MuonCnv/MuonSTGC_CnvTools/src/STGC_RawDataProviderToolCore.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 
 #include <atomic>
@@ -42,7 +42,7 @@ StatusCode Muon::STGC_RawDataProviderToolCore::convertIntoContainer(const std::v
   // add the RDO collections created from the data of this ROB into the identifiable container.
   for (auto& [hash, collection]: rdo_map) {
 
-    if (!collection->size()) continue; // skip empty collections
+    if ((!collection) or collection->empty()) continue; // skip empty collections
 
     STGC_RawDataContainer::IDC_WriteHandle lock = stgcRdoContainer.getWriteHandle(hash);
 
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h
index 242e763205f0d90dcfa741601401410b9e55fcb2..e4bd77f31b27b02305b55350c0496e50dffe694b 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/MuonReadoutGeometry/MuonDetectorManager.h
@@ -177,7 +177,8 @@ namespace MuonGM {
         void setCacheFillingFlag(int value);
         inline int cacheFillingFlag() const;
 
-        void setNSWABLineAsciiPath(const std::string& str);
+        void setNSWABLineAsciiPath(const std::string &);
+        void setNSWAsBuiltAsciiPath(const std::string &, const std::string &);
 
         void setMinimalGeoFlag(int flag);
         inline int  MinimalGeoFlag() const;
@@ -370,6 +371,8 @@ namespace MuonGM {
         std::string m_DBMuonVersion{};    // name of the MuonVersion table-collection in Oracle
 
         std::string m_NSWABLineAsciiPath{};
+        bool m_NSWAsBuiltAsciiOverrideMM{false};
+        bool m_NSWAsBuiltAsciiOverrideSTgc{false};
 
         // pointers to IdHelpers
         const MdtIdHelper* m_mdtIdHelper{nullptr};
@@ -451,8 +454,6 @@ namespace MuonGM {
     const sTgcIdHelper* MuonDetectorManager::stgcIdHelper() const { return m_stgcIdHelper; }
     const MmIdHelper* MuonDetectorManager::mmIdHelper() const { return m_mmIdHelper; }
 
-
-
     const GenericRPCCache* MuonDetectorManager::getGenericRpcDescriptor() const { return &m_genericRPC; }
     const GenericMDTCache* MuonDetectorManager::getGenericMdtDescriptor() const { return &m_genericMDT; }
 
diff --git a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx
index c8924ef7dc84ad8f2fe54ebde570f55696061629..d149b649f9cf00ea320a85a9b1bcc98056983479 100644
--- a/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx
+++ b/MuonSpectrometer/MuonDetDescr/MuonReadoutGeometry/src/MuonDetectorManager.cxx
@@ -744,7 +744,7 @@ namespace MuonGM {
 
 #ifndef SIMULATIONBASE
         if (m_stgcIdHelper && m_mmIdHelper && !(m_NSWABLineAsciiPath.empty())) {
-			log << MSG::DEBUG << "Using NSW AB lines from file: " << m_NSWABLineAsciiPath << endmsg;
+	    log << MSG::DEBUG << "Using NSW AB lines from file: " << m_NSWABLineAsciiPath << endmsg;
             ALineMapContainer writeALines;
             BLineMapContainer writeBLines;
             MuonCalib::NSWCondUtils::setNSWABLinesFromAscii(m_NSWABLineAsciiPath, writeALines, writeBLines, m_stgcIdHelper, m_mmIdHelper);
@@ -1413,6 +1413,7 @@ namespace MuonGM {
     }
 
     void MuonDetectorManager::setMMAsBuiltCalculator(const NswAsBuiltDbData* nswAsBuiltData) {
+        if (m_NSWAsBuiltAsciiOverrideMM) return; // test-mode using AsBuilt conditions from an ascii file
 #ifndef SIMULATIONBASE
         m_MMAsBuiltCalculator.reset();  // unset any previous instance
         m_MMAsBuiltCalculator = std::make_unique<NswAsBuilt::StripCalculator>();
@@ -1429,6 +1430,7 @@ namespace MuonGM {
     }
 
     void MuonDetectorManager::setStgcAsBuiltCalculator(const NswAsBuiltDbData* nswAsBuiltData) {
+        if (m_NSWAsBuiltAsciiOverrideSTgc) return; // test-mode using AsBuilt conditions from an ascii file
 #ifndef SIMULATIONBASE
         m_StgcAsBuiltCalculator.reset();  // unset any previous instance
         m_StgcAsBuiltCalculator = std::make_unique<NswAsBuilt::StgcStripCalculator>();
@@ -1592,8 +1594,39 @@ namespace MuonGM {
             return m_mdt_BMG_stName;
         return stationIndex;
     }
-    
+
+    // functions that override standard condition input for tests
     void MuonDetectorManager::setNSWABLineAsciiPath(const std::string& str) { m_NSWABLineAsciiPath = str; }
+    void MuonDetectorManager::setNSWAsBuiltAsciiPath(const std::string &strMM, const std::string &strSTgc) {
+        if (!strMM.empty()) {
+            MsgStream log(Athena::getMessageSvc(), "MGM::MuonDetectorManager");
+            log << MSG::INFO << "Overriding standard MM As-Built conditions with an external ascii file" << endmsg;
+            std::ifstream thefile(strMM);
+            std::stringstream buffer;
+            buffer << thefile.rdbuf();
+            std::string str = buffer.str();
+            thefile.close();
+            std::unique_ptr<NswAsBuiltDbData> readNswAsBuilt = std::make_unique<NswAsBuiltDbData>();
+            readNswAsBuilt->setMmData(str);
+            setMMAsBuiltCalculator(readNswAsBuilt.get());
+            m_NSWAsBuiltAsciiOverrideMM = true;
+        }
+
+        if (!strSTgc.empty()) {
+            MsgStream log(Athena::getMessageSvc(), "MGM::MuonDetectorManager");
+            log << MSG::INFO << "Overriding standard sTGC As-Built conditions with an external ascii file" << endmsg;
+            std::ifstream thefile(strSTgc);
+            std::stringstream buffer;
+            buffer << thefile.rdbuf();
+            std::string str = buffer.str();
+            thefile.close();
+            std::unique_ptr<NswAsBuiltDbData> readNswAsBuilt = std::make_unique<NswAsBuiltDbData>();
+            readNswAsBuilt->setSTgcData(str);
+            setStgcAsBuiltCalculator(readNswAsBuilt.get());
+            m_NSWAsBuiltAsciiOverrideSTgc = true;
+        }
+    }
+    
     void MuonDetectorManager::setCacheFillingFlag(int value) { m_cacheFillingFlag = value; }
     void MuonDetectorManager::setCachingFlag(int value) { m_cachingFlag = value; }
     void MuonDetectorManager::set_DBMuonVersion(const std::string& version) { m_DBMuonVersion = version; }
diff --git a/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorFactory001.h b/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorFactory001.h
index 9ff189c84f26b7300a7964a0797a7c2479653d35..02f54ef0a56b245dffe4de614255ebfea6a8176e 100644
--- a/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorFactory001.h
+++ b/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorFactory001.h
@@ -68,6 +68,7 @@ namespace MuonGM {
         inline void hasSTgc(bool value);
         inline void hasMM(bool value);
         inline void setNSWABLineAsciiPath(const std::string &);
+        inline void setNSWAsBuiltAsciiPath(const std::string &, const std::string &);
 
       private:
 
@@ -105,7 +106,9 @@ namespace MuonGM {
         bool m_hasMM{true};
 
         std::string m_NSWABLineAsciiPath{};
-
+        std::string m_NSWAsBuiltAsciiPathMM{};
+        std::string m_NSWAsBuiltAsciiPathSTgc{};
+        
         std::vector<std::string> m_selectedStations;
         std::vector<int> m_selectedStEta;
         std::vector<int> m_selectedStPhi;
@@ -156,6 +159,13 @@ namespace MuonGM {
     void MuonDetectorFactory001::hasSTgc(bool value) { m_hasSTgc = value; }
     void MuonDetectorFactory001::hasMM(bool value) { m_hasMM = value; }
     void MuonDetectorFactory001::setNSWABLineAsciiPath(const std::string &str) { m_NSWABLineAsciiPath = str; }
+    void MuonDetectorFactory001::setNSWAsBuiltAsciiPath(const std::string &strMM, const std::string &strSTgc) { 
+        m_NSWAsBuiltAsciiPathMM = strMM; 
+        m_NSWAsBuiltAsciiPathSTgc = strSTgc; 
+    }
+        
+        
+        
 } // namespace MuonGM
 
 #endif
diff --git a/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorTool.h b/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorTool.h
index 4455247e726a0f5f9566b709a5facedacd692ce8..f4e828e46117e795325424eae160f2ad876cb7ab 100644
--- a/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorTool.h
+++ b/MuonSpectrometer/MuonGeoModel/MuonGeoModel/MuonDetectorTool.h
@@ -70,12 +70,14 @@ class MuonDetectorTool final : public GeoModelTool {
     
     Gaudi::Property<bool> m_cachingFlag{this, "CachingFlag", true, "Turn on/off caching of ReadoutElement surfaces etc. (i.e. for MDTs)"};
     // the following two properties are for local validation, not for production
-    Gaudi::Property<std::string> m_NSWABLineAsciiPath{this, "NSWABLineAsciiPath", "", "Pass A/B Lines for NSW from an Ascii file"};
+    Gaudi::Property<std::string> m_NSWABLineAsciiPath{this,  "NSWABLineAsciiPath", "", "Pass A/B lines for NSW from an Ascii file"};
+    Gaudi::Property<std::string> m_NSWAsBuiltAsciiPathMM{this,   "NSWAsBuiltAsciiPathMM",   "", "Pass As-Built parameters for MM chambers from an Ascii file"};
+    Gaudi::Property<std::string> m_NSWAsBuiltAsciiPathSTgc{this, "NSWAsBuiltAsciiPathSTgc", "", "Pass As-Built parameters for sTGC chambers from an Ascii file"};
     
-    Gaudi::Property<bool> m_enableMdtDeformations{this, "EnableMdtDeformations", true};
+    Gaudi::Property<bool> m_enableMdtDeformations{this,      "EnableMdtDeformations", true};
     Gaudi::Property<bool> m_enableMdtAsBuiltParameters{this, "EnableMdtAsBuiltParameters", false};
     Gaudi::Property<bool> m_enableNswAsBuiltParameters{this, "EnableNswAsBuiltParameters", false};
-    Gaudi::Property<std::string> m_altMdtAsBuiltFile{this, "AlternateAsBuiltParamAlignFile", "" };
+    Gaudi::Property<std::string> m_altMdtAsBuiltFile{this,   "AlternateAsBuiltParamAlignFile", "" };
 
     MuonGM::MuonDetectorManager* m_manager{nullptr};
 };
diff --git a/MuonSpectrometer/MuonGeoModel/src/MuonDetectorFactory001.cxx b/MuonSpectrometer/MuonGeoModel/src/MuonDetectorFactory001.cxx
index 7501d3edd7ebcf12a2413dfd2f89dd3f90917f30..9f3c33b10944ef3dcbcf1d7cbfa489489ac2ed44 100644
--- a/MuonSpectrometer/MuonGeoModel/src/MuonDetectorFactory001.cxx
+++ b/MuonSpectrometer/MuonGeoModel/src/MuonDetectorFactory001.cxx
@@ -131,6 +131,7 @@ namespace MuonGM {
         m_manager->setCacheFillingFlag(m_cacheFillingFlag);
         m_manager->setControlAlinesFlag(m_controlAlines);
         m_manager->setNSWABLineAsciiPath(m_NSWABLineAsciiPath);
+        m_manager->setNSWAsBuiltAsciiPath(m_NSWAsBuiltAsciiPathMM, m_NSWAsBuiltAsciiPathSTgc);
         // set here the flag defining the geometry granularity
         // minimalgeo = 1 => The geo tree is built up to the Detector Level (Full PhysVol)
         //                     no internal structure of the Detector is built
diff --git a/MuonSpectrometer/MuonGeoModel/src/MuonDetectorTool.cxx b/MuonSpectrometer/MuonGeoModel/src/MuonDetectorTool.cxx
index 3f4c6ad9f67c0c4d69aaf0c9c61d6c0b3e18a099..fa9e62c1af92985c5fbf2daf29b34040cf8fc215 100644
--- a/MuonSpectrometer/MuonGeoModel/src/MuonDetectorTool.cxx
+++ b/MuonSpectrometer/MuonGeoModel/src/MuonDetectorTool.cxx
@@ -298,6 +298,7 @@ StatusCode MuonDetectorTool::createFactory(MuonGM::MuonDetectorManager * & mgr)
         theFactory.setDBkey(detectorKey);
         theFactory.setDBnode(detectorNode);
         theFactory.setNSWABLineAsciiPath(m_NSWABLineAsciiPath);
+        theFactory.setNSWAsBuiltAsciiPath(m_NSWAsBuiltAsciiPathMM, m_NSWAsBuiltAsciiPathSTgc);
         theFactory.setAmdcDb(isAmdcDb);
         theFactory.setLayout(tempLayout);
         theFactory.setCutoutsFlag(m_includeCutouts);
diff --git a/PhysicsAnalysis/AnalysisCommon/EventUtils/CMakeLists.txt b/PhysicsAnalysis/AnalysisCommon/EventUtils/CMakeLists.txt
index cfd5b9834fb3d782949f13a3260ce8fdb17d7aae..f807661f03261b411f092937b9088cdb1e5bf8f6 100644
--- a/PhysicsAnalysis/AnalysisCommon/EventUtils/CMakeLists.txt
+++ b/PhysicsAnalysis/AnalysisCommon/EventUtils/CMakeLists.txt
@@ -3,12 +3,9 @@
 # Declare the package name:
 atlas_subdir( EventUtils )
 
-# External dependencies:
-find_package( Boost )
 
 # Component(s) in the package:
 atlas_add_component( EventUtils
                      src/*.cxx
                      src/components/*.cxx
-                     INCLUDE_DIRS ${Boost_INCLUDE_DIRS}
-                     LINK_LIBRARIES ${Boost_LIBRARIES} AsgDataHandlesLib AsgTools AthAnalysisBaseCompsLib AthContainers AthContainersInterfaces AthenaBaseComps AthenaKernel CxxUtils EventInfo xAODBase xAODCaloEvent xAODCore xAODCutFlow xAODEgamma xAODEventInfo xAODJet xAODMuon xAODPFlow xAODParticleEvent xAODTau xAODTracking xAODTruth GaudiKernel PATCoreLib ExpressionEvaluationLib TrigDecisionToolLib DerivationFrameworkInterfaces )
+                     LINK_LIBRARIES AsgDataHandlesLib AsgTools AthAnalysisBaseCompsLib AthContainers AthContainersInterfaces AthenaBaseComps AthenaKernel CxxUtils EventInfo xAODBase xAODCaloEvent xAODCore xAODCutFlow xAODEgamma xAODEventInfo xAODJet xAODMuon xAODPFlow xAODParticleEvent xAODTau xAODTracking xAODTruth GaudiKernel PATCoreLib ExpressionEvaluationLib TrigDecisionToolLib DerivationFrameworkInterfaces )
diff --git a/PhysicsAnalysis/AnalysisCommon/EventUtils/src/ParticleRemoverAlg.cxx b/PhysicsAnalysis/AnalysisCommon/EventUtils/src/ParticleRemoverAlg.cxx
index b73f7434f844b343fc7807014785ef3d0058b74e..e7deed0a19eb3aef7b86fc7da23e5d1d1e1c44c5 100644
--- a/PhysicsAnalysis/AnalysisCommon/EventUtils/src/ParticleRemoverAlg.cxx
+++ b/PhysicsAnalysis/AnalysisCommon/EventUtils/src/ParticleRemoverAlg.cxx
@@ -25,10 +25,6 @@
 #include "xAODTruth/TruthParticleContainer.h"
 #include "xAODParticleEvent/CompositeParticleContainer.h"
 
-// boost includes
-#include <boost/algorithm/string/predicate.hpp>
-
-
 ParticleRemoverAlg::ParticleRemoverAlg( const std::string& name, ISvcLocator* pSvcLocator )
   : AthAlgorithm( name, pSvcLocator ),
   m_inCont(""),
@@ -105,7 +101,7 @@ StatusCode ParticleRemoverAlg::initialize()
   for ( std::size_t i=1; i<totSize; ++i ) {
     const std::string& currentSuffix = m_suffixes.value()[i-1];
     ATH_MSG_VERBOSE("Using current suffix " << currentSuffix << " to search for matching containers");
-    if (boost::starts_with( currentSuffix, m_separator.value() )) {
+    if ( currentSuffix.rfind( m_separator.value(),0 ) == 0 ) { // If the currentSuffix starts with m_separator.value()
       m_inContNameList[i]  = m_inCont.value()  + currentSuffix;
       m_outContNameList[i] = m_outCont.value() + currentSuffix;
     }
diff --git a/PhysicsAnalysis/AnalysisCommon/EventUtils/src/ParticleRemoverAlg.icc b/PhysicsAnalysis/AnalysisCommon/EventUtils/src/ParticleRemoverAlg.icc
index 5a1c5f5f37cf8cde517fec77fededa37eb2a4ea5..38a25a224d06f77f0c6c261bb757bace10fdc71f 100644
--- a/PhysicsAnalysis/AnalysisCommon/EventUtils/src/ParticleRemoverAlg.icc
+++ b/PhysicsAnalysis/AnalysisCommon/EventUtils/src/ParticleRemoverAlg.icc
@@ -12,10 +12,6 @@
 #include "xAODCore/ShallowCopy.h"
 #include "AthContainers/ConstDataVector.h"
 
-// boost includes
-#include <boost/algorithm/string/predicate.hpp>
-
-
 
 template<class CONT>
 StatusCode ParticleRemoverAlg::removeParticles( const std::vector<bool>& keepParticleVec )
diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/DerivationFrameworkBPhys/BPhysVertexTrackBase.h b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/DerivationFrameworkBPhys/BPhysVertexTrackBase.h
index 45f65bcd812adb6589885f0ffd75af63eb355fbf..0e818d6b8c689890c1514ee90cc9adb57af37af6 100644
--- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/DerivationFrameworkBPhys/BPhysVertexTrackBase.h
+++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/DerivationFrameworkBPhys/BPhysVertexTrackBase.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
 */
 
 //============================================================================
@@ -220,7 +220,7 @@ namespace DerivationFramework {
       std::string buildBranchBaseName(unsigned int its,
                                               unsigned int ipv,
                                               unsigned int itt,
-                                              std::string preSuffix="") const;
+                                              const std::string& preSuffix="") const;
       
       std::pair<const xAOD::Vertex*, double>
         findMinChi2PV(const xAOD::TrackParticle* track,
diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/src/BPhysVertexTrackBase.cxx b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/src/BPhysVertexTrackBase.cxx
index 509829c0bd82909c0081cc2926228e0c893c759f..b058d6647603d06f312e209509e2ea2167f089f6 100644
--- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/src/BPhysVertexTrackBase.cxx
+++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkBPhys/src/BPhysVertexTrackBase.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
 */
 
 //============================================================================
@@ -1316,7 +1316,7 @@ namespace DerivationFramework {
   std::string BPhysVertexTrackBase::buildBranchBaseName(unsigned int its,
                                                         unsigned int ipv,
                                                         unsigned int itt,
-                                                        std::string preSuffix)
+                                                        const std::string& preSuffix)
     const {
     
     ATH_MSG_DEBUG("BPhysVertexTrackBase::buildBranchBaseName -- begin");
diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/src/CompactHardTruth.cxx b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/src/CompactHardTruth.cxx
index 325a3c74e122888ddec15a549d1a6f06209d649d..c5345989d83b39ab6eb390c338307f43337637e5 100644
--- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/src/CompactHardTruth.cxx
+++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkMCTruth/src/CompactHardTruth.cxx
@@ -498,14 +498,14 @@ StatusCode CompactHardTruth::execute() {
       if (pvtx->particles_in().size() == 1 && pvtx->particles_out().size() == 1) {
         // Incoming particle to parent vertex
         HepMC::GenParticlePtr pp = pvtx->particles_in().front();
-        if (!pp || HepMC::barcode(pp) == 0) {
+        if (!pp || pp->parent_event() == nullptr) {
           ATH_MSG_DEBUG("1->1: missing pp for fp " << fp);
           ++m_missCount;
           continue;
         }
         // Its parent vertex
         HepMC::GenVertexPtr ppvtx = pp->production_vertex();
-        if (!ppvtx || HepMC::barcode(ppvtx) == 0) {
+        if (!ppvtx || ppvtx->parent_event() == nullptr) {
           ATH_MSG_DEBUG("1->1: missing ppvtx for fp " << fp);
           ++m_missCount;
           continue;
@@ -538,12 +538,12 @@ StatusCode CompactHardTruth::execute() {
         // Their parent vertices
         HepMC::GenVertexPtr ppvtx1 = pp1->production_vertex();
         HepMC::GenVertexPtr ppvtx2 = pp2->production_vertex();
-        if (!ppvtx1 || HepMC::barcode(ppvtx1) == 0) {
+        if (!ppvtx1 || ppvtx1->parent_event() == nullptr) {
           ATH_MSG_DEBUG("2->1: missing ppvtx1 for fp " << fp);
           ++m_missCount;
           continue;
         }
-        if (!ppvtx2 || HepMC::barcode(ppvtx2) == 0) {
+        if (!ppvtx2 || ppvtx2->parent_event() == nullptr) {
           ATH_MSG_DEBUG("2->1: missing ppvtx2 for fp " << fp);
           ++m_missCount;
           continue;
@@ -608,7 +608,7 @@ StatusCode CompactHardTruth::execute() {
         }
         // Associated vertices
         HepMC::GenVertexPtr ppvtx = pp->production_vertex();
-        if (!ppvtx || HepMC::barcode(ppvtx) == 0) {
+        if (!ppvtx || ppvtx->parent_event() == nullptr) {
           ATH_MSG_DEBUG("1->2: missing ppvtx for fp " << fp);
           ++m_missCount;
           continue;
@@ -1195,7 +1195,7 @@ StatusCode CompactHardTruth::execute() {
       // Sherpa does 1-body decay of incoming protons :-(
       if (pin == beams[0] || pin == beams[1]) continue;
       HepMC::GenVertexPtr pvtx = pin->production_vertex();
-      if (!pvtx || HepMC::barcode(pvtx) == 0) {
+      if (!pvtx || pvtx->parent_event() == nullptr) {
         ATH_MSG_DEBUG("1->1: missing pvtx for vertex " << v);
         ++m_missCount;
         continue;
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DataPrepUtilities.h b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DataPrepUtilities.h
index f468614c01f5d52caa9c7c364c41f05b02579853..fc381d5c2e83579d928a62c5551cd7b2b29f99d5 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DataPrepUtilities.h
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/FlavorTagDiscriminants/DataPrepUtilities.h
@@ -271,7 +271,8 @@ namespace FlavorTagDiscriminants {
     // return the decorators for the NNs
     std::tuple<
       std::map<std::string, internal::OutNode>,
-      FTagDataDependencyNames>
+      FTagDataDependencyNames,
+      std::set<std::string>>
     createDecorators(
       const lwt::GraphConfig& config,
       const FTagOptions& options);
@@ -280,9 +281,15 @@ namespace FlavorTagDiscriminants {
     std::tuple<
       std::function<char(const internal::Tracks&)>,
       std::vector<SG::AuxElement::Decorator<char>>,
-      FTagDataDependencyNames>
+      FTagDataDependencyNames,
+      std::set<std::string>>
     createIpChecker(
       const lwt::GraphConfig&, const FTagOptions&);
+
+    // check that all the remapping was used
+    void checkForUnusedRemaps(
+      const std::map<std::string, std::string>& requested,
+      const std::set<std::string>& used);
   }
 }
 #endif
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2.cxx
index 0fa65e524eec16e02b8d2da70515bd7154cca2d9..01b9901db6503e31dcf15dd61070e6ef83c12b68 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2.cxx
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DL2.cxx
@@ -50,16 +50,20 @@ namespace FlavorTagDiscriminants {
     m_dataDependencyNames += td;
     m_trackSequenceBuilders = tsb;
 
-    auto [decorators, dd] = dataprep::createDecorators(
+    auto [decorators, dd, rd] = dataprep::createDecorators(
       graph_config, options);
     m_dataDependencyNames += dd;
     m_decorators = decorators;
 
-    auto [track_validity, is_defaults, ipdd] = dataprep::createIpChecker(
+    auto [track_validity, is_defaults, ipdd, rc] = dataprep::createIpChecker(
       graph_config, options);
     m_invalid_track_checker = track_validity;
     m_is_defaults = is_defaults;
     m_dataDependencyNames += ipdd;
+
+    // check that all remapping was used
+    rd.merge(rc);
+    dataprep::checkForUnusedRemaps(options.remap_scalar, rd);
   }
 
   void DL2::decorate(const xAOD::BTagging& btag) const {
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DataPrepUtilities.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DataPrepUtilities.cxx
index 891736bed8dfbf3e9a67d4fb3d4340bdeb51e63d..885810abbff9e30ab9848de8fa2642f3ca690ba7 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DataPrepUtilities.cxx
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/DataPrepUtilities.cxx
@@ -857,7 +857,8 @@ namespace FlavorTagDiscriminants {
     // the EDM.
     std::tuple<
       std::map<std::string, internal::OutNode>,
-      FTagDataDependencyNames>
+      FTagDataDependencyNames,
+      std::set<std::string>>
     createDecorators(
       const lwt::GraphConfig& config,
       const FTagOptions& options)
@@ -865,6 +866,7 @@ namespace FlavorTagDiscriminants {
       FTagDataDependencyNames deps;
       std::map<std::string, internal::OutNode> decorators;
       std::map<std::string, std::string> remap = options.remap_scalar;
+      std::set<std::string> used_remap;
 
       for (const auto& out_node: config.outputs) {
         std::string node_name = out_node.first;
@@ -874,7 +876,10 @@ namespace FlavorTagDiscriminants {
           std::string name = node_name + "_" + element;
 
           // let user rename the output
-          if (auto h = remap.extract(name)) name = h.mapped();
+          if (auto h = remap.extract(name)){
+            name = h.mapped();
+            used_remap.insert(h.key());
+          }
           deps.bTagOutputs.insert(name);
 
           SG::AuxElement::Decorator<float> f(name);
@@ -883,28 +888,21 @@ namespace FlavorTagDiscriminants {
         decorators[node_name] = node;
       }
 
-      // we want to make sure every remapping was used
-      if (remap.size() > 0) {
-        std::string outputs;
-        for (const auto& item: remap) {
-          outputs.append(item.first);
-          if (item != *remap.rbegin()) outputs.append(", ");
-        }
-        throw std::logic_error("found unused output remapping(s): " + outputs);
-      }
-
-      return std::make_tuple(decorators, deps);
+      return std::make_tuple(decorators, deps, used_remap);
     }
 
     // return a function to check IP validity
     std::tuple<
       std::function<char(const internal::Tracks&)>,
       std::vector<SG::AuxElement::Decorator<char>>,
-      FTagDataDependencyNames>
+      FTagDataDependencyNames,
+      std::set<std::string>>
     createIpChecker(
       const lwt::GraphConfig& gc, const FTagOptions& opts) {
       using namespace internal;
       FTagDataDependencyNames deps;
+      std::map<std::string, std::string> remap = opts.remap_scalar;
+      std::set<std::string> used_remap;
       // dummy if there's no invalid check key
       std::function checker = [](const Tracks&) -> char {return 0;};
       // if we do have a key, return 1 for invalid
@@ -923,12 +921,36 @@ namespace FlavorTagDiscriminants {
       for (const auto& output: gc.outputs) {
         std::string basename = output.first;
         std::string dec_name = basename + "_isDefaults";
+        if (auto h = remap.extract(dec_name)) {
+          dec_name = h.mapped();
+          used_remap.insert(h.key());
+        }
         default_decs.emplace_back(dec_name);
         deps.bTagOutputs.insert(dec_name);
       }
-      return {checker, default_decs, deps};
+      return {checker, default_decs, deps, used_remap};
     }
 
+    void checkForUnusedRemaps(
+      const std::map<std::string, std::string>& requested,
+      const std::set<std::string>& used)
+    {
+      // we want to make sure every remapping was used
+      std::set<std::string> unused;
+      for (auto [k, v]: requested) {
+        if (!used.count(k)) unused.insert(k);
+      }
+      if (unused.size() > 0) {
+        std::string outputs;
+        for (const auto& item: unused) {
+          outputs.append(item);
+          if (item != *unused.rbegin()) outputs.append(", ");
+        }
+        throw std::logic_error("found unused output remapping(s): " + outputs);
+      }
+    }
+
+
   } // end of datapre namespace
 
 } // end of FlavorTagDiscriminants namespace
diff --git a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/GNN.cxx b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/GNN.cxx
index 7e668e4f5f5249ceec008e38d29d939dd2e0b2e8..c3e805524ae06eb88bd0e0012b80140ce726e6f9 100644
--- a/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/GNN.cxx
+++ b/PhysicsAnalysis/JetTagging/FlavorTagDiscriminants/Root/GNN.cxx
@@ -51,11 +51,13 @@ namespace FlavorTagDiscriminants {
     m_trackSequenceBuilders = tsb;
     m_dataDependencyNames += td;
 
-    auto [decorators, dd] = dataprep::createDecorators(
+    auto [decorators, dd, rd] = dataprep::createDecorators(
       config, options);
     m_decorators = decorators;
     m_dataDependencyNames += dd;
 
+    dataprep::checkForUnusedRemaps(options.remap_scalar, rd);
+
   }
   GNN::GNN(GNN&&) = default;
   GNN::GNN(const GNN&) = default;
diff --git a/PhysicsAnalysis/JetTagging/JetTagMonitoring/src/JetTagMonitorAlgorithm.cxx b/PhysicsAnalysis/JetTagging/JetTagMonitoring/src/JetTagMonitorAlgorithm.cxx
index 417f7142f1c13ecade24d6b3009b0108080ca398..b0047b53c14193168b8869b0e267cd78f5050085 100755
--- a/PhysicsAnalysis/JetTagging/JetTagMonitoring/src/JetTagMonitorAlgorithm.cxx
+++ b/PhysicsAnalysis/JetTagging/JetTagMonitoring/src/JetTagMonitorAlgorithm.cxx
@@ -135,7 +135,9 @@ StatusCode JetTagMonitorAlgorithm::fillHistograms( const EventContext& ctx ) con
   }
   
   PV_n = vertices->size();
-  PV_n_on_mu = PV_n/Run_mu;
+  if (Run_mu > 0) {
+    PV_n_on_mu = PV_n/Run_mu;
+  }
   fill(tool,PV_n,PV_n_on_mu);
   
   if (vertices->size() < 2) {
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleUtils/CMakeLists.txt b/PhysicsAnalysis/TruthParticleID/McParticleUtils/CMakeLists.txt
index eb602c656257014940db955507450fb34bd636c5..bc1cff398f7ebc6860028c8f351287b34e045bba 100644
--- a/PhysicsAnalysis/TruthParticleID/McParticleUtils/CMakeLists.txt
+++ b/PhysicsAnalysis/TruthParticleID/McParticleUtils/CMakeLists.txt
@@ -4,7 +4,6 @@
 atlas_subdir( McParticleUtils )
 
 # External dependencies:
-find_package( Boost )
 find_package( HepPDT )
 find_package( Python COMPONENTS Development )
 
@@ -12,9 +11,9 @@ find_package( Python COMPONENTS Development )
 atlas_add_library( McParticleUtils
                    src/*.cxx
                    PUBLIC_HEADERS McParticleUtils
-                   PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} ${HEPPDT_INCLUDE_DIRS} ${Python_INCLUDE_DIRS}
+                   PRIVATE_INCLUDE_DIRS  ${HEPPDT_INCLUDE_DIRS} ${Python_INCLUDE_DIRS}
                    LINK_LIBRARIES AnalysisUtilsLib AthContainers AthenaBaseComps AtlasHepMCLib EventKernel
-                   PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} ${HEPPDT_LIBRARIES} ${Python_LIBRARIES} AthenaKernel GaudiKernel RootUtils )
+                   PRIVATE_LINK_LIBRARIES  ${HEPPDT_LIBRARIES} ${Python_LIBRARIES} AthenaKernel GaudiKernel RootUtils )
 
 # Install files from the package:
 atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} )
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleUtils/src/DecayParser.cxx b/PhysicsAnalysis/TruthParticleID/McParticleUtils/src/DecayParser.cxx
index 1011722c7228619e8470fbac28d24e62842259ed..1eaab5fba2566450dcea62ae9cec306cbbe12065 100755
--- a/PhysicsAnalysis/TruthParticleID/McParticleUtils/src/DecayParser.cxx
+++ b/PhysicsAnalysis/TruthParticleID/McParticleUtils/src/DecayParser.cxx
@@ -18,17 +18,10 @@
 #include <stdexcept>
 #include <sstream>
 
-// boost includes
-// #include <boost/algorithm/string/split.hpp>
-// #include <boost/algorithm/string/erase.hpp>
-// #include <boost/algorithm/string/regex.hpp>
-// #include <boost/algorithm/string/trim.hpp>
-// #include <boost/algorithm/string/compare.hpp>
-
 // McParticleUtils includes
 #include "McParticleUtils/DecayParser.h"
 
-// namespace balg = boost::algorithm;
+
 
 namespace {
   PyObject *fetch_py_parse_fct();
@@ -36,26 +29,12 @@ namespace {
 		  std::vector<McUtils::Strings>& parsed);
 }
 
-/////////////////////////////////////////////////////////////////// 
-// Static data
-/////////////////////////////////////////////////////////////////// 
-
-// const std::string  DecayParser::m_slotSep =          "+"    ;
-// const boost::regex DecayParser::m_candidateSep     ( "\\|" );
-// const boost::regex DecayParser::m_decayArrow       ( "->"  );
-// const boost::regex DecayParser::m_wildCardParticle ( "\\*" );
-
 /////////////////////////////////////////////////////////////////// 
 /// Public methods: 
 /////////////////////////////////////////////////////////////////// 
 
 /// Constructors
 ////////////////
-// DecayParser::DecayParser() :
-//   m_parseFct (0),
-//   m_parents  ( ),
-//   m_children ( )
-// {}
 
 DecayParser::DecayParser( const std::string& cmd ) :
   m_parseFct (0),
@@ -66,11 +45,6 @@ DecayParser::DecayParser( const std::string& cmd ) :
   parse(cmd);
 }
 
-// DecayParser::DecayParser( const DecayParser& rhs ) :
-//   m_parseFct (0),
-//   m_parents  ( rhs.m_parents   ),
-//   m_children ( rhs.m_children  )
-// {}
 
 /// Destructor
 ///////////////
@@ -120,22 +94,7 @@ void DecayParser::parse( const std::string& inputCmd )
   m_parents.clear();
   m_children.clear();
 
-//   /// Test if there is an arrow to enforce our syntax
-//   if ( inputCmd.find (m_decayArrow.str()) == std::string::npos ) {
-//     // Malformed command
-//     std::string error = "";
-//     error += "Malformed command : <"+inputCmd+"> !!\n";
-//     error += "You should enter an arrow... ex: 23 -> -13 +13 or 22-> 11 + -11";
-//     throw std::invalid_argument(error);
-//   }
-
-//   std::string cmd = inputCmd;
-
-//   /// remove spaces to ease further parsing
-//   rmSpaces(cmd);
 
-//   if ( cmd == m_decayArrow.str() ) {
-//   }
 
   // real parsing takes place now.
   PyObject *res = PyObject_CallFunction (m_parseFct,
@@ -233,24 +192,6 @@ void DecayParser::parse( const std::string& inputCmd )
 /// Protected methods: 
 /////////////////////////////////////////////////////////////////// 
 
-// void 
-// DecayParser::parseCandidates( const std::string& inString,
-// 			      McUtils::Strings& outList ) const
-// {
-//   McUtils::Strings tmpList;
-//   balg::split_regex (tmpList, inString, m_candidateSep);
-//   outList.clear();
-//   outList.reserve (tmpList.size());
-//   const McUtils::Strings::const_iterator tmpListEnd = tmpList.end();
-//   for ( McUtils::Strings::const_iterator i = tmpList.begin();
-// 	i != tmpListEnd;
-// 	++i ) {
-//     if ( !i->empty() ) {
-//       outList.push_back( *i );
-//     }
-//   }
-//   return;
-// }
 
 void 
 DecayParser::printMcUtilsStrings( const std::vector<McUtils::Strings>& list ) const
@@ -276,58 +217,6 @@ DecayParser::printMcUtilsStrings( const std::vector<McUtils::Strings>& list ) co
   return;
 }
 
-// McUtils::Strings 
-// DecayParser::tokenizeString( const std::string& stringList ) const
-// {
-//   std::cerr << "==DecayParser== tokenizeString (" << stringList << ")...\n";
-// //   std::cerr << "  ==> slotSep: [" << m_slotSep << "]\n"
-// // 	    << "  ==> candSep: [" << m_candidateSep << "]\n"
-// // 	    << "  ==> dcyArrw: [" << m_decayArrow << "]\n"
-// // 	    << "  ==> wildCrd: [" << m_wildCardParticle << "]\n";
-
-//   std::string nameList = stringList;
-//   /// Removes all the spaces in the strings : " " -> ""
-//   rmSpaces(nameList);
-
-//   McUtils::Strings out;
-//   balg::split (out, nameList, balg::is_any_of(m_slotSep));
-//   return out;
-// }
-
-// void DecayParser::fillToken( const McUtils::Strings& token,
-// 			     std::vector<McUtils::Strings>& tokens ) const
-// {
-//   std::cerr << "==DecayParser== fillToken (" << token.size() << ")...\n";
-//   for ( McUtils::Strings::const_iterator itr = token.begin();
-// 	  itr != token.end();
-// 	++itr ) {
-//     //std::cout << "Parsing : <" << *itr << ">..." << std::endl;
-//     /// this is the list of matching candidates for each child
-//     McUtils::Strings candidates;
-//     /// parse the child string to unmangle the possible choices for each
-//     /// of the children ( resolves that e-|mu- can be either a muon or
-//     /// an electron )
-//     parseCandidates( *itr, candidates );
-//     if ( !candidates.empty() ) {
-//       tokens.push_back( candidates );
-//     }
-//   }
-//   return;
-// }
-
-// void DecayParser::processBlock( const std::string& tokenString,
-// 				std::vector<McUtils::Strings>& tokens ) const
-// {
-//   std::cerr << "==DecayParser== processBlock ("
-// 	    << tokenString <<", tokens=" << tokens.size() 
-// 	    << ")...\n";
-
-//   // cut the tokenString into slots
-//   McUtils::Strings tokenNames = tokenizeString( tokenString );
-
-//   // cut each slot into a list of candidates
-//   fillToken( tokenNames, tokens );
-// }
 
 /////////////////////////////////////////////////////////////////// 
 // Operators: 
diff --git a/PhysicsAnalysis/TruthParticleID/McParticleUtils/src/McUtils.cxx b/PhysicsAnalysis/TruthParticleID/McParticleUtils/src/McUtils.cxx
index df558cdbecc58c8d32276af30f965b4284514979..8e6ca1e01b2d1111ac2cd2e8ac3db02d2d752705 100644
--- a/PhysicsAnalysis/TruthParticleID/McParticleUtils/src/McUtils.cxx
+++ b/PhysicsAnalysis/TruthParticleID/McParticleUtils/src/McUtils.cxx
@@ -13,9 +13,7 @@
 #include <stdexcept>
 #include <cstring>
 #include <string>
-
-// boost includes
-#include "boost/array.hpp"
+#include <array>
 
 // FrameWork includes
 #include "GaudiKernel/IPartPropSvc.h"
@@ -31,7 +29,7 @@ namespace {
 
 /** 3*charge for basic pdgId codes -- used to parse unknown id's
     Fix from Frank for the charge of the MC Truth Particle */
-static const boost::array<int, 100> qcharge =
+static const std::array<int, 100> qcharge =
   {{+0, -1, +2, -1, +2, -1, +2, -1, +2, +0,  //  0- 9
     +0, -3, +0, -3, +0, -3, +0, -3, +0, +0,  // 10-19
     +0, +0, +0, +3, +0, +0, +0, +0, +0, +0,  // 20-29
@@ -49,7 +47,6 @@ static const boost::array<int, 100> qcharge =
 double McUtils::chargeFromPdgId( const int pdgId, 
 				 const HepPDT::ParticleDataTable* pdt )
 {
-  using std::abs;
   if ( !pdt ) {
     throw std::invalid_argument( "Null pointer to HepPDT::ParticleDataTable !" );
   }
@@ -58,7 +55,7 @@ double McUtils::chargeFromPdgId( const int pdgId,
       the charge of the MC particle
       Problem : how do we handle particles which are not in the
       PDGTABLE.MeV file ? */
-  const HepPDT::ParticleData* ap = pdt->particle( abs( pdgId ) );
+  const HepPDT::ParticleData* ap = pdt->particle( std::abs( pdgId ) );
   if ( ap ) {
     return ( pdgId < 0 ) 
       ? -(ap->charge()) 
@@ -74,15 +71,15 @@ double McUtils::chargeFromPdgId( const int pdgId,
 	i == 0:           meson, j kbar quarks    l = 2*spin+1
 	i != 0:           baryon, i j k quarks    l = 2*spin+1
 	Default is 0; */
-    const int idmod = abs(pdgId) % 10000;
+    const int idmod = std::abs(pdgId) % 10000;
     const int q1 = (idmod/10) % 10;
     const int q2 = (idmod/100) % 10;
     const int q3 = (idmod/1000) % 10;
     double q = 0;
 
-    if (abs(pdgId) >= 1000000000) {
+    if (std::abs(pdgId) >= 1000000000) {
       // Seems to be a nucleus: 100pppnnn0
-      q = (abs(pdgId) / 10000) % 1000;
+      q = (std::abs(pdgId) / 10000) % 1000;
     }
     else if( idmod < 100 ) {
       q = qcharge[idmod]/3.;
diff --git a/Reconstruction/Jet/JetAnalysisTools/JetTileCorrection/CMakeLists.txt b/Reconstruction/Jet/JetAnalysisTools/JetTileCorrection/CMakeLists.txt
index d07fe596f198fc650a3d4f148999d2c2e0f345c6..7a4cfd6031bcb095d81abac0e62f5e9c668c85c9 100644
--- a/Reconstruction/Jet/JetAnalysisTools/JetTileCorrection/CMakeLists.txt
+++ b/Reconstruction/Jet/JetAnalysisTools/JetTileCorrection/CMakeLists.txt
@@ -5,7 +5,6 @@ atlas_subdir( JetTileCorrection )
 
 # External dependencies:
 find_package( ROOT COMPONENTS Core Hist RIO )
-find_package( Boost )
 
 # Libraries in the package:
 atlas_add_root_dictionary( JetTileCorrectionLib JetTileCorrectionDictSource
@@ -21,8 +20,8 @@ endif()
 atlas_add_library( JetTileCorrectionLib
    JetTileCorrection/*.h Root/*.cxx ${JetTileCorrectionDictSource}
    PUBLIC_HEADERS JetTileCorrection
-   INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS}
-   LINK_LIBRARIES ${ROOT_LIBRARIES} ${Boost_LIBRARIES} AsgTools JetCPInterfaces
+   INCLUDE_DIRS ${ROOT_INCLUDE_DIRS}
+   LINK_LIBRARIES ${ROOT_LIBRARIES} AsgTools JetCPInterfaces
    xAODJet
    PRIVATE_LINK_LIBRARIES PATInterfaces PathResolver xAODEventInfo ${extra_libs} )
 
diff --git a/Reconstruction/Jet/JetAnalysisTools/JetTileCorrection/JetTileCorrection/JetTileCorrectionTool.h b/Reconstruction/Jet/JetAnalysisTools/JetTileCorrection/JetTileCorrection/JetTileCorrectionTool.h
index 67422463b813080ebaa5ae140718c0188dc0d825..64dc120fe0610a15aeb3d64db82a7f1bcb4fde29 100644
--- a/Reconstruction/Jet/JetAnalysisTools/JetTileCorrection/JetTileCorrection/JetTileCorrectionTool.h
+++ b/Reconstruction/Jet/JetAnalysisTools/JetTileCorrection/JetTileCorrection/JetTileCorrectionTool.h
@@ -25,7 +25,7 @@
 #include <stdlib.h>
 #include <set>
 #include <vector>
-#include <boost/unordered_map.hpp>
+#include <unordered_map>
 
 //--- config ---
 #define PIXWIDTH  0.1
@@ -154,7 +154,7 @@ namespace CP {
     float m_RJET;
 
     /// Systematics filter map
-    boost::unordered_map<CP::SystematicSet, CP::SystematicSet> m_systFilter;
+    std::unordered_map<CP::SystematicSet, CP::SystematicSet> m_systFilter;
     
     /// Currently applied systematics
     CP::SystematicSet* m_appliedSystematics = 0;
diff --git a/Reconstruction/RecoTools/IsolationTool/CMakeLists.txt b/Reconstruction/RecoTools/IsolationTool/CMakeLists.txt
index 5b559a74db947d400dc48d0ff36aa48fa605051f..eb5d357e979ed7000482560da645fc1c9e1f2777 100644
--- a/Reconstruction/RecoTools/IsolationTool/CMakeLists.txt
+++ b/Reconstruction/RecoTools/IsolationTool/CMakeLists.txt
@@ -14,21 +14,17 @@ if( NOT XAOD_STANDALONE )
   set( extra_lib_private CaloEvent CaloUtilsLib TrkCaloExtension TrkParameters TrackToCaloLib )
 endif()
 
-# External dependencies:
-find_package( Boost )
-
 # Component(s) in the package:
 atlas_add_library( IsolationToolLib
    IsolationTool/*.h Root/*.cxx
    PUBLIC_HEADERS IsolationTool
-   PRIVATE_INCLUDE_DIRS ${Boost_INCLUDE_DIRS}
    LINK_LIBRARIES AsgTools xAODBase xAODCaloEvent xAODCore xAODEgamma
    xAODEventShape xAODMuon xAODPFlow xAODPrimitives xAODTracking
    AsgDataHandlesLib InDetTrackSelectionToolLib
    IsolationCorrectionsLib RecoToolInterfaces
    TrackVertexAssociationToolLib
    ${extra_lib}
-   PRIVATE_LINK_LIBRARIES ${Boost_LIBRARIES} CaloGeoHelpers FourMomUtils PathResolver
+   PRIVATE_LINK_LIBRARIES CaloGeoHelpers FourMomUtils PathResolver
    ${extra_lib_private}
    )
 
diff --git a/Reconstruction/RecoTools/IsolationTool/Root/CaloIsolationTool.cxx b/Reconstruction/RecoTools/IsolationTool/Root/CaloIsolationTool.cxx
index 907638cd1c37e99c67ededda40d0db1ea2025574..e89132f5144090bff133d4ad74d01c8cb036de74 100644
--- a/Reconstruction/RecoTools/IsolationTool/Root/CaloIsolationTool.cxx
+++ b/Reconstruction/RecoTools/IsolationTool/Root/CaloIsolationTool.cxx
@@ -35,7 +35,6 @@
 #include "FourMomUtils/xAODP4Helpers.h"
 #include "xAODPFlow/FEHelpers.h"
 
-#include "boost/format.hpp"
 #include <cmath>
 
 #include "PathResolver/PathResolver.h"
diff --git a/Reconstruction/RecoTools/TrackToCalo/python/TrackToCaloConfig.py b/Reconstruction/RecoTools/TrackToCalo/python/TrackToCaloConfig.py
index 616d3b3fc3272aa9bea30c235a954641af7ef402..09d64aa6f18912b96665dff4636b05a16504ec8b 100644
--- a/Reconstruction/RecoTools/TrackToCalo/python/TrackToCaloConfig.py
+++ b/Reconstruction/RecoTools/TrackToCalo/python/TrackToCaloConfig.py
@@ -47,7 +47,10 @@ def EMParticleCaloExtensionToolCfg(flags,
         from TrkConfig.AtlasExtrapolatorConfig import egammaCaloExtrapolatorCfg
         kwargs["Extrapolator"] = acc.popToolsAndMerge(
             egammaCaloExtrapolatorCfg(flags))
-    return ParticleCaloExtensionToolCfg(flags, **kwargs)
+
+    acc.setPrivateTools(acc.popToolsAndMerge(
+        ParticleCaloExtensionToolCfg(flags, **kwargs)))
+    return acc
 
 
 def HLTPF_ParticleCaloExtensionToolCfg(flags,
diff --git a/Simulation/FastShower/FastCaloSim/CMakeLists.txt b/Simulation/FastShower/FastCaloSim/CMakeLists.txt
index 1fe7b0c58b44ae18db656132bac4ff329b7101e2..7e17c0a46235efd77d7deca84cc59932a8d67fd2 100644
--- a/Simulation/FastShower/FastCaloSim/CMakeLists.txt
+++ b/Simulation/FastShower/FastCaloSim/CMakeLists.txt
@@ -8,7 +8,7 @@ find_package( CLHEP )
 find_package( Eigen )
 find_package( HepPDT )
 find_package( ROOT COMPONENTS Gpad Cint Core Tree MathCore Hist RIO pthread MathMore Minuit Minuit2 Matrix Physics HistPainter Rint Graf Graf3d Html Postscript Gui GX11TTF GX11 )
-find_package( Boost )
+
 
 # Component(s) in the package:
 atlas_add_root_dictionary( FastCaloSimLib
@@ -34,10 +34,10 @@ atlas_add_library( FastCaloSimLib
                    ${FastCaloSimLibDictSource}
                    PUBLIC_HEADERS FastCaloSim
                    INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${HEPPDT_INCLUDE_DIRS} 
-                   PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS}  ${EIGEN_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS}
+                   PRIVATE_INCLUDE_DIRS ${CLHEP_INCLUDE_DIRS}  ${EIGEN_INCLUDE_DIRS}
                    PRIVATE_DEFINITIONS ${CLHEP_DEFINITIONS}
                    LINK_LIBRARIES ${ROOT_LIBRARIES} ${HEPPDT_LIBRARIES} AtlasHepMCLib CaloEvent CaloIdentifier CaloInterfaceLib AthenaBaseComps AthenaKernel FastCaloSimAthenaPool FastSimulationEventLib GeneratorObjects Identifier GaudiKernel LArRecEvent TileEvent TrkEventPrimitives TrkParameters TrkExInterfaces CaloDetDescrLib StoreGateLib
-                   PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES} ${Boost_LIBRARIES} ${EIGEN_LIBRARIES} AthAllocators AthenaPoolUtilities AtlasDetDescr DetDescrCondToolsLib GeoPrimitives EventKernel NavFourMom TruthUtils PathResolver TrkGeometry TrkSurfaces TrkMaterialOnTrack )
+                   PRIVATE_LINK_LIBRARIES ${CLHEP_LIBRARIES}  ${EIGEN_LIBRARIES} AthAllocators AthenaPoolUtilities AtlasDetDescr DetDescrCondToolsLib GeoPrimitives EventKernel NavFourMom TruthUtils PathResolver TrkGeometry TrkSurfaces TrkMaterialOnTrack )
 
 atlas_add_component( FastCaloSim
                      src/components/*.cxx
diff --git a/Simulation/FastShower/FastCaloSim/src/FastShowerCellBuilderTool.cxx b/Simulation/FastShower/FastCaloSim/src/FastShowerCellBuilderTool.cxx
index babf064c9b846770415749fe2d97ca84fb548c40..ca63a586d9ad20deb7b8ce6f55d4fdef78b7eaa3 100644
--- a/Simulation/FastShower/FastCaloSim/src/FastShowerCellBuilderTool.cxx
+++ b/Simulation/FastShower/FastCaloSim/src/FastShowerCellBuilderTool.cxx
@@ -73,7 +73,6 @@
 
 #include "FastCaloSimAthenaPool/FastShowerInfo.h"
 #include "FastCaloSimAthenaPool/FastShowerInfoContainer.h"
-#include "boost/algorithm/string.hpp"
 #include <string>
 #include <iostream>
 #include <sstream>
@@ -443,7 +442,7 @@ StatusCode FastShowerCellBuilderTool::OpenParamSource(std::string insource)
 {
   if(insource.empty()) return StatusCode::SUCCESS;
 
-  if(boost::starts_with (insource, "DB=")) {
+  if(insource.rfind("DB=",0) == 0) {
     const unsigned int maxdbINFOoutput=2;
     if(m_DB_folder.size()>=maxdbINFOoutput && ( !msgLvl(MSG::DEBUG) ) ) {
       if(m_DB_folder.size()==maxdbINFOoutput) ATH_MSG_INFO("... skipping extra INFO output for further DB registration ...");
diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasToolsG4/CMakeLists.txt b/Simulation/ISF/ISF_Fatras/ISF_FatrasToolsG4/CMakeLists.txt
index e1e36ee725c7ae3bb4e2be274c92c802606741cc..8adb4ea6f1e5e2043d3cb3f3fabc51a9ff5516d0 100644
--- a/Simulation/ISF/ISF_Fatras/ISF_FatrasToolsG4/CMakeLists.txt
+++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasToolsG4/CMakeLists.txt
@@ -4,7 +4,6 @@
 atlas_subdir( ISF_FatrasToolsG4 )
 
 # External dependencies:
-find_package( Boost COMPONENTS filesystem thread system )
 find_package( CLHEP )
 find_package( Geant4 )
 find_package( ROOT COMPONENTS Core Tree MathCore Hist RIO pthread )
@@ -15,5 +14,5 @@ atlas_add_library( ISF_FatrasToolsG4
                    src/components/*.cxx
                    OBJECT
                    NO_PUBLIC_HEADERS
-                   PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS}  ${GEANT4_INCLUDE_DIRS}
-                   PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES} ${Boost_LIBRARIES} ${CLHEP_LIBRARIES} AtlasHepMCLib ${GEANT4_LIBRARIES} AthenaBaseComps AthenaKernel BarcodeEventLib CxxUtils GaudiKernel ISF_Event ISF_FatrasInterfaces TrkEventPrimitives StoreGateLib ISF_InterfacesLib ISF_Geant4ToolsLib TrkGeometry )
+                   PRIVATE_INCLUDE_DIRS ${ROOT_INCLUDE_DIRS} ${CLHEP_INCLUDE_DIRS}  ${GEANT4_INCLUDE_DIRS}
+                   PRIVATE_LINK_LIBRARIES ${ROOT_LIBRARIES}  ${CLHEP_LIBRARIES} AtlasHepMCLib ${GEANT4_LIBRARIES} AthenaBaseComps AthenaKernel BarcodeEventLib CxxUtils GaudiKernel ISF_Event ISF_FatrasInterfaces TrkEventPrimitives StoreGateLib ISF_InterfacesLib ISF_Geant4ToolsLib TrkGeometry )
diff --git a/Simulation/ISF/ISF_Fatras/ISF_FatrasToolsG4/src/G4HadIntProcessor.cxx b/Simulation/ISF/ISF_Fatras/ISF_FatrasToolsG4/src/G4HadIntProcessor.cxx
index ebbac49e11a18772b5d60fc09539851930dd56c8..77831c1b5debce97dcfab24820b9c502a7f2f2bd 100644
--- a/Simulation/ISF/ISF_Fatras/ISF_FatrasToolsG4/src/G4HadIntProcessor.cxx
+++ b/Simulation/ISF/ISF_Fatras/ISF_FatrasToolsG4/src/G4HadIntProcessor.cxx
@@ -24,9 +24,6 @@
 
 #include <G4HadronElasticProcess.hh>
 
-// Boost
-#include <boost/math/special_functions/round.hpp>
-
 // Trk inlcude
 #include "TrkGeometry/MaterialProperties.h"
 
diff --git a/Tools/PROCTools/data/q449_AOD_content.ref b/Tools/PROCTools/data/q449_AOD_content.ref
index d250fd98c7d15203e007f6f30d16629e5e6eef55..2335af75eb3bbae386c4e02a3eef1a0258c5de8e 100644
--- a/Tools/PROCTools/data/q449_AOD_content.ref
+++ b/Tools/PROCTools/data/q449_AOD_content.ref
@@ -1525,6 +1525,10 @@ JetETMissNeutralParticleFlowObjectsAuxDyn.SECOND_R
 JetETMissNeutralParticleFlowObjectsAuxDyn.TIMING
 L1TopoErrorFlags_Legacy
 L1TopoErrorFlags_LegacyAux.
+L1TopoRawData
+L1TopoRawDataAux.
+L1_Phase1L1TopoRAWData
+L1_Phase1L1TopoRAWDataAux.
 L1_cTauRoI
 L1_cTauRoIAux.
 L1_eEMRoI
diff --git a/Tools/PROCTools/data/q450_AOD_content.ref b/Tools/PROCTools/data/q450_AOD_content.ref
index b0510bcbbf5536f0176155985baed8b6067b7338..96e96838e4a6f2520b615a9fcc28cb6c29fd3916 100644
--- a/Tools/PROCTools/data/q450_AOD_content.ref
+++ b/Tools/PROCTools/data/q450_AOD_content.ref
@@ -588,6 +588,8 @@ L1TopoErrorFlags_Legacy
 L1TopoErrorFlags_LegacyAux.
 L1TopoRawData
 L1TopoRawDataAux.
+L1_Phase1L1TopoRAWData
+L1_Phase1L1TopoRAWDataAux.
 L1_cTauRoI
 L1_cTauRoIAux.
 L1_eEMRoI
diff --git a/Tools/PROCTools/data/q451_AOD_content.ref b/Tools/PROCTools/data/q451_AOD_content.ref
index c37d290d876abfc81cf0c40633debb823fecc087..09ad1d77a030e74c146c870edaf7783b5e2a89f0 100644
--- a/Tools/PROCTools/data/q451_AOD_content.ref
+++ b/Tools/PROCTools/data/q451_AOD_content.ref
@@ -561,6 +561,8 @@ L1TopoErrorFlags_Legacy
 L1TopoErrorFlags_LegacyAux.
 L1TopoRawData
 L1TopoRawDataAux.
+L1_Phase1L1TopoRAWData
+L1_Phase1L1TopoRAWDataAux.
 L1_cTauRoI
 L1_cTauRoIAux.
 L1_eEMRoI
diff --git a/Tools/TrfTestsART/test/test_trf_data22_hybrid_ca.sh b/Tools/TrfTestsART/test/test_trf_data22_hybrid_ca.sh
new file mode 100755
index 0000000000000000000000000000000000000000..b174f2bde97aa8c2377728688cba087212d2dca8
--- /dev/null
+++ b/Tools/TrfTestsART/test/test_trf_data22_hybrid_ca.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+#
+# art-description: Reco_tf.py data22 RAWtoALL in hybrid MT/MP mode: nprocs=2, threads=4 and ComponentAccumulator
+# art-type: grid
+# art-include: master/Athena
+# art-include: 23.0/Athena
+# art-athena-mt: 8
+
+timeout 64800 Reco_tf.py --CA \
+  --inputBSFile=/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/TCT_Run3/data22_13p6TeV.00431493.physics_Main.daq.RAW._lb0525._SFO-16._0001.data \
+  --outputAODFile=myAOD.pool.root \
+  --outputHISTFile=myHIST.root \
+  --outputDESDM_MCPFile=myDESDM_MCP.pool.root \
+  --outputDRAW_ZMUMUFile=myDRAW_ZMUMU.data \
+  --outputDRAW_EGZFile=myDRAW_EGZ.data \
+  --outputDAOD_IDTIDEFile=myDAOD_IDTIDE.pool.root \
+  --athenaopts="--nprocs=2 --threads=4" \
+  --preExec 'flags.Exec.FPE=10' \
+  --autoConfiguration="everything" \
+  --conditionsTag "all:CONDBR2-BLKPA-2022-07" \
+  --geometryVersion="all:ATLAS-R3S-2021-03-00-00" \
+  --runNumber="431493" \
+  --maxEvents='100'
+
+rc1=$?
+echo "art-result: ${rc1} Reco_tf_data22_hybrid"
+
+# Check for FPEs in the logiles
+test_trf_check_fpe.sh
+fpeStat=$?
+
+echo "art-result: ${fpeStat} FPEs in logfiles"
diff --git a/Tools/WorkflowTestRunner/python/References.py b/Tools/WorkflowTestRunner/python/References.py
index 781bdb90789efa1373426b400b232f510aa31889..f218ac6e0887ef5f7d7570c75a0d9d2a56194ee0 100644
--- a/Tools/WorkflowTestRunner/python/References.py
+++ b/Tools/WorkflowTestRunner/python/References.py
@@ -25,5 +25,5 @@ references_map = {
     "q442": "v15",
     "q443": "v15",
     "q445": "v21",
-    "q449": "v26",
+    "q449": "v27",
 }
diff --git a/Tracking/TrkAlgorithms/TrkTrackCollectionMerger/src/TrackCollectionMerger.cxx b/Tracking/TrkAlgorithms/TrkTrackCollectionMerger/src/TrackCollectionMerger.cxx
index 28a48b44e92e418e161805a6d062e6fbf12d3ff3..d0bd09ed9900ccff940ce0238a3d0ad3a836e388 100644
--- a/Tracking/TrkAlgorithms/TrkTrackCollectionMerger/src/TrackCollectionMerger.cxx
+++ b/Tracking/TrkAlgorithms/TrkTrackCollectionMerger/src/TrackCollectionMerger.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
 */
 
 ///////////////////////////////////////////////////////////////////
@@ -19,9 +19,9 @@
 Trk::TrackCollectionMerger::TrackCollectionMerger(const std::string& name,
                                                   ISvcLocator* pSvcLocator)
   : AthReentrantAlgorithm(name, pSvcLocator)
+  , m_outtracklocation("CombinedInDetTracks")
   , m_doTrackOverlay(false)
 {
-  m_outtracklocation = "CombinedInDetTracks";
   declareProperty("TracksLocation", m_tracklocation);
   declareProperty("OutputTracksLocation", m_outtracklocation);
   declareProperty("DoTrackOverlay", m_doTrackOverlay);
diff --git a/Tracking/TrkConfig/python/AtlasExtrapolatorConfig.py b/Tracking/TrkConfig/python/AtlasExtrapolatorConfig.py
index c7a861210ed147926ecb3db50dc8693c26916afb..76584507eee9a2ba5349e95a215f081c0207b3df 100644
--- a/Tracking/TrkConfig/python/AtlasExtrapolatorConfig.py
+++ b/Tracking/TrkConfig/python/AtlasExtrapolatorConfig.py
@@ -420,7 +420,9 @@ def MCTBExtrapolatorCfg(flags, name='MCTBExtrapolator', **kwargs):
     kwargs.setdefault("EnergyLossUpdater", result.popToolsAndMerge(
         TC.AtlasEnergyLossUpdatorCfg(flags, UseTrkUtils=True)))
 
-    return MuonExtrapolatorCfg(flags, name, **kwargs)
+    result.setPrivateTools(result.popToolsAndMerge(
+        MuonExtrapolatorCfg(flags, name, **kwargs)))
+    return result
 
 
 if __name__ == "__main__":
diff --git a/Tracking/TrkConfig/python/TrkGlobalChi2FitterConfig.py b/Tracking/TrkConfig/python/TrkGlobalChi2FitterConfig.py
index 9ef10e06fcee9238da9d40bbeb56a3603c5d3763..12793094aaa2e259ec8ab97a1528f718eba4f229 100644
--- a/Tracking/TrkConfig/python/TrkGlobalChi2FitterConfig.py
+++ b/Tracking/TrkConfig/python/TrkGlobalChi2FitterConfig.py
@@ -456,7 +456,7 @@ def ITkGlobalChi2FitterBaseCfg(flags,
             TrackingGeometryCondAlgCfg)
         geom_cond = TrackingGeometryCondAlgCfg(flags)
         geom_cond_key = geom_cond.getPrimary().TrackingGeometryWriteKey
-        acc.merge(acc)
+        acc.merge(geom_cond)
         kwargs.setdefault("TrackingGeometryReadKey", geom_cond_key)
 
     from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
diff --git a/Tracking/TrkConfig/python/TrkParticleCreatorConfig.py b/Tracking/TrkConfig/python/TrkParticleCreatorConfig.py
index b98bddfc27c6e5ffcf0ad1e05f147a71e928ab89..5c78cba42618272b3bc32b95992f4ae180e986cc 100644
--- a/Tracking/TrkConfig/python/TrkParticleCreatorConfig.py
+++ b/Tracking/TrkConfig/python/TrkParticleCreatorConfig.py
@@ -35,13 +35,13 @@ def TrackParticleCreatorToolCfg(flags,
         result.addPublicTool(TrackSummaryTool)
         kwargs.setdefault("TrackSummaryTool", TrackSummaryTool)
 
-    if "TRT_ElectronPidTool" not in kwargs:
+    if "TRT_ElectronPidTool" not in kwargs and flags.Detector.EnableTRT:
         from InDetConfig.TRT_ElectronPidToolsConfig import (
             TRT_ElectronPidToolCfg)
         kwargs.setdefault("TRT_ElectronPidTool", result.popToolsAndMerge(
             TRT_ElectronPidToolCfg(flags, name="InDetTRT_ElectronPidTool")))
 
-    if 'PixelToTPIDTool' not in kwargs:
+    if 'PixelToTPIDTool' not in kwargs and flags.Detector.EnablePixel:
         from InDetConfig.PixelToTPIDToolConfig import PixelToTPIDToolCfg
         kwargs.setdefault("PixelToTPIDTool", result.popToolsAndMerge(
             PixelToTPIDToolCfg(flags)))
diff --git a/Tracking/TrkVertexFitter/TrkJetVxFitter/src/JetFitterInitializationHelper.cxx b/Tracking/TrkVertexFitter/TrkJetVxFitter/src/JetFitterInitializationHelper.cxx
index 46ed91cdacd9b6c8130dbbccc0ee4ee72dc498da..bade4a5d02ca3dd493d05e037a27f8347123da5d 100755
--- a/Tracking/TrkVertexFitter/TrkJetVxFitter/src/JetFitterInitializationHelper.cxx
+++ b/Tracking/TrkVertexFitter/TrkJetVxFitter/src/JetFitterInitializationHelper.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 
 /***************************************************************************
@@ -184,7 +184,7 @@ namespace Trk
     
     if (primaryVertex==nullptr) {
       std::cout << "ERROR. No valid primary vertex pointer provided to the JetFitterInitializationHelper." << std::endl;
-      throw;
+      throw std::runtime_error ("No valid primary vertex pointer provided to the JetFitterInitializationHelper.");
     }
     AmgVector(5) startPosition;
     startPosition[Trk::jet_xv]=primaryVertex->position().x();
@@ -285,7 +285,7 @@ namespace Trk
 	  numTrack+=1;
 	} else {
 	  std::cout << "Warning in JetFitterInitializationHelper.Inconsistency found. Pointer to VxVertexOnJetAxis should be different from zero. Skipping track..." << std::endl;
-	  throw;
+	  throw std::runtime_error ("Warning in JetFitterInitializationHelper.Inconsistency found. Pointer to VxVertexOnJetAxis should be different from zero. Skipping track...");
 	}
       }
       
@@ -325,7 +325,7 @@ namespace Trk
 	
       } else if (numRow(numTrack)<sizeOfRecVertex) {
 	std::cout << "Strange: size of RecVertexPosition's position in JetFitterInitializationHelper is bigger than actual numTracks plus 5. CHECK..." << std::endl;
-	throw;
+	throw std::runtime_error ("Strange: size of RecVertexPosition's position in JetFitterInitializationHelper is bigger than actual numTracks plus 5. CHECK...");
       }
     
     }
diff --git a/Tracking/TrkVertexFitter/TrkJetVxFitter/src/JetFitterRoutines.cxx b/Tracking/TrkVertexFitter/TrkJetVxFitter/src/JetFitterRoutines.cxx
index 48d38c6b352a79f15511c088d6a10dbbd4e2ee78..3c63e5fb8e474fa94f550640badca2c768ea9595 100755
--- a/Tracking/TrkVertexFitter/TrkJetVxFitter/src/JetFitterRoutines.cxx
+++ b/Tracking/TrkVertexFitter/TrkJetVxFitter/src/JetFitterRoutines.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 
 /***************************************************************************
@@ -271,7 +271,7 @@ namespace Trk
           }
         } else {
           ATH_MSG_WARNING( "Warning in JetFitterInitializationHelper.Inconsistency found. Pointer to VxVertexOnJetAxis should be different from zero. Skipping track..." );
-          throw;
+          throw ("Warning in JetFitterInitializationHelper.Inconsistency found. Pointer to VxVertexOnJetAxis should be different from zero. Skipping track...");
         }
       }
 
diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/README.md b/Trigger/TrigAlgorithms/TrigFastTrackFinder/README.md
index 3e3e138b3c574ea848e95e3ec0f5b7bbd7df9f54..74315bb643a526b05085395abcb0ed8c44cb6d90 100644
--- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/README.md
+++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/README.md
@@ -3,7 +3,7 @@ This Module contains the TrigFastTrackFinder Algorithm that performs Fast Track
 Configured instances of TrigFastTrackFinder are provided to signatures by the [TrigInDetConfig](../../TrigTools/TrigInDetConfig/python) package. The README in that packackage gives details of how to include TrigFastTrackFinder and other Inner Detector algorithms in signature TriggerMenuMT sequences.
  
 ## Files in this Module
-* Configuration: [TrigFastTrackFinder_Config.py](python/TrigFastTrackFinder_Config.py)    
+* Configuration: [TrigFastTrackFinderConfig.py](python/TrigFastTrackFinderConfig.py)    
 * Algorithm implementation: [TrigFastTrackFinder.cxx](src/TrigFastTrackFinder.cxx), [TrigFastTrackFinder.h](src/TrigFastTrackFinder.h)
 * Module Entries: [TrigFastTrackFinder_entries](src/components/TrigFastTrackFinder_entries.cxx)
 * LUT Data file: [trigseed_ml_pixel_barrel_kde.lut](share/trigseed_ml_pixel_barrel_kde.lut) 
diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/docs/TrigFastTrackFinderOverview.md b/Trigger/TrigAlgorithms/TrigFastTrackFinder/docs/TrigFastTrackFinderOverview.md
index 78ea16b6c2dbc217dbdc4b85eab81cdec11ba87d..c192871270a2f51e2e3e01f2a99c0adc1352cedc 100644
--- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/docs/TrigFastTrackFinderOverview.md
+++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/docs/TrigFastTrackFinderOverview.md
@@ -3,7 +3,7 @@ TrigFastTrackFinder performs fast track finding for the High Level Trigger using
 
 First track seeds are created from triplets of SpacePoints. This is followed by Track Following that extends seeds to the other silicon layers, and Track Fitting.
 
-According to configuration, the seeds considered can be any of pixel-only (PPP), SCT only (SSS), or mixed (if TripletDoPPS is set True in [ConfigSettings.py](../../../../TrigTool/TrigInDetConfig/python/ConfigSettings.py). In principle PSS mixed seeds can also be included (if TripletDoPSS=True), but this is disabled in [TrigFastTrackFinderConfig.py](../python/TrigFastTrackFinder_Config.py).
+According to configuration, the seeds considered can be any of pixel-only (PPP), SCT only (SSS), or mixed (if TripletDoPPS is set True in [ConfigSettings.py](../../../../TrigTool/TrigInDetConfig/python/ConfigSettings.py). In principle PSS mixed seeds can also be included (if TripletDoPSS=True), but this is disabled in [TrigFastTrackFinderConfig.py](../python/TrigFastTrackFinderConfig.py).
 
 ## Special Reconstruction Modes for Unconventional Track Triggers:
 * **LRT_mode=True**: Configuration used for Large Radius Tracking to reconstruct track starting at large radius i.e. from ~10mm to ~300mm. It configures the seedmaker to only use SSS seeds. If an input track collection is provided, it uses this to remove the already used clusters from the pool of clusters used by track seeding. This supports a workflow where standard tracking is followed by LRT tracking running on the unused clusters. 
@@ -12,7 +12,7 @@ According to configuration, the seeds considered can be any of pixel-only (PPP),
 * **doDisappearingTrk=True**: Configuration to reconstruct Disappearing Tracks i.e. short tracks starting at the IP but ending within the volume of the Si tracker. The trackMaker tool is configured to return information for failed tracks.
 
 ## Special Reconstruction Mode for Beamspot and Minbias
-* **doZFinder=True**: Used for beamspot and minbias trigger chains. The [IDScanZFinder](../../../../Trigger/TrigTools/IDScanZFinder) uses pixel spacepoint to find the z coordinates of primary vertices.  Only the N highest occupancy vertices are returned by the IDScanZFinder, where N is determined by the NumberOfPeaks property of the IDScanZFinder that is set in [TrigFastTrackFinder_Config.py](../python/TrigFastTrackFinder_Config.py). 
+* **doZFinder=True**: Used for beamspot and minbias trigger chains. The [IDScanZFinder](../../../../Trigger/TrigTools/IDScanZFinder) uses pixel spacepoint to find the z coordinates of primary vertices.  Only the N highest occupancy vertices are returned by the IDScanZFinder, where N is determined by the NumberOfPeaks property of the IDScanZFinder that is set in [TrigFastTrackFinderConfig.py](../python/TrigFastTrackFinderConfig.py). 
 * **doFastZVertexSeeding=True**: In the BeamSpot trigger chains, the z co-ordinate of the primary vertices (created for doZFinder=True) are used as input to seed making. Only seeds compatible with one of the primary vertices are kept, speeding up track reconstruction. 
 * **doZFinderOnly=True**: Used in conjunction with doZFinder=True. The IDScanZfinder is executed and primary vertex information stored in a TrigVertexCollection. The subsequent tracking steps (seeding, following, fitting) are skipped. **Note: the TrigVertexCollection is not currently output**. 
 
diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/ITkFastTrackFinderStandaloneConfig.py b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/ITkFastTrackFinderStandaloneConfig.py
index 7426c51b8abc7bdfe4f6a7eb7c5a88d6bd729a06..c3876e3cc7478d1818594ac3a26918350f183108 100644
--- a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/ITkFastTrackFinderStandaloneConfig.py
+++ b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/ITkFastTrackFinderStandaloneConfig.py
@@ -36,7 +36,7 @@ def ITkFastTrackFinderStandaloneCfg(flags):
                                                                     UseSctSpacePoints = False,
                                                                     layerNumberTool   = acc.getPublicTool("TrigL2LayerNumberTool_FTF") ) )
 
-    from TrigFastTrackFinder.TrigFastTrackFinder_Config import TrigFastTrackFinderMonitoringArg
+    from TrigFastTrackFinder.TrigFastTrackFinderConfig import TrigFastTrackFinderMonitoringArg
     from TriggerJobOpts.TriggerHistSvcConfig import TriggerHistSvcConfig
     acc.merge(TriggerHistSvcConfig(newflags))
     monTool = TrigFastTrackFinderMonitoringArg(flags, name = "FullScan", doResMon=False)
diff --git a/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinder_Config.py b/Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinderConfig.py
similarity index 100%
rename from Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinder_Config.py
rename to Trigger/TrigAlgorithms/TrigFastTrackFinder/python/TrigFastTrackFinderConfig.py
diff --git a/Trigger/TrigAlgorithms/TrigGenericAlgs/python/TrigGenericAlgsConfig.py b/Trigger/TrigAlgorithms/TrigGenericAlgs/python/TrigGenericAlgsConfig.py
index 306bdf91d196f14380b9e54c7a411ae0592b85ef..0cfea17005061f6320e553222fe0ef4eb5ac9bf6 100644
--- a/Trigger/TrigAlgorithms/TrigGenericAlgs/python/TrigGenericAlgsConfig.py
+++ b/Trigger/TrigAlgorithms/TrigGenericAlgs/python/TrigGenericAlgsConfig.py
@@ -21,8 +21,16 @@ def EndOfEventROIConfirmerAlgCfg(name):
 def EndOfEventFilterAlgCfg(name, chainName):
     return CompFactory.EndOfEventFilterAlg(name, ChainName=chainName)
 
-def TrigEventInfoRecorderAlgCfg(name):
-    return CompFactory.TrigEventInfoRecorderAlg(name)
+def TrigEventInfoRecorderAlgCfg(flags,name,decorateTLA,trigEventInfoKey,primaryVertexInputName, RhoKey_PFlow = 'HLT_Kt4EMPFlowEventShape', RhoKey_EMTopo = 'HLT_Kt4EMTopoEventShape'):
+    acc = ComponentAccumulator()
+    alg = CompFactory.TrigEventInfoRecorderAlg(name)
+    alg.decorateTLA = decorateTLA
+    alg.trigEventInfoKey = trigEventInfoKey
+    alg.primaryVertexInputName = primaryVertexInputName
+    alg.RhoKey_PFlow = RhoKey_PFlow
+    alg.RhoKey_EMTopo = RhoKey_EMTopo
+    acc.addEventAlgo(alg, primary=True)
+    return acc
 
 def L1CorrelationMonitoringCfg(flags, name):
     from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool
diff --git a/Trigger/TrigSteer/HLTSeeding/python/HLTSeedingConfig.py b/Trigger/TrigSteer/HLTSeeding/python/HLTSeedingConfig.py
index 3cc34ce9fda8afec107c645c735f3febaa255e58..cc044147d98e25ac60289001c48e0249325202bf 100644
--- a/Trigger/TrigSteer/HLTSeeding/python/HLTSeedingConfig.py
+++ b/Trigger/TrigSteer/HLTSeeding/python/HLTSeedingConfig.py
@@ -101,7 +101,7 @@ def createLegacyCaloRoIUnpackers(flags):
     emUnpacker = CompFactory.EMRoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("EM"),
                                                  DecisionsProbe = mapThresholdToL1DecisionCollection("PROBEEM"),
                                                  OutputTrigRoIs = recordable(mapThresholdToL1RoICollection("EM")),
-                                                 MonTool = RoIsUnpackingMonitoring( flags, prefix="EM", maxCount=30 ))
+                                                 MonTool = RoIsUnpackingMonitoring( flags, prefix="EM", maxCount=30, etaOffset=0.05, phiOffset=math.pi/64., maxEta=2.5 ))
 
     metUnpacker = CompFactory.METRoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("XE"))
 
@@ -110,7 +110,7 @@ def createLegacyCaloRoIUnpackers(flags):
                                                    DecisionsProbe = mapThresholdToL1DecisionCollection("PROBETAU"),
                                                    OutputTrigRoIs = recordable("HLT_TAURoI"))
 
-    tauUnpacker.MonTool = RoIsUnpackingMonitoring( flags, prefix="TAU", maxCount=30 )
+    tauUnpacker.MonTool = RoIsUnpackingMonitoring( flags, prefix="TAU", maxCount=30, etaOffset=0.05, phiOffset=math.pi/64., maxEta=2.5  )
 
     jUnpacker = CompFactory.JRoIsUnpackingTool(Decisions = mapThresholdToL1DecisionCollection("J"),
                                                OutputTrigRoIs = recordable(mapThresholdToL1RoICollection("J")) )
@@ -131,14 +131,14 @@ def createCaloRoIUnpackers(flags):
             OutputTrigRoIs = recordable(mapThresholdToL1RoICollection("eEM")),
             RoIHalfWidthEta = 0.2,
             RoIHalfWidthPhi = 0.2,
-            MonTool = RoIsUnpackingMonitoring(flags, prefix="eEM", maxCount=maxRoICount_eFex))
+            MonTool = RoIsUnpackingMonitoring(flags, prefix="eEM", maxCount=maxRoICount_eFex, maxEta=2.5))
         eFexTauUnpacker = CompFactory.eFexTauRoIsUnpackingTool(
             Decisions = mapThresholdToL1DecisionCollection("eTAU"),
             DecisionsProbe = mapThresholdToL1DecisionCollection("PROBEeTAU"),
             OutputTrigRoIs = recordable(mapThresholdToL1RoICollection("eTAU")),
             RoIHalfWidthEta = 0.4,
             RoIHalfWidthPhi = math.pi/8,
-            MonTool = RoIsUnpackingMonitoring(flags, prefix="eTAU", maxCount=maxRoICount_eFex))
+            MonTool = RoIsUnpackingMonitoring(flags, prefix="eTAU", maxCount=maxRoICount_eFex, maxEta=2.5))
         tools += [eFexEMUnpacker, eFexTauUnpacker]
 
     if flags.Trigger.L1.dojFex:
diff --git a/Trigger/TrigSteer/HLTSeeding/python/HLTSeedingMonitoring.py b/Trigger/TrigSteer/HLTSeeding/python/HLTSeedingMonitoring.py
index bb993f78cd46dd99192d2eeca24ef0fc956a0b4b..89e2ec36e5637643724e6e253779a51c9942c8f3 100644
--- a/Trigger/TrigSteer/HLTSeeding/python/HLTSeedingMonitoring.py
+++ b/Trigger/TrigSteer/HLTSeeding/python/HLTSeedingMonitoring.py
@@ -15,18 +15,19 @@ def CTPUnpackingMonitoring(flags, maxItems, maxChains):
     return tool
 
 
-def RoIsUnpackingMonitoring(flags, prefix, maxCount, maxEta=3.):
+def RoIsUnpackingMonitoring(flags, prefix, maxCount, maxEta=3., phiOffset=0.,etaOffset=0.):
     tool = GenericMonitoringTool(flags, 'MonTool')
     tool.HistPath = f'HLTFramework/HLTSeeding/RoIs_{prefix}'
     tool.defineHistogram('count', path='EXPERT', type='TH1F', title=f'Number of {prefix} RoIs;N RoIs;N Events',
                          xbins=maxCount, xmin=0, xmax=maxCount),
     tool.defineHistogram('eta', path='EXPERT', type='TH1F', title=f'{prefix} RoIs eta;eta;N RoIs',
-                         xbins=int(20*maxEta), xmin=-maxEta, xmax=maxEta),
+                         xbins=int(20*maxEta), xmin=-(maxEta-etaOffset), xmax=(maxEta+etaOffset)),
     tool.defineHistogram('phi', path='EXPERT', type='TH1F', title=f'{prefix} RoIs phi;phi;N RoIs',
-                         xbins=64, xmin=-(math.pi+0.1), xmax=math.pi+0.1),
+                         xbins=64, xmin=-(math.pi-phiOffset), xmax=(math.pi+phiOffset)),
     tool.defineHistogram('eta,phi', path='EXPERT', type='TH2F', title=f'{prefix} RoIs eta-phi;eta;phi;N RoIs',
-                         xbins=int(10*maxEta), xmin=-maxEta, xmax=maxEta,
-                         ybins=32, ymin=-(math.pi+0.1), ymax=math.pi+0.1)
+                         xbins=int(20*maxEta), xmin=-(maxEta-etaOffset), xmax=(maxEta+etaOffset),
+                         ybins=64, ymin=-(math.pi-phiOffset), ymax=(math.pi+phiOffset))
+    
     return tool
 
 
diff --git a/Trigger/TrigSteer/HLTSeeding/src/PrescalingTool.cxx b/Trigger/TrigSteer/HLTSeeding/src/PrescalingTool.cxx
index 809ec25173fd3d7e2297720301b23bed153c3f70..f96f46744fefaa3c825483b96a4132c26a0dfadb 100644
--- a/Trigger/TrigSteer/HLTSeeding/src/PrescalingTool.cxx
+++ b/Trigger/TrigSteer/HLTSeeding/src/PrescalingTool.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 #include "PrescalingTool.h"
 
@@ -43,6 +43,11 @@ StatusCode PrescalingTool::initialize() {
 
 
 StatusCode PrescalingTool::start() {
+
+   // Cleanup in case there was a stop/start transition
+   m_CPSGroups.clear();
+   m_nonCPSChains.clear();
+
    SG::ReadHandle<TrigConf::HLTMenu>  hltMenuHandle = SG::makeHandle( m_HLTMenuKey );
    ATH_CHECK( hltMenuHandle.isValid() );
 
diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/eEmSelect.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/eEmSelect.cxx
index 67020b6fd2906f52a4e0243a14d1cd6d120dbb88..702b9d76f4b332748b7066e23a48cd55ee025239 100644
--- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/eEmSelect.cxx
+++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/eEmSelect.cxx
@@ -22,6 +22,8 @@ TCS::eEmSelect::eEmSelect(const std::string & name) : SortingAlg(name) {
    defineParameter( "REtaMin", 0 );
    defineParameter( "RHadMin", 0 );
    defineParameter( "WsTotMin", 0 );
+   defineParameter( "MinEta", 0 );
+   defineParameter( "MaxEta", 196 );
 }
 
 
diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/eEmSort.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/eEmSort.cxx
index 618957a63d812434b916f440bd042500f9501392..e07cac0f5b8c09b9581c63dd24b23a54da0b22da 100644
--- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/eEmSort.cxx
+++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/eEmSort.cxx
@@ -26,6 +26,8 @@ TCS::eEmSort::eEmSort(const std::string & name) : SortingAlg(name) {
    defineParameter( "REtaMin", 0 );
    defineParameter( "RHadMin", 0 );
    defineParameter( "WsTotMin", 0 );
+   defineParameter( "MinEta", 0 );
+   defineParameter( "MaxEta", 196 );
 }
 
 
diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/eTauSelect.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/eTauSelect.cxx
index 527d404af2ccb23efe6f34272a9720b6ea7e4be2..7544b1faf828c3ce6065bfbbb5bccc68326d509a 100644
--- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/eTauSelect.cxx
+++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/eTauSelect.cxx
@@ -21,6 +21,8 @@ TCS::eTauSelect::eTauSelect(const std::string & name) : SortingAlg(name) {
    defineParameter( "MinET", 0 );
    defineParameter( "RCoreMin", 0 );
    defineParameter( "RHadMin", 0 );
+   defineParameter( "MinEta", 0 );
+   defineParameter( "MaxEta", 196 );
 }
 
 
diff --git a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/eTauSort.cxx b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/eTauSort.cxx
index cd37acd860659c79c0870b0e51e0fb7d0dde608f..6c53782626f10ce45d319bd85911e18a4af9ccfd 100644
--- a/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/eTauSort.cxx
+++ b/Trigger/TrigT1/L1Topo/L1TopoAlgorithms/Root/eTauSort.cxx
@@ -26,6 +26,8 @@ TCS::eTauSort::eTauSort(const std::string & name) : SortingAlg(name) {
    defineParameter( "OutputWidth", 6 );
    defineParameter( "RCoreMin", 0 );
    defineParameter( "RHadMin", 0 );
+   defineParameter( "MinEta", 0 );
+   defineParameter( "MaxEta", 196 );
 }
 
 
diff --git a/Trigger/TrigT1/L1Topo/L1TopoSimulation/python/L1TopoSimulationConfig.py b/Trigger/TrigT1/L1Topo/L1TopoSimulation/python/L1TopoSimulationConfig.py
index 9c4da7bca8e66e63e543a92839e35a8f7a116f9b..bcd760fdb749346e55689423851bd1f1130e057c 100644
--- a/Trigger/TrigT1/L1Topo/L1TopoSimulation/python/L1TopoSimulationConfig.py
+++ b/Trigger/TrigT1/L1Topo/L1TopoSimulation/python/L1TopoSimulationConfig.py
@@ -5,6 +5,7 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator, appen
 from AthenaConfiguration.ComponentFactory import CompFactory
 from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool
 
+
 class L1TopoSimulation ( LVL1__L1TopoSimulation ):
 
     def __init__( self, name = "L1TopoSimulation" ):
@@ -60,7 +61,7 @@ def L1LegacyTopoSimulationCfg(flags):
     acc.addEventAlgo(topoSimAlg)
     return acc
 
-def L1TopoSimulationCfg(flags):
+def L1TopoSimulationCfg(flags, doMonitoring=True):
 
     acc = ComponentAccumulator()
 
@@ -79,6 +80,9 @@ def L1TopoSimulationCfg(flags):
     emtauProvider = CompFactory.LVL1.eFexInputProvider("eFexInputProvider")
     jetProvider = CompFactory.LVL1.jFexInputProvider("jFexInputProvider")
     energyProvider = CompFactory.LVL1.gFexInputProvider("gFexInputProvider")
+
+    controlHistSvc = CompFactory.LVL1.ControlHistSvc("ControlHistSvc")
+    
     if not flags.Trigger.enableL1CaloPhase1:
         emtauProvider.eFexEMRoIKey = ""
         emtauProvider.eFexTauRoIKey = ""
@@ -101,16 +105,18 @@ def L1TopoSimulationCfg(flags):
                                                     EMTAUInputProvider = emtauProvider,
                                                     JetInputProvider = jetProvider,
                                                     EnergyInputProvider = energyProvider,
+                                                    ControlHistSvc = controlHistSvc if doMonitoring else "",
                                                     IsLegacyTopo = False,
                                                     EnableInputDump = flags.Trigger.enableL1TopoDump,
                                                     UseBitwise = flags.Trigger.enableL1TopoBWSimulation
                                                     )
 
     acc.addEventAlgo(topoSimAlg)
-    
-    from L1TopoOnlineMonitoring import L1TopoOnlineMonitoringConfig as TopoMonConfig
-    acc.addEventAlgo(TopoMonConfig.getL1TopoPhase1OnlineMonitor(flags,'L1/L1TopoSimDecisions'))
-    
+
+    if doMonitoring:
+        from L1TopoOnlineMonitoring import L1TopoOnlineMonitoringConfig as TopoMonConfig
+        acc.addEventAlgo(TopoMonConfig.getL1TopoPhase1OnlineMonitor(flags,'L1/L1TopoSimDecisions'))
+
     return acc
 
 def L1TopoSimulationOldStyleCfg(flags, isLegacy):
diff --git a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPIL1Topo_p1.h b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPIL1Topo_p1.h
index a9db49112bf323e1cbde7505f301597a3831afe6..9718e409328e664b24d81514bf46162a429606df 100644
--- a/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPIL1Topo_p1.h
+++ b/Trigger/TrigT1/TrigT1EventTPCnv/TrigT1EventTPCnv/MuCTPIL1Topo_p1.h
@@ -10,9 +10,6 @@
 
 #include "TrigT1EventTPCnv/MuCTPIL1TopoCandidate_p1.h"
 
-// Forward declaration of the converter:
-class MuCTPIL1TopoCnv_p1;
-
 /**
  *   @short Persistent representation of MuCTPIL1Topo
  *
diff --git a/Trigger/TrigT1/TrigT1ResultByteStream/python/TrigT1ResultByteStreamConfig.py b/Trigger/TrigT1/TrigT1ResultByteStream/python/TrigT1ResultByteStreamConfig.py
index 89bf89f0a14b790a40777c329034c3f38d1434fe..791ce5087cdd2a01c3a2cb3df14db1b11a3745c0 100644
--- a/Trigger/TrigT1/TrigT1ResultByteStream/python/TrigT1ResultByteStreamConfig.py
+++ b/Trigger/TrigT1/TrigT1ResultByteStream/python/TrigT1ResultByteStreamConfig.py
@@ -288,7 +288,7 @@ def L1TriggerByteStreamDecoderCfg(flags, returnEDM=False):
   ########################################
   # Run-3 L1Topo decoding
   ########################################
-  if flags.Trigger.L1.doTopo and flags.Trigger.enableL1CaloPhase1 and flags.Trigger.L1.doTopoPhase1 and flags.Trigger.doHLT:
+  if flags.Trigger.L1.doTopo and flags.Trigger.enableL1CaloPhase1 and flags.Trigger.L1.doTopoPhase1:
     topoByteStreamTool = L1TopoPhase1ByteStreamToolCfg("L1TopoBSDecoderTool",
                                                        flags=flags,
                                                        writeBS=False)
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/InDetTrigFastTracking.py b/Trigger/TrigTools/TrigInDetConfig/python/InDetTrigFastTracking.py
index 6acba7c65222ac37d541b0d87116e035f595298b..f72d9968034e6cae4c5c42a028c5e855b027c00e 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/InDetTrigFastTracking.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/InDetTrigFastTracking.py
@@ -162,7 +162,7 @@ def makeInDetTrigFastTracking( flags, config = None, rois = 'EMViewRoIs', doFTF
 
       else:
 
-        from TrigFastTrackFinder.TrigFastTrackFinder_Config import TrigFastTrackFinderCfg
+        from TrigFastTrackFinder.TrigFastTrackFinderConfig import TrigFastTrackFinderCfg
         #TODO: eventually adapt IDTrigConfig also in FTF configuration (pass as additional param)
         theFTF = algorithmCAToGlobalWrapper(TrigFastTrackFinderCfg, flags, "TrigFastTrackFinder_" + signature, 
                                             flags.InDet.Tracking.ActiveConfig.input_name, rois, inputTracksName = LRTInputCollection)
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
index 166489f4d1c62c7da9f6fa38c4a3290a9b6c6516..66db07ba682652f823438eebfcb58935df9ca707 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py
@@ -228,7 +228,7 @@ def trigInDetFastTrackingCfg( inflags, roisKey="EMRoIs", signatureName='', in_vi
   #i.e. remove RoadTool arg from TrigSiTrackMaker
   acc.addCondAlgo(CompFactory.InDet.SiDetElementsRoadCondAlg_xk(name = "SiDetElementsRoadCondAlg_xk"))
 
-  from TrigFastTrackFinder.TrigFastTrackFinder_Config import TrigFastTrackFinderCfg
+  from TrigFastTrackFinder.TrigFastTrackFinderConfig import TrigFastTrackFinderCfg
   acc.merge(TrigFastTrackFinderCfg(flags, "TrigFastTrackFinder_"+signatureName, signatureName, roisKey))
   
   acc.merge(trackFTFConverterCfg(flags, signature))
diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfigITk.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfigITk.py
index 9a55564cc7d401b8da5057d185f542f801d53e32..543491baa31a1792793b187ad7aec6ecc3f69886 100644
--- a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfigITk.py
+++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfigITk.py
@@ -41,7 +41,7 @@ def ITkftfCfg(flags, roisKey, signature, signatureName):
                                                                     UseSctSpacePoints = False,
                                                                     layerNumberTool   = acc.getPublicTool("TrigL2LayerNumberToolITk_FTF") ) )
 
-    from TrigFastTrackFinder.TrigFastTrackFinder_Config import TrigFastTrackFinderMonitoringArg
+    from TrigFastTrackFinder.TrigFastTrackFinderConfig import TrigFastTrackFinderMonitoringArg
     monTool = TrigFastTrackFinderMonitoringArg(flags, name = "trigfasttrackfinder_" + signature, doResMon=False)
 
     ftf = CompFactory.TrigFastTrackFinder( name = "TrigFastTrackFinder_" + signature,
diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
index 5bffedaad9f5b8b7ef2a895cc15e6a625a82c95b..697c4b6da7d93ce54b52110220f1d376fcdf3980 100644
--- a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
+++ b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
@@ -433,6 +433,17 @@ HLT_2g15_loose_25dphiAA_invmAA80_L12EM7:
     1: 16
     2: 6
     3: 5
+HLT_2g15_loose_25dphiAA_invmAA80_L12eEM9:
+  eventCount: 0
+  stepCounts:
+    0: 11
+    1: 3
+    2: 3
+  stepFeatures:
+    0: 36
+    1: 12
+    2: 6
+    3: 5
 HLT_2g15_loose_25dphiAA_invmAA80_L1DPHI-M70-2eEM15M:
   eventCount: 0
 HLT_2g15_tight_25dphiAA_L12EM7:
@@ -446,6 +457,17 @@ HLT_2g15_tight_25dphiAA_L12EM7:
     1: 16
     2: 6
     3: 3
+HLT_2g15_tight_25dphiAA_L12eEM9:
+  eventCount: 0
+  stepCounts:
+    0: 11
+    1: 3
+    2: 3
+  stepFeatures:
+    0: 36
+    1: 12
+    2: 6
+    3: 3
 HLT_2g15_tight_25dphiAA_L1DPHI-M70-2eEM15M:
   eventCount: 0
 HLT_2g15_tight_25dphiAA_invmAA80_L12EM7:
@@ -459,6 +481,17 @@ HLT_2g15_tight_25dphiAA_invmAA80_L12EM7:
     1: 16
     2: 6
     3: 3
+HLT_2g15_tight_25dphiAA_invmAA80_L12eEM9:
+  eventCount: 0
+  stepCounts:
+    0: 11
+    1: 3
+    2: 3
+  stepFeatures:
+    0: 36
+    1: 12
+    2: 6
+    3: 3
 HLT_2g15_tight_25dphiAA_invmAA80_L1DPHI-M70-2eEM15M:
   eventCount: 0
 HLT_2g15_tight_L1DPHI-M70-2eEM15M:
@@ -487,17 +520,6 @@ HLT_2g20_loose_L12eEM18L:
     1: 5
     2: 3
     3: 2
-HLT_2g20_tight_L12EM15VHI:
-  eventCount: 0
-  stepCounts:
-    0: 4
-    1: 2
-    2: 1
-  stepFeatures:
-    0: 8
-    1: 6
-    2: 3
-    3: 1
 HLT_2g20_tight_icaloloose_L12EM15VHI:
   eventCount: 0
   stepCounts:
@@ -591,6 +613,17 @@ HLT_2g9_loose_25dphiAA_invmAA80_L12EM7:
     1: 33
     2: 28
     3: 9
+HLT_2g9_loose_25dphiAA_invmAA80_L12eEM9:
+  eventCount: 0
+  stepCounts:
+    0: 15
+    1: 10
+    2: 9
+  stepFeatures:
+    0: 51
+    1: 31
+    2: 31
+    3: 9
 HLT_2g9_loose_25dphiAA_invmAA80_L1DPHI-M70-2eEM9:
   eventCount: 0
   stepCounts:
@@ -2569,6 +2602,18 @@ HLT_e100_etcut_L1EM22VHI:
     1: 3
     2: 27
     3: 2
+HLT_e100_etcut_L1eEM26M:
+  eventCount: 2
+  stepCounts:
+    0: 2
+    1: 2
+    2: 2
+    3: 2
+  stepFeatures:
+    0: 3
+    1: 3
+    2: 27
+    3: 2
 HLT_e100_lhvloose_L1EM22VHI:
   eventCount: 1
   stepCounts:
@@ -2617,6 +2662,18 @@ HLT_e10_etcut_L1EM7:
     1: 56
     2: 243
     3: 52
+HLT_e10_etcut_L1eEM9:
+  eventCount: 20
+  stepCounts:
+    0: 20
+    1: 20
+    2: 20
+    3: 20
+  stepFeatures:
+    0: 56
+    1: 56
+    2: 257
+    3: 61
 HLT_e10_lhmedium_ivarloose_j70_j50a_j0_DJMASS900j50_L1MJJ-500-NFF:
   eventCount: 0
   stepCounts:
@@ -2748,6 +2805,8 @@ HLT_e12_lhtight_mu11_dRAB15_invmAB10_L1LFV-eEM10L-MU8VF:
   eventCount: 0
 HLT_e140_dnnloose_L1EM22VHI:
   eventCount: 0
+HLT_e140_dnnloose_L1eEM26M:
+  eventCount: 0
 HLT_e140_lhloose_L1EM22VHI:
   eventCount: 0
 HLT_e140_lhloose_L1eEM26M:
@@ -3016,6 +3075,18 @@ HLT_e15_etcut_L1EM7:
     1: 44
     2: 182
     3: 33
+HLT_e15_etcut_L1eEM9:
+  eventCount: 19
+  stepCounts:
+    0: 19
+    1: 19
+    2: 19
+    3: 19
+  stepFeatures:
+    0: 50
+    1: 50
+    2: 220
+    3: 37
 HLT_e17_lhloose_mu14_L1EM15VH_MU8F:
   eventCount: 0
   stepFeatures:
@@ -3062,24 +3133,6 @@ HLT_e17_lhmedium_tau25_mediumRNN_tracktwoMVA_xe50_cell_03dRAB_L1EM15VHI_2TAU12IM
     5: 3
     6: 3
     7: 3
-HLT_e17_lhvloose_L1EM15VHI:
-  eventCount: 9
-  stepCounts:
-    0: 10
-    1: 10
-    2: 9
-    3: 9
-    4: 9
-    5: 9
-    6: 9
-  stepFeatures:
-    0: 11
-    1: 11
-    2: 13
-    3: 9
-    4: 9
-    5: 9
-    6: 9
 HLT_e20_etcut_L1EM15VHI:
   eventCount: 12
   stepCounts:
@@ -3092,6 +3145,18 @@ HLT_e20_etcut_L1EM15VHI:
     1: 17
     2: 54
     3: 13
+HLT_e20_etcut_L1eEM18M:
+  eventCount: 12
+  stepCounts:
+    0: 13
+    1: 13
+    2: 12
+    3: 12
+  stepFeatures:
+    0: 16
+    1: 16
+    2: 47
+    3: 13
 HLT_e20_idperf_loose_lrtloose_L1EM15VH:
   eventCount: 11
   stepCounts:
@@ -3120,60 +3185,6 @@ HLT_e20_idperf_loose_lrtloose_L1eEM18L:
     2: 11
     3: 11
     4: 11
-HLT_e20_lhloose_L1EM15VH:
-  eventCount: 9
-  stepCounts:
-    0: 11
-    1: 11
-    2: 10
-    3: 10
-    4: 10
-    5: 10
-    6: 9
-  stepFeatures:
-    0: 12
-    1: 12
-    2: 14
-    3: 10
-    4: 10
-    5: 10
-    6: 9
-HLT_e20_lhmedium_L1EM15VH:
-  eventCount: 9
-  stepCounts:
-    0: 11
-    1: 11
-    2: 10
-    3: 10
-    4: 10
-    5: 10
-    6: 9
-  stepFeatures:
-    0: 12
-    1: 12
-    2: 14
-    3: 10
-    4: 10
-    5: 10
-    6: 9
-HLT_e20_lhtight_L1EM15VH:
-  eventCount: 8
-  stepCounts:
-    0: 11
-    1: 11
-    2: 10
-    3: 10
-    4: 10
-    5: 10
-    6: 8
-  stepFeatures:
-    0: 12
-    1: 12
-    2: 14
-    3: 10
-    4: 10
-    5: 10
-    6: 8
 HLT_e20_lhtight_ivarloose_L12EM7:
   eventCount: 6
   stepCounts:
@@ -3192,42 +3203,24 @@ HLT_e20_lhtight_ivarloose_L12EM7:
     4: 8
     5: 8
     6: 6
-HLT_e20_lhtight_ivarloose_L1EM15VH:
-  eventCount: 8
+HLT_e20_lhtight_ivarloose_L12eEM9:
+  eventCount: 6
   stepCounts:
-    0: 11
-    1: 11
-    2: 10
-    3: 10
-    4: 10
-    5: 10
-    6: 8
+    0: 9
+    1: 9
+    2: 8
+    3: 8
+    4: 8
+    5: 8
+    6: 6
   stepFeatures:
-    0: 12
-    1: 12
-    2: 14
-    3: 10
-    4: 10
-    5: 10
-    6: 8
-HLT_e20_lhtight_ivarloose_L1EM15VHI:
-  eventCount: 7
-  stepCounts:
     0: 10
     1: 10
-    2: 9
-    3: 9
-    4: 9
-    5: 9
-    6: 7
-  stepFeatures:
-    0: 11
-    1: 11
-    2: 13
-    3: 9
-    4: 9
-    5: 9
-    6: 7
+    2: 10
+    3: 8
+    4: 8
+    5: 8
+    6: 6
 HLT_e20_lhtight_ivarloose_L1ZAFB-25DPHI-eEM18M:
   eventCount: 1
   stepCounts:
@@ -3414,6 +3407,18 @@ HLT_e25_etcut_L1EM15VHI:
     1: 15
     2: 52
     3: 9
+HLT_e25_etcut_L1eEM18M:
+  eventCount: 9
+  stepCounts:
+    0: 13
+    1: 13
+    2: 12
+    3: 9
+  stepFeatures:
+    0: 16
+    1: 16
+    2: 47
+    3: 10
 HLT_e25_mergedtight_g35_medium_90invmAB_02dRAB_L12EM20VH:
   eventCount: 0
   stepCounts:
@@ -3520,6 +3525,24 @@ HLT_e26_dnntight_ivarloose_L1EM22VHI:
     4: 5
     5: 5
     6: 5
+HLT_e26_dnntight_ivarloose_L1eEM26M:
+  eventCount: 6
+  stepCounts:
+    0: 8
+    1: 8
+    2: 6
+    3: 6
+    4: 6
+    5: 6
+    6: 6
+  stepFeatures:
+    0: 8
+    1: 8
+    2: 10
+    3: 6
+    4: 6
+    5: 6
+    6: 6
 HLT_e26_etcut_L1EM22VHI:
   eventCount: 8
   stepCounts:
@@ -4683,6 +4706,25 @@ HLT_e26_lhtight_ivarloose_e7_lhmedium_probe_L1EM22VHI:
     5: 5
     6: 5
     7: 5
+HLT_e26_lhtight_ivarloose_e7_lhmedium_probe_L1eEM26M:
+  eventCount: 0
+  stepCounts:
+    0: 8
+    1: 8
+    2: 6
+    3: 6
+    4: 6
+    5: 6
+    6: 6
+  stepFeatures:
+    0: 8
+    1: 8
+    2: 10
+    3: 6
+    4: 6
+    5: 6
+    6: 6
+    7: 6
 HLT_e26_lhtight_ivarloose_e9_etcut_probe_L1EM22VHI:
   eventCount: 3
   stepCounts:
@@ -4987,6 +5029,22 @@ HLT_e26_lhtight_ivarloose_nogsf_L1EM22VHI:
     3: 5
     4: 5
     5: 5
+HLT_e26_lhtight_ivarloose_nogsf_L1eEM26M:
+  eventCount: 6
+  stepCounts:
+    0: 8
+    1: 8
+    2: 6
+    3: 6
+    4: 6
+    5: 6
+  stepFeatures:
+    0: 8
+    1: 8
+    2: 10
+    3: 6
+    4: 6
+    5: 6
 HLT_e26_lhtight_ivarloose_noringer_L1EM22VHI:
   eventCount: 5
   stepCounts:
@@ -5005,6 +5063,24 @@ HLT_e26_lhtight_ivarloose_noringer_L1EM22VHI:
     4: 6
     5: 6
     6: 5
+HLT_e26_lhtight_ivarloose_noringer_L1eEM26M:
+  eventCount: 6
+  stepCounts:
+    0: 8
+    1: 8
+    2: 7
+    3: 7
+    4: 7
+    5: 7
+    6: 6
+  stepFeatures:
+    0: 8
+    1: 8
+    2: 21
+    3: 7
+    4: 7
+    5: 7
+    6: 6
 HLT_e26_lhtight_ivarloose_tau100_mediumRNN_tracktwoLLP_probe_03dRAB_L1EM22VHI:
   eventCount: 0
   stepCounts:
@@ -5526,6 +5602,24 @@ HLT_e26_lhtight_ivarmedium_L1EM22VHI:
     4: 5
     5: 5
     6: 5
+HLT_e26_lhtight_ivarmedium_L1eEM26M:
+  eventCount: 6
+  stepCounts:
+    0: 8
+    1: 8
+    2: 6
+    3: 6
+    4: 6
+    5: 6
+    6: 6
+  stepFeatures:
+    0: 8
+    1: 8
+    2: 10
+    3: 6
+    4: 6
+    5: 6
+    6: 6
 HLT_e26_lhtight_ivartight_L1EM22VHI:
   eventCount: 5
   stepCounts:
@@ -5544,6 +5638,24 @@ HLT_e26_lhtight_ivartight_L1EM22VHI:
     4: 5
     5: 5
     6: 5
+HLT_e26_lhtight_ivartight_L1eEM26M:
+  eventCount: 6
+  stepCounts:
+    0: 8
+    1: 8
+    2: 6
+    3: 6
+    4: 6
+    5: 6
+    6: 6
+  stepFeatures:
+    0: 8
+    1: 8
+    2: 10
+    3: 6
+    4: 6
+    5: 6
+    6: 6
 HLT_e28_lhmedium_mu8noL1_L1EM24VHI:
   eventCount: 1
   stepCounts:
@@ -5672,6 +5784,18 @@ HLT_e30_etcut_L1EM15VHI:
     1: 12
     2: 49
     3: 9
+HLT_e30_etcut_L1eEM18M:
+  eventCount: 8
+  stepCounts:
+    0: 11
+    1: 11
+    2: 9
+    3: 8
+  stepFeatures:
+    0: 13
+    1: 13
+    2: 44
+    3: 9
 HLT_e30_idperf_loose_lrtloose_L1EM22VHI:
   eventCount: 7
   stepCounts:
@@ -5830,6 +5954,18 @@ HLT_e40_etcut_L1EM15VHI:
     1: 11
     2: 48
     3: 8
+HLT_e40_etcut_L1eEM18M:
+  eventCount: 8
+  stepCounts:
+    0: 10
+    1: 10
+    2: 8
+    3: 8
+  stepFeatures:
+    0: 11
+    1: 11
+    2: 42
+    3: 9
 HLT_e40_lhvloose_L1EM22VHI:
   eventCount: 5
   stepCounts:
@@ -5956,6 +6092,18 @@ HLT_e5_etcut_L1EM3:
     1: 156
     2: 450
     3: 111
+HLT_e5_etcut_L1eEM5:
+  eventCount: 20
+  stepCounts:
+    0: 20
+    1: 20
+    2: 20
+    3: 20
+  stepFeatures:
+    0: 108
+    1: 108
+    2: 453
+    3: 136
 HLT_e5_idperf_loose_lrtloose_probe_g25_medium_L1EM20VH:
   eventCount: 8
   stepCounts:
@@ -6390,6 +6538,24 @@ HLT_e60_dnnmedium_L1EM22VHI:
     4: 3
     5: 3
     6: 3
+HLT_e60_dnnmedium_L1eEM26M:
+  eventCount: 3
+  stepCounts:
+    0: 5
+    1: 5
+    2: 3
+    3: 3
+    4: 3
+    5: 3
+    6: 3
+  stepFeatures:
+    0: 5
+    1: 5
+    2: 6
+    3: 3
+    4: 3
+    5: 3
+    6: 3
 HLT_e60_etcut_L1EM22VHI:
   eventCount: 5
   stepCounts:
@@ -6402,6 +6568,18 @@ HLT_e60_etcut_L1EM22VHI:
     1: 8
     2: 37
     3: 6
+HLT_e60_etcut_L1eEM26M:
+  eventCount: 5
+  stepCounts:
+    0: 8
+    1: 8
+    2: 6
+    3: 5
+  stepFeatures:
+    0: 9
+    1: 9
+    2: 39
+    3: 6
 HLT_e60_idperf_medium_L1EM22VHI:
   eventCount: 5
   stepCounts:
@@ -6506,6 +6684,22 @@ HLT_e60_lhmedium_nogsf_L1EM22VHI:
     3: 3
     4: 3
     5: 3
+HLT_e60_lhmedium_nogsf_L1eEM26M:
+  eventCount: 3
+  stepCounts:
+    0: 5
+    1: 5
+    2: 3
+    3: 3
+    4: 3
+    5: 3
+  stepFeatures:
+    0: 5
+    1: 5
+    2: 6
+    3: 3
+    4: 3
+    5: 3
 HLT_e60_lhmedium_noringer_L1EM22VHI:
   eventCount: 3
   stepCounts:
@@ -6590,6 +6784,18 @@ HLT_e70_etcut_L1EM22VHI:
     1: 6
     2: 34
     3: 5
+HLT_e70_etcut_L1eEM26M:
+  eventCount: 4
+  stepCounts:
+    0: 5
+    1: 5
+    2: 4
+    3: 4
+  stepFeatures:
+    0: 6
+    1: 6
+    2: 34
+    3: 5
 HLT_e70_lhloose_xe70_cell_L1EM22VHI:
   eventCount: 0
   stepCounts:
@@ -6702,6 +6908,18 @@ HLT_e80_etcut_L1EM22VHI:
     1: 4
     2: 27
     3: 3
+HLT_e80_etcut_L1eEM26M:
+  eventCount: 2
+  stepCounts:
+    0: 3
+    1: 3
+    2: 2
+    3: 2
+  stepFeatures:
+    0: 4
+    1: 4
+    2: 27
+    3: 3
 HLT_e80_lhvloose_L1EM22VHI:
   eventCount: 1
   stepCounts:
@@ -7917,6 +8135,20 @@ HLT_g25_tight_icaloloose_L1EM22VHI:
     2: 8
     3: 6
     4: 6
+HLT_g25_tight_icaloloose_L1eEM24L:
+  eventCount: 8
+  stepCounts:
+    0: 11
+    1: 10
+    2: 10
+    3: 8
+    4: 8
+  stepFeatures:
+    0: 13
+    1: 11
+    2: 10
+    3: 8
+    4: 8
 HLT_g25_tight_icaloloose_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf_L1EM22VHI:
   eventCount: 0
   stepCounts:
@@ -8043,6 +8275,20 @@ HLT_g25_tight_icalomedium_L1EM20VH:
     2: 10
     3: 8
     4: 7
+HLT_g25_tight_icalomedium_L1eEM24L:
+  eventCount: 7
+  stepCounts:
+    0: 11
+    1: 10
+    2: 10
+    3: 8
+    4: 7
+  stepFeatures:
+    0: 13
+    1: 11
+    2: 10
+    3: 8
+    4: 7
 HLT_g25_tight_icalotight_L1EM20VH:
   eventCount: 8
   stepCounts:
@@ -8071,6 +8317,20 @@ HLT_g25_tight_icalotight_L1EM22VHI:
     2: 8
     3: 6
     4: 6
+HLT_g25_tight_icalotight_L1eEM24L:
+  eventCount: 8
+  stepCounts:
+    0: 11
+    1: 10
+    2: 10
+    3: 8
+    4: 8
+  stepFeatures:
+    0: 13
+    1: 11
+    2: 10
+    3: 8
+    4: 9
 HLT_g25_tight_icalotight_xe40_cell_xe40_tcpufit_xe40_pfopufit_18dphiAB_18dphiAC_80mTAC_L1EM22VHI:
   eventCount: 0
   stepCounts:
diff --git a/Trigger/TrigValidation/TrigInDetValidation/share/TIDAbjetpt_preinclude.py b/Trigger/TrigValidation/TrigInDetValidation/share/TIDAbjetpt_preinclude.py
index 4877573e3b95b6eed71f2cfd662da36cdff0c9a8..fa824d2e5165713a93a78a66deab596a31491ef6 100644
--- a/Trigger/TrigValidation/TrigInDetValidation/share/TIDAbjetpt_preinclude.py
+++ b/Trigger/TrigValidation/TrigInDetValidation/share/TIDAbjetpt_preinclude.py
@@ -7,8 +7,10 @@ from TrigInDetConfig.ConfigSettings import getInDetTrigConfig
 from AthenaCommon.SystemOfUnits import GeV
 
 getInDetTrigConfig("bjet")._pTmin = 0.8*GeV
-getInDetTrigConfig("bjet")._Xi2max = 12.0
+
+from AthenaConfiguration.AllConfigFlags import ConfigFlags as flags
+flags.Trigger.InDetTracking.bjet.Xi2max=12.
 
 log.info( "ID Trigger pTmin: "+str(getInDetTrigConfig("bjet").pTmin) )
-log.info( "ID Trigger Xi2max: "+str(getInDetTrigConfig("bjet").Xi2max) )
+log.info(f"ID Trigger Xi2max: {flags.Trigger.InDetTracking.bjet.Xi2max}")
 
diff --git a/Trigger/TrigValidation/TrigInDetValidation/share/TIDAcloneremovalchi2.py b/Trigger/TrigValidation/TrigInDetValidation/share/TIDAcloneremovalchi2.py
index 26152db22ce3cc2d744b14dfc06f9f00819dfc09..3c03116d7bca1ad432cd668b66fc023a3ab161ca 100644
--- a/Trigger/TrigValidation/TrigInDetValidation/share/TIDAcloneremovalchi2.py
+++ b/Trigger/TrigValidation/TrigInDetValidation/share/TIDAcloneremovalchi2.py
@@ -9,11 +9,11 @@ log.info( "preinclude: TIDAcloneremoval.py" )
 
 from TrigInDetConfig.ConfigSettings import getInDetTrigConfig
 
-getInDetTrigConfig("electron")._doCloneRemoval = False
-getInDetTrigConfig("electron")._Xi2max = 12
+from AthenaConfiguration.AllConfigFlags import ConfigFlags as flags
+flags.Trigger.InDetTracking.electron.Xi2max=12.
 
 
 log.info( "Setting clone removal: "+str(getInDetTrigConfig("electron").doCloneRemoval) )
-log.info( "Setting clone removal: "+str(getInDetTrigConfig("electron").Xi2max) )
+log.info( f"Setting Xi2max: {flags.Trigger.InDetTracking.electron.Xi2max}" )
 
 
diff --git a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref
index 0c8445ec672b8671bdd47ffae7e67902ec7395a1..c07d567175fa1f511cbea84190acae6a0e6d5733 100644
--- a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref
+++ b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref
@@ -148,6 +148,13 @@ HLT_2g15_loose_25dphiAA_invmAA80_L12EM7:
   stepFeatures:
     0: 12
     1: 3
+HLT_2g15_loose_25dphiAA_invmAA80_L12eEM9:
+  eventCount: 0
+  stepCounts:
+    0: 3
+  stepFeatures:
+    0: 8
+    1: 1
 HLT_2g15_loose_25dphiAA_invmAA80_L1DPHI-M70-2eEM15M:
   eventCount: 0
 HLT_2g15_tight_25dphiAA_L12EM7:
@@ -157,6 +164,13 @@ HLT_2g15_tight_25dphiAA_L12EM7:
   stepFeatures:
     0: 12
     1: 3
+HLT_2g15_tight_25dphiAA_L12eEM9:
+  eventCount: 0
+  stepCounts:
+    0: 3
+  stepFeatures:
+    0: 8
+    1: 1
 HLT_2g15_tight_25dphiAA_L1DPHI-M70-2eEM15M:
   eventCount: 0
 HLT_2g15_tight_25dphiAA_invmAA80_L12EM7:
@@ -166,6 +180,13 @@ HLT_2g15_tight_25dphiAA_invmAA80_L12EM7:
   stepFeatures:
     0: 12
     1: 3
+HLT_2g15_tight_25dphiAA_invmAA80_L12eEM9:
+  eventCount: 0
+  stepCounts:
+    0: 3
+  stepFeatures:
+    0: 8
+    1: 1
 HLT_2g15_tight_25dphiAA_invmAA80_L1DPHI-M70-2eEM15M:
   eventCount: 0
 HLT_2g15_tight_L1DPHI-M70-2eEM15M:
@@ -179,13 +200,6 @@ HLT_2g20_loose_L12EM15VH:
     1: 1
 HLT_2g20_loose_L12eEM18L:
   eventCount: 0
-HLT_2g20_tight_L12EM15VHI:
-  eventCount: 0
-  stepCounts:
-    0: 1
-  stepFeatures:
-    0: 2
-    1: 1
 HLT_2g20_tight_icaloloose_L12EM15VHI:
   eventCount: 0
   stepCounts:
@@ -236,6 +250,17 @@ HLT_2g9_loose_25dphiAA_invmAA80_L12EM7:
     1: 14
     2: 11
     3: 2
+HLT_2g9_loose_25dphiAA_invmAA80_L12eEM9:
+  eventCount: 0
+  stepCounts:
+    0: 5
+    1: 2
+    2: 2
+  stepFeatures:
+    0: 12
+    1: 8
+    2: 5
+    3: 2
 HLT_2g9_loose_25dphiAA_invmAA80_L1DPHI-M70-2eEM9:
   eventCount: 0
   stepCounts:
@@ -1177,6 +1202,8 @@ HLT_distrk20_tight_L1jXE100:
     1: 1
 HLT_e100_etcut_L1EM22VHI:
   eventCount: 0
+HLT_e100_etcut_L1eEM26M:
+  eventCount: 0
 HLT_e100_lhvloose_L1EM22VHI:
   eventCount: 0
 HLT_e100_lhvloose_L1eEM26M:
@@ -1193,6 +1220,18 @@ HLT_e10_etcut_L1EM7:
     1: 29
     2: 66
     3: 15
+HLT_e10_etcut_L1eEM9:
+  eventCount: 12
+  stepCounts:
+    0: 14
+    1: 14
+    2: 12
+    3: 12
+  stepFeatures:
+    0: 21
+    1: 21
+    2: 43
+    3: 17
 HLT_e10_lhmedium_ivarloose_j70_j50a_j0_DJMASS900j50_L1MJJ-500-NFF:
   eventCount: 0
 HLT_e10_lhmedium_ivarloose_j70_j50a_j0_DJMASS900j50_L1jMJJ-500-NFF:
@@ -1245,6 +1284,8 @@ HLT_e12_lhtight_mu11_dRAB15_invmAB10_L1LFV-eEM10L-MU8VF:
   eventCount: 0
 HLT_e140_dnnloose_L1EM22VHI:
   eventCount: 0
+HLT_e140_dnnloose_L1eEM26M:
+  eventCount: 0
 HLT_e140_lhloose_L1EM22VHI:
   eventCount: 0
 HLT_e140_lhloose_L1eEM26M:
@@ -1395,6 +1436,18 @@ HLT_e15_etcut_L1EM7:
     1: 17
     2: 33
     3: 10
+HLT_e15_etcut_L1eEM9:
+  eventCount: 7
+  stepCounts:
+    0: 12
+    1: 12
+    2: 10
+    3: 7
+  stepFeatures:
+    0: 19
+    1: 19
+    2: 37
+    3: 12
 HLT_e17_lhloose_mu14_L1EM15VH_MU8F:
   eventCount: 0
   stepFeatures:
@@ -1409,22 +1462,6 @@ HLT_e17_lhmedium_tau25_mediumRNN_tracktwoMVA_xe50_cell_03dRAB_L1EM15VHI_2TAU12IM
   eventCount: 0
   stepFeatures:
     0: 1
-HLT_e17_lhvloose_L1EM15VHI:
-  eventCount: 0
-  stepCounts:
-    0: 1
-    1: 1
-    2: 1
-    3: 1
-    4: 1
-    5: 1
-  stepFeatures:
-    0: 1
-    1: 1
-    2: 1
-    3: 1
-    4: 1
-    5: 1
 HLT_e20_etcut_L1EM15VHI:
   eventCount: 5
   stepCounts:
@@ -1437,21 +1474,25 @@ HLT_e20_etcut_L1EM15VHI:
     1: 7
     2: 11
     3: 5
+HLT_e20_etcut_L1eEM18M:
+  eventCount: 2
+  stepCounts:
+    0: 3
+    1: 3
+    2: 2
+    3: 2
+  stepFeatures:
+    0: 3
+    1: 3
+    2: 4
+    3: 2
 HLT_e20_idperf_loose_lrtloose_L1EM15VH:
   eventCount: 0
 HLT_e20_idperf_loose_lrtloose_L1eEM18L:
   eventCount: 0
-HLT_e20_lhloose_L1EM15VH:
-  eventCount: 0
-HLT_e20_lhmedium_L1EM15VH:
-  eventCount: 0
-HLT_e20_lhtight_L1EM15VH:
-  eventCount: 0
 HLT_e20_lhtight_ivarloose_L12EM7:
   eventCount: 0
-HLT_e20_lhtight_ivarloose_L1EM15VH:
-  eventCount: 0
-HLT_e20_lhtight_ivarloose_L1EM15VHI:
+HLT_e20_lhtight_ivarloose_L12eEM9:
   eventCount: 0
 HLT_e20_lhtight_ivarloose_L1ZAFB-25DPHI-eEM18M:
   eventCount: 0
@@ -1513,6 +1554,18 @@ HLT_e25_etcut_L1EM15VHI:
     1: 6
     2: 10
     3: 5
+HLT_e25_etcut_L1eEM18M:
+  eventCount: 2
+  stepCounts:
+    0: 3
+    1: 3
+    2: 2
+    3: 2
+  stepFeatures:
+    0: 3
+    1: 3
+    2: 4
+    3: 2
 HLT_e25_mergedtight_g35_medium_90invmAB_02dRAB_L12EM20VH:
   eventCount: 0
 HLT_e25_mergedtight_g35_medium_90invmAB_02dRAB_L12eEM24L:
@@ -1525,6 +1578,8 @@ HLT_e26_dnntight_L1EM22VHI:
   eventCount: 0
 HLT_e26_dnntight_ivarloose_L1EM22VHI:
   eventCount: 0
+HLT_e26_dnntight_ivarloose_L1eEM26M:
+  eventCount: 0
 HLT_e26_etcut_L1EM22VHI:
   eventCount: 2
   stepCounts:
@@ -1655,6 +1710,8 @@ HLT_e26_lhtight_ivarloose_e5_loose_lrtloose_idperf_probe_L1eEM26M:
   eventCount: 0
 HLT_e26_lhtight_ivarloose_e7_lhmedium_probe_L1EM22VHI:
   eventCount: 0
+HLT_e26_lhtight_ivarloose_e7_lhmedium_probe_L1eEM26M:
+  eventCount: 0
 HLT_e26_lhtight_ivarloose_e9_etcut_probe_L1EM22VHI:
   eventCount: 0
 HLT_e26_lhtight_ivarloose_e9_etcut_probe_L1eEM26M:
@@ -1681,6 +1738,8 @@ HLT_e26_lhtight_ivarloose_mu22noL1_j20_roiftf_preselj20_L1eEM26M:
   eventCount: 0
 HLT_e26_lhtight_ivarloose_nogsf_L1EM22VHI:
   eventCount: 0
+HLT_e26_lhtight_ivarloose_nogsf_L1eEM26M:
+  eventCount: 0
 HLT_e26_lhtight_ivarloose_noringer_L1EM22VHI:
   eventCount: 0
   stepCounts:
@@ -1697,6 +1756,22 @@ HLT_e26_lhtight_ivarloose_noringer_L1EM22VHI:
     3: 1
     4: 1
     5: 1
+HLT_e26_lhtight_ivarloose_noringer_L1eEM26M:
+  eventCount: 0
+  stepCounts:
+    0: 1
+    1: 1
+    2: 1
+    3: 1
+    4: 1
+    5: 1
+  stepFeatures:
+    0: 1
+    1: 1
+    2: 1
+    3: 1
+    4: 1
+    5: 1
 HLT_e26_lhtight_ivarloose_tau100_mediumRNN_tracktwoLLP_probe_03dRAB_L1EM22VHI:
   eventCount: 0
 HLT_e26_lhtight_ivarloose_tau160_mediumRNN_tracktwoMVA_probe_03dRAB_L1EM22VHI:
@@ -1741,8 +1816,12 @@ HLT_e26_lhtight_ivarloose_tau80_mediumRNN_tracktwoMVA_probe_03dRAB_L1eEM26M:
   eventCount: 0
 HLT_e26_lhtight_ivarmedium_L1EM22VHI:
   eventCount: 0
+HLT_e26_lhtight_ivarmedium_L1eEM26M:
+  eventCount: 0
 HLT_e26_lhtight_ivartight_L1EM22VHI:
   eventCount: 0
+HLT_e26_lhtight_ivartight_L1eEM26M:
+  eventCount: 0
 HLT_e28_lhmedium_mu8noL1_L1EM24VHI:
   eventCount: 0
 HLT_e28_lhtight_ivarloose_L1EM22VHI:
@@ -1799,6 +1878,18 @@ HLT_e30_etcut_L1EM15VHI:
     1: 3
     2: 4
     3: 2
+HLT_e30_etcut_L1eEM18M:
+  eventCount: 2
+  stepCounts:
+    0: 3
+    1: 3
+    2: 2
+    3: 2
+  stepFeatures:
+    0: 3
+    1: 3
+    2: 4
+    3: 2
 HLT_e30_idperf_loose_lrtloose_L1EM22VHI:
   eventCount: 0
 HLT_e30_idperf_loose_lrtloose_L1eEM26M:
@@ -1897,6 +1988,18 @@ HLT_e40_etcut_L1EM15VHI:
     1: 1
     2: 3
     3: 1
+HLT_e40_etcut_L1eEM18M:
+  eventCount: 1
+  stepCounts:
+    0: 1
+    1: 1
+    2: 1
+    3: 1
+  stepFeatures:
+    0: 1
+    1: 1
+    2: 3
+    3: 1
 HLT_e40_lhvloose_L1EM22VHI:
   eventCount: 0
 HLT_e40_lhvloose_L1eEM26M:
@@ -1985,6 +2088,18 @@ HLT_e5_etcut_L1EM3:
     1: 139
     2: 187
     3: 54
+HLT_e5_etcut_L1eEM5:
+  eventCount: 20
+  stepCounts:
+    0: 23
+    1: 23
+    2: 20
+    3: 20
+  stepFeatures:
+    0: 50
+    1: 50
+    2: 99
+    3: 41
 HLT_e5_idperf_loose_lrtloose_probe_g25_medium_L1EM20VH:
   eventCount: 0
   stepCounts:
@@ -2242,6 +2357,8 @@ HLT_e5_nopid_L1EM3:
     6: 43
 HLT_e60_dnnmedium_L1EM22VHI:
   eventCount: 0
+HLT_e60_dnnmedium_L1eEM26M:
+  eventCount: 0
 HLT_e60_etcut_L1EM22VHI:
   eventCount: 0
   stepCounts:
@@ -2252,6 +2369,16 @@ HLT_e60_etcut_L1EM22VHI:
     0: 1
     1: 1
     2: 3
+HLT_e60_etcut_L1eEM26M:
+  eventCount: 0
+  stepCounts:
+    0: 1
+    1: 1
+    2: 1
+  stepFeatures:
+    0: 1
+    1: 1
+    2: 3
 HLT_e60_idperf_medium_L1EM22VHI:
   eventCount: 0
 HLT_e60_idperf_medium_L1eEM26M:
@@ -2266,6 +2393,8 @@ HLT_e60_lhmedium_L1eEM26M:
   eventCount: 0
 HLT_e60_lhmedium_nogsf_L1EM22VHI:
   eventCount: 0
+HLT_e60_lhmedium_nogsf_L1eEM26M:
+  eventCount: 0
 HLT_e60_lhmedium_noringer_L1EM22VHI:
   eventCount: 0
 HLT_e60_lhmedium_noringer_L1eEM26M:
@@ -2276,6 +2405,8 @@ HLT_e60_lhvloose_L1eEM26M:
   eventCount: 0
 HLT_e70_etcut_L1EM22VHI:
   eventCount: 0
+HLT_e70_etcut_L1eEM26M:
+  eventCount: 0
 HLT_e70_lhloose_xe70_cell_L1EM22VHI:
   eventCount: 0
 HLT_e70_lhloose_xe70_cell_L1eEM26M:
@@ -2290,6 +2421,8 @@ HLT_e7_lhmedium_mu24_L1MU18VFCH:
   eventCount: 0
 HLT_e80_etcut_L1EM22VHI:
   eventCount: 0
+HLT_e80_etcut_L1eEM26M:
+  eventCount: 0
 HLT_e80_lhvloose_L1EM22VHI:
   eventCount: 0
 HLT_e80_lhvloose_L1eEM26M:
@@ -3098,6 +3231,20 @@ HLT_g25_tight_icaloloose_L1EM22VHI:
     2: 4
     3: 1
     4: 1
+HLT_g25_tight_icaloloose_L1eEM24L:
+  eventCount: 1
+  stepCounts:
+    0: 3
+    1: 2
+    2: 2
+    3: 1
+    4: 1
+  stepFeatures:
+    0: 3
+    1: 2
+    2: 2
+    3: 1
+    4: 1
 HLT_g25_tight_icaloloose_j35_0eta290_020jvt_bdl1d77_3j35a_j0_DJMASS700j35_pf_ftf_L1EM22VHI:
   eventCount: 0
   stepCounts:
@@ -3219,6 +3366,20 @@ HLT_g25_tight_icalomedium_L1EM20VH:
     2: 4
     3: 1
     4: 1
+HLT_g25_tight_icalomedium_L1eEM24L:
+  eventCount: 1
+  stepCounts:
+    0: 3
+    1: 2
+    2: 2
+    3: 1
+    4: 1
+  stepFeatures:
+    0: 3
+    1: 2
+    2: 2
+    3: 1
+    4: 1
 HLT_g25_tight_icalotight_L1EM20VH:
   eventCount: 1
   stepCounts:
@@ -3247,6 +3408,20 @@ HLT_g25_tight_icalotight_L1EM22VHI:
     2: 4
     3: 1
     4: 1
+HLT_g25_tight_icalotight_L1eEM24L:
+  eventCount: 1
+  stepCounts:
+    0: 3
+    1: 2
+    2: 2
+    3: 1
+    4: 1
+  stepFeatures:
+    0: 3
+    1: 2
+    2: 2
+    3: 1
+    4: 1
 HLT_g25_tight_icalotight_xe40_cell_xe40_tcpufit_xe40_pfopufit_18dphiAB_18dphiAC_80mTAC_L1EM22VHI:
   eventCount: 0
   stepCounts:
diff --git a/Trigger/TrigValidation/TrigValAlgs/python/TrigValAlgsConfig.py b/Trigger/TrigValidation/TrigValAlgs/python/TrigValAlgsConfig.py
index add1c3e5ab20095e0d0ddad734a69526baa141d7..82ab07f6bf4b7765baf7314c60500738c24fe9f3 100755
--- a/Trigger/TrigValidation/TrigValAlgs/python/TrigValAlgsConfig.py
+++ b/Trigger/TrigValidation/TrigValAlgs/python/TrigValAlgsConfig.py
@@ -3,20 +3,21 @@
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
 
-
 def TrigEDMCheckerCfg(flags, name="TrigEDMChecker", doDumpAll=True):
+    from TrigDecisionTool.TrigDecisionToolConfig import TrigDecisionToolCfg
     cfg = ComponentAccumulator()
-    edmchecker = CompFactory.TrigEDMChecker(name, doDumpAll = doDumpAll)
+    edmchecker = CompFactory.TrigEDMChecker(
+        name,
+        doDumpAll = doDumpAll,
+        TriggerDecisionTool = cfg.getPrimaryAndMerge(TrigDecisionToolCfg(flags)) )
 
     if doDumpAll:
         from MuonConfig.MuonRecToolsConfig import MuonEDMPrinterToolCfg
         from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg, MuonIdHelperSvcCfg
-        from TrigDecisionTool.TrigDecisionToolConfig import TrigDecisionToolCfg
         cfg.merge(MuonGeoModelCfg(flags))
         cfg.merge(MuonIdHelperSvcCfg(flags))
         edmchecker.MuonPrinter = CompFactory.Rec.MuonPrintingTool(
             MuonStationPrinter = cfg.popToolsAndMerge(MuonEDMPrinterToolCfg(flags)) )
-        edmchecker.TriggerDecisionTool = cfg.getPrimaryAndMerge(TrigDecisionToolCfg(flags))
 
     cfg.addEventAlgo(edmchecker)
 
diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/Modifiers.py b/Trigger/TriggerCommon/TriggerJobOpts/python/Modifiers.py
index a970f5ad0ee47a8edab724a164fb08b9f5772eba..88e170c5eb6ac809da9eec8b0b8cada9747ff650 100644
--- a/Trigger/TriggerCommon/TriggerJobOpts/python/Modifiers.py
+++ b/Trigger/TriggerCommon/TriggerJobOpts/python/Modifiers.py
@@ -41,17 +41,6 @@ class _modifier:
 # Detector maps and conditions
 ###############################################################
 
-class BunchSpacing25ns(_modifier):
-    """
-    ID (and other settings) related to 25ns bunch spacing
-    """
-    def preSetup(self, flags):
-        from AthenaCommon.BeamFlags import jobproperties
-        jobproperties.Beam.bunchSpacing = 25
-        flags.Beam.BunchSpacing = 25
-        from InDetTrigRecExample.InDetTrigFlags import InDetTrigFlags
-        InDetTrigFlags.InDet25nsec.set_Value_and_Lock(True)
-
 class SolenoidOff(_modifier):
     """
     Turn solenoid field OFF
diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerRecoConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerRecoConfig.py
index eaf1480caa6f25267d63ca04690078f33c5bad30..6d285ab3428d9115cac79b5bc10b2af0206047b0 100644
--- a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerRecoConfig.py
+++ b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerRecoConfig.py
@@ -70,6 +70,10 @@ def TriggerRecoCfgData(flags):
         if flags.Input.Format is Format.BS:
             from L1TopoByteStream.L1TopoByteStreamConfig import L1TopoRawDataContainerBSCnvCfg
             acc.merge( L1TopoRawDataContainerBSCnvCfg(flags) )
+            topoEDM = ['xAOD::L1TopoRawDataContainer#L1TopoRawData',
+                       'xAOD::L1TopoRawDataAuxContainer#L1TopoRawDataAux.']
+            acc.merge(addToESD(flags, topoEDM))
+            acc.merge(addToAOD(flags, topoEDM))
 
     acc.merge(TriggerEDMCfg(flags))
 
diff --git a/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone.py b/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone.py
index 32d961c1a619322eba71e2dcee20db4b82204c33..dbbca7b4d954afae24184b7cfe8d30ac425247ce 100644
--- a/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone.py
+++ b/Trigger/TriggerCommon/TriggerJobOpts/share/runHLT_standalone.py
@@ -208,7 +208,7 @@ if opt.setMenu:
 
 # Setup list of modifiers
 # Common modifiers for MC and data
-setModifiers = ['BunchSpacing25ns']
+setModifiers = []
 
 if not flags.Input.isMC:  # data modifiers
     setModifiers += ['BFieldAutoConfig',
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CommonSequences/TLABuildingSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CommonSequences/TLABuildingSequences.py
index dff655d9e5b7edf289ffcf70d42d64de8982ab32..b474ead1d865b3270c681a52f2d9ba35273e5c25 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CommonSequences/TLABuildingSequences.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CommonSequences/TLABuildingSequences.py
@@ -1,11 +1,14 @@
 #
 #  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 #
-from TriggerMenuMT.HLT.Config.MenuComponents import ChainStep, RecoFragmentsPool
+from TriggerMenuMT.HLT.Config.MenuComponents import ChainStep, menuSequenceCAToGlobalWrapper
 from AthenaCommon.Logging import logging
 from AthenaConfiguration.ComponentFactory import isComponentAccumulatorCfg
 from ..Jet.JetChainConfiguration import JetChainConfiguration
 from TriggerMenuMT.HLT.Config.ControlFlow.HLTCFTools import NoCAmigration
+from ..Photon.PrecisionPhotonTLAMenuSequenceConfig import PhotonTLAMenuSequenceCfg
+from ..Jet.JetTLASequenceConfig import JetTLAMenuSequenceCfg
+from ..Muon.MuonTLASequenceConfig import MuonTLAMenuSequenceCfg
 log = logging.getLogger(__name__)
 
 
@@ -45,16 +48,19 @@ def getTLASignatureSequence(flags, chainDict, chainPart):
     signature= chainPart['signature']
     
     if signature == 'Photon':    
-        from ..Photon.PrecisionPhotonTLAMenuSequences import TLAPhotonMenuSequence
         photonOutCollectionName = "HLT_egamma_Photons"
-        return RecoFragmentsPool.retrieve(TLAPhotonMenuSequence, flags, photonsIn=photonOutCollectionName)
+        if isComponentAccumulatorCfg():
+            return PhotonTLAMenuSequenceCfg(flags, photonsIn=photonOutCollectionName)
+        else:
+            return menuSequenceCAToGlobalWrapper(PhotonTLAMenuSequenceCfg,flags, photonsIn=photonOutCollectionName)
     
     elif signature == 'Muon':    
-        from ..Muon.TLAMuonSequence import TLAMuonMenuSequence        
-        return TLAMuonMenuSequence (flags, muChainPart=chainPart)
+        if isComponentAccumulatorCfg():
+            return MuonTLAMenuSequenceCfg(flags, muChainPart=chainPart)
+        else:
+            return menuSequenceCAToGlobalWrapper(MuonTLAMenuSequenceCfg,flags, muChainPart=chainPart)
     
     elif signature  == 'Jet' or signature  == 'Bjet':   
-        from ..Jet.JetTLASequences import TLAJetMenuSequence
         jetDef = JetChainConfiguration(chainDict)
         jetInputCollectionName = jetDef.jetName
         log.debug(f"TLA jet input collection = {jetInputCollectionName}")
@@ -65,7 +71,10 @@ def getTLASignatureSequence(flags, chainDict, chainPart):
         # Thus, BTag recording will always run for PFlow jets, creating an empty container if no btagging exists. 
         attachBtag = True
         if jetDef.recoDict["trkopt"] == "notrk": attachBtag = False
-        return RecoFragmentsPool.retrieve(TLAJetMenuSequence, flags, jetsIn=jetInputCollectionName, attachBtag=attachBtag)
+        if isComponentAccumulatorCfg():
+            return JetTLAMenuSequenceCfg(flags, jetsIn=jetInputCollectionName, attachBtag=attachBtag)
+        else:
+            return menuSequenceCAToGlobalWrapper(JetTLAMenuSequenceCfg, flags, jetsIn=jetInputCollectionName, attachBtag=attachBtag)
 
 
 def findTLAStep(chainConfig):
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/JetRecoSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/JetRecoSequences.py
index 83ea8285b36383eb250cd7a38bad67096cd7dd25..ef95a9b09af0888e37206fce8acc1dff908329f3 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/JetRecoSequences.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/JetRecoSequences.py
@@ -387,14 +387,14 @@ def jetTrackingRecoSequences(configFlags, RoIs, clustersKey, **jetRecoDict):
 
     return [jetTrkSeq,jetRecoSeq], jetsOut, jetDef
 
-## record event variables (NPV and rho to a TrigCompositeContainer: needed for online-derived calibration
+## record event variables (NPV, mu and rho) to a TrigCompositeContainer: Required for online-derived calibration
 def eventinfoRecordSequence(configFlags, suffix, pvKey, rhoKey_PFlow = 'HLT_Kt4EMPFlowEventShape', rhoKey_EMTopo = 'HLT_Kt4EMTopoEventShape'):
-    eventInfoRecorderAlg = TrigEventInfoRecorderAlgCfg("TrigEventInfoRecorderAlg_jet")
-    eventInfoRecorderAlg.decorateTLA = True #misnomer in this case: just means write our PV&rho event variables to container
-    eventInfoRecorderAlg.trigEventInfoKey = recordable(f"HLT_TCEventInfo_{suffix}")
-    eventInfoRecorderAlg.primaryVertexInputName = pvKey
-    eventInfoRecorderAlg.RhoKey_PFlow = rhoKey_PFlow
-    eventInfoRecorderAlg.RhoKey_EMTopo = rhoKey_EMTopo
+    trig_evt_info_key = recordable(f"HLT_TCEventInfo_{suffix}")
+    eventInfoRecorderAlg = algorithmCAToGlobalWrapper(TrigEventInfoRecorderAlgCfg, configFlags,
+                                                      name=f"TrigEventInfoRecorderAlg_{suffix}",
+                                                      decorateTLA=True,
+                                                      trigEventInfoKey=trig_evt_info_key, primaryVertexInputName=pvKey,
+                                                      RhoKey_EMTopo=rhoKey_EMTopo, RhoKey_PFlow=rhoKey_PFlow)
     recordSeq = parOR(f"TrigEventInfoRecorderSeq_{suffix}", [eventInfoRecorderAlg])
     return recordSeq 
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/JetTLASequenceConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/JetTLASequenceConfig.py
new file mode 100644
index 0000000000000000000000000000000000000000..17c0fd122f450df941dd77e403b05a268aca4897
--- /dev/null
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/JetTLASequenceConfig.py
@@ -0,0 +1,53 @@
+# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
+
+from AthenaConfiguration.ComponentFactory import CompFactory
+from AthenaConfiguration.AccumulatorCache import AccumulatorCache
+from TriggerMenuMT.HLT.Config.MenuComponents import MenuSequenceCA, SelectionCA, InEventRecoCA
+from TrigEDMConfig.TriggerEDMRun3 import recordable
+from TrigGenericAlgs.TrigGenericAlgsConfig import TrigEventInfoRecorderAlgCfg
+from TrigHLTJetHypo.TrigJetHypoToolConfig import trigJetTLAHypoToolFromDict
+
+@AccumulatorCache
+def JetTLASequenceCfg(flags, jetsIn):
+
+    ## add the InputMaker (event context)    
+    tlaJetInputMakerAlg = CompFactory.InputMakerForRoI("IMTLAJets_"+jetsIn)#,RoIsLink="initialRoI")
+    tlaJetInputMakerAlg.RoITool = CompFactory.ViewCreatorPreviousROITool()
+    tlaJetInputMakerAlg.mergeUsingFeature = True
+    
+    # configure an instance of TrigEventInfoRecorderAlg
+    recoAcc = InEventRecoCA("JetTLARecoSeq_"+jetsIn,inputMaker=tlaJetInputMakerAlg)
+    eventInfoRecorderAlgCfg = TrigEventInfoRecorderAlgCfg(flags, name="TrigEventInfoRecorderAlg_TLA",
+                                                          decorateTLA=True,
+                                                          trigEventInfoKey=recordable("HLT_TCEventInfo_TLA"),
+                                                          primaryVertexInputName="HLT_IDVertex_FS",
+                                                         )
+    recoAcc.mergeReco(eventInfoRecorderAlgCfg)
+
+    return recoAcc
+
+@AccumulatorCache
+def JetTLAMenuSequenceCfg( flags, jetsIn, attachBtag=True ):
+    
+    jetsOut = recordable(jetsIn+"_TLA")
+    # retrieves the sequence
+    recoAcc = JetTLASequenceCfg(flags, jetsIn=jetsIn)
+    #  add the hypo
+    hypo = CompFactory.TrigJetTLAHypoAlg("TrigJetTLAHypoAlg_"+jetsIn) 
+    hypo.AttachBtag = attachBtag  # avoid attaching btag if creating EMTopo Jets with no tracking
+    btagJetTool = CompFactory.TrigBtagTLATool("BtagTLATool_"+jetsIn)
+
+    if hypo.AttachBtag:
+        btagJetTool.TLAOutputBTaggingCollection = recordable(jetsOut+"_BTagging")
+
+    hypo.BtagJetTool = btagJetTool
+    hypo.TLAOutputName = jetsOut
+
+    selAcc = SelectionCA("TrigJetTLAMainSeq_"+jetsIn)
+    selAcc.mergeReco(recoAcc)
+    selAcc.addHypoAlgo(hypo)
+
+    return MenuSequenceCA( flags,
+                           selAcc,
+                           HypoToolGen = trigJetTLAHypoToolFromDict
+                         )
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/JetTLASequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/JetTLASequences.py
deleted file mode 100644
index 3c3f71c95c126bb392ed0c5d974438e4e91ee8fb..0000000000000000000000000000000000000000
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/JetTLASequences.py
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
-
-from TriggerMenuMT.HLT.Config.MenuComponents import RecoFragmentsPool, MenuSequence
-from AthenaCommon.CFElements import seqAND
-from AthenaConfiguration.ComponentFactory import CompFactory
-from TrigEDMConfig.TriggerEDMRun3 import recordable
-from TrigGenericAlgs.TrigGenericAlgsConfig import TrigEventInfoRecorderAlgCfg
-
-#from GaudiKernel.Constants import (VERBOSE, DEBUG, INFO, WARNING, ERROR, FATAL)
-
-
-
-def TLAJetSequence (flags, jetsIn):
-    
-    ## add the InputMaker (event context)    
-    tlaJetInputMakerAlg = CompFactory.InputMakerForRoI("IMTLAJets_"+jetsIn)#,RoIsLink="initialRoI")
-    tlaJetInputMakerAlg.RoITool = CompFactory.ViewCreatorPreviousROITool()
-    tlaJetInputMakerAlg.mergeUsingFeature = True
-    
-    # configure an instance of TrigEventInfoRecorderAlg
-    
-    eventInfoRecorderAlgCfg = TrigEventInfoRecorderAlgCfg("TrigEventInfoRecorderAlg_TLA")
-    eventInfoRecorderAlgCfg.decorateTLA = True
-    eventInfoRecorderAlgCfg.trigEventInfoKey = recordable("HLT_TCEventInfo_TLA")
-    eventInfoRecorderAlgCfg.primaryVertexInputName = "HLT_IDVertex_FS"
-
-
-
-    tlaJetAthSequence = seqAND( "TLAJetAthSequence_"+jetsIn, [tlaJetInputMakerAlg, eventInfoRecorderAlgCfg] )
-    jetsOut = recordable(jetsIn+"_TLA")
-    return (tlaJetAthSequence, tlaJetInputMakerAlg, jetsOut)
-
-
-def TLAJetMenuSequence( flags, jetsIn, attachBtag=True ):
-    
-    # retrieves the sequence
-    (tlaJetAthSequence, tlaJetInputMakerAlg, jetsOut) = RecoFragmentsPool.retrieve(TLAJetSequence, flags, jetsIn=jetsIn)  
-    #  add the hypo
-    from TrigHLTJetHypo.TrigHLTJetHypoConf import TrigJetTLAHypoAlg
-    from TrigHLTJetHypo.TrigJetHypoToolConfig import trigJetTLAHypoToolFromDict
-
-    hypo = TrigJetTLAHypoAlg("TrigJetTLAHypoAlg_"+jetsIn) 
-    btagJetTool = CompFactory.TrigBtagTLATool("BtagTLATool_"+jetsIn)
-    hypo.AttachBtag = attachBtag  # avoid attaching btag if creating EMTopo Jets with no tracking
-    if hypo.AttachBtag:
-        btagJetTool.TLAOutputBTaggingCollection = recordable(jetsOut+"_BTagging")
-    hypo.BtagJetTool = btagJetTool
-
-    hypo.TLAOutputName = jetsOut
-
-    return MenuSequence( flags,
-                         Sequence    = tlaJetAthSequence,
-                         Maker       = tlaJetInputMakerAlg,
-                         Hypo        = hypo,
-                         HypoToolGen = trigJetTLAHypoToolFromDict
-                         )
-
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/docs/ModuleOverview.md b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/docs/ModuleOverview.md
index d8b3735b42c56cc61cfb7409b71846a338987c61..3fc782b6689e13a485ae654e6c305f77c0de94dd 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/docs/ModuleOverview.md
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/docs/ModuleOverview.md
@@ -152,7 +152,7 @@ The following possible types of `ChainStep` are defined:
 2. Calo Reco ChainStep: a step that performs calo (cell+topocluster) reco with a passthrough hypo, which should be followed by a Tracking Hypo ChainStep. No jets are reconstructed.
 3. Calo Presel ChainStep: a step that performs calo reco with a preselection hypo, which should be followed by a Tracking Hypo ChainStep. Calo jets will be reconstructed and used as input to the preselection hypo. The preselection criteria are determined from the "preselNjX" entry in the chain dictionary.
 4. Tracking Hypo ChainStep: a step that performs (FullScan) tracking reco, possibly including Particle Flow, then reconstructs jets with tracks, and performs the final hypo selection on these. Must follow either a Calo Reco or a Calo Presel ChainStep.
-5. TLA ChainStep: This step is appended for TLA chains, following the terminal hypo (calo or tracking). It performs no selection, and only flags a subset of the reconstructed jets to be written to file. Configuration for this is in `JetTLASequences.py`
+5. TLA ChainStep: This step is appended for TLA chains, following the terminal hypo (calo or tracking). It performs no selection, and only flags a subset of the reconstructed jets to be written to file. Configuration for this is in `JetTLASequenceConfig.py`
 
 [JetMenuSequences](../JetMenuSequences.py)
 -----
@@ -205,7 +205,7 @@ For preselection steps, the default `trigJetHypoToolFromDict` function is wrappe
 
 Helper functions to configure the jet tracking instance and to define track-related modifiers and collections within the jet domain.
 
-[JetTLASequences](../JetTLASequences.py)
+[JetTLASequenceConfig](../JetTLASequenceConfig.py)
 -----
 
 Helper functions to configure the TLA jet sequence.
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Dev_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Dev_pp_run3_v1.py
index 52bf015d33abdbc92d50d671d5bf7ed95a801302..e750e70c991286d5e6a774decb55cfab7cf391a7 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Dev_pp_run3_v1.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Dev_pp_run3_v1.py
@@ -78,7 +78,6 @@ def getDevSignatures():
         ChainProp(name='HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan30_L110DR-MU14FCH-MU5VF', l1SeedThresholds=['MU14FCH','FSNOSEED'],   groups=PrimaryL1MuGroup+MultiMuonGroup+Topo2Group),
         ChainProp(name='HLT_mu20_msonly_iloosems_mu6noL1_msonly_nscan40_L110DR-MU14FCH-MU5VF', l1SeedThresholds=['MU14FCH','FSNOSEED'],   groups=PrimaryL1MuGroup+MultiMuonGroup+Topo2Group),
 
-
         #ATR-26727 - low mass Drell-Yan triggers
         ChainProp(name='HLT_2mu4_7invmAA9_L12MU3VF', l1SeedThresholds=['MU3VF'], groups=MultiMuonGroup+SupportGroup+['RATE:CPS_2MU3VF']),
         ChainProp(name='HLT_2mu4_11invmAA60_L12MU3VF', l1SeedThresholds=['MU3VF'], groups=MultiMuonGroup+SupportGroup+['RATE:CPS_2MU3VF']),
@@ -122,6 +121,18 @@ def getDevSignatures():
         # electron forward triggers (keep this only for dev now)
         #ChainProp(name='HLT_e30_etcut_fwd_L1EM22VHI', groups=SingleElectronGroup),
 
+        # ATR-27156 Phase-1
+        # dnn chains
+        ChainProp(name='HLT_e26_dnnloose_L1EM22VHI', groups=SupportLegGroup+SingleElectronGroup+['RATE:CPS_EM22VHI'], monGroups=['egammaMon:t0_tp']),
+        ChainProp(name='HLT_e26_dnnmedium_L1EM22VHI', groups=SupportLegGroup+SingleElectronGroup+['RATE:CPS_EM22VHI'], monGroups=['egammaMon:t0_tp']),
+        ChainProp(name='HLT_e26_dnntight_L1EM22VHI', groups=PrimaryLegGroup+SingleElectronGroup, monGroups=['egammaMon:t0_tp']),
+        ChainProp(name='HLT_e26_dnntight_ivarloose_L1EM22VHI', groups=PrimaryLegGroup+SingleElectronGroup, monGroups=['egammaMon:t0']),
+        ChainProp(name='HLT_e60_dnnmedium_L1EM22VHI', groups=PrimaryLegGroup+SingleElectronGroup, monGroups=['egammaMon:t0_tp']),
+        ChainProp(name='HLT_e140_dnnloose_L1EM22VHI', groups=PrimaryLegGroup+SingleElectronGroup, monGroups=['egammaMon:t0_tp']),
+        # test 
+        ChainProp(name='HLT_e5_etcut_L1eEM5' , groups=SingleElectronGroup+SupportPhIGroup+['RATE:CPS_eEM5']+['PS:NoBulkMCProd']),
+
+
         #ATR-22749
         ChainProp(name='HLT_2e5_lhvloose_nogsf_bBeeM6000_L12EM3', l1SeedThresholds=['EM3'], stream=['BphysDelayed'], groups=BphysElectronGroup+DevGroup),
         ChainProp(name='HLT_e9_lhvloose_e5_lhvloose_nogsf_bBeeM6000_L1BPH-0M9-EM7-EM5', l1SeedThresholds=['EM7','EM3'], stream=['BphysDelayed'], groups=BphysElectronGroup+DevGroup+LegacyTopoGroup),
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/MC_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/MC_pp_run3_v1.py
index 930a977381eae50d1c1edceccf11f2e9ba3b23eb..40b4fd6849155078fbdab99fb9e8e5533168b043 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/MC_pp_run3_v1.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/MC_pp_run3_v1.py
@@ -165,8 +165,6 @@ def getMCSignatures():
         ChainProp(name='HLT_e26_etcut_L1EM22VHI', groups=SingleElectronGroup),
         ChainProp(name='HLT_e26_lhtight_L1EM22VHI', groups=SingleElectronGroup,monGroups=['egammaMon:t0_tp']),
         ChainProp(name='HLT_e26_lhtight_ivarloose_L1EM22VH', groups=SingleElectronGroup),
-        ChainProp(name='HLT_e26_lhtight_ivarloose_L1eEM26', groups=SingleElectronGroup,monGroups=['egammaMon:t0_tp']),
-        ChainProp(name='HLT_e26_lhtight_ivarloose_L1eEM26T', groups=SingleElectronGroup),
 
         # Ringer development / validation also ATR-24384
         ChainProp(name='HLT_g20_loose_ringer_L1EM15VHI', groups=SinglePhotonGroup,monGroups=['egammaMon:shifter']),
@@ -176,6 +174,16 @@ def getMCSignatures():
         ChainProp(name='HLT_g20_loose_L1EM15VHI',  groups=SinglePhotonGroup,monGroups=['egammaMon:shifter']),
         ChainProp(name='HLT_g20_medium_L1EM15VHI', groups=SinglePhotonGroup,monGroups=['egammaMon:shifter']),
         
+        #  ATR-27156
+        #  Migration of legacy EM seeded items to Phase 1 eEM seeded - EGamma chains
+        ChainProp(name='HLT_e26_lhtight_ivarloose_nogsf_L1EM22VHI', groups=SupportLegGroup+SingleElectronGroup+['RATE:CPS_EM22VHI']),
+        ChainProp(name='HLT_e26_lhtight_ivarloose_nogsf_L1eEM26M', groups=SupportPhIGroup+SingleElectronGroup+['RATE:CPS_eEM26M']), #Phase-1
+        ChainProp(name='HLT_e60_lhmedium_nogsf_L1EM22VHI', groups=SupportLegGroup+SingleElectronGroup+['RATE:CPS_EM22VHI']),
+        ChainProp(name='HLT_e60_lhmedium_nogsf_L1eEM26M', groups=SupportPhIGroup+SingleElectronGroup+['RATE:CPS_eEM26M']), #Phase-1
+        ChainProp(name='HLT_g25_tight_icalotight_L1EM20VH', groups=SupportLegGroup+SinglePhotonGroup+['RATE:CPS_EM20VH']),
+        ChainProp(name='HLT_g25_tight_icalotight_L1eEM24L', groups=SupportPhIGroup+SinglePhotonGroup+['RATE:CPS_eEM24L']), #Phase-1
+        ChainProp(name='HLT_g25_tight_icalomedium_L1EM20VH', groups=SupportLegGroup+SinglePhotonGroup+['RATE:CPS_EM20VH']),        
+        ChainProp(name='HLT_g25_tight_icalomedium_L1eEM24L', groups=SupportPhIGroup+SinglePhotonGroup+['RATE:CPS_eEM24L']),#Phase-1
         
     ]
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Physics_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Physics_pp_run3_v1.py
index c65f55c39085efb81f430494020cd2a5b82bcb8b..0bf4edbbd6d002e6e8e4db9fade4cdfbccdcef66 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Physics_pp_run3_v1.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/Physics_pp_run3_v1.py
@@ -332,9 +332,19 @@ def setupMenu(menu_name):
 
     chains['Egamma'] += [
         # Electron Chains----------
-        # Phase1 eEM chains
+        # Phase1 eEM chains 
         ChainProp(name='HLT_e26_lhtight_ivarloose_L1eEM26M', stream=[PhysicsStream,'express'], groups=PrimaryPhIGroup+SingleElectronGroup, monGroups=['egammaMon:t0_tp']),
         ChainProp(name='HLT_e26_lhtight_ivarloose_L1eEM26L', groups=PrimaryPhIGroup+SingleElectronGroup, monGroups=['egammaMon:t0_tp']),
+        ChainProp(name='HLT_e26_lhtight_ivarloose_L1eEM26', groups=PrimaryPhIGroup+SingleElectronGroup,monGroups=['egammaMon:t0_tp']),  # Moved from MC ATR-27156
+        ChainProp(name='HLT_e26_lhtight_ivarloose_L1eEM26T', groups=PrimaryPhIGroup+SingleElectronGroup),   # Moved from MC ATR-27156
+
+        # ATR-27156 Phase-1
+        # dnn chains
+        ChainProp(name='HLT_e26_dnntight_ivarloose_L1eEM26M', groups=PrimaryPhIGroup+SingleElectronGroup, monGroups=['egammaMon:t0']),
+        ChainProp(name='HLT_e60_dnnmedium_L1eEM26M', groups=PrimaryPhIGroup+SingleElectronGroup, monGroups=['egammaMon:t0_tp']),
+        ChainProp(name='HLT_e140_dnnloose_L1eEM26M', groups=PrimaryPhIGroup+SingleElectronGroup, monGroups=['egammaMon:t0_tp']),
+
+                   
         # ATR-25512
         ChainProp(name='HLT_e28_lhtight_ivarloose_L1eEM26M', groups=PrimaryPhIGroup+SingleElectronGroup, monGroups=['egammaMon:t0_tp']),
         ChainProp(name='HLT_e28_lhtight_ivarloose_L1eEM26T', groups=PrimaryPhIGroup+SingleElectronGroup, monGroups=['egammaMon:t0_tp']),
@@ -345,12 +355,12 @@ def setupMenu(menu_name):
 
         #--------- primary 1e
         ChainProp(name='HLT_e26_lhtight_ivarmedium_L1EM22VHI', groups=PrimaryLegGroup+SingleElectronGroup, monGroups=['egammaMon:shifter_tp']),
+        ChainProp(name='HLT_e26_lhtight_ivarmedium_L1eEM26M', groups=PrimaryPhIGroup+SingleElectronGroup, monGroups=['egammaMon:shifter_tp']), # Phase-1 ATR-27156
         ChainProp(name='HLT_e26_lhtight_ivartight_L1EM22VHI', groups=PrimaryLegGroup+SingleElectronGroup),
+        ChainProp(name='HLT_e26_lhtight_ivartight_L1eEM26M', groups=PrimaryPhIGroup+SingleElectronGroup), # Phase-1 ATR-27156
         ChainProp(name='HLT_e26_lhtight_ivarloose_L1EM22VHI', stream=[PhysicsStream,'express'], groups=PrimaryLegGroup+SingleElectronGroup, monGroups=['egammaMon:online','egammaMon:shifter_tag','egammaMon:val','caloMon:t0']),
 
-        # ATR-25932
-        ChainProp(name='HLT_e60_lhmedium_nogsf_L1EM22VHI', groups=SupportLegGroup+SingleElectronGroup+['RATE:CPS_EM22VHI']),
-        ChainProp(name='HLT_e26_lhtight_ivarloose_nogsf_L1EM22VHI', groups=SupportLegGroup+SingleElectronGroup+['RATE:CPS_EM22VHI']),
+        # ATR-25932 Moved to MC during ATR-27156
 
         # ATR-25512
         ChainProp(name='HLT_e28_lhtight_ivarloose_L1EM22VHI', stream=[PhysicsStream,'express'], groups=PrimaryLegGroup+SingleElectronGroup, monGroups=['egammaMon:shifter_tp']),
@@ -359,14 +369,6 @@ def setupMenu(menu_name):
         ChainProp(name='HLT_e140_lhloose_L1EM22VHI', groups=PrimaryLegGroup+SingleElectronGroup, monGroups=['egammaMon:shifter_tp', 'caloMon:t0']),
         ChainProp(name='HLT_e300_etcut_L1EM22VHI', groups=PrimaryLegGroup+SingleElectronGroup, monGroups=['egammaMon:shifter', 'caloMon:t0']), 
 
-        # dnn chains
-        ChainProp(name='HLT_e26_dnnloose_L1EM22VHI', groups=SupportLegGroup+SingleElectronGroup+['RATE:CPS_EM22VHI'], monGroups=['egammaMon:t0_tp']),
-        ChainProp(name='HLT_e26_dnnmedium_L1EM22VHI', groups=SupportLegGroup+SingleElectronGroup+['RATE:CPS_EM22VHI'], monGroups=['egammaMon:t0_tp']),
-        ChainProp(name='HLT_e26_dnntight_L1EM22VHI', groups=PrimaryLegGroup+SingleElectronGroup, monGroups=['egammaMon:t0_tp']),
-        ChainProp(name='HLT_e26_dnntight_ivarloose_L1EM22VHI', groups=PrimaryLegGroup+SingleElectronGroup, monGroups=['egammaMon:t0']),
-        ChainProp(name='HLT_e60_dnnmedium_L1EM22VHI', groups=PrimaryLegGroup+SingleElectronGroup, monGroups=['egammaMon:t0_tp']),
-        ChainProp(name='HLT_e140_dnnloose_L1EM22VHI', groups=PrimaryLegGroup+SingleElectronGroup, monGroups=['egammaMon:t0_tp']),
-
         #---------- primary 2e 
         ChainProp(name='HLT_2e17_lhvloose_L12EM15VHI', groups=PrimaryLegGroup+MultiElectronGroup),
         ChainProp(name='HLT_2e24_lhvloose_L12EM20VH', stream=[PhysicsStream], groups=PrimaryLegGroup+MultiElectronGroup),
@@ -402,6 +404,7 @@ def setupMenu(menu_name):
         ChainProp(name='HLT_e20_lhtight_ivarloose_L1ZAFB-25DPHI-eEM18M', l1SeedThresholds=['eEM18M'], groups=PrimaryPhIGroup+SingleElectronGroup+Topo3Group),
         # ATR-25512
         ChainProp(name='HLT_e20_lhtight_ivarloose_L12EM7', l1SeedThresholds=['EM7'], groups=SupportLegGroup+SingleElectronGroup),
+        ChainProp(name='HLT_e20_lhtight_ivarloose_L12eEM9', l1SeedThresholds=['eEM9'], groups=SupportPhIGroup+SingleElectronGroup), # Phase-1 ATR-27156
 
         #------------ support alternative lowest unprescaled 1e
         ChainProp(name='HLT_e24_lhtight_ivarloose_L1EM22VHI', groups=SupportLegGroup+SingleElectronGroup+['RATE:CPS_EM22VHI']),
@@ -409,6 +412,7 @@ def setupMenu(menu_name):
 
         #------------ support noringer of primary 1e
         ChainProp(name='HLT_e26_lhtight_ivarloose_noringer_L1EM22VHI', groups=SupportLegGroup+SingleElectronGroup+['RATE:CPS_EM22VHI']),
+        ChainProp(name='HLT_e26_lhtight_ivarloose_noringer_L1eEM26M', groups=SupportPhIGroup+SingleElectronGroup+['RATE:CPS_eEM26M']),   # Phase-1 ATR-27156 
         # ATR-25512
         ChainProp(name='HLT_e28_lhtight_ivarloose_noringer_L1EM22VHI', groups=SupportLegGroup+SingleElectronGroup+['RATE:CPS_EM22VHI']),
         ChainProp(name='HLT_e60_lhmedium_noringer_L1EM22VHI', groups=SupportLegGroup+SingleElectronGroup+['RATE:CPS_EM22VHI']),
@@ -430,16 +434,25 @@ def setupMenu(menu_name):
         #ATR-26738
         ChainProp(name='HLT_e5_etcut_L1EM3' , groups=SingleElectronGroup+SupportLegGroup+['RATE:CPS_EM3']+['PS:NoBulkMCProd']),
         ChainProp(name='HLT_e10_etcut_L1EM7', groups=SingleElectronGroup+SupportLegGroup+['RATE:CPS_EM7']),
+        ChainProp(name='HLT_e10_etcut_L1eEM9', groups=SingleElectronGroup+SupportPhIGroup+['RATE:CPS_eEM9']),   # Phase-1 ATR-27156
         ChainProp(name='HLT_e15_etcut_L1EM7', groups=SingleElectronGroup+SupportLegGroup+['RATE:CPS_EM7']),
+        ChainProp(name='HLT_e15_etcut_L1eEM9', groups=SingleElectronGroup+SupportPhIGroup+['RATE:CPS_eEM9']),   # Phase-1 ATR-27156
         ChainProp(name='HLT_e20_etcut_L1EM15VHI', groups=SingleElectronGroup+SupportLegGroup+['RATE:CPS_EM15VHI']),
+        ChainProp(name='HLT_e20_etcut_L1eEM18M', groups=SingleElectronGroup+SupportPhIGroup+['RATE:CPS_eEM18M']),   # Phase-1 ATR-27156
         ChainProp(name='HLT_e25_etcut_L1EM15VHI', groups=SingleElectronGroup+SupportLegGroup+['RATE:CPS_EM15VHI']),
+        ChainProp(name='HLT_e25_etcut_L1eEM18M', groups=SingleElectronGroup+SupportPhIGroup+['RATE:CPS_eEM18M']),   # Phase-1 ATR-27156
         ChainProp(name='HLT_e30_etcut_L1EM15VHI', groups=SingleElectronGroup+SupportLegGroup+['RATE:CPS_EM15VHI']),
+        ChainProp(name='HLT_e30_etcut_L1eEM18M', groups=SingleElectronGroup+SupportPhIGroup+['RATE:CPS_eEM18M']),   # Phase-1 ATR-27156
         ChainProp(name='HLT_e40_etcut_L1EM15VHI', groups=SingleElectronGroup+SupportLegGroup+['RATE:CPS_EM15VHI']),
+        ChainProp(name='HLT_e40_etcut_L1eEM18M', groups=SingleElectronGroup+SupportPhIGroup+['RATE:CPS_eEM18M']),   # Phase-1 ATR-27156
         ChainProp(name='HLT_e60_etcut_L1EM22VHI', groups=SingleElectronGroup+SupportLegGroup+['RATE:CPS_EM22VHI']),
+        ChainProp(name='HLT_e60_etcut_L1eEM26M', groups=SingleElectronGroup+SupportPhIGroup+['RATE:CPS_eEM26M']),   # Phase-1 ATR-27156
         ChainProp(name='HLT_e70_etcut_L1EM22VHI', groups=SingleElectronGroup+SupportLegGroup+['RATE:CPS_EM22VHI']),
+        ChainProp(name='HLT_e70_etcut_L1eEM26M', groups=SingleElectronGroup+SupportPhIGroup+['RATE:CPS_eEM26M']),   # Phase-1 ATR-27156
         ChainProp(name='HLT_e80_etcut_L1EM22VHI', groups=SingleElectronGroup+SupportLegGroup+['RATE:CPS_EM22VHI']),
+        ChainProp(name='HLT_e80_etcut_L1eEM26M', groups=SingleElectronGroup+SupportPhIGroup+['RATE:CPS_eEM26M']),   # Phase-1 ATR-27156
         ChainProp(name='HLT_e100_etcut_L1EM22VHI', groups=SingleElectronGroup+SupportLegGroup+['RATE:CPS_EM22VHI']),
-
+        ChainProp(name='HLT_e100_etcut_L1eEM26M', groups=SingleElectronGroup+SupportPhIGroup+['RATE:CPS_eEM26M']),  # Phase-1 ATR-27156
 
 
         #------------ support background studies
@@ -463,16 +476,11 @@ def setupMenu(menu_name):
         ChainProp(name='HLT_e100_lhvloose_L1eEM26M', groups=SupportPhIGroup+SingleElectronGroup+['RATE:CPS_eEM26M']),
         ChainProp(name='HLT_e120_lhvloose_L1eEM26M', stream=[PhysicsStream,'express'], groups=SupportPhIGroup+SingleElectronGroup+['RATE:CPS_eEM26M']),
 
-        #--------------- support low lumi 1e
-        ChainProp(name='HLT_e17_lhvloose_L1EM15VHI', groups=SupportLegGroup+SingleElectronGroup+['RATE:CPS_EM15VHI'],monGroups=['egammaMon:shifter_tp']),
-        ChainProp(name='HLT_e20_lhloose_L1EM15VH', groups=SupportLegGroup+SingleElectronGroup+['RATE:CPS_EM15VH'],monGroups=['egammaMon:shifter_tp']),
-        ChainProp(name='HLT_e20_lhmedium_L1EM15VH', groups=SupportLegGroup+SingleElectronGroup+['RATE:CPS_EM15VH'],monGroups=['egammaMon:shifter_tp']),
-        ChainProp(name='HLT_e20_lhtight_L1EM15VH', groups=SupportLegGroup+SingleElectronGroup+['RATE:CPS_EM15VH'],monGroups=['egammaMon:shifter_tp']),
-        ChainProp(name='HLT_e20_lhtight_ivarloose_L1EM15VH', groups=SupportLegGroup+SingleElectronGroup+['RATE:CPS_EM15VH'],monGroups=['egammaMon:shifter_tp']),
-        ChainProp(name='HLT_e20_lhtight_ivarloose_L1EM15VHI', groups=SupportLegGroup+SingleElectronGroup+['RATE:CPS_EM15VHI'],monGroups=['egammaMon:shifter_tp']),
+        #--------------- support low lumi 1e removed during ATR-27156
 
         #ATR-25727
         ChainProp(name='HLT_e26_lhtight_ivarloose_e7_lhmedium_probe_L1EM22VHI', l1SeedThresholds=['EM22VHI','PROBEEM22VHI'],groups=SupportLegGroup+MultiElectronGroup+['RATE:CPS_EM22VHI']),
+        ChainProp(name='HLT_e26_lhtight_ivarloose_e7_lhmedium_probe_L1eEM26M', l1SeedThresholds=['eEM26M','PROBEeEM26M'],groups=SupportPhIGroup+MultiElectronGroup+['RATE:CPS_eEM26M']), #  Phase-1 ATR-27156
 
         # Photon Chains----------
         #----------- primary 1g
@@ -483,7 +491,6 @@ def setupMenu(menu_name):
         ChainProp(name='HLT_g300_etcut_L1eEM26M', groups=PrimaryPhIGroup+SinglePhotonGroup),
         #----------- primary 2g
         ChainProp(name='HLT_2g20_tight_icaloloose_L12EM15VHI', stream=[PhysicsStream,'express'], groups=PrimaryLegGroup+MultiPhotonGroup), 
-        ChainProp(name='HLT_2g20_tight_L12EM15VHI', stream=[PhysicsStream,'express'], groups=SupportLegGroup+MultiPhotonGroup), 
         ChainProp(name='HLT_2g22_tight_L12EM15VHI', groups=PrimaryLegGroup+MultiPhotonGroup),
         ChainProp(name='HLT_g35_medium_g25_medium_L12EM20VH', stream=[PhysicsStream], l1SeedThresholds=['EM20VH','EM20VH'], groups=PrimaryLegGroup+MultiPhotonGroup),
         ChainProp(name='HLT_2g50_loose_L12EM20VH', groups=PrimaryLegGroup+MultiPhotonGroup),
@@ -504,10 +511,14 @@ def setupMenu(menu_name):
 
         # Non-L1Topo backups
         ChainProp(name='HLT_2g9_loose_25dphiAA_invmAA80_L12EM7', l1SeedThresholds=['EM7'], groups=EOFEgammaLegGroup+MultiPhotonGroup+['RATE:CPS_2EM7']),
+        ChainProp(name='HLT_2g9_loose_25dphiAA_invmAA80_L12eEM9', l1SeedThresholds=['eEM9'], groups=EOFEgammaPhIGroup+MultiPhotonGroup+['RATE:CPS_2eEM9']),  # Phase-1 ATR-27156
         #
-        ChainProp(name='HLT_2g15_tight_25dphiAA_invmAA80_L12EM7', l1SeedThresholds=['EM12'], groups=SupportLegGroup+MultiPhotonGroup+['RATE:CPS_2EM7']),
+        ChainProp(name='HLT_2g15_tight_25dphiAA_invmAA80_L12EM7', l1SeedThresholds=['EM12'], groups=SupportLegGroup+MultiPhotonGroup+['RATE:CPS_2EM7']), 
+        ChainProp(name='HLT_2g15_tight_25dphiAA_invmAA80_L12eEM9', l1SeedThresholds=['eEM15'], groups=SupportPhIGroup+MultiPhotonGroup+['RATE:CPS_2eEM9']), # Phase-1 ATR-27156
         ChainProp(name='HLT_2g15_loose_25dphiAA_invmAA80_L12EM7', l1SeedThresholds=['EM12'], groups=SupportLegGroup+MultiPhotonGroup+['RATE:CPS_2EM7']),
+        ChainProp(name='HLT_2g15_loose_25dphiAA_invmAA80_L12eEM9', l1SeedThresholds=['eEM15'], groups=SupportPhIGroup+MultiPhotonGroup+['RATE:CPS_2eEM9']),  # Phase-1 ATR-27156
         ChainProp(name='HLT_2g15_tight_25dphiAA_L12EM7', l1SeedThresholds=['EM12'], groups=SupportLegGroup+MultiPhotonGroup+['RATE:CPS_2EM7']),
+        ChainProp(name='HLT_2g15_tight_25dphiAA_L12eEM9', l1SeedThresholds=['eEM15'], groups=SupportPhIGroup+MultiPhotonGroup+['RATE:CPS_2eEM9']),   # Phase-1 ATR-27156
 
         # support 2g ATR-23425
         ChainProp(name='HLT_2g20_loose_L12EM15VH', groups=SupportLegGroup+MultiPhotonGroup),
@@ -568,8 +579,7 @@ def setupMenu(menu_name):
 
         #ATR-25764 - adding Photon chains with different isolation WPs
         ChainProp(name='HLT_g25_tight_icaloloose_L1EM20VH', groups=SupportLegGroup+SinglePhotonGroup+['RATE:CPS_EM20VH']),
-        ChainProp(name='HLT_g25_tight_icalomedium_L1EM20VH', groups=SupportLegGroup+SinglePhotonGroup+['RATE:CPS_EM20VH']),
-        ChainProp(name='HLT_g25_tight_icalotight_L1EM20VH', groups=SupportLegGroup+SinglePhotonGroup+['RATE:CPS_EM20VH']),
+        ChainProp(name='HLT_g25_tight_icaloloose_L1eEM24L', groups=SupportPhIGroup+SinglePhotonGroup+['RATE:CPS_eEM24L']),  # Phase-1 ATR-27156
 
         #------- Electron+Photon Chains
         # primary e-g chains: electron + photon stay in the same step - these need to be parallel merged!
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Muon/MuonTLASequenceConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Muon/MuonTLASequenceConfig.py
new file mode 100644
index 0000000000000000000000000000000000000000..15e2c52b5c28e148d561fb97f8d13ed754558e79
--- /dev/null
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Muon/MuonTLASequenceConfig.py
@@ -0,0 +1,53 @@
+#
+#  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
+#
+from AthenaConfiguration.AccumulatorCache import AccumulatorCache
+from TriggerMenuMT.HLT.Config.MenuComponents import MenuSequenceCA, SelectionCA, InEventRecoCA
+from AthenaConfiguration.ComponentFactory import CompFactory
+from TrigEDMConfig.TriggerEDMRun3 import recordable
+from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFMSonlyHypoToolFromDict
+from TrigMuonHypo.TrigMuonHypoMonitoring import TrigMuonTLAHypoMonitoring
+from .MuonRecoSequences import muonNames
+
+def getMuonCollections (chainPart):
+    muNames = muonNames().getNames('RoI')
+    muonName = muNames.EFCBName
+    if 'msonly' in chainPart['msonlyInfo']:
+        muonName = muNames.EFSAName
+
+    return muonName
+
+@AccumulatorCache
+def MuonTLASequenceCfg(flags, muons):
+    
+    ## add the InputMaker (event context)    
+    tlaMuonInputMakerAlg = CompFactory.InputMakerForRoI("IMTLAMuons"+muons)
+    tlaMuonInputMakerAlg.mergeUsingFeature = True
+    tlaMuonInputMakerAlg.RoITool = CompFactory.ViewCreatorPreviousROITool()
+    recoAcc = InEventRecoCA("MuonTLARecoSeq_"+ muons,inputMaker=tlaMuonInputMakerAlg)
+    
+    sequenceOut = recordable(muons+"_TLA")
+
+    return  recoAcc, sequenceOut
+
+@AccumulatorCache
+def MuonTLAMenuSequenceCfg( flags, muChainPart):
+
+    muonsIn = getMuonCollections(muChainPart)    
+
+    # retrieve the sequence
+    (recoAcc, sequenceOut) = MuonTLASequenceCfg(flags, muons=muonsIn)
+
+    #  add the hypo
+    hypo = CompFactory.TrigMuonTLAHypoAlg("TrigMuonTLAHypoAlg_"+muonsIn)  
+    hypo.TLAOutputName = sequenceOut  
+    hypo.MonTool = TrigMuonTLAHypoMonitoring(flags, "TrigMuonTLAHypoAlg/")
+
+    selAcc = SelectionCA("TrigMuonTLAMainSeq_"+muonsIn)
+    selAcc.mergeReco(recoAcc)
+    selAcc.addHypoAlgo(hypo)
+
+    return MenuSequenceCA( flags,
+                           selAcc,
+                           HypoToolGen = TrigMuonEFMSonlyHypoToolFromDict
+                         )
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Muon/TLAMuonSequence.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Muon/TLAMuonSequence.py
deleted file mode 100644
index b34270f97b63d09c74e7560c4c279f78e053e27b..0000000000000000000000000000000000000000
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Muon/TLAMuonSequence.py
+++ /dev/null
@@ -1,49 +0,0 @@
-#
-#  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
-#
-from AthenaCommon.CFElements import seqAND
-from TriggerMenuMT.HLT.Config.MenuComponents import RecoFragmentsPool, MenuSequence
-from AthenaConfiguration.ComponentFactory import CompFactory
-from TrigEDMConfig.TriggerEDMRun3 import recordable
-
-def getMuonCollections (chainPart):
-    from .MuonRecoSequences import muonNames
-    muNames = muonNames().getNames('RoI')
-    muonName = muNames.EFCBName
-    if 'msonly' in chainPart['msonlyInfo']:
-        muonName = muNames.EFSAName
-
-    return muonName
-
-def TLAMuonSequence (flags, muons):
-    
-    ## add the InputMaker (event context)    
-    tlaMuonInputMakerAlg = CompFactory.InputMakerForRoI("IMTLAMuons"+muons)
-    tlaMuonInputMakerAlg.mergeUsingFeature = True
-    tlaMuonInputMakerAlg.RoITool = CompFactory.ViewCreatorPreviousROITool()
-    
-    tlaMuonAthSequence = seqAND( "TLAMuonAthSequence"+ muons, [tlaMuonInputMakerAlg] )
-    sequenceOut = recordable(muons+"_TLA")
-    return (tlaMuonAthSequence, tlaMuonInputMakerAlg, sequenceOut)
-
-
-def TLAMuonMenuSequence( flags, muChainPart):
-    muonsIn = getMuonCollections(muChainPart)    
-    # retrieve the sequence via RecoFragmentsPool
-    (tlaMuonAthSequence, tlaMuonInputMakerAlg, sequenceOut) = RecoFragmentsPool.retrieve(TLAMuonSequence, flags, muons=muonsIn)    
-     #  add the hypo
-    from TrigMuonHypo.TrigMuonHypoConf import TrigMuonTLAHypoAlg
-    from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFMSonlyHypoToolFromDict
-    from TrigMuonHypo.TrigMuonHypoMonitoring import TrigMuonTLAHypoMonitoring
-    hypo = TrigMuonTLAHypoAlg("TrigMuonTLAHypoAlg_"+muonsIn)  
-
-    hypo.TLAOutputName = sequenceOut  
-    hypo.MonTool = TrigMuonTLAHypoMonitoring(flags, "TrigMuonTLAHypoAlg/")
-
-    return MenuSequence( flags,
-                         Sequence  = tlaMuonAthSequence,
-                         Maker       = tlaMuonInputMakerAlg,
-                         Hypo        = hypo,
-                         HypoToolGen = TrigMuonEFMSonlyHypoToolFromDict
-                         )
-
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Photon/PrecisionPhotonTLAMenuSequenceConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Photon/PrecisionPhotonTLAMenuSequenceConfig.py
new file mode 100644
index 0000000000000000000000000000000000000000..c6afac34127d46333714a7242f847fd2a573d1ee
--- /dev/null
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Photon/PrecisionPhotonTLAMenuSequenceConfig.py
@@ -0,0 +1,42 @@
+#
+#  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
+#
+from AthenaConfiguration.ComponentFactory import CompFactory
+from AthenaConfiguration.AccumulatorCache import AccumulatorCache
+from TriggerMenuMT.HLT.Config.MenuComponents import MenuSequenceCA, SelectionCA, InEventRecoCA
+from TrigEDMConfig.TriggerEDMRun3 import recordable
+from TrigEgammaHypo.TrigEgammaTLAPhotonHypoTool import TrigEgammaTLAPhotonHypoToolFromDict 
+
+
+@AccumulatorCache
+def PhotonTLASequenceCfg(flags, photonsIn):
+    
+    ## add the InputMaker (event context)    
+    tlaPhotonInputMakerAlg = CompFactory.InputMakerForRoI("IMTLAPhotons", RoIsLink="initialRoI")
+    tlaPhotonInputMakerAlg.RoITool =  CompFactory.ViewCreatorPreviousROITool()
+    tlaPhotonInputMakerAlg.mergeUsingFeature = True
+
+    recoAcc = InEventRecoCA("PhotonTLARecoSeq_"+photonsIn, inputMaker=tlaPhotonInputMakerAlg)
+    
+    sequenceOut = recordable(photonsIn+"_TLA")
+
+    return recoAcc, sequenceOut
+
+@AccumulatorCache
+def PhotonTLAMenuSequenceCfg( flags, photonsIn ):
+    
+    # retrieves the "reco" sequence which only consists of the InputMaker
+    (recoAcc, sequenceOut) = PhotonTLASequenceCfg(flags, photonsIn=photonsIn)
+
+     #  add the hypo
+    hypo = CompFactory.TrigEgammaTLAPhotonHypoAlg("TrigPhotonTLAHypoAlg_"+photonsIn) 
+    hypo.TLAOutputName = sequenceOut
+
+    selAcc = SelectionCA("TrigPhotonTLAMainSeq_"+photonsIn)
+    selAcc.mergeReco(recoAcc)
+    selAcc.addHypoAlgo(hypo)
+
+    return MenuSequenceCA( flags,
+                           selAcc,
+                           HypoToolGen = TrigEgammaTLAPhotonHypoToolFromDict
+                         )
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Photon/PrecisionPhotonTLAMenuSequences.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Photon/PrecisionPhotonTLAMenuSequences.py
deleted file mode 100644
index 6b220d744fdb7c8155ad0ebfdd3c4779263c145a..0000000000000000000000000000000000000000
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Photon/PrecisionPhotonTLAMenuSequences.py
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-#  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
-#
-from AthenaCommon.CFElements import seqAND
-from AthenaConfiguration.ComponentFactory import CompFactory
-#from TrigHypothesis.TrigEgammaHypo import TrigEgammaTLAPhotonFex
-
-from TriggerMenuMT.HLT.Config.MenuComponents import MenuSequence, RecoFragmentsPool
-
-
-def TLAPhotonSequence (flags, photonsIn):
-    
-    ## add the InputMaker (event context)    
-    tlaPhotonInputMakerAlg = CompFactory.InputMakerForRoI("IMTLAPhotons", RoIsLink="initialRoI")
-    tlaPhotonInputMakerAlg.RoITool =  CompFactory.ViewCreatorPreviousROITool()
-    tlaPhotonInputMakerAlg.mergeUsingFeature = True
-    
-    tlaPhotonAthSequence = seqAND( "TLAPhotonAthSequence", [tlaPhotonInputMakerAlg] )
-    sequenceOut = photonsIn+"_TLA"
-    return (tlaPhotonAthSequence, tlaPhotonInputMakerAlg, sequenceOut)
-
-def TLAPhotonMenuSequence( flags, photonsIn, is_probe_leg=False ):
-    
-    # retrieves the sequence, uses RecoFragmentsPool to prevent a duplicate instantiation of the sequence (and the IM algorithm)    
-    (tlaPhotonAthSequence, tlaPhotonInputMakerAlg, sequenceOut) = RecoFragmentsPool.retrieve(TLAPhotonSequence, flags, photonsIn=photonsIn)  
-     #  add the hypo
-    from TrigEgammaHypo.TrigEgammaHypoConf import TrigEgammaTLAPhotonHypoAlg
-    from TrigEgammaHypo.TrigEgammaTLAPhotonHypoTool import TrigEgammaTLAPhotonHypoToolFromDict 
-
-    hypo = TrigEgammaTLAPhotonHypoAlg("TrigPhotonTLAHypoAlg") 
-
-
-    hypo.TLAOutputName = sequenceOut
-
-    return MenuSequence( flags,
-                         Sequence    = tlaPhotonAthSequence,
-                         Maker       = tlaPhotonInputMakerAlg,
-                         Hypo        = hypo,
-                         HypoToolGen = TrigEgammaTLAPhotonHypoToolFromDict,
-                         IsProbe     = is_probe_leg)
-
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py
index a4e4a5228e763d99bc52e5b8ebe5e7a6537c826e..c819d99029caf30bd62d39d5a011fb753a4130ee 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py
@@ -219,6 +219,7 @@ class ItemDef:
         MenuItem('L1_2eEM24L').setLogic(d.eEM24L.x(2) & physcond).setTriggerType(TT.calo)
         MenuItem('L1_3eEM12L').setLogic(d.eEM12L.x(3) & physcond).setTriggerType(TT.calo)
         MenuItem('L1_eEM24L_3eEM12L').setLogic(d.eEM24L & d.eEM12L.x(3) & physcond).setTriggerType(TT.calo)
+        MenuItem('L1_2eEM9').setLogic(d.eEM9.x(2) & physcond).setTriggerType(TT.calo)
 
         # 4xEM
         MenuItem('L1_EM15VH_3EM7'         ).setLogic( d.EM15VH & d.EM7.x(3)      & physcond).setTriggerType( TT.calo )
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1.py
index 6e3c895179c2e95aa271bee3ba42e91c9fa6d71f..b7633a320effd435edf7e7f282a334a82a87a781 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1.py
@@ -54,7 +54,8 @@ def defineMenu():
         # Combined lepton, new calo (for ATR-24182)
         'L1_2eEM18L', 'L1_2eEM18M', 'L1_2eEM24L', 'L1_3eEM12L', 'L1_eEM24L_3eEM12L',
         'L1_eEM18L_MU8F', 'L1_2eEM10L_MU8F',
-
+        # ATR-27156
+        'L1_2eEM9',
         # single tau
         'L1_TAU8', 'L1_TAU12IM',   'L1_TAU20IM', 'L1_TAU40', 'L1_TAU60', 'L1_TAU100',
         'L1_TAU8_EMPTY', 'L1_TAU8_FIRSTEMPTY', 'L1_TAU8_UNPAIRED_ISO', 'L1_TAU40_EMPTY', 'L1_TAU40_UNPAIRED_ISO',
@@ -68,7 +69,8 @@ def defineMenu():
         'L1_eTAU60', 'L1_eTAU80', 'L1_eTAU140',
 
         # multi tau
-        'L1_2TAU8', 'L1_TAU20IM_2TAU12IM', 'L1_TAU60_2TAU40',
+        # tempdisble to release space ATR-27156 'L1_2TAU8', 
+        'L1_TAU20IM_2TAU12IM', 'L1_TAU60_2TAU40',
 
         # multi tau, new calo
         'L1_eTAU80_2eTAU60', 
diff --git a/graphics/VP1/VP1Systems/VP1AODSystems/src/CaloClusterCollectionSettingsButton.cxx b/graphics/VP1/VP1Systems/VP1AODSystems/src/CaloClusterCollectionSettingsButton.cxx
index ebc4d66ef76d9bd5f85f24766092eed60542cfa6..1d346a2d3df253885a9c637b52a9cac07b21b72a 100644
--- a/graphics/VP1/VP1Systems/VP1AODSystems/src/CaloClusterCollectionSettingsButton.cxx
+++ b/graphics/VP1/VP1Systems/VP1AODSystems/src/CaloClusterCollectionSettingsButton.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
 */
 
 // Local
@@ -747,7 +747,7 @@ QPair<bool,double> CaloClusterCollectionSettingsButton::scale() const
   //IParticleCollHandle_CaloCluster* col = dynamic_cast<IParticleCollHandle_CaloCluster*>(m_d->coll);
   if (dynamic_cast<IParticleCollHandle_CaloCluster*>(m_d->coll)) {
 	  std::cout << "col OK! " << std::endl;
-    if ( m_d->coll && highestvisibleenergy < m_d->coll->highestVisibleClusterEnergy() )
+    if ( highestvisibleenergy < m_d->coll->highestVisibleClusterEnergy() )
       highestvisibleenergy = m_d->coll->highestVisibleClusterEnergy();
   }