From ba46a38c45f719b32a9c5585a88694cdfa214b86 Mon Sep 17 00:00:00 2001 From: Thomas Strebler <thomas.strebler@cern.ch> Date: Wed, 24 Aug 2022 15:30:33 +0200 Subject: [PATCH] CA-tracking configuration SiSpacePointsSeedTool + SiZvertexTool CA-tracking configuration SiSpacePointsSeedTool + SiZvertexTool --- .../python/ITkTrackingSiPatternConfig.py | 104 ++++--------- .../python/SiSpacePointsSeedToolConfig.py | 142 ++++++++++++++++++ .../InDetConfig/python/SiZvertexToolConfig.py | 23 +++ .../python/TrackingSiPatternConfig.py | 138 +++-------------- .../python/ActsTrkSeedingToolConfig.py | 5 +- 5 files changed, 215 insertions(+), 197 deletions(-) create mode 100644 InnerDetector/InDetConfig/python/SiSpacePointsSeedToolConfig.py create mode 100644 InnerDetector/InDetConfig/python/SiZvertexToolConfig.py diff --git a/InnerDetector/InDetConfig/python/ITkTrackingSiPatternConfig.py b/InnerDetector/InDetConfig/python/ITkTrackingSiPatternConfig.py index eb2ca7d10c9b..44cef1dff9ee 100644 --- a/InnerDetector/InDetConfig/python/ITkTrackingSiPatternConfig.py +++ b/InnerDetector/InDetConfig/python/ITkTrackingSiPatternConfig.py @@ -3,55 +3,7 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from AthenaConfiguration.Enums import BeamType -def ITkSiSpacePointsSeedMakerCfg(flags, name="ITkSpSeedsMaker", InputCollections = None, **kwargs) : - acc = ComponentAccumulator() - # - # --- Space points seeds maker, use different ones for cosmics and collisions - # - SiSpacePointsSeedMaker = CompFactory.ITk.SiSpacePointsSeedMaker - - kwargs.setdefault("pTmin", flags.ITk.Tracking.ActivePass.minPTSeed ) - kwargs.setdefault("maxdImpact", flags.ITk.Tracking.ActivePass.maxPrimaryImpactSeed ) - kwargs.setdefault("maxZ", flags.ITk.Tracking.ActivePass.maxZImpactSeed ) - kwargs.setdefault("minZ", -flags.ITk.Tracking.ActivePass.maxZImpactSeed ) - kwargs.setdefault("usePixel", flags.ITk.Tracking.ActivePass.useITkPixel and flags.ITk.Tracking.ActivePass.useITkPixelSeeding) - kwargs.setdefault("SpacePointsPixelName", 'ITkPixelSpacePoints') - kwargs.setdefault("useStrip", flags.ITk.Tracking.ActivePass.useITkStrip and flags.ITk.Tracking.ActivePass.useITkStripSeeding) - kwargs.setdefault("SpacePointsStripName", 'ITkStripSpacePoints') - kwargs.setdefault("useOverlapSpCollection", flags.ITk.Tracking.ActivePass.useITkStrip and flags.ITk.Tracking.ActivePass.useITkStripSeeding ) - kwargs.setdefault("SpacePointsOverlapName", 'ITkOverlapSpacePoints') - kwargs.setdefault("radMax", flags.ITk.Tracking.ActivePass.radMax) - kwargs.setdefault("etaMax", flags.ITk.Tracking.ActivePass.maxEta ) - - if (len(InputCollections) > 0) and flags.ITk.Tracking.ActivePass.usePrdAssociationTool: - # not all classes have that property !!! - kwargs.setdefault("PRDtoTrackMap", 'ITkPRDtoTrackMap'+ flags.ITk.Tracking.ActivePass.extension) - if flags.Beam.Type is not BeamType.Cosmics: - kwargs.setdefault("maxRadius1", 0.75*flags.ITk.Tracking.ActivePass.radMax) - kwargs.setdefault("maxRadius2", flags.ITk.Tracking.ActivePass.radMax) - kwargs.setdefault("maxRadius3", flags.ITk.Tracking.ActivePass.radMax) - - if flags.ITk.Tracking.doFastTracking : - kwargs.setdefault("useFastTracking", True) - kwargs.setdefault("maxSeedsForSpacePoint", 3) - - if flags.ITk.Tracking.ActivePass.extension == "LargeD0": - kwargs.setdefault("maxSeedsForSpacePoint", 5) - kwargs.setdefault("isLRT", True) - kwargs.setdefault("maxZPPP", flags.ITk.Tracking.ActivePass.maxZSpacePointsPPPSeeds) - kwargs.setdefault("maxZSSS", flags.ITk.Tracking.ActivePass.maxZSpacePointsSSSSeeds) - - if flags.ITk.Tracking.writeSeedValNtuple: - kwargs.setdefault("WriteNtuple", True) - HistService = CompFactory.THistSvc(Output = ["valNtuples DATAFILE='SeedMakerValidation.root' OPT='RECREATE'"]) - acc.addService(HistService) - - ITkSiSpacePointsSeedMaker = SiSpacePointsSeedMaker (name = name+flags.ITk.Tracking.ActivePass.extension, **kwargs) - - acc.setPrivateTools(ITkSiSpacePointsSeedMaker) - return acc - -def ITkSiTrackMaker_xkCfg(flags, name="ITkSiTrackMaker", InputCollections = None, **kwargs) : +def ITkSiTrackMaker_xkCfg(flags, name="ITkSiTrackMaker", **kwargs) : acc = ComponentAccumulator() from InDetConfig.SiDetElementsRoadToolConfig import ITkSiDetElementsRoadMaker_xkCfg @@ -92,7 +44,7 @@ def ITkSiTrackMaker_xkCfg(flags, name="ITkSiTrackMaker", InputCollections = None kwargs.setdefault("EMROIPhiRZContainer", "ITkCaloClusterROIPhiRZ0GeV") kwargs.setdefault("HadROIPhiRZContainer", "ITkHadCaloClusterROIPhiRZ") - kwargs.setdefault("UseAssociationTool", (len(InputCollections) > 0) and (flags.ITk.Tracking.ActivePass.usePrdAssociationTool)) + kwargs.setdefault("UseAssociationTool", flags.ITk.Tracking.ActivePass.usePrdAssociationTool) kwargs.setdefault("ITKGeometry", True) if flags.Beam.Type is BeamType.Cosmics: @@ -122,39 +74,37 @@ def ITkSiTrackMaker_xkCfg(flags, name="ITkSiTrackMaker", InputCollections = None acc.setPrivateTools(ITkSiTrackMaker) return acc -def ITkSiSPSeededTrackFinderCfg(flags, name="ITkSiSpTrackFinder", InputCollections = None, SiSPSeededTrackCollectionKey = None, **kwargs) : +def ITkSiSPSeededTrackFinderCfg(flags, name="ITkSiSpTrackFinder", **kwargs) : acc = ComponentAccumulator() - # set output track collection name - # - SiTrackCollection = SiSPSeededTrackCollectionKey - - ITkSiTrackMaker = acc.popToolsAndMerge(ITkSiTrackMaker_xkCfg(flags, - InputCollections = InputCollections )) + ITkSiTrackMaker = acc.popToolsAndMerge(ITkSiTrackMaker_xkCfg(flags)) from TrkConfig.TrkExRungeKuttaPropagatorConfig import ITkPropagatorCfg ITkPropagator = acc.popToolsAndMerge(ITkPropagatorCfg(flags)) acc.addPublicTool(ITkPropagator) from TrkConfig.TrkTrackSummaryToolConfig import ITkTrackSummaryToolNoHoleSearchCfg ITkTrackSummaryToolNoHoleSearch = acc.getPrimaryAndMerge(ITkTrackSummaryToolNoHoleSearchCfg(flags)) - ITkSiSpacePointsSeedMaker = None - if flags.ITk.Tracking.ActivePass.extension != "ConversionFinding" and flags.Acts.TrackFinding.useSiSpacePointSeedMaker: - from ActsTrkSeedingTool.ActsTrkSeedingToolConfig import ActsTrkSiSpacePointsSeedMakerCfg - ITkSiSpacePointsSeedMaker = acc.popToolsAndMerge(ActsTrkSiSpacePointsSeedMakerCfg(flags, - InputCollections = InputCollections)) - else: - ITkSiSpacePointsSeedMaker = acc.popToolsAndMerge(ITkSiSpacePointsSeedMakerCfg(flags, - InputCollections = InputCollections)) + + if "SeedsTool" not in kwargs: + ITkSiSpacePointsSeedMaker = None + + if flags.ITk.Tracking.ActivePass.extension != "ConversionFinding" and flags.Acts.TrackFinding.useSiSpacePointSeedMaker: + from ActsTrkSeedingTool.ActsTrkSeedingToolConfig import ActsTrkSiSpacePointsSeedMakerCfg + ITkSiSpacePointsSeedMaker = acc.popToolsAndMerge(ActsTrkSiSpacePointsSeedMakerCfg(flags)) + else: + from InDetConfig.SiSpacePointsSeedToolConfig import ITkSiSpacePointsSeedMakerCfg + ITkSiSpacePointsSeedMaker = acc.popToolsAndMerge(ITkSiSpacePointsSeedMakerCfg(flags)) + + kwargs.setdefault("SeedsTool", ITkSiSpacePointsSeedMaker) + # # --- Setup Track finder using space points seeds # kwargs.setdefault("TrackTool", ITkSiTrackMaker) kwargs.setdefault("PropagatorTool", ITkPropagator) - if (len(InputCollections) > 0) and flags.ITk.Tracking.ActivePass.usePrdAssociationTool: + if flags.ITk.Tracking.ActivePass.usePrdAssociationTool: # not all classes have that property !!! kwargs.setdefault("PRDtoTrackMap", 'ITkPRDtoTrackMap'+ flags.ITk.Tracking.ActivePass.extension) kwargs.setdefault("TrackSummaryTool", ITkTrackSummaryToolNoHoleSearch) - kwargs.setdefault("TracksLocation", SiTrackCollection) - kwargs.setdefault("SeedsTool", ITkSiSpacePointsSeedMaker) kwargs.setdefault("useZvertexTool", False) kwargs.setdefault("useZBoundFinding", flags.ITk.Tracking.ActivePass.doZBoundary) kwargs.setdefault("ITKGeometry", True) @@ -173,7 +123,7 @@ def ITkSiSPSeededTrackFinderCfg(flags, name="ITkSiSpTrackFinder", InputCollectio acc.addEventAlgo(ITkSiSPSeededTrackFinder) return acc -def ITkSiSPSeededTrackFinderROIConvCfg(flags, name="ITkSiSpTrackFinderROIConv", InputCollections = None, SiSPSeededTrackCollectionKey = None, **kwargs) : +def ITkSiSPSeededTrackFinderROIConvCfg(flags, name="ITkSiSpTrackFinderROIConv", **kwargs) : from InDetConfig.InDetCaloClusterROISelectorConfig import ITkCaloClusterROIPhiRZContainerMakerCfg acc = ITkCaloClusterROIPhiRZContainerMakerCfg(flags) @@ -184,10 +134,7 @@ def ITkSiSPSeededTrackFinderROIConvCfg(flags, name="ITkSiSpTrackFinderROIConv", kwargs.setdefault("useITkConvSeeded", True) kwargs.setdefault("EMROIPhiRZContainer", "ITkCaloClusterROIPhiRZ15GeVUnordered") - acc.merge(ITkSiSPSeededTrackFinderCfg(flags, name = name, - InputCollections = InputCollections, - SiSPSeededTrackCollectionKey = SiSPSeededTrackCollectionKey, - **kwargs)) + acc.merge(ITkSiSPSeededTrackFinderCfg(flags, name, **kwargs)) return acc def ITkCopyAlgForAmbiCfg(flags, name="ITkCopyAlgForAmbi", InputTrackCollection = None, OutputTrackCollection = None, **kwargs) : @@ -204,12 +151,16 @@ def ITkCopyAlgForAmbiCfg(flags, name="ITkCopyAlgForAmbi", InputTrackCollection = # ----------- Setup Si Pattern for New tracking # # ------------------------------------------------------------ -def ITkTrackingSiPatternCfg(flags, InputCollections = None, ResolvedTrackCollectionKey = None, SiSPSeededTrackCollectionKey = None , ClusterSplitProbContainer=''): +def ITkTrackingSiPatternCfg(flags, + InputCollections = None, + ResolvedTrackCollectionKey = None, + SiSPSeededTrackCollectionKey = None , + ClusterSplitProbContainer=''): acc = ComponentAccumulator() # # --- get list of already associated hits (always do this, even if no other tracking ran before) # - if (len(InputCollections) > 0) and flags.ITk.Tracking.ActivePass.usePrdAssociationTool: + if flags.ITk.Tracking.ActivePass.usePrdAssociationTool: from InDetConfig.InDetTrackPRD_AssociationConfig import ITkTrackPRD_AssociationCfg acc.merge(ITkTrackPRD_AssociationCfg(flags, name = 'ITkTrackPRD_Association' + flags.ITk.Tracking.ActivePass.extension, @@ -225,8 +176,7 @@ def ITkTrackingSiPatternCfg(flags, InputCollections = None, ResolvedTrackCollect if flags.ITk.Tracking.ActivePass.extension == "ConversionFinding": SiSPSeededTrackFinderCfg = ITkSiSPSeededTrackFinderROIConvCfg acc.merge(SiSPSeededTrackFinderCfg( flags, - InputCollections = InputCollections, - SiSPSeededTrackCollectionKey = SiSPSeededTrackCollectionKey)) + TracksLocation = SiSPSeededTrackCollectionKey)) # ------------------------------------------------------------ # # ---------- Ambiguity solving diff --git a/InnerDetector/InDetConfig/python/SiSpacePointsSeedToolConfig.py b/InnerDetector/InDetConfig/python/SiSpacePointsSeedToolConfig.py new file mode 100644 index 000000000000..067d4dd3b8d3 --- /dev/null +++ b/InnerDetector/InDetConfig/python/SiSpacePointsSeedToolConfig.py @@ -0,0 +1,142 @@ +# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +# Configuration of SiSpacePointsSeedTool_xk package +from AthenaConfiguration.ComponentFactory import CompFactory +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.Enums import BeamType + +def SiSpacePointsSeedMakerCfg(flags, name="InDetSpSeedsMaker", **kwargs) : + acc = ComponentAccumulator() + # + # --- Space points seeds maker, use different ones for cosmics and collisions + # + if flags.Beam.Type is BeamType.Cosmics: + SiSpacePointsSeedMaker = CompFactory.InDet.SiSpacePointsSeedMaker_Cosmic + elif flags.Reco.EnableHI: + SiSpacePointsSeedMaker = CompFactory.InDet.SiSpacePointsSeedMaker_HeavyIon + elif flags.InDet.Tracking.ActivePass.isLowPt: + SiSpacePointsSeedMaker = CompFactory.InDet.SiSpacePointsSeedMaker_LowMomentum + elif flags.InDet.Tracking.ActivePass.extension == "BeamGas": + SiSpacePointsSeedMaker = CompFactory.InDet.SiSpacePointsSeedMaker_BeamGas + else: + SiSpacePointsSeedMaker = CompFactory.InDet.SiSpacePointsSeedMaker_ATLxk + if flags.InDet.Tracking.writeSeedValNtuple: + kwargs.setdefault("WriteNtuple", True) + HistService = CompFactory.THistSvc(Output = ["valNtuples DATAFILE='SeedMakerValidation.root' OPT='RECREATE'"]) + acc.addService(HistService) + + kwargs.setdefault("pTmin", flags.InDet.Tracking.ActivePass.minPT) + kwargs.setdefault("maxdImpact", flags.InDet.Tracking.ActivePass.maxPrimaryImpact) + kwargs.setdefault("maxZ", flags.InDet.Tracking.ActivePass.maxZImpact) + kwargs.setdefault("minZ", -flags.InDet.Tracking.ActivePass.maxZImpact) + kwargs.setdefault("radMax", flags.InDet.Tracking.ActivePass.radMax) + kwargs.setdefault("RapidityCut", flags.InDet.Tracking.ActivePass.maxEta) + + kwargs.setdefault("usePixel", flags.InDet.Tracking.ActivePass.usePixel + and flags.InDet.Tracking.ActivePass.extension != "R3LargeD0") + kwargs.setdefault("SpacePointsPixelName", 'PixelSpacePoints') + kwargs.setdefault("useSCT", flags.InDet.Tracking.ActivePass.useSCT + and flags.InDet.Tracking.ActivePass.useSCTSeeding) + kwargs.setdefault("SpacePointsSCTName", 'SCT_SpacePoints') + kwargs.setdefault("useOverlapSpCollection", flags.InDet.Tracking.ActivePass.useSCT \ + and flags.InDet.Tracking.ActivePass.useSCTSeeding) + kwargs.setdefault("SpacePointsOverlapName", 'OverlapSpacePoints') + + if flags.InDet.Tracking.ActivePass.usePrdAssociationTool: + # not all classes have that property !!! + kwargs.setdefault("PRDtoTrackMap", 'InDetPRDtoTrackMap'+ flags.InDet.Tracking.ActivePass.extension) + + if not flags.Reco.EnableHI \ + and (flags.InDet.Tracking.ActivePass.extension=="" \ + or flags.InDet.Tracking.ActivePass.extension=="Forward" \ + or flags.InDet.Tracking.ActivePass.extension=="BLS"): + kwargs.setdefault("maxdImpactPPS", flags.InDet.Tracking.ActivePass.maxdImpactPPSSeeds) + kwargs.setdefault("maxdImpactSSS", flags.InDet.Tracking.ActivePass.maxdImpactSSSSeeds) + kwargs.setdefault("maxSeedsForSpacePointStrips", flags.InDet.Tracking.ActivePass.maxSeedsPerSP_Strips) + kwargs.setdefault("maxSeedsForSpacePointPixels", flags.InDet.Tracking.ActivePass.maxSeedsPerSP_Pixels) + kwargs.setdefault("alwaysKeepConfirmedStripSeeds", flags.InDet.Tracking.ActivePass.keepAllConfirmedStripSeeds) + kwargs.setdefault("alwaysKeepConfirmedPixelSeeds", flags.InDet.Tracking.ActivePass.keepAllConfirmedPixelSeeds) + kwargs.setdefault("mindRadius", 10) + kwargs.setdefault("maxSizeSP", 200) + kwargs.setdefault("dImpactCutSlopeUnconfirmedSSS", 1.25) + kwargs.setdefault("dImpactCutSlopeUnconfirmedPPP", 2.0) + + if flags.Reco.EnableHI: + kwargs.setdefault("maxdImpactPPS", flags.InDet.Tracking.ActivePass.maxdImpactPPSSeeds) + kwargs.setdefault("maxdImpactSSS", flags.InDet.Tracking.ActivePass.maxdImpactSSSSeeds) + + if flags.Beam.Type is not BeamType.Cosmics: + kwargs.setdefault("maxRadius1", 0.75*flags.InDet.Tracking.ActivePass.radMax) + kwargs.setdefault("maxRadius2", flags.InDet.Tracking.ActivePass.radMax) + kwargs.setdefault("maxRadius3", flags.InDet.Tracking.ActivePass.radMax) + + if flags.InDet.Tracking.ActivePass.isLowPt: + kwargs.setdefault("pTmax", flags.InDet.Tracking.ActivePass.maxPT) + kwargs.setdefault("mindRadius", 4.0) + + if flags.InDet.Tracking.ActivePass.extension == "R3LargeD0": + kwargs.setdefault("optimisePhiBinning", False) + kwargs.setdefault("etaMax", flags.InDet.Tracking.ActivePass.maxEta) + kwargs.setdefault("maxSeedsForSpacePointStrips", flags.InDet.Tracking.ActivePass.maxSeedsPerSP_Strips) + kwargs.setdefault("alwaysKeepConfirmedStripSeeds", flags.InDet.Tracking.ActivePass.keepAllConfirmedStripSeeds) + kwargs.setdefault("maxdRadius", 150) + kwargs.setdefault("seedScoreBonusConfirmationSeed", -2000) + elif flags.InDet.Tracking.ActivePass.extension == "Forward": + kwargs.setdefault("checkEta", True) + kwargs.setdefault("etaMin", flags.InDet.Tracking.ActivePass.minEta) + kwargs.setdefault("etaMax", flags.InDet.Tracking.ActivePass.maxEta) + elif flags.InDet.Tracking.ActivePass.extension == "DBM": + kwargs.setdefault("etaMin", flags.InDet.Tracking.ActivePass.minEta) + kwargs.setdefault("etaMax", flags.InDet.Tracking.ActivePass.maxEta) + kwargs.setdefault("useDBM", True) + + InDetSiSpacePointsSeedMaker = SiSpacePointsSeedMaker (name = name+flags.InDet.Tracking.ActivePass.extension, **kwargs) + acc.setPrivateTools(InDetSiSpacePointsSeedMaker) + return acc + + +def ITkSiSpacePointsSeedMakerCfg(flags, name="ITkSpSeedsMaker", **kwargs) : + acc = ComponentAccumulator() + + kwargs.setdefault("pTmin", flags.ITk.Tracking.ActivePass.minPTSeed) + kwargs.setdefault("maxdImpact", flags.ITk.Tracking.ActivePass.maxPrimaryImpactSeed) + kwargs.setdefault("maxZ", flags.ITk.Tracking.ActivePass.maxZImpactSeed) + kwargs.setdefault("minZ", -flags.ITk.Tracking.ActivePass.maxZImpactSeed) + kwargs.setdefault("radMax", flags.ITk.Tracking.ActivePass.radMax) + kwargs.setdefault("etaMax", flags.ITk.Tracking.ActivePass.maxEta ) + + kwargs.setdefault("usePixel", flags.ITk.Tracking.ActivePass.useITkPixel + and flags.ITk.Tracking.ActivePass.useITkPixelSeeding) + kwargs.setdefault("SpacePointsPixelName", 'ITkPixelSpacePoints') + kwargs.setdefault("useStrip", flags.ITk.Tracking.ActivePass.useITkStrip + and flags.ITk.Tracking.ActivePass.useITkStripSeeding) + kwargs.setdefault("SpacePointsStripName", 'ITkStripSpacePoints') + kwargs.setdefault("useOverlapSpCollection", flags.ITk.Tracking.ActivePass.useITkStrip + and flags.ITk.Tracking.ActivePass.useITkStripSeeding ) + kwargs.setdefault("SpacePointsOverlapName", 'ITkOverlapSpacePoints') + + if flags.ITk.Tracking.ActivePass.usePrdAssociationTool: + # not all classes have that property !!! + kwargs.setdefault("PRDtoTrackMap", 'ITkPRDtoTrackMap'+ flags.ITk.Tracking.ActivePass.extension) + + if flags.Beam.Type is not BeamType.Cosmics: + kwargs.setdefault("maxRadius1", 0.75*flags.ITk.Tracking.ActivePass.radMax) + kwargs.setdefault("maxRadius2", flags.ITk.Tracking.ActivePass.radMax) + kwargs.setdefault("maxRadius3", flags.ITk.Tracking.ActivePass.radMax) + + if flags.ITk.Tracking.doFastTracking : + kwargs.setdefault("useFastTracking", True) + kwargs.setdefault("maxSeedsForSpacePoint", 3) + + if flags.ITk.Tracking.ActivePass.extension == "LargeD0": + kwargs.setdefault("maxSeedsForSpacePoint", 5) + kwargs.setdefault("isLRT", True) + kwargs.setdefault("maxZPPP", flags.ITk.Tracking.ActivePass.maxZSpacePointsPPPSeeds) + kwargs.setdefault("maxZSSS", flags.ITk.Tracking.ActivePass.maxZSpacePointsSSSSeeds) + + if flags.ITk.Tracking.writeSeedValNtuple: + kwargs.setdefault("WriteNtuple", True) + HistService = CompFactory.THistSvc(Output = ["valNtuples DATAFILE='SeedMakerValidation.root' OPT='RECREATE'"]) + acc.addService(HistService) + + acc.setPrivateTools(CompFactory.ITk.SiSpacePointsSeedMaker(name = name+flags.ITk.Tracking.ActivePass.extension, **kwargs)) + return acc diff --git a/InnerDetector/InDetConfig/python/SiZvertexToolConfig.py b/InnerDetector/InDetConfig/python/SiZvertexToolConfig.py new file mode 100644 index 000000000000..4945267d9d27 --- /dev/null +++ b/InnerDetector/InDetConfig/python/SiZvertexToolConfig.py @@ -0,0 +1,23 @@ +# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration +# Configuration of SiZvertexTool_xk package +from AthenaConfiguration.ComponentFactory import CompFactory +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator + +def SiZvertexMaker_xkCfg(flags, name="InDetZvertexMaker", **kwargs) : + acc = ComponentAccumulator() + + kwargs.setdefault("Zmax", flags.InDet.Tracking.ActivePass.maxZImpact) + kwargs.setdefault("Zmin", -flags.InDet.Tracking.ActivePass.maxZImpact) + kwargs.setdefault("minRatio", 0.17) + + if "SeedMakerTool" not in kwargs: + from InDetConfig.SiSpacePointsSeedToolConfig import SiSpacePointsSeedMakerCfg + kwargs.setdefault("SeedMakerTool", acc.popToolsAndMerge( + SiSpacePointsSeedMakerCfg(flags))) + + if flags.Reco.EnableHI: + kwargs.setdefault("HistSize", 2000) + kwargs.setdefault("minContent", 30) + + acc.setPrivateTools(CompFactory.InDet.SiZvertexMaker_xk(name = name+flags.InDet.Tracking.ActivePass.extension, **kwargs)) + return acc diff --git a/InnerDetector/InDetConfig/python/TrackingSiPatternConfig.py b/InnerDetector/InDetConfig/python/TrackingSiPatternConfig.py index 11a8d0f39089..2d33dc91d084 100644 --- a/InnerDetector/InDetConfig/python/TrackingSiPatternConfig.py +++ b/InnerDetector/InDetConfig/python/TrackingSiPatternConfig.py @@ -3,110 +3,7 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from AthenaConfiguration.Enums import BeamType -def SiSpacePointsSeedMakerCfg(flags, name="InDetSpSeedsMaker", InputCollections = None, **kwargs) : - acc = ComponentAccumulator() - # - # --- Space points seeds maker, use different ones for cosmics and collisions - # - if flags.Beam.Type is BeamType.Cosmics: - SiSpacePointsSeedMaker = CompFactory.InDet.SiSpacePointsSeedMaker_Cosmic - elif flags.Reco.EnableHI: - SiSpacePointsSeedMaker = CompFactory.InDet.SiSpacePointsSeedMaker_HeavyIon - elif flags.InDet.Tracking.ActivePass.isLowPt: - SiSpacePointsSeedMaker = CompFactory.InDet.SiSpacePointsSeedMaker_LowMomentum - elif flags.InDet.Tracking.ActivePass.extension == "BeamGas": - SiSpacePointsSeedMaker = CompFactory.InDet.SiSpacePointsSeedMaker_BeamGas - else: - SiSpacePointsSeedMaker = CompFactory.InDet.SiSpacePointsSeedMaker_ATLxk - if flags.InDet.Tracking.writeSeedValNtuple: - kwargs.setdefault("WriteNtuple", True) - HistService = CompFactory.THistSvc(Output = ["valNtuples DATAFILE='SeedMakerValidation.root' OPT='RECREATE'"]) - acc.addService(HistService) - - kwargs.setdefault("pTmin", flags.InDet.Tracking.ActivePass.minPT ) - kwargs.setdefault("maxdImpact", flags.InDet.Tracking.ActivePass.maxPrimaryImpact ) - kwargs.setdefault("maxZ", flags.InDet.Tracking.ActivePass.maxZImpact ) - kwargs.setdefault("minZ", -flags.InDet.Tracking.ActivePass.maxZImpact ) - kwargs.setdefault("usePixel", flags.InDet.Tracking.ActivePass.usePixel and flags.InDet.Tracking.ActivePass.extension != "R3LargeD0") - kwargs.setdefault("SpacePointsPixelName", 'PixelSpacePoints') # InDetKeys.PixelSpacePoints() - kwargs.setdefault("useSCT", flags.InDet.Tracking.ActivePass.useSCT and flags.InDet.Tracking.ActivePass.useSCTSeeding ) - kwargs.setdefault("SpacePointsSCTName", 'SCT_SpacePoints') # InDetKeys.SCT_SpacePoints() - kwargs.setdefault("useOverlapSpCollection", flags.InDet.Tracking.ActivePass.useSCT and flags.InDet.Tracking.ActivePass.useSCTSeeding ) - kwargs.setdefault("SpacePointsOverlapName", 'OverlapSpacePoints') # InDetKeys.OverlapSpacePoints() - kwargs.setdefault("radMax", flags.InDet.Tracking.ActivePass.radMax) - kwargs.setdefault("RapidityCut", flags.InDet.Tracking.ActivePass.maxEta ) - - if not flags.Reco.EnableHI \ - and (flags.InDet.Tracking.ActivePass.extension=="" or flags.InDet.Tracking.ActivePass.extension=="Forward" or flags.InDet.Tracking.ActivePass.extension=="BLS"): - kwargs.setdefault("maxdImpactPPS", flags.InDet.Tracking.ActivePass.maxdImpactPPSSeeds) - kwargs.setdefault("maxdImpactSSS", flags.InDet.Tracking.ActivePass.maxdImpactSSSSeeds) - kwargs.setdefault("maxSeedsForSpacePointStrips", flags.InDet.Tracking.ActivePass.maxSeedsPerSP_Strips) - kwargs.setdefault("maxSeedsForSpacePointPixels", flags.InDet.Tracking.ActivePass.maxSeedsPerSP_Pixels) - kwargs.setdefault("alwaysKeepConfirmedStripSeeds", flags.InDet.Tracking.ActivePass.keepAllConfirmedStripSeeds) - kwargs.setdefault("alwaysKeepConfirmedPixelSeeds", flags.InDet.Tracking.ActivePass.keepAllConfirmedPixelSeeds) - kwargs.setdefault("mindRadius", 10) - kwargs.setdefault("maxSizeSP", 200) - kwargs.setdefault("dImpactCutSlopeUnconfirmedSSS", 1.25) - kwargs.setdefault("dImpactCutSlopeUnconfirmedPPP", 2.0) - - if flags.Reco.EnableHI: - kwargs.setdefault("maxdImpactPPS", flags.InDet.Tracking.ActivePass.maxdImpactPPSSeeds) - kwargs.setdefault("maxdImpactSSS", flags.InDet.Tracking.ActivePass.maxdImpactSSSSeeds) - - if (len(InputCollections) > 0) and flags.InDet.Tracking.ActivePass.usePrdAssociationTool: - # not all classes have that property !!! - kwargs.setdefault("PRDtoTrackMap", 'InDetPRDtoTrackMap'+ flags.InDet.Tracking.ActivePass.extension) - - if flags.Beam.Type is not BeamType.Cosmics: - kwargs.setdefault("maxRadius1", 0.75*flags.InDet.Tracking.ActivePass.radMax) - kwargs.setdefault("maxRadius2", flags.InDet.Tracking.ActivePass.radMax) - kwargs.setdefault("maxRadius3", flags.InDet.Tracking.ActivePass.radMax) - - if flags.InDet.Tracking.ActivePass.isLowPt: - kwargs.setdefault("pTmax", flags.InDet.Tracking.ActivePass.maxPT) - kwargs.setdefault("mindRadius", 4.0) - - if flags.InDet.Tracking.ActivePass.extension == "R3LargeD0": - kwargs.setdefault("optimisePhiBinning", False) - kwargs.setdefault("etaMax", flags.InDet.Tracking.ActivePass.maxEta) - kwargs.setdefault("maxSeedsForSpacePointStrips", flags.InDet.Tracking.ActivePass.maxSeedsPerSP_Strips) - kwargs.setdefault("alwaysKeepConfirmedStripSeeds", flags.InDet.Tracking.ActivePass.keepAllConfirmedStripSeeds) - kwargs.setdefault("maxdRadius", 150) - kwargs.setdefault("seedScoreBonusConfirmationSeed", -2000) - elif flags.InDet.Tracking.ActivePass.extension == "Forward": - kwargs.setdefault("checkEta", True) - kwargs.setdefault("etaMin", flags.InDet.Tracking.ActivePass.minEta) - kwargs.setdefault("etaMax", flags.InDet.Tracking.ActivePass.maxEta) - elif flags.InDet.Tracking.ActivePass.extension == "DBM": - kwargs.setdefault("etaMin", flags.InDet.Tracking.ActivePass.minEta) - kwargs.setdefault("etaMax", flags.InDet.Tracking.ActivePass.maxEta) - kwargs.setdefault("useDBM", True) - - InDetSiSpacePointsSeedMaker = SiSpacePointsSeedMaker (name = name+flags.InDet.Tracking.ActivePass.extension, **kwargs) - - acc.setPrivateTools(InDetSiSpacePointsSeedMaker) - return acc - -def SiZvertexMaker_xkCfg(flags, name="InDetZvertexMaker", InputCollections = None, **kwargs) : - acc = ComponentAccumulator() - - kwargs.setdefault("Zmax", flags.InDet.Tracking.ActivePass.maxZImpact) - kwargs.setdefault("Zmin", -flags.InDet.Tracking.ActivePass.maxZImpact) - kwargs.setdefault("minRatio", 0.17) - - InDetSiSpacePointsSeedMaker = acc.popToolsAndMerge(SiSpacePointsSeedMakerCfg(flags, - InputCollections=InputCollections)) - - kwargs.setdefault("SeedMakerTool", InDetSiSpacePointsSeedMaker) - if flags.Reco.EnableHI: - kwargs.setdefault("HistSize", 2000) - kwargs.setdefault("minContent", 30) - - InDetZvertexMaker = CompFactory.InDet.SiZvertexMaker_xk(name = name+flags.InDet.Tracking.ActivePass.extension, **kwargs) - acc.setPrivateTools(InDetZvertexMaker) - return acc - -def SiTrackMaker_xkCfg(flags, name="InDetSiTrackMaker", InputCollections = None, **kwargs) : +def SiTrackMaker_xkCfg(flags, name="InDetSiTrackMaker", **kwargs) : acc = ComponentAccumulator() kwargs.setdefault("useSCT", flags.InDet.Tracking.ActivePass.useSCT) @@ -146,7 +43,7 @@ def SiTrackMaker_xkCfg(flags, name="InDetSiTrackMaker", InputCollections = None, kwargs.setdefault("etaWidth", flags.InDet.Tracking.ActivePass.etaWidthBrem) kwargs.setdefault("EMROIPhiRZContainer", "InDetCaloClusterROIPhiRZ0GeV") kwargs.setdefault("HadROIPhiRZContainer", "InDetHadCaloClusterROIPhiRZ") - kwargs.setdefault("UseAssociationTool", (len(InputCollections) > 0) and (flags.InDet.Tracking.ActivePass.usePrdAssociationTool)) + kwargs.setdefault("UseAssociationTool", flags.InDet.Tracking.ActivePass.usePrdAssociationTool) if flags.InDet.Tracking.ActivePass.extension == "DBM": kwargs.setdefault("MagneticFieldMode", "NoField") @@ -196,7 +93,7 @@ def SiTrackMaker_xkCfg(flags, name="InDetSiTrackMaker", InputCollections = None, acc.setPrivateTools(InDetSiTrackMaker) return acc -def SiSPSeededTrackFinderCfg(flags, name="InDetSiSpTrackFinder", InputCollections = None, SiSPSeededTrackCollectionKey = None, **kwargs) : +def SiSPSeededTrackFinderCfg(flags, name="InDetSiSpTrackFinder", **kwargs) : acc = ComponentAccumulator() from TrkConfig.TrkExRungeKuttaPropagatorConfig import InDetPropagatorCfg @@ -206,15 +103,19 @@ def SiSPSeededTrackFinderCfg(flags, name="InDetSiSpTrackFinder", InputCollection # # --- Setup Track finder using space points seeds # - kwargs.setdefault("TrackTool", acc.popToolsAndMerge(SiTrackMaker_xkCfg(flags, InputCollections = InputCollections))) + kwargs.setdefault("TrackTool", acc.popToolsAndMerge(SiTrackMaker_xkCfg(flags))) kwargs.setdefault("PropagatorTool", InDetPropagator) from TrkConfig.TrkTrackSummaryToolConfig import InDetTrackSummaryToolNoHoleSearchCfg kwargs.setdefault("TrackSummaryTool", acc.popToolsAndMerge(InDetTrackSummaryToolNoHoleSearchCfg(flags))) - kwargs.setdefault("TracksLocation", SiSPSeededTrackCollectionKey) - kwargs.setdefault("SeedsTool", acc.popToolsAndMerge(SiSpacePointsSeedMakerCfg(flags, InputCollections = InputCollections))) + + if "SeedsTool" not in kwargs: + from InDetConfig.SiSpacePointsSeedToolConfig import SiSpacePointsSeedMakerCfg + kwargs.setdefault("SeedsTool", acc.popToolsAndMerge( + SiSpacePointsSeedMakerCfg(flags))) + kwargs.setdefault("useMBTSTimeDiff", flags.Reco.EnableHI) # Heavy-ion config - if (len(InputCollections) > 0) and flags.InDet.Tracking.ActivePass.usePrdAssociationTool: + if flags.InDet.Tracking.ActivePass.usePrdAssociationTool: # not all classes have that property !!! kwargs.setdefault("PRDtoTrackMap", 'InDetPRDtoTrackMap'+ flags.InDet.Tracking.ActivePass.extension) @@ -231,8 +132,10 @@ def SiSPSeededTrackFinderCfg(flags, name="InDetSiSpTrackFinder", InputCollection # # --- Z-coordinates primary vertices finder (only for collisions) # - if kwargs["useZvertexTool"]: - kwargs.setdefault("ZvertexTool", acc.popToolsAndMerge(SiZvertexMaker_xkCfg(flags, InputCollections = InputCollections))) + if kwargs["useZvertexTool"] and "ZvertexTool" not in kwargs: + from InDetConfig.SiZvertexToolConfig import SiZvertexMaker_xkCfg + kwargs.setdefault("ZvertexTool", acc.popToolsAndMerge( + SiZvertexMaker_xkCfg(flags))) if flags.Reco.EnableHI: kwargs.setdefault("FreeClustersCut",2) #Heavy Ion optimization from Igor @@ -246,12 +149,16 @@ def SiSPSeededTrackFinderCfg(flags, name="InDetSiSpTrackFinder", InputCollection # ----------- Setup Si Pattern for New tracking # # ------------------------------------------------------------ -def TrackingSiPatternCfg(flags, InputCollections = None, ResolvedTrackCollectionKey = None, SiSPSeededTrackCollectionKey = None , ClusterSplitProbContainer=''): +def TrackingSiPatternCfg(flags, + InputCollections = None, + ResolvedTrackCollectionKey = None, + SiSPSeededTrackCollectionKey = None , + ClusterSplitProbContainer=''): acc = ComponentAccumulator() # # --- get list of already associated hits (always do this, even if no other tracking ran before) # - if (len(InputCollections) > 0) and flags.InDet.Tracking.ActivePass.usePrdAssociationTool: + if flags.InDet.Tracking.ActivePass.usePrdAssociationTool: from InDetConfig.InDetTrackPRD_AssociationConfig import InDetTrackPRD_AssociationCfg acc.merge(InDetTrackPRD_AssociationCfg(flags, name = 'InDetTrackPRD_Association' + flags.InDet.Tracking.ActivePass.extension, @@ -264,8 +171,7 @@ def TrackingSiPatternCfg(flags, InputCollections = None, ResolvedTrackCollection # ------------------------------------------------------------ acc.merge(SiSPSeededTrackFinderCfg( flags, - InputCollections = InputCollections, - SiSPSeededTrackCollectionKey = SiSPSeededTrackCollectionKey)) + TracksLocation = SiSPSeededTrackCollectionKey)) # ------------------------------------------------------------ # diff --git a/Tracking/Acts/ActsTrkTools/ActsTrkSeedingTool/python/ActsTrkSeedingToolConfig.py b/Tracking/Acts/ActsTrkTools/ActsTrkSeedingTool/python/ActsTrkSeedingToolConfig.py index 68bf6a0086bf..7b0338d64646 100644 --- a/Tracking/Acts/ActsTrkTools/ActsTrkSeedingTool/python/ActsTrkSeedingToolConfig.py +++ b/Tracking/Acts/ActsTrkTools/ActsTrkSeedingTool/python/ActsTrkSeedingToolConfig.py @@ -108,11 +108,8 @@ def ActsTrkSeedingToolBaseCfg(ConfigFlags, def ActsTrkSiSpacePointsSeedMakerCfg(ConfigFlags, name: str = 'ActsTrkSiSpacePointsSeedMaker', - InputCollections: list = None, **options) -> ComponentAccumulator: assert isinstance(name, str) - if InputCollections is not None: - assert isinstance(InputCollections, list) acc = ComponentAccumulator() @@ -132,7 +129,7 @@ def ActsTrkSiSpacePointsSeedMakerCfg(ConfigFlags, options.setdefault('PixelClusterContainerKey', "ITkPixelClusters") options.setdefault('StripClusterContainerKey', "ITkStripClusters") - if len(InputCollections) > 0 and ConfigFlags.ITk.Tracking.ActivePass.usePrdAssociationTool: + if ConfigFlags.ITk.Tracking.ActivePass.usePrdAssociationTool: # not all classes have that property !!! options.setdefault('PRDtoTrackMap', 'ITkPRDtoTrackMap'+ ConfigFlags.ITk.Tracking.ActivePass.extension) -- GitLab