diff --git a/InnerDetector/InDetConfig/python/BackTrackingConfig.py b/InnerDetector/InDetConfig/python/BackTrackingConfig.py
index 9ee028686b5d1c787f406a04497e41ca483d8929..64ecb46c4e37848def2937e500644ed68210048e 100644
--- a/InnerDetector/InDetConfig/python/BackTrackingConfig.py
+++ b/InnerDetector/InDetConfig/python/BackTrackingConfig.py
@@ -104,11 +104,7 @@ def TRT_SeededTrackFinder_ATLCfg(flags, name='InDetTRT_SeededTrackMaker', InputC
     #
     # --- decide which TRT seed space point finder to use
     #
-    if flags.InDet.Tracking.loadSimpleTRTSeededSPFinder:
-        InDetTRT_SeededSpacePointFinder = acc.popToolsAndMerge(SimpleTRT_SeededSpacePointFinder_ATLCfg(flags, InputCollections=InputCollections))
-    else:
-        InDetTRT_SeededSpacePointFinder = acc.popToolsAndMerge(TRT_SeededSpacePointFinder_ATLCfg(flags, InputCollections=InputCollections))
-
+    InDetTRT_SeededSpacePointFinder = acc.popToolsAndMerge(TRT_SeededSpacePointFinder_ATLCfg(flags, InputCollections=InputCollections))
     acc.addPublicTool(InDetTRT_SeededSpacePointFinder)
 
     kwargs.setdefault("PropagatorTool", InDetPatternPropagator)
@@ -371,7 +367,7 @@ if __name__ == "__main__":
 
     ########################## TRTPreProcessing Configuration ################################
 
-    if not flags.InDet.doDBMstandalone:
+    if not flags.InDet.Tracking.doDBMstandalone:
         from InDetConfig.TRTPreProcessing import TRTPreProcessingCfg
         top_acc.merge(TRTPreProcessingCfg(flags,
                                           useTimeInfo = not flags.InDet.Tracking.doTRTPhaseCalculation or flags.Beam.Type=="collisions",
diff --git a/InnerDetector/InDetConfig/python/ITkConfigFlags.py b/InnerDetector/InDetConfig/python/ITkConfigFlags.py
index fea350a8e5628c4a4d088d07e71f5a243fe1e208..eaad6dc7d8d48ca5a5bf48e6b13543cbb37c924e 100644
--- a/InnerDetector/InDetConfig/python/ITkConfigFlags.py
+++ b/InnerDetector/InDetConfig/python/ITkConfigFlags.py
@@ -18,7 +18,6 @@ def createITkConfigFlags():
   itkcf.addFlag("ITk.Tracking.doStoreTrackSeeds", False) # Turn on to save the Track Seeds in a xAOD track collecting for development studies
   itkcf.addFlag("ITk.Tracking.doDigitalROTCreation", False) # use PixelClusterOnTrackToolDigital during ROT creation to save CPU
   itkcf.addFlag("ITk.Tracking.trackFitterType", "GlobalChi2Fitter") # control which fitter to be used: 'KalmanFitter', 'KalmanDNAFitter', 'DistributedKalmanFilter', 'GlobalChi2Fitter', 'GaussianSumFilter'
-  itkcf.addFlag("ITk.Tracking.useHolesFromPattern", False)
   itkcf.addFlag("ITk.Tracking.doFastTracking", False) # Turn running of ITk FastTracking on and off
   itkcf.addFlag("ITk.Tracking.doConversionFinding",True) # Turn running of ConversionFinding second pass on and off
   itkcf.addFlag("ITk.Tracking.doLargeD0", False)
diff --git a/InnerDetector/InDetConfig/python/ITkTrackingSiPatternConfig.py b/InnerDetector/InDetConfig/python/ITkTrackingSiPatternConfig.py
index fb0db531eab0de4a844e6bb89407a2c9937b4762..eb294774f771791b261630961c3beacdc0f66f3c 100644
--- a/InnerDetector/InDetConfig/python/ITkTrackingSiPatternConfig.py
+++ b/InnerDetector/InDetConfig/python/ITkTrackingSiPatternConfig.py
@@ -399,7 +399,7 @@ def ITkDenseEnvironmentsAmbiguityProcessorToolCfg(flags, name = "ITkAmbiguityPro
     kwargs.setdefault("caloSeededBrem", flags.ITk.Tracking.doCaloSeededBrem and flags.Detector.EnableCalo)
     kwargs.setdefault("pTminBrem", flags.ITk.Tracking.Pass.minPTBrem[0])
     kwargs.setdefault("RefitPrds", True)
-    kwargs.setdefault("KeepHolesFromBeforeRefit", flags.ITk.Tracking.useHolesFromPattern)
+    kwargs.setdefault("KeepHolesFromBeforeRefit", False)
 
     # DenseEnvironmentsAmbiguityProcessorTool
     ProcessorTool = CompFactory.Trk.DenseEnvironmentsAmbiguityProcessorTool
diff --git a/InnerDetector/InDetConfig/python/InDetConfigFlags.py b/InnerDetector/InDetConfig/python/InDetConfigFlags.py
index ea163ec5b75275761a17ddb2cd9e805a981e160b..c9096f68b7ae584e75bc18d03a47f36d73a98a30 100644
--- a/InnerDetector/InDetConfig/python/InDetConfigFlags.py
+++ b/InnerDetector/InDetConfig/python/InDetConfigFlags.py
@@ -9,34 +9,39 @@ def createInDetConfigFlags():
 
   ### Detector flags
 
-  icf.addFlag("InDet.doDBMstandalone",False)
   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.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.selectSCTIntimeHits", True) # defines if the X1X mode is used for the offline or not
+  icf.addFlag("InDet.doTruth", lambda prevFlags: prevFlags.Input.isMC) # Turn running of truth matching on and off (by default on for MC off for data)
+  icf.addFlag("InDet.selectSCTIntimeHits", lambda prevFlags: not(prevFlags.Beam.Type=="cosmics" or prevFlags.InDet.Tracking.doVtxBeamSpot) ) # defines if the X1X mode is used for the offline or not
   icf.addFlag("InDet.useDCS", True)
   icf.addFlag("InDet.usePixelDCS",  lambda prevFlags : (prevFlags.InDet.useDCS and prevFlags.Detector.EnablePixel))
   icf.addFlag("InDet.useSctDCS",  lambda prevFlags : (prevFlags.InDet.useDCS and prevFlags.Detector.EnableSCT))
+  icf.addFlag("InDet.ForceCoraCool", False) # Use old (non CoolVectorPayload) SCT Conditions
+  icf.addFlag("InDet.ForceCoolVectorPayload", False) # Use new (CoolVectorPayload) SCT Conditions
+  icf.addFlag("InDet.doSCTModuleVeto", False) # Turn on SCT_ModuleVetoSvc, allowing it to be configured later
+  icf.addFlag("InDet.checkDeadElementsOnTrack", True) # Enable check for dead modules and FEs
+  icf.addFlag("InDet.doTRTGlobalOccupancy", False) # Turn running of Event Info TRT Occupancy Filling Alg on and off (also whether it is used in TRT PID calculation)
+  icf.addFlag("InDet.noTRTTiming", lambda prevFlags: prevFlags.Beam.Type=="singlebeam")
+
 
   ### Tracking parameters
 
+  icf.addFlag("InDet.Tracking.doStoreTrackSeeds", False) # Turn on to save the Track Seeds in a xAOD track collecting for development studies
   icf.addFlag("InDet.Tracking.materialInteractions", True)
-  icf.addFlag("InDet.Tracking.materialInteractionsType", 3) # Control which type of particle hypothesis to use for the material interactions 0=non-interacting,1=electron,2=muon,3=pion,4=kaon,5=proton. See ParticleHypothesis.h for full definition.
-  icf.addFlag("InDet.Tracking.useHolesFromPattern", False)
-  icf.addFlag("InDet.Tracking.useZvertexTool", False) # start with Zvertex finding
+  icf.addFlag("InDet.Tracking.materialInteractionsType", lambda prevFlags: 2 if prevFlags.Beam.Type=="cosmics" else 3) # Control which type of particle hypothesis to use for the material interactions 0=non-interacting,1=electron,2=muon,3=pion,4=kaon,5=proton. See ParticleHypothesis.h for full definition.
+  icf.addFlag("InDet.Tracking.doDigitalROTCreation",False) # use PixelClusterOnTrackToolDigital during ROT creation to save CPU
   icf.addFlag("InDet.Tracking.holeSearchInGX2Fit", True)
   icf.addFlag("InDet.Tracking.trackFitterType", "GlobalChi2Fitter") # control which fitter to be used: 'KalmanFitter', 'KalmanDNAFitter', 'DistributedKalmanFilter', 'GlobalChi2Fitter', 'GaussianSumFilter'
   icf.addFlag("InDet.Tracking.kalmanUpdator", "smatrix") # control which updator to load for KalmanFitter ("None"/"fast"/"smatrix"/"weight"/"amg")
   icf.addFlag("InDet.Tracking.propagatorType", "RungeKutta") # control which propagator to use ('RungeKutta'/'STEP')
   icf.addFlag("InDet.Tracking.doSharedHits", True) # control if the shared hits are recorded in TrackPatricles
-  icf.addFlag("InDet.Tracking.perigeeExpression", "BeamLine") # Express track parameters wrt. to : 'BeamLine','BeamSpot','Vertex' (first primary vertex)
+  icf.addFlag("InDet.Tracking.perigeeExpression", lambda prevFlags: "Vertex" if prevFlags.Reco.EnableHI else "BeamLine") # Express track parameters wrt. to : 'BeamLine','BeamSpot','Vertex' (first primary vertex)
   icf.addFlag("InDet.Tracking.cutLevel", 19) # Control cuts and settings for different lumi to limit CPU and disk space
-  icf.addFlag("InDet.Tracking.doTIDE_Ambi", True) # Switch for running TIDE Ambi
-  icf.addFlag("InDet.Tracking.doBremRecovery", True) # Turn on running of Brem Recover in tracking
+  icf.addFlag("InDet.Tracking.doTIDE_Ambi", lambda prevFlags: not prevFlags.InDet.Tracking.doInnerDetectorCommissioning) # Switch for running TIDE Ambi
+  icf.addFlag("InDet.Tracking.doBremRecovery", lambda prevFlags: not(prevFlags.InDet.Tracking.doVtxLumi or prevFlags.InDet.Tracking.doVtxBeamSpot or prevFlags.InDet.Tracking.doLowMu or prevFlags.Beam.Type!="collisions" or not prevFlags.BField.solenoidOn) ) # Turn on running of Brem Recover in tracking
   icf.addFlag("InDet.Tracking.doCaloSeededBrem", True) # Brem Recover in tracking restricted to Calo ROIs
   icf.addFlag("InDet.Tracking.doHadCaloSeededSSS", False) # Use Recover SSS to Calo ROIs
   icf.addFlag("InDet.Tracking.doCaloSeededAmbi", lambda prevFlags: prevFlags.Detector.EnableCalo) # Use Calo ROIs to seed specific cuts for the ambi
-  icf.addFlag("InDet.Tracking.doBeamHalo", False) # Turn running of BeamHalo second pass on and off / Which second pass?
-  icf.addFlag("InDet.Tracking.doPixelClusterSplitting", True) # Try to split pixel clusters
+  icf.addFlag("InDet.Tracking.doPixelClusterSplitting", lambda prevFlags: not prevFlags.InDet.Tracking.doInnerDetectorCommissioning) # Try to split pixel clusters
   icf.addFlag("InDet.Tracking.pixelClusterSplittingType", "NeuralNet") # choose splitter type: NeuralNet or AnalogClus
   icf.addFlag("InDet.Tracking.pixelClusterSplitProb1", lambda prevFlags: 0.5 if prevFlags.GeoModel.Run == 'RUN1' else 0.55) # Cut value for splitting clusters into two parts
   icf.addFlag("InDet.Tracking.pixelClusterSplitProb2", lambda prevFlags: 0.5 if prevFlags.GeoModel.Run == 'RUN1' else 0.45) # Cut value for splitting clusters into three parts
@@ -44,50 +49,41 @@ def createInDetConfigFlags():
   icf.addFlag("InDet.Tracking.nnCutLargeD0Threshold", -1.0) # Enable check for dead modules and FEs
   icf.addFlag("InDet.Tracking.useBroadPixClusterErrors", False) # Use broad cluster errors for Pixel
   icf.addFlag("InDet.Tracking.useBroadSCTClusterErrors", False) # Use broad cluster errors for SCT
-  icf.addFlag("InDet.Tracking.trtExtensionType", 'xk') # which extension type ("xk"/"DAF")
-  icf.addFlag("InDet.Tracking.redoTRT_LR", True) # use smart TRT LR/tube hit creator and redo ROTs
-  icf.addFlag("InDet.Tracking.doTRTPhaseCalculation", False) # control to run TRT phase calculation
-  icf.addFlag("InDet.Tracking.loadSimpleTRTSeededSPFinder", False) # control which TRT SP finder is used
-  icf.addFlag("InDet.Tracking.noTRTTiming", False)
+  icf.addFlag("InDet.Tracking.doRefitInvalidCov", False) # Try Kalman fitter if the track fit in the ambiguity processor produces non positive definitematrices.
+  icf.addFlag("InDet.Tracking.trtExtensionType", "xk") # which extension type ("xk"/"DAF")
+  icf.addFlag("InDet.Tracking.redoTRT_LR", lambda prevFlags: not prevFlags.InDet.Tracking.trtExtensionType=="DAF") # use smart TRT LR/tube hit creator and redo ROTs
+  icf.addFlag("InDet.Tracking.doTRTPhaseCalculation", lambda prevFlags: prevFlags.Beam.Type=="cosmics") # control to run TRT phase calculation
 
   ### Tracking passes/configurations scheduled
 
-  icf.addFlag("InDet.Tracking.doTrackSegmentsPixel", False) # Turn running of track segment creation in pixel on and off
-  icf.addFlag("InDet.Tracking.doTrackSegmentsSCT", False) # Turn running of track segment creation in SCT on and off
-  icf.addFlag("InDet.Tracking.doTrackSegmentsTRT", False) # Turn running of track segment creation in TRT on and off
+  icf.addFlag("InDet.Tracking.doTrackSegmentsPixel", lambda prevFlags: prevFlags.InDet.Tracking.doMinBias or prevFlags.InDet.Tracking.doLowMu or prevFlags.InDet.Tracking.doInnerDetectorCommissioning) # Turn running of track segment creation in pixel on and off
+  icf.addFlag("InDet.Tracking.doTrackSegmentsSCT", lambda prevFlags: prevFlags.InDet.Tracking.doLowMu or prevFlags.InDet.Tracking.doInnerDetectorCommissioning) # Turn running of track segment creation in SCT on and off
+  icf.addFlag("InDet.Tracking.doTrackSegmentsTRT", lambda prevFlags: prevFlags.InDet.Tracking.doLowMu or prevFlags.InDet.Tracking.doInnerDetectorCommissioning) # Turn running of track segment creation in TRT on and off
+  icf.addFlag("InDet.Tracking.doDBMstandalone",False)
   icf.addFlag("InDet.Tracking.doHighPileup", False) # Turn running of high pile-up reconstruction on and off
   icf.addFlag("InDet.Tracking.doTRTExtension", True) # turn on / off TRT extensions
   icf.addFlag("InDet.Tracking.doTRTSegments", lambda prevFlags: prevFlags.InDet.Tracking.doBackTracking or prevFlags.InDet.Tracking.doTRTStandalone) # control to run TRT Segment finding (do it always after new tracking!)
-  icf.addFlag("InDet.Tracking.doBackTracking", True) # Turn running of backtracking on and off
+  icf.addFlag("InDet.Tracking.doBackTracking", lambda prevFlags: not(prevFlags.Beam.Type in ["singlebeam", "cosmics"] or prevFlags.Reco.EnableHI or prevFlags.InDet.Tracking.doHighPileup or prevFlags.InDet.Tracking.doVtxLumi or prevFlags.InDet.Tracking.doVtxBeamSpot) ) # Turn running of backtracking on and off
   icf.addFlag("InDet.Tracking.doLargeD0", False)
-  icf.addFlag("InDet.Tracking.doR3LargeD0", True)
+  icf.addFlag("InDet.Tracking.doR3LargeD0", lambda prevFlags: not(prevFlags.Beam.Type in ["singlebeam", "cosmics"] or prevFlags.Reco.EnableHI or prevFlags.InDet.Tracking.doHighPileup or prevFlags.InDet.Tracking.doVtxLumi or prevFlags.InDet.Tracking.doVtxBeamSpot) )
   icf.addFlag("InDet.Tracking.doLowPtLargeD0", False) # Turn running of doLargeD0 second pass down to 100 MeV on and off Turn running of doLargeD0 second pass on and off
   icf.addFlag("InDet.Tracking.storeSeparateLargeD0Container", True)
-  icf.addFlag("InDet.Tracking.doLowPt", False) # Turn running of doLowPt second pass on and off
+  icf.addFlag("InDet.Tracking.doLowPt", lambda prevFlags: prevFlags.InDet.Tracking.doLowMu) # Turn running of doLowPt second pass on and off
   icf.addFlag("InDet.Tracking.doVeryLowPt", False) # Turn running of doVeryLowPt thrid pass on and off
-  icf.addFlag("InDet.Tracking.doTRTStandalone", True) # control TRT Standalone
-  icf.addFlag("InDet.Tracking.doForwardTracks", True) # Turn running of doForwardTracks pass on and off
-  icf.addFlag("InDet.Tracking.doTrackSegmentsDisappearing", True)
-  icf.addFlag("InDet.Tracking.doBeamGas", False) # Turn running of BeamGas second pass on and off
+  icf.addFlag("InDet.Tracking.doTRTStandalone", lambda prevFlags: not(prevFlags.Reco.EnableHI or prevFlags.InDet.Tracking.doHighPileup or prevFlags.InDet.Tracking.doVtxLumi or prevFlags.InDet.Tracking.doVtxBeamSpot) ) # control TRT Standalone
+  icf.addFlag("InDet.Tracking.doForwardTracks", lambda prevFlags: not(prevFlags.Beam.Type in ["singlebeam", "cosmics"] or prevFlags.Reco.EnableHI or prevFlags.InDet.Tracking.doHighPileup or prevFlags.InDet.Tracking.doVtxLumi or prevFlags.InDet.Tracking.doVtxBeamSpot or prevFlags.InDet.Tracking.doMinBias or prevFlags.InDet.Tracking.doLowMu)) # Turn running of doForwardTracks pass on and off
+  icf.addFlag("InDet.Tracking.doTrackSegmentsDisappearing", lambda prevFlags: not(prevFlags.Reco.EnableHI or prevFlags.Reco.EnableHI or prevFlags.InDet.Tracking.doInnerDetectorCommissioning) )
+  icf.addFlag("InDet.Tracking.doBeamGas", lambda prevFlags: prevFlags.Beam.Type=="singlebeam") # Turn running of BeamGas second pass on and off
   icf.addFlag("InDet.Tracking.doMinBias", False) # Switch for running MinBias settings
+  icf.addFlag("InDet.Tracking.doHIP300", False) # Switch for running MinBias settings with a 300 MeV pT cut (for Heavy Ion Proton)
   icf.addFlag("InDet.Tracking.doRobustReco", False) # Switch for running Robust settings
   icf.addFlag("InDet.Tracking.doInnerDetectorCommissioning", False) # Switch for running looser settings in ID for commissioning
+  icf.addFlag("InDet.Tracking.doBLS", False) # Special reconstruction for BLS physics
+  icf.addFlag("InDet.Tracking.doVtxLumi", False) # Special reconstruction for vertex lumi measurement
+  icf.addFlag("InDet.Tracking.doVtxBeamSpot", False) # Special reconstruction for vertex beamspot measurement
+  icf.addFlag("InDet.Tracking.doLowMu", False) # Special configuration for low-mu runs
 
-
-  icf.addFlag("InDet.doRefitInvalidCov", False) # Try Kalman fitter if the track fit in the ambiguity processor produces non positive definitematrices.
-  icf.addFlag("InDet.doSSSfilter", True) # Switch for running SSS filter
-  icf.addFlag("InDet.ForceCoraCool", False) # Use old (non CoolVectorPayload) SCT Conditions
-  icf.addFlag("InDet.ForceCoolVectorPayload", False) # Use new (CoolVectorPayload) SCT Conditions
-  icf.addFlag("InDet.doTRTGlobalOccupancy", False) # Turn running of Event Info TRT Occupancy Filling Alg on and off (also whether it is used in TRT PID calculation)
-  icf.addFlag("InDet.doNNToTCalibration", False ) # USe ToT calibration for NN clustering rather than Charge
-  icf.addFlag("InDet.useNNTTrainedNetworks", False ) # Use older NNs stored as TTrainedNetworks in place of default MDNs/other more recent networks. This is necessary for older configuration tags where the trainings were not available.
-  icf.addFlag("InDet.doSCTModuleVeto", False) # Turn on SCT_ModuleVetoSvc, allowing it to be configured later
-  icf.addFlag("InDet.doStoreTrackSeeds", False) # Turn on to save the Track Seeds in a xAOD track collecting for development studies
-  icf.addFlag("InDet.doHIP300", False) # Switch for running MinBias settings with a 300 MeV pT cut (for Heavy Ion Proton)
-  icf.addFlag("InDet.checkDeadElementsOnTrack", True) # Enable check for dead modules and FEs
-  icf.addFlag("InDet.doDigitalROTCreation",False) # use PixelClusterOnTrackToolDigital during ROT creation to save CPU
-
-  from InDetConfig.TrackingPassFlags import createTrackingPassFlags, createIBLTrackingPassFlags, createHighPileupTrackingPassFlags, \
+  from InDetConfig.TrackingPassFlags import createTrackingPassFlags, createHighPileupTrackingPassFlags, \
     createMinBiasTrackingPassFlags, createLargeD0TrackingPassFlags, createR3LargeD0TrackingPassFlags, createLowPtLargeD0TrackingPassFlags, \
     createLowPtTrackingPassFlags, createVeryLowPtTrackingPassFlags, createForwardTracksTrackingPassFlags, createBeamGasTrackingPassFlags, \
     createVtxLumiTrackingPassFlags, createVtxBeamSpotTrackingPassFlags, createCosmicsTrackingPassFlags, createHeavyIonTrackingPassFlags, \
@@ -95,7 +91,6 @@ def createInDetConfigFlags():
     createTRTStandaloneTrackingPassFlags, createDBMTrackingPassFlags, createRobustRecoTrackingPassFlags
 
   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)
diff --git a/InnerDetector/InDetConfig/python/InDetRecToolConfig.py b/InnerDetector/InDetConfig/python/InDetRecToolConfig.py
index 9446178d7ee49dbff342ce6cf0fc392a8ba81c67..2d4648471948d43b8699b1b86cc0f4ab0620ac6c 100644
--- a/InnerDetector/InDetConfig/python/InDetRecToolConfig.py
+++ b/InnerDetector/InDetConfig/python/InDetRecToolConfig.py
@@ -93,6 +93,7 @@ def InDetBoundaryCheckToolCfg(flags, name='InDetBoundarySearchTool', **kwargs):
 
   kwargs.setdefault("UsePixel", flags.Detector.EnablePixel)
   kwargs.setdefault("UseSCT", flags.Detector.EnableSCT)
+  kwargs.setdefault("CheckBadSCT", flags.InDet.checkDeadElementsOnTrack)
 
   result.setPrivateTools(CompFactory.InDet.InDetBoundaryCheckTool(name, **kwargs))
   return result
diff --git a/InnerDetector/InDetConfig/python/SiliconPreProcessing.py b/InnerDetector/InDetConfig/python/SiliconPreProcessing.py
index 1be93631ef70cb46a8880895593c7fbae478eaaf..a14f880143789f7618daf4a9161595260a2922b5 100644
--- a/InnerDetector/InDetConfig/python/SiliconPreProcessing.py
+++ b/InnerDetector/InDetConfig/python/SiliconPreProcessing.py
@@ -17,7 +17,7 @@ def SiSpacePointMakerToolCfg(flags, name="InDetSiSpacePointMakerTool", **kwargs)
     # --- SiSpacePointMakerTool (public)
     #
 
-    if flags.Beam.Type == "cosmics" or flags.InDet.Tracking.doBeamHalo:
+    if flags.Beam.Type == "cosmics" or flags.InDet.Tracking.doBeamGas:
         kwargs.setdefault("StripLengthTolerance", 0.05)
         kwargs.setdefault("UsePerpendicularProjection", True)
     
@@ -49,7 +49,7 @@ def InDetSiTrackerSpacePointFinderCfg(flags, name = "InDetSiTrackerSpacePointFin
     kwargs.setdefault("ProcessSCTs", flags.Detector.EnableSCT)
     kwargs.setdefault("ProcessOverlaps", flags.Detector.EnableSCT)
 
-    if flags.InDet.doDBMstandalone:
+    if flags.InDet.Tracking.doDBMstandalone:
         kwargs.setdefault("OverlapLimitEtaMax", 5.0)
         kwargs.setdefault("OverlapLimitEtaMin", 0)
 
diff --git a/InnerDetector/InDetConfig/python/TRTExtensionConfig.py b/InnerDetector/InDetConfig/python/TRTExtensionConfig.py
index 76f8136d83701cb97307192140c8c2938d9b30a1..09722cc880fc7091def6c26fcb66b7fe20a8d7ce 100644
--- a/InnerDetector/InDetConfig/python/TRTExtensionConfig.py
+++ b/InnerDetector/InDetConfig/python/TRTExtensionConfig.py
@@ -160,7 +160,6 @@ if __name__ == "__main__":
     ConfigFlags.Detector.GeometryTRT = True
 
     ConfigFlags.InDet.Tracking.doTRTExtension = True
-    ConfigFlags.InDet.Tracking.useHolesFromPattern = False
     ConfigFlags.InDet.Tracking.holeSearchInGX2Fit = True
 
     from AthenaConfiguration.TestDefaults import defaultTestFiles
@@ -226,7 +225,7 @@ if __name__ == "__main__":
     #################### Additional Configuration  ########################
     #######################################################################
     ################# TRTPreProcessing Configuration ######################
-    if not ConfigFlags.InDet.doDBMstandalone:
+    if not ConfigFlags.InDet.Tracking.doDBMstandalone:
         from InDetConfig.TRTPreProcessing import TRTPreProcessingCfg
         top_acc.merge(TRTPreProcessingCfg(ConfigFlags,
                                           useTimeInfo = not ConfigFlags.InDet.Tracking.doTRTPhaseCalculation or ConfigFlags.Beam.Type=="collisions",
diff --git a/InnerDetector/InDetConfig/python/TRTPreProcessing.py b/InnerDetector/InDetConfig/python/TRTPreProcessing.py
index 68bbcd6a5bdb94ac957f3150c9b0a9cd45cca218..9de5b5c2b37719b5603ca9bf4d55e81838bdd449 100644
--- a/InnerDetector/InDetConfig/python/TRTPreProcessing.py
+++ b/InnerDetector/InDetConfig/python/TRTPreProcessing.py
@@ -55,7 +55,7 @@ def InDetTRT_DriftFunctionToolCfg(flags, useTimeInfo, usePhase, name = "InDetTRT
     acc.addPublicTool(CalDbTool)
 
     # --- overwrite for uncalibrated DC production
-    if (not useTimeInfo) or flags.InDet.Tracking.noTRTTiming:
+    if (not useTimeInfo) or flags.InDet.noTRTTiming:
         kwargs.setdefault("DummyMode", True)
         kwargs.setdefault("UniversalError", 1.15)
 
@@ -305,7 +305,7 @@ if __name__ == "__main__":
     top_acc.merge( PixelReadoutGeometryCfg(ConfigFlags) )
     top_acc.merge( SCT_ReadoutGeometryCfg(ConfigFlags) )
 
-    if not ConfigFlags.InDet.doDBMstandalone:
+    if not ConfigFlags.InDet.Tracking.doDBMstandalone:
         top_acc.merge(TRTPreProcessingCfg(ConfigFlags,
                                           useTimeInfo = not ConfigFlags.InDet.Tracking.doTRTPhaseCalculation or ConfigFlags.Beam.Type=="collisions",
                                           usePhase = False))
diff --git a/InnerDetector/InDetConfig/python/TRTSegmentFindingConfig.py b/InnerDetector/InDetConfig/python/TRTSegmentFindingConfig.py
index 76dfafd5183132554902124fec63d4f6b38d2a55..5d78489a2e5fc3270597cefff2fb88853ba8bc12 100644
--- a/InnerDetector/InDetConfig/python/TRTSegmentFindingConfig.py
+++ b/InnerDetector/InDetConfig/python/TRTSegmentFindingConfig.py
@@ -224,7 +224,7 @@ if __name__ == "__main__":
     # NewTracking collection keys
     InputCombinedInDetTracks = []
 
-    if not flags.InDet.doDBMstandalone:
+    if not flags.InDet.Tracking.doDBMstandalone:
         from InDetConfig.TRTPreProcessing import TRTPreProcessingCfg
         top_acc.merge(TRTPreProcessingCfg(flags,
                                           useTimeInfo = not flags.InDet.Tracking.doTRTPhaseCalculation or flags.Beam.Type =="collisions",
diff --git a/InnerDetector/InDetConfig/python/TRTStandaloneConfig.py b/InnerDetector/InDetConfig/python/TRTStandaloneConfig.py
index 08551f002d7cddeb82e9414b0c9535d201aba391..18ad631e3604f7582ef7b5e29f6002cf947de68a 100644
--- a/InnerDetector/InDetConfig/python/TRTStandaloneConfig.py
+++ b/InnerDetector/InDetConfig/python/TRTStandaloneConfig.py
@@ -263,7 +263,7 @@ if __name__ == "__main__":
     top_acc.merge(TRTActiveCondAlgCfg(ConfigFlags))
     top_acc.merge(TC.TRT_DetElementsRoadCondAlgCfg())
     ############################# TRTPreProcessing configuration ############################
-    if not ConfigFlags.InDet.doDBMstandalone:
+    if not ConfigFlags.InDet.Tracking.doDBMstandalone:
         from InDetConfig.TRTPreProcessing import TRTPreProcessingCfg
         top_acc.merge(TRTPreProcessingCfg(ConfigFlags,(not ConfigFlags.InDet.doTRTPhaseCalculation or ConfigFlags.Beam.Type =="collisions"),False))
     ########################### TRTSegmentFindingCfg configuration ##########################
diff --git a/InnerDetector/InDetConfig/python/TrackRecoConfig.py b/InnerDetector/InDetConfig/python/TrackRecoConfig.py
index 1de41d97fb3c8f948b2981c2104a6004521a1ab6..02c0af03218be39aff12af73b2a9005728de9c69 100644
--- a/InnerDetector/InDetConfig/python/TrackRecoConfig.py
+++ b/InnerDetector/InDetConfig/python/TrackRecoConfig.py
@@ -316,7 +316,7 @@ def InDetTrackRecoCfg(flags):
 
     # TRT track segment finding
     if flags.InDet.Tracking.doTrackSegmentsTRT:
-        flagsTRT = flags.cloneAndReplace("InDet.Tracking.Pass", "InDet.TrackingTRTPass")
+        flagsTRT = flags.cloneAndReplace("InDet.Tracking.Pass", "InDet.Tracking.TRTPass")
         from InDetConfig.TRTSegmentFindingConfig import TRTSegmentFindingCfg
         result.merge(TRTSegmentFindingCfg(flagsTRT,
                                           extension = "_TRT",
@@ -335,8 +335,20 @@ def InDetTrackRecoCfg(flags):
     #
     # ------------------------------------------------------------
 
-    if flags.InDet.Tracking.doHighPileup:
+    if flags.InDet.Tracking.doDBMstandalone:
+        flags = flags.cloneAndReplace("InDet.Tracking.Pass", "InDet.Tracking.DBMPass")
+    elif flags.InDet.Tracking.doVtxLumi:
+        flags = flags.cloneAndReplace("InDet.Tracking.Pass", "InDet.Tracking.VtxLumiPass")
+    elif flags.InDet.Tracking.doVtxBeamSpot:
+        flags = flags.cloneAndReplace("InDet.Tracking.Pass", "InDet.Tracking.VtxBeamSpotPass")
+    elif flags.Beam.Type == "cosmics":
+        flags = flags.cloneAndReplace("InDet.Tracking.Pass", "InDet.Tracking.CosmicsPass")
+    elif flags.Reco.EnableHI:
+        flags = flags.cloneAndReplace("InDet.Tracking.Pass", "InDet.Tracking.HeavyIonPass")
+    elif flags.InDet.Tracking.doHighPileup:
         flags = flags.cloneAndReplace("InDet.Tracking.Pass", "InDet.Tracking.HighPileupPass")
+    elif flags.InDet.Tracking.doMinBias:
+        flags = flags.cloneAndReplace("InDet.Tracking.Pass", "InDet.Tracking.MinBiasPass")
     elif flags.InDet.Tracking.doRobustReco:
         flags = flags.cloneAndReplace("InDet.Tracking.Pass", "InDet.Tracking.RobustRecoPass")
 
@@ -555,7 +567,11 @@ def InDetTrackRecoCfg(flags):
 
     result.merge(TrackParticleCnvAlgCfg(flags))
 
-    # TODO add followup algs
+    if flags.InDet.Tracking.doStoreTrackSeeds:
+        result.merge(TrackParticleCnvAlgCfg(flags,
+                                            name = "SiSPSeedSegmentsCnvAlg",
+                                            TrackContainerName = "SiSPSeedSegments",
+                                            OutputTrackParticleContainer = "SiSPSeedSegmentsTrackParticles"))
 
     if flags.InDet.PriVertex.doVertexFinding:
         from InDetConfig.VertexFindingConfig import primaryVertexFindingCfg
diff --git a/InnerDetector/InDetConfig/python/TrackTruthConfig.py b/InnerDetector/InDetConfig/python/TrackTruthConfig.py
index 3f117522bb925104f4c5fed0c9219290fd7809ff..f4650b30e4be5e42edfff30098ead96366f86d89 100644
--- a/InnerDetector/InDetConfig/python/TrackTruthConfig.py
+++ b/InnerDetector/InDetConfig/python/TrackTruthConfig.py
@@ -79,7 +79,6 @@ if __name__ == "__main__":
     ConfigFlags.Detector.GeometryTRT   = True
 
     ConfigFlags.InDet.Tracking.doPixelClusterSplitting = True
-    ConfigFlags.InDet.Tracking.useHolesFromPattern =  False
 
     from AthenaConfiguration.TestDefaults import defaultTestFiles
     ConfigFlags.Input.Files = defaultTestFiles.RDO
diff --git a/InnerDetector/InDetConfig/python/TrackingCommonConfig.py b/InnerDetector/InDetConfig/python/TrackingCommonConfig.py
index 49e0ea048d8a9350ab9fd98372fe567db0ec2a11..fdfbc51b7a4437dd788154765fbdfa90fba2caae 100644
--- a/InnerDetector/InDetConfig/python/TrackingCommonConfig.py
+++ b/InnerDetector/InDetConfig/python/TrackingCommonConfig.py
@@ -89,24 +89,22 @@ def NnClusterizationFactoryCfg(flags, name="NnClusterizationFactory", **kwargs):
         PixelLorentzAngleTool = PixelLorentzAngleTool(flags, name="PixelLorentzAngleTool", **kwargs)
         kwargs.setdefault("PixelLorentzAngleTool", PixelLorentzAngleTool)
 
-    do_runI = flags.GeoModel.Run == "RUN1"
-
-    if flags.InDet.useNNTTrainedNetworks:
-        acc.merge(PixelClusterNnCondAlgCfg(flags, name="PixelClusterNnCondAlg", GetInputsInfo=do_runI))
-        acc.merge(PixelClusterNnWithTrackCondAlgCfg(flags, name="PixelClusterNnWithTrackCondAlg", GetInputsInfo=do_runI))
+    if flags.GeoModel.Run=="RUN1":
+        acc.merge(PixelClusterNnCondAlgCfg(flags, name="PixelClusterNnCondAlg", GetInputsInfo=True))
+        acc.merge(PixelClusterNnWithTrackCondAlgCfg(flags, name="PixelClusterNnWithTrackCondAlg", GetInputsInfo=True))
     else:
         acc.merge(LWTNNCondAlgCfg(flags, name="LWTNNCondAlg"))
 
-    kwargs.setdefault("doRunI", do_runI)
-    kwargs.setdefault("useToT", False if do_runI else flags.InDet.doNNToTCalibration)
-    kwargs.setdefault("useRecenteringNNWithoutTracks", True  if do_runI else False)
-    kwargs.setdefault("useRecenteringNNWithTracks", False if do_runI else False)
+    kwargs.setdefault("doRunI", flags.GeoModel.Run=="RUN1")
+    kwargs.setdefault("useToT", False)
+    kwargs.setdefault("useRecenteringNNWithoutTracks", flags.GeoModel.Run=="RUN1")
+    kwargs.setdefault("useRecenteringNNWithTracks", False)
     kwargs.setdefault("correctLorShiftBarrelWithoutTracks", 0)
-    kwargs.setdefault("correctLorShiftBarrelWithTracks", 0.030 if do_runI else 0.000)
-    kwargs.setdefault("useTTrainedNetworks", flags.InDet.useNNTTrainedNetworks)
-    kwargs.setdefault("NnCollectionReadKey", "PixelClusterNN" if flags.InDet.useNNTTrainedNetworks else "")
-    kwargs.setdefault("NnCollectionWithTrackReadKey", "PixelClusterNNWithTrack" if flags.InDet.useNNTTrainedNetworks else "")
-    kwargs.setdefault("NnCollectionJSONReadKey", "" if flags.InDet.useNNTTrainedNetworks else "PixelClusterNNJSON")
+    kwargs.setdefault("correctLorShiftBarrelWithTracks", 0.030 if flags.GeoModel.Run=="RUN1" else 0.000)
+    kwargs.setdefault("useTTrainedNetworks", flags.GeoModel.Run=="RUN1")
+    kwargs.setdefault("NnCollectionReadKey", "PixelClusterNN" if flags.GeoModel.Run=="RUN1" else "")
+    kwargs.setdefault("NnCollectionWithTrackReadKey", "PixelClusterNNWithTrack" if flags.GeoModel.Run=="RUN1" else "")
+    kwargs.setdefault("NnCollectionJSONReadKey", "" if flags.GeoModel.Run=="RUN1" else "PixelClusterNNJSON")
 
     acc.setPrivateTools(CompFactory.InDet.NnClusterizationFactory(the_name, **kwargs))
     return acc
@@ -118,14 +116,14 @@ def InDetPixelClusterOnTrackToolBaseCfg(flags, name="PixelClusterOnTrackTool", *
 
     from PixelConditionsAlgorithms.PixelConditionsConfig import PixelDistortionAlgCfg, PixelOfflineCalibCondAlgCfg
     acc.merge(PixelOfflineCalibCondAlgCfg(flags))
-    if not flags.InDet.doDBMstandalone:
+    if not flags.InDet.Tracking.doDBMstandalone:
         acc.merge(PixelDistortionAlgCfg(flags))
 
-    if flags.Beam.Type == "cosmics" or flags.InDet.doDBMstandalone:
+    if flags.Beam.Type == "cosmics" or flags.InDet.Tracking.doDBMstandalone:
         kwargs.setdefault("ErrorStrategy", 0)
         kwargs.setdefault("PositionStrategy", 0)
 
-    kwargs.setdefault("DisableDistortions", flags.InDet.doDBMstandalone)
+    kwargs.setdefault("DisableDistortions", flags.InDet.Tracking.doDBMstandalone)
     kwargs.setdefault("applyNNcorrection", flags.InDet.Tracking.doPixelClusterSplitting and flags.InDet.Tracking.pixelClusterSplittingType == "NeuralNet")
     kwargs.setdefault("NNIBLcorrection", flags.InDet.Tracking.doPixelClusterSplitting and flags.InDet.Tracking.pixelClusterSplittingType == "NeuralNet")
     split_cluster_map_extension = flags.InDet.Tracking.Pass.extension if flags.InDet.Tracking.Pass.useTIDE_Ambi else ""
@@ -146,12 +144,12 @@ def InDetPixelClusterOnTrackToolDigitalCfg(flags, name="InDetPixelClusterOnTrack
         PixelLorentzAngleTool = acc.popToolsAndMerge(PixelLorentzAngleCfg(flags))
         kwargs.setdefault("LorentzAngleTool", PixelLorentzAngleTool)
 
-    if flags.InDet.doDigitalROTCreation:
+    if flags.InDet.Tracking.doDigitalROTCreation:
         kwargs.setdefault("applyNNcorrection", False)
         kwargs.setdefault("NNIBLcorrection", False)
         kwargs.setdefault("ErrorStrategy", 2)
         kwargs.setdefault("PositionStrategy", 1)
-    else :
+    else:
         kwargs.setdefault("SplitClusterAmbiguityMap", "")
 
     acc.setPrivateTools(acc.popToolsAndMerge(InDetPixelClusterOnTrackToolBaseCfg(flags, name, **kwargs)))
@@ -176,7 +174,7 @@ def InDetPixelClusterOnTrackToolCfg(flags, name="InDetPixelClusterOnTrackTool",
         from SiLorentzAngleTool.PixelLorentzAngleConfig import PixelLorentzAngleCfg
         kwargs.setdefault("LorentzAngleTool", acc.popToolsAndMerge(PixelLorentzAngleCfg(flags)))
 
-    if flags.InDet.doDigitalROTCreation:
+    if flags.InDet.Tracking.doDigitalROTCreation:
         PixelClusterOnTrackTool = acc.popToolsAndMerge(InDetPixelClusterOnTrackToolDigitalCfg(flags, name, **kwargs))
     else:
         PixelClusterOnTrackTool = acc.popToolsAndMerge(InDetPixelClusterOnTrackToolNNSplittingCfg(flags, name, **kwargs))
@@ -280,8 +278,8 @@ def InDetRotCreatorCfg(flags, name='InDetRotCreator', **kwargs):
     for an_arg in  strip_args:
         kwargs.pop(an_arg, None)
 
-    use_broad_cluster_pix = flags.InDet.Tracking.useBroadPixClusterErrors and (not flags.InDet.doDBMstandalone)
-    use_broad_cluster_sct = flags.InDet.Tracking.useBroadSCTClusterErrors and (not flags.InDet.doDBMstandalone)
+    use_broad_cluster_pix = flags.InDet.Tracking.useBroadPixClusterErrors and not flags.InDet.Tracking.doDBMstandalone
+    use_broad_cluster_sct = flags.InDet.Tracking.useBroadSCTClusterErrors and not flags.InDet.Tracking.doDBMstandalone
 
     if 'ToolPixelCluster' not in kwargs :
         if use_broad_cluster_pix :
@@ -720,14 +718,14 @@ def InDetGlobalChi2FitterCfg(flags, name='InDetGlobalChi2Fitter', **kwargs) :
         InDetBroadRotCreator = acc.popToolsAndMerge(InDetBroadRotCreatorCfg(flags, **pix_cluster_on_track_args))
         kwargs.setdefault('BroadRotCreatorTool', InDetBroadRotCreator)
 
-    if flags.InDet.doDBMstandalone:
+    if flags.InDet.Tracking.doDBMstandalone:
         kwargs.setdefault('StraightLine', True)
         kwargs.setdefault('OutlierCut', 5)
         kwargs.setdefault('RecalibrateTRT', False)
         kwargs.setdefault('TRTExtensionCuts', False)
         kwargs.setdefault('TrackChi2PerNDFCut', 20)
 
-    if (flags.InDet.Tracking.useBroadPixClusterErrors or flags.InDet.Tracking.useBroadSCTClusterErrors) and not flags.InDet.doDBMstandalone:
+    if (flags.InDet.Tracking.useBroadPixClusterErrors or flags.InDet.Tracking.useBroadSCTClusterErrors) and not flags.InDet.Tracking.doDBMstandalone:
         kwargs.setdefault('RecalibrateSilicon', False)
 
     if flags.InDet.Tracking.doRobustReco:
@@ -737,7 +735,7 @@ def InDetGlobalChi2FitterCfg(flags, name='InDetGlobalChi2Fitter', **kwargs) :
     if flags.InDet.Tracking.doRobustReco or flags.Beam.Type == 'cosmics':
         kwargs.setdefault('MaxOutliers', 99)
 
-    if flags.Beam.Type == 'cosmics' or flags.InDet.Tracking.doBeamHalo:
+    if flags.Beam.Type == 'cosmics' or flags.InDet.Tracking.doBeamGas:
         kwargs.setdefault('Acceleration', False)
 
     if flags.InDet.Tracking.materialInteractions and not flags.BField.solenoidOn:
@@ -831,7 +829,7 @@ def InDetGlobalChi2FitterBaseCfg(flags, name='GlobalChi2FitterBase', **kwargs):
     kwargs.setdefault("TRTTubeHitCut", 1.75)
     kwargs.setdefault("MaxIterations", 40)
     kwargs.setdefault("Acceleration", True)
-    kwargs.setdefault("RecalculateDerivatives", flags.InDet.Tracking.doMinBias or flags.Beam.Type == 'cosmics' or flags.InDet.Tracking.doBeamHalo)
+    kwargs.setdefault("RecalculateDerivatives", flags.InDet.Tracking.doMinBias or flags.Beam.Type == 'cosmics' or flags.InDet.Tracking.doBeamGas)
     kwargs.setdefault("TRTExtensionCuts", True)
     kwargs.setdefault("TrackChi2PerNDFCut", 7)
 
@@ -1034,12 +1032,12 @@ def InDetTRT_TrackExtensionTool_xkCfg(flags, name='InDetTRT_ExtensionTool', **kw
 
     kwargs.setdefault("TRT_ClustersContainer", "TRT_DriftCircles")
     kwargs.setdefault("TrtManagerLocation", "TRT")
-    kwargs.setdefault("UseDriftRadius", not flags.InDet.Tracking.noTRTTiming)
+    kwargs.setdefault("UseDriftRadius", not flags.InDet.noTRTTiming)
     kwargs.setdefault("MinNumberDriftCircles", flags.InDet.Tracking.Pass.minTRTonTrk)
     kwargs.setdefault("ScaleHitUncertainty", 2)
     kwargs.setdefault("RoadWidth", 20.)
     kwargs.setdefault("UseParameterization", flags.InDet.Tracking.Pass.useParameterizedTRTCuts)
-    kwargs.setdefault("maxImpactParameter", 500 if flags.InDet.Tracking.doBeamHalo or flags.InDet.Tracking.doBeamGas else 50 )  # single beam running, open cuts
+    kwargs.setdefault("maxImpactParameter", 500 if flags.InDet.Tracking.doBeamGas else 50 )  # single beam running, open cuts
 
     if flags.InDet.Tracking.Pass.RoISeededBackTracking:
         kwargs.setdefault("minTRTSegmentpT", flags.InDet.Tracking.Pass.minSecondaryPt)
@@ -1323,14 +1321,8 @@ def InDetRotCreatorDBMCfg(flags, name='InDetRotCreatorDBM', **kwargs) :
     acc = ComponentAccumulator()
     if 'ToolPixelCluster' not in kwargs :
         pix_cluster_on_track_args = copyArgs(kwargs,['ClusterSplitProbabilityName','nameSuffix'])
-
-        if flags.Detector.EnablePixel and flags.InDet.loadRotCreator:
-            ToolPixelCluster = InDetPixelClusterOnTrackToolDBMCfg(flags, pix_cluster_on_track_args)
-            kwargs.setdefault('ToolPixelCluster', ToolPixelCluster)
-        else :
-            ToolPixelCluster= InDetPixelClusterOnTrackToolCfg(flags, **pix_cluster_on_track_args)
-            kwargs.setdefault('ToolPixelCluster', ToolPixelCluster)
-
+        ToolPixelCluster = InDetPixelClusterOnTrackToolDBMCfg(flags, pix_cluster_on_track_args)
+        kwargs.setdefault('ToolPixelCluster', ToolPixelCluster)
     acc.setPrivateTools(acc.popToolsAndMerge(InDetRotCreatorCfg(flags, name=name, **kwargs)))
     return acc
 
diff --git a/InnerDetector/InDetConfig/python/TrackingPassFlags.py b/InnerDetector/InDetConfig/python/TrackingPassFlags.py
index 671085f97e89c853aaefcb2a3685ae3e4b215753..8a5b2c70693a292f4da964ddac31b6c20406badd 100644
--- a/InnerDetector/InDetConfig/python/TrackingPassFlags.py
+++ b/InnerDetector/InDetConfig/python/TrackingPassFlags.py
@@ -229,13 +229,14 @@ def createTrackingPassFlags():
     
     icf.addFlag("maxShared", 1) # cut is now on number of shared modules
     icf.addFlag("minPixel", 0)
-    icf.addFlag("maxHoles", lambda pcf: maxHoles_ranges( pcf ) )
-    icf.addFlag("maxPixelHoles", lambda pcf: maxPixelHoles_ranges( pcf ) )
+    icf.addFlag("maxHoles", maxHoles_ranges )
+    icf.addFlag("maxPixelHoles", maxPixelHoles_ranges )
     icf.addFlag("maxSctHoles", 2)
     icf.addFlag("maxDoubleHoles", 1)
 
-    icf.addFlag("maxPrimaryImpact", maxPrimaryImpact_ranges )
-    icf.addFlag("maxZImpact", lambda pcf: maxZImpact_ranges( pcf ) )
+    icf.addFlag("maxPrimaryImpact", lambda pcf: 10.0 * Units.mm if pcf.InDet.Tracking.doBLS
+                else maxPrimaryImpact_ranges(pcf) )
+    icf.addFlag("maxZImpact", maxZImpact_ranges )
 
     # --- this is for the TRT-extension
     icf.addFlag("minTRTonTrk", 9)
@@ -255,7 +256,8 @@ def createTrackingPassFlags():
     icf.addFlag("seedFilterLevel", seedFilterLevel_ranges )
     icf.addFlag("maxTracksPerSharedPRD", 0)  ## is 0 ok for default??
     icf.addFlag("maxdImpactPPSSeeds", 2)
-    icf.addFlag("maxdImpactSSSSeeds", maxdImpactSSSSeeds_ranges )
+    icf.addFlag("maxdImpactSSSSeeds", lambda pcf: 10.0 * Units.mm if pcf.InDet.Tracking.doBLS
+                else maxdImpactSSSSeeds_ranges(pcf) )
     icf.addFlag("maxZSpacePointsPPPSeeds", 2700.0 * Units.mm )
     icf.addFlag("maxZSpacePointsSSSSeeds", 2700.0 * Units.mm )
     icf.addFlag("maxSeedsPerSP_Pixels", maxSeedsPerSP_Pixels_ranges )
@@ -294,10 +296,10 @@ def createTrackingPassFlags():
     icf.addFlag("minSecondaryTRTonTrk"      , minSecondaryTRTonTrk_ranges)
     icf.addFlag("minSecondaryTRTPrecFrac"   , minSecondaryTRTPrecFrac_ranges)
     
-    icf.addFlag("maxSecondaryHoles"         , lambda pcf: maxSecondaryHoles_ranges( pcf ) )
-    icf.addFlag("maxSecondaryPixelHoles"    , lambda pcf: maxSecondaryPixelHoles_ranges( pcf ))
-    icf.addFlag("maxSecondarySCTHoles"      , lambda pcf: maxSecondarySCTHoles_ranges( pcf ) )
-    icf.addFlag("maxSecondaryDoubleHoles"   , lambda pcf: maxSecondaryDoubleHoles_ranges( pcf ) )
+    icf.addFlag("maxSecondaryHoles"         , maxSecondaryHoles_ranges)
+    icf.addFlag("maxSecondaryPixelHoles"    , maxSecondaryPixelHoles_ranges)
+    icf.addFlag("maxSecondarySCTHoles"      , maxSecondarySCTHoles_ranges)
+    icf.addFlag("maxSecondaryDoubleHoles"   , maxSecondaryDoubleHoles_ranges)
     icf.addFlag("SecondarynHolesMax"        , 2 )
     icf.addFlag("SecondarynHolesGapMax"     , 2 )
 
@@ -490,17 +492,6 @@ def createITkLargeD0FastTrackingPassFlags():
 
     return icf
 
-### IBL mode ####################
-def createIBLTrackingPassFlags():
-    icf = createTrackingPassFlags()
-    icf.extension               = "IBL"
-    icf.seedFilterLevel         = 1
-    icf.minPT                   = 0.900 * Units.GeV
-    icf.minClusters             = 10
-    icf.maxPixelHoles           = 1
-
-    return icf
-
 ### HighPileUP mode ####################
 def createHighPileupTrackingPassFlags():
     icf = createTrackingPassFlags()
@@ -516,7 +507,7 @@ def createHighPileupTrackingPassFlags():
 def createMinBiasTrackingPassFlags():
     icf = createTrackingPassFlags()
     icf.extension                 = "MinBias"
-    icf.minPT = lambda pcf: (0.3 if  pcf.InDet.doHIP300 else 0.1) * Units.GeV
+    icf.minPT = lambda pcf: (0.3 if  pcf.InDet.Tracking.doHIP300 else 0.1) * Units.GeV
 
     icf.minClusters               = 5
     icf.minSecondaryPt            = 0.4 * Units.GeV  # Pt cut for back tracking + segment finding for these
@@ -857,7 +848,7 @@ def createPixelTrackingPassFlags():
         if pcf.Reco.EnableHI:
             return 0.1 * Units.GeV
         if pcf.InDet.Tracking.doMinBias:
-            if pcf.InDet.doHIP300:
+            if pcf.InDet.Tracking.doHIP300:
                 return 0.300 * Units.GeV
             else:
                 return 0.05 * Units.GeV
@@ -935,7 +926,7 @@ def createSCTTrackingPassFlags():
             if pcf.Beam.Type == "cosmics":
                 return cosmics
             if pcf.InDet.Tracking.doMinBias:
-                if pcf.InDet.doHIP300:
+                if pcf.InDet.Tracking.doHIP300:
                     return hion
                 else:
                     return minbias
diff --git a/InnerDetector/InDetConfig/python/TrackingSiPatternConfig.py b/InnerDetector/InDetConfig/python/TrackingSiPatternConfig.py
index 65a591b4bc19de9476948d3a002b1e9be6f3c0c3..dd89cf1763d5e1a9d72be5f037d19a5c1ce0a939 100644
--- a/InnerDetector/InDetConfig/python/TrackingSiPatternConfig.py
+++ b/InnerDetector/InDetConfig/python/TrackingSiPatternConfig.py
@@ -127,7 +127,7 @@ def SiCombinatorialTrackFinder_xkCfg(flags, name="InDetSiComTrackFinder", **kwar
     #
     # --- Local track finding using sdCaloSeededSSSpace point seed
     #
-    if flags.InDet.doDBMstandalone or flags.InDet.Tracking.Pass.extension == 'DBM':
+    if flags.InDet.Tracking.doDBMstandalone:
         RotCreator = acc.popToolsAndMerge(TC.InDetRotCreatorDBMCfg(flags))
         kwargs.setdefault("useSCT", False)
         kwargs.setdefault("MagneticFieldMode", "NoField")
@@ -149,9 +149,6 @@ def SiCombinatorialTrackFinder_xkCfg(flags, name="InDetSiComTrackFinder", **kwar
     kwargs.setdefault("PixelClusterContainer", "PixelClusters")
     kwargs.setdefault("SCT_ClusterContainer", "SCT_Clusters")
 
-    if flags.InDet.Tracking.Pass.extension == "":
-        kwargs.setdefault("writeHolesFromPattern", flags.InDet.Tracking.useHolesFromPattern)
-
     if flags.Detector.EnablePixel:
         from PixelConditionsTools.PixelConditionsSummaryConfig import PixelConditionsSummaryCfg
         kwargs.setdefault("PixelSummaryTool", acc.popToolsAndMerge(PixelConditionsSummaryCfg(flags)))
@@ -198,7 +195,7 @@ def SiTrackMaker_xkCfg(flags, name="InDetSiTrackMaker", InputCollections = None,
     kwargs.setdefault("nWeightedClustersMin", flags.InDet.Tracking.Pass.nWeightedClustersMin)
     kwargs.setdefault("CosmicTrack", flags.Beam.Type == 'cosmics')
     kwargs.setdefault("Xi2maxMultiTracks", flags.InDet.Tracking.Pass.Xi2max)
-    kwargs.setdefault("useSSSseedsFilter", flags.InDet.doSSSfilter)
+    kwargs.setdefault("useSSSseedsFilter", True)
     kwargs.setdefault("doMultiTracksProd", True)
     kwargs.setdefault("useBremModel", flags.InDet.Tracking.doBremRecovery and flags.InDet.Tracking.Pass.extension == "" and flags.Detector.EnableCalo)
     kwargs.setdefault("doCaloSeededBrem", flags.InDet.Tracking.doCaloSeededBrem and flags.Detector.EnableCalo)
@@ -250,7 +247,7 @@ def SiTrackMaker_xkCfg(flags, name="InDetSiTrackMaker", InputCollections = None,
     else:
         kwargs.setdefault("TrackPatternRecoInfo", 'SiSPSeededFinder')
 
-    if flags.InDet.doStoreTrackSeeds:
+    if flags.InDet.Tracking.doStoreTrackSeeds:
         from TrkConfig.AtlasExtrapolatorConfig import InDetExtrapolatorCfg
         kwargs.setdefault("SeedToTrackConversion", CompFactory.InDet.SeedToTrackConversionTool(
             name="InDet_SeedToTrackConversion",
@@ -279,11 +276,14 @@ def SiSPSeededTrackFinderCfg(flags, name="InDetSiSpTrackFinder", InputCollection
         # 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.Tracking.useZvertexTool and flags.InDet.Tracking.Pass.extension == "ForwardTracks")
+    if flags.InDet.Tracking.Pass.extension == "ForwardTracks":
+        kwargs.setdefault("useZvertexTool", flags.Reco.EnableHI) # For heavy-ion
+        kwargs.setdefault("useZBoundFinding", False)
+    elif flags.InDet.Tracking.Pass.extension == "DBM":
+        kwargs.setdefault("useZvertexTool", False)
         kwargs.setdefault("useZBoundFinding", False)
     else:
-        kwargs.setdefault("useZvertexTool", flags.InDet.Tracking.useZvertexTool)
+        kwargs.setdefault("useZvertexTool", flags.Reco.EnableHI) # For heavy-ion
         kwargs.setdefault("useZBoundFinding", flags.InDet.Tracking.Pass.doZBoundary)
     
     #
@@ -295,9 +295,6 @@ def SiSPSeededTrackFinderCfg(flags, name="InDetSiSpTrackFinder", InputCollection
     if flags.Reco.EnableHI:
         kwargs.setdefault("FreeClustersCut",2) #Heavy Ion optimization from Igor
 
-    if flags.InDet.Tracking.Pass.extension == "":
-        kwargs.setdefault("writeHolesFromPattern", flags.InDet.Tracking.useHolesFromPattern)
-
     InDetSiSPSeededTrackFinder = CompFactory.InDet.SiSPSeededTrackFinder(name = name+flags.InDet.Tracking.Pass.extension, **kwargs)
     acc.addEventAlgo(InDetSiSPSeededTrackFinder)
     return acc
@@ -441,7 +438,7 @@ def DenseEnvironmentsAmbiguityProcessorToolCfg(flags, name="InDetAmbiguityProces
         InDetTrackFitterAmbi = acc.popToolsAndMerge(TC.InDetTrackFitterCfg(flags, name='InDetTrackFitterAmbi'+flags.InDet.Tracking.Pass.extension, **fitter_args))
         fitter_list.append(InDetTrackFitterAmbi)
 
-    if flags.InDet.doRefitInvalidCov: 
+    if flags.InDet.Tracking.doRefitInvalidCov:
         if not flags.InDet.Tracking.Pass.extension=="":
             KalmanFitter = acc.popToolsAndMerge(TC.KalmanFitterCfg(flags, name='KalmanFitter'+flags.InDet.Tracking.Pass.extension))
             fitter_list.append(KalmanFitter)
@@ -476,7 +473,7 @@ def DenseEnvironmentsAmbiguityProcessorToolCfg(flags, name="InDetAmbiguityProces
     kwargs.setdefault("caloSeededBrem", flags.InDet.Tracking.doCaloSeededBrem and flags.Detector.EnableCalo and flags.InDet.Tracking.Pass.extension == "")
     kwargs.setdefault("pTminBrem", flags.InDet.Tracking.Pass.minPTBrem)
     kwargs.setdefault("RefitPrds", True)
-    kwargs.setdefault("KeepHolesFromBeforeRefit", flags.InDet.Tracking.useHolesFromPattern)
+    kwargs.setdefault("KeepHolesFromBeforeRefit", False)
 
     InDetAmbiguityProcessor = CompFactory.Trk.DenseEnvironmentsAmbiguityProcessorTool(name=name+flags.InDet.Tracking.Pass.extension, **kwargs)
     acc.setPrivateTools(InDetAmbiguityProcessor)