diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXSysSim.h b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXSysSim.h
index 01e0ea25163d865070c5462eab9abb11690e2bc9..a31601cf0083b0cd4907ab4a4c8a8ca8fa7a93f3 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXSysSim.h
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/jFEXSysSim.h
@@ -70,13 +70,7 @@ namespace LVL1 {
 
     virtual int calcTowerID(int eta, int phi, int mod) override ;
 
-    /**Create and fill a new eFexEMRoI object (corresponding to this window), and return a pointer to it*/
-    virtual StatusCode fillSRJetEDM(uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexSRJetRoIContainer > &jContainer) override ;
-    virtual StatusCode fillLRJetEDM(uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexLRJetRoIContainer > &jContainer) override ;
-    virtual StatusCode fillTauEDM  (uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexTauRoIContainer   > &jContainer) override ;
-    virtual StatusCode fillFwdElEDM  (uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexFwdElRoIContainer   > &jContainer) override ;  
-    virtual StatusCode fillSumEtEDM(uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, int resolution, std::unique_ptr< xAOD::jFexSumETRoIContainer > &jContainer) override ;  
-    virtual StatusCode fillMetEDM  (uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, int resolution, std::unique_ptr< xAOD::jFexMETRoIContainer > &jContainer) override ;  
+
       
   /** Internal data */
   private:
@@ -111,6 +105,17 @@ namespace LVL1 {
     std::unordered_map<uint8_t, std::vector<std::vector<std::unique_ptr<jFEXTOB>>> > m_allLargeRJetTobs;
     std::unordered_map<uint8_t, std::vector<std::unique_ptr<jFEXTOB>> > m_allsumEtTobs;
     std::unordered_map<uint8_t, std::vector<std::unique_ptr<jFEXTOB>> > m_allMetTobs; 
+    
+    
+    // Create and fill a new EDMs object
+    StatusCode fillSRJetEDM(uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, char istob, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexSRJetRoIContainer > &jContainer);
+    StatusCode fillLRJetEDM(uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, char istob, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexLRJetRoIContainer > &jContainer);
+    StatusCode fillTauEDM  (uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, char istob, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexTauRoIContainer   > &jContainer);
+    StatusCode fillFwdElEDM(uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, char istob, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexFwdElRoIContainer > &jContainer);  
+    StatusCode fillSumEtEDM(uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, int resolution, std::unique_ptr< xAOD::jFexSumETRoIContainer > &jContainer);  
+    StatusCode fillMetEDM  (uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, int resolution, std::unique_ptr< xAOD::jFexMETRoIContainer   > &jContainer);      
+    
+    
        
   };
   
diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/jFEXReprocessingRun3.py b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/jFEXReprocessingRun3.py
new file mode 100644
index 0000000000000000000000000000000000000000..b5e84b6748e33a13f3ce0ab16b4f2e8690f5fdae
--- /dev/null
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/share/jFEXReprocessingRun3.py
@@ -0,0 +1,172 @@
+#
+# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
+#
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
+from AthenaConfiguration.ComponentFactory import CompFactory
+from AthenaConfiguration.Enums import Format
+
+
+if __name__ == '__main__':
+    
+    
+    from AthenaConfiguration.AllConfigFlags import ConfigFlags as flags
+    from AthenaCommon.Logging import logging
+    import glob
+    import sys
+
+    import argparse
+    parser = argparse.ArgumentParser(prog='python -m L1CaloFEXTools.L1CaloFEXToolsConfig',
+                                   description="""Decorator tool for FEX towers athena script.\n\n
+                                   Example: python -m L1CaloFEXTools.L1CaloFEXToolsConfig --filesInput "data22*" --evtMax 10 --outputs eTOBs """)
+    parser.add_argument('--evtMax',type=int,default=-1,help="number of events")
+    parser.add_argument('--filesInput',nargs='+',help="input files",required=True)
+    parser.add_argument('--outputLevel',default="WARNING",choices={ 'INFO','WARNING','DEBUG','VERBOSE'})
+    # parser.add_argument('--outputs',nargs='+',choices={"jTowers","jTOBs"},required=True, help="What data to decode and output.")
+    args = parser.parse_args()
+
+
+    log = logging.getLogger('L1CaloFEXToolsConfig')
+    log.setLevel(logging.DEBUG)
+
+    from AthenaCommon import Constants
+    algLogLevel = getattr(Constants,args.outputLevel)
+
+    if any(["data22" in f for f in args.filesInput]):
+        flags.Trigger.triggerConfig='DB'
+
+    flags.Exec.OutputLevel = algLogLevel
+    flags.Exec.MaxEvents = args.evtMax
+    flags.Input.Files = [file for x in args.filesInput for file in glob.glob(x)]
+    flags.Concurrency.NumThreads = 1
+    flags.Concurrency.NumConcurrentEvents = 1
+  
+    if any(["data22" in f for f in args.filesInput]):
+        s=args.filesInput[0].replace('*','').replace('.data','')
+        flags.Output.AODFileName = "AOD."+(s.split("/")[-1]).split('_SFO')[0]+"pool.root"
+    else:
+        flags.Output.AODFileName = 'AOD.pool.root'  
+    
+    flags.Trigger.EDMVersion = 3
+    flags.Trigger.doLVL1 = True
+    flags.Trigger.enableL1CaloPhase1 = True
+    if flags.Common.isOnline:
+        flags.IOVDb.GlobalTag = flags.Trigger.OnlineCondTag
+
+    if not flags.Input.isMC and flags.Input.RunNumber[0] > 400000:
+        flags.GeoModel.AtlasVersion = 'ATLAS-R3S-2021-02-00-00'
+
+    # Enable only calo for this test
+    from AthenaConfiguration.DetectorConfigFlags import setupDetectorsFromList
+    setupDetectorsFromList(flags,['LAr','Tile','MBTS'],True)
+
+    flags.lock()
+    
+    # Set up the main service "acc"
+    from AthenaConfiguration.MainServicesConfig import MainServicesCfg
+    acc = MainServicesCfg(flags)
+    
+    # The decoderAlg needs to load ByteStreamMetadata for the detector mask
+    from TriggerJobOpts.TriggerByteStreamConfig import ByteStreamReadCfg
+    acc.merge(ByteStreamReadCfg(flags))    
+    
+    # Generate run3 L1 menu
+    from TrigConfigSvc.TrigConfigSvcCfg import L1ConfigSvcCfg
+    acc.merge(L1ConfigSvcCfg(flags))
+    
+    decoderTools = []
+    outputEDM = []
+    maybeMissingRobs = []
+
+    
+    def addEDM(edmType, edmName):
+        auxType = edmType.replace('Container','AuxContainer')
+        return [f'{edmType}#{edmName}', f'{auxType}#{edmName}Aux.']
+        
+    def getSimHandle(key):
+        """
+        Add 'Sim' to the standard handle path
+        """
+        keyPath = key.path()
+        keyPath += "Sim"
+        key.Path = keyPath
+        return key
+
+    ##################################################
+    # LATOME and Tile
+    ##################################################
+    from L1CaloFEXSim.L1CaloFEXSimCfg import ReadSCellFromByteStreamCfg,TriggerTowersInputCfg
+    
+    #Creates SCells
+    acc.merge(ReadSCellFromByteStreamCfg(flags,key="SCell",keyIn="SC_ET_ID"))
+    
+    # Creates the TriggerTower container
+    acc.merge(TriggerTowersInputCfg(flags))
+    
+    
+    ##################################################
+    # jFEX simulation
+    ##################################################    
+    jFEX = CompFactory.LVL1.jFEXDriver('jFEXDriver')
+    jFEX.jSuperCellTowerMapperTool = CompFactory.LVL1.jSuperCellTowerMapper('jSuperCellTowerMapper')
+    jFEX.jFEXSysSimTool = CompFactory.LVL1.jFEXSysSim('jFEXSysSimTool')
+    
+    #TOBs
+    jFEX.jFEXSysSimTool.Key_jFexSRJetOutputContainer = getSimHandle(jFEX.jFEXSysSimTool.Key_jFexSRJetOutputContainer)
+    jFEX.jFEXSysSimTool.Key_jFexLRJetOutputContainer = getSimHandle(jFEX.jFEXSysSimTool.Key_jFexLRJetOutputContainer)
+    jFEX.jFEXSysSimTool.Key_jFexTauOutputContainer   = getSimHandle(jFEX.jFEXSysSimTool.Key_jFexTauOutputContainer  )
+    jFEX.jFEXSysSimTool.Key_jFexSumETOutputContainer = getSimHandle(jFEX.jFEXSysSimTool.Key_jFexSumETOutputContainer)
+    jFEX.jFEXSysSimTool.Key_jFexMETOutputContainer   = getSimHandle(jFEX.jFEXSysSimTool.Key_jFexMETOutputContainer  )
+    jFEX.jFEXSysSimTool.Key_jFexFwdElOutputContainer = getSimHandle(jFEX.jFEXSysSimTool.Key_jFexFwdElOutputContainer)
+    
+    outputEDM += addEDM('xAOD::jFexSRJetRoIContainer', 'L1_jFexSRJetRoISim')
+    outputEDM += addEDM('xAOD::jFexLRJetRoIContainer', 'L1_jFexLRJetRoISim')
+    outputEDM += addEDM('xAOD::jFexTauRoIContainer'  , 'L1_jFexTauRoISim'  )
+    outputEDM += addEDM('xAOD::jFexFwdElRoIContainer', 'L1_jFexFwdElRoISim')
+    outputEDM += addEDM('xAOD::jFexSumETRoIContainer', 'L1_jFexSumETRoISim')
+    outputEDM += addEDM('xAOD::jFexMETRoIContainer'  , 'L1_jFexMETRoISim'  ) 
+    
+
+    #xTOBs
+    jFEX.jFEXSysSimTool.Key_xTobOutKey_jJ   = getSimHandle(jFEX.jFEXSysSimTool.Key_xTobOutKey_jJ  )
+    jFEX.jFEXSysSimTool.Key_xTobOutKey_jLJ  = getSimHandle(jFEX.jFEXSysSimTool.Key_xTobOutKey_jLJ )
+    jFEX.jFEXSysSimTool.Key_xTobOutKey_jTau = getSimHandle(jFEX.jFEXSysSimTool.Key_xTobOutKey_jTau)
+    jFEX.jFEXSysSimTool.Key_xTobOutKey_jEM  = getSimHandle(jFEX.jFEXSysSimTool.Key_xTobOutKey_jEM )    
+    
+    outputEDM += addEDM('xAOD::jFexSRJetRoIContainer', 'L1_jFexSRJetxRoISim' )
+    outputEDM += addEDM('xAOD::jFexLRJetRoIContainer', 'L1_jFexLRJetxRoISim' )
+    outputEDM += addEDM('xAOD::jFexTauRoIContainer'  , 'L1_jFexTauxRoISim'   )
+    outputEDM += addEDM('xAOD::jFexFwdElRoIContainer', 'L1_jFexFwdElxRoISim' )
+    
+    acc.addEventAlgo(jFEX, sequenceName='AthAlgSeq')   
+    
+    
+    ##################################################
+    # jFEX decoded TOBs
+    ##################################################       
+    from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig import jFexRoiByteStreamToolCfg
+    jFexRoiByteStreamTool = jFexRoiByteStreamToolCfg('jFexBSDecoderTool', flags=flags, writeBS=False)
+    
+    decoderTools += [jFexRoiByteStreamTool]
+    maybeMissingRobs += jFexRoiByteStreamTool.ROBIDs
+    
+    
+    outputEDM += addEDM('xAOD::jFexSRJetRoIContainer', 'L1_jFexSRJetRoI')
+    outputEDM += addEDM('xAOD::jFexLRJetRoIContainer', 'L1_jFexLRJetRoI')
+    outputEDM += addEDM('xAOD::jFexTauRoIContainer'  , 'L1_jFexTauRoI'  )
+    outputEDM += addEDM('xAOD::jFexFwdElRoIContainer', 'L1_jFexFwdElRoI')
+    outputEDM += addEDM('xAOD::jFexSumETRoIContainer', 'L1_jFexSumETRoI')
+    outputEDM += addEDM('xAOD::jFexMETRoIContainer'  , 'L1_jFexMETRoI'  ) 
+    
+    
+    decoderAlg = CompFactory.L1TriggerByteStreamDecoderAlg(name="L1TriggerByteStreamDecoder", DecoderTools=decoderTools, MaybeMissingROBs=maybeMissingRobs)
+    acc.addEventAlgo(decoderAlg, primary=True, sequenceName='AthAlgSeq')
+   
+    
+    from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
+    acc.merge(OutputStreamCfg(flags, 'AOD', ItemList=outputEDM))
+    
+    acc.getEventAlgo("EventInfoTagBuilder").PropagateInput = (flags.Input.Format != Format.BS)
+
+    if acc.run().isFailure():
+        sys.exit(1)
+
diff --git a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSysSim.cxx b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSysSim.cxx
index 7778238ca2b0f5f0529950a64dfc1d6f1e87c2f7..a89605557c26919fc00c4214e23f9a1d7de1384f 100644
--- a/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSysSim.cxx
+++ b/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/src/jFEXSysSim.cxx
@@ -911,6 +911,7 @@ namespace LVL1 {
             for(size_t it = 0; it<tobs.size();it++) {
                 float_t eta = -99;
                 float_t phi = -99;
+                char istob = 0;
                 if(tobs.at(it)->getWord() != 0) {
                     eta = (this_jTowerContainer->findTower( tobs.at(it)->getTTID() ))->centreEta();
                     phi = (this_jTowerContainer->findTower( tobs.at(it)->getTTID() ))->centrephi_toPI();
@@ -918,9 +919,10 @@ namespace LVL1 {
                 
                 // Just sending 7 SRjets to L1Topo and HLT chain
                 if(it<7){
-                   ATH_CHECK(fillSRJetEDM(tobs.at(it)->getjFex(),tobs.at(it)->getFpga(),tobs.at(it)->getWord(),tobs.at(it)->getRes(), eta, phi, tobContainer_jJ)); 
+                    istob = 1;
+                    ATH_CHECK(fillSRJetEDM(tobs.at(it)->getjFex(),tobs.at(it)->getFpga(),tobs.at(it)->getWord(),istob,tobs.at(it)->getRes(), eta, phi, tobContainer_jJ)); 
                 }
-                ATH_CHECK(fillSRJetEDM(tobs.at(it)->getjFex(),tobs.at(it)->getFpga(),tobs.at(it)->getWord(),tobs.at(it)->getRes(), eta, phi, xtobContainer_jJ));
+                ATH_CHECK(fillSRJetEDM(tobs.at(it)->getjFex(),tobs.at(it)->getFpga(),tobs.at(it)->getWord(),istob,tobs.at(it)->getRes(), eta, phi, xtobContainer_jJ));
                 
             }
         }
@@ -949,6 +951,7 @@ namespace LVL1 {
             for(size_t it = 0; it<tobs.size();it++) {
                 float_t eta = -99;
                 float_t phi = -99;
+                char istob = 0;
                 if(tobs.at(it)->getWord() != 0) {
                     eta = (this_jTowerContainer->findTower( tobs.at(it)->getTTID() ))->centreEta();
                     phi = (this_jTowerContainer->findTower( tobs.at(it)->getTTID() ))->centrephi_toPI();
@@ -956,9 +959,10 @@ namespace LVL1 {
                 
                 // Just sending 1 LRjets to L1Topo and HLT chain
                 if(it<1){
-                   ATH_CHECK(fillLRJetEDM(tobs.at(it)->getjFex(),tobs.at(it)->getFpga(),tobs.at(it)->getWord(),tobs.at(it)->getRes(), eta, phi, tobContainer_jLJ)); 
+                    istob=1;
+                   ATH_CHECK(fillLRJetEDM(tobs.at(it)->getjFex(),tobs.at(it)->getFpga(),tobs.at(it)->getWord(),istob,tobs.at(it)->getRes(), eta, phi, tobContainer_jLJ)); 
                 }
-                ATH_CHECK(fillLRJetEDM(tobs.at(it)->getjFex(),tobs.at(it)->getFpga(),tobs.at(it)->getWord(),tobs.at(it)->getRes(), eta, phi, xtobContainer_jLJ));
+                ATH_CHECK(fillLRJetEDM(tobs.at(it)->getjFex(),tobs.at(it)->getFpga(),tobs.at(it)->getWord(),istob,tobs.at(it)->getRes(), eta, phi, xtobContainer_jLJ));
             }
         }
     }
@@ -985,6 +989,7 @@ namespace LVL1 {
             for(size_t it = 0; it<tobs.size();it++) {
                 float_t eta = -99;
                 float_t phi = -99;
+                char istob = 0;
                 if(tobs.at(it)->getWord() != 0){
                     eta = (this_jTowerContainer->findTower( tobs.at(it)->getTTID() ))->centreEta();
                     phi = (this_jTowerContainer->findTower( tobs.at(it)->getTTID() ))->centrephi_toPI();                   
@@ -992,9 +997,10 @@ namespace LVL1 {
 
                 // Just sending 6 Taus to L1Topo and HLT chain
                 if(it<6){
-                    ATH_CHECK(fillTauEDM(tobs.at(it)->getjFex() ,tobs.at(it)->getFpga() ,tobs.at(it)->getWord() ,tobs.at(it)->getRes(), eta, phi, tobContainer_jTau)); 
+                    istob=1;
+                    ATH_CHECK(fillTauEDM(tobs.at(it)->getjFex() ,tobs.at(it)->getFpga() ,tobs.at(it)->getWord() ,istob ,tobs.at(it)->getRes(), eta, phi, tobContainer_jTau)); 
                 }
-                ATH_CHECK(fillTauEDM(tobs.at(it)->getjFex() ,tobs.at(it)->getFpga() ,tobs.at(it)->getWord() ,tobs.at(it)->getRes(), eta, phi, xtobContainer_jTau));           
+                ATH_CHECK(fillTauEDM(tobs.at(it)->getjFex() ,tobs.at(it)->getFpga() ,tobs.at(it)->getWord() ,istob ,tobs.at(it)->getRes(), eta, phi, xtobContainer_jTau));           
             }
         }
 
@@ -1024,15 +1030,17 @@ namespace LVL1 {
             for(size_t it = 0; it<FPGA_tob.size();it++) {
                 float_t eta = -99;
                 float_t phi = -99;
+                char istob = 0;
                 if(FPGA_tob.at(it).at(1) != 0) {
                     eta = (this_jTowerContainer->findTower(FPGA_tob.at(it).at(1)))->centreEta();
                     phi = (this_jTowerContainer->findTower(FPGA_tob.at(it).at(1)))->centrephi_toPI();
                 }
                 
                 if(it<5){
-                    ATH_CHECK(fillFwdElEDM(jfex,fpgaNum, FPGA_tob.at(it).at(0), jFwdElResolution, eta, phi, tobContainer_jEM));
+                    istob=1;
+                    ATH_CHECK(fillFwdElEDM(jfex,fpgaNum, FPGA_tob.at(it).at(0),istob, jFwdElResolution, eta, phi, tobContainer_jEM));
                 }
-                ATH_CHECK(fillFwdElEDM(jfex,fpgaNum, FPGA_tob.at(it).at(0), jFwdElResolution, eta, phi, xtobContainer_jEM));
+                ATH_CHECK(fillFwdElEDM(jfex,fpgaNum, FPGA_tob.at(it).at(0),istob, jFwdElResolution, eta, phi, xtobContainer_jEM));
             }
             fpgaNum++;
         }
@@ -1091,12 +1099,12 @@ namespace LVL1 {
   }
 
 
-    StatusCode jFEXSysSim::fillSRJetEDM(uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexSRJetRoIContainer > &jContainer) {
+    StatusCode jFEXSysSim::fillSRJetEDM(uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, char istob, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexSRJetRoIContainer > &jContainer) {
 
         xAOD::jFexSRJetRoI* my_EDM = new xAOD::jFexSRJetRoI();
         jContainer->push_back( my_EDM );
 
-        my_EDM->initialize(jFexNum, fpgaNumber, tobWord ,1 , resolution, eta, phi);
+        my_EDM->initialize(jFexNum, fpgaNumber, tobWord ,istob , resolution, eta, phi);
 
         ATH_MSG_DEBUG(" setting SRJet jFEX Number:  " << +my_EDM->jFexNumber() << " et: " << my_EDM->et() << " eta: " << my_EDM->eta() <<" / "<< eta <<  " phi: " << my_EDM->phi()<<" / "<< phi  );
 
@@ -1105,12 +1113,12 @@ namespace LVL1 {
     }
       
       
-    StatusCode jFEXSysSim::fillTauEDM(uint8_t jFexNum,uint8_t fpgaNumber, uint32_t tobWord, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexTauRoIContainer > &jContainer) {
+    StatusCode jFEXSysSim::fillTauEDM(uint8_t jFexNum,uint8_t fpgaNumber, uint32_t tobWord, char istob, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexTauRoIContainer > &jContainer) {
 
         xAOD::jFexTauRoI* my_EDM = new xAOD::jFexTauRoI();
         jContainer->push_back( my_EDM );
 
-        my_EDM->initialize(jFexNum, fpgaNumber, tobWord ,1 , resolution, eta, phi);
+        my_EDM->initialize(jFexNum, fpgaNumber, tobWord ,istob , resolution, eta, phi);
 
         ATH_MSG_DEBUG(" setting tau jFEX Number:  " << +my_EDM->jFexNumber() << " et: " << my_EDM->et() << " eta: " << my_EDM->eta() <<" / "<< eta <<  " phi: " << my_EDM->phi()<<" / "<< phi  );
 
@@ -1118,12 +1126,12 @@ namespace LVL1 {
 
     }
 
-  StatusCode jFEXSysSim::fillFwdElEDM(uint8_t jFexNum,uint8_t fpgaNumber, uint32_t tobWord, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexFwdElRoIContainer > &jContainer) {
+  StatusCode jFEXSysSim::fillFwdElEDM(uint8_t jFexNum,uint8_t fpgaNumber, uint32_t tobWord, char istob, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexFwdElRoIContainer > &jContainer) {
 
     xAOD::jFexFwdElRoI* my_EDM = new xAOD::jFexFwdElRoI();
     jContainer->push_back( my_EDM );
 
-    my_EDM->initialize(jFexNum, fpgaNumber, tobWord ,1 , resolution, eta, phi);
+    my_EDM->initialize(jFexNum, fpgaNumber, tobWord ,istob , resolution, eta, phi);
 
     ATH_MSG_DEBUG(" setting Forward Elec jFEX Number:  " << +my_EDM->jFexNumber() << " et: " << my_EDM->et() << " eta: " << my_EDM->eta() <<" / "<< eta <<  " phi: " << my_EDM->phi()<<" / "<< phi  );
 
@@ -1133,12 +1141,12 @@ namespace LVL1 {
 
 
 
-    StatusCode jFEXSysSim::fillLRJetEDM(uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexLRJetRoIContainer > &jContainer) {
+    StatusCode jFEXSysSim::fillLRJetEDM(uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, char istob, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexLRJetRoIContainer > &jContainer) {
 
         xAOD::jFexLRJetRoI* my_EDM = new xAOD::jFexLRJetRoI();
         jContainer->push_back( my_EDM );
 
-        my_EDM->initialize(jFexNum, fpgaNumber, tobWord ,1 , resolution, eta, phi);
+        my_EDM->initialize(jFexNum, fpgaNumber, tobWord ,istob , resolution, eta, phi);
 
         ATH_MSG_DEBUG(" setting LRJet jFEX Number:  " << +my_EDM->jFexNumber() << " et: " << my_EDM->et() << " eta: " << my_EDM->eta() <<" / "<< eta <<  " phi: " << my_EDM->phi()<<" / "<< phi  );
 
diff --git a/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXSysSim.h b/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXSysSim.h
index dc123ad077a7f2794ace58e43dbc46a61e83ffbc..a32de99c5274966b4d95b209eaff73fd24b68e71 100644
--- a/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXSysSim.h
+++ b/Trigger/TrigT1/L1CaloFEXToolInterfaces/L1CaloFEXToolInterfaces/IjFEXSysSim.h
@@ -49,14 +49,6 @@ Interface definition for jFEXSysSim
     virtual void cleanup() = 0;
 
     virtual int calcTowerID(int eta, int phi, int mod) = 0 ;
- 
-    virtual StatusCode fillSRJetEDM(uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexSRJetRoIContainer > &jContainer) =0 ;  
-    virtual StatusCode fillLRJetEDM(uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexLRJetRoIContainer > &jContainer) =0 ;
-    virtual StatusCode fillTauEDM  (uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexTauRoIContainer > &jContainer) =0 ;  
-    virtual StatusCode fillFwdElEDM  (uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, int resolution, float_t eta, float_t phi, std::unique_ptr< xAOD::jFexFwdElRoIContainer > &jContainer) =0 ;
-    virtual StatusCode fillSumEtEDM(uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, int resolution, std::unique_ptr< xAOD::jFexSumETRoIContainer > &jContainer) =0 ;  
-    virtual StatusCode fillMetEDM  (uint8_t jFexNum, uint8_t fpgaNumber, uint32_t tobWord, int resolution, std::unique_ptr< xAOD::jFexMETRoIContainer > &jContainer) =0 ;  
-
     
   private: