diff --git a/InnerDetector/InDetConfig/python/BackTrackingConfig.py b/InnerDetector/InDetConfig/python/BackTrackingConfig.py
index dfc1d6f5cb914a7172fcc8f4ba8c8b73df99cf84..51b0de0028dfe4ca5d7c29926b7c38841c973c02 100644
--- a/InnerDetector/InDetConfig/python/BackTrackingConfig.py
+++ b/InnerDetector/InDetConfig/python/BackTrackingConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory     import CompFactory
 import InDetConfig.TrackingCommonConfig         as   TC
@@ -11,9 +11,9 @@ def SiDetElementsRoadMaker_xkCfg(flags, name = 'InDetTRT_SeededSiRoad', **kwargs
     InDetPatternPropagator = acc.getPrimaryAndMerge(TC.InDetPatternPropagatorCfg())
 
     kwargs.setdefault("PropagatorTool", InDetPatternPropagator)
-    kwargs.setdefault("usePixel", flags.InDet.Tracking.usePixel)
+    kwargs.setdefault("usePixel", flags.InDet.Tracking.Pass.usePixel)
     kwargs.setdefault("PixManagerLocation", 'Pixel') # InDetKeys.PixelManager()
-    kwargs.setdefault("useSCT", flags.InDet.Tracking.useSCT)
+    kwargs.setdefault("useSCT", flags.InDet.Tracking.Pass.useSCT)
     kwargs.setdefault("SCTManagerLocation", 'SCT') # InDetKeys.SCT_Manager()
     kwargs.setdefault("RoadWidth", 35.)
     kwargs.setdefault("MaxStep", 20.)
@@ -21,7 +21,7 @@ def SiDetElementsRoadMaker_xkCfg(flags, name = 'InDetTRT_SeededSiRoad', **kwargs
     if flags.Beam.Type == "cosmics":
         kwargs.setdefault("RoadWidth", 50)
     # Condition algorithm for InDet__SiDetElementsRoadMaker_xk
-    if flags.InDet.Tracking.useSCT:
+    if flags.InDet.Tracking.Pass.useSCT:
         acc.addCondAlgo(CompFactory.InDet.SiDetElementsRoadCondAlg_xk(name = "InDet__SiDetElementsRoadCondAlg_xk"))
 
     InDetTRT_SeededSiRoadMaker = CompFactory.InDet.SiDetElementsRoadMaker_xk(name = name, **kwargs)
@@ -74,7 +74,7 @@ def TRT_SeededSpacePointFinder_ATLCfg(flags, name='InDetTRT_SeededSpFinder', Inp
     kwargs.setdefault("NeighborSearch", True)
     kwargs.setdefault("LoadFull", False)
     kwargs.setdefault("DoCosmics", flags.Beam.Type == "cosmics")
-    kwargs.setdefault("pTmin", flags.InDet.Tracking.minSecondaryPt)
+    kwargs.setdefault("pTmin", flags.InDet.Tracking.Pass.minSecondaryPt)
 
     InDetTRT_SeededSpacePointFinder = CompFactory.InDet.TRT_SeededSpacePointFinder_ATL(name = name, **kwargs)
     acc.setPrivateTools(InDetTRT_SeededSpacePointFinder)
@@ -92,7 +92,7 @@ def TRT_SeededTrackFinder_ATLCfg(flags, name='InDetTRT_SeededTrackMaker', InputC
 
     InDetSiComTrackFinder = acc.popToolsAndMerge(TC.SiCombinatorialTrackFinder_xkCfg(flags))
 
-    if (flags.InDet.Tracking.usePixel and flags.InDet.Tracking.useSCT) is not False:
+    if flags.InDet.Tracking.Pass.usePixel and flags.InDet.Tracking.Pass.useSCT:
         InDetTRT_SeededSiRoadMaker = acc.popToolsAndMerge(SiDetElementsRoadMaker_xkCfg(flags))
         acc.addPublicTool(InDetTRT_SeededSiRoadMaker)
         kwargs.setdefault("RoadTool", InDetTRT_SeededSiRoadMaker)
@@ -112,11 +112,11 @@ def TRT_SeededTrackFinder_ATLCfg(flags, name='InDetTRT_SeededTrackMaker', InputC
     kwargs.setdefault("UpdatorTool", InDetPatternUpdator)
     kwargs.setdefault("SeedTool", InDetTRT_SeededSpacePointFinder)
     kwargs.setdefault("CombinatorialTrackFinder", InDetSiComTrackFinder)
-    kwargs.setdefault("pTmin", flags.InDet.Tracking.minSecondaryPt)
-    kwargs.setdefault("nHolesMax", flags.InDet.Tracking.SecondarynHolesMax)
-    kwargs.setdefault("nHolesGapMax", flags.InDet.Tracking.SecondarynHolesGapMax)
-    kwargs.setdefault("Xi2max", flags.InDet.Tracking.SecondaryXi2max)
-    kwargs.setdefault("Xi2maxNoAdd", flags.InDet.Tracking.SecondaryXi2maxNoAdd)
+    kwargs.setdefault("pTmin", flags.InDet.Tracking.Pass.minSecondaryPt)
+    kwargs.setdefault("nHolesMax", flags.InDet.Tracking.Pass.SecondarynHolesMax)
+    kwargs.setdefault("nHolesGapMax", flags.InDet.Tracking.Pass.SecondarynHolesGapMax)
+    kwargs.setdefault("Xi2max", flags.InDet.Tracking.Pass.SecondaryXi2max)
+    kwargs.setdefault("Xi2maxNoAdd", flags.InDet.Tracking.Pass.SecondaryXi2maxNoAdd)
     kwargs.setdefault("SearchInCaloROI", False)
     if kwargs["SearchInCaloROI"]:
         from InDetConfig.InDetRecCaloSeededROISelectionConfig import CaloClusterROI_SelectorCfg
@@ -159,11 +159,11 @@ def TRT_SeededTrackFinderCfg(flags, name='InDetTRT_SeededTrackFinder', InputColl
     from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg
     acc.merge(BeamSpotCondAlgCfg(flags))
 
-    if flags.InDet.Tracking.usePixel:
+    if flags.InDet.Tracking.Pass.usePixel:
         acc.addCondAlgo(CompFactory.InDet.SiDetElementBoundaryLinksCondAlg_xk(name="InDetSiDetElementBoundaryLinksPixelCondAlg",
                                                                               ReadKey="PixelDetectorElementCollection",
                                                                               WriteKey="PixelDetElementBoundaryLinks_xk"))
-    if flags.InDet.Tracking.useSCT:
+    if flags.InDet.Tracking.Pass.useSCT:
         acc.addCondAlgo(CompFactory.InDet.SiDetElementsRoadCondAlg_xk(name="InDet__SiDetElementsRoadCondAlg_xk"))
 
         acc.addCondAlgo(CompFactory.InDet.SiDetElementBoundaryLinksCondAlg_xk(name="InDetSiDetElementBoundaryLinksSCTCondAlg",
@@ -189,24 +189,24 @@ def TRT_SeededTrackFinderCfg(flags, name='InDetTRT_SeededTrackFinder', InputColl
     kwargs.setdefault("PRDtoTrackMap", prefix+'PRDtoTrackMap'+suffix if usePrdAssociationTool else "")
     kwargs.setdefault("TrackSummaryTool", InDetTrackSummaryToolNoHoleSearch)
     kwargs.setdefault("TrackExtensionTool", InDetTRTExtensionTool)
-    kwargs.setdefault("MinTRTonSegment", flags.InDet.Tracking.minSecondaryTRTonTrk)
-    kwargs.setdefault("MinTRTonly", flags.InDet.Tracking.minTRTonly)
+    kwargs.setdefault("MinTRTonSegment", flags.InDet.Tracking.Pass.minSecondaryTRTonTrk)
+    kwargs.setdefault("MinTRTonly", flags.InDet.Tracking.Pass.minTRTonly)
     kwargs.setdefault("TrtExtension", True)
-    kwargs.setdefault("SiExtensionCuts", flags.InDet.Tracking.SiExtensionCuts)
-    kwargs.setdefault("minPt", flags.InDet.Tracking.minSecondaryPt)
-    kwargs.setdefault("maxRPhiImp", flags.InDet.Tracking.maxSecondaryImpact)
-    kwargs.setdefault("maxZImp", flags.InDet.Tracking.maxZImpact)
-    kwargs.setdefault("maxEta", flags.InDet.Tracking.maxEta)
+    kwargs.setdefault("SiExtensionCuts", flags.InDet.Tracking.Pass.SiExtensionCuts)
+    kwargs.setdefault("minPt", flags.InDet.Tracking.Pass.minSecondaryPt)
+    kwargs.setdefault("maxRPhiImp", flags.InDet.Tracking.Pass.maxSecondaryImpact)
+    kwargs.setdefault("maxZImp", flags.InDet.Tracking.Pass.maxZImpact)
+    kwargs.setdefault("maxEta", flags.InDet.Tracking.Pass.maxEta)
     kwargs.setdefault("Extrapolator", InDetExtrapolator)
-    kwargs.setdefault("RejectShortExtension", flags.InDet.Tracking.rejectShortExtensions)
+    kwargs.setdefault("RejectShortExtension", flags.InDet.Tracking.Pass.rejectShortExtensions)
     kwargs.setdefault("FinalRefit", False)
     kwargs.setdefault("FinalStatistics", False)
     kwargs.setdefault("OutputSegments", False)
     kwargs.setdefault("InputSegmentsLocation", 'TRTSegments') # InDetKeys.TRT_Segments()
     kwargs.setdefault("OutputTracksLocation", TRTSeededTracks)
-    kwargs.setdefault("CaloClusterEt", flags.InDet.Tracking.minRoIClusterEt)
+    kwargs.setdefault("CaloClusterEt", flags.InDet.Tracking.Pass.minRoIClusterEt)
 
-    if flags.InDet.Tracking.RoISeededBackTracking:
+    if flags.InDet.Tracking.Pass.RoISeededBackTracking:
         from RegionSelector.RegSelToolConfig import regSelTool_SCT_Cfg
         RegSelTool_SCT   = acc.popToolsAndMerge(regSelTool_SCT_Cfg(flags))
         acc.addPublicTool(RegSelTool_SCT)
@@ -242,11 +242,11 @@ def InDetTRTAmbiTrackSelectionToolCfg(flags, name='InDetTRT_SeededAmbiTrackSelec
     kwargs.setdefault("DriftCircleCutTool", InDetTRTDriftCircleCut)
     kwargs.setdefault("AssociationTool", InDetPRDtoTrackMapToolGangedPixels)
     kwargs.setdefault("minScoreShareTracks", -1.) # off !
-    kwargs.setdefault("minHits", flags.InDet.Tracking.minSecondaryClusters)
-    kwargs.setdefault("minNotShared", flags.InDet.Tracking.minSecondarySiNotShared)
-    kwargs.setdefault("maxShared", flags.InDet.Tracking.maxSecondaryShared)
-    kwargs.setdefault("minTRTHits", flags.InDet.Tracking.minSecondaryTRTonTrk)
-    kwargs.setdefault("UseParameterization", flags.InDet.Tracking.useParameterizedTRTCuts)
+    kwargs.setdefault("minHits", flags.InDet.Tracking.Pass.minSecondaryClusters)
+    kwargs.setdefault("minNotShared", flags.InDet.Tracking.Pass.minSecondarySiNotShared)
+    kwargs.setdefault("maxShared", flags.InDet.Tracking.Pass.maxSecondaryShared)
+    kwargs.setdefault("minTRTHits", flags.InDet.Tracking.Pass.minSecondaryTRTonTrk)
+    kwargs.setdefault("UseParameterization", flags.InDet.Tracking.Pass.useParameterizedTRTCuts)
     kwargs.setdefault("Cosmics", flags.Beam.Type == "cosmics")
     kwargs.setdefault("doPixelSplitting", flags.InDet.doPixelClusterSplitting)
 
@@ -278,7 +278,7 @@ def SimpleAmbiguityProcessorToolCfg(flags, name='InDetTRT_SeededAmbiguityProcess
     kwargs.setdefault("TrackSummaryTool", InDetTRT_SeededSummaryTool)
     kwargs.setdefault("SelectionTool", InDetTRT_SeededAmbiTrackSelectionTool)
     kwargs.setdefault("InputClusterSplitProbabilityName", ClusterSplitProbContainer)
-    kwargs.setdefault("OutputClusterSplitProbabilityName", 'InDetTRT_SeededAmbiguityProcessorSplitProb'+flags.InDet.Tracking.extension)
+    kwargs.setdefault("OutputClusterSplitProbabilityName", 'InDetTRT_SeededAmbiguityProcessorSplitProb'+flags.InDet.Tracking.Pass.extension)
     kwargs.setdefault("RefitPrds", not flags.InDet.refitROT)
     kwargs.setdefault("SuppressTrackFit", False)
     kwargs.setdefault("SuppressHoleSearch", False)
@@ -377,8 +377,8 @@ if __name__ == "__main__":
 
     ########################## TRTPreProcessing Configuration ################################
 
-    from InDetConfig.TRTPreProcessing import TRTPreProcessingCfg
     if not flags.InDet.doDBMstandalone:
+        from InDetConfig.TRTPreProcessing import TRTPreProcessingCfg
         top_acc.merge(TRTPreProcessingCfg(flags,(not flags.InDet.doTRTPhaseCalculation or flags.Beam.Type =="collisions"),False))
 
     ######################################## TRTSegmentFinding Configuration ###########################################
diff --git a/InnerDetector/InDetConfig/python/ITkTrackingSiPatternConfig.py b/InnerDetector/InDetConfig/python/ITkTrackingSiPatternConfig.py
index 2a5a60118d7433927d1535d63161451b455ff53d..f9b52de560ce919847039482dbd5ba8e21aae3ad 100644
--- a/InnerDetector/InDetConfig/python/ITkTrackingSiPatternConfig.py
+++ b/InnerDetector/InDetConfig/python/ITkTrackingSiPatternConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
 from InDetConfig.ITkRecToolConfig import ITkBoundaryCheckToolCfg, ITkPatternPropagatorCfg, ITkPatternUpdatorCfg
@@ -8,21 +8,6 @@ import InDetConfig.ITkTrackingCommonConfig as TC
 def ITkSiSpacePointsSeedMakerCfg(flags, name="ITkSpSeedsMaker", InputCollections = None, **kwargs) :
     acc = ComponentAccumulator()
     #
-    # --- decide if use the association tool
-    #
-    if (len(InputCollections) > 0) and \
-        (flags.ITk.Tracking.Pass.extension == "LargeD0" \
-         or flags.ITk.Tracking.Pass.extension == "ConversionFinding"):
-        usePrdAssociationTool = True
-    else:
-        usePrdAssociationTool = False
-    #
-    # --- get list of already associated hits (always do this, even if no other tracking ran before)
-    #
-    if usePrdAssociationTool:
-        prefix = 'ITk'
-        suffix = flags.ITk.Tracking.Pass.extension
-    #
     # --- Space points seeds maker, use different ones for cosmics and collisions
     #
     SiSpacePointsSeedMaker = CompFactory.ITk.SiSpacePointsSeedMaker
@@ -40,9 +25,9 @@ def ITkSiSpacePointsSeedMakerCfg(flags, name="ITkSpSeedsMaker", InputCollections
     kwargs.setdefault("radMax", flags.ITk.Tracking.Pass.radMax)
     kwargs.setdefault("etaMax", flags.ITk.Tracking.Pass.maxEta )
 
-    if usePrdAssociationTool:
+    if (len(InputCollections) > 0) and flags.ITk.Tracking.Pass.usePrdAssociationTool:
         # not all classes have that property !!!
-        kwargs.setdefault("PRDtoTrackMap", prefix+'PRDtoTrackMap'+ suffix)
+        kwargs.setdefault("PRDtoTrackMap", 'ITkPRDtoTrackMap'+ flags.ITk.Tracking.Pass.extension)
     if not flags.Beam.Type == 'cosmics':
         kwargs.setdefault("maxRadius1", 0.75*flags.ITk.Tracking.Pass.radMax)
         kwargs.setdefault("maxRadius2", flags.ITk.Tracking.Pass.radMax)
@@ -90,7 +75,6 @@ def ITkSiCombinatorialTrackFinder_xkCfg(flags, name="ITkSiComTrackFinder", **kwa
     #
     # --- Local track finding using sdCaloSeededSSSpace point seed
     #
-    # @TODO ensure that PRD association map is used if usePrdAssociationTool is set
     ITkRotCreatorDigital = acc.getPrimaryAndMerge(TC.ITkRotCreatorDigitalCfg(flags))
     ITkPatternPropagator = acc.getPrimaryAndMerge(ITkPatternPropagatorCfg(flags))
     ITkPatternUpdator = acc.popToolsAndMerge(ITkPatternUpdatorCfg(flags))
@@ -149,14 +133,6 @@ def ITkSiTrackMaker_xkCfg(flags, name="ITkSiTrackMaker", InputCollections = None
 
     track_finder = acc.popToolsAndMerge(ITkSiCombinatorialTrackFinder_xkCfg(flags))
 
-    #
-    # --- decide if use the association tool
-    #
-    if (len(InputCollections) > 0) and (flags.ITk.Tracking.Pass.extension == "LargeD0" or flags.ITk.Tracking.Pass.extension == "ConversionFinding"):
-        usePrdAssociationTool = True
-    else:
-        usePrdAssociationTool = False
-
     kwargs.setdefault("useSCT", flags.ITk.Tracking.Pass.useITkStrip)
     kwargs.setdefault("usePixel", flags.ITk.Tracking.Pass.useITkPixel)
     kwargs.setdefault("RoadTool", ITkSiDetElementsRoadMaker)
@@ -186,7 +162,7 @@ def ITkSiTrackMaker_xkCfg(flags, name="ITkSiTrackMaker", InputCollections = None
     kwargs.setdefault("etaWidth", flags.ITk.Tracking.Pass.etaWidthBrem[0])
     kwargs.setdefault("InputClusterContainerName", 'ITkCaloClusterROIs')
     kwargs.setdefault("InputHadClusterContainerName", 'ITkHadCaloClusterROIs')
-    kwargs.setdefault("UseAssociationTool", usePrdAssociationTool)
+    kwargs.setdefault("UseAssociationTool", (len(InputCollections) > 0) and (flags.ITk.Tracking.Pass.usePrdAssociationTool))
     kwargs.setdefault("ITKGeometry", True)
 
     if flags.Beam.Type == 'cosmics':
@@ -222,19 +198,6 @@ def ITkSiSPSeededTrackFinderCfg(flags, name="ITkSiSpTrackFinder", InputCollectio
     # set output track collection name
     #
     SiTrackCollection = SiSPSeededTrackCollectionKey
-    #
-    # --- decide if use the association tool
-    #
-    if (len(InputCollections) > 0) and (flags.ITk.Tracking.Pass.extension == "LargeD0" or flags.ITk.Tracking.Pass.extension == "ConversionFinding"):
-        usePrdAssociationTool = True
-    else:
-        usePrdAssociationTool = False
-    #
-    # --- get list of already associated hits (always do this, even if no other tracking ran before)
-    #
-    if usePrdAssociationTool:
-        prefix = 'ITk'
-        suffix = flags.ITk.Tracking.Pass.extension
 
     ITkSiTrackMaker = acc.popToolsAndMerge(ITkSiTrackMaker_xkCfg(flags,
                                                                  InputCollections = InputCollections ))
@@ -249,8 +212,9 @@ def ITkSiSPSeededTrackFinderCfg(flags, name="ITkSiSpTrackFinder", InputCollectio
     #
     kwargs.setdefault("TrackTool", ITkSiTrackMaker)
     kwargs.setdefault("PropagatorTool", ITkPropagator)
-    kwargs.setdefault("PRDtoTrackMap", prefix+'PRDtoTrackMap'+suffix \
-                                            if usePrdAssociationTool else '')
+    if (len(InputCollections) > 0) and flags.ITk.Tracking.Pass.usePrdAssociationTool:
+        # not all classes have that property !!!
+        kwargs.setdefault("PRDtoTrackMap", 'ITkPRDtoTrackMap'+ flags.ITk.Tracking.Pass.extension)
     kwargs.setdefault("TrackSummaryTool", ITkTrackSummaryToolNoHoleSearch)
     kwargs.setdefault("TracksLocation", SiTrackCollection)
     kwargs.setdefault("SeedsTool", ITkSiSpacePointsSeedMaker)
@@ -494,20 +458,11 @@ def ITkTrkAmbiguitySolverCfg(flags, name="ITkAmbiguitySolver", ResolvedTrackColl
 def ITkTrackingSiPatternCfg(flags, InputCollections = None, ResolvedTrackCollectionKey = None, SiSPSeededTrackCollectionKey = None , ClusterSplitProbContainer=''):
     acc = ComponentAccumulator()
     #
-    # --- decide if use the association tool
-    #
-    if (len(InputCollections) > 0) and (flags.ITk.Tracking.Pass.extension == "LargeD0" or flags.ITk.Tracking.Pass.extension == "ConversionFinding"):
-        usePrdAssociationTool = True
-    else:
-        usePrdAssociationTool = False
-    #
     # --- get list of already associated hits (always do this, even if no other tracking ran before)
     #
-    if usePrdAssociationTool:
-        prefix = 'ITk'
-        suffix = flags.ITk.Tracking.Pass.extension
-        acc.merge(TC.ITkTrackPRD_AssociationCfg(flags,namePrefix = prefix,
-                                                nameSuffix = suffix,
+    if (len(InputCollections) > 0) and flags.ITk.Tracking.Pass.usePrdAssociationTool:
+        acc.merge(TC.ITkTrackPRD_AssociationCfg(flags,namePrefix = 'ITk',
+                                                nameSuffix = flags.ITk.Tracking.Pass.extension,
                                                 TracksName = list(InputCollections)))
 
     # ------------------------------------------------------------
diff --git a/InnerDetector/InDetConfig/python/InDetConfigFlags.py b/InnerDetector/InDetConfig/python/InDetConfigFlags.py
index b1def59acae9db65a40292d902031ce213652f99..4fe02f365f3efd1ac9228ec2ddc160d1af15da8b 100644
--- a/InnerDetector/InDetConfig/python/InDetConfigFlags.py
+++ b/InnerDetector/InDetConfig/python/InDetConfigFlags.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
 
 from AthenaConfiguration.AthConfigFlags import AthConfigFlags
 # TODO: clean up flags, should only contain general settings but no alg config
@@ -8,9 +8,10 @@ def createInDetConfigFlags():
   icf=AthConfigFlags()
 
   icf.addFlag("InDet.doDBMstandalone",False)
-  # FIXME: Flags shouldn't turn on/off individual algorithms
   icf.addFlag("InDet.doSplitReco", False) # Turn running of the truth seeded pseudo tracking only for pileup on and off. Only makes sense to run on RDO file where SplitDigi was used!
-  icf.addFlag("InDet.doRefit", False) # Turn running of refitting on and off
+
+  icf.addFlag("InDet.Tracking.doRefit", False) # Turn running of refitting on and off
+
   icf.addFlag("InDet.doHighPileup", False) # Turn running of high pile-up reconstruction on and off
   icf.addFlag("InDet.doTruth", lambda f: f.Input.isMC) # Turn running of truth matching on and off (by default on for MC off for data)
   icf.addFlag("InDet.doBackTracking", True) # Turn running of backtracking on and off
@@ -108,28 +109,28 @@ def createInDetConfigFlags():
     createPixelTrackingPassFlags, createDisappearingTrackingPassFlags, createSCTTrackingPassFlags, createTRTTrackingPassFlags, \
     createTRTStandaloneTrackingPassFlags, createSCTandTRTTrackingPassFlags, createDBMTrackingPassFlags
 
-  icf.addFlagsCategory ("InDet.Tracking", createTrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.IBLTracking", createIBLTrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.HighPileupTracking", createHighPileupTrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.MinBiasTracking", createMinBiasTrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.LargeD0Tracking", createLargeD0TrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.R3LargeD0Tracking", createR3LargeD0TrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.LowPtLargeD0Tracking", createLowPtLargeD0TrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.LowPtTracking", createLowPtTrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.VeryLowPtTracking", createVeryLowPtTrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.ForwardTracksTracking", createForwardTracksTrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.BeamGasTracking", createBeamGasTrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.VtxLumiTracking", createVtxLumiTrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.VtxBeamSpotTracking", createVtxBeamSpotTrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.CosmicsTracking", createCosmicsTrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.HeavyIonTracking", createHeavyIonTrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.PixelTracking", createPixelTrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.DisappearingTracking", createDisappearingTrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.SCTTracking", createSCTTrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.TRTTracking", createTRTTrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.TRTStandaloneTracking", createTRTStandaloneTrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.SCTandTRTTracking", createSCTandTRTTrackingPassFlags, prefix=True)
-  icf.addFlagsCategory ("InDet.DBMTracking", createDBMTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.Pass", createTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.IBLPass", createIBLTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.HighPileupPass", createHighPileupTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.MinBiasPass", createMinBiasTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.LargeD0Pass", createLargeD0TrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.R3LargeD0Pass", createR3LargeD0TrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.LowPtLargeD0Pass", createLowPtLargeD0TrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.LowPtPass", createLowPtTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.VeryLowPtPass", createVeryLowPtTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.ForwardTracksPass", createForwardTracksTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.BeamGasPass", createBeamGasTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.VtxLumiPass", createVtxLumiTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.VtxBeamSpotPass", createVtxBeamSpotTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.CosmicsPass", createCosmicsTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.HeavyIonPass", createHeavyIonTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.PixelPass", createPixelTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.DisappearingPass", createDisappearingTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.SCTPass", createSCTTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.TRTPass", createTRTTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.TRTStandalonePass", createTRTStandaloneTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.SCTandTRTPass", createSCTandTRTTrackingPassFlags, prefix=True)
+  icf.addFlagsCategory ("InDet.Tracking.DBMPass", createDBMTrackingPassFlags, prefix=True)
 
   from InDetConfig.VertexFindingFlags import createSecVertexingFlags, createEGammaPileUpSecVertexingFlags, createPriVertexingFlags
   icf.addFlagsCategory("InDet.PriVertex", createPriVertexingFlags, prefix=True)
diff --git a/InnerDetector/InDetConfig/python/TRTExtensionConfig.py b/InnerDetector/InDetConfig/python/TRTExtensionConfig.py
index c2b98594905128e0e5e256656c465e2d970c07c1..0efd89a6d199a834ef9e28d2d97d0798ecdb4c74 100644
--- a/InnerDetector/InDetConfig/python/TRTExtensionConfig.py
+++ b/InnerDetector/InDetConfig/python/TRTExtensionConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory     import CompFactory
 import InDetConfig.TrackingCommonConfig         as   TC
@@ -61,7 +61,7 @@ def InDetExtensionProcessorCfg(flags, SiTrackCollection=None, ExtendedTrackColle
         #
         # --- DAF Fitter setup
         #
-        InDetExtensionFitter = acc.popToolsAndMerge(DeterministicAnnealingFilterCfg(flags, name = 'InDetDAF'+ flags.InDet.Tracking.extension))
+        InDetExtensionFitter = acc.popToolsAndMerge(DeterministicAnnealingFilterCfg(flags, name = 'InDetDAF'+ flags.InDet.Tracking.Pass.extension))
         acc.addPublicTool(InDetExtensionFitter)
     else:
         fitter_args = {}
@@ -70,11 +70,11 @@ def InDetExtensionProcessorCfg(flags, SiTrackCollection=None, ExtendedTrackColle
             from  InDetConfig.InDetRecToolConfig import InDetBoundaryCheckToolCfg
             InDetBoundaryCheckTool = acc.popToolsAndMerge(InDetBoundaryCheckToolCfg(flags))
             fitter_args.setdefault("BoundaryCheckTool", InDetBoundaryCheckTool)
-        if flags.InDet.Tracking.extension != "LowPt":
-            InDetExtensionFitter = acc.popToolsAndMerge(TC.InDetTrackFitterCfg(flags, 'InDetTrackFitter_TRTExtension'+flags.InDet.Tracking.extension, **fitter_args))
+        if flags.InDet.Tracking.Pass.extension != "LowPt":
+            InDetExtensionFitter = acc.popToolsAndMerge(TC.InDetTrackFitterCfg(flags, 'InDetTrackFitter_TRTExtension'+flags.InDet.Tracking.Pass.extension, **fitter_args))
             acc.addPublicTool(InDetExtensionFitter)
         else:
-            InDetExtensionFitter = acc.popToolsAndMerge(TC.InDetTrackFitterLowPt(flags, 'InDetTrackFitter_TRTExtension'+flags.InDet.Tracking.extension, **fitter_args))
+            InDetExtensionFitter = acc.popToolsAndMerge(TC.InDetTrackFitterLowPt(flags, 'InDetTrackFitter_TRTExtension'+flags.InDet.Tracking.Pass.extension, **fitter_args))
             acc.addPublicTool(InDetExtensionFitter)
     #
     # --- load scoring for extension
@@ -104,17 +104,17 @@ def InDetExtensionProcessorCfg(flags, SiTrackCollection=None, ExtendedTrackColle
     kwargs.setdefault("suppressHoleSearch", False)
     kwargs.setdefault("tryBremFit", flags.InDet.doBremRecovery)
     kwargs.setdefault("caloSeededBrem", flags.InDet.doCaloSeededBrem)
-    kwargs.setdefault("pTminBrem", flags.InDet.Tracking.minPTBrem)
+    kwargs.setdefault("pTminBrem", flags.InDet.Tracking.Pass.minPTBrem)
     kwargs.setdefault("RefitPrds", not (flags.InDet.refitROT or (flags.InDet.trtExtensionType == 'DAF')))
     
     if doPhase:
         kwargs.setdefault("Cosmics", True)
 
-        acc.addEventAlgo(CompFactory.InDet.InDetExtensionProcessor(name = "InDetExtensionProcessorPhase" + flags.InDet.Tracking.extension, **kwargs))
+        acc.addEventAlgo(CompFactory.InDet.InDetExtensionProcessor(name = "InDetExtensionProcessorPhase" + flags.InDet.Tracking.Pass.extension, **kwargs))
     else:
         kwargs.setdefault("Cosmics", flags.Beam.Type == "cosmics")
 
-        acc.addEventAlgo(CompFactory.InDet.InDetExtensionProcessor("InDetExtensionProcessor" + flags.InDet.Tracking.extension, **kwargs))
+        acc.addEventAlgo(CompFactory.InDet.InDetExtensionProcessor("InDetExtensionProcessor" + flags.InDet.Tracking.Pass.extension, **kwargs))
 
     return acc
 
@@ -132,12 +132,12 @@ def NewTrackingTRTExtensionCfg(flags, SiTrackCollection = None, ExtendedTrackCol
     #
     if doPhase:
         acc.merge(TRT_TrackExtensionAlgCfg( flags,
-                                            name = 'InDetTRT_ExtensionPhase' + flags.InDet.Tracking.extension,
+                                            name = 'InDetTRT_ExtensionPhase' + flags.InDet.Tracking.Pass.extension,
                                             SiTrackCollection=SiTrackCollection,
                                             ExtendedTracksMap = ExtendedTracksMap))
     else:
         acc.merge(TRT_TrackExtensionAlgCfg( flags,  
-                                            name = 'InDetTRT_Extension' + flags.InDet.Tracking.extension,
+                                            name = 'InDetTRT_Extension' + flags.InDet.Tracking.Pass.extension,
                                             SiTrackCollection=SiTrackCollection,
                                             ExtendedTracksMap = ExtendedTracksMap,
                                             TrackExtensionTool = acc.popToolsAndMerge(TC.InDetTRT_ExtensionToolCfg(flags))))
@@ -230,8 +230,8 @@ if __name__ == "__main__":
     #################### Additional Configuration  ########################
     #######################################################################
     ################# TRTPreProcessing Configuration ######################
-    from InDetConfig.TRTPreProcessing import TRTPreProcessingCfg
     if not ConfigFlags.InDet.doDBMstandalone:
+        from InDetConfig.TRTPreProcessing import TRTPreProcessingCfg
         top_acc.merge(TRTPreProcessingCfg(ConfigFlags,(not ConfigFlags.InDet.doTRTPhaseCalculation or ConfigFlags.Beam.Type =="collisions"),False))
 
     ################ TRTSegmentFinding Configuration ######################
diff --git a/InnerDetector/InDetConfig/python/TRTSegmentFindingConfig.py b/InnerDetector/InDetConfig/python/TRTSegmentFindingConfig.py
index ffcd79fb4e21165d99b175eabeeb4f44a81f10a4..d0ad3700204d2fc45f22f286cf4ca70ee98d6ad5 100644
--- a/InnerDetector/InDetConfig/python/TRTSegmentFindingConfig.py
+++ b/InnerDetector/InDetConfig/python/TRTSegmentFindingConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
 import InDetConfig.TrackingCommonConfig as TC
@@ -30,14 +30,14 @@ def TRT_TrackSegmentsMaker_ATLxkCfg(flags, name = 'InDetTRT_SeedsMaker', extensi
     #
     if extension == "_TRT":
         # TRT Subdetector segment finding
-        MinNumberDCs   = flags.InDet.Tracking.minTRTonly
-        pTmin          = flags.InDet.Tracking.minPT
-        sharedFrac     = flags.InDet.Tracking.maxTRTonlyShared
+        MinNumberDCs   = flags.InDet.Tracking.Pass.minTRTonly
+        pTmin          = flags.InDet.Tracking.Pass.minPT
+        sharedFrac     = flags.InDet.Tracking.Pass.maxTRTonlyShared
     else:
         # TRT-only/back-tracking segment finding
-        MinNumberDCs   = flags.InDet.Tracking.minSecondaryTRTonTrk
-        pTmin          = flags.InDet.Tracking.minSecondaryPt
-        sharedFrac     = flags.InDet.Tracking.maxSecondaryTRTShared
+        MinNumberDCs   = flags.InDet.Tracking.Pass.minSecondaryTRTonTrk
+        pTmin          = flags.InDet.Tracking.Pass.minSecondaryPt
+        sharedFrac     = flags.InDet.Tracking.Pass.maxSecondaryTRTShared
     #
     # --- offline version  of TRT segemnt making
     #
@@ -52,7 +52,7 @@ def TRT_TrackSegmentsMaker_ATLxkCfg(flags, name = 'InDetTRT_SeedsMaker', extensi
     kwargs.setdefault("PRDtoTrackMap", prefix+'PRDtoTrackMap'+suffix if usePrdAssociationTool else '')
     kwargs.setdefault("RemoveNoiseDriftCircles", flags.InDet.removeTRTNoise)
     kwargs.setdefault("MinNumberDriftCircles", MinNumberDCs)
-    kwargs.setdefault("NumberMomentumChannel", flags.InDet.Tracking.TRTSegFinderPtBins)
+    kwargs.setdefault("NumberMomentumChannel", flags.InDet.Tracking.Pass.TRTSegFinderPtBins)
     kwargs.setdefault("pTmin", pTmin)
     kwargs.setdefault("sharedFrac", sharedFrac)
 
@@ -67,15 +67,15 @@ def TRT_TrackSegmentsMakerCondAlg_ATLxkCfg(flags, name = 'InDetTRT_SeedsMakerCon
     #
     if extension == "_TRT":
         # TRT Subdetector segment finding
-        pTmin = flags.InDet.Tracking.minPT
+        pTmin = flags.InDet.Tracking.Pass.minPT
     else:
         # TRT-only/back-tracking segment finding
-        pTmin = flags.InDet.Tracking.minSecondaryPt
+        pTmin = flags.InDet.Tracking.Pass.minSecondaryPt
 
     InDetPatternPropagator = acc.getPrimaryAndMerge(TC.InDetPatternPropagatorCfg())
 
     kwargs.setdefault("PropagatorTool", InDetPatternPropagator)
-    kwargs.setdefault("NumberMomentumChannel", flags.InDet.Tracking.TRTSegFinderPtBins)
+    kwargs.setdefault("NumberMomentumChannel", flags.InDet.Tracking.Pass.TRTSegFinderPtBins)
     kwargs.setdefault("pTmin", pTmin)
 
     InDetTRT_TrackSegmentsMakerCondAlg = CompFactory.InDet.TRT_TrackSegmentsMakerCondAlg_ATLxk(name = name, **kwargs)
@@ -106,7 +106,7 @@ def TRT_TrackSegmentsFinderCfg(flags, name = 'InDetTRT_TrackSegmentsFinder', ext
                                                                                                               TRT_ClustersContainer = 'TRT_DriftCircles')) # InDetKeys.TRT_DriftCircles
             acc.addPublicTool(InDetTRT_TrackSegmentsMaker)
 
-            if flags.Detector.EnableCalo and (flags.InDet.doCaloSeededTRTSegments or flags.InDet.Tracking.RoISeededBackTracking):
+            if flags.Detector.EnableCalo and (flags.InDet.doCaloSeededTRTSegments or flags.InDet.Tracking.Pass.RoISeededBackTracking):
                 from InDetConfig.InDetRecCaloSeededROISelectionConfig import CaloClusterROI_SelectorCfg
                 acc.merge(CaloClusterROI_SelectorCfg(flags))
                 kwargs.setdefault("SegmentsMakerTool", InDetTRT_TrackSegmentsMaker)
@@ -142,12 +142,12 @@ def SegmentDriftCircleAssValidationCfg(flags, name="InDetSegmentDriftCircleAssVa
     #
     if extension == "_TRT":
         # TRT Subdetector segment finding
-        MinNumberDCs = flags.InDet.Tracking.minTRTonly
-        pTmin        = flags.InDet.Tracking.minPT
+        MinNumberDCs = flags.InDet.Tracking.Pass.minTRTonly
+        pTmin        = flags.InDet.Tracking.Pass.minPT
     else:
         # TRT-only/back-tracking segment finding
-        MinNumberDCs = flags.InDet.Tracking.minSecondaryTRTonTrk
-        pTmin        = flags.InDet.Tracking.minSecondaryPt
+        MinNumberDCs = flags.InDet.Tracking.Pass.minSecondaryTRTonTrk
+        pTmin        = flags.InDet.Tracking.Pass.minSecondaryPt
 
     #kwargs.setdefault("OrigTracksLocation", BarrelSegments)
     kwargs.setdefault("TRT_DriftCirclesName", 'TRT_DriftCircles') # InDetKeys.TRT_DriftCircles
@@ -224,8 +224,8 @@ if __name__ == "__main__":
     # NewTracking collection keys
     InputCombinedInDetTracks = []
 
-    from InDetConfig.TRTPreProcessing import TRTPreProcessingCfg
     if not flags.InDet.doDBMstandalone:
+        from InDetConfig.TRTPreProcessing import TRTPreProcessingCfg
         top_acc.merge(TRTPreProcessingCfg(flags,(not flags.InDet.doTRTPhaseCalculation or flags.Beam.Type =="collisions"),False))
 
     top_acc.merge(TRTSegmentFindingCfg( flags,
diff --git a/InnerDetector/InDetConfig/python/TRTStandaloneConfig.py b/InnerDetector/InDetConfig/python/TRTStandaloneConfig.py
index c5dd2fdb68c0f15aa71e12270ba69d939cc114c5..08551f002d7cddeb82e9414b0c9535d201aba391 100644
--- a/InnerDetector/InDetConfig/python/TRTStandaloneConfig.py
+++ b/InnerDetector/InDetConfig/python/TRTStandaloneConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory     import CompFactory
 import InDetConfig.TrackingCommonConfig         as   TC
@@ -12,28 +12,20 @@ def InDetTrtTrackScoringToolCfg(flags, name ='InDetTRT_StandaloneScoringTool', e
     InDetTRTDriftCircleCut = acc.popToolsAndMerge(TC.InDetTRTDriftCircleCutForPatternRecoCfg(flags))
     acc.addPublicTool(InDetTRTDriftCircleCut)
 
-    #
-    # Cut values and output key for the TRT segments standalone TRT track finder
-    #
-    if extension == "_TRT":
-        # TRT track segments
-        pTmin = flags.InDet.Tracking.minPT
-    else:
-        # TRT standalone
-        pTmin = flags.InDet.Tracking.minTRTonlyPt # new cut parameter to make it flexible...
-
     kwargs.setdefault("DriftCircleCutTool", InDetTRTDriftCircleCut)
     kwargs.setdefault("useAmbigFcn", True)
     kwargs.setdefault("useSigmaChi2", False)
-    kwargs.setdefault("PtMin", pTmin)
-    kwargs.setdefault("minTRTonTrk", flags.InDet.Tracking.minTRTonly)
+    kwargs.setdefault("PtMin", flags.InDet.Tracking.Pass.minPT if extension == "_TRT" # TRT track segments
+                               else flags.InDet.Tracking.Pass.minTRTonlyPt # TRT standalone
+                     )
+    kwargs.setdefault("minTRTonTrk", flags.InDet.Tracking.Pass.minTRTonly)
     kwargs.setdefault("maxEta", 2.1)
-    kwargs.setdefault("UseParameterization", flags.InDet.Tracking.useTRTonlyParamCuts)
-    kwargs.setdefault("OldTransitionLogic", flags.InDet.Tracking.useTRTonlyOldLogic)
-    kwargs.setdefault("minTRTPrecisionFraction", flags.InDet.Tracking.minSecondaryTRTPrecFrac)
-    kwargs.setdefault("TRTTrksEtaBins", flags.InDet.Tracking.TrkSel.TRTTrksEtaBins)
-    kwargs.setdefault("TRTTrksMinTRTHitsThresholds", flags.InDet.Tracking.TrkSel.TRTTrksMinTRTHitsThresholds)
-    kwargs.setdefault("TRTTrksMinTRTHitsMuDependencies", flags.InDet.Tracking.TrkSel.TRTTrksMinTRTHitsMuDependencies)
+    kwargs.setdefault("UseParameterization", flags.InDet.Tracking.Pass.useTRTonlyParamCuts)
+    kwargs.setdefault("OldTransitionLogic", flags.InDet.Tracking.Pass.useTRTonlyOldLogic)
+    kwargs.setdefault("minTRTPrecisionFraction", flags.InDet.Tracking.Pass.minSecondaryTRTPrecFrac)
+    kwargs.setdefault("TRTTrksEtaBins", flags.InDet.Tracking.Pass.TrkSel.TRTTrksEtaBins)
+    kwargs.setdefault("TRTTrksMinTRTHitsThresholds", flags.InDet.Tracking.Pass.TrkSel.TRTTrksMinTRTHitsThresholds)
+    kwargs.setdefault("TRTTrksMinTRTHitsMuDependencies", flags.InDet.Tracking.Pass.TrkSel.TRTTrksMinTRTHitsMuDependencies)
 
     acc.setPrivateTools(CompFactory.InDet.InDetTrtTrackScoringTool(name, **kwargs))
     return acc
@@ -70,7 +62,7 @@ def TRT_SegmentToTrackToolCfg(flags, name ='InDetTRT_SegmentToTrackTool', extens
     kwargs.setdefault("ScoringTool", InDetTRT_StandaloneScoringTool)
     kwargs.setdefault("Extrapolator", InDetExtrapolator)
     kwargs.setdefault("FinalRefit", True)
-    kwargs.setdefault("MaxSharedHitsFraction", flags.InDet.Tracking.maxTRTonlyShared)
+    kwargs.setdefault("MaxSharedHitsFraction", flags.InDet.Tracking.Pass.maxTRTonlyShared)
     kwargs.setdefault("SuppressHoleSearch", True)
 
     InDetTRT_SegmentToTrackTool = CompFactory.InDet.TRT_SegmentToTrackTool(name = name, **kwargs)
@@ -95,12 +87,12 @@ def TRT_StandaloneTrackFinderCfg(flags, name ='InDetTRT_StandaloneTrackFinder',
                                                                                         usePrdAssociationTool = usePrdAssociationTool))
     acc.addPublicTool(InDetTRT_SegmentToTrackTool)
 
-    kwargs.setdefault("MinNumDriftCircles", flags.InDet.Tracking.minTRTonly)
-    kwargs.setdefault("MinPt", flags.InDet.Tracking.minTRTonlyPt)
+    kwargs.setdefault("MinNumDriftCircles", flags.InDet.Tracking.Pass.minTRTonly)
+    kwargs.setdefault("MinPt", flags.InDet.Tracking.Pass.minTRTonlyPt)
     kwargs.setdefault("InputSegmentsLocation", BarrelSegments)
     kwargs.setdefault("MaterialEffects", 0)
     kwargs.setdefault("PRDtoTrackMap", prd_to_track_map)
-    kwargs.setdefault("OldTransitionLogic", flags.InDet.Tracking.useTRTonlyOldLogic)
+    kwargs.setdefault("OldTransitionLogic", flags.InDet.Tracking.Pass.useTRTonlyOldLogic)
     kwargs.setdefault("OutputTracksLocation", TRTStandaloneTracks)
     kwargs.setdefault("TRT_SegToTrackTool", InDetTRT_SegmentToTrackTool)
 
@@ -145,7 +137,7 @@ def TRT_SegmentsToTrackCfg( flags, name ='InDetTRT_SegmentsToTrack_Barrel', exte
     kwargs.setdefault("SummaryTool", InDetTrackSummaryToolTRTTracks)
     kwargs.setdefault("AssociationTool", InDetPRDtoTrackMapToolGangedPixels if prd_to_track_map !='' else None,)
     kwargs.setdefault("InputAssociationMapName", prd_to_track_map)
-    kwargs.setdefault("MinNHit", flags.InDet.Tracking.minTRTonly)
+    kwargs.setdefault("MinNHit", flags.InDet.Tracking.Pass.minTRTonly)
     kwargs.setdefault("OutlierRemoval", True)
     kwargs.setdefault("MaterialEffects", False)
 
@@ -271,8 +263,8 @@ if __name__ == "__main__":
     top_acc.merge(TRTActiveCondAlgCfg(ConfigFlags))
     top_acc.merge(TC.TRT_DetElementsRoadCondAlgCfg())
     ############################# TRTPreProcessing configuration ############################
-    from InDetConfig.TRTPreProcessing import TRTPreProcessingCfg
     if not ConfigFlags.InDet.doDBMstandalone:
+        from InDetConfig.TRTPreProcessing import TRTPreProcessingCfg
         top_acc.merge(TRTPreProcessingCfg(ConfigFlags,(not ConfigFlags.InDet.doTRTPhaseCalculation or ConfigFlags.Beam.Type =="collisions"),False))
     ########################### TRTSegmentFindingCfg configuration ##########################
     # NewTracking collection keys
diff --git a/InnerDetector/InDetConfig/python/TrackRecoConfig.py b/InnerDetector/InDetConfig/python/TrackRecoConfig.py
index 2ba01a7cb558fbeeffefdc6fa0731c1f12c27526..400a90139a6a86fd146d6135cfc7776169e098b9 100644
--- a/InnerDetector/InDetConfig/python/TrackRecoConfig.py
+++ b/InnerDetector/InDetConfig/python/TrackRecoConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
 
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory import CompFactory
@@ -283,9 +283,9 @@ def InDetTrackRecoCfg(flags):
     # LRT
     if flags.InDet.doLargeD0 or flags.InDet.doR3LargeD0:
         if flags.InDet.doR3LargeD0:
-            flagsLRT = flags.cloneAndReplace("InDet.Tracking", "InDet.R3LargeD0Tracking")
+            flagsLRT = flags.cloneAndReplace("InDet.Tracking.Pass", "InDet.Tracking.R3LargeD0Pass")
         else:
-            flagsLRT = flags.cloneAndReplace("InDet.Tracking", "InDet.LargeD0Tracking")
+            flagsLRT = flags.cloneAndReplace("InDet.Tracking.Pass", "InDet.Tracking.LargeD0Pass")
         result.merge(TrackingSiPatternCfg(flagsLRT, InputCombinedInDetTracks, "ResolvedLargeD0Tracks", "SiSpSeededLargeD0Tracks", "InDetTRT_SeededAmbiguityProcessorSplitProb"))
         LRTTrackContainer = "ResolvedLargeD0Tracks"
         if flags.InDet.doTRTExtension:
@@ -311,7 +311,7 @@ def InDetTrackRecoCfg(flags):
 
     # Low pt
     if flags.InDet.doLowPt:
-        flagsLowPt = flags.cloneAndReplace("InDet.Tracking", "InDet.LowPtTracking")
+        flagsLowPt = flags.cloneAndReplace("InDet.Tracking.Pass", "InDet.Tracking.LowPtPass")
         result.merge(TrackingSiPatternCfg(flagsLowPt, InputCombinedInDetTracks, "ResolvedLowPtTracks", "SiSpSeededLowPtTracks"))
         LowPtTrackContainer = "ResolvedLowPtTracks"
         if flags.InDet.doTRTExtension:
@@ -325,13 +325,13 @@ def InDetTrackRecoCfg(flags):
 
     # Very low pt
     if flags.InDet.doVeryLowPt:
-        flagsVeryLowPt = flags.cloneAndReplace("InDet.Tracking", "InDet.VeryLowPtTracking")
+        flagsVeryLowPt = flags.cloneAndReplace("InDet.Tracking.Pass", "InDet.Tracking.VeryLowPtPass")
         result.merge(TrackingSiPatternCfg(flagsVeryLowPt, InputCombinedInDetTracks, "ResolvedVeryLowPtTracks", "SiSpSeededLowPtTracks"))
         InputCombinedInDetTracks += ["ResolvedVeryLowPtTracks"]
 
     # TRT standalone
     if flags.InDet.doTRTStandalone:
-        flagsTRTStandalone = flags.cloneAndReplace("InDet.Tracking", "InDet.TRTStandaloneTracking")
+        flagsTRTStandalone = flags.cloneAndReplace("InDet.Tracking.Pass", "InDet.Tracking.TRTStandalonePass")
         from InDetConfig.TRTStandaloneConfig import TRTStandaloneCfg
         result.merge(TRTStandaloneCfg(flagsTRTStandalone, "", InputCombinedInDetTracks, "TRTSegments"))
         InputCombinedInDetTracks += ["TRTStandaloneTracks"]
@@ -344,7 +344,7 @@ def InDetTrackRecoCfg(flags):
         if flags.InDet.storeSeparateLargeD0Container:
             InputForwardInDetTracks += ["ExtendedLargeD0Tracks"]
 
-        flagsForward = flags.cloneAndReplace("InDet.Tracking", "InDet.ForwardTracksTracking")
+        flagsForward = flags.cloneAndReplace("InDet.Tracking.Pass", "InDet.Tracking.ForwardTracksPass")
         result.merge(TrackingSiPatternCfg(flagsForward, InputForwardInDetTracks, "ResolvedForwardTracks", "SiSpSeededForwardTracks", "InDetAmbiguityProcessorSplitProbR3LargeD0"))
         InputForwardInDetTracks += ["ResolvedForwardTracks"]
 
@@ -368,7 +368,7 @@ def InDetTrackRecoCfg(flags):
         if flags.InDet.storeSeparateLargeD0Container:
             InputPixelInDetTracks += ["ExtendedLargeD0Tracks"]
 
-        flagsDisappearing = flags.cloneAndReplace("InDet.Tracking", "InDet.DisappearingTracking")
+        flagsDisappearing = flags.cloneAndReplace("InDet.Tracking.Pass", "InDet.Tracking.DisappearingPass")
         result.merge(TrackingSiPatternCfg(flagsDisappearing, InputPixelInDetTracks, "ResolvedDisappearingTracks", "SiSpSeededDisappearingTracks", "InDetAmbiguityProcessorSplitProbForwardTracks"))
         DisappearingTrackContainer = "ResolvedDisappearingTracks"
         if flags.InDet.doTRTExtension:
diff --git a/InnerDetector/InDetConfig/python/TrackingCommonConfig.py b/InnerDetector/InDetConfig/python/TrackingCommonConfig.py
index 08fdf0dadc8e1f74da86d931c5310e89d18fb911..666b4fcb7efb57f2a6722ae23b3c9f79b77d4836 100644
--- a/InnerDetector/InDetConfig/python/TrackingCommonConfig.py
+++ b/InnerDetector/InDetConfig/python/TrackingCommonConfig.py
@@ -358,7 +358,7 @@ def InDetTRTDriftCircleCutForPatternRecoCfg(flags, name='InDetTRTDriftCircleCutF
     the_name = makeName( name, kwargs)
     result = ComponentAccumulator()
     kwargs.setdefault("MinOffsetDCs", 5)
-    kwargs.setdefault("UseNewParameterization", flags.InDet.Tracking.useNewParameterizationTRT)
+    kwargs.setdefault("UseNewParameterization", flags.InDet.Tracking.Pass.useNewParameterizationTRT)
     kwargs.setdefault("UseActiveFractionSvc", flags.Detector.EnableTRT)
     result.setPrivateTools(CompFactory.InDet.InDetTrtDriftCircleCutTool(the_name, **kwargs))
     return result
@@ -711,15 +711,13 @@ def InDetGlobalChi2FitterCfg(flags, name='InDetGlobalChi2Fitter', **kwargs) :
 
     pix_cluster_on_track_args = stripArgs(kwargs,['SplitClusterMapExtension','ClusterSplitProbabilityName','nameSuffix'])
     # PHF cut during fit iterations to save CPU time
-    kwargs.setdefault('MinPHFCut', flags.InDet.Tracking.minTRTPrecFrac)
+    kwargs.setdefault('MinPHFCut', flags.InDet.Tracking.Pass.minTRTPrecFrac)
 
     if 'RotCreatorTool' not in kwargs :
         InDetRotCreator = acc.popToolsAndMerge(InDetRotCreatorCfg(flags, **pix_cluster_on_track_args))
         kwargs.setdefault('RotCreatorTool', InDetRotCreator)
 
-    use_broad_cluster_any = flags.InDet.useBroadClusterErrors and (not flags.InDet.doDBMstandalone)
-
-    if 'BroadRotCreatorTool' not in kwargs and  not flags.InDet.doRefit:
+    if 'BroadRotCreatorTool' not in kwargs and not flags.InDet.Tracking.doRefit:
         InDetBroadRotCreator = acc.popToolsAndMerge(InDetBroadRotCreatorCfg(flags, **pix_cluster_on_track_args))
         kwargs.setdefault('BroadRotCreatorTool', InDetBroadRotCreator)
 
@@ -730,10 +728,11 @@ def InDetGlobalChi2FitterCfg(flags, name='InDetGlobalChi2Fitter', **kwargs) :
         kwargs.setdefault('TRTExtensionCuts', False)
         kwargs.setdefault('TrackChi2PerNDFCut', 20)
 
-    if flags.InDet.doRefit or use_broad_cluster_any is True:
+    if flags.InDet.useBroadClusterErrors and not flags.InDet.doDBMstandalone:
         kwargs.setdefault('RecalibrateSilicon', False)
 
-    if flags.InDet.doRefit:
+    if flags.InDet.Tracking.doRefit:
+        kwargs.setdefault('RecalibrateSilicon', False)
         kwargs.setdefault('BroadRotCreatorTool', None)
         kwargs.setdefault('ReintegrateOutliers', False)
         kwargs.setdefault('RecalibrateTRT', False)
@@ -873,7 +872,7 @@ def InDetGlobalChi2FitterTRTCfg(flags, name='InDetGlobalChi2FitterTRT', **kwargs
     kwargs.setdefault("Momentum", 1000.*Units.MeV   if flags.InDet.materialInteractions and not flags.BField.solenoidOn else  0)
     kwargs.setdefault("OutlierCut", 5)
     kwargs.setdefault("MaxOutliers", 99 if flags.InDet.doRobustReco or flags.Beam.Type == 'cosmics' else 10)
-    kwargs.setdefault("ReintegrateOutliers", False if flags.InDet.doRefit else False)
+    kwargs.setdefault("ReintegrateOutliers", False)
 
     InDetGlobalChi2FitterBase = acc.popToolsAndMerge(InDetGlobalChi2FitterBaseCfg(flags, name=name, **kwargs))
     acc.setPrivateTools(InDetGlobalChi2FitterBase)
@@ -901,7 +900,7 @@ def InDetGlobalChi2FitterLowPtCfg(flags, name='InDetGlobalChi2FitterLowPt', **kw
         InDetRotCreator = acc.popToolsAndMerge(InDetRotCreatorCfg(flags, **pix_cluster_on_track_args))
         kwargs.setdefault('RotCreatorTool', InDetRotCreator)
 
-    if 'BroadRotCreatorTool' not in kwargs and  not flags.InDet.doRefit:
+    if 'BroadRotCreatorTool' not in kwargs and not flags.InDet.Tracking.doRefit:
         InDetBroadRotCreator = acc.popToolsAndMerge(InDetBroadRotCreatorCfg(flags, **pix_cluster_on_track_args))
         kwargs.setdefault('BroadRotCreatorTool', InDetBroadRotCreator)
 
@@ -1045,14 +1044,14 @@ def InDetTRT_TrackExtensionTool_xkCfg(flags, name='InDetTRT_ExtensionTool', **kw
     kwargs.setdefault("TRT_ClustersContainer", 'TRT_DriftCircles') # InDetKeys.TRT_DriftCircles()
     kwargs.setdefault("TrtManagerLocation", 'TRT') # InDetKeys.TRT_Manager()
     kwargs.setdefault("UseDriftRadius", not flags.InDet.noTRTTiming)
-    kwargs.setdefault("MinNumberDriftCircles", flags.InDet.Tracking.minTRTonTrk)
+    kwargs.setdefault("MinNumberDriftCircles", flags.InDet.Tracking.Pass.minTRTonTrk)
     kwargs.setdefault("ScaleHitUncertainty", 2)
     kwargs.setdefault("RoadWidth", 20.)
-    kwargs.setdefault("UseParameterization", flags.InDet.Tracking.useParameterizedTRTCuts)
+    kwargs.setdefault("UseParameterization", flags.InDet.Tracking.Pass.useParameterizedTRTCuts)
     kwargs.setdefault("maxImpactParameter", 500 if flags.InDet.doBeamHalo or flags.InDet.doBeamGas else 50 )  # single beam running, open cuts
 
-    if flags.InDet.Tracking.RoISeededBackTracking:
-        kwargs.setdefault("minTRTSegmentpT", flags.InDet.Tracking.minSecondaryPt)
+    if flags.InDet.Tracking.Pass.RoISeededBackTracking:
+        kwargs.setdefault("minTRTSegmentpT", flags.InDet.Tracking.Pass.minSecondaryPt)
 
     acc.merge(TRT_DetElementsRoadCondAlgCfg(flags))
     from TRT_ConditionsAlgs.TRT_ConditionsAlgsConfig import TRTActiveCondAlgCfg
@@ -1183,10 +1182,10 @@ def InDetAmbiScoringToolBaseCfg(flags, name='InDetAmbiScoringTool', **kwargs) :
     kwargs.setdefault("SummaryTool", InDetTrackSummaryTool )
     kwargs.setdefault("useAmbigFcn", True )
     kwargs.setdefault("useTRT_AmbigFcn", False )
-    kwargs.setdefault("maxZImp", flags.InDet.Tracking.maxZImpact )
-    kwargs.setdefault("maxEta", flags.InDet.Tracking.maxEta )
-    kwargs.setdefault("usePixel", flags.InDet.Tracking.usePixel )
-    kwargs.setdefault("useSCT", flags.InDet.Tracking.useSCT )
+    kwargs.setdefault("maxZImp", flags.InDet.Tracking.Pass.maxZImpact )
+    kwargs.setdefault("maxEta", flags.InDet.Tracking.Pass.maxEta )
+    kwargs.setdefault("usePixel", flags.InDet.Tracking.Pass.usePixel )
+    kwargs.setdefault("useSCT", flags.InDet.Tracking.Pass.useSCT )
     kwargs.setdefault("doEmCaloSeed", have_calo_rois )
     acc.setPrivateTools(CompFactory.InDet.InDetAmbiScoringTool(name, **kwargs))
     return acc
@@ -1197,7 +1196,7 @@ def InDetCosmicsScoringToolBaseCfg(flags, name='InDetCosmicsScoringTool', **kwar
 
     InDetTrackSummaryTool = acc.getPrimaryAndMerge(InDetTrackSummaryToolCfg(flags))
 
-    kwargs.setdefault("nWeightedClustersMin", flags.InDet.Tracking.nWeightedClustersMin )
+    kwargs.setdefault("nWeightedClustersMin", flags.InDet.Tracking.Pass.nWeightedClustersMin )
     kwargs.setdefault("minTRTHits", 0 )
     kwargs.setdefault("SummaryTool", InDetTrackSummaryTool )
 
@@ -1218,7 +1217,7 @@ def InDetTRT_ExtensionToolPhaseCfg(flags, name='InDetTRT_ExtensionToolPhase', **
 def InDetCosmicExtenScoringToolCfg(flags, name='InDetCosmicExtenScoringTool',**kwargs) :
     acc = ComponentAccumulator()
     kwargs.setdefault("nWeightedClustersMin", 0)
-    kwargs.setdefault("minTRTHits", flags.InDet.Tracking.minTRTonTrk )
+    kwargs.setdefault("minTRTHits", flags.InDet.Tracking.Pass.minTRTonTrk )
     acc.setPrivateTools(acc.popToolsAndMerge(InDetCosmicsScoringToolBaseCfg(flags, name = 'InDetCosmicExtenScoringTool', **kwargs)))
     return acc
 
@@ -1257,7 +1256,7 @@ def InDetCosmicScoringTool_TRTCfg(flags, name='InDetCosmicExtenScoringTool',**kw
     acc = ComponentAccumulator()
     InDetTrackSummaryToolNoHoleSearch = acc.popToolsAndMerge(InDetTrackSummaryToolNoHoleSearchCfg(flags))
 
-    kwargs.setdefault("minTRTHits", flags.InDet.Tracking.minSecondaryTRTonTrk)
+    kwargs.setdefault("minTRTHits", flags.InDet.Tracking.Pass.minSecondaryTRTonTrk)
     kwargs.setdefault("SummaryTool", InDetTrackSummaryToolNoHoleSearch)
 
     acc.setPrivateTools(acc.popToolsAndMerge(InDetCosmicExtenScoringToolCfg(flags,
@@ -1269,15 +1268,15 @@ def InDetTRT_SeededScoringToolCfg(flags, name='InDetTRT_SeededScoringTool', **kw
 
     kwargs.setdefault("useAmbigFcn", False)
     kwargs.setdefault("useTRT_AmbigFcn", True)
-    kwargs.setdefault("minTRTonTrk",  flags.InDet.Tracking.minSecondaryTRTonTrk)
-    kwargs.setdefault("minTRTPrecisionFraction",  flags.InDet.Tracking.minSecondaryTRTPrecFrac)
-    kwargs.setdefault("minPt",  flags.InDet.Tracking.minSecondaryPt)
-    kwargs.setdefault("maxRPhiImp",  flags.InDet.Tracking.maxSecondaryImpact)
-    kwargs.setdefault("minSiClusters",  flags.InDet.Tracking.minSecondaryClusters)
-    kwargs.setdefault("maxSiHoles",  flags.InDet.Tracking.maxSecondaryHoles)
-    kwargs.setdefault("maxPixelHoles",  flags.InDet.Tracking.maxSecondaryPixelHoles)
-    kwargs.setdefault("maxSCTHoles",  flags.InDet.Tracking.maxSecondarySCTHoles)
-    kwargs.setdefault("maxDoubleHoles",  flags.InDet.Tracking.maxSecondaryDoubleHoles)
+    kwargs.setdefault("minTRTonTrk", flags.InDet.Tracking.Pass.minSecondaryTRTonTrk)
+    kwargs.setdefault("minTRTPrecisionFraction", flags.InDet.Tracking.Pass.minSecondaryTRTPrecFrac)
+    kwargs.setdefault("minPt", flags.InDet.Tracking.Pass.minSecondaryPt)
+    kwargs.setdefault("maxRPhiImp", flags.InDet.Tracking.Pass.maxSecondaryImpact)
+    kwargs.setdefault("minSiClusters", flags.InDet.Tracking.Pass.minSecondaryClusters)
+    kwargs.setdefault("maxSiHoles", flags.InDet.Tracking.Pass.maxSecondaryHoles)
+    kwargs.setdefault("maxPixelHoles", flags.InDet.Tracking.Pass.maxSecondaryPixelHoles)
+    kwargs.setdefault("maxSCTHoles", flags.InDet.Tracking.Pass.maxSecondarySCTHoles)
+    kwargs.setdefault("maxDoubleHoles", flags.InDet.Tracking.Pass.maxSecondaryDoubleHoles)
 
     acc.setPrivateTools(acc.popToolsAndMerge(InDetAmbiScoringToolBaseCfg(flags, name=name, **kwargs)))
     return acc
@@ -1292,15 +1291,15 @@ def InDetAmbiScoringToolCfg(flags, name='InDetAmbiScoringTool', **kwargs) :
     kwargs.setdefault("useTRT_AmbigFcn", False )
     kwargs.setdefault("minTRTonTrk", 0 )
     kwargs.setdefault("minTRTPrecisionFraction", 0 )
-    kwargs.setdefault("minPt", flags.InDet.Tracking.minPT )
-    kwargs.setdefault("maxRPhiImp", flags.InDet.Tracking.maxPrimaryImpact )
-    kwargs.setdefault("minSiClusters", flags.InDet.Tracking.minClusters )
-    kwargs.setdefault("minPixel", flags.InDet.Tracking.minPixel )
-    kwargs.setdefault("maxSiHoles", flags.InDet.Tracking.maxHoles )
-    kwargs.setdefault("maxPixelHoles", flags.InDet.Tracking.maxPixelHoles )
-    kwargs.setdefault("maxSCTHoles", flags.InDet.Tracking.maxSctHoles )
-    kwargs.setdefault("maxDoubleHoles", flags.InDet.Tracking.maxDoubleHoles )
-    acc.setPrivateTools(acc.popToolsAndMerge(InDetAmbiScoringToolBaseCfg(flags, name + flags.InDet.Tracking.extension, **kwargs)))
+    kwargs.setdefault("minPt", flags.InDet.Tracking.Pass.minPT )
+    kwargs.setdefault("maxRPhiImp", flags.InDet.Tracking.Pass.maxPrimaryImpact )
+    kwargs.setdefault("minSiClusters", flags.InDet.Tracking.Pass.minClusters )
+    kwargs.setdefault("minPixel", flags.InDet.Tracking.Pass.minPixel )
+    kwargs.setdefault("maxSiHoles", flags.InDet.Tracking.Pass.maxHoles )
+    kwargs.setdefault("maxPixelHoles", flags.InDet.Tracking.Pass.maxPixelHoles )
+    kwargs.setdefault("maxSCTHoles", flags.InDet.Tracking.Pass.maxSctHoles )
+    kwargs.setdefault("maxDoubleHoles", flags.InDet.Tracking.Pass.maxDoubleHoles )
+    acc.setPrivateTools(acc.popToolsAndMerge(InDetAmbiScoringToolBaseCfg(flags, name + flags.InDet.Tracking.Pass.extension, **kwargs)))
     return acc
 
 def InDetAmbiScoringToolSiCfg(flags, name='InDetAmbiScoringToolSi', **kwargs) :
@@ -1311,8 +1310,8 @@ def InDetExtenScoringToolCfg(flags, name='InDetExtenScoringTool', **kwargs) :
     acc = ComponentAccumulator()
     if flags.InDet.trackFitterType in ['KalmanFitter', 'KalmanDNAFitter', 'ReferenceKalmanFitter']:
         kwargs.setdefault("minTRTPrecisionFraction", 0.2)
-    kwargs.setdefault("minTRTonTrk", flags.InDet.Tracking.minTRTonTrk)
-    kwargs.setdefault("minTRTPrecisionFraction", flags.InDet.Tracking.minTRTPrecFrac)
+    kwargs.setdefault("minTRTonTrk", flags.InDet.Tracking.Pass.minTRTonTrk)
+    kwargs.setdefault("minTRTPrecisionFraction", flags.InDet.Tracking.Pass.minTRTPrecFrac)
     acc.setPrivateTools(acc.popToolsAndMerge(InDetAmbiScoringToolCfg(flags, name = name,  **kwargs)))
     return acc
 
@@ -1373,10 +1372,10 @@ def InDetNNScoringToolBaseCfg(flags, name='InDetNNScoringTool', **kwargs) :
     kwargs.setdefault("SummaryTool", InDetTrackSummaryTool )
     kwargs.setdefault("useAmbigFcn", True )
     kwargs.setdefault("useTRT_AmbigFcn", False )
-    kwargs.setdefault("maxZImp", flags.InDet.Tracking.maxZImpact )
-    kwargs.setdefault("maxEta", flags.InDet.Tracking.maxEta )
-    kwargs.setdefault("usePixel", flags.InDet.Tracking.usePixel )
-    kwargs.setdefault("useSCT", flags.InDet.Tracking.useSCT )
+    kwargs.setdefault("maxZImp", flags.InDet.Tracking.Pass.maxZImpact )
+    kwargs.setdefault("maxEta", flags.InDet.Tracking.Pass.maxEta )
+    kwargs.setdefault("usePixel", flags.InDet.Tracking.Pass.usePixel )
+    kwargs.setdefault("useSCT", flags.InDet.Tracking.Pass.useSCT )
     kwargs.setdefault("doEmCaloSeed", have_calo_rois )
 
     acc.setPrivateTools(CompFactory.InDet.InDetNNScoringTool(name = the_name, **kwargs ))
@@ -1387,16 +1386,16 @@ def InDetNNScoringToolCfg(flags, name='InDetNNScoringTool', **kwargs) :
     kwargs.setdefault("useTRT_AmbigFcn", False )
     kwargs.setdefault("minTRTonTrk", 0 )
     kwargs.setdefault("minTRTPrecisionFraction", 0 )
-    kwargs.setdefault("minPt", flags.InDet.Tracking.minPT )
-    kwargs.setdefault("maxRPhiImp", flags.InDet.Tracking.maxPrimaryImpact )
-    kwargs.setdefault("minSiClusters", flags.InDet.Tracking.minClusters )
-    kwargs.setdefault("minPixel", flags.InDet.Tracking.minPixel )
-    kwargs.setdefault("maxSiHoles", flags.InDet.Tracking.maxHoles )
-    kwargs.setdefault("maxPixelHoles", flags.InDet.Tracking.maxPixelHoles )
-    kwargs.setdefault("maxSCTHoles", flags.InDet.Tracking.maxSctHoles )
-    kwargs.setdefault("maxDoubleHoles", flags.InDet.Tracking.maxDoubleHoles)
+    kwargs.setdefault("minPt", flags.InDet.Tracking.Pass.minPT )
+    kwargs.setdefault("maxRPhiImp", flags.InDet.Tracking.Pass.maxPrimaryImpact )
+    kwargs.setdefault("minSiClusters", flags.InDet.Tracking.Pass.minClusters )
+    kwargs.setdefault("minPixel", flags.InDet.Tracking.Pass.minPixel )
+    kwargs.setdefault("maxSiHoles", flags.InDet.Tracking.Pass.maxHoles )
+    kwargs.setdefault("maxPixelHoles", flags.InDet.Tracking.Pass.maxPixelHoles )
+    kwargs.setdefault("maxSCTHoles", flags.InDet.Tracking.Pass.maxSctHoles )
+    kwargs.setdefault("maxDoubleHoles", flags.InDet.Tracking.Pass.maxDoubleHoles)
 
-    return InDetNNScoringToolBaseCfg(flags, name=name+flags.InDet.Tracking.extension, **kwargs )
+    return InDetNNScoringToolBaseCfg(flags, name=name+flags.InDet.Tracking.Pass.extension, **kwargs )
 
 def InDetNNScoringToolSiCfg(flags, name='InDetNNScoringToolSi', **kwargs) :
     kwargs.setdefault('DriftCircleCutTool','')
@@ -1404,7 +1403,7 @@ def InDetNNScoringToolSiCfg(flags, name='InDetNNScoringToolSi', **kwargs) :
 
 def InDetCosmicsScoringToolCfg(flags, name='InDetCosmicsScoringTool', **kwargs) :
     return InDetCosmicsScoringToolBaseCfg(flags,
-                                          name=name+flags.InDet.Tracking.extension)
+                                          name=name+flags.InDet.Tracking.Pass.extension)
 
 def FullLinearizedTrackFactoryCfg(flags, name='TrackToVertexIPEstimator', **kwargs):
     from TrkConfig.AtlasExtrapolatorConfig import InDetExtrapolatorCfg
diff --git a/InnerDetector/InDetConfig/python/TrackingPassFlags.py b/InnerDetector/InDetConfig/python/TrackingPassFlags.py
index 15049380efa0485c4a2559882357782b4f67e5e9..419e4a283f314b7cfd8856d5f0eb4ebc4ce5cdb3 100644
--- a/InnerDetector/InDetConfig/python/TrackingPassFlags.py
+++ b/InnerDetector/InDetConfig/python/TrackingPassFlags.py
@@ -1,13 +1,9 @@
-#Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+#Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
 
 from __future__ import print_function
 
 import AthenaCommon.SystemOfUnits as Units
 
-
-## constants
-max_holes = 2 ## was 5
-
 def select( selInd, valuesmap ):
     for k,v in valuesmap.items():    
         ranges = [int(x) for x in k.split('-') if x != '']
@@ -44,8 +40,8 @@ def minClusters_ranges( inflags ):
 
 def maxHoles_ranges( inflags ):
     return select( inflags.InDet.cutLevel,
-    {'-7':  max_holes,
-    '8-':  max_holes } )
+    {'-7':  3,
+    '8-':  2 } )
 
 def maxPixelHoles_ranges( inflags ):
     return select( inflags.InDet.cutLevel,
@@ -65,12 +61,12 @@ def maxZImpact_ranges( inflags ):
 
 def nHolesMax_ranges( inflags ):
     return select( inflags.InDet.cutLevel,
-    {'-11':  max_holes,
+    {'-11':  3,
     '12-':  2 } )
 
 def nHolesGapMax_ranges( inflags ):
     return select( inflags.InDet.cutLevel,
-    {'-11':  max_holes,
+    {'-11':  3,
     '12-':  2 } )
 
 def Xi2max_ranges( inflags ):
@@ -205,13 +201,17 @@ def createTrackingPassFlags():
 
     icf.addFlag("extension", "" ) ### for extension
 
+    icf.addFlag("usePrdAssociationTool", False)
+    icf.addFlag("isLowPt", False)
+    icf.addFlag("useTIDE_Ambi", True)
+
     icf.addFlag("minPT", minPT_ranges )
     icf.addFlag("minSecondaryPt", minSecondaryPT_ranges ) #Pt cut for back tracking + segment finding for these
     icf.addFlag("minTRTonlyPt", minTRTonlyPt_ranges ) #Pt cut for TRT only
     icf.addFlag("pT_SSScut", -1. ) # off
 
     # --- first set kinematic defaults
-    icf.addFlag("maxPT", lambda pcf : 1000.0 * Units.TeV) # off!
+    icf.addFlag("maxPT", 1000.0 * Units.TeV) # off!
     icf.addFlag("minEta", -1) # off!
     icf.addFlag("maxEta", 2.7)
 
@@ -440,6 +440,7 @@ def createITkLargeD0TrackingPassFlags():
 
     icf = createTrackingPassFlags()
     icf.extension               = "LargeD0"
+    icf.usePrdAssociationTool = True
 
     icf.useEtaDepCuts      = True
     icf.maxPT              = [1.0 * Units.TeV]
@@ -548,6 +549,7 @@ def createMinBiasTrackingPassFlags():
 def createLargeD0TrackingPassFlags():
     icf = createTrackingPassFlags()
     icf.extension          = "LargeD0"
+    icf.usePrdAssociationTool = True
     icf.maxPT              = 1.0 * Units.TeV
     icf.minPT              = 900 * Units.MeV
     icf.maxEta             = 5
@@ -576,6 +578,7 @@ def createLargeD0TrackingPassFlags():
 def createR3LargeD0TrackingPassFlags():
     icf = createTrackingPassFlags()
     icf.extension          = "R3LargeD0"
+    icf.usePrdAssociationTool = True
     icf.maxPT              = 1.0 * Units.TeV
     icf.minPT              = 1.0 * Units.GeV                                                                                    
     icf.maxEta             = 3                                                                                                        
@@ -612,6 +615,7 @@ def createR3LargeD0TrackingPassFlags():
 def createLowPtLargeD0TrackingPassFlags():
     icf = createTrackingPassFlags()
     icf.extension          = "LowPtLargeD0"
+    icf.usePrdAssociationTool = True
     icf.maxPT              = 1.0 * Units.TeV
     icf.minPT              = 100 * Units.MeV
     icf.maxEta             = 5
@@ -639,7 +643,9 @@ def createLowPtLargeD0TrackingPassFlags():
 def createLowPtTrackingPassFlags():
     icf = createTrackingPassFlags()
     icf.extension        = "LowPt"
-    icf.maxPT = lambda pcf: (1e6  if pcf.InDet.doMinBias else pcf.InDet.Tracking.minPT + 0.3) * Units.GeV
+    icf.usePrdAssociationTool = True
+    icf.isLowPt          = True
+    icf.maxPT = lambda pcf: (1e6  if pcf.InDet.doMinBias else pcf.InDet.Tracking.Pass.minPT + 0.3) * Units.GeV
     icf.minPT            = 0.050 * Units.GeV
     icf.minClusters      = 5
     icf.minSiNotShared   = 4
@@ -660,6 +666,7 @@ def createLowPtTrackingPassFlags():
 def createITkConversionFindingTrackingPassFlags(): #To be updated
     icf = createTrackingPassFlags()
     icf.extension               = "ConversionFinding"
+    icf.usePrdAssociationTool = True
 
     icf.useEtaDepCuts           = True
     icf.etaBins                 = [-1.0,4.0]
@@ -694,7 +701,9 @@ def createITkConversionFindingTrackingPassFlags(): #To be updated
 def createVeryLowPtTrackingPassFlags():
     icf = createTrackingPassFlags() #TODO consider using createLowPtTrackingPassFlags as a base here
     icf.extension        = "VeryLowPt"
-    icf.maxPT            = lambda pcf : (1e6 if pcf.InDet.doMinBias  else  pcf.InDet.Tracking.minPT + 0.3) * Units.GeV # some overlap
+    icf.usePrdAssociationTool = True
+    icf.isLowPt          = True
+    icf.maxPT            = lambda pcf : (1e6 if pcf.InDet.doMinBias  else  pcf.InDet.Tracking.Pass.minPT + 0.3) * Units.GeV # some overlap
     icf.minPT            = 0.050 * Units.GeV
     icf.minClusters      = 3
     icf.minSiNotShared   = 3
@@ -714,6 +723,8 @@ def createVeryLowPtTrackingPassFlags():
 def createForwardTracksTrackingPassFlags():
     icf = createTrackingPassFlags()
     icf.extension        = "ForwardTracks"
+    icf.usePrdAssociationTool = True
+    icf.useTIDE_Ambi     = False
     icf.minEta           = 2.4 # restrict to minimal eta
     icf.maxEta           = 2.7
     icf.minPT            = 2 * Units.GeV
@@ -736,6 +747,7 @@ def createForwardTracksTrackingPassFlags():
 def createBeamGasTrackingPassFlags():
     icf = createTrackingPassFlags()
     icf.extension        = "BeamGas"
+    icf.usePrdAssociationTool = True
     icf.minPT            = 0.500 * Units.GeV
     icf.maxPrimaryImpact = 300. * Units.mm
     icf.maxZImpact       = 2000. * Units.mm
@@ -853,6 +865,7 @@ def createHeavyIonTrackingPassFlags():
 def createPixelTrackingPassFlags():
     icf = createTrackingPassFlags()
     icf.extension        = "Pixel"
+    icf.isLowPt          = lambda pcf : pcf.doMinBias
 
     def _minPt( pcf ):
         if pcf.Beam.Type == "cosmics":
@@ -867,7 +880,7 @@ def createPixelTrackingPassFlags():
         return 0.1 * Units.GeV
     
     icf.minPT            = lambda pcf : _minPt    
-    icf.minClusters      = lambda pcf : 3
+    icf.minClusters      = 3
 
     def _pick( default, hion, cosmics):
         def _internal( pcf ):
@@ -895,7 +908,7 @@ def createPixelTrackingPassFlags():
     icf.maxZImpact       = lambda pcf: 10000. * Units.mm if pcf.Beam.Type == "cosmics" else maxZImpact_ranges( pcf )
     icf.Xi2max           = lambda pcf: 60.0  if pcf.Beam.Type =="cosmics" else Xi2max_ranges( pcf )
     icf.Xi2maxNoAdd      = lambda pcf: 100.0  if pcf.Beam.Type =="cosmics" else Xi2maxNoAdd_ranges( pcf )
-    icf.nWeightedClustersMin = lambda pcf: 6 if pcf.Beam.Type =="cosmics" else 6   # why change if detault is also 6!
+    icf.nWeightedClustersMin = 6
 
     return icf
 
@@ -903,6 +916,7 @@ def createPixelTrackingPassFlags():
 def createDisappearingTrackingPassFlags():
     icf = createTrackingPassFlags()
     icf.extension        = "Disappearing"
+    icf.usePrdAssociationTool = True
     icf.minPT            = 5 * Units.GeV
     icf.minClusters      = 4
     icf.maxHoles         = 0
@@ -1020,6 +1034,7 @@ def createSCTandTRTTrackingPassFlags():
 def createDBMTrackingPassFlags():
     icf = createTrackingPassFlags()
     icf.extension               = "DBM"
+    icf.useTIDE_Ambi            = False
     icf.minEta                  = 3.05
     icf.maxEta                  = 3.45
     icf.Xi2maxNoAdd             = 10000
@@ -1068,22 +1083,21 @@ if __name__ == "__main__":
   ConfigFlags.loadAllDynamicFlags()
 
   assert ConfigFlags.InDet.cutLevel == 19 , "default cut level is wrong"
-  assert ConfigFlags.InDet.Tracking.minRoIClusterEt == 6000.0 * Units.MeV, "wrong cut value {} ".format(ConfigFlags.InDet.Tracking.minRoIClusterEt)
+  assert ConfigFlags.InDet.Tracking.Pass.minRoIClusterEt == 6000.0 * Units.MeV, "wrong cut value {} ".format(ConfigFlags.InDet.Tracking.Pass.minRoIClusterEt)
   ConfigFlags.InDet.cutLevel = 2
-  assert ConfigFlags.InDet.Tracking.minRoIClusterEt == 0.0, "wrong cut value {} ".format(ConfigFlags.InDet.Tracking.minRoIClusterEt)  
-  assert ConfigFlags.InDet.BeamGasTracking.minRoIClusterEt == 0.0, "wrong cut value {}, not following cutLevel setting ".format(ConfigFlags.InDet.BeamGasTracking.minRoIClusterEt)   
+  assert ConfigFlags.InDet.Tracking.Pass.minRoIClusterEt == 0.0, "wrong cut value {} ".format(ConfigFlags.InDet.Tracking.Pass.minRoIClusterEt)
+  assert ConfigFlags.InDet.Tracking.BeamGasPass.minRoIClusterEt == 0.0, "wrong cut value {}, not following cutLevel setting ".format(ConfigFlags.InDet.Tracking.BeamGasPass.minRoIClusterEt)
 
-  assert ConfigFlags.InDet.HeavyIonTracking.minSiNotShared == 7, "wrong cut value, overwrite"
-  assert ConfigFlags.InDet.HeavyIonTracking.minRoIClusterEt == 0.0, "wrong cut value, overwrite"
+  assert ConfigFlags.InDet.Tracking.HeavyIonPass.minSiNotShared == 7, "wrong cut value, overwrite"
+  assert ConfigFlags.InDet.Tracking.HeavyIonPass.minRoIClusterEt == 0.0, "wrong cut value, overwrite"
 
-  print("ConfigFlags.InDet.SCTandTRTTracking.minPT",ConfigFlags.InDet.SCTandTRTTracking.minPT * 1.0)
-  print("ConfigFlags.InDet.SCTandTRTTracking.minPT",ConfigFlags.InDet.MinBiasTracking.minPT * 1.0)
-  print("type(ConfigFlags.InDet.SCTandTRTTracking)",type(ConfigFlags.InDet.SCTandTRTTracking.minPT)) 
+  print("ConfigFlags.InDet.Tracking.SCTandTRTPass.minPT",ConfigFlags.InDet.Tracking.SCTandTRTPass.minPT * 1.0)
+  print("type(ConfigFlags.InDet.Tracking.SCTandTRTPass.minPT)",type(ConfigFlags.InDet.Tracking.SCTandTRTPass.minPT))
 
-  print("ConfigFlags.InDet.Tracking.minSecondaryPt",ConfigFlags.InDet.Tracking.minSecondaryPt * 1.0)
-  print("type(ConfigFlags.InDet.Tracking.MinSecondaryPt)",type(ConfigFlags.InDet.Tracking.minSecondaryPt))
+  print("ConfigFlags.InDet.Tracking.Pass.minSecondaryPt",ConfigFlags.InDet.Tracking.Pass.minSecondaryPt * 1.0)
+  print("type(ConfigFlags.InDet.Tracking.Pass.minSecondaryPt)",type(ConfigFlags.InDet.Tracking.Pass.minSecondaryPt))
   
-  print("ConfigFlags.InDet.SCTandTRTTracking.roadWidth",ConfigFlags.InDet.SCTandTRTTracking.roadWidth * 1.0)
+  print("ConfigFlags.InDet.Tracking.SCTandTRTPass.roadWidth",ConfigFlags.InDet.Tracking.SCTandTRTPass.roadWidth * 1.0)
 
   #ConfigFlags.dump()
   print( "allok" )   
diff --git a/InnerDetector/InDetConfig/python/TrackingSiPatternConfig.py b/InnerDetector/InDetConfig/python/TrackingSiPatternConfig.py
index e47f1441eca239f663ccc1171d81e3b064362b41..b5fcb6ffc9fcdddbad214f6639c781d4e5d0cae3 100644
--- a/InnerDetector/InDetConfig/python/TrackingSiPatternConfig.py
+++ b/InnerDetector/InDetConfig/python/TrackingSiPatternConfig.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
+# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from AthenaConfiguration.ComponentFactory     import CompFactory
 import InDetConfig.TrackingCommonConfig         as   TC
@@ -6,100 +6,81 @@ import InDetConfig.TrackingCommonConfig         as   TC
 def SiSpacePointsSeedMakerCfg(flags, name="InDetSpSeedsMaker", InputCollections = None, **kwargs) :
     acc = ComponentAccumulator()
     #
-    # --- decide if use the association tool
-    #
-    if (len(InputCollections) > 0) and \
-        (flags.InDet.Tracking.extension == "LowPt" \
-            or flags.InDet.Tracking.extension == "VeryLowPt" \
-            or flags.InDet.Tracking.extension == "LargeD0" \
-            or flags.InDet.Tracking.extension == "R3LargeD0" \
-            or flags.InDet.Tracking.extension == "LowPtLargeD0" \
-            or flags.InDet.Tracking.extension == "BeamGas" \
-            or flags.InDet.Tracking.extension == "ForwardTracks" \
-            or flags.InDet.Tracking.extension == "Disappearing"):
-        usePrdAssociationTool = True
-    else:
-        usePrdAssociationTool = False
-    #
-    # --- get list of already associated hits (always do this, even if no other tracking ran before)
-    #
-    if usePrdAssociationTool:
-        prefix = 'InDet'
-        suffix = flags.InDet.Tracking.extension
-    #
     # --- Space points seeds maker, use different ones for cosmics and collisions
     #
-    if flags.InDet.Tracking.extension == "DBM":
-        SiSpacePointsSeedMaker = CompFactory.InDet.SiSpacePointsSeedMaker_ATLxk
-    elif flags.Beam.Type == 'cosmics':
+    if flags.Beam.Type == 'cosmics':
         SiSpacePointsSeedMaker = CompFactory.InDet.SiSpacePointsSeedMaker_Cosmic
     elif flags.InDet.doHeavyIon:
         SiSpacePointsSeedMaker = CompFactory.InDet.SiSpacePointsSeedMaker_HeavyIon
-    elif flags.InDet.Tracking.extension == "LowPt" or flags.InDet.Tracking.extension == "VeryLowPt" or (flags.InDet.Tracking.extension == "Pixel" and flags.InDet.doMinBias) :
+    elif flags.InDet.Tracking.Pass.isLowPt:
         SiSpacePointsSeedMaker = CompFactory.InDet.SiSpacePointsSeedMaker_LowMomentum
-    elif flags.InDet.Tracking.extension == "BeamGas":
+    elif flags.InDet.Tracking.Pass.extension == "BeamGas":
         SiSpacePointsSeedMaker = CompFactory.InDet.SiSpacePointsSeedMaker_BeamGas
     else:
         SiSpacePointsSeedMaker = CompFactory.InDet.SiSpacePointsSeedMaker_ATLxk
 
-    kwargs.setdefault("pTmin", flags.InDet.Tracking.minPT )
-    kwargs.setdefault("maxdImpact", flags.InDet.Tracking.maxPrimaryImpact )
-    kwargs.setdefault("maxZ", flags.InDet.Tracking.maxZImpact )
-    kwargs.setdefault("minZ", -flags.InDet.Tracking.maxZImpact )
-    kwargs.setdefault("usePixel", flags.InDet.Tracking.usePixel)
+    kwargs.setdefault("pTmin", flags.InDet.Tracking.Pass.minPT )
+    kwargs.setdefault("maxdImpact", flags.InDet.Tracking.Pass.maxPrimaryImpact )
+    kwargs.setdefault("maxZ", flags.InDet.Tracking.Pass.maxZImpact )
+    kwargs.setdefault("minZ", -flags.InDet.Tracking.Pass.maxZImpact )
+    kwargs.setdefault("usePixel", flags.InDet.Tracking.Pass.usePixel)
     kwargs.setdefault("SpacePointsPixelName", 'PixelSpacePoints') # InDetKeys.PixelSpacePoints()
-    kwargs.setdefault("useSCT", flags.InDet.Tracking.useSCT and flags.InDet.Tracking.useSCTSeeding )
+    kwargs.setdefault("useSCT", flags.InDet.Tracking.Pass.useSCT and flags.InDet.Tracking.Pass.useSCTSeeding )
     kwargs.setdefault("SpacePointsSCTName", 'SCT_SpacePoints') # InDetKeys.SCT_SpacePoints()
-    kwargs.setdefault("useOverlapSpCollection", flags.InDet.Tracking.useSCT and flags.InDet.Tracking.useSCTSeeding )
+    kwargs.setdefault("useOverlapSpCollection", flags.InDet.Tracking.Pass.useSCT and flags.InDet.Tracking.Pass.useSCTSeeding )
     kwargs.setdefault("SpacePointsOverlapName", 'OverlapSpacePoints') # InDetKeys.OverlapSpacePoints()
-    kwargs.setdefault("radMax", flags.InDet.Tracking.radMax)
-    kwargs.setdefault("RapidityCut",  flags.InDet.Tracking.maxEta )
-
-
-    if flags.InDet.Tracking.extension == "" or flags.InDet.doHeavyIon or  flags.InDet.Tracking.extension == "ForwardTracks":
-        kwargs.setdefault("maxdImpactPPS", flags.InDet.Tracking.maxdImpactPPSSeeds)
-        kwargs.setdefault("maxdImpactSSS", flags.InDet.Tracking.maxdImpactSSSSeeds)
-        if not flags.InDet.doHeavyIon:
-            kwargs.setdefault("maxSeedsForSpacePointStrips", flags.InDet.Tracking.maxSeedsPerSP_Strips)
-            kwargs.setdefault("maxSeedsForSpacePointPixels", flags.InDet.Tracking.maxSeedsPerSP_Pixels)
-            kwargs.setdefault("alwaysKeepConfirmedStripSeeds", flags.InDet.Tracking.keepAllConfirmedStripSeeds)
-            kwargs.setdefault("alwaysKeepConfirmedPixelSeeds", flags.InDet.Tracking.keepAllConfirmedPixelSeeds)
-            kwargs.setdefault("mindRadius", 10)
-            kwargs.setdefault("maxSizeSP", 200)
-            kwargs.setdefault("dImpactCutSlopeUnconfirmedSSS", 1.25)
-            kwargs.setdefault("dImpactCutSlopeUnconfirmedPPP", 2.0)
-
-    if flags.InDet.Tracking.extension == "R3LargeD0":
-        kwargs.setdefault("optimisePhiBinning", False)
-        kwargs.setdefault("usePixel", False)
-        kwargs.setdefault("etaMax", flags.InDet.Tracking.maxEta)
-        kwargs.setdefault("maxSeedsForSpacePointStrips", flags.InDet.Tracking.maxSeedsPerSP_Strips)
-        kwargs.setdefault("alwaysKeepConfirmedStripSeeds", flags.InDet.Tracking.keepAllConfirmedStripSeeds)
-        kwargs.setdefault("maxdRadius", 150)
-        kwargs.setdefault("seedScoreBonusConfirmationSeed", -2000)
+    kwargs.setdefault("radMax", flags.InDet.Tracking.Pass.radMax)
+    kwargs.setdefault("RapidityCut",  flags.InDet.Tracking.Pass.maxEta )
+
+    if not flags.InDet.doHeavyIon \
+       and (flags.InDet.Tracking.Pass.extension == "" or flags.InDet.Tracking.Pass.extension == "ForwardTracks"):
+        kwargs.setdefault("maxdImpactPPS", flags.InDet.Tracking.Pass.maxdImpactPPSSeeds)
+        kwargs.setdefault("maxdImpactSSS", flags.InDet.Tracking.Pass.maxdImpactSSSSeeds)
+        kwargs.setdefault("maxSeedsForSpacePointStrips", flags.InDet.Tracking.Pass.maxSeedsPerSP_Strips)
+        kwargs.setdefault("maxSeedsForSpacePointPixels", flags.InDet.Tracking.Pass.maxSeedsPerSP_Pixels)
+        kwargs.setdefault("alwaysKeepConfirmedStripSeeds", flags.InDet.Tracking.Pass.keepAllConfirmedStripSeeds)
+        kwargs.setdefault("alwaysKeepConfirmedPixelSeeds", flags.InDet.Tracking.Pass.keepAllConfirmedPixelSeeds)
+        kwargs.setdefault("mindRadius", 10)
+        kwargs.setdefault("maxSizeSP", 200)
+        kwargs.setdefault("dImpactCutSlopeUnconfirmedSSS", 1.25)
+        kwargs.setdefault("dImpactCutSlopeUnconfirmedPPP", 2.0)
 
-    if usePrdAssociationTool:
+    if flags.InDet.doHeavyIon:
+        kwargs.setdefault("maxdImpactPPS", flags.InDet.Tracking.Pass.maxdImpactPPSSeeds)
+        kwargs.setdefault("maxdImpactSSS", flags.InDet.Tracking.Pass.maxdImpactSSSSeeds)
+
+    if (len(InputCollections) > 0) and flags.InDet.Tracking.Pass.usePrdAssociationTool:
         # not all classes have that property !!!
-        kwargs.setdefault("PRDtoTrackMap", prefix+'PRDtoTrackMap'+ suffix \
-                                            if usePrdAssociationTool else '')
+        kwargs.setdefault("PRDtoTrackMap", 'InDetPRDtoTrackMap'+ flags.InDet.Tracking.Pass.extension)
+
     if not flags.Beam.Type == 'cosmics':
-        kwargs.setdefault("maxRadius1", 0.75*flags.InDet.Tracking.radMax)
-        kwargs.setdefault("maxRadius2", flags.InDet.Tracking.radMax)
-        kwargs.setdefault("maxRadius3", flags.InDet.Tracking.radMax)
-    if flags.InDet.Tracking.extension == "LowPt" or flags.InDet.Tracking.extension == "VeryLowPt" or (flags.InDet.Tracking.extension == "Pixel" and flags.InDet.doMinBias):
-        kwargs.setdefault("pTmax", flags.InDet.Tracking.maxPT)
+        kwargs.setdefault("maxRadius1", 0.75*flags.InDet.Tracking.Pass.radMax)
+        kwargs.setdefault("maxRadius2", flags.InDet.Tracking.Pass.radMax)
+        kwargs.setdefault("maxRadius3", flags.InDet.Tracking.Pass.radMax)
+
+    if flags.InDet.Tracking.Pass.isLowPt:
+        kwargs.setdefault("pTmax", flags.InDet.Tracking.Pass.maxPT)
         kwargs.setdefault("mindRadius", 4.0)
-    if flags.InDet.Tracking.extension == "ForwardTracks":
+
+    if flags.InDet.Tracking.Pass.extension == "R3LargeD0":
+        kwargs.setdefault("optimisePhiBinning", False)
+        kwargs.setdefault("usePixel", False)
+        kwargs.setdefault("etaMax", flags.InDet.Tracking.Pass.maxEta)
+        kwargs.setdefault("maxSeedsForSpacePointStrips", flags.InDet.Tracking.Pass.maxSeedsPerSP_Strips)
+        kwargs.setdefault("alwaysKeepConfirmedStripSeeds", flags.InDet.Tracking.Pass.keepAllConfirmedStripSeeds)
+        kwargs.setdefault("maxdRadius", 150)
+        kwargs.setdefault("seedScoreBonusConfirmationSeed", -2000)
+    elif flags.InDet.Tracking.Pass.extension == "ForwardTracks":
         kwargs.setdefault("checkEta", True)
-        kwargs.setdefault("etaMin", flags.InDet.Tracking.minEta)
-        kwargs.setdefault("etaMax", flags.InDet.Tracking.maxEta)
-        kwargs.setdefault("RapidityCut", flags.InDet.Tracking.maxEta)
-    if flags.InDet.Tracking.extension == "DBM":
-        kwargs.setdefault("etaMin", flags.InDet.Tracking.minEta)
-        kwargs.setdefault("etaMax", flags.InDet.Tracking.maxEta)
+        kwargs.setdefault("etaMin", flags.InDet.Tracking.Pass.minEta)
+        kwargs.setdefault("etaMax", flags.InDet.Tracking.Pass.maxEta)
+        kwargs.setdefault("RapidityCut", flags.InDet.Tracking.Pass.maxEta)
+    elif flags.InDet.Tracking.Pass.extension == "DBM":
+        kwargs.setdefault("etaMin", flags.InDet.Tracking.Pass.minEta)
+        kwargs.setdefault("etaMax", flags.InDet.Tracking.Pass.maxEta)
         kwargs.setdefault("useDBM", True)
 
-    InDetSiSpacePointsSeedMaker = SiSpacePointsSeedMaker (name = name+flags.InDet.Tracking.extension, **kwargs)
+    InDetSiSpacePointsSeedMaker = SiSpacePointsSeedMaker (name = name+flags.InDet.Tracking.Pass.extension, **kwargs)
 
     acc.setPrivateTools(InDetSiSpacePointsSeedMaker)
     return acc
@@ -107,8 +88,8 @@ def SiSpacePointsSeedMakerCfg(flags, name="InDetSpSeedsMaker", InputCollections
 def SiZvertexMaker_xkCfg(flags, name="InDetZvertexMaker", InputCollections = None, **kwargs) :
     acc = ComponentAccumulator()
 
-    kwargs.setdefault("Zmax", flags.InDet.Tracking.maxZImpact)
-    kwargs.setdefault("Zmin", -flags.InDet.Tracking.maxZImpact)
+    kwargs.setdefault("Zmax", flags.InDet.Tracking.Pass.maxZImpact)
+    kwargs.setdefault("Zmin", -flags.InDet.Tracking.Pass.maxZImpact)
     kwargs.setdefault("minRatio", 0.17)
 
     InDetSiSpacePointsSeedMaker = acc.popToolsAndMerge(SiSpacePointsSeedMakerCfg(flags,
@@ -119,7 +100,7 @@ def SiZvertexMaker_xkCfg(flags, name="InDetZvertexMaker", InputCollections = Non
         kwargs.setdefault("HistSize", 2000)
         kwargs.setdefault("minContent", 30)
 
-    InDetZvertexMaker = CompFactory.InDet.SiZvertexMaker_xk(name = name+flags.InDet.Tracking.extension, **kwargs)
+    InDetZvertexMaker = CompFactory.InDet.SiZvertexMaker_xk(name = name+flags.InDet.Tracking.Pass.extension, **kwargs)
     acc.setPrivateTools(InDetZvertexMaker)
     return acc
 
@@ -131,13 +112,13 @@ def SiDetElementsRoadMaker_xkCfg(flags, name="InDetSiRoadMaker", **kwargs) :
     InDetPatternPropagator = acc.getPrimaryAndMerge(TC.InDetPatternPropagatorCfg())
 
     kwargs.setdefault("PropagatorTool", InDetPatternPropagator)
-    kwargs.setdefault("usePixel", flags.InDet.Tracking.usePixel )
+    kwargs.setdefault("usePixel", flags.InDet.Tracking.Pass.usePixel )
     kwargs.setdefault("PixManagerLocation", 'Pixel')
-    kwargs.setdefault("useSCT", flags.InDet.Tracking.useSCT)
+    kwargs.setdefault("useSCT", flags.InDet.Tracking.Pass.useSCT)
     kwargs.setdefault("SCTManagerLocation", 'SCT')
-    kwargs.setdefault("RoadWidth", flags.InDet.Tracking.roadWidth)
+    kwargs.setdefault("RoadWidth", flags.InDet.Tracking.Pass.roadWidth)
 
-    InDetSiDetElementsRoadMaker = CompFactory.InDet.SiDetElementsRoadMaker_xk(name = name+flags.InDet.Tracking.extension, **kwargs)
+    InDetSiDetElementsRoadMaker = CompFactory.InDet.SiDetElementsRoadMaker_xk(name = name+flags.InDet.Tracking.Pass.extension, **kwargs)
     acc.setPrivateTools(InDetSiDetElementsRoadMaker)
     return acc
 
@@ -146,12 +127,14 @@ def SiCombinatorialTrackFinder_xkCfg(flags, name="InDetSiComTrackFinder", **kwar
     #
     # --- Local track finding using sdCaloSeededSSSpace point seed
     #
-    # @TODO ensure that PRD association map is used if usePrdAssociationTool is set
-    dbmMode = flags.InDet.doDBMstandalone or flags.InDet.Tracking.extension == 'DBM'
-    if dbmMode:
+    if flags.InDet.doDBMstandalone or flags.InDet.Tracking.Pass.extension == 'DBM':
         RotCreator = acc.popToolsAndMerge(TC.InDetRotCreatorDBMCfg(flags))
+        kwargs.setdefault("useSCT", False)
+        kwargs.setdefault("MagneticFieldMode", "NoField")
+        kwargs.setdefault("TrackQualityCut", 9.3)
     else:
         RotCreator = acc.popToolsAndMerge(TC.InDetRotCreatorDigitalCfg(flags))
+        kwargs.setdefault("useSCT", flags.Detector.EnableSCT)
 
     acc.addPublicTool(RotCreator)
     kwargs.setdefault("RIOonTrackTool", RotCreator)
@@ -164,16 +147,11 @@ def SiCombinatorialTrackFinder_xkCfg(flags, name="InDetSiComTrackFinder", **kwar
     
     kwargs.setdefault("usePixel", flags.Detector.EnablePixel)
     kwargs.setdefault("PixelClusterContainer", "PixelClusters")
-    kwargs.setdefault("useSCT", flags.Detector.EnableSCT if not dbmMode else False)
     kwargs.setdefault("SCT_ClusterContainer", "SCT_Clusters")
 
     if flags.InDet.Tracking.extension == "":
         kwargs.setdefault("writeHolesFromPattern", flags.InDet.useHolesFromPattern)
 
-    if dbmMode:
-        kwargs.setdefault("MagneticFieldMode", "NoField")
-        kwargs.setdefault("TrackQualityCut", 9.3)
-
     if flags.Detector.EnablePixel:
         from PixelConditionsTools.PixelConditionsSummaryConfig import PixelConditionsSummaryCfg
         kwargs.setdefault("PixelSummaryTool", acc.popToolsAndMerge(PixelConditionsSummaryCfg(flags)))
@@ -186,67 +164,55 @@ def SiCombinatorialTrackFinder_xkCfg(flags, name="InDetSiComTrackFinder", **kwar
     else:
         kwargs.setdefault("SctSummaryTool", "")
 
-    track_finder = CompFactory.InDet.SiCombinatorialTrackFinder_xk(name = name+flags.InDet.Tracking.extension, **kwargs)
+    track_finder = CompFactory.InDet.SiCombinatorialTrackFinder_xk(name = name+flags.InDet.Tracking.Pass.extension, **kwargs)
     acc.setPrivateTools(track_finder)
     return acc
 
 def SiTrackMaker_xkCfg(flags, name="InDetSiTrackMaker", InputCollections = None, **kwargs) :
     acc = ComponentAccumulator()
-    useBremMode = flags.InDet.Tracking.extension == "" or flags.InDet.Tracking.extension == "DBM"
-    InDetSiDetElementsRoadMaker = acc.popToolsAndMerge(SiDetElementsRoadMaker_xkCfg(flags))
 
-    if flags.InDet.Tracking.usePixel:
+    if flags.InDet.Tracking.Pass.usePixel:
         acc.addCondAlgo(CompFactory.InDet.SiDetElementBoundaryLinksCondAlg_xk(name="InDetSiDetElementBoundaryLinksPixelCondAlg",
                                                                               ReadKey="PixelDetectorElementCollection",
                                                                               WriteKey="PixelDetElementBoundaryLinks_xk"))
-    if flags.InDet.Tracking.useSCT:
+    if flags.InDet.Tracking.Pass.useSCT:
         acc.addCondAlgo(CompFactory.InDet.SiDetElementsRoadCondAlg_xk(name="InDet__SiDetElementsRoadCondAlg_xk"))
 
         acc.addCondAlgo(CompFactory.InDet.SiDetElementBoundaryLinksCondAlg_xk(name="InDetSiDetElementBoundaryLinksSCTCondAlg",
                                                                               ReadKey="SCT_DetectorElementCollection",
                                                                               WriteKey="SCT_DetElementBoundaryLinks_xk"))
 
-    track_finder = acc.popToolsAndMerge(SiCombinatorialTrackFinder_xkCfg(flags))
-
-    #
-    # --- decide if use the association tool
-    #
-    if (len(InputCollections) > 0) and (flags.InDet.Tracking.extension == "LowPt" or flags.InDet.Tracking.extension == "VeryLowPt" or flags.InDet.Tracking.extension == "LargeD0" or flags.InDet.Tracking.extension == "R3LargeD0" or flags.InDet.Tracking.extension == "LowPtLargeD0" or flags.InDet.Tracking.extension == "BeamGas" or flags.InDet.Tracking.extension == "ForwardTracks" or flags.InDet.Tracking.extension == "Disappearing"):
-        usePrdAssociationTool = True
-    else:
-        usePrdAssociationTool = False
-
-    kwargs.setdefault("useSCT", flags.InDet.Tracking.useSCT)  #flags.InDet.Tracking.useSCT()
-    kwargs.setdefault("usePixel", flags.InDet.Tracking.usePixel) #flags.InDet.Tracking.usePixel()
-    kwargs.setdefault("RoadTool", InDetSiDetElementsRoadMaker)
-    kwargs.setdefault("CombinatorialTrackFinder", track_finder)
-    kwargs.setdefault("pTmin", flags.InDet.Tracking.minPT)
-    kwargs.setdefault("pTminBrem", flags.InDet.Tracking.minPTBrem)
-    kwargs.setdefault("pTminSSS", flags.InDet.Tracking.pT_SSScut)
-    kwargs.setdefault("nClustersMin", flags.InDet.Tracking.minClusters)
-    kwargs.setdefault("nHolesMax", flags.InDet.Tracking.nHolesMax)
-    kwargs.setdefault("nHolesGapMax", flags.InDet.Tracking.nHolesGapMax)
-    kwargs.setdefault("SeedsFilterLevel", flags.InDet.Tracking.seedFilterLevel)
-    kwargs.setdefault("Xi2max", flags.InDet.Tracking.Xi2max)
-    kwargs.setdefault("Xi2maxNoAdd", flags.InDet.Tracking.Xi2maxNoAdd)
-    kwargs.setdefault("nWeightedClustersMin", flags.InDet.Tracking.nWeightedClustersMin)
+    kwargs.setdefault("useSCT", flags.InDet.Tracking.Pass.useSCT)
+    kwargs.setdefault("usePixel", flags.InDet.Tracking.Pass.usePixel)
+    kwargs.setdefault("RoadTool", acc.popToolsAndMerge(SiDetElementsRoadMaker_xkCfg(flags)))
+    kwargs.setdefault("CombinatorialTrackFinder", acc.popToolsAndMerge(SiCombinatorialTrackFinder_xkCfg(flags)))
+    kwargs.setdefault("pTmin", flags.InDet.Tracking.Pass.minPT)
+    kwargs.setdefault("pTminBrem", flags.InDet.Tracking.Pass.minPTBrem)
+    kwargs.setdefault("pTminSSS", flags.InDet.Tracking.Pass.pT_SSScut)
+    kwargs.setdefault("nClustersMin", flags.InDet.Tracking.Pass.minClusters)
+    kwargs.setdefault("nHolesMax", flags.InDet.Tracking.Pass.nHolesMax)
+    kwargs.setdefault("nHolesGapMax", flags.InDet.Tracking.Pass.nHolesGapMax)
+    kwargs.setdefault("SeedsFilterLevel", flags.InDet.Tracking.Pass.seedFilterLevel)
+    kwargs.setdefault("Xi2max", flags.InDet.Tracking.Pass.Xi2max)
+    kwargs.setdefault("Xi2maxNoAdd", flags.InDet.Tracking.Pass.Xi2maxNoAdd)
+    kwargs.setdefault("nWeightedClustersMin", flags.InDet.Tracking.Pass.nWeightedClustersMin)
     kwargs.setdefault("CosmicTrack", flags.Beam.Type == 'cosmics')
-    kwargs.setdefault("Xi2maxMultiTracks", flags.InDet.Tracking.Xi2max)
+    kwargs.setdefault("Xi2maxMultiTracks", flags.InDet.Tracking.Pass.Xi2max)
     kwargs.setdefault("useSSSseedsFilter", flags.InDet.doSSSfilter)
     kwargs.setdefault("doMultiTracksProd", True)
-    kwargs.setdefault("useBremModel", flags.InDet.doBremRecovery and useBremMode and flags.Detector.EnableCalo) # only for NewTracking the brem is debugged !!!
+    kwargs.setdefault("useBremModel", flags.InDet.doBremRecovery and flags.InDet.Tracking.Pass.extension == "" and flags.Detector.EnableCalo)
     kwargs.setdefault("doCaloSeededBrem", flags.InDet.doCaloSeededBrem and flags.Detector.EnableCalo)
     if kwargs["useBremModel"] and kwargs["doCaloSeededBrem"]:
         from InDetConfig.InDetRecCaloSeededROISelectionConfig import CaloClusterROI_SelectorCfg
         acc.merge(CaloClusterROI_SelectorCfg(flags))
     kwargs.setdefault("doHadCaloSeedSSS", flags.InDet.doHadCaloSeededSSS and flags.Detector.EnableCalo)
-    kwargs.setdefault("phiWidth", flags.InDet.Tracking.phiWidthBrem)
-    kwargs.setdefault("etaWidth", flags.InDet.Tracking.etaWidthBrem)
+    kwargs.setdefault("phiWidth", flags.InDet.Tracking.Pass.phiWidthBrem)
+    kwargs.setdefault("etaWidth", flags.InDet.Tracking.Pass.etaWidthBrem)
     kwargs.setdefault("InputClusterContainerName", 'InDetCaloClusterROIs') # InDetKeys.CaloClusterROIContainer()
     kwargs.setdefault("InputHadClusterContainerName", 'InDetHadCaloClusterROIs') # InDetKeys.HadCaloClusterROIContainer()
-    kwargs.setdefault("UseAssociationTool", usePrdAssociationTool)
+    kwargs.setdefault("UseAssociationTool", (len(InputCollections) > 0) and (flags.InDet.Tracking.Pass.usePrdAssociationTool))
 
-    if flags.InDet.Tracking.extension == "DBM":
+    if flags.InDet.Tracking.Pass.extension == "DBM":
         kwargs.setdefault("MagneticFieldMode", "NoField")
         kwargs.setdefault("useBremModel", False)
         kwargs.setdefault("doMultiTracksProd", False)
@@ -262,20 +228,20 @@ def SiTrackMaker_xkCfg(flags, name="InDetSiTrackMaker", InputCollections = None,
 
     elif flags.InDet.doHeavyIon:
         kwargs.setdefault("TrackPatternRecoInfo", 'SiSpacePointsSeedMaker_HeavyIon')
-
-    elif flags.InDet.Tracking.extension == "LowPt":
+    
+    elif flags.InDet.Tracking.Pass.extension == "LowPt":
         kwargs.setdefault("TrackPatternRecoInfo", 'SiSpacePointsSeedMaker_LowMomentum')
 
-    elif flags.InDet.Tracking.extension == "VeryLowPt" or (flags.InDet.Tracking.extension == "Pixel" and flags.InDet.doMinBias):
+    elif flags.InDet.Tracking.Pass.extension == "VeryLowPt" or (flags.InDet.Tracking.Pass.extension == "Pixel" and flags.InDet.doMinBias):
         kwargs.setdefault("TrackPatternRecoInfo", 'SiSpacePointsSeedMaker_VeryLowMomentum')
 
-    elif flags.InDet.Tracking.extension == "BeamGas":
+    elif flags.InDet.Tracking.Pass.extension == "BeamGas":
         kwargs.setdefault("TrackPatternRecoInfo", 'SiSpacePointsSeedMaker_BeamGas')
 
-    elif flags.InDet.Tracking.extension == "ForwardTracks":
+    elif flags.InDet.Tracking.Pass.extension == "ForwardTracks":
         kwargs.setdefault("TrackPatternRecoInfo", 'SiSpacePointsSeedMaker_ForwardTracks')
 
-    elif flags.InDet.Tracking.extension == "LargeD0" or flags.InDet.Tracking.extension == "R3LargeD0" or flags.InDet.Tracking.extension == "LowPtLargeD0":
+    elif flags.InDet.Tracking.Pass.extension == "LargeD0" or flags.InDet.Tracking.Pass.extension == "R3LargeD0" or flags.InDet.Tracking.Pass.extension == "LowPtLargeD0":
         kwargs.setdefault("TrackPatternRecoInfo", 'SiSpacePointsSeedMaker_LargeD0')
 
     else:
@@ -286,79 +252,52 @@ def SiTrackMaker_xkCfg(flags, name="InDetSiTrackMaker", InputCollections = None,
         kwargs.setdefault("SeedToTrackConversion", CompFactory.InDet.SeedToTrackConversionTool(
             name="InDet_SeedToTrackConversion",
             Extrapolator=acc.getPrimaryAndMerge(InDetExtrapolatorCfg(flags)),
-            OutputName=f"SiSPSeedSegments{flags.InDet.Tracking.extension}",
+            OutputName=f"SiSPSeedSegments{flags.InDet.Tracking.Pass.extension}",
         ))
         kwargs.setdefault("SeedSegmentsWrite", True)
 
-    InDetSiTrackMaker = CompFactory.InDet.SiTrackMaker_xk(name = name+flags.InDet.Tracking.extension, **kwargs)
+    InDetSiTrackMaker = CompFactory.InDet.SiTrackMaker_xk(name = name+flags.InDet.Tracking.Pass.extension, **kwargs)
     acc.setPrivateTools(InDetSiTrackMaker)
     return acc
 
 def SiSPSeededTrackFinderCfg(flags, name="InDetSiSpTrackFinder", InputCollections = None, SiSPSeededTrackCollectionKey = None, **kwargs) :
     acc = ComponentAccumulator()
 
-    # set output track collection name
-    #
-    SiTrackCollection = SiSPSeededTrackCollectionKey
-    #
-    # --- decide if use the association tool
-    #
-    if (len(InputCollections) > 0) and (flags.InDet.Tracking.extension == "LowPt" or flags.InDet.Tracking.extension == "VeryLowPt" or flags.InDet.Tracking.extension == "LargeD0" or flags.InDet.Tracking.extension == "R3LargeD0" or flags.InDet.Tracking.extension == "LowPtLargeD0" or flags.InDet.Tracking.extension == "BeamGas" or flags.InDet.Tracking.extension == "ForwardTracks" or flags.InDet.Tracking.extension == "Disappearing"):
-        usePrdAssociationTool = True
-    else:
-        usePrdAssociationTool = False
-    #
-    # --- get list of already associated hits (always do this, even if no other tracking ran before)
-    #
-    if usePrdAssociationTool:
-        prefix = 'InDet'
-        suffix = flags.InDet.Tracking.extension
-
-    InDetSiTrackMaker = acc.popToolsAndMerge(SiTrackMaker_xkCfg(flags,
-                                                                InputCollections = InputCollections ))
-
-    InDetTrackSummaryToolNoHoleSearch = acc.getPrimaryAndMerge(TC.InDetTrackSummaryToolNoHoleSearchCfg(flags))
-
-    InDetSiSpacePointsSeedMaker = acc.popToolsAndMerge(SiSpacePointsSeedMakerCfg(flags,
-                                                                                 InputCollections = InputCollections ))
-
-    #
-    # --- Z-coordinates primary vertices finder (only for collisions)
-    #
-    if flags.InDet.useZvertexTool and flags.InDet.Tracking.extension != "DBM":
-        InDetZvertexMaker = acc.popToolsAndMerge(SiZvertexMaker_xkCfg(flags,
-                                                 InputCollections = InputCollections))
-    else:
-        InDetZvertexMaker = None
-
     #
     # --- Setup Track finder using space points seeds
     #
-    kwargs.setdefault("TrackTool", InDetSiTrackMaker)
-    kwargs.setdefault("PRDtoTrackMap", prefix+'PRDtoTrackMap'+suffix \
-                                            if usePrdAssociationTool else '')
-    kwargs.setdefault("TrackSummaryTool", InDetTrackSummaryToolNoHoleSearch)
-    kwargs.setdefault("TracksLocation", SiTrackCollection)
-    kwargs.setdefault("SeedsTool", InDetSiSpacePointsSeedMaker)
-    kwargs.setdefault("ZvertexTool", InDetZvertexMaker)
+    kwargs.setdefault("TrackTool", acc.popToolsAndMerge(SiTrackMaker_xkCfg(flags, InputCollections = InputCollections)))
+    kwargs.setdefault("TrackSummaryTool", acc.getPrimaryAndMerge(TC.InDetTrackSummaryToolNoHoleSearchCfg(flags)))
+    kwargs.setdefault("TracksLocation", SiSPSeededTrackCollectionKey)
+    kwargs.setdefault("SeedsTool", acc.popToolsAndMerge(SiSpacePointsSeedMakerCfg(flags, InputCollections = InputCollections)))
     kwargs.setdefault("useMBTSTimeDiff", flags.InDet.useMBTSTimeDiff)
 
-    if flags.InDet.Tracking.extension == "ForwardTracks":
-        kwargs.setdefault("useZvertexTool", flags.InDet.useZvertexTool)
+    if (len(InputCollections) > 0) and flags.InDet.Tracking.Pass.usePrdAssociationTool:
+        # not all classes have that property !!!
+        kwargs.setdefault("PRDtoTrackMap", 'InDetPRDtoTrackMap'+ flags.InDet.Tracking.Pass.extension)
+
+    if flags.InDet.Tracking.Pass.extension == "ForwardTracks" or flags.InDet.Tracking.Pass.extension == "DBM":
+        kwargs.setdefault("useZvertexTool", flags.InDet.useZvertexTool and flags.InDet.Tracking.Pass.extension == "ForwardTracks")
         kwargs.setdefault("useNewStrategy", False)
         kwargs.setdefault("useZBoundFinding", False)
     else:
-        kwargs.setdefault("useZvertexTool", flags.InDet.useZvertexTool and flags.InDet.Tracking.extension != "DBM")
-        kwargs.setdefault("useNewStrategy", flags.InDet.useNewSiSPSeededTF and flags.InDet.Tracking.extension != "DBM")
-        kwargs.setdefault("useZBoundFinding", flags.InDet.Tracking.doZBoundary and flags.InDet.Tracking.extension != "DBM")
+        kwargs.setdefault("useZvertexTool", flags.InDet.useZvertexTool)
+        kwargs.setdefault("useNewStrategy", flags.InDet.useNewSiSPSeededTF)
+        kwargs.setdefault("useZBoundFinding", flags.InDet.Tracking.Pass.doZBoundary)
+    
+    #
+    # --- Z-coordinates primary vertices finder (only for collisions)
+    #
+    if kwargs["useZvertexTool"]:
+        kwargs.setdefault("ZvertexTool", acc.popToolsAndMerge(SiZvertexMaker_xkCfg(flags, InputCollections = InputCollections)))
 
     if flags.InDet.doHeavyIon :
         kwargs.setdefault("FreeClustersCut",2) #Heavy Ion optimization from Igor
 
-    if flags.InDet.Tracking.extension == "":
+    if flags.InDet.Tracking.Pass.extension == "":
         kwargs.setdefault("writeHolesFromPattern", flags.InDet.useHolesFromPattern)
 
-    InDetSiSPSeededTrackFinder = CompFactory.InDet.SiSPSeededTrackFinder(name = name+flags.InDet.Tracking.extension, **kwargs)
+    InDetSiSPSeededTrackFinder = CompFactory.InDet.SiSPSeededTrackFinder(name = name+flags.InDet.Tracking.Pass.extension, **kwargs)
     acc.addEventAlgo(InDetSiSPSeededTrackFinder)
     return acc
 
@@ -374,11 +313,16 @@ def InDetAmbiTrackSelectionToolCfg(flags, name="InDetAmbiTrackSelectionTool", **
     #
     # --- load InnerDetector TrackSelectionTool
     #
-    prob1 = flags.InDet.pixelClusterSplitProb1
-    prob2 = flags.InDet.pixelClusterSplitProb2
-    nhitsToAllowSplitting = 8 if flags.GeoModel.Run == 'RUN1' else 9
+    if flags.GeoModel.Run == "Run1":
+        prob1 = flags.InDet.pixelClusterSplitProb1_run1
+        prob2 = flags.InDet.pixelClusterSplitProb2_run1
+        nhitsToAllowSplitting = 8
+    else:
+        prob1 = flags.InDet.pixelClusterSplitProb1
+        prob2 = flags.InDet.pixelClusterSplitProb2
+        nhitsToAllowSplitting = 9
 
-    if flags.InDet.doTIDE_Ambi and not (flags.InDet.Tracking.extension == "ForwardTracks" or flags.InDet.Tracking.extension == "DBM"):
+    if flags.InDet.doTIDE_Ambi and flags.InDet.Tracking.Pass.useTIDE_Ambi:
         AmbiTrackSelectionTool = CompFactory.InDet.InDetDenseEnvAmbiTrackSelectionTool
     else:
         AmbiTrackSelectionTool = CompFactory.InDet.InDetAmbiTrackSelectionTool
@@ -390,15 +334,15 @@ def InDetAmbiTrackSelectionToolCfg(flags, name="InDetAmbiTrackSelectionTool", **
     InDetPRDtoTrackMapToolGangedPixels = acc.popToolsAndMerge(TC.InDetPRDtoTrackMapToolGangedPixelsCfg(flags))
 
     kwargs.setdefault("AssociationTool" , InDetPRDtoTrackMapToolGangedPixels)
-    kwargs.setdefault("minHits"         , flags.InDet.Tracking.minClusters)
-    kwargs.setdefault("minNotShared"    , flags.InDet.Tracking.minSiNotShared)
-    kwargs.setdefault("maxShared"       , flags.InDet.Tracking.maxShared)
+    kwargs.setdefault("minHits"         , flags.InDet.Tracking.Pass.minClusters)
+    kwargs.setdefault("minNotShared"    , flags.InDet.Tracking.Pass.minSiNotShared)
+    kwargs.setdefault("maxShared"       , flags.InDet.Tracking.Pass.maxShared)
     kwargs.setdefault("minTRTHits"      , 0) # used for Si only tracking !!!
     kwargs.setdefault("UseParameterization" , False)
-    kwargs.setdefault("Cosmics"             , flags.Beam.Type == 'cosmics' and flags.InDet.Tracking.extension != "DBM")
-    kwargs.setdefault("doPixelSplitting"    , flags.InDet.doPixelClusterSplitting and flags.InDet.Tracking.extension != "DBM")
+    kwargs.setdefault("Cosmics"             , flags.Beam.Type == 'cosmics' and flags.InDet.Tracking.Pass.extension != "DBM")
+    kwargs.setdefault("doPixelSplitting"    , flags.InDet.doPixelClusterSplitting and flags.InDet.Tracking.Pass.extension != "DBM")
 
-    if flags.InDet.doTIDE_Ambi and not (flags.InDet.Tracking.extension == "ForwardTracks" or flags.InDet.Tracking.extension == "DBM"):
+    if flags.InDet.doTIDE_Ambi and flags.InDet.Tracking.Pass.useTIDE_Ambi:
         kwargs.setdefault("sharedProbCut"             , prob1)
         kwargs.setdefault("sharedProbCut2"            , prob2)
         kwargs.setdefault("minSiHitsToAllowSplitting" , nhitsToAllowSplitting)
@@ -425,7 +369,7 @@ def InDetAmbiTrackSelectionToolCfg(flags, name="InDetAmbiTrackSelectionTool", **
         kwargs.setdefault("phiWidthEM"                , 0.05)     #Split cluster ROI size
         kwargs.setdefault("etaWidthEM"                , 0.05)     #Split cluster ROI size
 
-    elif flags.InDet.Tracking.extension == "DBM":
+    elif flags.InDet.Tracking.Pass.extension == "DBM":
         kwargs.setdefault("maxShared"             , 1000)
         kwargs.setdefault("maxTracksPerSharedPRD" , 2)
         kwargs.setdefault("minHits"               , 0)
@@ -436,17 +380,17 @@ def InDetAmbiTrackSelectionToolCfg(flags, name="InDetAmbiTrackSelectionTool", **
     else:
         kwargs.setdefault("sharedProbCut", 0.10)
 
-    InDetAmbiTrackSelectionTool = AmbiTrackSelectionTool(name = name+flags.InDet.Tracking.extension, **kwargs)
+    InDetAmbiTrackSelectionTool = AmbiTrackSelectionTool(name = name+flags.InDet.Tracking.Pass.extension, **kwargs)
     acc.setPrivateTools(InDetAmbiTrackSelectionTool)
     return acc
 
 
 def DenseEnvironmentsAmbiguityScoreProcessorToolCfg(flags, name="InDetAmbiguityScoreProcessor", ClusterSplitProbContainer="", **kwargs):
     acc = ComponentAccumulator()
-    # set up different Scoring Tool for collisions and cosmics
-    if flags.Beam.Type == "cosmics" and flags.InDet.Tracking.extension != "DBM":
+    # --- set up different Scoring Tool for collisions and cosmics
+    if flags.Beam.Type == "cosmics" and flags.InDet.Tracking.Pass.extension != "DBM":
         InDetAmbiScoringTool = acc.popToolsAndMerge(TC.InDetCosmicsScoringToolCfg(flags))
-    elif flags.InDet.Tracking.extension == "R3LargeD0" and flags.InDet.nnCutLargeD0Threshold > 0:
+    elif flags.InDet.Tracking.Pass.extension == "R3LargeD0" and flags.InDet.nnCutLargeD0Threshold > 0:
         # Set up NN config
         InDetAmbiScoringTool = acc.popToolsAndMerge(TC.InDetNNScoringToolSiCfg(flags))
     else:
@@ -458,34 +402,39 @@ def DenseEnvironmentsAmbiguityScoreProcessorToolCfg(flags, name="InDetAmbiguityS
 
     kwargs.setdefault("AssociationTool", acc.popToolsAndMerge(TC.InDetPRDtoTrackMapToolGangedPixelsCfg(flags)))
     kwargs.setdefault("AssociationToolNotGanged", acc.popToolsAndMerge(TC.PRDtoTrackMapToolCfg()))
-    kwargs.setdefault("AssociationMapName", f"PRDToTrackMap{flags.InDet.Tracking.extension}")
+    kwargs.setdefault("AssociationMapName", f"PRDToTrackMap{flags.InDet.Tracking.Pass.extension}")
 
-    if flags.InDet.doTIDE_Ambi and not (flags.InDet.Tracking.extension == "ForwardTracks" or flags.InDet.Tracking.extension == "DBM"):
-        kwargs.setdefault("sharedProbCut", flags.InDet.pixelClusterSplitProb1)
-        kwargs.setdefault("sharedProbCut2", flags.InDet.pixelClusterSplitProb2)
-        if flags.InDet.Tracking.extension == "":
+    if flags.GeoModel.Run == "Run1":
+        prob1 = flags.InDet.pixelClusterSplitProb1_run1
+        prob2 = flags.InDet.pixelClusterSplitProb2_run1
+    else:
+        prob1 = flags.InDet.pixelClusterSplitProb1
+        prob2 = flags.InDet.pixelClusterSplitProb2
+
+    if flags.InDet.doTIDE_Ambi and flags.InDet.Tracking.Pass.useTIDE_Ambi:
+        kwargs.setdefault("sharedProbCut", prob1)
+        kwargs.setdefault("sharedProbCut2", prob2)
+        if flags.InDet.Tracking.Pass.extension == "":
             kwargs.setdefault("SplitClusterMap_old", "")
-        elif flags.InDet.Tracking.extension == "Disappearing":
+        elif flags.InDet.Tracking.Pass.extension == "Disappearing":
             kwargs.setdefault("SplitClusterMap_old", "SplitClusterAmbiguityMap")
-        kwargs.setdefault("SplitClusterMap_new", f"SplitClusterAmbiguityMap{flags.InDet.Tracking.extension}")
+        kwargs.setdefault("SplitClusterMap_new", f"SplitClusterAmbiguityMap{flags.InDet.Tracking.Pass.extension}")
 
     kwargs.setdefault("InputClusterSplitProbabilityName", ClusterSplitProbContainer)
     kwargs.setdefault("OutputClusterSplitProbabilityName", f"SplitProb{flags.InDet.Tracking.extension}")
 
     ScoreProcessorTool = CompFactory.Trk.DenseEnvironmentsAmbiguityScoreProcessorTool
-    acc.setPrivateTools(ScoreProcessorTool(f"{name}{flags.InDet.Tracking.extension}", **kwargs))
+    acc.setPrivateTools(ScoreProcessorTool(f"{name}{flags.InDet.Tracking.Pass.extension}", **kwargs))
     return acc
 
 
 def DenseEnvironmentsAmbiguityProcessorToolCfg(flags, name="InDetAmbiguityProcessor", ClusterSplitProbContainer="", **kwargs):
     acc = ComponentAccumulator()
-
-    useBremMode = flags.InDet.Tracking.extension == "" or flags.InDet.Tracking.extension == "DBM"
-
-    # set up different Scoring Tool for collisions and cosmics
-    if flags.Beam.Type == "cosmics" and flags.InDet.Tracking.extension != "DBM":
+    
+    # --- set up different Scoring Tool for collisions and cosmics
+    if flags.Beam.Type == "cosmics" and flags.InDet.Tracking.Pass.extension != "DBM":
         InDetAmbiScoringTool = acc.popToolsAndMerge(TC.InDetCosmicsScoringToolCfg(flags))
-    elif flags.InDet.Tracking.extension == "R3LargeD0" and flags.InDet.nnCutLargeD0Threshold > 0:
+    elif flags.InDet.Tracking.Pass.extension == "R3LargeD0" and flags.InDet.nnCutLargeD0Threshold > 0 :
         # Set up NN config
         InDetAmbiScoringTool = acc.popToolsAndMerge(TC.InDetNNScoringToolSiCfg(flags))
     else:
@@ -493,9 +442,9 @@ def DenseEnvironmentsAmbiguityProcessorToolCfg(flags, name="InDetAmbiguityProces
     kwargs.setdefault("ScoringTool", InDetAmbiScoringTool)
 
     fitter_args = {}
-    fitter_args.setdefault("nameSuffix", 'Ambi'+flags.InDet.Tracking.extension)
-    fitter_args.setdefault("SplitClusterMapExtension", flags.InDet.Tracking.extension)
-    fitter_args.setdefault("ClusterSplitProbabilityName", 'InDetAmbiguityProcessorSplitProb'+flags.InDet.Tracking.extension)
+    fitter_args.setdefault("nameSuffix", 'Ambi'+flags.InDet.Tracking.Pass.extension)
+    fitter_args.setdefault("SplitClusterMapExtension", flags.InDet.Tracking.Pass.extension)
+    fitter_args.setdefault("ClusterSplitProbabilityName", 'InDetAmbiguityProcessorSplitProb'+flags.InDet.Tracking.Pass.extension)
 
     if True: #flags.InDet.holeSearchInGX2Fit:
         fitter_args.setdefault("DoHoleSearch", True)
@@ -504,22 +453,22 @@ def DenseEnvironmentsAmbiguityProcessorToolCfg(flags, name="InDetAmbiguityProces
         fitter_args.setdefault("BoundaryCheckTool", InDetBoundaryCheckTool)
 
     fitter_list=[]
-    if flags.InDet.Tracking.extension == "LowPt" or flags.InDet.Tracking.extension == "VeryLowPt" or (flags.InDet.Tracking.extension == "Pixel" and flags.InDet.doMinBias):
-        InDetTrackFitterLowPt = acc.popToolsAndMerge(TC.InDetTrackFitterLowPt(flags, name='InDetTrackFitterLowPt'+flags.InDet.Tracking.extension, **fitter_args))
+
+    if flags.InDet.Tracking.Pass.isLowPt:
+        InDetTrackFitterLowPt = acc.popToolsAndMerge(TC.InDetTrackFitterLowPt(flags, name='InDetTrackFitterLowPt'+flags.InDet.Tracking.Pass.extension, **fitter_args))
         fitter_list.append(InDetTrackFitterLowPt)
     else:
-        InDetTrackFitterAmbi = acc.popToolsAndMerge(TC.InDetTrackFitterCfg(flags, name='InDetTrackFitter'+'Ambi'+flags.InDet.Tracking.extension, **fitter_args))
+        InDetTrackFitterAmbi = acc.popToolsAndMerge(TC.InDetTrackFitterCfg(flags, name='InDetTrackFitterAmbi'+flags.InDet.Tracking.Pass.extension, **fitter_args))
         fitter_list.append(InDetTrackFitterAmbi)
 
-
-    if flags.InDet.doRefitInvalidCov:
-        if len(flags.InDet.Tracking.extension) > 0 :
+    if flags.InDet.doRefitInvalidCov: 
+        if not flags.InDet.Tracking.Pass.extension=="":
             fitter_args = {}
-            fitter_args.setdefault("SplitClusterMapExtension", flags.InDet.Tracking.extension)
-            KalmanFitter = acc.popToolsAndMerge(TC.KalmanFitterCfg(flags, name='KalmanFitter'+flags.InDet.Tracking.extension, **fitter_args))
+            fitter_args.setdefault("SplitClusterMapExtension", flags.InDet.Tracking.Pass.extension)
+            KalmanFitter = acc.popToolsAndMerge(TC.KalmanFitterCfg(flags, name='KalmanFitter'+flags.InDet.Tracking.Pass.extension, **fitter_args))
             fitter_list.append(KalmanFitter)
 
-            ReferenceKalmanFitter = acc.popToolsAndMerge(TC.ReferenceKalmanFitterCfg(flags, name='ReferenceKalmanFitter'+flags.InDet.Tracking.extension, **fitter_args))
+            ReferenceKalmanFitter = acc.popToolsAndMerge(TC.ReferenceKalmanFitterCfg(flags, name='ReferenceKalmanFitter'+flags.InDet.Tracking.Pass.extension, **fitter_args))
             fitter_list.append(ReferenceKalmanFitter)
         else:
             KalmanFitter = acc.popToolsAndMerge(TC.KalmanFitterCfg(flags))
@@ -532,54 +481,54 @@ def DenseEnvironmentsAmbiguityProcessorToolCfg(flags, name="InDetAmbiguityProces
 
     ambi_track_summary_tool = acc.getPrimaryAndMerge(TC.InDetTrackSummaryToolCfg( flags,
                                                                                   namePrefix                  = 'InDetAmbiguityProcessorSplitProb',
-                                                                                  nameSuffix                  = flags.InDet.Tracking.extension,
-                                                                                  ClusterSplitProbabilityName = 'InDetAmbiguityProcessorSplitProb'+flags.InDet.Tracking.extension))
+                                                                                  nameSuffix                  = flags.InDet.Tracking.Pass.extension,
+                                                                                  ClusterSplitProbabilityName = 'InDetAmbiguityProcessorSplitProb'+flags.InDet.Tracking.Pass.extension))
 
     InDetAmbiTrackSelectionTool = acc.popToolsAndMerge(InDetAmbiTrackSelectionToolCfg(flags))
 
     kwargs.setdefault("Fitter", fitter_list)
     kwargs.setdefault("AssociationTool", InDetPRDtoTrackMapToolGangedPixels)
-    kwargs.setdefault("AssociationMapName", 'PRDToTrackMap'+flags.InDet.Tracking.extension)
+    kwargs.setdefault("AssociationMapName", 'PRDToTrackMap'+flags.InDet.Tracking.Pass.extension)
     kwargs.setdefault("TrackSummaryTool", ambi_track_summary_tool)
     kwargs.setdefault("SelectionTool", InDetAmbiTrackSelectionTool)
-    kwargs.setdefault("InputClusterSplitProbabilityName", 'SplitProb'+flags.InDet.Tracking.extension)
-    kwargs.setdefault("OutputClusterSplitProbabilityName", 'InDetAmbiguityProcessorSplitProb'+flags.InDet.Tracking.extension)
+    kwargs.setdefault("InputClusterSplitProbabilityName", 'SplitProb'+flags.InDet.Tracking.Pass.extension)
+    kwargs.setdefault("OutputClusterSplitProbabilityName", 'InDetAmbiguityProcessorSplitProb'+flags.InDet.Tracking.Pass.extension)
     kwargs.setdefault("SuppressHoleSearch", False)
-    kwargs.setdefault("tryBremFit", flags.InDet.doBremRecovery and useBremMode and flags.InDet.Tracking.extension != "DBM")
-    kwargs.setdefault("caloSeededBrem", flags.InDet.doCaloSeededBrem and flags.InDet.Tracking.extension != "DBM")
-    kwargs.setdefault("pTminBrem", flags.InDet.Tracking.minPTBrem)
+    kwargs.setdefault("tryBremFit", flags.InDet.doBremRecovery and flags.InDet.Tracking.Pass.extension == "")
+    kwargs.setdefault("caloSeededBrem", flags.InDet.doCaloSeededBrem and flags.InDet.Tracking.Pass.extension != "DBM")
+    kwargs.setdefault("pTminBrem", flags.InDet.Tracking.Pass.minPTBrem)
     kwargs.setdefault("RefitPrds", True)
     kwargs.setdefault("KeepHolesFromBeforeRefit", flags.InDet.useHolesFromPattern)
 
-    # DenseEnvironmentsAmbiguityProcessorTool
-    ProcessorTool = CompFactory.Trk.DenseEnvironmentsAmbiguityProcessorTool
-    InDetAmbiguityProcessor = ProcessorTool(name=name+flags.InDet.Tracking.extension, **kwargs)
+    InDetAmbiguityProcessor = CompFactory.Trk.DenseEnvironmentsAmbiguityProcessorTool(name=name+flags.InDet.Tracking.Pass.extension, **kwargs)
     acc.setPrivateTools(InDetAmbiguityProcessor)
     return acc
 
 def SimpleAmbiguityProcessorToolCfg(flags, name = "InDetAmbiguityProcessor", ClusterSplitProbContainer='', **kwargs) :
     acc = ComponentAccumulator()
-    useBremMode = flags.InDet.Tracking.extension == "" or flags.InDet.Tracking.extension == "DBM"
 
     #
     # --- set up different Scoring Tool for collisions and cosmics
     #
-    if flags.Beam.Type == 'cosmics' and flags.InDet.Tracking.extension != "DBM":
+    if flags.Beam.Type == 'cosmics' and flags.InDet.Tracking.Pass.extension != "DBM":
         InDetAmbiScoringTool = acc.popToolsAndMerge(TC.InDetCosmicsScoringToolCfg(flags))
-    elif(flags.InDet.Tracking.extension == "R3LargeD0" and flags.InDet.nnCutLargeD0Threshold > 0):
+    elif(flags.InDet.Tracking.Pass.extension == "R3LargeD0" and flags.InDet.nnCutLargeD0Threshold > 0):
         # Set up NN config
         InDetAmbiScoringTool = acc.popToolsAndMerge(TC.InDetNNScoringToolSiCfg(flags))
     else:
         InDetAmbiScoringTool = acc.popToolsAndMerge(TC.InDetAmbiScoringToolSiCfg(flags))
 
-    InDetTrackFitter = acc.popToolsAndMerge(TC.InDetTrackFitterCfg(flags))
+    if flags.InDet.Tracking.Pass.isLowPt:
+        InDetTrackFitter = acc.popToolsAndMerge(TC.InDetTrackFitterLowPt(flags))
+    else:
+        InDetTrackFitter = acc.popToolsAndMerge(TC.InDetTrackFitterCfg(flags))
 
     InDetPRDtoTrackMapToolGangedPixels = acc.popToolsAndMerge(TC.InDetPRDtoTrackMapToolGangedPixelsCfg(flags))
 
     ambi_track_summary_tool = acc.getPrimaryAndMerge(TC.InDetTrackSummaryToolCfg( flags,
                                                                                 namePrefix                  = 'InDetAmbiguityProcessorSplitProb',
-                                                                                nameSuffix                  = flags.InDet.Tracking.extension,
-                                                                                ClusterSplitProbabilityName = 'InDetAmbiguityProcessorSplitProb'+flags.InDet.Tracking.extension))
+                                                                                nameSuffix                  = flags.InDet.Tracking.Pass.extension,
+                                                                                ClusterSplitProbabilityName = 'InDetAmbiguityProcessorSplitProb'+flags.InDet.Tracking.Pass.extension))
 
     InDetAmbiTrackSelectionTool = acc.popToolsAndMerge(InDetAmbiTrackSelectionToolCfg(flags))
 
@@ -589,31 +538,18 @@ def SimpleAmbiguityProcessorToolCfg(flags, name = "InDetAmbiguityProcessor", Clu
     kwargs.setdefault("ScoringTool", InDetAmbiScoringTool)
     kwargs.setdefault("SelectionTool", InDetAmbiTrackSelectionTool)
     kwargs.setdefault("InputClusterSplitProbabilityName", ClusterSplitProbContainer)
-    kwargs.setdefault("OutputClusterSplitProbabilityName", 'InDetAmbiguityProcessorSplitProb'+flags.InDet.Tracking.extension)
+    kwargs.setdefault("OutputClusterSplitProbabilityName", 'InDetAmbiguityProcessorSplitProb'+flags.InDet.Tracking.Pass.extension)
     kwargs.setdefault("SuppressHoleSearch", False)
-    kwargs.setdefault("tryBremFit", flags.InDet.doBremRecovery and useBremMode and flags.InDet.Tracking.extension != "DBM")
-    kwargs.setdefault("caloSeededBrem", flags.InDet.doCaloSeededBrem and flags.InDet.Tracking.extension != "DBM")
-    kwargs.setdefault("pTminBrem", flags.InDet.Tracking.minPTBrem)
+    kwargs.setdefault("tryBremFit", flags.InDet.doBremRecovery and flags.InDet.Tracking.Pass.extension == "")
+    kwargs.setdefault("caloSeededBrem", flags.InDet.doCaloSeededBrem and flags.InDet.Tracking.Pass.extension != "DBM")
+    kwargs.setdefault("pTminBrem", flags.InDet.Tracking.Pass.minPTBrem)
     kwargs.setdefault("RefitPrds", True)
+    kwargs.setdefault("MatEffects", flags.InDet.materialInteractionsType if flags.InDet.materialInteractions else 0)
 
-    if flags.InDet.Tracking.extension == "Pixel" or flags.InDet.Tracking.extension == "DBM":
+    if flags.InDet.Tracking.Pass.extension == "Pixel" or flags.InDet.Tracking.Pass.extension == "DBM":
         kwargs.setdefault("SuppressHoleSearch", True)
 
-    ProcessorTool = CompFactory.Trk.SimpleAmbiguityProcessorTool
-
-    if flags.InDet.Tracking.extension == "LowPt" or flags.InDet.Tracking.extension == "VeryLowPt" or (flags.InDet.Tracking.extension == "Pixel" and flags.InDet.doMinBias):
-        if ProcessorTool.getName().find('Dense') :
-            pass
-        else:
-            InDetTrackFitterLowPt = acc.popToolsAndMerge(TC.InDetTrackFitterLowPt(flags))
-            kwargs.setdefault("Fitter", InDetTrackFitterLowPt)
-
-    if flags.InDet.materialInteractions:
-        kwargs.setdefault("MatEffects", flags.InDet.materialInteractionsType)
-    else:
-        kwargs.setdefault("MatEffects", 0)
-
-    InDetAmbiguityProcessor = ProcessorTool(name=name+flags.InDet.Tracking.extension, **kwargs)
+    InDetAmbiguityProcessor = CompFactory.Trk.SimpleAmbiguityProcessorTool(name=name+flags.InDet.Tracking.Pass.extension, **kwargs)
     acc.setPrivateTools(InDetAmbiguityProcessor)
     return acc
 
@@ -624,7 +560,7 @@ def TrkAmbiguityScoreCfg(flags, name="InDetAmbiguityScore", SiSPSeededTrackColle
     #
     InputTrackCollection = SiSPSeededTrackCollectionKey
 
-    if flags.InDet.doTIDE_Ambi and not (flags.InDet.Tracking.extension == "ForwardTracks" or flags.InDet.Tracking.extension == "DBM"):
+    if flags.InDet.doTIDE_Ambi and flags.InDet.Tracking.Pass.useTIDE_Ambi:
         InDetAmbiguityScoreProcessor = acc.popToolsAndMerge(DenseEnvironmentsAmbiguityScoreProcessorToolCfg(flags))
     else:
         InDetAmbiguityScoreProcessor = None
@@ -633,10 +569,10 @@ def TrkAmbiguityScoreCfg(flags, name="InDetAmbiguityScore", SiSPSeededTrackColle
     # --- configure Ambiguity (score) solver
     #
     kwargs.setdefault("TrackInput" , [ InputTrackCollection ])
-    kwargs.setdefault("TrackOutput", 'ScoredMap'+'InDetAmbiguityScore'+ flags.InDet.Tracking.extension)
+    kwargs.setdefault("TrackOutput", 'ScoredMap'+'InDetAmbiguityScore'+ flags.InDet.Tracking.Pass.extension)
     kwargs.setdefault("AmbiguityScoreProcessor" ,  InDetAmbiguityScoreProcessor ) ## TODO: check the case when it is None object
 
-    InDetAmbiguityScore = CompFactory.Trk.TrkAmbiguityScore(name = name+flags.InDet.Tracking.extension, **kwargs)
+    InDetAmbiguityScore = CompFactory.Trk.TrkAmbiguityScore(name = name+flags.InDet.Tracking.Pass.extension, **kwargs)
     acc.addEventAlgo(InDetAmbiguityScore)
     return acc
 
@@ -644,22 +580,19 @@ def TrkAmbiguitySolverCfg(flags, name="InDetAmbiguitySolver", ResolvedTrackColle
     acc = ComponentAccumulator()
     SiTrackCollection = ResolvedTrackCollectionKey
 
-    if flags.InDet.doTIDE_Ambi and not (flags.InDet.Tracking.extension == "ForwardTracks" or flags.InDet.Tracking.extension == "DBM"):
-    # DenseEnvironmentsAmbiguityProcessorTool
-        InDetAmbiguityProcessor = acc.popToolsAndMerge(DenseEnvironmentsAmbiguityProcessorToolCfg(  flags,
-                                                                                                    ClusterSplitProbContainer=ClusterSplitProbContainer))
+    if flags.InDet.doTIDE_Ambi and flags.InDet.Tracking.Pass.useTIDE_Ambi:
+        InDetAmbiguityProcessor = acc.popToolsAndMerge(DenseEnvironmentsAmbiguityProcessorToolCfg(flags, ClusterSplitProbContainer=ClusterSplitProbContainer))
     else:
-        InDetAmbiguityProcessor = acc.popToolsAndMerge(SimpleAmbiguityProcessorToolCfg( flags,
-                                                                                        ClusterSplitProbContainer=ClusterSplitProbContainer))
+        InDetAmbiguityProcessor = acc.popToolsAndMerge(SimpleAmbiguityProcessorToolCfg(flags, ClusterSplitProbContainer=ClusterSplitProbContainer))
 
     #
     # --- configure Ambiguity solver
     #
-    kwargs.setdefault("TrackInput", 'ScoredMap'+'InDetAmbiguityScore'+ flags.InDet.Tracking.extension)
+    kwargs.setdefault("TrackInput", 'ScoredMap'+'InDetAmbiguityScore'+ flags.InDet.Tracking.Pass.extension)
     kwargs.setdefault("TrackOutput", SiTrackCollection)
     kwargs.setdefault( "AmbiguityProcessor", InDetAmbiguityProcessor)
 
-    InDetAmbiguitySolver = CompFactory.Trk.TrkAmbiguitySolver(name = name+flags.InDet.Tracking.extension, **kwargs)
+    InDetAmbiguitySolver = CompFactory.Trk.TrkAmbiguitySolver(name = name+flags.InDet.Tracking.Pass.extension, **kwargs)
     acc.addEventAlgo(InDetAmbiguitySolver )
     return acc
 
@@ -671,21 +604,12 @@ def TrkAmbiguitySolverCfg(flags, name="InDetAmbiguitySolver", ResolvedTrackColle
 def TrackingSiPatternCfg(flags, InputCollections = None, ResolvedTrackCollectionKey = None, SiSPSeededTrackCollectionKey = None , ClusterSplitProbContainer=''):
     acc = ComponentAccumulator()
     #
-    # --- decide if use the association tool
-    #
-    if (len(InputCollections) > 0) and (flags.InDet.Tracking.extension == "LowPt" or flags.InDet.Tracking.extension == "VeryLowPt" or flags.InDet.Tracking.extension == "LargeD0" or flags.InDet.Tracking.extension == "R3LargeD0" or flags.InDet.Tracking.extension == "LowPtLargeD0" or flags.InDet.Tracking.extension == "BeamGas" or flags.InDet.Tracking.extension == "ForwardTracks" or flags.InDet.Tracking.extension == "Disappearing"):
-        usePrdAssociationTool = True
-    else:
-        usePrdAssociationTool = False
-    #
     # --- get list of already associated hits (always do this, even if no other tracking ran before)
     #
-    if usePrdAssociationTool:
-        prefix = 'InDet'
-        suffix = flags.InDet.Tracking.extension
-        acc.merge(TC.InDetTrackPRD_AssociationCfg(flags,namePrefix = prefix,
-                                                        nameSuffix = suffix,
-                                                        TracksName = list(InputCollections)))
+    if (len(InputCollections) > 0) and flags.InDet.Tracking.Pass.usePrdAssociationTool:
+        acc.merge(TC.InDetTrackPRD_AssociationCfg(flags,namePrefix = 'InDet',
+                                                  nameSuffix = flags.InDet.Tracking.Pass.extension,
+                                                  TracksName = list(InputCollections)))
 
     # ------------------------------------------------------------
     #
diff --git a/InnerDetector/InDetConfig/python/VertexFindingFlags.py b/InnerDetector/InDetConfig/python/VertexFindingFlags.py
index 89ca30dd83536b3b092d6a50b3c30198f753ef56..4b1796a4ffe29fe9bd2040e7da2e97f74a1133c5 100644
--- a/InnerDetector/InDetConfig/python/VertexFindingFlags.py
+++ b/InnerDetector/InDetConfig/python/VertexFindingFlags.py
@@ -20,7 +20,7 @@ def createSecVertexingFlags():
     flags.addFlag("TrkSel.maxTrtD0"                   , 10000.)
     flags.addFlag("TrkSel.maxSiZ0"                    , 10000.)
     flags.addFlag("TrkSel.maxTrtZ0"                   , 10000.)
-    flags.addFlag("TrkSel.minPt"                      , lambda pcf: pcf.InDet.Tracking.minPT)
+    flags.addFlag("TrkSel.minPt"                      , lambda pcf: pcf.InDet.Tracking.Pass.minPT)
     flags.addFlag("TrkSel.RatioCut1"                  , 0.0) # e-prob for Si conversion tracks (affects 1Si, 2Si, SiTRT): Ntrt < 15
     flags.addFlag("TrkSel.RatioCut2"                  , 0.0) # e-prob for Si conversion tracks (affects 1Si, 2Si, SiTRT): 15 < Ntrt < 25
     flags.addFlag("TrkSel.RatioCut3"                  , 0.0) # e-prob for Si conversion tracks (affects 1Si, 2Si, SiTRT): Ntrt > 25