diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValDecorationConfig.py b/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValDecorationConfig.py
index befd056ddfb73a11762aba9270406ca1b4589373..632b575c65cb5a6a8db12a0b8c55a92b390b623c 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValDecorationConfig.py
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValDecorationConfig.py
@@ -44,7 +44,7 @@ def canAddDecorator(flags):
     if not (flags.Detector.GeometryID or flags.Detector.GeometryITk):
         return False
 
-    return "StreamESD" in flags.Input.ProcessingTags or "StreamAOD" in flags.Input.ProcessingTags
+    return ("StreamESD" in flags.Input.ProcessingTags or "StreamAOD" in flags.Input.ProcessingTags) and flags.IDPVM.runDecoration
 
     '''
     if rec.readTAG:
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValFlags.py b/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValFlags.py
index a238485928e401fb726337eb0e1a501da271b27b..99e0c43bcecf705d41e18fea374d533bbee774aa 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValFlags.py
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValFlags.py
@@ -22,6 +22,7 @@ def createIDPVMConfigFlags():
     icf.addFlag("IDPVM.doTruthOriginPlots", False )
     icf.addFlag("IDPVM.doPerAuthorPlots", False )
     icf.addFlag("IDPVM.doHitLevelPlots", False )
+    icf.addFlag("IDPVM.runDecoration", True )
     icf.addFlag("IDPVM.setTruthStrategy", "HardScatter" )
     icf.addFlag("IDPVM.validateExtraTrackCollections", [] ) # List of extra track collection names to be validated in addition to Tracks.
     icf.addFlag("IDPVM.ancestorIDs", [] )
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValMonitoringConfig.py b/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValMonitoringConfig.py
index 126160a3a845a1e6b7797ba654aa66d414b7f87e..f17195c5db3217595357c322e7821899ca1c65b5 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValMonitoringConfig.py
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/python/InDetPhysValMonitoringConfig.py
@@ -35,10 +35,13 @@ def InDetRttTruthSelectionToolCfg(flags, name="InDetRttTruthSelectionTool", **kw
         kwargs.setdefault("maxEta", 2.5)
     kwargs.setdefault("minPt", 500.)
 
-    from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
-    extrapolator = acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags))
-    acc.addPublicTool(extrapolator)  # TODO: migrate to private?
-    kwargs.setdefault("Extrapolator", extrapolator)
+    if "radiusCylinder" in kwargs or "zDisc" in kwargs:
+        from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
+        extrapolator = acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags))
+        acc.addPublicTool(extrapolator)  # TODO: migrate to private?
+        kwargs.setdefault("Extrapolator", extrapolator)
+    else:
+        kwargs.setdefault("Extrapolator", None)
 
     tool = CompFactory.AthTruthSelectionTool(name = name, **kwargs)
     acc.setPrivateTools(tool)
@@ -95,7 +98,7 @@ def InDetPhysValMonitoringToolCfg(flags, **kwargs):
         kwargs.setdefault("doPerAuthorPlots",      flags.IDPVM.doPerAuthorPlots)
         kwargs.setdefault("doHitLevelPlots",       flags.IDPVM.doHitLevelPlots)
 
-        # adding the VeretxTruthMatchingTool
+        # adding the VertexTruthMatchingTool
         VertexTruthMatchTool = acc.popToolsAndMerge(InDetVertexTruthMatchToolCfg(flags))
         kwargs.setdefault("useVertexTruthMatchTool", True)
         kwargs.setdefault("VertexTruthMatchTool", VertexTruthMatchTool)
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/scripts/runIDPVM.py b/InnerDetector/InDetValidation/InDetPhysValMonitoring/scripts/runIDPVM.py
index 1f13a652bc457afd062c324259f3236c795416ba..954e62b0da2ae956edb5d9cc8734e59bb51e01e7 100755
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/scripts/runIDPVM.py
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/scripts/runIDPVM.py
@@ -21,6 +21,7 @@ def GetCustomAthArgs():
     IDPVMparser.add_argument("--doMuonMatchedTracks", help='run plots for tracks matched to true muons', action='store_true', default=False)
     IDPVMparser.add_argument("--doElectronMatchedTracks", help='run plots for tracks matched to true electrons', action='store_true', default=False)
     IDPVMparser.add_argument("--doTruthToRecoNtuple", help='output track-to-truth ntuple', action='store_true', default=False)
+    IDPVMparser.add_argument("--disableDecoration", help='disable extra track and truth decoration if possible', action='store_true', default=False)
     IDPVMparser.add_argument("--hardScatterStrategy", help='Strategy to select the hard scatter. 0 = SumPt² 1 = SumPt', choices=["0","1"], default="0")
     IDPVMparser.add_argument("--outputFile", help='Name of output file',default="M_output.root")
     IDPVMparser.add_argument("--HSFlag", help='Hard-scatter flag - decides what is used for truth matching', choices=['HardScatter', 'All', 'PileUp'],default="HardScatter")
@@ -43,6 +44,7 @@ ConfigFlags.IDPVM.doValidateMuonMatchedTracks = MyArgs.doMuonMatchedTracks
 ConfigFlags.IDPVM.doValidateElectronMatchedTracks = MyArgs.doElectronMatchedTracks
 ConfigFlags.IDPVM.doPerAuthorPlots = MyArgs.doPerAuthor
 ConfigFlags.IDPVM.doHitLevelPlots = MyArgs.doHitLevelPlots
+ConfigFlags.IDPVM.runDecoration = not MyArgs.disableDecoration
 ConfigFlags.IDPVM.ancestorIDs = MyArgs.ancestorIDList
 ConfigFlags.IDPVM.hardScatterStrategy = int(MyArgs.hardScatterStrategy)
 
diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/AthTruthSelectionTool.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/AthTruthSelectionTool.cxx
index 1868ede0dd279326139951004e582129ccef6b3c..674b2c74d2469a1a44bd1e4e40c400e74d0590d4 100644
--- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/AthTruthSelectionTool.cxx
+++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/AthTruthSelectionTool.cxx
@@ -247,7 +247,7 @@ AthTruthSelectionTool::initialize() {
   }
   ATH_MSG_INFO(msg);
 
-  ATH_CHECK(m_extrapolator.retrieve());
+  ATH_CHECK(m_extrapolator.retrieve(EnableTool{ m_radiusCylinder > 0 || m_zDisc >0 }));
 
   return StatusCode::SUCCESS;
 }