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; }