diff --git a/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredNewTrackingCuts.py b/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredNewTrackingCuts.py
index c72803f5bcf265b18e91349293a0b4a0513e4e50..d60f3c50e494f28e5daf4dcb39ea4cd4d14e64a5 100755
--- a/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredNewTrackingCuts.py
+++ b/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredNewTrackingCuts.py
@@ -1,5 +1,6 @@
 # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 
+
 #########################################################################
 # ConfiguredNewtrackingCuts class
 #########################################################################
@@ -634,6 +635,35 @@ class ConfiguredNewTrackingCuts :
           self.__nWeightedClustersMin = 4
           self.__minSiNotShared   = 4
           self.__rejectShortExtensions     = False
+
+    if mode == "DBM":
+      self.__minEta                  = 3.05
+      self.__maxEta                  = 3.45
+      self.__Xi2maxNoAdd             = 10000
+      self.__Xi2max                  = 10000
+      self.__nWeightedClustersMin    = 0
+      self.__seedFilterLevel         = 1
+      self.__maxdImpactPPSSeeds      = 100000.0 * Units.mm
+      self.__maxdImpactSSSSeeds      = 100000.0 * Units.mm 
+      self.__maxPrimaryImpact        = 100000.0 * Units.mm  # low lumi
+      self.__maxZImpact              = 320000.0 * Units.mm  # Was 250 mm
+      self.__maxPT            = 100000.0 * Units.GeV # some overlap
+      self.__minPT            = 0.0 * Units.GeV
+      self.__minClusters      = 0
+      self.__minSiNotShared   = 0
+      self.__maxShared        = 1000   # cut is now on number of shared modules
+      self.__minPixel         = 0   
+      self.__maxHoles         = 10000
+      self.__maxPixelHoles    = 10000
+      self.__maxSctHoles      = 20000
+      self.__maxDoubleHoles   = 10000
+      self.__radMax           = 600000. * Units.mm
+      self.__nHolesMax        = self.__maxHoles
+      self.__nHolesGapMax     = self.__maxHoles # not as tight as 2*maxDoubleHoles
+      self.__useTRT           = False
+      self.__useSCT           = False
+      self.__usePixel         = True
+
         
 #        elif rec.Commissioning():
 #        self.__minClusters             = 7               # Igor 6, was 7
diff --git a/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredVertexingCuts.py b/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredVertexingCuts.py
index 52d8958cd216a242a0a3100a2751046612bdac9f..799bd280a61221123c16856ec248eb09c325225b 100644
--- a/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredVertexingCuts.py
+++ b/InnerDetector/InDetExample/InDetRecExample/python/ConfiguredVertexingCuts.py
@@ -72,7 +72,10 @@ class ConfiguredVertexingCuts :
    
 #cuts ONLY relevant to InDetPriVxFinder + Full or Fast or similar
    self.__chi2CutMethod             = 2
-   self.__enableMultipleVertices    = True      
+   self.__enableMultipleVertices    = True  
+
+   self.__doMaxTracksCut = False
+   self.__MaxTracks = 5000 #Not applied  anyway if above false
       
 #-----------------------------------------------------------------------
 #End of the default track pre-selection block
@@ -122,6 +125,12 @@ class ConfiguredVertexingCuts :
 
    if (self.__indetflags.doMinBias()):
      self.__minPT   = 100. * Units.MeV
+
+   if not (self.__indetflags.useBeamConstraint()) and not (mode == "HeavyIon") and not (mode == "SLHC"):
+     # Cut on multiplicity for IterativeFinder if no beamspot constraint, to avoid timeouts
+     self.__doMaxTracksCut = True
+     self.__MaxTracks = 3000
+     
        
 #--------------"Hight PileUp mode, setup for 2012 ?"---------------------
 #  Same Pt cut of 400, higher requirements for the track quality
@@ -282,6 +291,12 @@ class ConfiguredVertexingCuts :
   def  enableMultipleVertices(self): 
    return self.__enableMultipleVertices
 
+  def  doMaxTracksCut(self):
+    return self.__doMaxTracksCut
+     
+  def MaxTracks(self):
+    return self.__MaxTracks
+
 #-------------------------------------------------------------------------
 #  Print method dumping the summary of the current cut configuration
 #
diff --git a/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py b/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py
index e54af525c846c220b70c61d15cb0e72c1b147fb6..98feda302d90af6987a48bbcf680a92d51c8b881 100644
--- a/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py
+++ b/InnerDetector/InDetExample/InDetRecExample/python/InDetJobProperties.py
@@ -1,6 +1,7 @@
 # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
 
 
+
 #
 ## @file InDetRecExample/python/InDetJobProperties.py
 ## @purpose Python module to hold common flags to configure JobOptions
@@ -96,6 +97,12 @@ class InDetFlagsJobProperty(JobProperty):
 ##-----------------------------------------------------------------------------
 ## 1st step: define JobProperty classes
 
+
+class doDBM(InDetFlagsJobProperty):
+    statusOn     = True
+    allowedTypes = ['bool']
+    StoredValue  = False
+
 class doPrintConfigurables(InDetFlagsJobProperty):
     """if this is on the all the print InDetXYZ lines are activated"""
     statusOn     = True
@@ -509,10 +516,10 @@ class doVertexFinding(InDetFlagsJobProperty):
     StoredValue  = True
 
 class primaryVertexSetup(InDetFlagsJobProperty):
-    """ string to store the type of finder/fitter for pri vertexing, possible types: 'AdaptiveMultiFinding', 'IterativeFinding', 'AdaptiveFinding', 'DefaultFastFinding', 'DefaultFullFinding', 'DefaultKalmanFinding', 'DefaultAdaptiveFinding', 'DefaultVKalVrtFinding' """
+    """ string to store the type of finder/fitter for pri vertexing, possible types: 'AdaptiveMultiFinding', 'IterativeFinding', 'AdaptiveFinding', 'DefaultFastFinding', 'DefaultFullFinding', 'DefaultKalmanFinding', 'DefaultAdaptiveFinding', 'DefaultVKalVrtFinding' 'MedImgMultiFinding' """
     statusOn     = True
     allowedTypes = ['str']
-    allowedValues= [ 'AdaptiveMultiFinding', 'IterativeFinding', 'AdaptiveFinding', 'DefaultFastFinding', 'DefaultFullFinding', 'DefaultKalmanFinding', 'DefaultAdaptiveFinding', 'DefaultVKalVrtFinding', 'DummyVxFinder']
+    allowedValues= [ 'AdaptiveMultiFinding', 'IterativeFinding', 'AdaptiveFinding', 'DefaultFastFinding', 'DefaultFullFinding', 'DefaultKalmanFinding', 'DefaultAdaptiveFinding', 'DefaultVKalVrtFinding', 'DummyVxFinder', 'MedImgMultiFinding']
     StoredValue  = 'IterativeFinding'
 
 class primaryVertexCutSetup(InDetFlagsJobProperty):
@@ -1124,6 +1131,7 @@ class InDetJobProperties(JobPropertyContainer):
        self.checkThenSet(self.materialInteractionsType   , 2)      
        self.checkThenSet(self.selectSCTIntimeHits    , False)
        self.checkThenSet(self.cutLevel               , 8    )
+       self.checkThenSet(self.doInnerDetectorCommissioning, True)
 
     # --- special case heavy ion
     elif (rec.doHeavyIon()):
@@ -1403,7 +1411,8 @@ class InDetJobProperties(JobPropertyContainer):
     #    self.checkThenSet(self.doInnerDetectorCommissioning, True)
 
     if (self.doInnerDetectorCommissioning()):
-        self.checkThenSet(self.useBroadClusterErrors  , True)
+        if not (self.doCosmics()):
+           self.checkThenSet(self.useBroadClusterErrors  , True)
         self.checkThenSet(self.doSlimming             , False)
         self.checkThenSet(self.doTrackSegmentsPixel, True )
         self.checkThenSet(self.doTrackSegmentsSCT  , True )
@@ -1814,6 +1823,10 @@ class InDetJobProperties(JobPropertyContainer):
        print '*'
        print '* --------------------> Special reconstruction for IBL !'
        print '*'
+    if self.doDBM() :
+       print '*'
+       print '* --------------------> Special reconstruction for DBM !'
+       print '*'
     if self.doHighPileup() :
        print '*'
        print '* --------------------> Special reconstruction for high pile-up !'
@@ -2382,7 +2395,8 @@ _list_InDetJobProperties = [Enabled,
                             doTRTOccupancyEventInfo,
                             doNNToTCalibration,
                             keepAdditionalHitsOnTrackParticle,
-                            doSCTModuleVeto
+                            doSCTModuleVeto,
+                            doDBM
                            ]
 for j in _list_InDetJobProperties: 
     jobproperties.InDetJobProperties.add_JobProperty(j)
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetValidation.py b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetValidation.py
index a0c6fa8b203f2fc34f5bf40c140647aab805fb69..c84a7cedc225df27050a0a5f3a820ab64b44aec3 100755
--- a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetValidation.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredInDetValidation.py
@@ -1,3 +1,4 @@
+
 # Blocking the include for after first inclusion
 include.block ('InDetRecExample/ConfiguredInDetValidation.py')
 
@@ -73,6 +74,20 @@ class  ConfiguredInDetValidation:
         InDetRecStatistics.minREndSecondary   = 0.
         InDetRecStatistics.minZEndPrimary     = 0.
         InDetRecStatistics.minZEndSecondary   = 0.
+
+        
+      if InDetFlags.doDBM():
+        InDetRecStatistics.minPt              = .0*GeV
+        InDetRecStatistics.maxEta             = 9999.
+        InDetRecStatistics.maxRStartPrimary   = 9999999.
+        InDetRecStatistics.maxRStartSecondary = 9999999.
+        InDetRecStatistics.maxZStartPrimary   = 9999999.
+        InDetRecStatistics.maxZStartSecondary = 9999999.
+        InDetRecStatistics.minREndPrimary     = 0.
+        InDetRecStatistics.minREndSecondary   = 0.
+        InDetRecStatistics.minZEndPrimary     = 0.
+        InDetRecStatistics.minZEndSecondary   = 0.
+
         
       topSequence += InDetRecStatistics
       if (InDetFlags.doPrintConfigurables()):
@@ -109,6 +124,15 @@ class  ConfiguredInDetValidation:
         InDetTrackClusterAssValidation.MinNumberSpacePoints   = 4
       if InDetFlags.doBeamHalo():
         InDetTrackClusterAssValidation.MomentumCut            = 0
+
+      if InDetFlags.doDBM():
+        InDetTrackClusterAssValidation.MomentumCut            = 0
+        InDetTrackClusterAssValidation.RadiusMax              = 9999999.0
+        InDetTrackClusterAssValidation.RapidityCut            = 9999.9
+        InDetTrackClusterAssValidation.MinNumberClustersTRT   = 0
+        InDetTrackClusterAssValidation.MinNumberClusters      = 0
+        InDetTrackClusterAssValidation.MinNumberSpacePoints   = 0
+
  
       topSequence += InDetTrackClusterAssValidation
       if (InDetFlags.doPrintConfigurables()):
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py
index 6110bd8f5edd9094332a8dc7e2008b8009fc2771..1f33a87906cb7cee51cdf5608cbc891715818d36 100644
--- a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py
@@ -1,3 +1,4 @@
+
 # Blocking the include for after first inclusion
 include.block ('InDetRecExample/ConfiguredNewTrackingSiPattern.py')
 
@@ -50,7 +51,7 @@ class  ConfiguredNewTrackingSiPattern:
          #
          # --- Space points seeds maker, use different ones for cosmics and collisions
          #
-         if InDetFlags.doCosmics():
+         if (InDetFlags.doCosmics() and NewTrackingCuts.mode() != "DBM"):
             from SiSpacePointsSeedTool_xk.SiSpacePointsSeedTool_xkConf import InDet__SiSpacePointsSeedMaker_Cosmic as SiSpacePointsSeedMaker
          elif InDetFlags.doHeavyIon():
             from SiSpacePointsSeedTool_xk.SiSpacePointsSeedTool_xkConf import InDet__SiSpacePointsSeedMaker_HeavyIon as SiSpacePointsSeedMaker
@@ -101,7 +102,23 @@ class  ConfiguredNewTrackingSiPattern:
             InDetSiSpacePointsSeedMaker.etaMin             = NewTrackingCuts.minEta()
             InDetSiSpacePointsSeedMaker.etaMax             = NewTrackingCuts.maxEta()
             InDetSiSpacePointsSeedMaker.RapidityCut        = NewTrackingCuts.maxEta()
-            
+         if NewTrackingCuts.mode() == "DBM":
+            InDetSiSpacePointsSeedMaker.checkEta           = True
+            InDetSiSpacePointsSeedMaker.etaMin             = NewTrackingCuts.minEta()
+            InDetSiSpacePointsSeedMaker.etaMax             = NewTrackingCuts.maxEta()
+            InDetSiSpacePointsSeedMaker.pTmin = 0
+            InDetSiSpacePointsSeedMaker.mindRadius         = 0
+            InDetSiSpacePointsSeedMaker.maxdRadius = 100000
+            InDetSiSpacePointsSeedMaker.mindRadius = 0
+            InDetSiSpacePointsSeedMaker.maxdZver = 1000000
+            InDetSiSpacePointsSeedMaker.maxdZdRver = 1000000
+            InDetSiSpacePointsSeedMaker.maxdImpactSSS = 100000
+            InDetSiSpacePointsSeedMaker.maxdImpactPPS = 100000
+            InDetSiSpacePointsSeedMaker.minVRadius2 = 0
+            InDetSiSpacePointsSeedMaker.maxVRadius1 = 1000000
+            InDetSiSpacePointsSeedMaker.maxVRadius2 = 1000000
+            InDetSiSpacePointsSeedMaker.RapidityCut = 5.0
+
                     
          #InDetSiSpacePointsSeedMaker.OutputLevel = VERBOSE
          ToolSvc += InDetSiSpacePointsSeedMaker
@@ -142,6 +159,10 @@ class  ConfiguredNewTrackingSiPattern:
                                                                         useSCT             = NewTrackingCuts.useSCT(), 
                                                                         SCTManagerLocation = InDetKeys.SCT_Manager(),         
                                                                         RoadWidth          = NewTrackingCuts.RoadWidth())
+         if NewTrackingCuts.mode() == "DBM":
+            InDetSiDetElementsRoadMaker.MagneticFieldMode = "NoField"
+
+
          #InDetSiDetElementsRoadMaker.OutputLevel = VERBOSE
          ToolSvc += InDetSiDetElementsRoadMaker
          if (InDetFlags.doPrintConfigurables()):
@@ -151,7 +172,7 @@ class  ConfiguredNewTrackingSiPattern:
          # --- Local track finding using sdCaloSeededSSSpace point seed
          #
 
-         useBremMode = NewTrackingCuts.mode() == "Offline" or NewTrackingCuts.mode() == "SLHC"
+         useBremMode = NewTrackingCuts.mode() == "Offline" or NewTrackingCuts.mode() == "SLHC" or NewTrackingCuts.mode() == "DBM"
          from SiTrackMakerTool_xk.SiTrackMakerTool_xkConf import InDet__SiTrackMaker_xk as SiTrackMaker
          InDetSiTrackMaker = SiTrackMaker(name                      = 'InDetSiTrackMaker'+NewTrackingCuts.extension(),
                                           useSCT                    = NewTrackingCuts.useSCT(),
@@ -181,9 +202,16 @@ class  ConfiguredNewTrackingSiPattern:
                                           InputHadClusterContainerName = InDetKeys.HadCaloClusterROIContainer(), # "InDetCaloClusterROIs" 
                                           UseAssociationTool        = usePrdAssociationTool)
 					  
+         if NewTrackingCuts.mode() == "DBM":
+            InDetSiTrackMaker.MagneticFieldMode = "NoField"
+            InDetSiTrackMaker.pTminBrem = 0
+            InDetSiTrackMaker.pTminSSS = 0
+            InDetSiTrackMaker.useSCT = False
+            InDetSiTrackMaker.useBremModel = False
+            InDetSiTrackMaker.useSSSseedsFilter = False
+				
 					
-					
-         if InDetFlags.doCosmics():
+         if (InDetFlags.doCosmics() and NewTrackingCuts.mode() != "DBM"):
            InDetSiTrackMaker.TrackPatternRecoInfo = 'SiSpacePointsSeedMaker_Cosmic'
 	   
          elif InDetFlags.doHeavyIon():
@@ -247,7 +275,9 @@ class  ConfiguredNewTrackingSiPattern:
                                                                     useMBTSTimeDiff = InDetFlags.useMBTSTimeDiff(),
                                                                     useZBoundFinding = NewTrackingCuts.doZBoundary())   
 
-        
+         if NewTrackingCuts.mode() == "DBM":
+            InDetSiSPSeededTrackFinder.Zcut = 0
+
          #InDetSiSPSeededTrackFinder.OutputLevel =VERBOSE 
          topSequence += InDetSiSPSeededTrackFinder
          if (InDetFlags.doPrintConfigurables()):
@@ -370,6 +400,9 @@ class  ConfiguredNewTrackingSiPattern:
          # --- load Ambiguity Processor
          #
          useBremMode = NewTrackingCuts.mode() == "Offline" or NewTrackingCuts.mode() == "SLHC"
+         if NewTrackingCuts.mode() == "DBM":
+            InDetTrackFitter.StraightLine = True
+
 
          if InDetFlags.doTIDE_Ambi() and not (NewTrackingCuts.mode() == "ForwardSLHCTracks" or NewTrackingCuts.mode() == "ForwardTracks" or NewTrackingCuts.mode() == "PixelPrdAssociation"):
            from TrkAmbiguityProcessor.TrkAmbiguityProcessorConf import Trk__DenseEnvironmentsAmbiguityProcessorTool as ProcessorTool
@@ -389,7 +422,7 @@ class  ConfiguredNewTrackingSiPattern:
            InDetAmbiguityProcessor.sharedProbCut2            = InDetFlags.pixelClusterSplitProb2()
            InDetAmbiguityProcessor.SplitClusterAmbiguityMap  = InDetKeys.SplitClusterAmbiguityMap()
 
-         if NewTrackingCuts.mode() == "Pixel":
+         if NewTrackingCuts.mode() == "Pixel" or NewTrackingCuts.mode() == "DBM":
             InDetAmbiguityProcessor.SuppressHoleSearch = True
          if NewTrackingCuts.mode() == "LowPt" or NewTrackingCuts.mode() == "VeryLowPt" or (NewTrackingCuts.mode() == "Pixel" and InDetFlags.doMinBias()):
             InDetAmbiguityProcessor.Fitter = InDetTrackFitterLowPt
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetMonitoringAlignment.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetMonitoringAlignment.py
index 57c149a23b21c5ba4bc7cec16d0633b220cbe8bc..a7bacc3b2cf719242b48dba55105edde38aa7391 100755
--- a/InnerDetector/InDetExample/InDetRecExample/share/InDetMonitoringAlignment.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetMonitoringAlignment.py
@@ -13,168 +13,168 @@ InDetAlignMonReadESD = False
 # NOTE: Include the following BEFORE adding InDetAlignMonManager to topSequence.
 # include('InDetAlignmentMonitoring/InDetAlignmentMonitoring_vertexing.py')
 
-from InDetTrackSelectorTool.InDetTrackSelectorToolConf import InDet__InDetDetailedTrackSelectorTool
+
+from InDetTrackSelectionTool.InDetTrackSelectionToolConf import InDet__InDetTrackSelectionTool           #loading the InDetTrackSelectionTool
 from InDetAlignmentMonitoring.InDetAlignmentMonitoringConf import InDetAlignMon__TrackSelectionTool
+#Here are to load the track selection tool.
+#The alignMonTrackSelectionTool is a custom made trackselection tool that interface the monitoring tools to the track selection and make some 
+#high level cuts (if everything passes, comTime, EventPhase, PrimaryVertex ..)
+#It can call the InDetDetailedTrackSelectorTool or the InDetTrackSelectionTool, that actually make the track selection
+
+m_alignMonTrackSelectorTool     =[]
+m_alignMonTrackSelectionTool    =[]
+
 
-m_alignMonTrackSelectorTool  = []
-m_alignMonTrackSelectionTool = []
 
 if not jobproperties.Beam.beamType()=='cosmics': 
     #
-    # Collisions and single beam running    
+    # Collisions and single beam running
     #
-
-    # Default track selector used by most modules
-    m_alignMonTrackSelectorTool.append(InDet__InDetDetailedTrackSelectorTool(name                = "InDetAlignDetailedTrackSelectorTool",
-                                                                             pTMin               = 5000.0, #5 GeV
-                                                                             IPd0Max             = 100000.0, #no cut on d0 yet
-                                                                             IPz0Max             = 150.0, #actual cut is on sin(theta)*z0
-                                                                             nHitBLayer          = 0, #overriding default
-                                                                             nHitPix             = 0, #overriding default
-                                                                             nHitSct             = 0, #overriding default
-                                                                             nHitSi              = 9, #overriding default
-                                                                             nHitTrt             = 15,#overriding default
-                                                                             nSharedSct          = 0, #overriding default
-                                                                             InDetTestBLayerTool = InDetRecTestBLayerTool,
-                                                                             TrackSummaryTool    = InDetTrackSummaryTool,
-                                                                             Extrapolator        = InDetExtrapolator))
-
-    # Alternative track selector used by SivsTRT module which has same cuts as default but with no cuts on TRT hits
-    m_alignMonTrackSelectorTool.append(InDet__InDetDetailedTrackSelectorTool(name                = "InDetAlignDetailedTrackSelectorTool_noTRT",
-                                                                             pTMin               = 5000.0, #2 GeV
-                                                                             IPd0Max             = 100000.0, #no cut on d0 yet
-                                                                             IPz0Max             = 150.0, #actual cut is on sin(theta)*z0
-                                                                             nHitBLayer          = 0, #overriding default
-                                                                             nHitPix             = 0, #overriding default
-                                                                             nHitSct             = 0, #overriding default
-                                                                             nHitSi              = 9, #overriding default
-                                                                             nHitTrt             = 0,#overriding default
-                                                                             nSharedSct          = 0, #overriding default
-                                                                             InDetTestBLayerTool = InDetRecTestBLayerTool,
-                                                                             TrackSummaryTool    = InDetTrackSummaryTool,
-                                                                             Extrapolator        = InDetExtrapolator))
-
-
+    # Track selector that implement the Tracking CP supported cuts for Run2 using loosePrimary cut
+    m_alignMonTrackSelectorTool.append(InDet__InDetTrackSelectionTool(name         = "InDetTrackSelectionTool_LoosePrimary",
+                                                                         UseTrkTrackTools = True,
+                                                                         minPt = 5000,
+                                                                         maxD0 = 100000,
+                                                                         maxZ0SinTheta = 150,
+                                                                         CutLevel = "LoosePrimary",
+                                                                         TrackSummaryTool    = InDetTrackSummaryTool,
+                                                                         Extrapolator        = InDetExtrapolator))
+                                                                         
+    
+    # Track selector that implement the Tracking CP supported cuts for Run2 using tightPrimary cut
+    m_alignMonTrackSelectorTool.append(InDet__InDetTrackSelectionTool(name         = "InDetTrackSelectionTool_NoTRT",
+                                                                         UseTrkTrackTools = True,
+                                                                         minPt = 5000,
+                                                                         maxD0 = 100000,
+                                                                         maxZ0SinTheta = 150,
+                                                                         minNTrtHits = 0,
+                                                                         CutLevel = "LoosePrimary",
+                                                                         TrackSummaryTool    = InDetTrackSummaryTool,
+                                                                         Extrapolator        = InDetExtrapolator))
+    
     if jobproperties.Beam.beamType()=='singlebeam':
-        m_alignMonTrackSelectorTool[0].pTMin   = 0.0
-        m_alignMonTrackSelectorTool[0].IPz0Max = 100000.0
-        m_alignMonTrackSelectorTool[1].pTMin   = 0.0
-        m_alignMonTrackSelectorTool[1].IPz0Max = 100000.0
-
+        m_alignMonTrackSelectorTool[0].minPt   = 0.0
+        m_alignMonTrackSelectorTool[0].maxZ0SinTheta = 100000.0
+        m_alignMonTrackSelectorTool[1].minPt   = 0.0
+        m_alignMonTrackSelectorTool[1].maxZ0SinTheta = 100000.0
+    
+    #Adding the tools to the Tool Service
+        
     ToolSvc += m_alignMonTrackSelectorTool[0]
     ToolSvc += m_alignMonTrackSelectorTool[1]
-
-    if (InDetFlags.doPrintConfigurables()):
-        print m_alignMonTrackSelectorTool[0]
-        print m_alignMonTrackSelectorTool[1]
-
-    m_alignMonTrackSelectionTool.append(InDetAlignMon__TrackSelectionTool(name                = "InDetAlignMonTrackSelectionTool",
-                                                                          #PassAllTracks      = True, ## Uncomment this line to bypass track slection
-                                                                          TrackSelectorTool   = m_alignMonTrackSelectorTool[0]))
     
-    m_alignMonTrackSelectionTool.append(InDetAlignMon__TrackSelectionTool(name                = "InDetAlignMonTrackSelectionTool_noTRT",
-                                                                          #PassAllTracks      = True, ## Uncomment this line to bypass track slection
-                                                                          TrackSelectorTool   = m_alignMonTrackSelectorTool[1]))
     
+    #Here we start creating the custom Track Selection tools.
+    
+    m_alignMonTrackSelectionTool.append(InDetAlignMon__TrackSelectionTool(name                     = "InDetAlignMonTrackSelectionTool_LoosePrimary",
+                                                                          #PassAllTracks           = True, ## Uncomment this line to bypass track slection
+                                                                          IDTrackSelectionTool     = m_alignMonTrackSelectorTool[0],
+                                                                          UseIDTrackSelectionTool  = True))
+    
+    m_alignMonTrackSelectionTool.append(InDetAlignMon__TrackSelectionTool(name                     = "InDetAlignMonTrackSelectionTool_LoosePrimary_NoTRT",
+                                                                          #PassAllTracks           = True, ## Uncomment this line to bypass track slection
+                                                                          IDTrackSelectionTool     = m_alignMonTrackSelectorTool[1],
+                                                                          UseIDTrackSelectionTool  = True))
+
+    
+    #Adding the TrackSelectionTools to the Tool Service
     ToolSvc += m_alignMonTrackSelectionTool[0]
     ToolSvc += m_alignMonTrackSelectionTool[1]
-    if (InDetFlags.doPrintConfigurables()):
-        print m_alignMonTrackSelectionTool[0]
-        print m_alignMonTrackSelectionTool[1]
-
+        
+    #if (InDetFlags.doPrintConfigurables()):
+    print m_alignMonTrackSelectionTool[0]
+    print m_alignMonTrackSelectionTool[1]
+                
+    #Starting the creation of the monitoring tools
+        
+    
+    
     if not jobproperties.Beam.beamType()=='singlebeam':
+        
         from InDetAlignmentMonitoring.InDetAlignmentMonitoringConf import IDAlignMonSivsTRT
         InDetAlignMonSivsTRT_noTrig = IDAlignMonSivsTRT (name                                = "InDetAlignMonSivsTRT_noTrig",
-                                                         trackSelection                      = m_alignMonTrackSelectionTool[1])
+                                                         trackSelection                      = m_alignMonTrackSelectionTool[0])
+
         ToolSvc += InDetAlignMonSivsTRT_noTrig
         if (InDetFlags.doPrintConfigurables()):
             print InDetAlignMonSivsTRT_noTrig
 
+
         from InDetAlignmentMonitoring.InDetAlignmentMonitoringConf import InDetAlignMonBeamSpot
         InDetAlignMonBeamSpot_noTrig = InDetAlignMonBeamSpot (name                           = "InDetAlignMonBeamSpot_noTrig",
                                                               extrapolator                   = InDetExtrapolator,
                                                               vxContainerName                = InDetKeys.PrimaryVertices(),
                                                               vxContainerWithBeamConstraint  = InDetFlags.useBeamConstraint())
+        
         ToolSvc += InDetAlignMonBeamSpot_noTrig
         if (InDetFlags.doPrintConfigurables()):
             print InDetAlignMonBeamSpot_noTrig
 
-        # Note this is not included in the tool service
+
+        # Note this is not to be included in the tool service
         from InDetAlignmentMonitoring.InDetAlignmentMonitoringConf import IDAlignMonNtuple
         InDetAlignMonNtuple = IDAlignMonNtuple (name                                         = "InDetAlignMonNtuple",
                                                 tracksName                                   = InDetKeys.ExtendedTracks(),
                                                 tracksTruthName                              = InDetKeys.ExtendedTracksTruth())
-
-    
+        
 else:
     #
-    # Cosmic running    
+    # Cosmics Running
     #
+    
+    # Original set of selectors
 
     m_trackSelectorToolName          = ["InDetAlignCosmicTrackSelectorTool","InDetAlignCosmicTrackSelector_Half","PixTrackSelectorTool",
                                         "PixUpLowTrackSelectorTool","SCTTrackSelectorTool","SCTUpLowTrackSelectorTool","SiTrackSelectorTool",
                                         "SiUpSiLowTrackSelectorTool","TRTonlyTrackSelectorTool","TRTUpTRTLowTrackSelectorTool"]
-    m_nHitBLayer                     = [ 0, 1,2,1, 0,0, 2,1, 0, 0]
-    m_nHitPix                        = [ 3, 3,5,3, 0,0, 5,3, 0, 0]
-    m_nHitSct                        = [ 8, 8,0,0,14,8,14,8, 0, 0]
-    m_nHitTrt                        = [30,25,0,0, 0,0, 0,0,30,30]
+
+    
+    
+    m_minNInnermostLayerHits         = [ 0, 1,2,1, 0,0, 2,1, 0, 0]
+    m_minNPixelHits                  = [ 3, 3,5,3, 0,0, 5,3, 0, 0]
+    m_minNSctHits                    = [ 8, 8,0,0,14,8,14,8, 0, 0]
+    m_minNTrtHits                    = [30,25,0,0, 0,0, 0,0,30,30]
 
     m_alignMonTrackSelectionToolName = ["InDetAlignMonTrackSelectionTool","InDetAlignMonTrackSelectionTool_Half","PixTrackSelectionTool",
                                         "PixUpLowTrackSelectionTool","SCTTrackSelectionTool","SCTUpLowTrackSelectionTool","SiTrackSelectionTool",
-                                        "SiUpSiLowTrackSelectionTool","TRTonlyTrackSelectionTool","TRTUpTRTLowTrackSelectionTool" ]
+                                        "SiUpSiLowTrackSelectionTool","TRTonlyTrackSelectionTool","TRTUpTRTLowTrackSelectionTool"]
+
+    
     
     for i in range(10):        
-        m_alignMonTrackSelectorTool.append(InDet__InDetDetailedTrackSelectorTool(name                = m_trackSelectorToolName[i],
-                                                                                 pTMin               = 1000.0,#1 GeV
-                                                                                 IPd0Max             = 50.0,#no cut on d0 yet
-                                                                                 IPz0Max             = 1200.0,#actual cut is on sin(theta)*z0
-                                                                                 nHitBLayer          = m_nHitBLayer[i], 
-                                                                                 nHitPix             = m_nHitPix[i], 
-                                                                                 nHitSct             = m_nHitSct[i], 
-                                                                                 nHitSi              = 0, 
-                                                                                 nHitTrt             = m_nHitTrt[i], 
-                                                                                 nSharedSct          = 0,
-                                                                                 InDetTestBLayerTool = InDetRecTestBLayerTool,
-                                                                                 TrackSummaryTool    = InDetTrackSummaryTool,
-                                                                                 Extrapolator        = InDetExtrapolator))
+        m_alignMonTrackSelectorTool.append(InDet__InDetTrackSelectionTool(name                   = m_trackSelectorToolName[i],
+                                                                          minPt                  = 1000.0,#1 GeV
+                                                                          maxD0                  = 50.0,#no cut on d0 yet
+                                                                          maxZ0SinTheta          = 1200.0,#actual cut is on sin(theta)*z0
+                                                                          minNInnermostLayerHits = m_minNInnermostLayerHits[i], 
+                                                                          minNPixelHits          = m_minNPixelHits[i], 
+                                                                          minNSctHits            = m_minNSctHits[i], 
+                                                                          minNTrtHits            = m_minNTrtHits[i], 
+                                                                          UseTrkTrackTools       = True,
+                                                                          CutLevel               = "LoosePrimary",
+                                                                          TrackSummaryTool       = InDetTrackSummaryTool,
+                                                                          Extrapolator           = InDetExtrapolator))
         ToolSvc += m_alignMonTrackSelectorTool[i]
         if (InDetFlags.doPrintConfigurables()):
             print m_alignMonTrackSelectorTool[i]
-
+            
+        
     
+            
         m_alignMonTrackSelectionTool.append(InDetAlignMon__TrackSelectionTool(name                = m_alignMonTrackSelectionToolName[i],
-                                                                              ## Uncomment this line to bypass track slection
+                                                                              ## Uncomment this line to bypass track selection
                                                                               #PassAllTracks      = True,
                                                                               #DoEventPhaseCut    = True,
-                                                                              TrackSelectorTool   = m_alignMonTrackSelectorTool[i]))
+                                                                              UseIDTrackSelectionTool  = True,
+                                                                              IDTrackSelectionTool     = m_alignMonTrackSelectorTool[i]))
+        
         if jobproperties.Beam.beamType()=='singlebeam':
             m_alignMonTrackSelectionTool[i].PassAllTracks = True
 
         ToolSvc += m_alignMonTrackSelectionTool[i]
         if (InDetFlags.doPrintConfigurables()):
             print m_alignMonTrackSelectionTool[i]
-
-
-#
-# The Truth 
-#
-if InDetAlignMonDoTruth:
-    from TrkTruthToTrack.TrkTruthToTrackConf import Trk__TruthToTrack
-    InDetAlignTruthToTrackTool = Trk__TruthToTrack( name         = "InDetAlignTruthToTrackTool",
-                                                    Extrapolator = InDetExtrapolator )
-    ToolSvc += InDetAlignTruthToTrackTool
-    if (InDetFlags.doPrintConfigurables()):
-        print InDetAlignTruthToTrackTool
-        
-    from InDetAlignmentMonitoring.InDetAlignmentMonitoringConf import IDAlignMonTruthComparison
-    InDetAlignMonTruthComparison = IDAlignMonTruthComparison (name             = "InDetAlignMonTruthComparison",
-                                                              trackSelection   = m_alignMonTrackSelectionTool[1],
-                                                              tracksName       = InDetKeys.ExtendedTracks(),
-                                                              tracksTruthName  = InDetKeys.ExtendedTracksTruth(),
-                                                              TruthToTrackTool = InDetAlignTruthToTrackTool)
-    ToolSvc += InDetAlignMonTruthComparison
-    if (InDetFlags.doPrintConfigurables()):
-        print InDetAlignMonTruthComparison
+    
 
 #
 # Residuals
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecLoadTools.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecLoadTools.py
index 7906ae282860b9f30ebb18d17549f524f40f656c..fb41347d058575ec4da06e199727ca262b5e71d9 100755
--- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecLoadTools.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecLoadTools.py
@@ -1,3 +1,4 @@
+
 # ------------------------------------------------------------
 # 
 # ----------- Loading the Tracking Services 
@@ -110,7 +111,7 @@ if InDetFlags.loadRotCreator():
         # tool to always make conservative pixel cluster errors
         from SiClusterOnTrackTool.SiClusterOnTrackToolConf import InDet__PixelClusterOnTrackTool
         PixelClusterOnTrackTool = InDet__PixelClusterOnTrackTool("InDetPixelClusterOnTrackTool",
-                                                                 DisableDistortions = InDetFlags.doFatras(),
+                                                                 DisableDistortions = (InDetFlags.doFatras() or InDetFlags.doDBM()),
                                                                  applyNNcorrection = ( InDetFlags.doPixelClusterSplitting() and
                                                                                        InDetFlags.pixelClusterSplittingType() == 'NeuralNet'),
                                                                  NNIBLcorrection = ( InDetFlags.doPixelClusterSplitting() and
@@ -122,7 +123,7 @@ if InDetFlags.loadRotCreator():
         if InDetFlags.doPixelClusterSplitting() and InDetFlags.pixelClusterSplittingType() == 'NeuralNet':
             PixelClusterOnTrackTool.NnClusterizationFactory  = NnClusterizationFactory
 
-        if InDetFlags.doCosmics():
+        if InDetFlags.doCosmics() or  InDetFlags.doDBM():
           PixelClusterOnTrackTool.ErrorStrategy = 0   
           PixelClusterOnTrackTool.PositionStrategy = 0 
 
@@ -163,7 +164,7 @@ if InDetFlags.loadRotCreator():
         from SiClusterOnTrackTool.SiClusterOnTrackToolConf import InDet__PixelClusterOnTrackTool
         BroadPixelClusterOnTrackTool = InDet__PixelClusterOnTrackTool("InDetBroadPixelClusterOnTrackTool",
                                                                       ErrorStrategy      = 0,
-                                                                      DisableDistortions = InDetFlags.doFatras(),
+                                                                      DisableDistortions = (InDetFlags.doFatras() or InDetFlags.doDBM()),
                                                                       applyNNcorrection = ( InDetFlags.doPixelClusterSplitting() and
                                                                                             InDetFlags.pixelClusterSplittingType() == 'NeuralNet'),
                                                                       NNIBLcorrection = ( InDetFlags.doPixelClusterSplitting() and
@@ -172,6 +173,9 @@ if InDetFlags.loadRotCreator():
                                                                       RunningTIDE_Ambi = InDetFlags.doTIDE_Ambi()
                                                                      )
 
+        if InDetFlags.doDBM():
+            BroadPixelClusterOnTrackTool.PositionStrategy = 0
+
         if InDetFlags.doPixelClusterSplitting() and InDetFlags.pixelClusterSplittingType() == 'NeuralNet':
             BroadPixelClusterOnTrackTool.NnClusterizationFactory  = NnClusterizationFactory
         
@@ -360,6 +364,9 @@ if InDetFlags.loadExtrapolator():
       InDetMaterialUpdator.EnergyLoss          = False
       InDetMaterialUpdator.ForceMomentum       = True
       InDetMaterialUpdator.ForcedMomentumValue = 1000*MeV
+    if InDetFlags.doDBM():
+        InDetMaterialUpdator.EnergyLoss          = False
+        InDetMaterialUpdator.ForceMomentum       = False
 
     ToolSvc += InDetMaterialUpdator
 
@@ -572,6 +579,13 @@ if InDetFlags.loadFitter():
                                                  RecalculateDerivatives= InDetFlags.doMinBias() or InDetFlags.doCosmics() or InDetFlags.doBeamHalo(),
                                                  TRTExtensionCuts      = True,
                                                  TrackChi2PerNDFCut    = 7)
+        if InDetFlags.doDBM():
+            InDetTrackFitter.StraightLine = True
+            InDetTrackFitter.OutlierCut = 5
+            InDetTrackFitter.RecalibrateTRT = False
+            InDetTrackFitter.TRTExtensionCuts = False
+            InDetTrackFitter.TrackChi2PerNDFCut = 20
+
         if InDetFlags.doRefit() or use_broad_cluster_any == True: 
             InDetTrackFitter.RecalibrateSilicon = False
         if InDetFlags.doRefit():
@@ -695,9 +709,10 @@ if InDetFlags.loadFitter():
         InDetTrackFitterTRT=InDetTrackFitter
         InDetTrackFitterLowPt=InDetTrackFitter
     else:
-        ToolSvc += InDetTrackFitterTRT
-        if (InDetFlags.doPrintConfigurables()):
-            print InDetTrackFitterTRT
+        if not InDetFlags.doDBM():
+            ToolSvc += InDetTrackFitterTRT
+            if (InDetFlags.doPrintConfigurables()):
+                print InDetTrackFitterTRT
         if InDetFlags.doLowPt() or (InDetFlags.doTrackSegmentsPixel() and InDetFlags.doMinBias()):
             ToolSvc+=InDetTrackFitterLowPt
             if (InDetFlags.doPrintConfigurables()):
@@ -944,14 +959,15 @@ if InDetFlags.doPattern():
     #
     # TRT detector elements road builder
     #
-    from TRT_DetElementsRoadTool_xk.TRT_DetElementsRoadTool_xkConf import InDet__TRT_DetElementsRoadMaker_xk
-    InDetTRTDetElementsRoadMaker =  InDet__TRT_DetElementsRoadMaker_xk(name                  = 'InDetTRT_RoadMaker',
-                                                                       TRTManagerLocation    = InDetKeys.TRT_Manager(),
-                                                                       RoadWidth             = 20.,
-                                                                       PropagatorTool        = InDetPatternPropagator)
-    ToolSvc += InDetTRTDetElementsRoadMaker
-    if (InDetFlags.doPrintConfigurables()):
-      print      InDetTRTDetElementsRoadMaker
+    if not InDetFlags.doDBM():
+        from TRT_DetElementsRoadTool_xk.TRT_DetElementsRoadTool_xkConf import InDet__TRT_DetElementsRoadMaker_xk
+        InDetTRTDetElementsRoadMaker =  InDet__TRT_DetElementsRoadMaker_xk(name                  = 'InDetTRT_RoadMaker',
+                                                                           TRTManagerLocation    = InDetKeys.TRT_Manager(),
+                                                                           RoadWidth             = 20.,
+                                                                           PropagatorTool        = InDetPatternPropagator)
+        ToolSvc += InDetTRTDetElementsRoadMaker
+        if (InDetFlags.doPrintConfigurables()):
+            print      InDetTRTDetElementsRoadMaker
 
     #
     # TRT segment minimum number of drift circles tool
@@ -985,7 +1001,8 @@ if InDetFlags.doPattern():
                                                                  SCTManagerLocation    = InDetKeys.SCT_Manager(),
                                                                  PixelClusterContainer = InDetKeys.PixelClusters(),
                                                                  SCT_ClusterContainer  = InDetKeys.SCT_Clusters())
-
+    if InDetFlags.doDBM():
+        InDetSiComTrackFinder.MagneticFieldMode     =  "NoField"
     if (DetFlags.haveRIO.SCT_on()):
       InDetSiComTrackFinder.SctSummarySvc = InDetSCT_ConditionsSummarySvc
     else:
@@ -1213,11 +1230,34 @@ if (InDetFlags.doVertexFinding() or InDetFlags.doVertexFindingForMonitoring()) o
   #
   if (InDetFlags.primaryVertexSetup() == 'DefaultAdaptiveFinding' or
       InDetFlags.primaryVertexSetup() == 'IterativeFinding' or
-      InDetFlags.primaryVertexSetup() == 'AdaptiveMultiFinding'):
+      InDetFlags.primaryVertexSetup() == 'AdaptiveMultiFinding' or
+      InDetFlags.primaryVertexSetup() == 'MedImgMultiFinding' ):
     #
     # --- load configured Seed finder
     #
-    if (InDetFlags.doPrimaryVertex3DFinding()):
+    if (InDetFlags.primaryVertexSetup() == 'MedImgMultiFinding'):
+      from TrkVertexSeedFinderUtils.TrkVertexSeedFinderUtilsConf import Trk__LocalMax1DClusterFinder, Trk__VertexImageMaker
+      InDetMedImgClusterFinder = Trk__LocalMax1DClusterFinder( name            = "InDetMedImgClusterFinder",
+                                                               weightThreshold = 0.02,
+                                                               mergeParameter  = 0.5,
+                                                               clusterWindowXY = 3.0 )
+      ToolSvc += InDetMedImgClusterFinder
+      InDetMedImgMaker = Trk__VertexImageMaker( name                           = "InDetMedImgMaker",
+                                                xbins                          = 16,
+                                                ybins                          = 16,
+                                                zbins                          = 1024,
+                                                xrange                         = 2.0,
+                                                yrange                         = 2.0,
+                                                zrange                         = 200.0,
+                                                cutoffFreqDenominator_xy       = 2,
+                                                cutoffFreqDenominator_z        = 1 )
+      ToolSvc += InDetMedImgMaker
+      from TrkVertexSeedFinderTools.TrkVertexSeedFinderToolsConf import Trk__ImagingSeedFinder
+      InDetVtxSeedFinder = Trk__ImagingSeedFinder( name                        = "InDetMedImgSeedFinder",
+                                                      VertexCluster            = InDetMedImgClusterFinder,
+                                                      VertexImageMaker         = InDetMedImgMaker )
+
+    elif (InDetFlags.doPrimaryVertex3DFinding()):
       from TrkVertexSeedFinderTools.TrkVertexSeedFinderToolsConf import Trk__CrossDistancesSeedFinder
       InDetVtxSeedFinder = Trk__CrossDistancesSeedFinder(name              = "InDetCrossDistancesSeedFinder",
                                                          trackdistcutoff   = 1.,
@@ -1369,7 +1409,8 @@ if (InDetFlags.doVertexFinding() or InDetFlags.doVertexFindingForMonitoring()) o
   # load smoother in case of 'DefaultKalmanFinding', 'DefaultAdaptiveFinding' or 'IterativeFinding'
   if (InDetFlags.primaryVertexSetup() == 'DefaultKalmanFinding' or
       InDetFlags.primaryVertexSetup() == 'DefaultAdaptiveFinding' or
-      InDetFlags.primaryVertexSetup() == 'IterativeFinding'):
+      InDetFlags.primaryVertexSetup() == 'IterativeFinding' or
+      InDetFlags.primaryVertexSetup() == 'MedImgMultiFinding' ):
     from TrkVertexFitters.TrkVertexFittersConf import Trk__SequentialVertexSmoother
     InDetVertexSmoother = Trk__SequentialVertexSmoother(name = "InDetSequentialVertexSmoother")
     ToolSvc += InDetVertexSmoother
@@ -1408,7 +1449,9 @@ if (InDetFlags.doVertexFinding() or InDetFlags.doVertexFindingForMonitoring()) o
                                                     XAODConverter = InDetVxEdmCnv
                                                     )
 
-  elif InDetFlags.primaryVertexSetup() == 'DefaultAdaptiveFinding' or InDetFlags.primaryVertexSetup() == 'IterativeFinding':
+  elif (InDetFlags.primaryVertexSetup() == 'DefaultAdaptiveFinding' or 
+        InDetFlags.primaryVertexSetup() == 'IterativeFinding' or
+        InDetFlags.primaryVertexSetup() == 'MedImgMultiFinding') : 
     #
     # --- load configured adaptive vertex fitter
     #
@@ -1451,7 +1494,8 @@ if (InDetFlags.doVertexFinding() or InDetFlags.doVertexFindingForMonitoring()) o
 
   if (not (InDetFlags.primaryVertexSetup() == 'IterativeFinding') and
       not (InDetFlags.primaryVertexSetup() == 'AdaptiveMultiFinding') and
-      not (InDetFlags.primaryVertexSetup() == 'DefaultVKalVrtFinding')):
+      not (InDetFlags.primaryVertexSetup() == 'DefaultVKalVrtFinding') and
+      not (InDetFlags.primaryVertexSetup() == 'MedImgMultiFinding' ) ):
     #
     # --- load primary vertex finder tool
     #
@@ -1466,6 +1510,21 @@ if (InDetFlags.doVertexFinding() or InDetFlags.doVertexFindingForMonitoring()) o
                                                        useBeamConstraint = InDetFlags.useBeamConstraint(),
                                                        InternalEdmFactory= InDetVxEdmCnv)
 
+  elif (InDetFlags.primaryVertexSetup() == 'MedImgMultiFinding') :
+    #
+    # --- load Medical Imaging seeded multi vertex finder
+    #
+    from InDetPriVxFinderTool.InDetPriVxFinderToolConf import InDet__InDetMultiPriVxFinderTool
+    InDetPriVxFinderTool = InDet__InDetMultiPriVxFinderTool( name                        = "InDetMedImgMultiPriVxFinderTool",
+                                                            VertexFitterTool             = InDetVxFitterTool,
+                                                            TrackSelector                = InDetTrackSelectorTool,
+                                                            SeedFinder                   = InDetVtxSeedFinder,
+                                                            ImpactPoint3dEstimator       = InDetImpactPoint3dEstimator,
+                                                            useBeamConstraint            = InDetFlags.useBeamConstraint(),
+                                                            significanceCutSeeding       = 12,
+                                                            maxVertices                  = 200,
+                                                            InternalEdmFactory           = InDetVxEdmCnv)
+
   elif InDetFlags.primaryVertexSetup() == 'IterativeFinding':
     #
     # --- load adaptive primary vertex finder
@@ -1481,7 +1540,10 @@ if (InDetFlags.doVertexFinding() or InDetFlags.doVertexFindingForMonitoring()) o
                                                                 significanceCutSeeding   = 12,
                                                                 maximumChi2cutForSeeding = 49,
                                                                 maxVertices              = 200,
-                                                                InternalEdmFactory       = InDetVxEdmCnv)
+                                                                InternalEdmFactory       = InDetVxEdmCnv,
+                                                                doMaxTracksCut           = InDetPrimaryVertexingCuts.doMaxTracksCut(),
+                                                                MaxTracks                = InDetPrimaryVertexingCuts.MaxTracks()
+                                                                )
 
   elif InDetFlags.primaryVertexSetup() == 'AdaptiveMultiFinding':
     #
@@ -1500,7 +1562,7 @@ if (InDetFlags.doVertexFinding() or InDetFlags.doVertexFindingForMonitoring()) o
   elif InDetFlags.primaryVertexSetup() == 'DefaultVKalVrtFinding':
     #
     # --- load vkal vertex finder tool
-    #
+    #  
     from InDetVKalPriVxFinderTool.InDetVKalPriVxFinderTool import InDet__InDetVKalPriVxFinderTool
     InDetPriVxFinderTool = InDet__InDetVKalPriVxFinderTool(name                   = "InDetVKalPriVxFinder",
                                                            TrackSummaryTool       = InDetTrackSummaryTool,
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecNtupleCreation.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecNtupleCreation.py
index d3376f51befbb84ffba89d4391b534164a3ba477..ac12f82c1723f287b47b8cdc84cef67440b4c26d 100644
--- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecNtupleCreation.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecNtupleCreation.py
@@ -1,3 +1,4 @@
+
 # --------------------------------------------      
 #
 # --- produce tracking ntuple
@@ -303,52 +304,53 @@ if InDetFlags.doNtupleCreation():
 # --------------------------------------------      
 if InDetFlags.doStandardPlots():
   if len(TrackCollectionKeys) > 0:
+    if not InDetFlags.doDBM():
     #
     # -- track selections 
     #
     # for standard good quality cuts
-    from InDetTrackSelectorTool.InDetTrackSelectorToolConf import InDet__InDetDetailedTrackSelectorTool
-    InDetTrackSelectorToolGood = InDet__InDetDetailedTrackSelectorTool(name                 = "InDetDetailedTrackSelectorToolGood",
-                                                                       pTMin                = 0,
-                                                                       d0MaxPreselection    = 10,
-                                                                       IPd0Max              = 2,
-                                                                       IPz0Max              = 10000,
-                                                                       etaMax               = 2.5,
-                                                                       nHitSi               = 7,
-                                                                       nHitBLayer           = 0,
-                                                                       nHitPix              = 0,
-                                                                       nHitTrtHighEFractionMax             = 1,
-                                                                       nHitTrtHighEFractionWithOutliersMax = 1,
-                                                                       useTrackSummaryInfo  = True,
-                                                                       InDetTestBLayerTool  = InDetRecTestBLayerTool,
-                                                                       TrackSummaryTool     = InDetTrackSummaryTool,
-                                                                       Extrapolator         = InDetExtrapolator,
-                                                                       TrtMaxEtaAcceptance  = 1.9)
-
-    ToolSvc+=InDetTrackSelectorToolGood
-    if (InDetFlags.doPrintConfigurables()):
-      print      InDetTrackSelectorToolGood
+      from InDetTrackSelectorTool.InDetTrackSelectorToolConf import InDet__InDetDetailedTrackSelectorTool
+      InDetTrackSelectorToolGood = InDet__InDetDetailedTrackSelectorTool(name                 = "InDetDetailedTrackSelectorToolGood",
+                                                                         pTMin                = 0,
+                                                                         d0MaxPreselection    = 10,
+                                                                         IPd0Max              = 2,
+                                                                         IPz0Max              = 10000,
+                                                                         etaMax               = 2.5,
+                                                                         nHitSi               = 7,
+                                                                         nHitBLayer           = 0,
+                                                                         nHitPix              = 0,
+                                                                         nHitTrtHighEFractionMax             = 1,
+                                                                         nHitTrtHighEFractionWithOutliersMax = 1,
+                                                                         useTrackSummaryInfo  = True,
+                                                                         InDetTestBLayerTool  = InDetRecTestBLayerTool,
+                                                                         TrackSummaryTool     = InDetTrackSummaryTool,
+                                                                         Extrapolator         = InDetExtrapolator,
+                                                                         TrtMaxEtaAcceptance  = 1.9)
+
+      ToolSvc+=InDetTrackSelectorToolGood
+      if (InDetFlags.doPrintConfigurables()):
+        print      InDetTrackSelectorToolGood
 
     # for track selection as done by b-tagging group
-    InDetTrackSelectorToolBtag = InDet__InDetDetailedTrackSelectorTool(name                 = "InDetDetailedTrackSelectorToolBtag",
-                                                                       pTMin                = 0,
-                                                                       IPd0Max              = 1,
-                                                                       d0MaxPreselection    = 10,
-                                                                       IPz0Max              = 40000,
-                                                                       etaMax               = 2.5,
-                                                                       nHitBLayer           = 1,
-                                                                       nHitPix              = 2,
-                                                                       nHitSi               = 7,
-                                                                       nHitTrtHighEFractionMax             = 1,
-                                                                       nHitTrtHighEFractionWithOutliersMax = 1,
-                                                                       # -- do not give tool ! InDetTestBLayerTool  = InDetRecTestBLayerTool,
-                                                                       TrackSummaryTool     = InDetTrackSummaryTool,
-                                                                       Extrapolator         = InDetExtrapolator,
-                                                                       TrtMaxEtaAcceptance  = 1.9)       
-
-    ToolSvc+=InDetTrackSelectorToolBtag
-    if (InDetFlags.doPrintConfigurables()):
-      print  InDetTrackSelectorToolBtag
+      InDetTrackSelectorToolBtag = InDet__InDetDetailedTrackSelectorTool(name                 = "InDetDetailedTrackSelectorToolBtag",
+                                                                         pTMin                = 0,
+                                                                         IPd0Max              = 1,
+                                                                         d0MaxPreselection    = 10,
+                                                                         IPz0Max              = 40000,
+                                                                         etaMax               = 2.5,
+                                                                         nHitBLayer           = 1,
+                                                                         nHitPix              = 2,
+                                                                         nHitSi               = 7,
+                                                                         nHitTrtHighEFractionMax             = 1,
+                                                                         nHitTrtHighEFractionWithOutliersMax = 1,
+                                                                         # -- do not give tool ! InDetTestBLayerTool  = InDetRecTestBLayerTool,
+                                                                         TrackSummaryTool     = InDetTrackSummaryTool,
+                                                                         Extrapolator         = InDetExtrapolator,
+                                                                         TrtMaxEtaAcceptance  = 1.9)       
+
+      ToolSvc+=InDetTrackSelectorToolBtag
+      if (InDetFlags.doPrintConfigurables()):
+        print  InDetTrackSelectorToolBtag
 
     # --- add an AthenaMonManager algorithm to the list of algorithms to be ran
     from AthenaMonitoring.AthenaMonitoringConf import AthenaMonManager
@@ -398,42 +400,43 @@ if InDetFlags.doStandardPlots():
     InDetTrackPerfMonManager.AthenaMonTools += [ InDetStandardPerformanceAll ]
     
     # selected tracks passing good quality cuts
-    InDetStandardPerformanceGood = InDetStandardPerformance (name                = "InDetStandardPerformanceGood",
-                                                             tracksName          = InDetKeys.UnslimmedTracks(),
-                                                             tracksTruthName     = InDetKeys.UnslimmedTracksTruth(),
-                                                             SummaryTool         = InDetTrackSummaryToolSharedHits,
-                                                             HoleSearch          = InDetHoleSearchTool,
-                                                             useTrackSelection   = True,
-                                                             TrackSelectorTool   = InDetTrackSelectorToolGood,
-                                                             HistDirectoryName   = "SelectedGoodTracks",
-                                                             TruthToTrackTool    = TruthToTrackTool,
-                                                             doUpgrade           = InDetFlags.doSLHC(),
-                                                             DoTruth             = InDetFlags.doTruth())
+    if not InDetFlags.doDBM():
+      InDetStandardPerformanceGood = InDetStandardPerformance (name                = "InDetStandardPerformanceGood",
+                                                               tracksName          = InDetKeys.UnslimmedTracks(),
+                                                               tracksTruthName     = InDetKeys.UnslimmedTracksTruth(),
+                                                               SummaryTool         = InDetTrackSummaryToolSharedHits,
+                                                               HoleSearch          = InDetHoleSearchTool,
+                                                               useTrackSelection   = True,
+                                                               TrackSelectorTool   = InDetTrackSelectorToolGood,
+                                                               HistDirectoryName   = "SelectedGoodTracks",
+                                                               TruthToTrackTool    = TruthToTrackTool,
+                                                               doUpgrade           = InDetFlags.doSLHC(),
+                                                               DoTruth             = InDetFlags.doTruth())
     
-    ToolSvc += InDetStandardPerformanceGood
-    if (InDetFlags.doPrintConfigurables()):
-      print    InDetStandardPerformanceGood
+      ToolSvc += InDetStandardPerformanceGood
+      if (InDetFlags.doPrintConfigurables()):
+        print    InDetStandardPerformanceGood
     
-    InDetTrackPerfMonManager.AthenaMonTools += [ InDetStandardPerformanceGood ]
+      InDetTrackPerfMonManager.AthenaMonTools += [ InDetStandardPerformanceGood ]
 
     # selected tracks passing b-tagging cuts
-    InDetStandardPerformanceBtag = InDetStandardPerformance (name               = "InDetStandardPerformanceBtag",
-                                                             tracksName         = InDetKeys.UnslimmedTracks(),
-                                                             tracksTruthName    = InDetKeys.UnslimmedTracksTruth(),
-                                                             SummaryTool        = InDetTrackSummaryToolSharedHits,
-                                                             HoleSearch         = InDetHoleSearchTool,
-                                                             useTrackSelection  = True,
-                                                             TrackSelectorTool  = InDetTrackSelectorToolBtag,
-                                                             HistDirectoryName  = "SelectedBtagTracks",
-                                                             TruthToTrackTool   = TruthToTrackTool,
-                                                             doUpgrade          = InDetFlags.doSLHC(),
-                                                             DoTruth            = InDetFlags.doTruth())
+      InDetStandardPerformanceBtag = InDetStandardPerformance (name               = "InDetStandardPerformanceBtag",
+                                                               tracksName         = InDetKeys.UnslimmedTracks(),
+                                                               tracksTruthName    = InDetKeys.UnslimmedTracksTruth(),
+                                                               SummaryTool        = InDetTrackSummaryToolSharedHits,
+                                                               HoleSearch         = InDetHoleSearchTool,
+                                                               useTrackSelection  = True,
+                                                               TrackSelectorTool  = InDetTrackSelectorToolBtag,
+                                                               HistDirectoryName  = "SelectedBtagTracks",
+                                                               TruthToTrackTool   = TruthToTrackTool,
+                                                               doUpgrade          = InDetFlags.doSLHC(),
+                                                               DoTruth            = InDetFlags.doTruth())
     
-    ToolSvc += InDetStandardPerformanceBtag
-    if (InDetFlags.doPrintConfigurables()):
-      print    InDetStandardPerformanceBtag
+      ToolSvc += InDetStandardPerformanceBtag
+      if (InDetFlags.doPrintConfigurables()):
+        print    InDetStandardPerformanceBtag
     
-    InDetTrackPerfMonManager.AthenaMonTools += [ InDetStandardPerformanceBtag ]
+      InDetTrackPerfMonManager.AthenaMonTools += [ InDetStandardPerformanceBtag ]
 
     # selected Good IPatRec tracks
     if InDetFlags.doiPatRec():
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPostProcessing.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPostProcessing.py
index e8a054f344da8938dc8dbe720e2bfac6cc4ec085..3d96f615a8f137bd73c6802282c3b744a1ddea3f 100755
--- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPostProcessing.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPostProcessing.py
@@ -99,7 +99,9 @@ if InDetFlags.doVertexFindingForMonitoring():
                                                                               maximumChi2cutForSeeding = 49,
                                                                               maxVertices              = 200,
                                                                               createSplitVertices      = False,
-                                                                              InternalEdmFactory       = InDetVxEdmCnv)
+                                                                              InternalEdmFactory       = InDetVxEdmCnv,
+                                                                              doMaxTracksCut           = InDetPrimaryVertexingCuts.doMaxTracksCut(),
+                                                                              MaxTracks                = InDetPrimaryVertexingCuts.MaxTracks()  )
   ToolSvc += InDetPriVxFinderToolNoBeamConstraint
   if (InDetFlags.doPrintConfigurables()):
     print InDetPriVxFinderToolNoBeamConstraint
@@ -132,7 +134,9 @@ if InDetFlags.doSplitVertexFindingForMonitoring():
                                                                     maximumChi2cutForSeeding = 49,
                                                                     maxVertices              = 25,
                                                                     createSplitVertices      = True,
-                                                                    InternalEdmFactory       = InDetVxEdmCnv)
+                                                                    InternalEdmFactory       = InDetVxEdmCnv,
+                                                                    doMaxTracksCut           = InDetPrimaryVertexingCuts.doMaxTracksCut(),
+                                                                    MaxTracks                = InDetPrimaryVertexingCuts.MaxTracks())
   ToolSvc += InDetPriVxFinderToolSplit
   if (InDetFlags.doPrintConfigurables()):
     print InDetPriVxFinderToolSplit
@@ -471,3 +475,18 @@ if InDetFlags.doParticleCreation():
 
  if InDetFlags.doPrintConfigurables():
   print InDetVxLinkSetter
+
+if rec.doPhysicsValidationAugmentation() :
+  try:
+     import InDetPhysValMonitoring.InDetPhysValDecoration
+     InDetPhysValMonitoring.InDetPhysValDecoration.addDecoratorIfNeeded()
+  except ImportError:
+     from AthenaCommon.Logging import logging
+     log = logging.getLogger('InDetRecExample/InDetRecPostProcessing.py' )
+     log.info('Package InDetPhysValMonitoring.InDetPhysValDecoration is missing.'\
+              ' So, will not run the decoration. Module should become available in future'\
+              ' versions of InDetPhysValMonitoring')
+     import sys 
+     sys.exit(1)
+     pass
+
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPreProcessingSilicon.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPreProcessingSilicon.py
index 7cc7e518261309997be6fa0c10a1dec1126808fc..35b095db4a3806852bb8fa7b69a3082e2421a309 100644
--- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPreProcessingSilicon.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecPreProcessingSilicon.py
@@ -1,3 +1,4 @@
+
 # ------------------------------------------------------------
 #
 # ----------- Data-Preparation stage
@@ -231,6 +232,9 @@ if InDetFlags.doSpacePointFormation():
                                                                      ProcessPixels          = DetFlags.haveRIO.pixel_on(),
                                                                      ProcessSCTs            = DetFlags.haveRIO.SCT_on(),
                                                                      ProcessOverlaps        = DetFlags.haveRIO.SCT_on())
+   if InDetFlags.doDBM():
+      InDetSiTrackerSpacePointFinder.OverlapLimitEtaMax = 5.0
+      InDetSiTrackerSpacePointFinder.OverlapLimitEtaMin = 0
 
    if InDetFlags.doCosmics():
       InDetSiTrackerSpacePointFinder.ProcessOverlaps      = False
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_all.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_all.py
index 06ef06912009cec0c46970d2008f85e1c5a5161a..239bb27d0275988d1175edbbf4090af2169c29bb 100755
--- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_all.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_all.py
@@ -1,3 +1,4 @@
+
 #--------------------------------------------------------------
 #
 #
@@ -90,6 +91,10 @@ if doEdmMonitor:
   topSequence += InDetEdmMonitor
   if (InDetFlags.doPrintConfigurables()):
     print          InDetEdmMonitor
+## DBM TruthLinks
+if InDetFlags.doDBM() and InDetFlags.doTruth():
+  from AthenaCommon.Resilience import protectedInclude
+  protectedInclude( "McParticleAlgs/TruthParticleBuilder_jobOptions_DBM.py" )
 
 #--------------------------------------------------------------
 # Load Inner Detector reconstruction
@@ -189,17 +194,30 @@ if doWriteESD or doWriteAOD or ('doCopyRDO' in dir() and doCopyRDO):
   ServiceMgr.AthenaSealSvc.CheckDictionary = True
   # --- commit interval (test)
   ServiceMgr.AthenaPoolCnvSvc.CommitInterval = 10
-  
+
+# MC truth information
+  if doWriteESD or doWriteAOD:
+    if InDetFlags.doTruth():
+      truthList = [ 'xAOD::TruthEventContainer#TruthEvents',
+                    'xAOD::TruthEventAuxContainer#TruthEventsAux.',
+                    'xAOD::TruthPileupEventContainer#TruthPileupEvents',
+                    'xAOD::TruthPileupEventAuxContainer#TruthPileupEventsAux.',
+                    'xAOD::TruthParticleContainer#TruthParticles',
+                    'xAOD::TruthParticleAuxContainer#TruthParticlesAux.',
+                    'xAOD::TruthVertexContainer#TruthVertices',
+                    'xAOD::TruthVertexAuxContainer#TruthVerticesAux.',
+                    'PileUpEventInfo#OverlayEvent' ]
+
   if doWriteESD:
     # --- create stream
     StreamESD            = AthenaPoolOutputStream ( "StreamESD", InDetKeys.OutputESDFileName(),asAlg=True) 
-    # --- save MC collection if truth turned on
+    # --- save MC collections if truth turned on
     if InDetFlags.doTruth():
-      StreamESD.ItemList += ["McEventCollection#*"]
-      StreamESD.ItemList += [ "PileUpEventInfo#OverlayEvent" ]
+      StreamESD.ItemList += truthList
     # ---- load list of objects
     include ( "InDetRecExample/WriteInDetESD.py" )
     StreamESD.ItemList  += InDetESDList
+    StreamESD.ItemList  += [ 'xAOD::EventInfo#EventInfo' , 'xAOD::EventAuxInfo#EventInfoAux.' ]
     # --- add trigger to IDRE standalone ESD
     StreamESD.ItemList += [ "TrigDec::TrigDecision#TrigDecision" ]
     StreamESD.ItemList += [ "HLT::HLTResult#HLTResult_L2" ]
@@ -207,18 +225,24 @@ if doWriteESD or doWriteAOD or ('doCopyRDO' in dir() and doCopyRDO):
     StreamESD.ForceRead = True # otherwise unread stuff is not copied
       
   if doWriteAOD:
-    # --- create stream
-    StreamAOD            = AthenaPoolOutputStream ( "StreamAOD", InDetKeys.OutputAODFileName())
-    # --- save MC collection if truth turned on
+    from OutputStreamAthenaPool.MultipleStreamManager import MSMgr
+    # --- create *augmented* stream; this makes ROOT happy
+    StreamAOD_Augmented   = MSMgr.NewPoolRootStream ( "StreamAOD", InDetKeys.OutputAODFileName() )
+    # --- here is the old, backward-compatible event stream
+    StreamAOD = StreamAOD_Augmented.GetEventStream()
+    # --- save MC collections if truth turned on
     if InDetFlags.doTruth():
-      StreamAOD.ItemList += ["McEventCollection#*"]
-      StreamAOD.ItemList += [ "PileUpEventInfo#OverlayEvent" ]
+      StreamAOD.ItemList += truthList
+
     # --- load list of objects
     include ( "InDetRecExample/WriteInDetAOD.py" )
+    StreamAOD.ItemList  += [ 'xAOD::EventInfo#EventInfo' , 'xAOD::EventAuxInfo#EventInfoAux.' ]
     # --- add trigger to IDRE standalone AOD
     StreamAOD.ItemList += [ "TrigDec::TrigDecision#TrigDecision" ]
     StreamAOD.ItemList += [ "HLT::HLTResult#HLTResult_L2" ]
     StreamAOD.ItemList += [ "HLT::HLTResult#HLTResult_EF" ]
+    if InDetFlags.doDBM():
+      topSequence.StreamESD.ItemList+=["TrackCollection#SiSPSeededTracks"]
     StreamAOD.ForceRead = True # otherwise unread stuff is not copied
   
   if 'doCopyRDO' in dir() and doCopyRDO:
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_jobOptions.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_jobOptions.py
index 701def88687e8f746fb238ee65ad84716102e54a..7341f7bbd8f73c006fecbc0ce60ad9316c8200d7 100755
--- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_jobOptions.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_jobOptions.py
@@ -1,3 +1,4 @@
+
 # +++++++++++++++++++ beginning of InDetRec_jobOptions.py
 # jobOptions Fragment for ID software
 # -----------------------------------
@@ -68,7 +69,9 @@ else:
     if (not 'InDetNewTrackingCuts' in dir()):
       print "InDetRec_jobOptions: InDetNewTrackingCuts not set before - import them now"
       from InDetRecExample.ConfiguredNewTrackingCuts import ConfiguredNewTrackingCuts
-      if InDetFlags.doVtxLumi():
+      if InDetFlags.doDBM():
+        InDetNewTrackingCuts      = ConfiguredNewTrackingCuts("DBM")
+      elif InDetFlags.doVtxLumi():
         InDetNewTrackingCuts      = ConfiguredNewTrackingCuts("VtxLumi")
       elif InDetFlags.doCosmics():
         InDetNewTrackingCuts      = ConfiguredNewTrackingCuts("Cosmics")
@@ -156,9 +159,11 @@ else:
     # ------------------------------------------------------------
     # --- silicon
     include ("InDetRecExample/InDetRecPreProcessingSilicon.py")
-    include ("InDetRecExample/ConfiguredInDetPreProcessingTRT.py")
+
     # --- TRT, no drift information if cosmics, do not use extrenal phase in any case
-    InDetPreProcessingTRT = ConfiguredInDetPreProcessingTRT(not InDetFlags.doTRTPhaseCalculation() or jobproperties.Beam.beamType()=="collisions",False)
+    if not InDetFlags.doDBM():
+      include ("InDetRecExample/ConfiguredInDetPreProcessingTRT.py")
+      InDetPreProcessingTRT = ConfiguredInDetPreProcessingTRT(not InDetFlags.doTRTPhaseCalculation() or jobproperties.Beam.beamType()=="collisions",False)
 
     # ------------------------------------------------------------
     #
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/ReadInDet_jobOptions.py b/InnerDetector/InDetExample/InDetRecExample/share/ReadInDet_jobOptions.py
index c3907bb6a136d7e699fef8954722f2aee7faec33..3581a078871d49826ba37f77b9ce01a3ffa117ba 100755
--- a/InnerDetector/InDetExample/InDetRecExample/share/ReadInDet_jobOptions.py
+++ b/InnerDetector/InDetExample/InDetRecExample/share/ReadInDet_jobOptions.py
@@ -2,12 +2,9 @@
 # control input
 #--------------------------------------------------------------
 # --- specify input type
-if not 'readESD' in dir():
-  readESD = True
-readAOD = not readESD
-
-# --- run on the 13.0.30.3 reference ESD or AOD
-read13Reference = False
+if not 'readAOD' in dir():
+  readAOD = True
+readESD = not readAOD
 
 #--------------------------------------------------------------
 # Event related parameters
@@ -17,15 +14,9 @@ from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
   
 if readESD:
   athenaCommonFlags.FilesInput = [ "ESD.pool.root" ]
-  if read13Reference:
-    # 13.0.30.3 reference ESD with DetDescrVersion = "ATLAS-CSC-01-02-00"
-    athenaCommonFlags.FilesInput = [ "/afs/cern.ch/atlas/maxidisk/d33/referencefiles/T1_5200.13.0.30.3.ESD.017284._00001.pool.root" ]
 
 elif readAOD:
   athenaCommonFlags.FilesInput = [ "AOD.pool.root" ]
-  if read13Reference:
-    # 13.0.30.3 reference AOD with DetDescrVersion = "ATLAS-CSC-01-02-00"
-    athenaCommonFlags.FilesInput = [ "/afs/cern.ch/atlas/maxidisk/d33/referencefiles/T1_5200.13.0.30.3.AOD.017284._00001.pool.root" ]
 
 import AthenaPython.ConfigLib as apcl
 cfg = apcl.AutoCfg(name = 'InDetRecExampleAutoConfig', input_files=athenaCommonFlags.FilesInput())
@@ -185,7 +176,12 @@ InDetFlags.doPrintConfigurables = True
 from InDetRecExample.InDetKeys import InDetKeys
 if InDetFlags.doVertexFinding() and readAOD:
   InDetKeys.Tracks = InDetKeys.TrackParticles()
-  print "InDetKeys.Tracks = "+InDetKeys.Tracks()
+
+# uncomment if you don't want to overwrite the original fits (e.g. for comparison)
+# this would also require enabling "pass-through" output mode (see bottom of this file)
+# or else manually adding the input collection to the output stream
+#if InDetFlags.doVertexFinding():
+#  InDetKeys.xAODVertexContainer = "RefitPrimaryVertices" 
 
 if readESD and not redoPatternRecoAndTracking:
   InDetKeys.UnslimmedTracks              = 'Tracks'
@@ -209,6 +205,9 @@ InDetKeys.print_JobProperties()
 InDetFlags.doStatistics   = doInDetRecStatistics
 TrackCollectionKeys        = [InDetKeys.Tracks()]
 TrackCollectionTruthKeys   = [InDetKeys.TracksTruth()]
+
+# Uncomment to use medical image seeding
+# InDetFlags.primaryVertexSetup = "MedImgMultiFinding"
   
 #--------------------------------------------------------------
 # load master joboptions file
@@ -216,6 +215,9 @@ TrackCollectionTruthKeys   = [InDetKeys.TracksTruth()]
   
 include("InDetRecExample/InDetRec_all.py")
 
-if doWriteESD: StreamESD.ForceRead = True
-    
-if doWriteAOD: StreamAOD.ForceRead = True
+# Set to True if you want to write out all input data ("pass-through" mode)
+if doWriteESD:
+  StreamESD.TakeItemsFromInput = False
+
+if doWriteAOD:
+  StreamAOD.TakeItemsFromInput = False
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/jobOptions_StandaloneDBM_RAW.py b/InnerDetector/InDetExample/InDetRecExample/share/jobOptions_StandaloneDBM_RAW.py
new file mode 100644
index 0000000000000000000000000000000000000000..13f330afeaf874cafb6e2c65cb1f10128205fee9
--- /dev/null
+++ b/InnerDetector/InDetExample/InDetRecExample/share/jobOptions_StandaloneDBM_RAW.py
@@ -0,0 +1,258 @@
+#--------------------------------------------------------------
+# Event related parameters and input files
+#--------------------------------------------------------------
+
+# --- read BS 
+doReadBS =  True
+doCopyRDO = False
+
+from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
+
+if not doReadBS:
+  athenaCommonFlags.FilesInput = ["/afs/cern.ch/work/m/mdiamond/public/digiOUT/OUTdigi1247_2.pool.root"]
+  # top no pileup (default)
+#  athenaCommonFlags.FilesInput = ["root://eosatlas///eos/atlas/atlasgroupdisk/perf-idtracking/dq2/rucio/mc12_valid/ac/91/RDO.01385812._000001.pool.root.1"]
+  # H-gamgam, 20 pileup
+  # athenaCommonFlags.FilesInput = ["root://eosatlas//eos/atlas/atlasgroupdisk/perf-egamma/dq2/mc11_valid/RDO/e850_s1310_s1300_d576/mc11_valid.106384.PythiaH120gamgam.digit.RDO.e850_s1310_s1300_d576_tid512888_00/RDO.512888._000001.pool.root.1"]
+  # H-gamgam, 0 pileup (filename ?)
+  # athenaCommonFlags.FilesInput = ["root://eosatlas//eos/atlas/atlasgroupdisk/perf-egamma/dq2/mc11_valid/RDO/e850_s1310_s1300_d578/mc11_valid.106384.PythiaH120gamgam.digit.RDO.e850_s1310_s1300_d578_tid512902_00/RDO.512902._000001.pool.root.1"]
+  # electrons 5 GeV
+  # athenaCommonFlags.FilesInput = ["root://eosatlas//eos/atlas/atlascerngroupdisk/perf-idtracking/rtt/mc10_7TeV.105128.singlepart_e_pt5.digit.RDO.e605_s933_s946_d369/RDO.219312._000024.pool.root.2"]
+  # pions 1 GeV
+  # athenaCommonFlags.FilesInput = ["root://eosatlas//eos/atlas/atlascerngroupdisk/perf-idtracking/rtt/mc10_7TeV.105130.singlepart_singlepi_pt1.digit.RDO.e605_s933_s946_d369/RDO.197118._000005.pool.root.1"]
+
+if doReadBS:
+  #athenaCommonFlags.FilesInput = ["root://eosatlas//eos/atlas/atlascerngroupdisk/perf-idtracking/InDetRecExample/data10_7TeV.00154817.physics_MinBias.merge.RAW/data10_7TeV.00154817.physics_MinBias.merge.RAW._lb0100._0001.1"]
+  athenaCommonFlags.FilesInput = ["/afs/cern.ch/work/m/mdiamond/public/data15_cos.00253010.physics_Main.merge.RAW._lb0878._SFO-ALL._0001.1"]
+  #athenaCommonFlags.FilesInput = ["/tmp/mdiamond/data15_cos.00251873.physics_IDCosmic.merge.RAW._lb0002._SFO-ALL._0001.1", "/tmp/mdiamond/data15_cos.00251873.physics_IDCosmic.merge.RAW._lb0003._SFO-ALL._0001.1", "/tmp/mdiamond/data15_cos.00251873.physics_IDCosmic.merge.RAW._lb0004._SFO-ALL._0001.1", "/tmp/mdiamond/data15_cos.00251873.physics_IDCosmic.merge.RAW._lb0005._SFO-ALL._0001.1"]
+
+#from AthenaCommon.GlobalFlags import jobproperties
+#jobproperties.Global.ConditionsTag='OFLCOND-SDR-BS14T-IBL-CORR-06-02'
+#from IOVDbSvc.CondDB import conddb
+#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v19s0_ATLAS-R2-2015-02')
+#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v15_ATLAS-IBL3D25-04-00-01')
+#conddb.setGlobalTag(globalflags.ConditionsTag())
+#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v15_ATLAS-IBL3D25-04-00-01')
+#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v19s0_ATLAS-R2-2015-02')
+
+
+  
+import AthenaPython.ConfigLib as apcl
+cfg = apcl.AutoCfg(name = 'InDetRecExampleAutoConfig', input_files=athenaCommonFlags.FilesInput())
+cfg.configure_job()
+
+#from AthenaCommon.GlobalFlags import jobproperties
+#jobproperties.Global.ConditionsTag='OFLCOND-SDR-BS14T-IBL-CORR-06-02'
+#from IOVDbSvc.CondDB import conddb
+#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v15_ATLAS-IBL3D25-04-00-01')
+#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v19s0_ATLAS-R2-2015-02')
+#conddb.setGlobalTag(globalflags.ConditionsTag())
+#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v19s0_ATLAS-R2-2015-02')
+#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterial','AtlasLayerMat_v15_ATLAS-IBL3D25-04-00-01')
+
+
+
+if doReadBS:
+  from AthenaCommon.GlobalFlags import globalflags
+  if len(globalflags.ConditionsTag())!=0:
+    from IOVDbSvc.CondDB import conddb
+    conddb.setGlobalTag(globalflags.ConditionsTag())
+    conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v19s0_ATLAS-R2-2015-02')
+
+#include("RecExCond/AllDet_detDescr.py")
+
+import MagFieldServices.SetupField     
+
+theApp.EvtMax = -1
+#theApp.EvtMax = 20
+
+#--------------------------------------------------------------
+# Control
+#--------------------------------------------------------------
+
+# --- Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL )
+OutputLevel     = INFO
+# --- produce an atlantis data file
+doJiveXML       = False
+# --- run the Virtual Point 1 event visualisation
+doVP1           = False
+# --- controls what is written out. ESD includes AOD, so it's normally enough
+doWriteESD      = True
+doWriteAOD      = False
+# --- do auditors ?
+doAuditors      = True
+
+import os
+if os.environ['CMTCONFIG'].endswith('-dbg'):
+  # --- do EDM monitor (debug mode only)
+  doEdmMonitor    = True 
+  # --- write out a short message upon entering or leaving each algorithm
+  doNameAuditor   = True
+else:
+  doEdmMonitor    = False
+  doNameAuditor   = False
+
+#--------------------------------------------------------------
+# Additional Detector Setup
+#--------------------------------------------------------------
+
+from RecExConfig.RecFlags import rec
+rec.Commissioning=False
+
+# --- for heavy ion running
+#rec.doHeavyIon = True
+
+from AthenaCommon.DetFlags import DetFlags 
+# --- switch on InnerDetector
+DetFlags.ID_setOn()
+#DetFlags.makeRIO.pixel_setOff()
+DetFlags.makeRIO.SCT_setOff()
+DetFlags.makeRIO.TRT_setOff()
+
+# --- and switch off all the rest
+DetFlags.Calo_setOff()
+DetFlags.Muon_setOff()
+
+# ---- switch parts of ID off/on as follows (always use both lines)
+#DetFlags.pixel_setOff()
+#DetFlags.detdescr.pixel_setOn()
+DetFlags.SCT_setOff()
+DetFlags.detdescr.SCT_setOn()
+DetFlags.TRT_setOff()
+DetFlags.detdescr.TRT_setOn()
+
+# --- switch off DCS
+#DetFlags.dcs.pixel_setOff()
+DetFlags.dcs.SCT_setOff()
+DetFlags.dcs.TRT_setOff()
+
+# --- printout
+#DetFlags.Print()
+
+# --- output level
+#OutputLevel          = DEBUG
+
+#--------------------------------------------------------------
+# Load InDet configuration
+#--------------------------------------------------------------
+
+from AthenaCommon.GlobalFlags import globalflags
+
+# --- setup InDetJobProperties
+from InDetRecExample.InDetJobProperties import InDetFlags
+#InDetFlags.doTruth       = (globalflags.DataSource == 'geant4' and globalflags.InputFormat() == 'pool')
+InDetFlags.doTruth = False
+InDetFlags.doDBM = True
+
+# --- special setup for Beate
+# InDetFlags.doVtxLumi = True 
+
+# --- enable xKalman and iPatRec
+# InDetFlags.doxKalman              = True
+# InDetFlags.doiPatRec              = True
+
+# --- uncomment to change the default of one of the following options:
+#InDetFlags.doNewTracking          = False
+InDetFlags.doLowPt                = False
+#InDetFlags.doBeamGas              = True
+#InDetFlags.doBeamHalo             = True
+#InDetFlags.doBackTracking         = False
+#InDetFlags.doTRTStandalone        = False
+#InDetFlags.doLowBetaFinder        = False
+InDetFlags.doTRTPhaseCalculation = False
+
+#InDetFlags.cutLevel.set_Value_and_Lock                             (10)
+
+InDetFlags.cutLevel       = 1 # test for TRTonly in PU
+#InDetFlags.priVtxCutLevel = 2 # test for PU
+
+# --- enable brem recovery
+# InDetFlags.doBremRecovery   = True
+
+# --- calo seeding does not work standalone 
+# InDetFlags.doCaloSeededBrem = False
+
+# --- Turn off track slimming
+InDetFlags.doSlimming = False
+
+InDetFlags.doIBL = True
+#InDetFlags.doHighPileup = True
+#InDetFlags.doSLHC = True
+
+# --- possibility to run tracking on subdetectors separately (and independent from each other)
+#InDetFlags.doTrackSegmentsPixel = True
+#InDetFlags.doTrackSegmentsSCT   = True
+#InDetFlags.doTrackSegmentsTRT   = True
+
+# --- possibility to change the trackfitter
+#InDetFlags.trackFitterType = 'KalmanFitter'
+
+# --- activate monitorings
+InDetFlags.doMonitoringGlobal    = False
+InDetFlags.doMonitoringPrimaryVertexingEnhanced = False
+InDetFlags.doMonitoringPixel     = False
+InDetFlags.doMonitoringSCT       = False
+InDetFlags.doMonitoringTRT       = False
+InDetFlags.doMonitoringAlignment = False
+
+# --- activate (memory/cpu) monitoring
+#InDetFlags.doPerfMon        = True
+# --- activate creation of standard plots
+InDetFlags.doStandardPlots  = True
+# --- activate physics validation monitoring
+InDetFlags.doPhysValMon  = False
+# --- active storegate delection
+#InDetFlags.doSGDeletion  = True
+
+# --- produce various ntuples (all in one root file)
+InDetFlags.doTrkNtuple      = False
+InDetFlags.doPixelTrkNtuple = False
+#InDetFlags.doSctTrkNtuple   = True
+#InDetFlags.doTrtTrkNtuple   = True
+InDetFlags.doPixelClusterNtuple = False
+#InDetFlags.doSctClusterNtuple   = True
+#InDetFlags.doTrtDriftCircleNtuple = True
+#InDetFlags.doVtxNtuple      = True
+#InDetFlags.doConvVtxNtuple  = True
+#InDetFlags.doV0VtxNtuple    = True
+
+#InDetFlags.doMinBias   = True
+
+# activate the print InDetXYZAlgorithm statements
+InDetFlags.doPrintConfigurables = True
+
+#DBM changes
+InDetFlags.doPixelClusterSplitting.set_Value_and_Lock(False)
+InDetFlags.doNewTracking.set_Value_and_Lock(True)
+InDetFlags.useBroadPixClusterErrors.set_Value_and_Lock(True)
+InDetFlags.selectSCTIntimeHits = False
+InDetFlags.doForwardTracks = False
+InDetFlags.doVertexFinding = True
+InDetFlags.doSCT_PRDFormation = False
+InDetFlags.doTRT_PRDFormation = False
+InDetFlags.doHolesOnTrack = False
+InDetFlags.doTIDE_Ambi = False
+InDetFlags.useBeamConstraint = False
+InDetFlags.doCaloSeededBrem = False
+InDetFlags.doVertexFindingForMonitoring = False
+InDetFlags.doSplitVertexFindingForMonitoring = False
+InDetFlags.doParticleCreation = False
+#InDetFlags.doInnerDetectorCommissioning.set_Value_and_Lock(True);
+#InDetFlags.doFatras = True
+
+# IMPORTANT NOTE: initialization of the flags and locking them is done in InDetRec_jobOptions.py!
+# This way RecExCommon just needs to import the properties without doing anything else!
+# DO NOT SET JOBPROPERTIES AFTER THIS LINE! The change will be ignored!
+
+#--------------------------------------------------------------
+# load master joboptions file
+#--------------------------------------------------------------
+
+include("InDetRecExample/InDetRec_all.py")
+include("RecExCommon/BSRead_config.py")
+include("IdDictDetDescrCnv/IdDictDetDescrCnv_joboptions.py")
+include("PixelCabling/SelectPixelMap.py")
+
+# --- dump MC truth into logfile
+#from TruthExamples.TruthExamplesConf import DumpMC
+#topSequence += DumpMC(McEventKey = "TruthEvent")
diff --git a/InnerDetector/InDetExample/InDetRecExample/share/jobOptions_StandaloneDBM_RDO.py b/InnerDetector/InDetExample/InDetRecExample/share/jobOptions_StandaloneDBM_RDO.py
new file mode 100644
index 0000000000000000000000000000000000000000..d2cc7f3881fed0d76a1fcc8e5d80e4226e45b761
--- /dev/null
+++ b/InnerDetector/InDetExample/InDetRecExample/share/jobOptions_StandaloneDBM_RDO.py
@@ -0,0 +1,244 @@
+#--------------------------------------------------------------
+# Event related parameters and input files
+#--------------------------------------------------------------
+
+# --- read BS 
+doReadBS =  False
+doCopyRDO = True
+
+from AthenaCommon.AthenaCommonFlags import athenaCommonFlags
+
+if not doReadBS:
+  athenaCommonFlags.FilesInput = ["/afs/cern.ch/work/m/mdiamond/public/digiOUT/OUTdigi1247_2.pool.root"]
+#  athenaCommonFlags.FilesInput = ["/tmp/mdiamond/valid1.110401.PowhegPythia_P2012_ttbar_nonallhad.recon.RDO.e3099_s2578_r6221_tid05191880_00/RDO.05191880._000170.pool.root.1"]
+#  athenaCommonFlags.FilesInput = ["/tmp/mdiamond/RDO.05191880._000080.pool.root.1", "/tmp/mdiamond/RDO.05191880._000232.pool.root.1", "/tmp/mdiamond/RDO.05191880._000235.pool.root.1", "/tmp/mdiamond/RDO.05191880._000243.pool.root.1" ]
+#  athenaCommonFlags.FilesInput = ["/tmp/mdiamond/ns25/RDO.05191878._000042.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000110.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000121.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000141.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000022.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000140.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000148.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000189.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000156.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000012.pool.root.1","/tmp/mdiamond/ns25/RDO.05191878._000041.pool.root.1", "/tmp/mdiamond/ns25/RDO.05191878._000102.pool.root.1"]
+#  athenaCommonFlags.FilesInput = ["/tmp/mdiamond/ns25/RDO.05191878._000042.pool.root.1"]
+
+#  athenaCommonFlags.FilesInput = ["/tmp/mdiamond/RDO.05191880._000080.pool.root.1"]
+
+if doReadBS:
+  #athenaCommonFlags.FilesInput = ["root://eosatlas//eos/atlas/atlascerngroupdisk/perf-idtracking/InDetRecExample/data10_7TeV.00154817.physics_MinBias.merge.RAW/data10_7TeV.00154817.physics_MinBias.merge.RAW._lb0100._0001.1"]
+  athenaCommonFlags.FilesInput = ["/afs/cern.ch/work/m/mdiamond/public/data15_cos.00253010.physics_Main.merge.RAW._lb0878._SFO-ALL._0001.1"]
+
+from AthenaCommon.GlobalFlags import jobproperties
+#jobproperties.Global.ConditionsTag='OFLCOND-SDR-BS14T-IBL-CORR-06-02'
+jobproperties.Global.ConditionsTag='OFLCOND-RUN12-SDR-25'
+from IOVDbSvc.CondDB import conddb
+conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v19s0_ATLAS-R2-2015-02')
+#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v15_ATLAS-IBL3D25-04-00-01')
+conddb.setGlobalTag(globalflags.ConditionsTag())
+#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v15_ATLAS-IBL3D25-04-00-01')
+conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v19s0_ATLAS-R2-2015-02')
+
+
+  
+import AthenaPython.ConfigLib as apcl
+cfg = apcl.AutoCfg(name = 'InDetRecExampleAutoConfig', input_files=athenaCommonFlags.FilesInput())
+cfg.configure_job()
+
+from AthenaCommon.GlobalFlags import jobproperties
+#jobproperties.Global.ConditionsTag='OFLCOND-SDR-BS14T-IBL-CORR-06-02'
+from IOVDbSvc.CondDB import conddb
+#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v15_ATLAS-IBL3D25-04-00-01')
+conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v19s0_ATLAS-R2-2015-02')
+conddb.setGlobalTag(globalflags.ConditionsTag())
+conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterialV2','AtlasLayerMat_v19s0_ATLAS-R2-2015-02')
+#conddb.addOverride('/GLOBAL/TrackingGeo/LayerMaterial','AtlasLayerMat_v15_ATLAS-IBL3D25-04-00-01')
+
+from IOVDbSvc.CondDB import conddb
+if len(globalflags.ConditionsTag())!=0:
+  conddb.setGlobalTag(globalflags.ConditionsTag())
+import MagFieldServices.SetupField
+
+
+#theApp.EvtMax = -1
+theApp.EvtMax = 10
+
+#--------------------------------------------------------------
+# Control
+#--------------------------------------------------------------
+
+# --- Set output level threshold (2=DEBUG, 3=INFO, 4=WARNING, 5=ERROR, 6=FATAL )
+OutputLevel     = INFO
+# --- produce an atlantis data file
+doJiveXML       = False
+# --- run the Virtual Point 1 event visualisation
+doVP1           = False
+# --- controls what is written out. ESD includes AOD, so it's normally enough
+doWriteESD      = True
+doWriteAOD      = False
+# --- do auditors ?
+doAuditors      = True
+
+import os
+if os.environ['CMTCONFIG'].endswith('-dbg'):
+  # --- do EDM monitor (debug mode only)
+  doEdmMonitor    = True 
+  # --- write out a short message upon entering or leaving each algorithm
+  doNameAuditor   = True
+else:
+  doEdmMonitor    = False
+  doNameAuditor   = False
+
+#--------------------------------------------------------------
+# Additional Detector Setup
+#--------------------------------------------------------------
+
+from RecExConfig.RecFlags import rec
+rec.Commissioning=False
+
+# --- for heavy ion running
+#rec.doHeavyIon = True
+
+from AthenaCommon.DetFlags import DetFlags 
+# --- switch on InnerDetector
+DetFlags.ID_setOn()
+#DetFlags.makeRIO.pixel_setOff()
+DetFlags.makeRIO.SCT_setOff()
+DetFlags.makeRIO.TRT_setOff()
+
+# --- and switch off all the rest
+DetFlags.Calo_setOff()
+DetFlags.Muon_setOff()
+
+# ---- switch parts of ID off/on as follows (always use both lines)
+#DetFlags.pixel_setOff()
+#DetFlags.detdescr.pixel_setOn()
+DetFlags.SCT_setOff()
+DetFlags.detdescr.SCT_setOn()
+DetFlags.TRT_setOff()
+DetFlags.detdescr.TRT_setOn()
+
+# --- switch off DCS
+#DetFlags.dcs.pixel_setOff()
+DetFlags.dcs.SCT_setOff()
+DetFlags.dcs.TRT_setOff()
+
+# --- printout
+#DetFlags.Print()
+
+# --- output level
+#OutputLevel          = DEBUG
+
+#--------------------------------------------------------------
+# Load InDet configuration
+#--------------------------------------------------------------
+
+from AthenaCommon.GlobalFlags import globalflags
+
+# --- setup InDetJobProperties
+from InDetRecExample.InDetJobProperties import InDetFlags
+InDetFlags.doDBM = True
+#InDetFlags.doTruth       = (globalflags.DataSource == 'geant4' and globalflags.InputFormat() == 'pool')
+InDetFlags.doTruth = True
+
+# --- special setup for Beate
+# InDetFlags.doVtxLumi = True 
+
+# --- enable xKalman and iPatRec
+# InDetFlags.doxKalman              = True
+# InDetFlags.doiPatRec              = True
+
+# --- uncomment to change the default of one of the following options:
+#InDetFlags.doNewTracking          = False
+InDetFlags.doLowPt                = False
+#InDetFlags.doBeamGas              = True
+#InDetFlags.doBeamHalo             = True
+#InDetFlags.doBackTracking         = False
+#InDetFlags.doTRTStandalone        = False
+#InDetFlags.doLowBetaFinder        = False
+InDetFlags.doTRTPhaseCalculation = False
+
+#InDetFlags.cutLevel.set_Value_and_Lock                             (10)
+
+InDetFlags.cutLevel       = 1 # test for TRTonly in PU
+#InDetFlags.priVtxCutLevel = 2 # test for PU
+
+# --- enable brem recovery
+# InDetFlags.doBremRecovery   = True
+
+# --- calo seeding does not work standalone 
+# InDetFlags.doCaloSeededBrem = False
+
+# --- Turn off track slimming
+InDetFlags.doSlimming = False
+
+InDetFlags.doIBL = True
+#InDetFlags.doHighPileup = True
+#InDetFlags.doSLHC = True
+
+# --- possibility to run tracking on subdetectors separately (and independent from each other)
+#InDetFlags.doTrackSegmentsPixel = True
+#InDetFlags.doTrackSegmentsSCT   = True
+#InDetFlags.doTrackSegmentsTRT   = True
+
+# --- possibility to change the trackfitter
+#InDetFlags.trackFitterType = 'KalmanFitter'
+
+# --- activate monitorings
+InDetFlags.doMonitoringGlobal    = False
+InDetFlags.doMonitoringPrimaryVertexingEnhanced = False
+InDetFlags.doMonitoringPixel     = False
+InDetFlags.doMonitoringSCT       = False
+InDetFlags.doMonitoringTRT       = False
+InDetFlags.doMonitoringAlignment = False
+
+# --- activate (memory/cpu) monitoring
+#InDetFlags.doPerfMon        = True
+# --- activate creation of standard plots
+InDetFlags.doStandardPlots  = True
+# --- activate physics validation monitoring
+InDetFlags.doPhysValMon  = False
+# --- active storegate delection
+#InDetFlags.doSGDeletion  = True
+
+# --- produce various ntuples (all in one root file)
+InDetFlags.doTrkNtuple      = False
+InDetFlags.doPixelTrkNtuple = False
+#InDetFlags.doSctTrkNtuple   = True
+#InDetFlags.doTrtTrkNtuple   = True
+InDetFlags.doPixelClusterNtuple = False
+#InDetFlags.doSctClusterNtuple   = True
+#InDetFlags.doTrtDriftCircleNtuple = True
+#InDetFlags.doVtxNtuple      = True
+#InDetFlags.doConvVtxNtuple  = True
+#InDetFlags.doV0VtxNtuple    = True
+
+#InDetFlags.doMinBias   = True
+
+# activate the print InDetXYZAlgorithm statements
+InDetFlags.doPrintConfigurables = True
+
+#DBM changes
+InDetFlags.doPixelClusterSplitting.set_Value_and_Lock(False)
+InDetFlags.doNewTracking.set_Value_and_Lock(True)
+InDetFlags.useBroadPixClusterErrors.set_Value_and_Lock(True)
+InDetFlags.selectSCTIntimeHits = False
+InDetFlags.doForwardTracks = False
+InDetFlags.doVertexFinding = True
+InDetFlags.doSCT_PRDFormation = False
+InDetFlags.doTRT_PRDFormation = False
+InDetFlags.doHolesOnTrack = False
+InDetFlags.doTIDE_Ambi = False
+InDetFlags.useBeamConstraint = False
+InDetFlags.doCaloSeededBrem = False
+InDetFlags.doVertexFindingForMonitoring = False
+InDetFlags.doSplitVertexFindingForMonitoring = False
+InDetFlags.doParticleCreation = True
+
+#InDetFlags.doFatras = True
+
+# IMPORTANT NOTE: initialization of the flags and locking them is done in InDetRec_jobOptions.py!
+# This way RecExCommon just needs to import the properties without doing anything else!
+# DO NOT SET JOBPROPERTIES AFTER THIS LINE! The change will be ignored!
+
+#--------------------------------------------------------------
+# load master joboptions file
+#--------------------------------------------------------------
+
+include("InDetRecExample/InDetRec_all.py")
+
+# --- dump MC truth into logfile
+#from TruthExamples.TruthExamplesConf import DumpMC
+#topSequence += DumpMC(McEventKey = "TruthEvent")