diff --git a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
index 897758612a16ccec080d715836d0830988fab339..94d030e48011cc38fb72e3d500e83395ba919e83 100644
--- a/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
+++ b/Trigger/TrigValidation/TrigAnalysisTest/share/ref_RDOtoRDOTrig_v1Dev_build.ref
@@ -202,6 +202,30 @@ HLT_2j250_pf_ftf_0eta240_j120_pf_ftf_0eta240_L1J100:
   stepFeatures:
     0: 10
     1: 7
+HLT_2j250_pf_ftf_0eta240_j120_pf_ftf_0eta240_presel2j135XXj60_L1J100:
+  eventCount: 1
+  stepCounts:
+    0: 2
+    1: 1
+  stepFeatures:
+    0: 4
+    1: 7
+HLT_2j250_pf_ftf_0eta240_j120_pf_ftf_0eta240_presel2j180XXj80_L1J100:
+  eventCount: 1
+  stepCounts:
+    0: 2
+    1: 1
+  stepFeatures:
+    0: 4
+    1: 7
+HLT_2j250_pf_ftf_0eta240_j120_pf_ftf_0eta240_presel2j225XXj100_L1J100:
+  eventCount: 1
+  stepCounts:
+    0: 1
+    1: 1
+  stepFeatures:
+    0: 2
+    1: 7
 HLT_2j330_a10sd_cssk_pf_jes_ftf_35smcINF_L1J100:
   eventCount: 0
   stepCounts:
diff --git a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref
index 7a1c496380dabc154bcce95e02ffdea87665e271..d72ef10d7fb1b56a6e6d08e03f9fbd8fecb808a5 100644
--- a/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref
+++ b/Trigger/TrigValidation/TrigP1Test/share/ref_v1Dev_decodeBS_build.ref
@@ -87,6 +87,24 @@ HLT_2j250_ftf_0eta240_j120_ftf_0eta240_L1J100:
   eventCount: 0
 HLT_2j250_pf_ftf_0eta240_j120_pf_ftf_0eta240_L1J100:
   eventCount: 0
+HLT_2j250_pf_ftf_0eta240_j120_pf_ftf_0eta240_presel2j135XXj60_L1J100:
+  eventCount: 0
+HLT_2j250_pf_ftf_0eta240_j120_pf_ftf_0eta240_presel2j180XXj80_L1J100:
+  eventCount: 0
+HLT_2j250_pf_ftf_0eta240_j120_pf_ftf_0eta240_presel2j225XXj100_L1J100:
+  eventCount: 0
+HLT_2j250_pf_ftf_0eta240_j120_pf_ftf_0eta240_presel2j135XXj60_L1J100:
+  eventCount: 0
+HLT_2j250_pf_ftf_0eta240_j120_pf_ftf_0eta240_presel2j180XXj80_L1J100:
+  eventCount: 0
+HLT_2j250_pf_ftf_0eta240_j120_pf_ftf_0eta240_presel2j225XXj100_L1J100:
+  eventCount: 0
+HLT_2j250_pf_ftf_0eta240_j120_pf_ftf_0eta240_presel2j135XXj60_L1J100:
+  eventCount: 0
+HLT_2j250_pf_ftf_0eta240_j120_pf_ftf_0eta240_presel2j180XXj80_L1J100:
+  eventCount: 0
+HLT_2j250_pf_ftf_0eta240_j120_pf_ftf_0eta240_presel2j225XXj100_L1J100:
+  eventCount: 0
 HLT_2j330_a10sd_cssk_pf_jes_ftf_35smcINF_L1J100:
   eventCount: 0
 HLT_2j330_a10sd_cssk_pf_jes_ftf_35smcINF_L1SC111-CJ15:
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py
index 7b477dc3ac66ec02fd8718699614bc393c0ab49d..84ae7d7c9372470bd231c7e2971c214b41fafafc 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Jet/JetChainConfiguration.py
@@ -72,6 +72,7 @@ class JetChainConfiguration(ChainConfigurationBase):
             if p["trkpresel"]!="nopresel":
                 if ip+1==len(jChainParts): # Last jet chainPart, presel should go here
                     self.trkpresel=p["trkpresel"]
+                    self.trkpresel_parsed_reco = {key:p[key] for key in ['recoAlg']} #Storing here the reco options from last chain part that we want to propagate to preselection (e.g. jet radius)
                 else:
                     log.error("Likely inconsistency encountered in preselection specification for %s",self.chainName)
                     raise RuntimeError("Preselection %s specified earlier than in the last chainPart!",p["trkpresel"])
@@ -158,36 +159,56 @@ class JetChainConfiguration(ChainConfigurationBase):
         return str(clustersKey), ChainStep(stepName, [jetSeq], multiplicity=[1], chainDicts=[self.dict])
 
     def getJetCaloPreselChainStep(self):
+        #Find if a a4 or a10 calo jet needs to be used in the pre-selection from the last chain dict
+        import re
+        assert 'recoAlg' in self.trkpresel_parsed_reco.keys(), "Impossible to find \'recoAlg\' key in last chain dictionary for preselection"
+        #Want to match now only a4 and a10 in the original reco algorithm. We don't want to use a10sd or a10t in the preselection
+        matched_reco = re.match(r'^a\d?\d?',self.trkpresel_parsed_reco['recoAlg'])
+        assert matched_reco is not None, "Impossible to get matched reco algorithm for jet trigger preselectiona The reco expression {0} seems to be impossible to be parsed.".format(self.trkpresel_parsed_reco['recoAlg'])
+
         # Define a fixed preselection dictionary for prototyping -- we may expand the options
         preselRecoDict = {
-            'recoAlg':'a4',
+            'recoAlg':matched_reco.group(), #Getting the outcome of the regex reco option (it should correspond to a4 or a10 depending by which chain you are configuring)
             'constitType':'tc',
             'clusterCalib':'em',
             'constitMod':'',
-            'jetCalib':'subjesIS',
             'trkopt':'notrk',
         }
+        if preselRecoDict['recoAlg']=='a10': #Setting LC calibrations for large-R jets
+            preselRecoDict['clusterCalib']='lcw'
+        from .JetRecoConfiguration import interpretJetCalibDefault
+        preselRecoDict.update({'jetCalib':interpretJetCalibDefault(preselRecoDict)}) #Adding default calibration for corresponding chain
         from ..Menu.SignatureDicts import JetChainParts_Default
-        preselJetParts = dict(JetChainParts_Default)
-        # Get from the last chainPart... trying to anticipate potential developments
-        # For now they are only in single-threshold chains anyway
-        preselParts    = self.trkpresel.split('j')
-        multiplicity   = preselParts[0].split('presel')[1] if preselParts[0] != 'presel' else '1'
-        threshold      = preselParts[1]
-        chainPartName  = multiplicity+'j'+threshold if multiplicity != '1' else 'j'+threshold
-        preselJetParts.update(preselRecoDict)
-        preselJetParts.update(
-            {'L1threshold': 'FSNOSEED',
-             'chainPartName': chainPartName,
-             'multiplicity': multiplicity,
-             'threshold': threshold,
-             # fix selections that we don't want even if they
-             # become default
-             'jvt':'',
-             }
-        )
+        preselCommonJetParts = dict(JetChainParts_Default)
+        preselCommonJetParts.update(preselRecoDict)
+
         preselChainDict = dict(self.dict)
-        preselChainDict['chainParts'] = [preselJetParts]
+        preselChainDict['chainParts']=[]
+
+        # Get from the last chainPart in order to avoid to specify preselection for every leg
+        #TODO: add protection for cases where the preselection is not specified in the last chainPart
+        presel_matched = re.match(r'presel(?P<cut>\d?\d?j[\d\D]+)', self.trkpresel)
+        assert presel_matched is not None, "Impossible to match preselection pattern for self.trkpresel=\'{0}\'.".format(self.trkpresel)
+        presel_cut_str = presel_matched.groupdict()['cut'] #This is the cut string you want to parse. For example 'presel2j50XXj40'
+
+        for p in presel_cut_str.split('XX'):
+            matched = re.match(r'(?P<mult>\d?\d?)j(?P<cut>\d+)', p)
+            assert matched is not None, "Impossible to extract preselection cut for \'{0}\' substring. Please investigate.".format(p)
+            cut_dict = matched.groupdict()
+            mult,cut=cut_dict['mult'],cut_dict['cut']
+            chainPartName=f'{mult}j{cut}'
+            if mult=='': mult='1'
+
+            tmpChainDict = dict(preselCommonJetParts) 
+            tmpChainDict.update(
+                {'L1threshold': 'FSNOSEED',
+                 'chainPartName': chainPartName,
+                 'multiplicity': mult,
+                 'threshold': cut,
+                 'jvt':'',
+                 }
+            )
+            preselChainDict['chainParts'] += [tmpChainDict]
 
         jetDefStr = jetRecoDictToString(preselRecoDict)
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py
index 0f20464dc93be5912d36f1482dc85507b6764c15..f31e39cd77d9769221561f10b38bcec4b7cb54c1 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py
@@ -519,6 +519,11 @@ def setupMenu():
 
 
         ChainProp(name='HLT_5j70_ftf_0eta240_L14J15', l1SeedThresholds=['FSNOSEED'],     groups=MultiJetGroup+SupportLegGroup),
+
+        ChainProp(name='HLT_2j250_pf_ftf_0eta240_j120_pf_ftf_0eta240_presel2j135XXj60_L1J100', l1SeedThresholds=['FSNOSEED']*2, groups=MultiJetGroup + PrimaryLegGroup),
+        ChainProp(name='HLT_2j250_pf_ftf_0eta240_j120_pf_ftf_0eta240_presel2j180XXj80_L1J100', l1SeedThresholds=['FSNOSEED']*2, groups=MultiJetGroup + PrimaryLegGroup),
+        ChainProp(name='HLT_2j250_pf_ftf_0eta240_j120_pf_ftf_0eta240_presel2j225XXj100_L1J100', l1SeedThresholds=['FSNOSEED']*2, groups=MultiJetGroup + PrimaryLegGroup),
+
         #Adding testing chains for Tight,Medium,Loose preselections (ATR-23547) and also corresponding emtopo chain
         ChainProp(name='HLT_4j115_pf_ftf_presel4j55_L13J50', l1SeedThresholds=['FSNOSEED'], groups=MultiJetGroup+SupportLegGroup),
         ChainProp(name='HLT_4j115_pf_ftf_presel4j85_L13J50', l1SeedThresholds=['FSNOSEED'], groups=MultiJetGroup+SupportLegGroup),
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py
index 123e1efc5b2810d8885ccca1d3334ca562affb5c..72f12b0b2ed75241328667ed2d74a67a83611def 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py
@@ -133,28 +133,31 @@ JetChainParts = {
     'trkpresel'    : # Tracking preselection
       ['nopresel',
        #Loose
-       'preselj20',  #L1J15, L1J20
-       'preselj60',  #L1J30
-       'preselj135', #L1J50, #L1J100
-       'presel2j135', #L1J50, L1J100
-       'presel4j33', #L13J50
-       'presel5j24', #L14J15
-       'presel6j36', #L14J15
-       'presel7j21', #L14J15
+       'preselj20',        #L1J15, L1J20
+       'preselj60',        #L1J30
+       'preselj135',       #L1J50, #L1J100
+       'presel2j135',      #L1J50, L1J100
+       'presel2j135XXj60', #L1J50, L1J100
+       'presel4j33',       #L13J50
+       'presel5j24',       #L14J15
+       'presel6j36',       #L14J15
+       'presel7j21',       #L14J15
        #Medium
-       'preselj180',  #L1J100
-       'presel2j180', #L1J100
-       'presel4j55',  #L13J50
-       'presel5j35',  #L14J15
-       'presel6j40',  #L14J15
-       'presel7j28',  #L14J15
+       'preselj180',       #L1J100
+       'presel2j180',      #L1J100
+       'presel2j180XXj80', #L1J100
+       'presel4j55',       #L13J50
+       'presel5j35',       #L14J15
+       'presel6j40',       #L14J15
+       'presel7j28',       #L14J15
        #Tight
-       'preselj225', #L1J100
-       'presel2j225', #L1J100
-       'presel4j85', #L13J50
-       'presel5j50', #L14J15
-       'presel6j45', #L14J15
-       'presel7j35', #L14j15
+       'preselj225',        #L1J100
+       'presel2j225',       #L1J100
+       'presel2j225XXj100', #L1J100
+       'presel4j85',        #L13J50
+       'presel5j50',        #L14J15
+       'presel6j45',        #L14J15
+       'presel7j35',        #L14j15
      ],
     # Hypo information
     #   If hypoScenario is 'simple', then hypo configuration is handled based on the