diff --git a/InnerDetector/InDetConfig/python/ITkTrackRecoConfig.py b/InnerDetector/InDetConfig/python/ITkTrackRecoConfig.py index 5185d3642cf928b37c9b951ce46ef453b5ccc8dd..c01caa50e7482ab72a424bdb01192fac99b22f0a 100644 --- a/InnerDetector/InDetConfig/python/ITkTrackRecoConfig.py +++ b/InnerDetector/InDetConfig/python/ITkTrackRecoConfig.py @@ -4,36 +4,15 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from AthenaConfiguration.Enums import Format -def ITkTrackParticleCreatorToolCfg(flags, name="ITkTrackParticleCreatorTool", **kwargs): - result = ComponentAccumulator() - if "TrackToVertex" not in kwargs: - from InDetConfig.TrackRecoConfig import TrackToVertexCfg - kwargs["TrackToVertex"] = result.popToolsAndMerge(TrackToVertexCfg(flags)) - if "TrackSummaryTool" not in kwargs: - from TrkConfig.TrkTrackSummaryToolConfig import ITkTrackSummaryToolSharedHitsCfg - TrackSummaryTool = result.popToolsAndMerge(ITkTrackSummaryToolSharedHitsCfg(flags)) - result.addPublicTool(TrackSummaryTool) - kwargs["TrackSummaryTool"] = TrackSummaryTool - kwargs.setdefault("BadClusterID", 3) # Select the mode to identify suspicous pixel cluster - kwargs.setdefault("KeepParameters", True) - kwargs.setdefault("KeepFirstParameters", False) - # need to treat Vertex specifically because at the time of - # the track particle creation the primary vertex does not yet exist. - # The problem is solved by first creating track particles wrt. the beam line - # and correcting the parameters after the vertex finding. - kwargs.setdefault("PerigeeExpression", "BeamLine" if flags.ITk.Tracking.perigeeExpression=="Vertex" - else flags.ITk.Tracking.perigeeExpression) - kwargs.setdefault("IBLParameterSvc", "") - ITkTrackParticleCreatorTool = CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs) - result.addPublicTool(ITkTrackParticleCreatorTool, primary=True) - return result - -def ITkTrackCollectionCnvToolCfg(flags, name="ITkTrackCollectionCnvTool", ITkTrackParticleCreator = None, **kwargs): +def ITkTrackCollectionCnvToolCfg(flags, name="ITkTrackCollectionCnvTool", **kwargs): result = ComponentAccumulator() - ITkTrackParticleCreator = result.getPrimaryAndMerge(ITkTrackParticleCreatorToolCfg(flags)) + if "TrackParticleCreator" not in kwargs: + from TrkConfig.TrkParticleCreatorConfig import ITkTrackParticleCreatorToolCfg + ITkTrackParticleCreator = result.getPrimaryAndMerge(ITkTrackParticleCreatorToolCfg(flags)) + result.addPublicTool(ITkTrackParticleCreator) + kwargs.setdefault("TrackParticleCreator", ITkTrackParticleCreator) - kwargs.setdefault("TrackParticleCreator", ITkTrackParticleCreator) result.setPrivateTools(CompFactory.xAODMaker.TrackCollectionCnvTool(name, **kwargs)) return result @@ -69,12 +48,16 @@ def ITkTrackParticleCnvAlgCfg(flags, name="ITkTrackParticleCnvAlg", TrackContain kwargs.setdefault("TrackContainerName", TrackContainerName) kwargs.setdefault("xAODContainerName", OutputTrackParticleContainer) kwargs.setdefault("xAODTrackParticlesFromTracksContainerName", OutputTrackParticleContainer) + if "TrackParticleCreator" not in kwargs: - kwargs["TrackParticleCreator"] = result.getPrimaryAndMerge(ITkTrackParticleCreatorToolCfg(flags)) + from TrkConfig.TrkParticleCreatorConfig import ITkTrackParticleCreatorToolCfg + kwargs["TrackParticleCreator"] = result.popToolsAndMerge(ITkTrackParticleCreatorToolCfg(flags)) if "TrackCollectionCnvTool" not in kwargs: + TrackParticleCreator = kwargs["TrackParticleCreator"] + result.addPublicTool(TrackParticleCreator) kwargs["TrackCollectionCnvTool"] = result.popToolsAndMerge(ITkTrackCollectionCnvToolCfg( flags, - TrackParticleCreator=kwargs["TrackParticleCreator"], + TrackParticleCreator=TrackParticleCreator, )) if flags.ITk.Tracking.doTruth: diff --git a/InnerDetector/InDetConfig/python/TRT_ElectronPidToolsConfig.py b/InnerDetector/InDetConfig/python/TRT_ElectronPidToolsConfig.py index 8bd54d944fefc0ffdf775ce71f7cb48d0f1732a9..61b38822f24e8c3bb39ef4fe7ae8c1bd805126b4 100644 --- a/InnerDetector/InDetConfig/python/TRT_ElectronPidToolsConfig.py +++ b/InnerDetector/InDetConfig/python/TRT_ElectronPidToolsConfig.py @@ -71,3 +71,8 @@ def TRT_ElectronPidToolCfg(flags, name="TRT_ElectronPidTool", **kwargs): acc.setPrivateTools(CompFactory.InDet.TRT_ElectronPidToolRun2(name, **kwargs)) return acc + +def GSFBuildTRT_ElectronPidToolCfg(flags, name="GSFBuildTRT_ElectronPidTool", **kwargs): + kwargs.setdefault("CalculateNNPid", False) + kwargs.setdefault("MinimumTrackPtForNNPid", 0.) + return TRT_ElectronPidToolCfg(flags, name, **kwargs) diff --git a/InnerDetector/InDetConfig/python/TrackRecoConfig.py b/InnerDetector/InDetConfig/python/TrackRecoConfig.py index 7a79e44eb9d383b7493829f8a848c6445c09539c..f3b1f12af7196811cabcab5847e06d69da10c137 100644 --- a/InnerDetector/InDetConfig/python/TrackRecoConfig.py +++ b/InnerDetector/InDetConfig/python/TrackRecoConfig.py @@ -14,90 +14,33 @@ def TrackToVertexCfg(flags, name="AtlasTrackToVertexTool", **kwargs): result.setPrivateTools(CompFactory.Reco.TrackToVertex(name, **kwargs)) return result -def TrackParticleCreatorToolCfg(flags, name="InDetxAODParticleCreatorTool", **kwargs): - - if flags.Detector.GeometryITk: - name = name.replace("InDet", "ITk") - from InDetConfig.ITkTrackRecoConfig import ITkTrackParticleCreatorToolCfg - return ITkTrackParticleCreatorToolCfg(flags, name, **kwargs) - +def RecTrackParticleContainerCnvToolCfg(flags, name="RecTrackParticleContainerCnvTool", **kwargs): result = ComponentAccumulator() - if "TrackToVertex" not in kwargs: - kwargs["TrackToVertex"] = result.popToolsAndMerge(TrackToVertexCfg(flags)) - if "TrackSummaryTool" not in kwargs: - from TrkConfig.TrkTrackSummaryToolConfig import InDetTrackSummaryToolSharedHitsCfg - TrackSummaryTool = result.popToolsAndMerge(InDetTrackSummaryToolSharedHitsCfg(flags)) - result.addPublicTool(TrackSummaryTool) - kwargs["TrackSummaryTool"] = TrackSummaryTool - - if "TRT_ElectronPidTool" not in kwargs : - from InDetConfig.TRT_ElectronPidToolsConfig import TRT_ElectronPidToolCfg - kwargs.setdefault("TRT_ElectronPidTool", result.popToolsAndMerge(TRT_ElectronPidToolCfg(flags, name="InDetTRT_ElectronPidTool"))) - - if 'PixelToTPIDTool' not in kwargs : - from InDetConfig.TrackingCommonConfig import InDetPixelToTPIDToolCfg - kwargs.setdefault("PixelToTPIDTool", result.popToolsAndMerge(InDetPixelToTPIDToolCfg(flags))) - - kwargs.setdefault("BadClusterID", 3) # Select the mode to identify suspicous pixel cluster - kwargs.setdefault("KeepParameters", True) - kwargs.setdefault("KeepFirstParameters", False) - # need to treat Vertex specifically because at the time of - # the track particle creation the primary vertex does not yet exist. - # The problem is solved by first creating track particles wrt. the beam line - # and correcting the parameters after the vertex finding. - kwargs.setdefault("PerigeeExpression", "BeamLine" if flags.InDet.Tracking.perigeeExpression=="Vertex" - else flags.InDet.Tracking.perigeeExpression) - result.addPublicTool(CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs), primary = True) - return result -def TrackParticleCreatorToolPIDCheckCfg(flags, name="InDetxAODParticleCreatorTool", **kwargs): - # Used only through tracking passes, where ActivePass flags are defined - if not flags.InDet.Tracking.ActivePass.RunTRTPID: - kwargs.setdefault("TRT_ElectronPidTool", None) - if not flags.InDet.Tracking.ActivePass.RunPixelPID: - kwargs.setdefault("PixelToTPIDTool", None) - - # have to create special public instance depending on PID tool configuration - if name=="InDetxAODParticleCreatorTool" : - pixel_pid = flags.InDet.Tracking.ActivePass.RunPixelPID - trt_pid = flags.InDet.Tracking.ActivePass.RunPixelPID - if not trt_pid and not pixel_pid : - name += "NoPID" - elif not trt_pid : - name += "NoTRTPID" - elif not pixel_pid : - name += "NoPixPID" - - return TrackParticleCreatorToolCfg(flags, name, **kwargs) - -def TrackParticleCreatorToolNoPIDCfg(flags, name="InDetxAODParticleCreatorToolNoPID", **kwargs): - - kwargs.setdefault("TRT_ElectronPidTool", None) - kwargs.setdefault("PixelToTPIDTool", None) - return TrackParticleCreatorToolCfg(flags, name, **kwargs) - -def RecTrackParticleContainerCnvToolCfg(flags, name="RecTrackParticleContainerCnvTool", TrackParticleCreator = None): - result = ComponentAccumulator() - if TrackParticleCreator is None: - TrackParticleCreator = result.getPrimaryAndMerge(TrackParticleCreatorToolCfg(flags)) - result.setPrivateTools(CompFactory.xAODMaker.RecTrackParticleContainerCnvTool(name, - TrackParticleCreator=TrackParticleCreator, - )) + if "TrackParticleCreator" not in kwargs: + from TrkConfig.TrkParticleCreatorConfig import TrackParticleCreatorToolCfg + TrackParticleCreator = result.popToolsAndMerge(TrackParticleCreatorToolCfg(flags)) + result.addPublicTool(TrackParticleCreator) + kwargs.setdefault("TrackParticleCreator", TrackParticleCreator) + + result.setPrivateTools(CompFactory.xAODMaker.RecTrackParticleContainerCnvTool(name, **kwargs)) return result -def TrackCollectionCnvToolCfg(flags, name="TrackCollectionCnvTool", TrackParticleCreator = None): +def TrackCollectionCnvToolCfg(flags, name="TrackCollectionCnvTool", **kwargs): if flags.Detector.GeometryITk: name = name.replace("InDet", "ITk") from InDetConfig.ITkTrackRecoConfig import ITkTrackCollectionCnvToolCfg - return ITkTrackCollectionCnvToolCfg(flags, name, TrackParticleCreator) + return ITkTrackCollectionCnvToolCfg(flags, name, **kwargs) result = ComponentAccumulator() - if TrackParticleCreator is None: - TrackParticleCreator = result.getPrimaryAndMerge(TrackParticleCreatorToolCfg(flags)) - result.setPrivateTools(CompFactory.xAODMaker.TrackCollectionCnvTool( - name, - TrackParticleCreator=TrackParticleCreator, - )) + + if "TrackParticleCreator" not in kwargs: + from TrkConfig.TrkParticleCreatorConfig import TrackParticleCreatorToolCfg + TrackParticleCreator = result.popToolsAndMerge(TrackParticleCreatorToolCfg(flags)) + result.addPublicTool(TrackParticleCreator) + kwargs.setdefault("TrackParticleCreator", TrackParticleCreator) + + result.setPrivateTools(CompFactory.xAODMaker.TrackCollectionCnvTool(name, **kwargs)) return result def TrackCollectionMergerAlgCfg(flags, name="InDetTrackCollectionMerger", @@ -144,12 +87,16 @@ def TrackParticleCnvAlgCfg(flags, name="TrackParticleCnvAlg", TrackContainerName kwargs.setdefault("TrackContainerName", TrackContainerName) kwargs.setdefault("xAODContainerName", OutputTrackParticleContainer) kwargs.setdefault("xAODTrackParticlesFromTracksContainerName", OutputTrackParticleContainer) + if "TrackParticleCreator" not in kwargs: - kwargs["TrackParticleCreator"] = result.getPrimaryAndMerge(TrackParticleCreatorToolCfg(flags)) + from TrkConfig.TrkParticleCreatorConfig import TrackParticleCreatorToolCfg + kwargs["TrackParticleCreator"] = result.popToolsAndMerge(TrackParticleCreatorToolCfg(flags)) if "TrackCollectionCnvTool" not in kwargs: + TrackParticleCreator = kwargs["TrackParticleCreator"] + result.addPublicTool(TrackParticleCreator) kwargs["TrackCollectionCnvTool"] = result.popToolsAndMerge(TrackCollectionCnvToolCfg( flags, - TrackParticleCreator=kwargs["TrackParticleCreator"], + TrackParticleCreator = TrackParticleCreator, )) if flags.InDet.doTruth: @@ -167,20 +114,18 @@ def TrackParticleCnvAlgCfg(flags, name="TrackParticleCnvAlg", TrackContainerName return result def TrackParticleCnvAlgPIDCheckCfg(flags, name, TrackContainerName, OutputTrackParticleContainer, **kwargs): - result = ComponentAccumulator() if "TrackParticleCreator" not in kwargs: - kwargs["TrackParticleCreator"] = result.getPrimaryAndMerge(TrackParticleCreatorToolPIDCheckCfg(flags)) - + from TrkConfig.TrkParticleCreatorConfig import TrackParticleCreatorToolPIDCheckCfg + kwargs["TrackParticleCreator"] = result.popToolsAndMerge(TrackParticleCreatorToolPIDCheckCfg(flags)) result.merge(TrackParticleCnvAlgCfg(flags, name, TrackContainerName, OutputTrackParticleContainer, **kwargs)) return result def TrackParticleCnvAlgNoPIDCfg(flags, name, TrackContainerName, OutputTrackParticleContainer, **kwargs): - result = ComponentAccumulator() if "TrackParticleCreator" not in kwargs: - kwargs["TrackParticleCreator"] = result.getPrimaryAndMerge(TrackParticleCreatorToolNoPIDCfg(flags)) - + from TrkConfig.TrkParticleCreatorConfig import TrackParticleCreatorToolNoPIDCfg + kwargs["TrackParticleCreator"] = result.popToolsAndMerge(TrackParticleCreatorToolNoPIDCfg(flags)) result.merge(TrackParticleCnvAlgCfg(flags, name, TrackContainerName, OutputTrackParticleContainer, **kwargs)) return result diff --git a/MuonSpectrometer/MuonConfig/python/MuonTrackBuildingConfig.py b/MuonSpectrometer/MuonConfig/python/MuonTrackBuildingConfig.py index ec2ffe698a1a09de306bde0ea3e13cda4529f38a..146a065c067f073f7420737ee0cd628a7d7c9795 100644 --- a/MuonSpectrometer/MuonConfig/python/MuonTrackBuildingConfig.py +++ b/MuonSpectrometer/MuonConfig/python/MuonTrackBuildingConfig.py @@ -434,20 +434,13 @@ def MuonTrackSelectorCfg(flags, name = "MuonTrackSelectorTool", **kwargs): return result def MuonStandaloneTrackParticleCnvAlgCfg(flags, name = "MuonStandaloneTrackParticleCnvAlg", **kwargs): - from InDetConfig.TrackRecoConfig import TrackCollectionCnvToolCfg, TrackParticleCnvAlgCfg, TrackParticleCreatorToolCfg, RecTrackParticleContainerCnvToolCfg - from MuonConfig.MuonRecToolsConfig import MuonHitSummaryToolCfg - from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg + from InDetConfig.TrackRecoConfig import TrackCollectionCnvToolCfg, TrackParticleCnvAlgCfg, RecTrackParticleContainerCnvToolCfg + from TrkConfig.TrkParticleCreatorConfig import MuonParticleCreatorToolCfg result = ComponentAccumulator() - track_summary_tool = result.popToolsAndMerge(MuonTrackSummaryToolCfg(flags)) - muon_hit_summary_tool = result.popToolsAndMerge(MuonHitSummaryToolCfg(flags)) - muon_particle_creator_tool = result.getPrimaryAndMerge( TrackParticleCreatorToolCfg(flags, name="MuonParticleCreatorTool", - TrackSummaryTool=track_summary_tool, - TRT_ElectronPidTool=None, - PixelToTPIDTool=None, - KeepAllPerigee=True, - MuonSummaryTool= muon_hit_summary_tool, - PerigeeExpression="Origin" ) ) + + muon_particle_creator_tool = result.popToolsAndMerge(MuonParticleCreatorToolCfg(flags)) + result.addPublicTool(muon_particle_creator_tool) track_collection_cnv_tool = result.getPrimaryAndMerge(TrackCollectionCnvToolCfg(flags, name = "MuonTrackCollectionCnvTool", TrackParticleCreator = muon_particle_creator_tool)) kwargs.setdefault("TrackParticleCreator", muon_particle_creator_tool) kwargs.setdefault("RecTrackParticleContainerCnvTool", result.getPrimaryAndMerge(RecTrackParticleContainerCnvToolCfg(flags, diff --git a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py index c2ed6bf8a15493042b5146bbacdb3f2351fe0032..f5ba070ca007c3cc146e27cee209c93493cce4eb 100644 --- a/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py +++ b/Reconstruction/MuonIdentification/MuonCombinedConfig/python/MuonCombinedRecToolsConfig.py @@ -95,38 +95,6 @@ def MuonCombinedInDetDetailedTrackSelectorTool_LRTCfg(flags, name='MuonCombinedI return MuonCombinedInDetDetailedTrackSelectorToolCfg(flags, name, **kwargs) -def MuonCombinedParticleCreatorCfg(flags, name="MuonCombinedParticleCreator", **kwargs): - from MuonConfig.MuonRecToolsConfig import MuonHitSummaryToolCfg - - result = ComponentAccumulator() - if flags.Muon.SAMuonTrigger: - from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg - kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(MuonTrackSummaryToolCfg(flags))) - else: - from TrkConfig.TrkTrackSummaryToolConfig import MuonCombinedTrackSummaryToolCfg - kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(MuonCombinedTrackSummaryToolCfg(flags))) - - if 'TrackToVertex' not in kwargs: - kwargs.setdefault('TrackToVertex', result.popToolsAndMerge( - MuonTrackToVertexCfg(flags))) - - # if "PixelToTPIDTool" not in kwargs and not flags.Muon.MuonTrigger and flags.GeoModel.Run < LHCPeriod.Run4: - # from InDetConfig.TrackingCommonConfig import InDetPixelToTPIDToolCfg - # kwargs.setdefault("PixelToTPIDTool", result.popToolsAndMerge( - # InDetPixelToTPIDToolCfg(flags))) - - kwargs.setdefault("KeepAllPerigee", True) - kwargs.setdefault("MuonSummaryTool", result.popToolsAndMerge( - MuonHitSummaryToolCfg(flags))) - if flags.Beam.Type is BeamType.Cosmics: - kwargs.setdefault("PerigeeExpression", "Origin") - kwargs.setdefault("IBLParameterSvc", - "IBLParameterSvc" if flags.Detector.GeometryID else "") - tool = CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs) - result.setPrivateTools(tool) - return result - - def InDetCandidateToolCfg(flags, name="InDetCandidateTool", **kwargs): result = MuonCombinedInDetDetailedTrackSelectorToolCfg(flags) kwargs.setdefault("TrackSelector", result.getPrimary()) @@ -150,31 +118,6 @@ def MuonInDetForwardCandidateToolCfg(flags, name='MuonInDetForwardCandidateTool return result # FIXME - is this and the above, actually used? -def MuonCaloParticleCreatorCfg(flags, name="MuonCaloParticleCreator", **kwargs): - from InDetConfig.TrackRecoConfig import TrackToVertexCfg - result = ComponentAccumulator() - if "TrackToVertex" not in kwargs: - kwargs["TrackToVertex"] = result.popToolsAndMerge( - TrackToVertexCfg(flags)) - - if flags.Muon.SAMuonTrigger: - from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg - kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge( - MuonTrackSummaryToolCfg(flags))) - else: - from TrkConfig.TrkTrackSummaryToolConfig import MuonCombinedTrackSummaryToolCfg - kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge( - MuonCombinedTrackSummaryToolCfg(flags))) - kwargs.setdefault("KeepAllPerigee", True) - kwargs.setdefault("PerigeeExpression", "Origin") - kwargs.setdefault("IBLParameterSvc", - "IBLParameterSvc" if flags.Detector.GeometryID else "") - track_particle_creator = CompFactory.Trk.TrackParticleCreatorTool( - name="MuonCaloParticleCreator", **kwargs) - result.setPrivateTools(track_particle_creator) - return result - - def MuonCaloEnergyToolCfg(flags, name="MuonCaloEnergyTool", **kwargs): from TrackToCalo.TrackToCaloConfig import ParticleCaloCellAssociationToolCfg, ParticleCaloExtensionToolCfg @@ -184,6 +127,7 @@ def MuonCaloEnergyToolCfg(flags, name="MuonCaloEnergyTool", **kwargs): particle_calo_extension_tool = result.popToolsAndMerge( ParticleCaloExtensionToolCfg(flags)) + from TrkConfig.TrkParticleCreatorConfig import MuonCaloParticleCreatorCfg track_particle_creator = result.popToolsAndMerge( MuonCaloParticleCreatorCfg(flags)) @@ -269,9 +213,8 @@ def MuonCreatorToolCfg(flags, name="MuonCreatorTool", **kwargs): kwargs.setdefault("ParticleCaloExtensionTool", acc.popPrivateTools()) result.merge(acc) - acc = MuonCombinedParticleCreatorCfg(flags) - kwargs.setdefault("TrackParticleCreator", acc.popPrivateTools()) - result.merge(acc) + from TrkConfig.TrkParticleCreatorConfig import MuonCombinedParticleCreatorCfg + kwargs.setdefault("TrackParticleCreator", result.popToolsAndMerge(MuonCombinedParticleCreatorCfg(flags))) from MuonConfig.MuonRecToolsConfig import MuonAmbiProcessorCfg kwargs.setdefault("AmbiguityProcessor", result.popToolsAndMerge(MuonAmbiProcessorCfg(flags))) diff --git a/Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilderConfig.py b/Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilderConfig.py index 4d8d099f9bd80b74b09a406bda7ca7b4e382291a..270bc7937143000ac56f1b8015966538ef4d8f58 100644 --- a/Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilderConfig.py +++ b/Reconstruction/egamma/egammaAlgs/python/EMBremCollectionBuilderConfig.py @@ -2,7 +2,6 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory -from AthenaConfiguration.Enums import LHCPeriod from AthenaCommon.Logging import logging @@ -23,34 +22,10 @@ def EMBremCollectionBuilderCfg(flags, egammaTrkRefitterToolCfg(flags)) if "TrackParticleCreatorTool" not in kwargs: - from InDetConfig.TrackRecoConfig import TrackToVertexCfg - - from InDetConfig.TRT_ElectronPidToolsConfig import ( - TRT_ElectronPidToolCfg) - from TrkConfig.TrkTrackSummaryToolConfig import GSFTrackSummaryToolCfg - TrackSummaryTool = acc.popToolsAndMerge(GSFTrackSummaryToolCfg(flags)) - acc.addPublicTool(TrackSummaryTool) - - gsfTrackParticleCreatorTool = CompFactory.Trk.TrackParticleCreatorTool( - name="GSFBuildInDetParticleCreatorTool", - KeepParameters=True, - TrackToVertex=acc.popToolsAndMerge(TrackToVertexCfg(flags)), - TrackSummaryTool=TrackSummaryTool, - PixelToTPIDTool=(CompFactory.InDet.PixelToTPIDTool( - name="GSFBuildPixelToTPIDTool") - if flags.GeoModel.Run < LHCPeriod.Run4 else None), - TRT_ElectronPidTool=(acc.popToolsAndMerge( - TRT_ElectronPidToolCfg( - flags, - name="GSFBuildTRT_ElectronPidTool", - CalculateNNPid=False, - MinimumTrackPtForNNPid=0.)) - if flags.Detector.EnableTRT else None), - BadClusterID=0, - IBLParameterSvc=( - "IBLParameterSvc" if flags.Detector.GeometryID else "") - ) - kwargs["TrackParticleCreatorTool"] = gsfTrackParticleCreatorTool + from TrkConfig.TrkParticleCreatorConfig import ( + GSFBuildInDetParticleCreatorToolCfg) + kwargs["TrackParticleCreatorTool"] = acc.popToolsAndMerge( + GSFBuildInDetParticleCreatorToolCfg(flags)) if "TrackSlimmingTool" not in kwargs: slimmingTool = CompFactory.Trk.TrackSlimmingTool( diff --git a/Tracking/TrkConfig/python/TrkParticleCreatorConfig.py b/Tracking/TrkConfig/python/TrkParticleCreatorConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..8867e1c742b8484b7f9ef4dc7815912e1b40587a --- /dev/null +++ b/Tracking/TrkConfig/python/TrkParticleCreatorConfig.py @@ -0,0 +1,239 @@ +# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +# Configuration of TrkParticleCreator package +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.ComponentFactory import CompFactory +from AthenaConfiguration.Enums import BeamType, LHCPeriod + +#################################### +##### InDet/ITk ##### +#################################### + +def TrackParticleCreatorToolCfg(flags, name="InDetxAODParticleCreatorTool", **kwargs): + + if flags.Detector.GeometryITk: + name = name.replace("InDet", "ITk") + return ITkTrackParticleCreatorToolCfg(flags, name, **kwargs) + + result = ComponentAccumulator() + if "TrackToVertex" not in kwargs: + from InDetConfig.TrackRecoConfig import TrackToVertexCfg + kwargs.setdefault("TrackToVertex", result.popToolsAndMerge(TrackToVertexCfg(flags))) + if "TrackSummaryTool" not in kwargs: + from TrkConfig.TrkTrackSummaryToolConfig import InDetTrackSummaryToolSharedHitsCfg + TrackSummaryTool = result.popToolsAndMerge(InDetTrackSummaryToolSharedHitsCfg(flags)) + result.addPublicTool(TrackSummaryTool) + kwargs.setdefault("TrackSummaryTool", TrackSummaryTool) + + if "TRT_ElectronPidTool" not in kwargs : + from InDetConfig.TRT_ElectronPidToolsConfig import TRT_ElectronPidToolCfg + kwargs.setdefault("TRT_ElectronPidTool", result.popToolsAndMerge(TRT_ElectronPidToolCfg(flags, name="InDetTRT_ElectronPidTool"))) + + if 'PixelToTPIDTool' not in kwargs : + from InDetConfig.TrackingCommonConfig import InDetPixelToTPIDToolCfg + kwargs.setdefault("PixelToTPIDTool", result.popToolsAndMerge(InDetPixelToTPIDToolCfg(flags))) + + kwargs.setdefault("BadClusterID", 3) # Select the mode to identify suspicous pixel cluster + kwargs.setdefault("KeepParameters", True) + kwargs.setdefault("KeepFirstParameters", False) + # need to treat Vertex specifically because at the time of + # the track particle creation the primary vertex does not yet exist. + # The problem is solved by first creating track particles wrt. the beam line + # and correcting the parameters after the vertex finding. + kwargs.setdefault("PerigeeExpression", "BeamLine" if flags.InDet.Tracking.perigeeExpression=="Vertex" + else flags.InDet.Tracking.perigeeExpression) + result.setPrivateTools(CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs)) + return result + +def TrackParticleCreatorToolPIDCheckCfg(flags, name="InDetxAODParticleCreatorTool", **kwargs): + # Used only through tracking passes, where ActivePass flags are defined + if not flags.InDet.Tracking.ActivePass.RunTRTPID: + kwargs.setdefault("TRT_ElectronPidTool", None) + if not flags.InDet.Tracking.ActivePass.RunPixelPID: + kwargs.setdefault("PixelToTPIDTool", None) + + # have to create special public instance depending on PID tool configuration + if name=="InDetxAODParticleCreatorTool" : + pixel_pid = flags.InDet.Tracking.ActivePass.RunPixelPID + trt_pid = flags.InDet.Tracking.ActivePass.RunPixelPID + if not trt_pid and not pixel_pid : + name += "NoPID" + elif not trt_pid : + name += "NoTRTPID" + elif not pixel_pid : + name += "NoPixPID" + + return TrackParticleCreatorToolCfg(flags, name, **kwargs) + +def TrackParticleCreatorToolNoPIDCfg(flags, name="InDetxAODParticleCreatorToolNoPID", **kwargs): + kwargs.setdefault("TRT_ElectronPidTool", None) + kwargs.setdefault("PixelToTPIDTool", None) + return TrackParticleCreatorToolCfg(flags, name, **kwargs) + +def InDetTrigParticleCreatorToolFTFCfg(flags, name="InDetTrigParticleCreatorToolFTF", **kwargs): + result = ComponentAccumulator() + + if "TrackToVertex" not in kwargs: + from TrigInDetConfig.TrigInDetConfig import TrigTrackToVertexCfg + kwargs.setdefault("TrackToVertex", result.popToolsAndMerge(TrigTrackToVertexCfg(flags))) + + if "TrackSummaryTool" not in kwargs: + from TrkConfig.TrkTrackSummaryToolConfig import InDetTrigTrackSummaryToolCfg + TrackSummaryTool = result.popToolsAndMerge( InDetTrigTrackSummaryToolCfg(flags, name="InDetTrigFastTrackSummaryTool") ) + result.addPublicTool(TrackSummaryTool) + kwargs.setdefault("TrackSummaryTool", TrackSummaryTool) + + kwargs.setdefault("KeepParameters", True) + kwargs.setdefault("ComputeAdditionalInfo", True) + + result.setPrivateTools(CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs)) + return result + +def ITkTrackParticleCreatorToolCfg(flags, name="ITkTrackParticleCreatorTool", **kwargs): + result = ComponentAccumulator() + + if "TrackToVertex" not in kwargs: + from InDetConfig.TrackRecoConfig import TrackToVertexCfg + kwargs.setdefault("TrackToVertex", result.popToolsAndMerge(TrackToVertexCfg(flags))) + if "TrackSummaryTool" not in kwargs: + from TrkConfig.TrkTrackSummaryToolConfig import ITkTrackSummaryToolSharedHitsCfg + TrackSummaryTool = result.popToolsAndMerge(ITkTrackSummaryToolSharedHitsCfg(flags)) + result.addPublicTool(TrackSummaryTool) + kwargs.setdefault("TrackSummaryTool", TrackSummaryTool) + kwargs.setdefault("BadClusterID", 3) # Select the mode to identify suspicous pixel cluster + kwargs.setdefault("KeepParameters", True) + kwargs.setdefault("KeepFirstParameters", False) + # need to treat Vertex specifically because at the time of + # the track particle creation the primary vertex does not yet exist. + # The problem is solved by first creating track particles wrt. the beam line + # and correcting the parameters after the vertex finding. + kwargs.setdefault("PerigeeExpression", "BeamLine" if flags.ITk.Tracking.perigeeExpression=="Vertex" + else flags.ITk.Tracking.perigeeExpression) + kwargs.setdefault("IBLParameterSvc", "") + + result.setPrivateTools(CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs)) + return result + + +#################################### +##### egamma ##### +#################################### + +def GSFBuildInDetParticleCreatorToolCfg(flags, name="GSFBuildInDetParticleCreatorTool", **kwargs): + result = ComponentAccumulator() + + if "TrackToVertex" not in kwargs: + from InDetConfig.TrackRecoConfig import TrackToVertexCfg + kwargs.setdefault("TrackToVertex", result.popToolsAndMerge(TrackToVertexCfg(flags))) + + if "TrackSummaryTool" not in kwargs: + from TrkConfig.TrkTrackSummaryToolConfig import GSFTrackSummaryToolCfg + TrackSummaryTool = result.popToolsAndMerge(GSFTrackSummaryToolCfg(flags)) + result.addPublicTool(TrackSummaryTool) + kwargs.setdefault("TrackSummaryTool", TrackSummaryTool) + + if flags.GeoModel.Run < LHCPeriod.Run4 and "PixelToTPIDTool" not in kwargs: + kwargs.setdefault("PixelToTPIDTool", CompFactory.InDet.PixelToTPIDTool(name="GSFBuildPixelToTPIDTool")) + + if flags.Detector.EnableTRT and "TRT_ElectronPidTool" not in kwargs : + from InDetConfig.TRT_ElectronPidToolsConfig import GSFBuildTRT_ElectronPidToolCfg + kwargs.setdefault("TRT_ElectronPidTool", result.popToolsAndMerge(GSFBuildTRT_ElectronPidToolCfg(flags))) + + kwargs.setdefault("KeepParameters", True) + kwargs.setdefault("BadClusterID", 0) + kwargs.setdefault("IBLParameterSvc", + "IBLParameterSvc" if flags.Detector.GeometryID else "") + + result.setPrivateTools(CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs)) + return result + + +#################################### +##### Muons ##### +#################################### + +def MuonParticleCreatorToolCfg(flags, name="MuonParticleCreatorTool", **kwargs): + result = ComponentAccumulator() + + if "TrackToVertex" not in kwargs: + from InDetConfig.TrackRecoConfig import TrackToVertexCfg + kwargs.setdefault("TrackToVertex", result.popToolsAndMerge( + TrackToVertexCfg(flags))) + + if "TrackSummaryTool" not in kwargs: + from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg + kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge( + MuonTrackSummaryToolCfg(flags))) + + if "MuonSummaryTool" not in kwargs: + from MuonConfig.MuonRecToolsConfig import MuonHitSummaryToolCfg + kwargs.setdefault("MuonSummaryTool", result.popToolsAndMerge( + MuonHitSummaryToolCfg(flags))) + + kwargs.setdefault("KeepAllPerigee", True) + kwargs.setdefault("PerigeeExpression", "Origin") + kwargs.setdefault("IBLParameterSvc", + "IBLParameterSvc" if flags.Detector.GeometryID else "") + + result.setPrivateTools(CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs)) + return result + +def MuonCombinedParticleCreatorCfg(flags, name="MuonCombinedParticleCreator", **kwargs): + result = ComponentAccumulator() + + if "TrackSummaryTool" not in kwargs: + if flags.Muon.SAMuonTrigger: + from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg + kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(MuonTrackSummaryToolCfg(flags))) + else: + from TrkConfig.TrkTrackSummaryToolConfig import MuonCombinedTrackSummaryToolCfg + kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(MuonCombinedTrackSummaryToolCfg(flags))) + + if "TrackToVertex" not in kwargs: + from MuonCombinedConfig.MuonCombinedRecToolsConfig import MuonTrackToVertexCfg + kwargs.setdefault('TrackToVertex', result.popToolsAndMerge( + MuonTrackToVertexCfg(flags))) + + if "MuonSummaryTool" not in kwargs: + from MuonConfig.MuonRecToolsConfig import MuonHitSummaryToolCfg + kwargs.setdefault("MuonSummaryTool", result.popToolsAndMerge( + MuonHitSummaryToolCfg(flags))) + + # if "PixelToTPIDTool" not in kwargs and not flags.Muon.MuonTrigger and flags.GeoModel.Run < LHCPeriod.Run4: + # from InDetConfig.TrackingCommonConfig import InDetPixelToTPIDToolCfg + # kwargs.setdefault("PixelToTPIDTool", result.popToolsAndMerge( + # InDetPixelToTPIDToolCfg(flags))) + + kwargs.setdefault("KeepAllPerigee", True) + if flags.Beam.Type is BeamType.Cosmics: + kwargs.setdefault("PerigeeExpression", "Origin") + kwargs.setdefault("IBLParameterSvc", + "IBLParameterSvc" if flags.Detector.GeometryID else "") + + result.setPrivateTools(CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs)) + return result + +def MuonCaloParticleCreatorCfg(flags, name="MuonCaloParticleCreator", **kwargs): + result = ComponentAccumulator() + + if "TrackToVertex" not in kwargs: + from InDetConfig.TrackRecoConfig import TrackToVertexCfg + kwargs.setdefault("TrackToVertex", result.popToolsAndMerge( + TrackToVertexCfg(flags))) + + if "TrackSummaryTool" not in kwargs: + if flags.Muon.SAMuonTrigger: + from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg + kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge( + MuonTrackSummaryToolCfg(flags))) + else: + from TrkConfig.TrkTrackSummaryToolConfig import MuonCombinedTrackSummaryToolCfg + kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge( + MuonCombinedTrackSummaryToolCfg(flags))) + + kwargs.setdefault("KeepAllPerigee", True) + kwargs.setdefault("PerigeeExpression", "Origin") + kwargs.setdefault("IBLParameterSvc", + "IBLParameterSvc" if flags.Detector.GeometryID else "") + + result.setPrivateTools(CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs)) + return result diff --git a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py index 1f1fbb061fa59cd39698192cb5f4df65ad18355f..663b6e382dafef6add20d4fc63dcebb4b8b9c491 100644 --- a/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py +++ b/Trigger/TrigTools/TrigInDetConfig/python/TrigInDetConfig.py @@ -293,18 +293,10 @@ def TrigTrackToVertexCfg(flags, name = 'TrigTrackToVertexTool', **kwargs ): def _trackConverterCfg(flags, signature, inputTracksKey, outputTrackParticleKey): acc = ComponentAccumulator() - from TrkConfig.TrkTrackSummaryToolConfig import InDetTrigTrackSummaryToolCfg - summaryTool = acc.popToolsAndMerge( InDetTrigTrackSummaryToolCfg(flags, name="InDetTrigFastTrackSummaryTool") ) - acc.addPublicTool(summaryTool) - - track_to_vertex = acc.popToolsAndMerge( TrigTrackToVertexCfg(flags) ) - creatorTool = CompFactory.Trk.TrackParticleCreatorTool( name = "InDetTrigParticleCreatorToolFTF", - TrackSummaryTool = summaryTool, - TrackToVertex = track_to_vertex, - KeepParameters = True, - ComputeAdditionalInfo = True, - ) + from TrkConfig.TrkParticleCreatorConfig import InDetTrigParticleCreatorToolFTFCfg + creatorTool = acc.popToolsAndMerge(InDetTrigParticleCreatorToolFTFCfg(flags)) acc.addPublicTool(creatorTool) + from TrigEDMConfig.TriggerEDMRun3 import recordable trackParticleCnv=CompFactory.InDet.TrigTrackingxAODCnvMT(name = "InDetTrigTrackParticleCreatorAlg" + signature, TrackName = inputTracksKey, diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerRecoConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerRecoConfig.py index 132b08abd6d0a13487c765a9bd87cb38ad96f463..6238e6f02d11ecbd7813f7d713620b086310001a 100644 --- a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerRecoConfig.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerRecoConfig.py @@ -245,12 +245,14 @@ def Run1xAODConversionCfg(flags): from TrigEDMConfig.TriggerEDM import getTriggerEDMList from TrigEDMConfig.TriggerEDM import getEFRun1BSList,getEFRun2EquivalentList,getL2Run1BSList,getL2Run2EquivalentList - from InDetConfig.TrackRecoConfig import TrackCollectionCnvToolCfg,TrackParticleCreatorToolCfg,RecTrackParticleContainerCnvToolCfg - partCreatorTool = acc.getPrimaryAndMerge( TrackParticleCreatorToolCfg(flags, - #name="InDetxAODParticleCreatorTool" - PixelToTPIDTool=None - ) - ) + from TrkConfig.TrkParticleCreatorConfig import TrackParticleCreatorToolCfg + partCreatorTool = acc.popToolsAndMerge(TrackParticleCreatorToolCfg(flags, + PixelToTPIDTool=None + ) + ) + acc.addPublicTool(partCreatorTool) + + from InDetConfig.TrackRecoConfig import TrackCollectionCnvToolCfg,RecTrackParticleContainerCnvToolCfg trackCollCnvTool = acc.popToolsAndMerge(TrackCollectionCnvToolCfg(flags, name="TrackCollectionCnvTool", TrackParticleCreator= partCreatorTool diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Muon/generateMuon.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Muon/generateMuon.py index e102e47b1785691e922e3200049d96dde4d5a838..5fa600b78227bde17792157fad4a77ecbfffee6c 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Muon/generateMuon.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Muon/generateMuon.py @@ -138,10 +138,8 @@ def MuonTrackCollectionCnvToolCfg(flags, name = "MuonTrackCollectionCnvTool", ** TrackCollectionCnvTool = CompFactory.xAODMaker.TrackCollectionCnvTool result = ComponentAccumulator() - from MuonCombinedConfig.MuonCombinedRecToolsConfig import MuonCombinedParticleCreatorCfg - acc = MuonCombinedParticleCreatorCfg(flags) - kwargs.setdefault("TrackParticleCreator", acc.popPrivateTools()) - result.merge(acc) + from TrkConfig.TrkParticleCreatorConfig import MuonCombinedParticleCreatorCfg + kwargs.setdefault("TrackParticleCreator", result.popToolsAndMerge(MuonCombinedParticleCreatorCfg(flags))) result.setPrivateTools(TrackCollectionCnvTool(name=name, **kwargs)) return result @@ -150,10 +148,8 @@ def MuonRecTrackParticleContainerCnvToolCfg(flags, name = "MuonRecTrackParticleC RecTrackParticleCnvTool = CompFactory.xAODMaker.RecTrackParticleContainerCnvTool result = ComponentAccumulator() - from MuonCombinedConfig.MuonCombinedRecToolsConfig import MuonCombinedParticleCreatorCfg - acc = MuonCombinedParticleCreatorCfg(flags) - kwargs.setdefault("TrackParticleCreator", acc.popPrivateTools()) - result.merge(acc) + from TrkConfig.TrkParticleCreatorConfig import MuonCombinedParticleCreatorCfg + kwargs.setdefault("TrackParticleCreator", result.popToolsAndMerge(MuonCombinedParticleCreatorCfg(flags))) result.setPrivateTools(RecTrackParticleCnvTool(name=name, **kwargs)) return result @@ -162,12 +158,10 @@ def MuonTrackParticleCnvCfg(flags, name = "MuonTrackParticleCnvAlg",**kwargs): TrackParticleCnv = CompFactory.xAODMaker.TrackParticleCnvAlg result=ComponentAccumulator() - from MuonCombinedConfig.MuonCombinedRecToolsConfig import MuonCombinedParticleCreatorCfg - acc = MuonCombinedParticleCreatorCfg(flags) - particleCreator = acc.popPrivateTools() + from TrkConfig.TrkParticleCreatorConfig import MuonCombinedParticleCreatorCfg + particleCreator = result.popToolsAndMerge(MuonCombinedParticleCreatorCfg(flags)) result.addPublicTool(particleCreator) # Still public in TrackParticleCnvAlg kwargs.setdefault("TrackParticleCreator", particleCreator) - result.merge(acc) acc = MuonTrackCollectionCnvToolCfg(flags) kwargs.setdefault("TrackCollectionCnvTool", acc.popPrivateTools())