diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXByteStream/src/jFexRoiByteStreamTool.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXByteStream/src/jFexRoiByteStreamTool.cxx
index b3bde7ff8007cdffa3397f285f0e3196a16836e3..f0808860ee28f239b9ecce1ff30235f24102338d 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXByteStream/src/jFexRoiByteStreamTool.cxx
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXByteStream/src/jFexRoiByteStreamTool.cxx
@@ -108,6 +108,45 @@ StatusCode jFexRoiByteStreamTool::initialize() {
     return StatusCode::SUCCESS;
 }
 
+StatusCode jFexRoiByteStreamTool::start() {
+    
+    // Retrieve the L1 menu configuration
+    SG::ReadHandle<TrigConf::L1Menu> l1Menu (m_l1MenuKey);
+    ATH_CHECK(l1Menu.isValid());
+
+    try {
+        const auto& thrExtraInfo = l1Menu->thrExtraInfo();
+        const TrigConf::L1ThrExtraInfo_jTAU & thr_jTAU = thrExtraInfo.jTAU(); 
+        const TrigConf::L1ThrExtraInfo_jJ   & thr_jJ   = thrExtraInfo.jJ();  
+        const TrigConf::L1ThrExtraInfo_jLJ  & thr_jLJ  = thrExtraInfo.jLJ(); 
+        const TrigConf::L1ThrExtraInfo_jEM  & thr_jEM  = thrExtraInfo.jEM(); 
+        const TrigConf::L1ThrExtraInfo_jTE  & thr_jTE  = thrExtraInfo.jTE(); 
+        const TrigConf::L1ThrExtraInfo_jXE  & thr_jXE  = thrExtraInfo.jXE();    
+
+        ATH_CHECK(thr_jTAU.isValid());
+        ATH_CHECK(thr_jJ.isValid()  );
+        ATH_CHECK(thr_jLJ.isValid() );
+        ATH_CHECK(thr_jEM.isValid() );
+        ATH_CHECK(thr_jTE.isValid() );
+        ATH_CHECK(thr_jXE.isValid() );
+        
+        m_jTauRes = thr_jTAU.resolutionMeV();
+        m_jJRes   = thr_jJ.resolutionMeV();
+        m_jLJRes  = thr_jLJ.resolutionMeV();
+        m_jEMRes  = thr_jEM.resolutionMeV();
+        m_jXERes  = thr_jXE.resolutionMeV();
+        m_jTERes  = thr_jTE.resolutionMeV();
+    
+    } catch (const std::exception& e) {
+        ATH_MSG_ERROR("Exception reading L1Menu: " << e.what());
+        return StatusCode::FAILURE;
+    }
+
+    return StatusCode::SUCCESS;
+    
+}
+
+
 // BS->xAOD conversion
 StatusCode jFexRoiByteStreamTool::convertFromBS(const std::vector<const ROBF*>& vrobf, const EventContext& ctx) const {
     
@@ -146,17 +185,7 @@ StatusCode jFexRoiByteStreamTool::convertFromBS(const std::vector<const ROBF*>&
     ATH_MSG_DEBUG("Recorded jFexMETRoIContainer with key " << jXEContainer.key());    
     
     
-    // Retrieve the L1 menu configuration
-    SG::ReadHandle<TrigConf::L1Menu> l1Menu (m_l1MenuKey,ctx);
-    ATH_CHECK(l1Menu.isValid());
-    
-    const auto& thrExtraInfo = l1Menu->thrExtraInfo();
-    const TrigConf::L1ThrExtraInfo_jTAU & thr_jTAU = thrExtraInfo.jTAU(); 
-    const TrigConf::L1ThrExtraInfo_jJ   & thr_jJ   = thrExtraInfo.jJ();  
-    const TrigConf::L1ThrExtraInfo_jLJ  & thr_jLJ  = thrExtraInfo.jLJ(); 
-    const TrigConf::L1ThrExtraInfo_jEM  & thr_jEM  = thrExtraInfo.jEM(); 
-    const TrigConf::L1ThrExtraInfo_jTE  & thr_jTE  = thrExtraInfo.jTE(); 
-    const TrigConf::L1ThrExtraInfo_jXE  & thr_jXE  = thrExtraInfo.jXE();
+
 
     // Iterate over ROBFragments to decode
     for (const ROBF* rob : vrobf) {
@@ -259,7 +288,7 @@ StatusCode jFexRoiByteStreamTool::convertFromBS(const std::vector<const ROBF*>&
                 for(unsigned int i=tobIndex; i>tobIndex-n_xjEM; i--) {
                     const auto [eta, phi ] = getEtaPhi(jfex, fpga, vec_words.at(i-1),"jEM xTOB");
                     jEMContainer->push_back( std::make_unique<xAOD::jFexFwdElRoI>() );
-                    jEMContainer->back()->initialize(jfex, fpga, vec_words.at(i-1),0, thr_jEM.resolutionMeV(), eta, phi);
+                    jEMContainer->back()->initialize(jfex, fpga, vec_words.at(i-1),0, m_jEMRes, eta, phi);
                 }
                 //removing xjEM counter from TOBs
                 tobIndex -= n_xjEM;
@@ -268,7 +297,7 @@ StatusCode jFexRoiByteStreamTool::convertFromBS(const std::vector<const ROBF*>&
                 for(unsigned int i=tobIndex; i>tobIndex-n_xjTau; i--) {
                     const auto [eta, phi ] = getEtaPhi(jfex, fpga, vec_words.at(i-1),"jTau xTOB");
                     jTauContainer->push_back( std::make_unique<xAOD::jFexTauRoI>() );
-                    jTauContainer->back()->initialize(jfex, fpga, vec_words.at(i-1),0, thr_jTAU.resolutionMeV(), eta, phi);
+                    jTauContainer->back()->initialize(jfex, fpga, vec_words.at(i-1),0, m_jTauRes, eta, phi);
                 }
                 //removing xjTau counter from TOBs
                 tobIndex -= n_xjTau;
@@ -277,7 +306,7 @@ StatusCode jFexRoiByteStreamTool::convertFromBS(const std::vector<const ROBF*>&
                 for(unsigned int i=tobIndex; i>tobIndex-n_xjLJ; i--) {
                     const auto [eta, phi ] = getEtaPhi(jfex, fpga, vec_words.at(i-1),"jLJ xTOB");
                     jLJContainer->push_back( std::make_unique<xAOD::jFexLRJetRoI>() );
-                    jLJContainer->back()->initialize(jfex, fpga, vec_words.at(i-1),0, thr_jLJ.resolutionMeV(), eta, phi);
+                    jLJContainer->back()->initialize(jfex, fpga, vec_words.at(i-1),0, m_jLJRes, eta, phi);
                 }
                 //removing xjLJ counter from TOBs
                 tobIndex -= n_xjLJ;
@@ -286,7 +315,7 @@ StatusCode jFexRoiByteStreamTool::convertFromBS(const std::vector<const ROBF*>&
                 for(unsigned int i=tobIndex; i>tobIndex-n_xjJ; i--) {
                     const auto [eta, phi ] = getEtaPhi(jfex, fpga, vec_words.at(i-1),"jJ xTOB");
                     jJContainer->push_back( std::make_unique<xAOD::jFexSRJetRoI>() );
-                    jJContainer->back()->initialize(jfex, fpga, vec_words.at(i-1),0, thr_jJ.resolutionMeV(), eta, phi);
+                    jJContainer->back()->initialize(jfex, fpga, vec_words.at(i-1),0, m_jJRes, eta, phi);
                 }
                 //removing xjJ counter from TOBs
                 tobIndex -= n_xjJ;
@@ -306,7 +335,7 @@ StatusCode jFexRoiByteStreamTool::convertFromBS(const std::vector<const ROBF*>&
                 if(fpga == jBits::FPGA_U1 || fpga == jBits::FPGA_U4  ){
                     for(unsigned int i=tobIndex; i>tobIndex-n_jXE; i--) {
                         jXEContainer->push_back( std::make_unique<xAOD::jFexMETRoI>() );
-                        jXEContainer->back()->initialize(jfex, fpga, vec_words.at(i-1), thr_jXE.resolutionMeV());
+                        jXEContainer->back()->initialize(jfex, fpga, vec_words.at(i-1), m_jXERes);
                     }                    
                 }
                 //removing jXE counter from TOBs
@@ -317,7 +346,7 @@ StatusCode jFexRoiByteStreamTool::convertFromBS(const std::vector<const ROBF*>&
                 if(fpga == jBits::FPGA_U1 || fpga == jBits::FPGA_U4  ) {
                     for(unsigned int i=tobIndex; i>tobIndex-n_jTE; i--) {
                         jTEContainer->push_back( std::make_unique<xAOD::jFexSumETRoI>() );
-                        jTEContainer->back()->initialize(jfex, fpga, vec_words.at(i-1), thr_jTE.resolutionMeV());
+                        jTEContainer->back()->initialize(jfex, fpga, vec_words.at(i-1), m_jTERes);
                     }
                 }
                 //removing jTE counter from TOBs
@@ -327,7 +356,7 @@ StatusCode jFexRoiByteStreamTool::convertFromBS(const std::vector<const ROBF*>&
                 for(unsigned int i=tobIndex; i>tobIndex-n_jEM; i--) {
                     const auto [eta, phi ] = getEtaPhi(jfex, fpga, vec_words.at(i-1),"jEM TOB");
                     jEMContainer->push_back( std::make_unique<xAOD::jFexFwdElRoI>() );
-                    jEMContainer->back()->initialize(jfex, fpga, vec_words.at(i-1),1, thr_jEM.resolutionMeV(), eta, phi);
+                    jEMContainer->back()->initialize(jfex, fpga, vec_words.at(i-1),1, m_jEMRes, eta, phi);
                 }
                 //removing jEM counter from TOBs
                 tobIndex -= n_jEM;
@@ -336,7 +365,7 @@ StatusCode jFexRoiByteStreamTool::convertFromBS(const std::vector<const ROBF*>&
                 for(unsigned int i=tobIndex; i>tobIndex-n_jTau; i--) {
                     const auto [eta, phi ] = getEtaPhi(jfex, fpga, vec_words.at(i-1),"jTau TOB");
                     jTauContainer->push_back( std::make_unique<xAOD::jFexTauRoI>() );
-                    jTauContainer->back()->initialize(jfex, fpga, vec_words.at(i-1),1, thr_jTAU.resolutionMeV(), eta, phi);
+                    jTauContainer->back()->initialize(jfex, fpga, vec_words.at(i-1),1, m_jTauRes, eta, phi);
                 }
                 //removing jTau counter from TOBs
                 tobIndex -= n_jTau;
@@ -345,7 +374,7 @@ StatusCode jFexRoiByteStreamTool::convertFromBS(const std::vector<const ROBF*>&
                 for(unsigned int i=tobIndex; i>tobIndex-n_jLJ; i--) {
                     const auto [eta, phi ] = getEtaPhi(jfex, fpga, vec_words.at(i-1),"jLJ TOB");
                     jLJContainer->push_back( std::make_unique<xAOD::jFexLRJetRoI>() );
-                    jLJContainer->back()->initialize(jfex, fpga, vec_words.at(i-1),1, thr_jLJ.resolutionMeV(), eta, phi);
+                    jLJContainer->back()->initialize(jfex, fpga, vec_words.at(i-1),1, m_jLJRes, eta, phi);
                 }
                 //removing jLJ counter from TOBs
                 tobIndex -= n_jLJ;
@@ -354,7 +383,7 @@ StatusCode jFexRoiByteStreamTool::convertFromBS(const std::vector<const ROBF*>&
                 for(unsigned int i=tobIndex; i>tobIndex-n_jJ; i--) {
                     const auto [eta, phi ] = getEtaPhi(jfex, fpga, vec_words.at(i-1),"jJ TOB");
                     jJContainer->push_back( std::make_unique<xAOD::jFexSRJetRoI>() );
-                    jJContainer->back()->initialize(jfex, fpga, vec_words.at(i-1),1, thr_jJ.resolutionMeV(), eta, phi);
+                    jJContainer->back()->initialize(jfex, fpga, vec_words.at(i-1),1, m_jJRes, eta, phi);
                 }
                 //removing jJ counter from TOBs
                 tobIndex -= n_jJ;
diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXByteStream/src/jFexRoiByteStreamTool.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXByteStream/src/jFexRoiByteStreamTool.h
index d04322f44a8cf5adc23ce6f09de28dab92563e22..af930c17ff59b0bf5f0ae9974ff6cc5230dd259f 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXByteStream/src/jFexRoiByteStreamTool.h
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXByteStream/src/jFexRoiByteStreamTool.h
@@ -48,6 +48,7 @@ class jFexRoiByteStreamTool : public extends<AthAlgTool, IL1TriggerByteStreamToo
 
         // ------------------------- IAlgTool methods --------------------------------
         virtual StatusCode initialize() override;
+        virtual StatusCode start() override;
 
         // ------------------------- IL1TriggerByteStreamTool methods ----------------------
         /// BS->xAOD conversion
@@ -102,6 +103,13 @@ class jFexRoiByteStreamTool : public extends<AthAlgTool, IL1TriggerByteStreamToo
         static const int s_phiBit   = 1;
         static const int s_etaMask  = 0x1f;
         static const int s_phiMask  = 0xf;
+        
+        int m_jTauRes = 0;
+        int m_jJRes   = 0;
+        int m_jLJRes  = 0;
+        int m_jEMRes  = 0;
+        int m_jXERes  = 0;
+        int m_jTERes  = 0;