diff --git a/InnerDetector/InDetConfig/python/TrackingCutsFlags.py b/InnerDetector/InDetConfig/python/TrackingCutsFlags.py
index 9df1604c507286e8f7fe276927e241c0de290a08..8bb82e050c62bf4df6d97457b1eb2970521a26f2 100644
--- a/InnerDetector/InDetConfig/python/TrackingCutsFlags.py
+++ b/InnerDetector/InDetConfig/python/TrackingCutsFlags.py
@@ -209,12 +209,14 @@ def createTrackingFlags():
     icf.addFlag("minTRTonlyPt", minTRTonlyPt_ranges ) #Pt cut for TRT only
 
     # --- first set kinematic defaults
-    icf.addFlag("maxPT", 1000.0 * Units.TeV) # off!
+    icf.addFlag("maxPT", lambda pcf : 1000.0 * Units.TeV) # off!
     icf.addFlag("minEta", -1) # off!
     icf.addFlag("maxEta", 2.7)
 
     # --- cluster cuts
     icf.addFlag("minClusters", lambda pcf:
+                    3 if (pcf.Detector.RecoPixel and not pcf.Detector.RecoSCT) else
+                    6  if (pcf.Detector.RecoSCT and not pcf.Detector.RecoPixel) else
                     6 if pcf.InDet.doInnerDetectorCommissioning else
                     7 if pcf.InDet.doRobustReco else
                     minClusters_ranges( pcf ) ) # Igor 6, was 7
@@ -255,21 +257,21 @@ def createTrackingFlags():
     # --- general pattern cuts for NewTracking
 
     icf.addFlag("radMax", 600.0 * Units.mm) # default R cut for SP in SiSpacePointsSeedMaker
-    icf.addFlag("roadWidth", roadWidth_ranges)
+    icf.addFlag("roadWidth", roadWidth_ranges )
     icf.addFlag("nHolesMax", nHolesMax_ranges )
     icf.addFlag("nHolesGapMax", nHolesGapMax_ranges ) # not as tight as 2*maxDoubleHoles
     icf.addFlag("Xi2max", Xi2max_ranges )
-    icf.addFlag("Xi2maxNoAdd", Xi2maxNoAdd_ranges)
+    icf.addFlag("Xi2maxNoAdd", Xi2maxNoAdd_ranges )
     icf.addFlag("nWeightedClustersMin", 6)
 
     # --- seeding
-    icf.addFlag("seedFilterLevel", seedFilterLevel_ranges)
+    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("maxSeedsPerSP_Pixels", maxSeedsPerSP_Pixels_ranges)
-    icf.addFlag("maxSeedsPerSP_Strips", maxSeedsPerSP_Strips_ranges)
-    icf.addFlag("keepAllConfirmedPixelSeeds", keepAllConfirmedPixelSeeds_ranges)
+    icf.addFlag("maxdImpactSSSSeeds", maxdImpactSSSSeeds_ranges )
+    icf.addFlag("maxSeedsPerSP_Pixels", maxSeedsPerSP_Pixels_ranges )
+    icf.addFlag("maxSeedsPerSP_Strips", maxSeedsPerSP_Strips_ranges )
+    icf.addFlag("keepAllConfirmedPixelSeeds", keepAllConfirmedPixelSeeds_ranges )
     icf.addFlag("keepAllConfirmedStripSeeds", False)
 
     # --- min pt cut for brem
@@ -290,8 +292,8 @@ def createTrackingFlags():
     icf.addFlag("excludeUsedTRToutliers", excludeUsedTRToutliers_ranges)
 
     # --- triggers SegmentFinder and BackTracking
-    icf.addFlag("useParameterizedTRTCuts", useParameterizedTRTCuts_ranges)
-    icf.addFlag("useNewParameterizationTRT", useNewParameterizationTRT_ranges)
+    icf.addFlag("useParameterizedTRTCuts", useParameterizedTRTCuts_ranges )
+    icf.addFlag("useNewParameterizationTRT", useNewParameterizationTRT_ranges )
     icf.addFlag("maxSecondaryTRTShared", 0.7)
 
     # --- defaults for secondary tracking
@@ -324,7 +326,7 @@ def createTrackingFlags():
 
     icf.addFlag("rejectShortExtensions"     , lambda pcf:
                     False if pcf.InDet.doInnerDetectorCommissioning else
-                    rejectShortExtensions_ranges) # extension finder in back tracking
+                    rejectShortExtensions_ranges( pcf ) ) # extension finder in back tracking
                     
     icf.addFlag("SiExtensionCuts"           , SiExtensionCuts_ranges) # cut in Si Extensions before fit
 
@@ -336,10 +338,10 @@ def createTrackingFlags():
     icf.addFlag("RoISeededBackTracking"     , RoISeededBackTracking_ranges and ( lambda pcf : pcf.Detector.GeometryCalo ) )
     icf.addFlag("minRoIClusterEt"           , minRoIClusterEt_ranges)
 
-    icf.addFlag("usePixel"       		  , False)   ####use some existing flag???
-    icf.addFlag("useTRT"        		  , False)   ####use some existing flag???
-    icf.addFlag("useSCT"        		  , False)   ####use some existing flag???
-    icf.addFlag("useSCTSeeding"        	  , True)   ####use some existing flag???
+    icf.addFlag("usePixel"       		  , lambda pcf : pcf.Detector.RecoPixel )
+    icf.addFlag("useTRT"        		  , lambda pcf : pcf.Detector.RecoTRT )
+    icf.addFlag("useSCT"        		  , lambda pcf : pcf.Detector.RecoSCT )
+    icf.addFlag("useSCTSeeding"        	  	  , True )
 
     # --------------------------------------
     # --- TRT Only TRACKING cuts
@@ -352,14 +354,6 @@ def createTrackingFlags():
     icf.addFlag("useTRTonlyOldLogic"        , False)
 
 
-    #######################################################
-    # --- changes for Pixel/SCT segments
-    # TODO make it depend on the new flags as well
-    from AthenaCommon.DetFlags    import DetFlags
-    if ( DetFlags.haveRIO.pixel_on() and not DetFlags.haveRIO.SCT_on() ):
-        icf.minClusters = 3
-    elif ( DetFlags.haveRIO.SCT_on() and not DetFlags.haveRIO.pixel_on() ):
-        icf.minClusters = 6
     return icf
 
 
@@ -440,9 +434,9 @@ def createLargeD0TrackingFlags():
     icf.maxSctHoles        = 2
     icf.maxDoubleHoles     = 1
     icf.radMax             = 600. * Units.mm
-    icf.nHolesMax          = max_holes
-    icf.nHolesGapMax       = max_holes # not as tight as 2*maxDoubleHoles
-    icf.seedFilterLevel   = 1
+    icf.nHolesMax          = icf.maxHoles
+    icf.nHolesGapMax       = icf.maxHoles # not as tight as 2*maxDoubleHoles
+    icf.seedFilterLevel    = 1
     icf.maxTracksPerSharedPRD = 2
 
     return icf
@@ -468,7 +462,7 @@ def createR3LargeD0TrackingFlags():
     icf.maxSctHoles        = 1  
     icf.maxDoubleHoles     = 0  
     icf.radMax             = 600. * Units.mm
-    icf.nHolesMax          = max_holes
+    icf.nHolesMax          = icf.maxHoles
     icf.nHolesGapMax       = 1 
     icf.seedFilterLevel    = 1  
     icf.maxTracksPerSharedPRD   = 2
@@ -504,9 +498,9 @@ def createLowPtLargeD0TrackingFlags():
     icf.maxSctHoles        = 2
     icf.maxDoubleHoles     = 1
     icf.radMax             = 600. * Units.mm
-    icf.nHolesMax          = max_holes
-    icf.nHolesGapMax       = max_holes # not as tight as 2*maxDoubleHoles
-    icf.seedFilterLevel   = 1
+    icf.nHolesMax          = icf.maxHoles
+    icf.nHolesGapMax       = icf.maxHoles
+    icf.seedFilterLevel    = 1
     icf.maxTracksPerSharedPRD = 2
 
     return icf
@@ -526,8 +520,8 @@ def createLowPtTrackingFlags():
     icf.maxSctHoles      = 2
     icf.maxDoubleHoles   = 1
     icf.radMax           = 600. * Units.mm
-    icf.nHolesMax        = max_holes
-    icf.nHolesGapMax     = max_holes # not as tight as 2*maxDoubleHoles
+    icf.nHolesMax        = icf.maxHoles
+    icf.nHolesGapMax     = icf.maxHoles # not as tight as 2*maxDoubleHoles
     icf.maxPrimaryImpact = lambda pcf: 100.0 * Units.mm if pcf.InDet.doMinBias else maxPrimaryImpact_ranges( pcf ) 
     
     return icf
@@ -553,7 +547,7 @@ def createSLHCConversionFindingTrackingFlags():
 def createVeryLowPtTrackingFlags():
     icf = createTrackingFlags() #TODO consider using createLowPtTrackingFlags 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.maxPT            = lambda pcf : (1e6 if pcf.InDet.doMinBias  else  pcf.InDet.Tracking.minPT + 0.3) * Units.GeV # some overlap
     icf.minPT            = 0.050 * Units.GeV
     icf.minClusters      = 3
     icf.minSiNotShared   = 3
@@ -628,8 +622,8 @@ def createVeryForwardSLHCTracksTrackingFlags():
     icf.maxPixelHoles    = 1
     icf.maxSctHoles      = 0
     icf.maxDoubleHoles   = 0
-    icf.nHolesMax        = max_holes
-    icf.nHolesGapMax     = max_holes
+    icf.nHolesMax        = icf.maxHoles
+    icf.nHolesGapMax     = icf.maxHoles
     icf.radMax           = 600. * Units.mm
     icf.useTRT           = False # no TRT for forward tracks
 
@@ -769,8 +763,8 @@ def createPixelTrackingFlags():
                 return 0.05 * Units.GeV
         return 0.1 * Units.GeV
     
-    icf.minPT            = _minPt    
-    icf.minClusters      = 3
+    icf.minPT            = lambda pcf : _minPt    
+    icf.minClusters      = lambda pcf : 3
 
     def _pick( default, hion, cosmics):
         def _internal( pcf ):
@@ -781,24 +775,24 @@ def createPixelTrackingFlags():
             return default
         return _internal
     
-    icf.maxHoles         = _pick( default = 1, hion = 0, cosmics = 3 )
-    icf.maxPixelHoles    = _pick( default = 1, hion = 0, cosmics = 3 )
+    icf.maxHoles         = lambda pcf : _pick( default = 1, hion = 0, cosmics = 3 )
+    icf.maxPixelHoles    = lambda pcf : _pick( default = 1, hion = 0, cosmics = 3 )
     icf.maxSctHoles      = 0
     icf.maxDoubleHoles   = 0
     icf.minSiNotShared   = 3
     icf.maxShared        = 0
-    icf.seedFilterLevel  = _pick( default = 2, hion = 2, cosmics = 3 ) 
-    icf.nHolesMax        = _pick( default = 1, hion = 0, cosmics = 3 )
-    icf.nHolesGapMax     = _pick( default = 1, hion = 0, cosmics = 3 )
+    icf.seedFilterLevel  = lambda pcf : _pick( default = 2, hion = 2, cosmics = 3 ) 
+    icf.nHolesMax        = lambda pcf : _pick( default = 1, hion = 0, cosmics = 3 )
+    icf.nHolesGapMax     = lambda pcf : _pick( default = 1, hion = 0, cosmics = 3 )
     icf.useSCT           = False
     icf.useTRT           = False
     icf.minSecondaryPt   = 3 * Units.GeV
     icf.maxPrimaryImpact = lambda pcf: 1000. * Units.mm if pcf.Beam.Type =="cosmics" else 5. * Units.mm 
     icf.roadWidth        = lambda pcf: 60.0 if pcf.Beam.Type =="cosmics" else 12.0
-    icf.maxZImpact       = lambda pcf: 10000. * Units.mm if pcf.Beam.Type == "cosmics" else maxZImpact_ranges
-    icf.Xi2max           = lambda pcf: 60.0  if pcf.Beam.Type =="cosmics" else Xi2max_ranges
-    icf.Xi2maxNoAdd      = lambda pcf: 100.0  if pcf.Beam.Type =="cosmics" else Xi2maxNoAdd_ranges
-    icf.nWeightedClustersMin = lambda pcf: 6 if pcf.Beam.Type =="cosmics" else 6 # why change if detault is also 6!
+    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!
 
     return icf
 
@@ -845,9 +839,9 @@ def createSCTTrackingFlags():
             return default
         return _internal
 
-    icf.minPT            = _pick( default = 0.1 * Units.GeV, minbias=0.1 * Units.GeV, hion=0.3* Units.GeV, cosmics = 0.5* Units.GeV )
-    icf.maxPrimaryImpact = lambda pcf: 1000. * Units.mm if pcf.Beam.Type == "cosmics" else maxPrimaryImpact_ranges        
-    icf.maxZImpact       = lambda pcf: 10000. * Units.mm if pcf.Beam.Type == "cosmics" else maxZImpact_ranges
+    icf.minPT            = lambda pcf : _pick( default = 0.1 * Units.GeV, minbias=0.1 * Units.GeV, hion=0.3* Units.GeV, cosmics = 0.5* Units.GeV )
+    icf.maxPrimaryImpact = lambda pcf: 1000. * Units.mm if pcf.Beam.Type == "cosmics" else maxPrimaryImpact_ranges( pcf )        
+    icf.maxZImpact       = lambda pcf: 10000. * Units.mm if pcf.Beam.Type == "cosmics" else maxZImpact_ranges( pcf )
     maxHolesDefault = 2
     icf.maxHoles         = lambda pcf: 3 if pcf.Beam.Type == "cosmics" else maxHolesDefault
     icf.nHolesMax        = lambda pcf: 3 if pcf.Beam.Type == "cosmics" else maxHolesDefault
@@ -855,12 +849,12 @@ def createSCTTrackingFlags():
     icf.maxPixelHoles    = lambda pcf: 0 if pcf.Beam.Type == "cosmics" else 0
     icf.maxSctHoles      = lambda pcf: 3 if pcf.Beam.Type == "cosmics" else 2
     icf.maxShared        = 0
-    icf.roadWidth        = lambda pcf: 60. if pcf.Beam.Type == "cosmics" else roadWidth_ranges
+    icf.roadWidth        = lambda pcf: 60. if pcf.Beam.Type == "cosmics" else roadWidth_ranges( pcf )
     icf.seedFilterLevel  = lambda pcf: 3 if pcf.Beam.Type == "cosmics" else 2
-    icf.Xi2max           = lambda pcf: 60.0 if pcf.Beam.Type == "cosmics" else Xi2max_ranges
-    icf.Xi2maxNoAdd      = lambda pcf: 100.0 if pcf.Beam.Type == "cosmics" else Xi2maxNoAdd_ranges
+    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: 4 if pcf.InDet.doInnerDetectorCommissioning and pcf.Beam.Type == "cosmics" else 6    
-    icf.minClusters      = lambda pcf: 4 if pcf.InDet.doInnerDetectorCommissioning and pcf.Beam.Type == "cosmics" else minClusters_ranges 
+    icf.minClusters      = lambda pcf: 4 if pcf.InDet.doInnerDetectorCommissioning and pcf.Beam.Type == "cosmics" else minClusters_ranges( pcf ) 
     icf.minSiNotShared   = lambda pcf: 4 if pcf.InDet.doInnerDetectorCommissioning and pcf.Beam.Type == "cosmics" else 5
     
     return icf
@@ -880,29 +874,29 @@ def createTRTTrackingFlags():
 def createSCTandTRTTrackingFlags():
     icf = createTrackingFlags()
     icf.extension        = "SCTandTRT"
-    icf.minPT            = lambda pcf: 0.500 * Units.GeV if pcf.Beam.Type == "cosmics" else 0.4 * Units.GeV
+    icf.minPT            = lambda pcf: 0.5 * Units.GeV if pcf.Beam.Type == "cosmics" else 0.4 * Units.GeV
     icf.maxDoubleHoles   = 0
-    icf.minSiNotShared   = lambda pcf: 4 if pcf.InDet.doInnerDetectorCommissioning else 5 
+    icf.minSiNotShared   = lambda pcf : 4 if pcf.InDet.doInnerDetectorCommissioning else 5 
     icf.maxShared        = 0
     icf.seedFilterLevel  = 2
     icf.usePixel         = False
     icf.useTRT           = True
-    icf.maxPrimaryImpact = lambda pcf: 1000. * Units.mm if pcf.Beam.Type == "cosmics" else maxPrimaryImpact_ranges            
-    icf.maxZImpact       = lambda pcf: 10000. * Units.mm if pcf.Beam.Type == "cosmics" else maxZImpact_ranges    
+    icf.maxPrimaryImpact = lambda pcf : 1000. * Units.mm if pcf.Beam.Type == "cosmics" else maxPrimaryImpact_ranges( pcf )            
+    icf.maxZImpact       = lambda pcf : 10000. * Units.mm if pcf.Beam.Type == "cosmics" else maxZImpact_ranges( pcf )    
     maxHolesDefault     = 2
-    icf.maxHoles         = lambda pcf: 3 if pcf.Beam.Type == "cosmics" else maxHolesDefault
+    icf.maxHoles         = lambda pcf : 3 if pcf.Beam.Type == "cosmics" else maxHolesDefault
     icf.maxPixelHoles    = 0
-    icf.maxSctHoles      = lambda pcf: 3 if pcf.Beam.Type == "cosmics" else maxHolesDefault        
-    icf.nHolesMax        = lambda pcf: 3 if pcf.Beam.Type == "cosmics" else maxHolesDefault
-    icf.nHolesGapMax     = lambda pcf: 3 if pcf.Beam.Type == "cosmics" else maxHolesDefault    
+    icf.maxSctHoles      = lambda pcf : 3 if pcf.Beam.Type == "cosmics" else maxHolesDefault        
+    icf.nHolesMax        = lambda pcf : 3 if pcf.Beam.Type == "cosmics" else maxHolesDefault
+    icf.nHolesGapMax     = lambda pcf : 3 if pcf.Beam.Type == "cosmics" else maxHolesDefault    
     icf.maxShared        = 0
-    icf.roadWidth        = lambda pcf: 60. if pcf.Beam.Type == "cosmics" else roadWidth_ranges
-    icf.seedFilterLevel  = lambda pcf: 3 if pcf.Beam.Type == "cosmics" else 2
-    icf.Xi2max           = lambda pcf: 60.0 if pcf.Beam.Type == "cosmics" else Xi2max_ranges
-    icf.Xi2maxNoAdd      = lambda pcf: 100.0 if pcf.Beam.Type == "cosmics" else Xi2maxNoAdd_ranges
-    icf.nWeightedClustersMin = lambda pcf: 4 if pcf.InDet.doInnerDetectorCommissioning else 6
-    icf.minClusters      = lambda pcf:  4 if pcf.InDet.doInnerDetectorCommissioning else 7    
-    icf.rejectShortExtensions     = lambda pcf:  False if pcf.InDet.doInnerDetectorCommissioning else rejectShortExtensions_ranges
+    icf.roadWidth        = lambda pcf : 60. if pcf.Beam.Type == "cosmics" else roadWidth_ranges( pcf )
+    icf.seedFilterLevel  = lambda pcf : 3 if pcf.Beam.Type == "cosmics" else 2
+    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 : 4 if pcf.InDet.doInnerDetectorCommissioning else 6
+    icf.minClusters      = lambda pcf :  4 if pcf.InDet.doInnerDetectorCommissioning else 7    
+    icf.rejectShortExtensions     = lambda pcf :  False if pcf.InDet.doInnerDetectorCommissioning else rejectShortExtensions_ranges( pcf )
 
     return icf
 
@@ -926,13 +920,14 @@ def createDBMTrackingFlags():
     icf.minSiNotShared   = 0
     icf.maxShared        = 1000   # cut is now on number of shared modules
     icf.minPixel         = 0
-    icf.maxHoles         = 0
+    maxHolesDefault     = 0
+    icf.maxHoles         = maxHolesDefault
     icf.maxPixelHoles    = 0
     icf.maxSctHoles      = 0
     icf.maxDoubleHoles   = 0
     icf.radMax           = 600000. * Units.mm
-    icf.nHolesMax        = max_holes
-    icf.nHolesGapMax     = max_holes # not as tight as 2*maxDoubleHoles
+    icf.nHolesMax        = maxHolesDefault
+    icf.nHolesGapMax     = maxHolesDefault
     icf.useTRT           = False
     icf.useSCT           = False
     icf.usePixel         = True
@@ -965,9 +960,15 @@ if __name__ == "__main__":
   assert ConfigFlags.InDet.HeavyIonTracking.minSiNotShared == 7, "wrong cut value, overwrite"
   assert ConfigFlags.InDet.HeavyIonTracking.minRoIClusterEt == 0.0, "wrong cut value, overwrite"
 
-  print("ConfigFlags.InDet.SCTandTRTTracking.minPT",ConfigFlags.InDet.SCTandTRTTracking.minPT)
-  print("type(ConfigFlags.InDet.SCTandTRTTracking)",type(ConfigFlags.InDet.SCTandTRTTracking)) 
+  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.minSecondaryPt",ConfigFlags.InDet.Tracking.minSecondaryPt * 1.0)
+  print("type(ConfigFlags.InDet.Tracking.MinSecondaryPt)",type(ConfigFlags.InDet.Tracking.minSecondaryPt))
   
+  print("ConfigFlags.InDet.SCTandTRTTracking.roadWidth",ConfigFlags.InDet.SCTandTRTTracking.roadWidth * 1.0)
+
   #ConfigFlags.dump()
   print( "allok" )