diff --git a/Reconstruction/Jet/JetRec/python/JetRecFlags.py b/Reconstruction/Jet/JetRec/python/JetRecFlags.py
index d0ae00271fa4fb38ba4ec10c8d0db22014b3a422..da956e946dc57c959e77487132587af9e81f8dfa 100644
--- a/Reconstruction/Jet/JetRec/python/JetRecFlags.py
+++ b/Reconstruction/Jet/JetRec/python/JetRecFlags.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
 
 # JetRecFlags.py
 #
@@ -167,6 +167,14 @@ class defaultCalibOpt(JobProperty):
   allowedTypes = ['str']    # type
   StoredValue  = ""   # default value
 
+class useCalibJetThreshold(JobProperty):
+  """ If true, jets are filtered based on their calibrated jet pT (15 GeV for cluster-based jets, 10 GeV for PFlow)
+      If false, only pT threshold at constituent-scale is applied (5 GeV for cluster-based and PFlow jets)
+  """
+  statusOn     = True
+  allowedTypes = ['bool']  # type
+  StoredValue  = True      # default value
+
 class containerNamePrefix(JobProperty):
   """ Prefix for jet collection names
   """
@@ -251,6 +259,7 @@ jobproperties.JetRecFlags.add_JobProperty(useBTagging)
 jobproperties.JetRecFlags.add_JobProperty(skipTools)
 jobproperties.JetRecFlags.add_JobProperty(additionalTopoGetters)
 jobproperties.JetRecFlags.add_JobProperty(defaultCalibOpt)
+jobproperties.JetRecFlags.add_JobProperty(useCalibJetThreshold)
 jobproperties.JetRecFlags.add_JobProperty(containerNamePrefix)
 jobproperties.JetRecFlags.add_JobProperty(separateJetAlgs)
 jobproperties.JetRecFlags.add_JobProperty(timeJetToolRunner)
diff --git a/Reconstruction/Jet/JetRec/share/JetRec_jobOptions.py b/Reconstruction/Jet/JetRec/share/JetRec_jobOptions.py
index 5eec0142a406c156541123bd87c100500ecc0e35..4cf0cfa8e8a601e33d0907363b044afeabeebec4 100644
--- a/Reconstruction/Jet/JetRec/share/JetRec_jobOptions.py
+++ b/Reconstruction/Jet/JetRec/share/JetRec_jobOptions.py
@@ -30,14 +30,21 @@ if not jetFlags.useVertices():
   calibopt = "aj"
   jetlog.info(myname + "No vertices -- switch calibopt to " + calibopt)
 
+ptminFilter_topo = 15000
+ptminFilter_pFlow = 10000
+if not jetFlags.useCalibJetThreshold:
+  ptminFilter_topo = 1
+  ptminFilter_pFlow = 1
+  jetlog.info(myname + "Switching off the jet pT threshold applied at the calibrated scale")
+
 # Finders.
 if jetFlags.detailLevel()==JetContentDetail.Reduced:
   if jetFlags.useTopo():
-    jtm.addJetFinder("AntiKt4EMTopoJets",   "AntiKt", 0.4,   "emtopo_reduced", "emtopo_ungroomed", ghostArea=0.01, ptmin= 5000, ptminFilter= 15000, calibOpt=calibopt)
-    jtm.addJetFinder("AntiKt4LCTopoJets",   "AntiKt", 0.4,   "lctopo_reduced", "lctopo_ungroomed", ghostArea=0.01, ptmin= 5000, ptminFilter= 15000, calibOpt=calibopt)
+    jtm.addJetFinder("AntiKt4EMTopoJets",   "AntiKt", 0.4,   "emtopo_reduced", "emtopo_ungroomed", ghostArea=0.01, ptmin= 5000, ptminFilter=ptminFilter_topo, calibOpt=calibopt)
+    jtm.addJetFinder("AntiKt4LCTopoJets",   "AntiKt", 0.4,   "lctopo_reduced", "lctopo_ungroomed", ghostArea=0.01, ptmin= 5000, ptminFilter=ptminFilter_topo, calibOpt=calibopt)
     jtm.addJetFinder("AntiKt10LCTopoJets",  "AntiKt", 1.0,   "lctopo_reduced", "lctopo_ungroomed", ghostArea=0.01, ptmin= 40000, ptminFilter=50000, calibOpt="none")
   if jetFlags.usePFlow():
-    jtm.addJetFinder("AntiKt4EMPFlowJets",  "AntiKt", 0.4,   "empflow_reduced", "pflow_ungroomed", ghostArea=0.01, ptmin= 5000, ptminFilter= 10000, calibOpt=calibopt+":pflow")
+    jtm.addJetFinder("AntiKt4EMPFlowJets",  "AntiKt", 0.4,   "empflow_reduced", "pflow_ungroomed", ghostArea=0.01, ptmin= 5000, ptminFilter= ptminFilter_pFlow, calibOpt=calibopt+":pflow")
   if jetFlags.useTruth():
     jtm.addJetFinder("AntiKt4TruthJets",    "AntiKt", 0.4,    "truth", ptmin= 5000)
 elif jetFlags.detailLevel()>=JetContentDetail.Full:
@@ -50,11 +57,11 @@ elif jetFlags.detailLevel()>=JetContentDetail.Full:
     jtm.addJetFinder("AntiKt2PV0TrackJets", "AntiKt", 0.2, "pv0track", ptmin= 2000)
     jtm.addJetFinder("AntiKt4PV0TrackJets", "AntiKt", 0.4, "pv0track", ptmin= 2000)
   if jetFlags.useTopo():
-    jtm.addJetFinder("AntiKt4EMTopoJets",   "AntiKt", 0.4,   "emtopo", "emtopo_ungroomed", ghostArea=0.01, ptmin= 5000, ptminFilter= 15000, calibOpt=calibopt)
-    jtm.addJetFinder("AntiKt4LCTopoJets",   "AntiKt", 0.4,   "lctopo", "lctopo_ungroomed", ghostArea=0.01, ptmin= 5000, ptminFilter= 15000, calibOpt=calibopt)
+    jtm.addJetFinder("AntiKt4EMTopoJets",   "AntiKt", 0.4,   "emtopo", "emtopo_ungroomed", ghostArea=0.01, ptmin= 5000, ptminFilter=ptminFilter_topo, calibOpt=calibopt)
+    jtm.addJetFinder("AntiKt4LCTopoJets",   "AntiKt", 0.4,   "lctopo", "lctopo_ungroomed", ghostArea=0.01, ptmin= 5000, ptminFilter=ptminFilter_topo, calibOpt=calibopt)
     jtm.addJetFinder("AntiKt10LCTopoJets",  "AntiKt", 1.0,   "lctopo", "lctopo_ungroomed", ghostArea=0.01, ptmin= 40000, ptminFilter=50000, calibOpt="none")
   if jetFlags.usePFlow():
-    jtm.addJetFinder("AntiKt4EMPFlowJets",  "AntiKt", 0.4,   "empflow", "pflow_ungroomed", ghostArea=0.01, ptmin= 5000, ptminFilter= 10000, calibOpt=calibopt+":pflow")
+    jtm.addJetFinder("AntiKt4EMPFlowJets",  "AntiKt", 0.4,   "empflow", "pflow_ungroomed", ghostArea=0.01, ptmin= 5000, ptminFilter=ptminFilter_pFlow, calibOpt=calibopt+":pflow")
 if jetFlags.detailLevel()==JetContentDetail.Validation:
   jtm.addJetTrimmer( "AntiKt10LCTopoTrimmedPtFrac5SmallR20Jets",
                      rclus=0.2, ptfrac=0.05, input="AntiKt10LCTopoJets", modifiersin="lctopo_groomed" )