diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
index 74d5ef40f1290a51fc99fc8f9649e697e8fd7cc0..8c12f7e02a8623bb919c5bf44fbe8521786c1dc6 100644
--- a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
+++ b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
@@ -12962,7 +12962,7 @@ HLT_j20_PhysicsTLA_L1jJ90_DETA20-jJ90J:
     0: 140
     1: 140
     2: 15
-HLT_j20_calratio_roiftf_preselj20e24_L1J100:
+HLT_j20_calratio_roiftf_preselj20emf24_L1J100:
   eventCount: 0
   stepCounts:
     0: 1
@@ -12970,10 +12970,58 @@ HLT_j20_calratio_roiftf_preselj20e24_L1J100:
   stepFeatures:
     0: 1
     1: 5
-HLT_j20_calratio_roiftf_preselj20e24_L1TAU40_EMPTY:
+HLT_j20_calratio_roiftf_preselj20emf24_L1TAU100:
   eventCount: 0
-HLT_j20_calratio_roiftf_preselj20e24_L1TAU40_UNPAIRED_ISO:
+  stepCounts:
+    0: 1
+    1: 1
+  stepFeatures:
+    0: 1
+    1: 5
+HLT_j20_calratio_roiftf_preselj20emf24_L1TAU40_EMPTY:
+  eventCount: 0
+HLT_j20_calratio_roiftf_preselj20emf24_L1TAU40_UNPAIRED_ISO:
+  eventCount: 0
+HLT_j20_calratio_roiftf_preselj20emf24_L1TAU60:
+  eventCount: 0
+  stepCounts:
+    0: 2
+    1: 2
+  stepFeatures:
+    0: 2
+    1: 12
+HLT_j20_calratio_roiftf_preselj20emf24_L1eTAU40HT:
+  eventCount: 0
+  stepCounts:
+    0: 4
+    1: 4
+  stepFeatures:
+    0: 4
+    1: 26
+HLT_j20_calratio_roiftf_preselj20emf24_L1eTAU60HL:
   eventCount: 0
+  stepCounts:
+    0: 4
+    1: 4
+  stepFeatures:
+    0: 4
+    1: 26
+HLT_j20_calratio_roiftf_preselj20emf24_L1eTAU60HM:
+  eventCount: 0
+  stepCounts:
+    0: 4
+    1: 4
+  stepFeatures:
+    0: 4
+    1: 26
+HLT_j20_calratio_roiftf_preselj20emf24_L1eTAU80HL:
+  eventCount: 0
+  stepCounts:
+    0: 2
+    1: 2
+  stepFeatures:
+    0: 2
+    1: 12
 HLT_j20_pf_ftf_presel4j85_PhysicsTLA_L13J50:
   eventCount: 1
   stepCounts:
diff --git a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref
index de54b790f8a4f93d4f5b2752fac113a60406167b..7c7b46cd190650e227ec2a6db5aadb2ebe1e3353 100644
--- a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref
+++ b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref
@@ -5137,11 +5137,23 @@ HLT_j20_PhysicsTLA_L1jJ90_DETA20-jJ90J:
     0: 13
     1: 13
     2: 3
-HLT_j20_calratio_roiftf_preselj20e24_L1J100:
+HLT_j20_calratio_roiftf_preselj20emf24_L1J100:
   eventCount: 0
-HLT_j20_calratio_roiftf_preselj20e24_L1TAU40_EMPTY:
+HLT_j20_calratio_roiftf_preselj20emf24_L1TAU100:
   eventCount: 0
-HLT_j20_calratio_roiftf_preselj20e24_L1TAU40_UNPAIRED_ISO:
+HLT_j20_calratio_roiftf_preselj20emf24_L1TAU40_EMPTY:
+  eventCount: 0
+HLT_j20_calratio_roiftf_preselj20emf24_L1TAU40_UNPAIRED_ISO:
+  eventCount: 0
+HLT_j20_calratio_roiftf_preselj20emf24_L1TAU60:
+  eventCount: 0
+HLT_j20_calratio_roiftf_preselj20emf24_L1eTAU40HT:
+  eventCount: 0
+HLT_j20_calratio_roiftf_preselj20emf24_L1eTAU60HL:
+  eventCount: 0
+HLT_j20_calratio_roiftf_preselj20emf24_L1eTAU60HM:
+  eventCount: 0
+HLT_j20_calratio_roiftf_preselj20emf24_L1eTAU80HL:
   eventCount: 0
 HLT_j20_pf_ftf_presel4j85_PhysicsTLA_L13J50:
   eventCount: 0
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/JetPresel.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/JetPresel.py
index e2b9bcbb79ee52fbe5f63be1964f1d4df139ff0a..4a4d701596948234bdde45e68cf1db0596366e23 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/JetPresel.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Jet/JetPresel.py
@@ -80,7 +80,7 @@ def _preselJetHypoToolFromDict(flags, mainChainDict, doBJetSel=False):
     preselCommonJetParts = dict(JetChainParts_Default)
 
     for ip,p in enumerate(presel_cut_str.split('XX')):
-        hascalSel= bool(re.match(r'.*e\w?\d+', p))
+        hascalSel= bool(re.match(r'.*emf\w?\d+', p))
         if not doBJetSel:  # Removing b-jet parts if b-jet presel is not requested
             p = re.sub(r'b\w?\d+', '', p)
         hasBjetSel = bool(re.match(r'.*b\w?\d+', p))
@@ -92,7 +92,7 @@ def _preselJetHypoToolFromDict(flags, mainChainDict, doBJetSel=False):
         pattern_to_test = r'(?P<mult>\d?\d?)(?P<region>[jacf])' # jet multiplicity and region
         pattern_to_test += r'(?P<scenario>(HT)?)(?P<cut>\d+)' # scenario string # could be made more general
         pattern_to_test += r'b(?P<btagger>\D?)(?P<bwp>\d+)' if hasBjetSel else '' # b-tagging if needed
-        pattern_to_test += r'e(?P<emf>\D?)(?P<emfc>\d+)' if hascalSel else ''
+        pattern_to_test += r'emf(?P<emfc>\d+)' if hascalSel else ''
         if hasDIPZsel: pattern_to_test = r'(?P<scenario>Z)((?P<dipzwp>\d+))?(?P<prefilt>(MAXMULT\d+)?)'
         matched = re.match(pattern_to_test, p)
         assert matched is not None, "Impossible to extract preselection cut for \'{0}\' substring. Please investigate.".format(p)
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 62f25adbc8b8368c647b13855d5e8e02fece2f6d..955904d1115075fb2be9887f16b926376c4a4488 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
@@ -202,9 +202,15 @@ def getDevSignatures():
     chains['Jet'] = [
 
         # new calratio chain 
-        ChainProp(name='HLT_j20_calratio_roiftf_preselj20e24_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+DevGroup),
-        ChainProp(name='HLT_j20_calratio_roiftf_preselj20e24_L1TAU40_EMPTY', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+DevGroup),
-        ChainProp(name='HLT_j20_calratio_roiftf_preselj20e24_L1TAU40_UNPAIRED_ISO', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+DevGroup),
+        ChainProp(name='HLT_j20_calratio_roiftf_preselj20emf24_L1J100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+DevGroup),
+        ChainProp(name='HLT_j20_calratio_roiftf_preselj20emf24_L1TAU40_EMPTY', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+DevGroup),
+        ChainProp(name='HLT_j20_calratio_roiftf_preselj20emf24_L1TAU40_UNPAIRED_ISO', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+DevGroup),
+        ChainProp(name='HLT_j20_calratio_roiftf_preselj20emf24_L1eTAU40HT', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+DevGroup),
+        ChainProp(name='HLT_j20_calratio_roiftf_preselj20emf24_L1eTAU60HM', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+DevGroup),
+        ChainProp(name='HLT_j20_calratio_roiftf_preselj20emf24_L1eTAU60HL', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+DevGroup),
+        ChainProp(name='HLT_j20_calratio_roiftf_preselj20emf24_L1eTAU80HL', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+DevGroup),
+        ChainProp(name='HLT_j20_calratio_roiftf_preselj20emf24_L1TAU100', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+DevGroup),
+        ChainProp(name='HLT_j20_calratio_roiftf_preselj20emf24_L1TAU60', l1SeedThresholds=['FSNOSEED'], groups=SingleJetGroup+DevGroup),
 
         # ATR-28412 test lower than VBF inclusive
         ChainProp(name='HLT_j70_j50a_j0_DJMASS900j50dphi200x400deta_L1MJJ-500-NFF', l1SeedThresholds=['FSNOSEED']*3,stream=['VBFDelayed'],groups=PrimaryLegGroup+MultiJetGroup+LegacyTopoGroup), # previously HLT_j70_j50_0eta490_invm1000j70_dphi20_deta40_L1MJJ-500-NFF
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/SignatureDicts.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/SignatureDicts.py
index 09ac5f45c556b592b3a13902d7f9879789843da7..2695e12de5d0c724554bcff0b2705cd571b5b523 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/SignatureDicts.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/SignatureDicts.py
@@ -146,7 +146,7 @@ JetChainParts = {
     'trkpresel'    : # Tracking preselection
       ['nopresel',
        # Single jet
-       'preselj20e24',
+       'preselj20emf24',
        'preselj20',
        'preselj50',
        'preselj80',
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py
index d35851b65200d3df874b36190a9259f5fccd5274..bc4f8133d8956f7c68bbe7314395a834a77c18fe 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ItemDef.py
@@ -483,6 +483,10 @@ class ItemDef:
         MenuItem('L1_eTAU35'  ).setLogic( d.eTAU35   & physcond).setTriggerType( TT.calo )
         MenuItem('L1_cTAU35M' ).setLogic( d.cTAU35M  & physcond).setTriggerType( TT.calo )
         MenuItem('L1_eTAU40HM').setLogic( d.eTAU40HM & physcond).setTriggerType( TT.calo )
+        MenuItem('L1_eTAU40HT').setLogic( d.eTAU40HT & physcond).setTriggerType( TT.calo )
+        MenuItem('L1_eTAU60HM').setLogic( d.eTAU60HM & physcond).setTriggerType( TT.calo )
+        MenuItem('L1_eTAU80HL').setLogic( d.eTAU80HL & physcond).setTriggerType( TT.calo )
+        MenuItem('L1_eTAU60HL').setLogic( d.eTAU60HL & physcond).setTriggerType( TT.calo )
         MenuItem('L1_eTAU60'  ).setLogic( d.eTAU60   & physcond).setTriggerType( TT.calo )
         MenuItem('L1_eTAU80'  ).setLogic( d.eTAU80   & physcond).setTriggerType( TT.calo )
         MenuItem('L1_eTAU140' ).setLogic( d.eTAU140  & physcond).setTriggerType( TT.calo )
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ThresholdDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ThresholdDef.py
index 02645e7134cc579d30802ad6ce77b0b4cfbae880..0d383e1a041ee21db380558e74cb5f4bd888f2dc 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ThresholdDef.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/ThresholdDef.py
@@ -173,10 +173,16 @@ class ThresholdDef:
         eTAU_cuts = [20]
         for thrV in eTAU_cuts:
             eTauThreshold('eTAU%iM' % thrV, 'eTAU').setEt(get_threshold_cut('eTAU', thrV)).setIsolation( rCore = "Medium" )
+
         eTAU_cuts = [40]
+        for thrV in eTAU_cuts:
+            eTauThreshold('eTAU%iHT' % thrV, 'eTAU').setEt(get_threshold_cut('eTAU', thrV)).setIsolation( rHad = "Tight" )
+        eTAU_cuts = [40,60]
         for thrV in eTAU_cuts:
             eTauThreshold('eTAU%iHM' % thrV, 'eTAU').setEt(get_threshold_cut('eTAU', thrV)).setIsolation( rHad = "Medium" )
-
+        eTAU_cuts = [60,80]
+        for thrV in eTAU_cuts:
+            eTauThreshold('eTAU%iHL' % thrV, 'eTAU').setEt(get_threshold_cut('eTAU', thrV)).setIsolation( rHad = "Loose" )
         # eTAU SPARES
         for thrV in range(1,11):
             eTauThreshold('eTAUSPARE%i' % thrV, 'eTAU').setEt(thrVal_SPARE)
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDefMultiplicity.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDefMultiplicity.py
index 86c51feea1cfdcadee504c1a37d442f8dd2ffc76..2a7ce2ad429ff116c609eac8553a8e80ea04b181 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDefMultiplicity.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TopoAlgoDefMultiplicity.py
@@ -79,7 +79,7 @@ class TopoAlgoDefMultiplicity(object):
             'eTAU20L', 'eTAU20M', 'eTAU30', 'eTAU35', 'eTAU40HM', 'eTAU60', 'eTAU80', 'eTAU140', 
  
             #spares
-            'eTAUSPARE2', 'eTAUSPARE3', 'eTAUSPARE4', 'eTAUSPARE5', 'eTAUSPARE6', 'eTAUSPARE7',
+            'eTAU40HT', 'eTAU60HM','eTAU60HL', 'eTAU80HL', 'eTAUSPARE6', 'eTAUSPARE7',
         ]
         jtauThresholds_2bits = [ 
             'jTAU30', 'jTAU30M',
@@ -130,6 +130,7 @@ class TopoAlgoDefMultiplicity(object):
                                        nbits = 2, classtype='cTauMultiplicity')
             tm.registerTopoAlgo(alg)
 
+
         jJThresholds_3bits = [ 
             'jJ20', 'jJ30', 'jJ30p0ETA25', 'jJ40', 'jJ40p0ETA25', 'jJ50', 'jJ55', 'jJ55p0ETA23', 'jJ60',
 
@@ -252,11 +253,11 @@ class TopoAlgoDefMultiplicity(object):
            multLimits( thrtype='eEM',  conn='Topo1Opt0', nbit=2, startbit=24, endbit=43),
            multLimits( thrtype='eEMV', conn='Topo1Opt0', nbit=2, startbit=44, endbit=63),
            multLimits( thrtype='eTAU', conn='Topo1Opt1', nbit=3, startbit=0,  endbit=8 ),
-           multLimits( thrtype='eTAU', conn='Topo1Opt1', nbit=2, startbit=12, endbit=39),
-           multLimits( thrtype='gLJ',  conn='Topo1Opt1', nbit=2, startbit=44, endbit=59),
-           multLimits( thrtype='gJ',   conn='Topo1Opt1', nbit=3, startbit=62, endbit=70),
-           multLimits( thrtype='gJ',   conn='Topo1Opt1', nbit=2, startbit=74, endbit=79),
-
+           multLimits( thrtype='eTAU', conn='Topo1Opt1', nbit=2, startbit=12, endbit=31),
+           multLimits( thrtype='gLJ',  conn='Topo1Opt1', nbit=2, startbit=33, endbit=51),
+           multLimits( thrtype='gJ',   conn='Topo1Opt1', nbit=3, startbit=54, endbit=62),
+           multLimits( thrtype='gJ',   conn='Topo1Opt1', nbit=2, startbit=66, endbit=71),
+           multLimits( thrtype='eTAU',   conn='Topo1Opt1', nbit=2, startbit=72, endbit=80),
            multLimits( thrtype='jJ',   conn='Topo1Opt2', nbit=3, startbit=0,  endbit=32),
            multLimits( thrtype='jJ',   conn='Topo1Opt2', nbit=2, startbit=36, endbit=73),
            multLimits( thrtype='jLJ',  conn='Topo1Opt2', nbit=2, startbit=78, endbit=93),
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TypeWideThresholdConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TypeWideThresholdConfig.py
index 1d20b63fc5a746886c7784b7a43e1d1eec628075..cd1bdcaf6a3977e97f25e82da85c6acd815f638a 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TypeWideThresholdConfig.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Config/TypeWideThresholdConfig.py
@@ -341,9 +341,9 @@ class L1Config_eTAU():
     rCore_fw_loose = 2  # rCore = 1 - (3x2)/(9x2), rCore > threshold -> pass
     rCore_fw_medium = 12 # PLACEHOLDER
     rCore_fw_tight = 32
-    rHad_fw_loose = 10 # PLACEHOLDER
+    rHad_fw_loose = 32 # PLACEHOLDER
     rHad_fw_medium = 72 # Only for HM, does not affect L/M/T which cut only on rCore
-    rHad_fw_tight = 72
+    rHad_fw_tight = 152
 
 
     def __call__(self) -> odict:
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_pp_run3_v1.py
index 5560e4e678fda70c6a3c69a2a6abe4a8ab4816f3..86fb49ba8f255b829fb872929bb6cf070b032a64 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_pp_run3_v1.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_pp_run3_v1.py
@@ -20,7 +20,11 @@ def defineMenu():
         'L1_MU14FCH_J40',
         # ATR-24037 
         'L1_jXEPerf100',
-
+        # ATR-22696
+        'L1_eTAU40HT',
+        'L1_eTAU60HM',
+        'L1_eTAU60HL',
+        'L1_eTAU80HL',
         # ATR-27782 - test eEM M/DR Topo
         'L1_2DR15-M70-2eEM9L',
         'L1_2DR15-M70-2eEM12L',
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_pp_run3_v1_inputs.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_pp_run3_v1_inputs.py
index 565b907f60245e4590e56958c2685e75f3981d36..8942ab4d99b760e5825f574be3496596e0ce768c 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_pp_run3_v1_inputs.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_MC_pp_run3_v1_inputs.py
@@ -20,7 +20,22 @@ def defineInputsMenu():
                     conn["thresholds"] += [
                         ('jXEPerf100',1),
                     ]              
-
+                if conn["name"] == "Topo1Opt1":
+                    conn["thresholds"] += [
+                        ('eTAU40HT',2),
+                    ]
+                if conn["name"] == "Topo1Opt1":
+                    conn["thresholds"] += [
+                        ('eTAU60HM',2),
+                    ]
+                if conn["name"] == "Topo1Opt1":
+                    conn["thresholds"] += [
+                        ('eTAU60HL',2),
+                    ]
+                if conn["name"] == "Topo1Opt1":
+                    conn["thresholds"] += [
+                        ('eTAU80HL',2),
+                    ]
                 # Add more decision algorithms
                 if conn["name"] == "Topo2El":
                     for group in conn["algorithmGroups"]:
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1_inputs.py b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1_inputs.py
index 5c0551ff3f7fe01986629f352fde0318f8490a89..2aca7fe48a6bb2b1e9a2b3ee8de05a3e256cbe28 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1_inputs.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/L1/Menu/Menu_Physics_pp_run3_v1_inputs.py
@@ -123,7 +123,7 @@ def defineInputsMenu():
             'eTAU40HM', 
          
             # eTAU thresholds for production
-            'eTAUSPARE2', 'eTAUSPARE3', 'eTAUSPARE4', 'eTAUSPARE5', 'eTAUSPARE6', 'eTAUSPARE7',
+            'eTAUSPARE6', 'eTAUSPARE7',
 
             None, None,