diff --git a/Calorimeter/CaloRec/python/CaloTopoClusterConfig.py b/Calorimeter/CaloRec/python/CaloTopoClusterConfig.py
index d1a9cd178dbe2d751e77afd5f51128272e14d3e2..78b144a3293ff846bb5e2dcc1d10dea5563251e4 100644
--- a/Calorimeter/CaloRec/python/CaloTopoClusterConfig.py
+++ b/Calorimeter/CaloRec/python/CaloTopoClusterConfig.py
@@ -445,7 +445,7 @@ def CaloTopoClusterCfg(flags, cellsname="AllCalo", clustersname=None, clustersna
 
     from OutputStreamAthenaPool.OutputStreamConfig import addToAOD, addToESD
     toESD = [f"xAOD::CaloClusterContainer#{CaloTopoCluster.ClustersOutputName}",
-             f"xAOD::CaloClusterAuxContainer#{CaloTopoCluster.ClustersOutputName}Aux.",
+             f"xAOD::CaloClusterAuxContainer#{CaloTopoCluster.ClustersOutputName}Aux.-sigmaWidth",
              f"CaloClusterCellLinkContainer#{CaloTopoCluster.ClustersOutputName}_links"]
     toAOD = [f"xAOD::CaloClusterContainer#{CaloTopoCluster.ClustersOutputName}",
              f"CaloClusterCellLinkContainer#{CaloTopoCluster.ClustersOutputName}_links"]
diff --git a/DataQuality/dqm_algorithms/dqm_algorithms/TileTriggerMonitor.h b/DataQuality/dqm_algorithms/dqm_algorithms/TileTriggerMonitor.h
new file mode 100644
index 0000000000000000000000000000000000000000..59e7efecfa9ee1826a61b725f9f4e58f6571daca
--- /dev/null
+++ b/DataQuality/dqm_algorithms/dqm_algorithms/TileTriggerMonitor.h
@@ -0,0 +1,31 @@
+/*
+  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
+*/
+
+/*! \file TileTriggerMonitor.h file declares the dqm_algorithms::TileTriggerMonitor  class.
+ * \author Kyle Lleras
+*/
+
+#ifndef DQM_ALGORITHMS_TileTriggerMonitor_H
+#define DQM_ALGORITHMS_TileTriggerMonitor_H
+
+#include <dqm_core/Algorithm.h>
+#include <string>
+#include <iosfwd>
+
+namespace dqm_algorithms
+{
+	struct TileTriggerMonitor : public dqm_core::Algorithm
+        {
+	  TileTriggerMonitor();
+
+	    //overwrites virtual functions
+	  TileTriggerMonitor * clone( );
+	  dqm_core::Result * execute( const std::string & , const TObject & , const dqm_core::AlgorithmConfig & );
+          using dqm_core::Algorithm::printDescription;
+	  void  printDescription(std::ostream& out);
+
+	};
+}
+
+#endif // DQM_ALGORITHMS_TileTriggerMonitor_H
diff --git a/DataQuality/dqm_algorithms/dqm_algorithms/dqm_algorithmsDict.h b/DataQuality/dqm_algorithms/dqm_algorithms/dqm_algorithmsDict.h
index 0738e22ef1589fb846accf13b6a28946168cd1f6..abe3d1ab24999096f36d57d90eab4b37469fd414 100644
--- a/DataQuality/dqm_algorithms/dqm_algorithms/dqm_algorithmsDict.h
+++ b/DataQuality/dqm_algorithms/dqm_algorithms/dqm_algorithmsDict.h
@@ -161,6 +161,7 @@
 #include "dqm_algorithms/TRTCheckPeakSimple.h"
 #include "dqm_algorithms/TRTHistogramHasNonZeroEntries.h"
 #include "dqm_algorithms/TRTWeightedAverage.h"
+#include "dqm_algorithms/TileTriggerMonitor.h"
 #include "dqm_algorithms/TripleGaussCollFit.h"
 #include "dqm_algorithms/LastBinThresholdAction.h"
 #endif // DQM_ALGORITHMS_DQM_ALGORITHMSDICT_H
diff --git a/DataQuality/dqm_algorithms/dqm_algorithms/selection.xml b/DataQuality/dqm_algorithms/dqm_algorithms/selection.xml
index d14bc4b170fcbb1cb5a221778863b0fc865a5aa5..103c2c1311f1b9387c425d4aea7e2af4c11793ea 100644
--- a/DataQuality/dqm_algorithms/dqm_algorithms/selection.xml
+++ b/DataQuality/dqm_algorithms/dqm_algorithms/selection.xml
@@ -160,5 +160,6 @@
   <class name="dqm_algorithms::TRTCheckPeakSimple"/>
   <class name="dqm_algorithms::TRTHistogramHasNonZeroEntries"/>
   <class name="dqm_algorithms::TRTWeightedAverage"/>
+  <class name="dqm_algorithms::TileTriggerMonitor"/>
   <class name="dqm_algorithms::TripleGaussCollFit"/>
 </lcgdict>
diff --git a/DataQuality/dqm_algorithms/src/TileTriggerMonitor.cxx b/DataQuality/dqm_algorithms/src/TileTriggerMonitor.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..5eefbf9bfc33c95852e201e78791b4953f0bd100
--- /dev/null
+++ b/DataQuality/dqm_algorithms/src/TileTriggerMonitor.cxx
@@ -0,0 +1,90 @@
+/*
+  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
+*/
+
+/*! \file TileTriggerMonitor.cxx checks an individual bin of a 1D histogram wrt to a threshold value and returns dqm_core::Result
+ * \author Kyle Lleras
+ */
+
+#include <dqm_algorithms/TileTriggerMonitor.h>
+#include <dqm_algorithms/tools/AlgorithmHelper.h>
+#include <dqm_core/AlgorithmConfig.h>
+#include <TH1.h>
+#include <TH2.h>
+#include <TF1.h>
+#include <TClass.h>
+#include <ers/ers.h>
+
+
+#include <dqm_core/AlgorithmManager.h>
+
+static dqm_algorithms::TileTriggerMonitor myInstance;
+
+dqm_algorithms::TileTriggerMonitor::TileTriggerMonitor()
+
+{
+  dqm_core::AlgorithmManager::instance().registerAlgorithm("TileTriggerMonitor", this);
+}
+
+dqm_algorithms::TileTriggerMonitor * 
+dqm_algorithms::TileTriggerMonitor::clone()
+{
+  
+  return new TileTriggerMonitor();
+}
+
+
+dqm_core::Result *
+dqm_algorithms::TileTriggerMonitor::execute(const std::string & name,
+					const TObject & object, 
+					const dqm_core::AlgorithmConfig & config)
+{  
+  const TH1 * histogram;
+  if( object.IsA()->InheritsFrom( "TH1" ) ) {
+    histogram = static_cast<const TH1*>(&object);
+    if (histogram->GetDimension() > 2 ){ 
+      throw dqm_core::BadConfig( ERS_HERE, name, "dimension > 2 " );
+    }
+  } else {
+    throw dqm_core::BadConfig( ERS_HERE, name, "does not inherit from TH1" );
+  }
+
+  dqm_core::Result* result = new dqm_core::Result();
+  //Count each category of the bins, if you find a red bin show red, if you find a yellow bin show yellow
+  std::vector<int> range=dqm_algorithms::tools::GetBinRange(histogram, config.getParameters());
+  int worstStatus = -3;
+  for ( int towerNum = range.at(0); towerNum <= range.at(1); ++towerNum ) {
+    double inputCont = histogram->GetBinContent(towerNum);
+    if (inputCont>worstStatus) worstStatus=inputCont; //if you want to have a test for every bin remove the for loop and replace execute with 1D black bin algorithm
+    if (inputCont>0) dqm_algorithms::tools::PublishBin(histogram,towerNum,0,inputCont,result);
+    }
+
+  result->tags_["BinContent"] = worstStatus;
+  if(worstStatus==2) result->status_ = dqm_core::Result::Red;
+  else if(worstStatus==1) result->status_ = dqm_core::Result::Yellow;
+  else if(worstStatus==0) result->status_ = dqm_core::Result::Green;
+  else {
+    result->status_ = dqm_core::Result::Disabled;
+  }
+  
+  return result;
+
+
+}
+
+
+void
+dqm_algorithms::TileTriggerMonitor::printDescription(std::ostream& out)
+{
+  //put optional description for developers
+  out<<"Red bin: The tower has experienced a large spike in rate. The large spike threshold algorithm is written in TilePPMContainerSpike in TriggerMonitor in L1Calo's git repository. \n" << std::endl;
+
+  out<<"Yellow bin: The tower has experienced a spike in rate. The spike threshold algorithm is written in TilePPMContainerSpike in TriggerMonitor in L1Calo's git repository. \n" << std::endl;
+
+  out<<"Black bin: This tower is disabled\n" << std::endl;
+
+  out<<"Optional Parameter, Publish Bin: Publishes the content of the bins that are different than result." << std::endl;
+
+  
+}
+
diff --git a/DataQuality/dqm_algorithms/workbench/TestTrigger.C b/DataQuality/dqm_algorithms/workbench/TestTrigger.C
new file mode 100644
index 0000000000000000000000000000000000000000..a727c2c09a6e2c553a87a89cb5a56caf0bb9a3db
--- /dev/null
+++ b/DataQuality/dqm_algorithms/workbench/TestTrigger.C
@@ -0,0 +1,24 @@
+/*
+  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+*/
+
+#include<map>
+#include<vector>
+#include<string>
+
+dqm_core::Result * TestTrigger()
+{   
+    dqm_algorithms::TileTriggerMonitor * algorithm = new dqm_algorithms::TileTriggerMonitor();
+
+    TH1F *histogram=new TH1F("histogram","histogram",3,0,3);
+    histogram->SetBinContent(2,2);
+    histogram->SetBinContent(3,-1);
+
+   dqm_core::test::DummyAlgorithmConfig *aconfig = new dqm_core::test::DummyAlgorithmConfig(histogram);
+    aconfig->addParameter("XBin", 3);
+    
+    dqm_core::Result * result = algorithm->execute( "test", *histogram, *aconfig);
+    std::cout << "Result " << result->status_<< std::endl;    
+    return result;
+
+}
diff --git a/InnerDetector/InDetConfig/python/ITkTrackOutputConfig.py b/InnerDetector/InDetConfig/python/ITkTrackOutputConfig.py
index 6043656df94594a3afffa5133ed2c355295a4818..c25e9a0d07a73acdb6866fb64379aa5bd3c6a267 100644
--- a/InnerDetector/InDetConfig/python/ITkTrackOutputConfig.py
+++ b/InnerDetector/InDetConfig/python/ITkTrackOutputConfig.py
@@ -12,7 +12,7 @@ def ITkTrackRecoOutputCfg(flags, extensions_list=None):
     toESD = []
 
     # excluded track aux data
-    excludedAuxData = ('-clusterAssociation.-TTVA_AMVFVertices_forReco'
+    excludedAuxData = ('-clusterAssociation.-TTVA_AMVFVertices_forReco.-AssoClustersUFO'
                        '.-TTVA_AMVFWeights_forReco')
     # remove track decorations used internally by FTAG software
     excludedAuxData += '.-'.join([''] + FTAG_AUXDATA)
diff --git a/InnerDetector/InDetConfig/python/InDetTrackOutputConfig.py b/InnerDetector/InDetConfig/python/InDetTrackOutputConfig.py
index 9ab0c68abd13e6ebba9a1584be7ae10f47e92e8b..6d4bdc588cc5f266d07fea0f7763cd6b7ae06726 100644
--- a/InnerDetector/InDetConfig/python/InDetTrackOutputConfig.py
+++ b/InnerDetector/InDetConfig/python/InDetTrackOutputConfig.py
@@ -29,7 +29,7 @@ def InDetTrackRecoOutputCfg(flags, extensions_list=None):
     toESD = []
 
     # excluded track aux data
-    excludedAuxData = ('-clusterAssociation.-TTVA_AMVFVertices_forReco'
+    excludedAuxData = ('-clusterAssociation.-TTVA_AMVFVertices_forReco.-AssoClustersUFO'
                        '.-TTVA_AMVFWeights_forReco')
     # remove track decorations used internally by FTAG software
     excludedAuxData += '.-'.join([''] + FTAG_AUXDATA)
diff --git a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/STgcClusterization/src/STgcClusterBuilderCommon.cxx b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/STgcClusterization/src/STgcClusterBuilderCommon.cxx
index 2f2a7348d441fc25d826e80c86b4ded2c2d51d7d..0c2c4253a2f4ec785f0f8b178719f806dfe1f2da 100644
--- a/MuonSpectrometer/MuonReconstruction/MuonDataPrep/STgcClusterization/src/STgcClusterBuilderCommon.cxx
+++ b/MuonSpectrometer/MuonReconstruction/MuonDataPrep/STgcClusterization/src/STgcClusterBuilderCommon.cxx
@@ -340,10 +340,18 @@ std::optional<Muon::STgcClusterPosition> Muon::STgcClusterBuilderCommon::caruana
     return std::nullopt;
   }
   
+  
+  Amg::Vector3D globalClusterPos {detEl->surface(clusterId).transform()*Amg::Vector3D{reconstructedPosX, 0,0}}; 
+  Amg::Vector3D clusDir{ NswClustering::toLocal(detEl->surface(clusterId), globalClusterPos) };
+  
   NswErrorCalibData::Input errorCalibIn{};
   errorCalibIn.stripId = clusterId;
   errorCalibIn.clusterAuthor = static_cast<unsigned>(sTgcPrepData::Author::Caruana);
-  errorCalibIn.clusterError = std::sqrt(sigmaSq);
+  errorCalibIn.clusterError = std::sqrt(sigmaSq); 
+  errorCalibIn.locPhi = clusDir.phi();
+  errorCalibIn.locTheta = clusDir.theta();
+  errorCalibIn.localPos = Amg::Vector2D{reconstructedPosX, 0};
+  errorCalibIn.clusterSize = cluster.size();
 
   const double localUncertainty = m_errorCalibData.clusterUncertainty(errorCalibIn);
 
diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/python/L1CALOCore.py b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/python/L1CALOCore.py
index 3042b5deb6c4e8626672e66bf043e54fb829aebf..82940c1db59e51c898bb2f20e85fdae3b6e52143 100644
--- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/python/L1CALOCore.py
+++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkL1Calo/python/L1CALOCore.py
@@ -228,6 +228,7 @@ def L1CALOCoreCfg(flags, deriv='L1CALO1', **kwargs):
          "TauJets":"xAOD::TauJetContainer", "TauJetsAux":"xAOD::TauJetAuxContainer"}
     )
     AllVariables += ["AntiKt4EMPFlowJets","AntiKt10LCTopoJets","Muons","Photons"]
+    AllVariables += ["AntiKt10UFOCSSKSoftDropBeta100Zcut10Jets"]
     # TauJets require smart slimming in order not to cause issues
     SmartCollections += ["TauJets"]
 
diff --git a/Reconstruction/Jet/JetRecConfig/python/JetRecoSteering.py b/Reconstruction/Jet/JetRecConfig/python/JetRecoSteering.py
index 8b122207dc6874f008238f261f1b016ad1aaa890..38469dc67982b150cccd4a6db2bb1428046afaf3 100644
--- a/Reconstruction/Jet/JetRecConfig/python/JetRecoSteering.py
+++ b/Reconstruction/Jet/JetRecConfig/python/JetRecoSteering.py
@@ -1,7 +1,7 @@
 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from JetRecConfig.StandardSmallRJets import AntiKt4EMPFlow, AntiKt4LCTopo, AntiKt4EMTopo, AntiKt4Truth
-from JetRecConfig.StandardLargeRJets import AntiKt10LCTopo_noVR
+from JetRecConfig.StandardLargeRJets import AntiKt10LCTopo_noVR, AntiKt10UFOCSSKSoftDrop_trigger
 from JetRecConfig.JetRecConfig import JetRecCfg
 
 def addTruthPileupJetsToOutputCfg(flags, toAOD=True, toESD=True):
@@ -64,9 +64,8 @@ def JetRecoSteeringCfg(flags):
     result = ComponentAccumulator()
     
     # the Standard list of jets to run :
-    jetdefs = [AntiKt4EMTopo, AntiKt4EMPFlow, AntiKt4LCTopo, AntiKt4Truth, AntiKt10LCTopo_noVR]
+    jetdefs = [AntiKt4EMTopo, AntiKt4EMPFlow, AntiKt4LCTopo, AntiKt4Truth, AntiKt10LCTopo_noVR, AntiKt10UFOCSSKSoftDrop_trigger]
 
-                   
     from JetRecConfig.JetConfigFlags import jetInternalFlags
     # We're in Reco job : propagate this info to the runIII jet config
     # (see JetConfigFlags.py for motivations on this way of doing)
@@ -81,6 +80,7 @@ def JetRecoSteeringCfg(flags):
     if flags.Output.doWriteAOD and flags.Jet.WriteToAOD:
         result.merge(addJetsToOutputCfg(flags, jetdefs, toAOD=True, toESD=False))
     if flags.Output.doWriteESD:
+        jetdefs.remove(AntiKt10UFOCSSKSoftDrop_trigger)
         result.merge(addJetsToOutputCfg(flags, jetdefs, toAOD=False, toESD=True))
 
     return result
diff --git a/Reconstruction/egamma/egammaConfig/python/egammaConfigFlags.py b/Reconstruction/egamma/egammaConfig/python/egammaConfigFlags.py
index b15eac31b0aad4c11518df28f5827e28184e596a..42d756836f30bc046acca69787f1d6fe56db97a5 100644
--- a/Reconstruction/egamma/egammaConfig/python/egammaConfigFlags.py
+++ b/Reconstruction/egamma/egammaConfig/python/egammaConfigFlags.py
@@ -134,7 +134,7 @@ def createEgammaConfigFlags():
 
     egcf.addFlag("Egamma.Keys.Output.ForwardClusters",
                  'ForwardElectronClusters')
-    egcf.addFlag("Egamma.Keys.Output.ForwardClustersSuppESD", '-SisterCluster')
+    egcf.addFlag("Egamma.Keys.Output.ForwardClustersSuppESD", '-SisterCluster.-sigmaWidth')
     egcf.addFlag("Egamma.Keys.Output.ForwardClustersSuppAOD",
                  lambda prevFlags: (
                      prevFlags.Egamma.Keys.Output.ForwardClustersSuppESD))
diff --git a/TileCalorimeter/TileTBRec/TileTBRec/TileDigitsGainFilter.h b/TileCalorimeter/TileTBRec/TileTBRec/TileDigitsGainFilter.h
index f85225669a307ad07ec44f92efcec0789e47fdf5..baded741db5b4cf7293bb8201d002bc112e25b12 100644
--- a/TileCalorimeter/TileTBRec/TileTBRec/TileDigitsGainFilter.h
+++ b/TileCalorimeter/TileTBRec/TileTBRec/TileDigitsGainFilter.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
 */
 
 //****************************************************************************
@@ -25,39 +25,43 @@
 #ifndef TILETBREC_TILEDIGITSGAINFILTER_H
 #define TILETBREC_TILEDIGITSGAINFILTER_H
 
-#include "AthenaBaseComps/AthAlgorithm.h"
-#include "GaudiKernel/ToolHandle.h"
+#include "TileEvent/TileDigitsContainer.h"
 
-class TileHWID;
+#include "AthenaBaseComps/AthReentrantAlgorithm.h"
+#include "StoreGate/ReadHandleKey.h"
+#include "StoreGate/WriteHandleKey.h"
 
-#include <string>
-#include <vector>
+class TileHWID;
 
-/** 
+/**
  @class TileDigitsGainFilter
  @brief This algorithm copies TileDigits from input container to output container
  */
-class TileDigitsGainFilter: public AthAlgorithm {
+class TileDigitsGainFilter: public AthReentrantAlgorithm {
   public:
     // Constructor
-    TileDigitsGainFilter(const std::string& name, ISvcLocator* pSvcLocator);
+    using AthReentrantAlgorithm::AthReentrantAlgorithm;
 
     //Destructor 
-    virtual ~TileDigitsGainFilter();
+    virtual ~TileDigitsGainFilter() = default;
 
     //Gaudi Hooks
     StatusCode initialize() override; //!< initialize method
-    StatusCode execute() override;    //!< execute method
+    StatusCode execute(const EventContext& ctx) const override;    //!< execute method
     StatusCode finalize() override;   //!< finalize method
 
   private:
 
-    const TileHWID*    m_tileHWID;
+    SG::ReadHandleKey<TileDigitsContainer> m_inputContainerKey{this,
+        "InputDigitsContainer", "TileDigitsCnt", "Input Tile digits container key"};
+
+    SG::WriteHandleKey<TileDigitsContainer> m_outputContainerKey{this,
+        "OutputDigitsContainer", "TileDigitsFiltered", "Output Tile digits container key"};
 
-    std::string m_inputContainer;  //!< Name of the input TileDigitsContainer
-    std::string m_outputContainer; //!< Name of the output TileDigitsContainer
+    Gaudi::Property<int> m_threshold{this,
+        "HighGainThreshold", 4095, "Threshold to check overflowes in high gain"};
 
-    int m_threshold;
+    const TileHWID* m_tileHWID{nullptr};
 
 };
 
diff --git a/TileCalorimeter/TileTBRec/src/TileDigitsGainFilter.cxx b/TileCalorimeter/TileTBRec/src/TileDigitsGainFilter.cxx
index 1361f242988dfa92e44860020e48c5f179d84fd8..b9bca4b1381b255bcb336912a158b684c06300e9 100644
--- a/TileCalorimeter/TileTBRec/src/TileDigitsGainFilter.cxx
+++ b/TileCalorimeter/TileTBRec/src/TileDigitsGainFilter.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
 */
 
 //*****************************************************************************
@@ -17,34 +17,17 @@
 
 // Tile includes
 #include "TileTBRec/TileDigitsGainFilter.h"
-#include "TileEvent/TileDigitsContainer.h"
-#include "TileEvent/TileRawChannelContainer.h"
 #include "TileCalibBlobObjs/TileCalibUtils.h"
+#include "TileEvent/TileDigitsContainer.h"
 #include "TileIdentifier/TileHWID.h"
 
 // Atlas includes
 #include "AthContainers/ConstDataVector.h"
-#include "AthenaKernel/errorcheck.h"
+#include "StoreGate/ReadHandle.h"
+#include "StoreGate/WriteHandle.h"
 
 //C++ STL includes
 #include <vector>
-#include <algorithm>
-#include <cstring>
-
-//
-// Constructor
-//
-TileDigitsGainFilter::TileDigitsGainFilter(const std::string& name, ISvcLocator* pSvcLocator)
-  : AthAlgorithm(name, pSvcLocator)
-  , m_tileHWID(nullptr)
-{
-  declareProperty("InputDigitsContainer", m_inputContainer = "TileDigitsCnt");
-  declareProperty("OutputDigitsContainer", m_outputContainer = "TileDigitsFiltered");
-  declareProperty("HighGainThreshold", m_threshold = 4095);
-}
-
-TileDigitsGainFilter::~TileDigitsGainFilter() {
-}
 
 //
 // Alg standard initialize function
@@ -53,8 +36,11 @@ StatusCode TileDigitsGainFilter::initialize() {
 
   CHECK( detStore()->retrieve(m_tileHWID) );
 
-  ATH_MSG_INFO( "Input digits container: '" << m_inputContainer
-                << "'  output container: '" << m_outputContainer << "'" );
+  ATH_CHECK( m_inputContainerKey.initialize() );
+  ATH_CHECK( m_outputContainerKey.initialize() );
+
+  ATH_MSG_INFO( "Input digits container: '" << m_inputContainerKey
+                << "'  output container: '" << m_outputContainerKey << "'" );
 
 
   ATH_MSG_INFO( "Threshold to check overflowed in HG: " << m_threshold);
@@ -68,15 +54,13 @@ StatusCode TileDigitsGainFilter::initialize() {
 //
 // Begin Execution Phase.
 //
-StatusCode TileDigitsGainFilter::execute() {
+StatusCode TileDigitsGainFilter::execute(const EventContext& ctx) const {
+
+  SG::ReadHandle<TileDigitsContainer> inputContainer(m_inputContainerKey, ctx);
+  ATH_CHECK( inputContainer.isValid() );
 
   // Create new container for filtered digits
   auto outputContainer = std::make_unique<TileDigitsContainer>(false, SG::VIEW_ELEMENTS);
-  
-
-  const TileDigitsContainer* inputContainer(nullptr);
-  CHECK( evtStore()->retrieve(inputContainer, m_inputContainer) );
-
   outputContainer->set_unit(inputContainer->get_unit());
   outputContainer->set_type(inputContainer->get_type());
   outputContainer->set_bsflags(inputContainer->get_bsflags());
@@ -147,11 +131,11 @@ StatusCode TileDigitsGainFilter::execute() {
       }
 
     }
-    CHECK( outputContainer->addCollection (outColl.release()->asDataVector(),
-                                           collIt.hashId()) );
+    ATH_CHECK( outputContainer->addCollection (outColl.release()->asDataVector(), collIt.hashId()) );
   }
 
-  CHECK( evtStore()->record(std::move(outputContainer), m_outputContainer, false) );
+  SG::WriteHandle<TileDigitsContainer> outputDigitsContainer(m_outputContainerKey, ctx);
+  ATH_CHECK( outputDigitsContainer.record(std::move(outputContainer)) );
 
   return StatusCode::SUCCESS;
 }
diff --git a/Tools/WorkflowTestRunner/python/References.py b/Tools/WorkflowTestRunner/python/References.py
index 11f1e4b3f4f4e6848510c058dc6c60eca85222d1..19093469171e6d5f1e9ef97f77fb501d1d22d52d 100644
--- a/Tools/WorkflowTestRunner/python/References.py
+++ b/Tools/WorkflowTestRunner/python/References.py
@@ -25,7 +25,7 @@ references_map = {
     "d1912": "v5",
     # Reco
     "q442": "v50",
-    "q449": "v78",
+    "q449": "v79",
     "q452": "v10",
     "q454": "v16",
     # Derivations
diff --git a/Trigger/TrigAlgorithms/TrigTauRec/src/TrigTauRecMerged.cxx b/Trigger/TrigAlgorithms/TrigTauRec/src/TrigTauRecMerged.cxx
index 2017d9e598c5713a90d55976f624bc237f7bacae..251d9efba24a77db7fa45f9943f9cead26a25a10 100644
--- a/Trigger/TrigAlgorithms/TrigTauRec/src/TrigTauRecMerged.cxx
+++ b/Trigger/TrigAlgorithms/TrigTauRec/src/TrigTauRecMerged.cxx
@@ -14,7 +14,7 @@
 #include "xAODTracking/VertexContainer.h"
 
 #include "xAODJet/Jet.h"
-#include "xAODJet/JetTrigAuxContainer.h"
+#include "xAODJet/JetAuxContainer.h"
 #include "xAODJet/JetContainer.h"
 
 #include "xAODTau/TauJetContainer.h"
@@ -291,9 +291,9 @@ StatusCode TrigTauRecMerged::execute(const EventContext& ctx) const
     }
 
     std::unique_ptr<xAOD::JetContainer> theJetContainer{std::make_unique<xAOD::JetContainer>()};
-    std::unique_ptr<xAOD::JetTrigAuxContainer> theTrigJetAuxContainer{std::make_unique<xAOD::JetTrigAuxContainer>()};
+    std::unique_ptr<xAOD::JetAuxContainer> theJetAuxContainer{std::make_unique<xAOD::JetAuxContainer>()};
 
-    theJetContainer->setStore(theTrigJetAuxContainer.get());
+    theJetContainer->setStore(theJetAuxContainer.get());
 
     xAOD::Jet *aJet = new xAOD::Jet;
 
@@ -343,7 +343,7 @@ StatusCode TrigTauRecMerged::execute(const EventContext& ctx) const
 
     // Save Outputs
     SG::WriteHandle< xAOD::JetContainer > outTauSeedHandle = SG::makeHandle( m_trigtauSeedOutKey,ctx );
-    CHECK( outTauSeedHandle.record( std::move( theJetContainer ), std::move( theTrigJetAuxContainer ) ) );
+    CHECK( outTauSeedHandle.record( std::move( theJetContainer ), std::move( theJetAuxContainer ) ) );
   }
 
   //Check if jetLink is valid for all taus
diff --git a/Trigger/TrigMonitoring/TrigMETMonitoring/python/TrigMETMonitorAlgorithm.py b/Trigger/TrigMonitoring/TrigMETMonitoring/python/TrigMETMonitorAlgorithm.py
index dbf419bb5b4f3d0ea261ee2c3f541b53c3ea2b00..0c79dec07bcbdfbc907e7d50a8458a219cd64ee1 100644
--- a/Trigger/TrigMonitoring/TrigMETMonitoring/python/TrigMETMonitorAlgorithm.py
+++ b/Trigger/TrigMonitoring/TrigMETMonitoring/python/TrigMETMonitorAlgorithm.py
@@ -1,5 +1,5 @@
 #
-#  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
+#  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
 #
 
 '''@file TrigMETMonitoringAlgorithm.py
@@ -224,6 +224,12 @@ def TrigMETMonConfig(inputFlags):
     TrigMETMonChain5Alg.algsHLT = algsHLTChain5
     TrigMETMonChain6Alg.algsHLT = algsHLTChain6
 
+    ## PreSel cut
+    l1MetAlg = 1 #0=legacy,1=jFex,2=gFexJWOJ
+    l1MetCut = 48.0 #50.0,48.0,?
+    TrigMETMonAlg.L1MetAlg = l1MetAlg
+    TrigMETMonAlg.L1MetCut = l1MetCut
+
     ### cell component and status bit
     comp_names = ["PreSamplB", "EMB1", "EMB2", "EMB3", # LAr barrel
                   "PreSamplE", "EME1", "EME2", "EME3", # LAr EM endcap
diff --git a/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.cxx b/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.cxx
index 5344d8e97297b6345816edfc1eb29e1015e2930a..8f06dbdbf67cb9d70d35fbe463a96f8bee039056 100644
--- a/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.cxx
+++ b/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.cxx
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
 */
 #include "LArRecEvent/LArEventBitInfo.h"
 #include "TrigMETMonitorAlgorithm.h"
@@ -674,7 +674,7 @@ StatusCode TrigMETMonitorAlgorithm::fillHistograms( const EventContext& ctx ) co
       }
     }
 
-    // get L1_roiMet_Et for pre-selection
+    // get L1 MET for pre-selection
     float L1_roiMet_Et = 0;
     if ( l1_roi_cont.isValid() ) {
       if ((l1_roi_cont->energyX())>-9e12 && (l1_roi_cont->energyX())<9e12 && (l1_roi_cont->energyY())>-9e12 && (l1_roi_cont->energyY())<9e12) {
@@ -683,6 +683,21 @@ StatusCode TrigMETMonitorAlgorithm::fillHistograms( const EventContext& ctx ) co
            L1_roiMet_Et = std::sqrt(Ex*Ex + Ey*Ey);
       }
     }
+    float L1_jFexMet_Et = 0;
+    if (l1_jFexMet_cont.isValid() && l1_jFexMet_cont->size() > 0) {
+      float L1_met_Ex = 0;
+      float L1_met_Ey = 0;
+      for (const auto l1_jmet: *l1_jFexMet_cont) {
+        L1_met_Ex += l1_jmet->Ex()/Gaudi::Units::GeV;
+        L1_met_Ey += l1_jmet->Ey()/Gaudi::Units::GeV;
+      }
+      L1_jFexMet_Et = std::sqrt(L1_met_Ex*L1_met_Ex + L1_met_Ey*L1_met_Ey);
+    }
+    float L1_gFexJWOJMet_Et = 0;
+
+    float L1_PreSelMet_Et = L1_roiMet_Et;
+    if (m_L1MetAlg == 1) L1_PreSelMet_Et = L1_jFexMet_Et;
+    if (m_L1MetAlg == 2) L1_PreSelMet_Et = L1_gFexJWOJMet_Et;
 
     // access HLT MET values
     for (const std::string& alg : m_algsHLT) {
@@ -795,7 +810,7 @@ StatusCode TrigMETMonitorAlgorithm::fillHistograms( const EventContext& ctx ) co
         float hlt_Ex = hlt_met->ex()/Gaudi::Units::GeV;
         float hlt_Ey = hlt_met->ey()/Gaudi::Units::GeV;
         float hlt_Et = std::sqrt(hlt_Ex*hlt_Ex + hlt_Ey*hlt_Ey);
-        if (L1_roiMet_Et > 50. && !std::isnan(hlt_Et)) {
+        if (L1_PreSelMet_Et > m_L1MetCut && !std::isnan(hlt_Et)) {
           auto met_presel_Et = Monitored::Scalar<float>(alg+"_presel_Et", hlt_Et);
           fill(tool,met_presel_Et);
         }
diff --git a/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.h b/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.h
index f45796ba9024ac0f88962ac4ec3a0429c69baf91..7f3cc426d0ccf5aa2342438471e66f0f931bffaa 100644
--- a/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.h
+++ b/Trigger/TrigMonitoring/TrigMETMonitoring/src/TrigMETMonitorAlgorithm.h
@@ -1,5 +1,5 @@
 /*
-  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
 */
 
 #ifndef TRIGMETMONITORING_TRIGMETMONITORALGORITHM_H
@@ -100,6 +100,9 @@ class TrigMETMonitorAlgorithm : public AthMonitorAlgorithm {
   Gaudi::Property<std::vector<std::string>> m_compNames{this, "compNames", {}, "Calorimeter component names"};
   Gaudi::Property<std::vector<std::string>> m_bitNames{this, "bitNames", {}, "Status bit names"};
 
+  Gaudi::Property<int> m_L1MetAlg{this, "L1MetAlg", 1, "L1 MET algorithm for PreSel"}; //0=lagacy, 1=jFex, 2=gFexJWOJ
+  Gaudi::Property<double> m_L1MetCut{this, "L1MetCut", 50.0, "L1 MET cut for PreSel"};
+
   Gaudi::Property<double> m_electronPtCut{this, "electronPtCut", 0.0, "Electron pt cut for leading electron"};
   Gaudi::Property<double> m_electronEtaCut{this, "electronEtaCut", 0.0, "Electron eta cut for leading electron"};
   Gaudi::Property<double> m_muonPtCut{this, "muonPtCut", 0.0, "Muon pt cut for leading muon"};
diff --git a/Trigger/TrigT1/TrigT1CaloMonitoring/src/JetEfficiencyMonitorAlgorithm.cxx b/Trigger/TrigT1/TrigT1CaloMonitoring/src/JetEfficiencyMonitorAlgorithm.cxx
index 07b41cdeb86b36fcd3f151c1cece3d1e16eb7fcf..54685e9c1c918e8bfe92b65d27366702098c1db4 100644
--- a/Trigger/TrigT1/TrigT1CaloMonitoring/src/JetEfficiencyMonitorAlgorithm.cxx
+++ b/Trigger/TrigT1/TrigT1CaloMonitoring/src/JetEfficiencyMonitorAlgorithm.cxx
@@ -29,7 +29,6 @@ StatusCode JetEfficiencyMonitorAlgorithm::initialize() {
   ATH_CHECK(m_gFexSRJetContainerKey.initialize()); //initizlize gfex sr jets
 
   // TOBs may come from trigger bytestream - renounce from scheduler
-  renounce(m_LRjetKey);
   renounce(m_gFexLRJetContainerKey);
   renounce(m_gFexSRJetContainerKey);
 
@@ -49,7 +48,7 @@ StatusCode JetEfficiencyMonitorAlgorithm::fillHistograms( const EventContext& ct
   //  Retrieve Offline LR Jets from SG
   SG::ReadHandle<xAOD::JetContainer> LRjets(m_LRjetKey,ctx);
   if(!LRjets.isValid()){
-    ATH_MSG_WARNING("Failed to retrieve Offline Large Radius Jet Container");
+    ATH_MSG_WARNING("Failed to retrieve Offline Large Radius Jet Container "<<m_LRjetKey);
     return StatusCode::SUCCESS;
   }
   //  Retrieve gfex SR Jets from SG
diff --git a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py
index 65a456e89475eefb49f8e27abad027d6b2605161..0617c151b052de66292158ef910f49f545e0bb71 100644
--- a/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py
+++ b/Trigger/TriggerCommon/TrigEDMConfig/python/TriggerEDMRun3.py
@@ -710,8 +710,8 @@ TriggerHLTListRun3 = [
     ('TrigRoiDescriptorCollection#HLT_Roi_TauIsoBDT',        'BS ESD AODFULL',  'Tau'),
     ('TrigRoiDescriptorCollection#HLT_Roi_TauIsoBDT_probe',  'BS ESD AODFULL',  'Tau'),
 
-    ('xAOD::JetContainer#HLT_jet_seed',                         'BS ESD', 'Tau', [InViews('tauCaloMVAViews')]),
-    ('xAOD::JetAuxContainer#HLT_jet_seedAux.',                  'BS ESD', 'Tau'),
+    ('xAOD::JetContainer#HLT_jet_seed',                         '', 'Tau', [InViews('tauCaloMVAViews')]),
+    ('xAOD::JetAuxContainer#HLT_jet_seedAux.',                  '', 'Tau'),
 
     # Jet
     ('xAOD::JetContainer#HLT_AntiKt4EMTopoJets_subjesIS',                        'BS ESD AODFULL AODSLIM', 'Jet', [Alias('JetContainerShallowCopy')]),
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 d7d209510fce615cc7157d29ba257e06018b7923..7efb131f69c9eec9a0f30a49644106824bb5f093 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
@@ -313,7 +313,6 @@ def getDevSignatures():
         ChainProp(name='HLT_2j20_2j20_pf_ftf_presel2c20XX2c20b85_DarkJetPEBTLA_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*2, stream=['DarkJetPEBTLA'], groups=DevGroup+MultiJetGroup, monGroups=['tlaMon:shifter']),
         # PEB for HH4b
         ChainProp(name='HLT_2j20_2j20_pf_ftf_presel2c20XX2c20b85_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*2, stream=['Main'], groups=MultiJetGroup+DevGroup, monGroups=['tlaMon:shifter']),
-        ChainProp(name='HLT_2j20_2j20_pf_ftf_presel2c20XX2c20b85_FTagPEBTLA_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*2, stream=['FTagPEBTLA'], groups=MultiJetGroup+DevGroup, monGroups=['tlaMon:shifter']),
         
 
         #
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 a79cf888d258967a31b13a8c881ee51a9abf1054..039a0d3934fa0bd631745673d88269579c709912 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
@@ -1258,6 +1258,8 @@ def setupMenu(menu_name):
         # MultiJet TLA support for intensity ramp up
         ChainProp(name='HLT_2j20_2j20_pf_ftf_presel2c20XX2c20b85_PhysicsTLA_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*2, stream=['TLA'], groups=MultiJetGroup+SupportPhIGroup, monGroups=['tlaMon:shifter']),
         ChainProp(name='HLT_j60_j45_j25_j20_pf_ftf_preselc60XXc45XXc25XXc20_PhysicsTLA_L1jJ85p0ETA21_3jJ40p0ETA25',l1SeedThresholds=['FSNOSEED']*4, stream=['TLA'], groups=MultiJetGroup+SupportPhIGroup, monGroups=['tlaMon:shifter']),
+        # FTag PEB
+        ChainProp(name='HLT_2j20_2j20_pf_ftf_presel2c20XX2c20b85_FTagPEBTLA_L1jJ85p0ETA21_3jJ40p0ETA25', l1SeedThresholds=['FSNOSEED']*2, stream=['FTagPEBTLA'], groups=MultiJetGroup+SupportPhIGroup, monGroups=['tlaMon:shifter']),
 
         # ATR-25512
         ChainProp(name='HLT_j20_pf_ftf_preselj190_PhysicsTLA_L1J100', l1SeedThresholds=['FSNOSEED'], stream=['TLA'], groups=PrimaryLegGroup+SingleJetGroup, monGroups=['tlaMon:shifter']),