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