Skip to content
Snippets Groups Projects
Forked from atlas / athena
88945 commits behind the upstream repository.
  • Stephen Nicholas Swatman's avatar
    9a50a35b
    Migrate any remaining hole search config files · 9a50a35b
    Stephen Nicholas Swatman authored
    There are a few remaining configuration scripts that do not get used
    by q431 but which we should still migrate to use the new boundary
    checking tool. This commit adapts those files to use the new tool,
    often creating a new tool for it and using that in lieu of the old
    configuration parameters.
    Verified
    9a50a35b
    History
    Migrate any remaining hole search config files
    Stephen Nicholas Swatman authored
    There are a few remaining configuration scripts that do not get used
    by q431 but which we should still migrate to use the new boundary
    checking tool. This commit adapts those files to use the new tool,
    often creating a new tool for it and using that in lieu of the old
    configuration parameters.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
InDetTrigConfigRecLoadTools.py 55.53 KiB
# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration


from __future__ import print_function

# ------------------------------------------------------------
#
# ----------- Loading of all the Tools needed to configure
#
# ------------------------------------------------------------
#
# common
from AthenaCommon.AppMgr import ToolSvc
from InDetTrigRecExample.InDetTrigFlags import InDetTrigFlags
from InDetTrigRecExample.ConfiguredNewTrackingTrigCuts import EFIDTrackingCuts
InDetTrigCutValues = EFIDTrackingCuts

from AthenaCommon.DetFlags import DetFlags
from AthenaCommon.Logging import logging 
log = logging.getLogger("InDetTrigConfigRecLoadTools.py")

from InDetTrigRecExample.InDetTrigConditionsAccess import PixelConditionsSetup, SCT_ConditionsSetup
from AthenaCommon.CfgGetter import getPublicTool,getPrivateTool
TrigPixelLorentzAngleTool = getPublicTool("PixelLorentzAngleTool")
TrigSCTLorentzAngleTool = getPrivateTool("SCTLorentzAngleTool") 

from SiLorentzAngleTool.SCTLorentzAngleToolSetup import SCTLorentzAngleToolSetup
sctLorentzAngleToolSetup = SCTLorentzAngleToolSetup()

#
# common ClusterMakerTool
#
from SiClusterizationTool.SiClusterizationToolConf import InDet__ClusterMakerTool
InDetTrigClusterMakerTool = \
    InDet__ClusterMakerTool( name = "InDetTrigClusterMakerTool",
                             PixelLorentzAngleTool = TrigPixelLorentzAngleTool,
                             SCTLorentzAngleTool = TrigSCTLorentzAngleTool
                             )
if (InDetTrigFlags.doPrintConfigurables()):
  print (InDetTrigClusterMakerTool)
ToolSvc += InDetTrigClusterMakerTool

from SiSpacePointTool.SiSpacePointToolConf import InDet__SiSpacePointMakerTool
InDetTrigSiSpacePointMakerTool = InDet__SiSpacePointMakerTool(name="InDetTrigSiSpacePointMakerTool")
if (InDetTrigFlags.doPrintConfigurables()):
  print (InDetTrigSiSpacePointMakerTool)
ToolSvc += InDetTrigSiSpacePointMakerTool      
  
from SiTrigSpacePointFormation.SiTrigSpacePointFormationConf import InDet__SCT_TrigSpacePointTool
SCT_TrigSpacePointTool = InDet__SCT_TrigSpacePointTool(name="InDetTrigSCTSpacePointTool",
                                                       ProcessOverlaps = InDetTrigFlags.doOverlapSP(),
                                                       SiSpacePointMakerToolName="InDet::SiSpacePointMakerTool/InDetTrigSiSpacePointMakerTool",
                                                       SpacePointsOverlapName = 'SPTrigOverlap'
                                                       )

if (InDetTrigFlags.doPrintConfigurables()):
  print (SCT_TrigSpacePointTool )
ToolSvc +=  SCT_TrigSpacePointTool


#
# ----------- control loading of ROT_creator
#
if InDetTrigFlags.loadRotCreator():

  #4 clusterOnTrack Tools
  #
  from SiClusterOnTrackTool.SiClusterOnTrackToolConf import InDet__SCT_ClusterOnTrackTool
  SCT_ClusterOnTrackTool = InDet__SCT_ClusterOnTrackTool ("SCT_ClusterOnTrackTool",
                                                          CorrectionStrategy = 0,  # do correct position bias
                                                          ErrorStrategy      = 2,  # do use phi dependent errors
                                                          LorentzAngleTool   = TrigSCTLorentzAngleTool)

  ToolSvc += SCT_ClusterOnTrackTool
  if (InDetTrigFlags.doPrintConfigurables()):
    print (SCT_ClusterOnTrackTool)

  # tool to always make conservative pixel cluster errors
  from SiClusterOnTrackTool.SiClusterOnTrackToolConf import InDet__PixelClusterOnTrackTool
  from InDetTrigRecExample.InDetTrigConditionsAccess import PixelConditionsSetup

  if InDetTrigFlags.doPixelClusterSplitting():
    from TrkNeuralNetworkUtils.TrkNeuralNetworkUtilsConf import Trk__NeuralNetworkToHistoTool
    NeuralNetworkToHistoTool=Trk__NeuralNetworkToHistoTool(name = "NeuralNetworkToHistoTool")
      
    ToolSvc += NeuralNetworkToHistoTool
    if (InDetTrigFlags.doPrintConfigurables()):
      print (NeuralNetworkToHistoTool)
    
    from SiClusterizationTool.SiClusterizationToolConf import InDet__NnClusterizationFactory
    from AtlasGeoModel.CommonGMJobProperties import CommonGeometryFlags as geoFlags
    do_runI = geoFlags.Run() not in ["RUN2", "RUN3"]
    from InDetRecExample.TrackingCommon import createAndAddCondAlg,getPixelClusterNnCondAlg,getPixelClusterNnWithTrackCondAlg
    createAndAddCondAlg( getPixelClusterNnCondAlg,         'PixelClusterNnCondAlg',          GetInputsInfo = do_runI)
    createAndAddCondAlg( getPixelClusterNnWithTrackCondAlg,'PixelClusterNnWithTrackCondAlg', GetInputsInfo = do_runI)
    if do_runI :
      TrigNnClusterizationFactory = InDet__NnClusterizationFactory( name                 = "TrigNnClusterizationFactory",
                                                                    PixelLorentzAngleTool              = TrigPixelLorentzAngleTool,
                                                                    doRunI                             = True,
                                                                    useToT                             = False,
                                                                    useRecenteringNNWithoutTracks      = True,
                                                                    useRecenteringNNWithTracks         = False,
                                                                    correctLorShiftBarrelWithoutTracks = 0,
                                                                    correctLorShiftBarrelWithTracks    = 0.030,
                                                                    NnCollectionReadKey                = 'PixelClusterNN',
                                                                    NnCollectionWithTrackReadKey       = 'PixelClusterNNWithTrack')
    else:
        TrigNnClusterizationFactory = InDet__NnClusterizationFactory( name                         = "TrigNnClusterizationFactory",
                                                                      PixelLorentzAngleTool        = TrigPixelLorentzAngleTool,
                                                                      useToT                       = InDetTrigFlags.doNNToTCalibration(),
                                                                      NnCollectionReadKey          = 'PixelClusterNN',
                                                                      NnCollectionWithTrackReadKey = 'PixelClusterNNWithTrack')

    ToolSvc += TrigNnClusterizationFactory
    
    from IOVDbSvc.CondDB import conddb
    if InDetTrigFlags.doTIDE_RescalePixelCovariances() :
      if not conddb.folderRequested('/PIXEL/PixelClustering/PixelCovCorr'):
        conddb.addFolder("PIXEL_OFL","/PIXEL/PixelClustering/PixelCovCorr")

  else:
    TrigNnClusterizationFactory = None

  if (InDetTrigFlags.doPrintConfigurables()):
    print (TrigNnClusterizationFactory)

  InDetTrigPixelClusterOnTrackTool = InDet__PixelClusterOnTrackTool("InDetTrigPixelClusterOnTrackTool",
                                                                    ErrorStrategy = 2,
                                                                    LorentzAngleTool = TrigPixelLorentzAngleTool,
                                                                    NnClusterizationFactory= TrigNnClusterizationFactory,
  )

  ToolSvc += InDetTrigPixelClusterOnTrackTool

  if (InDetTrigFlags.doPrintConfigurables()):
    print (InDetTrigPixelClusterOnTrackTool)

  # tool to always make conservative sct cluster errors
  from SiClusterOnTrackTool.SiClusterOnTrackToolConf import InDet__SCT_ClusterOnTrackTool
  InDetTrigBroadSCT_ClusterOnTrackTool = InDet__SCT_ClusterOnTrackTool ("InDetTrigBroadSCT_ClusterOnTrackTool",
                                         CorrectionStrategy = 0,  # do correct position bias
                                         ErrorStrategy      = 0,  # do use broad errors
                                         LorentzAngleTool   = TrigSCTLorentzAngleTool)
  ToolSvc += InDetTrigBroadSCT_ClusterOnTrackTool
  if (InDetTrigFlags.doPrintConfigurables()):
    print (InDetTrigBroadSCT_ClusterOnTrackTool)

  #--
  from InDetTrigRecExample.InDetTrigConditionsAccess import PixelConditionsSetup
  InDetTrigBroadPixelClusterOnTrackTool = InDet__PixelClusterOnTrackTool("InDetTrigBroadPixelClusterOnTrackTool",
                                                                         ErrorStrategy = 0,
                                                                         LorentzAngleTool = TrigPixelLorentzAngleTool,
                                                                         NnClusterizationFactory= TrigNnClusterizationFactory
  )
  ToolSvc += InDetTrigBroadPixelClusterOnTrackTool
  if (InDetTrigFlags.doPrintConfigurables()):
    print (InDetTrigBroadPixelClusterOnTrackTool)

  # load RIO_OnTrackCreator for Inner Detector
  #

  from TrkRIO_OnTrackCreator.TrkRIO_OnTrackCreatorConf import Trk__RIO_OnTrackCreator
  InDetTrigRotCreator = Trk__RIO_OnTrackCreator(name = 'InDetTrigRotCreator',
                                                ToolPixelCluster= InDetTrigPixelClusterOnTrackTool,
                                                ToolSCT_Cluster = SCT_ClusterOnTrackTool,
                                                Mode = 'indet')
  ToolSvc += InDetTrigRotCreator

  if InDetTrigFlags.useBroadClusterErrors():
    InDetTrigRotCreator.ToolPixelCluster = InDetTrigBroadPixelClusterOnTrackTool
    InDetTrigRotCreator.ToolSCT_Cluster  = InDetTrigBroadSCT_ClusterOnTrackTool

  if (InDetTrigFlags.doPrintConfigurables()):
    print (InDetTrigRotCreator)

  #--
  from TrkRIO_OnTrackCreator.TrkRIO_OnTrackCreatorConf import Trk__RIO_OnTrackCreator
  InDetTrigBroadInDetRotCreator = \
      Trk__RIO_OnTrackCreator(name            = 'InDetTrigBroadInDetRotCreator',
                              ToolPixelCluster= InDetTrigBroadPixelClusterOnTrackTool,
                              ToolSCT_Cluster = InDetTrigBroadSCT_ClusterOnTrackTool,
                              Mode            = 'indet')
  ToolSvc += InDetTrigBroadInDetRotCreator
  if (InDetTrigFlags.doPrintConfigurables()):
    print (InDetTrigBroadInDetRotCreator)

  # load error scaling
  #TODO - instanceName?
  from InDetRecExample.TrackingCommon import createAndAddCondAlg, getRIO_OnTrackErrorScalingCondAlg
  createAndAddCondAlg(getRIO_OnTrackErrorScalingCondAlg,'RIO_OnTrackErrorScalingCondAlg')

  #
  # smart ROT creator in case we do the TRT LR in the refit
  #
  if InDetTrigFlags.redoTRT_LR():

    from InDetRecExample.TrackingCommon import getInDetTRT_DriftCircleOnTrackTool
    from TRT_DriftCircleOnTrackTool.TRT_DriftCircleOnTrackToolConf import \
        InDet__TRT_DriftCircleOnTrackUniversalTool
    InDetTrigTRT_RefitRotCreator = \
        InDet__TRT_DriftCircleOnTrackUniversalTool(name  = 'InDetTrigTRT_RefitRotCreator',
                                                   RIOonTrackToolDrift = getInDetTRT_DriftCircleOnTrackTool(), # special settings for trigger needed ?
                                                   ScaleHitUncertainty = 2.5) # fix from Thijs
#    if InDetTrigFlags.doCommissioning():    #introduced for cosmics do not use for collisions
#      InDetTrigTRT_RefitRotCreator.ScaleHitUncertainty = 5.
    ToolSvc += InDetTrigTRT_RefitRotCreator
      
    if (InDetTrigFlags.doPrintConfigurables()):
      print (     InDetTrigTRT_RefitRotCreator)
  
    from TrkRIO_OnTrackCreator.TrkRIO_OnTrackCreatorConf import Trk__RIO_OnTrackCreator
    InDetTrigRefitRotCreator = Trk__RIO_OnTrackCreator(name              = 'InDetTrigRefitRotCreator',
                                                       ToolPixelCluster= InDetTrigPixelClusterOnTrackTool,
                                                       ToolSCT_Cluster     = SCT_ClusterOnTrackTool,
                                                       ToolTRT_DriftCircle = InDetTrigTRT_RefitRotCreator,
                                                       Mode                = 'indet')
    if InDetTrigFlags.useBroadClusterErrors():
      InDetTrigRefitRotCreator.ToolPixelCluster = InDetTrigBroadPixelClusterOnTrackTool
      InDetTrigRefitRotCreator.ToolSCT_Cluster  = InDetTrigBroadSCT_ClusterOnTrackTool

    ToolSvc += InDetTrigRefitRotCreator
    if (InDetTrigFlags.doPrintConfigurables()):
      print (     InDetTrigRefitRotCreator)
         
  else:
    InDetTrigRefitRotCreator = InDetTrigRotCreator

#
# ----------- control loading of the kalman updator
#
if InDetTrigFlags.loadUpdator():
   
  if InDetTrigFlags.kalmanUpdator() is "fast" :
    # fast Kalman updator tool
    from TrkMeasurementUpdator_xk.TrkMeasurementUpdator_xkConf import Trk__KalmanUpdator_xk
    InDetTrigUpdator = Trk__KalmanUpdator_xk(name = 'InDetTrigUpdator')
  elif InDetTrigFlags.kalmanUpdator() is "weight" :
    from TrkMeasurementUpdator.TrkMeasurementUpdatorConf import Trk__KalmanWeightUpdator as ConfiguredWeightUpdator
    InDetTrigUpdator = ConfiguredWeightUpdator(name='InDetTrigUpdator')
  else :
    from TrkMeasurementUpdator.TrkMeasurementUpdatorConf import Trk__KalmanUpdator as ConfiguredKalmanUpdator
    InDetTrigUpdator = ConfiguredKalmanUpdator('InDetTrigUpdator')

  ToolSvc += InDetTrigUpdator
  if (InDetTrigFlags.doPrintConfigurables()):
    print (     InDetTrigUpdator)

  # ---------- control loading of the gsf updator
  if InDetTrigFlags.trackFitterType() is 'GaussianSumFilter' :
    # Load the Gsf Measurement Updator

    from TrkGaussianSumFilter.TrkGaussianSumFilterConf import Trk__GsfMeasurementUpdator
    InDetTrigGsfMeasurementUpdator = Trk__GsfMeasurementUpdator( name    = 'InDetTrigGsfMeasurementUpdator',
                                                                 Updator = InDetTrigUpdator )
    ToolSvc += InDetTrigGsfMeasurementUpdator
    if (InDetTrigFlags.doPrintConfigurables()):
      print (     InDetTrigGsfMeasurementUpdator)

#
# ----------- control loading extrapolation
#
if InDetTrigFlags.loadExtrapolator():

  # set up geometry
  from AthenaCommon.Include import include
  from TrkDetDescrSvc.AtlasTrackingGeometrySvc import AtlasTrackingGeometrySvc
  
  #
  # get propagator
  #
  from TrkExSTEP_Propagator.TrkExSTEP_PropagatorConf import Trk__STEP_Propagator
  InDetTrigStepPropagator = Trk__STEP_Propagator(name = 'InDetTrigStepPropagator')
  ToolSvc += InDetTrigStepPropagator
  
  from TrkExRungeKuttaPropagator.TrkExRungeKuttaPropagatorConf import Trk__RungeKuttaPropagator
  InDetTrigRKPropagator = Trk__RungeKuttaPropagator(name = 'InDetTrigRKPropagator')
  ToolSvc += InDetTrigRKPropagator
  
  if InDetTrigFlags.propagatorType() is "STEP":
    InDetTrigPropagator = InDetTrigStepPropagator
  else:
    InDetTrigPropagator = InDetTrigRKPropagator
    
  if (InDetTrigFlags.doPrintConfigurables()):
    print (     InDetTrigPropagator      )

  #
  # Setup the Navigator (default, could be removed)
  #
  from AthenaCommon.AppMgr import ServiceMgr as svcMgr
  AtlasTrackingGeometrySvc  = svcMgr.AtlasTrackingGeometrySvc 

  from TrkExTools.TrkExToolsConf import Trk__Navigator
  InDetTrigNavigator = Trk__Navigator(name = 'InDetTrigNavigator',
                                      TrackingGeometrySvc = AtlasTrackingGeometrySvc)

  ToolSvc += InDetTrigNavigator
  if (InDetTrigFlags.doPrintConfigurables()):
    print (     InDetTrigNavigator)

  #
  # Setup the MaterialEffectsUpdator
  #
  from TrkExTools.TrkExToolsConf import Trk__MaterialEffectsUpdator
  InDetTrigMaterialUpdator = Trk__MaterialEffectsUpdator(name = "InDetTrigMaterialEffectsUpdator")

  ToolSvc += InDetTrigMaterialUpdator
  if (InDetTrigFlags.doPrintConfigurables()):
    print (     InDetTrigMaterialUpdator)

  #
  # Set up extrapolator
  #

  InDetTrigSubPropagators = []
  InDetTrigSubUpdators = []
  
  # -------------------- set it depending on the geometry --------------
  # default for ID is (Rk,Mat)
  InDetTrigSubPropagators += [ InDetTrigPropagator.name() ]
  InDetTrigSubUpdators    += [ InDetTrigMaterialUpdator.name() ]
  
  # default for Calo is (Rk,MatLandau)
  InDetTrigSubPropagators += [ InDetTrigPropagator.name() ]
  InDetTrigSubUpdators    += [ InDetTrigMaterialUpdator.name() ]
  
  # default for MS is (STEP,Mat)
  InDetTrigSubPropagators += [ InDetTrigStepPropagator.name() ]
  InDetTrigSubUpdators    += [ InDetTrigMaterialUpdator.name() ]

  from TrkExTools.TrkExToolsConf import Trk__Extrapolator
  InDetTrigExtrapolator = Trk__Extrapolator(name        = 'InDetTrigExtrapolator',
                                            Propagators             = [ InDetTrigRKPropagator, InDetTrigStepPropagator],
                                            MaterialEffectsUpdators = [ InDetTrigMaterialUpdator ],
                                            Navigator               = InDetTrigNavigator,
                                            SubPropagators          = InDetTrigSubPropagators,
                                            SubMEUpdators           = InDetTrigSubUpdators,
                                            #DoCaloDynamic          = False
                                            )

  ToolSvc += InDetTrigExtrapolator
  if (InDetTrigFlags.doPrintConfigurables()):
    print (     InDetTrigExtrapolator                                          )

#
# ----------- control loading of fitters
#
if InDetTrigFlags.loadFitter():
  if InDetTrigFlags.trackFitterType() is 'KalmanFitter' or InDetTrigFlags.trackFitterType() is 'KalmanDNAFitter':

    from InDetCompetingRIOsOnTrackTool.InDetCompetingRIOsOnTrackToolConf \
         import InDet__CompetingPixelClustersOnTrackTool as IDCPCOTT
    InDetTrigCompetingPixelTool = IDCPCOTT(name='TrigKalmanCompetingPixelClustersTool',
                                           ToolForPixelClusterOnTrackCreation=InDetTrigBroadPixelClusterOnTrackTool,
                                           WeightCutValueBarrel = 5.5,
                                           WeightCutValueEndCap = 5.5)
    ToolSvc+=InDetTrigCompetingPixelTool
    if (InDetTrigFlags.doPrintConfigurables()):
      print (InDetTrigCompetingPixelTool)

    from InDetCompetingRIOsOnTrackTool.InDetCompetingRIOsOnTrackToolConf \
         import InDet__CompetingSCT_ClustersOnTrackTool as IDCSCOTT
    InDetTrigCompetingSctTool = IDCSCOTT(name='TrigKalmanCompetingSCT_ClustersTool',
                                             WeightCutValueBarrel = 5.5,
                                             WeightCutValueEndCap = 5.5)
    ToolSvc+=InDetTrigCompetingSctTool
    if (InDetTrigFlags.doPrintConfigurables()):
      print (InDetTrigCompetingSctTool)
    
    from TrkCompetingRIOsOnTrackTool.TrkCompetingRIOsOnTrackToolConf \
         import Trk__CompetingRIOsOnTrackTool as CompRotTool
    InDetTrigKalmanCompetingROT_Tool = CompRotTool(name='TrigKalmanCompetingRIOsTool',
                                                       ToolForCompPixelClusters = InDetTrigCompetingPixelTool,
                                                       ToolForCompSCT_Clusters = InDetTrigCompetingSctTool)
    ToolSvc += InDetTrigKalmanCompetingROT_Tool
    if (InDetTrigFlags.doPrintConfigurables()):
      print (InDetTrigKalmanCompetingROT_Tool)

    from TrkKalmanFitter.TrkKalmanFitterConf import Trk__KalmanPiecewiseAnnealingFilter as KPAF
    InDetTrigKalmanInternalDAF = KPAF(name = 'KalmanInternalDAF',
                                          CompetingRIOsOnTrackCreator = InDetTrigKalmanCompetingROT_Tool)
    ToolSvc += InDetTrigKalmanInternalDAF
    if (InDetTrigFlags.doPrintConfigurables()):
      print (InDetTrigKalmanInternalDAF)

    if InDetTrigFlags.trackFitterType() is 'KalmanDNAFitter':
      from TrkDynamicNoiseAdjustor.TrkDynamicNoiseAdjustorConf import Trk__InDetDynamicNoiseAdjustment
      InDetTrigDNAdjustor = Trk__InDetDynamicNoiseAdjustment(name       = 'InDetTrigDNAdjustor')
      ToolSvc += InDetTrigDNAdjustor
      if (InDetTrigFlags.doPrintConfigurables()):
        print (     InDetTrigDNAdjustor)
            
      from InDetDNASeparator.InDetDNASeparatorConf import InDet__InDetDNASeparator
      InDetTrigDNASeparator = InDet__InDetDNASeparator(name="InDetTrigDNASeparator")
            
      ToolSvc += InDetTrigDNASeparator
      if (InDetTrigFlags.doPrintConfigurables()):
        print (     InDetTrigDNASeparator)
    
    else:
      InDetTrigDNAdjustor   = None
      InDetTrigDNASeparator = None
            
    # Load Kalman Filter tools
    from TrkKalmanFitter.TrkKalmanFitterConf import Trk__ForwardKalmanFitter as PublicFKF
    InDetTrigFKF = PublicFKF(name                  = 'InDetTrigFKF',
                                 StateChi2PerNDFPreCut = 30.0)
    ToolSvc += InDetTrigFKF
    if (InDetTrigFlags.doPrintConfigurables()):
      print (     InDetTrigFKF)

    from TrkKalmanFitter.TrkKalmanFitterConf import Trk__KalmanSmoother as PublicBKS
    InDetTrigBKS = PublicBKS(name                        = 'InDetTrigBKS',
                                 InitialCovarianceSeedFactor = 200.)
    ToolSvc += InDetTrigBKS
    if (InDetTrigFlags.doPrintConfigurables()):
      print (     InDetTrigBKS)

    from TrkKalmanFitter.TrkKalmanFitterConf import Trk__KalmanOutlierLogic as PublicKOL
    InDetTrigKOL = PublicKOL(name                    = 'InDetTrigKOL',
                                 TrackChi2PerNDFCut      = 17.0,
                                 StateChi2PerNDFCut      = 12.5)
    ToolSvc += InDetTrigKOL
    if (InDetTrigFlags.doPrintConfigurables()):
      print (     InDetTrigKOL)

    from TrkKalmanFitter.TrkKalmanFitterConf import Trk__MeasRecalibSteeringTool
    InDetTrigMeasRecalibST = Trk__MeasRecalibSteeringTool(name='InDetTrigMeasRecalibST',
                                                          CommonRotCreator=InDetTrigRefitRotCreator,
                                                          BroadPixelClusterOnTrackTool=InDetTrigBroadPixelClusterOnTrackTool,
                                                          BroadSCT_ClusterOnTrackTool=InDetTrigBroadSCT_ClusterOnTrackTool,
                                                          #TRT_DriftCircleOnTrackTool=,
                                                          #TRT_StrawTubeOnTrackTool=,
                                                          )

    ToolSvc += InDetTrigMeasRecalibST
    if (InDetTrigFlags.doPrintConfigurables()):
      print (     InDetTrigMeasRecalibST)

    from TrkKalmanFitter.TrkKalmanFitterConf import Trk__KalmanFitter as ConfiguredKalmanFitter
    InDetTrigTrackFitter = ConfiguredKalmanFitter(name                           = 'InDetTrigTrackFitter',
                                                      ExtrapolatorHandle             = InDetTrigExtrapolator,
                                                      RIO_OnTrackCreatorHandle       = InDetTrigRefitRotCreator,
                                                      MeasurementUpdatorHandle       = InDetTrigUpdator,
                                                      ForwardKalmanFitterHandle      = InDetTrigFKF,
                                                      KalmanSmootherHandle           = InDetTrigBKS,
                                                      KalmanOutlierLogicHandle       = InDetTrigKOL,
                                                      DynamicNoiseAdjustorHandle     = InDetTrigDNAdjustor,
                                                      BrempointAnalyserHandle        = InDetTrigDNASeparator,
                                                      AlignableSurfaceProviderHandle = None,
                                                      RecalibratorHandle             = InDetTrigMeasRecalibST,
                                                      InternalDAFHandle              = InDetTrigKalmanInternalDAF)

    
  elif InDetTrigFlags.trackFitterType() is 'DistributedKalmanFilter' :
   
    from TrkDistributedKalmanFilter.TrkDistributedKalmanFilterConf import Trk__DistributedKalmanFilter
    InDetTrigTrackFitter = Trk__DistributedKalmanFilter(name             = 'InDetTrigTrackFitter',
                                                        ExtrapolatorTool = InDetTrigExtrapolator,
                                                        ROTcreator       = InDetTrigRotCreator
                                                        #sortingReferencePoint = ???
                                                        )
   
  elif InDetTrigFlags.trackFitterType() is 'GlobalChi2Fitter' :

    from TrkGlobalChi2Fitter.TrkGlobalChi2FitterConf import Trk__GlobalChi2Fitter
    InDetTrigTrackFitter = Trk__GlobalChi2Fitter(name                  = 'InDetTrigTrackFitter',
                                                 ExtrapolationTool     = InDetTrigExtrapolator,
                                                 NavigatorTool         = InDetTrigNavigator,
                                                 PropagatorTool        = InDetTrigPropagator,		
                                                 RotCreatorTool        = InDetTrigRefitRotCreator,
                                                 BroadRotCreatorTool   = InDetTrigBroadInDetRotCreator,
                                                 MeasurementUpdateTool = InDetTrigUpdator,
                                                 TrackingGeometrySvc   = AtlasTrackingGeometrySvc,
                                                 MaterialUpdateTool    = InDetTrigMaterialUpdator,
                                                 StraightLine          = not InDetTrigFlags.solenoidOn(),
                                                 OutlierCut            = 4,
                                                 SignedDriftRadius     = True,
                                                 RecalibrateSilicon    = True,
                                                 RecalibrateTRT        = True,
                                                 ReintegrateOutliers   = True,
                                                 TrackChi2PerNDFCut    = 9,
                                                 TRTExtensionCuts      = True, 
                                                 MaxIterations         = 40,
                                                 Acceleration          = True,
                                                 #Momentum=1000.,
                                                 Momentum=0.,
                                                 )
    if InDetTrigFlags.useBroadClusterErrors():
      InDetTrigTrackFitter.RecalibrateSilicon = False

    if InDetTrigFlags.doRefit():
      InDetTrigTrackFitter.BroadRotCreatorTool = None
      InDetTrigTrackFitter.RecalibrateSilicon = False
      InDetTrigTrackFitter.RecalibrateTRT     = False
      InDetTrigTrackFitter.ReintegrateOutliers= False


    if InDetTrigFlags.doRobustReco():
      InDetTrigTrackFitter.OutlierCut         = 10.0
      InDetTrigTrackFitter.TrackChi2PerNDFCut = 20
      InDetTrigTrackFitter.MaxOutliers        = 99
      #only switch off for cosmics InDetTrigTrackFitter.Acceleration       = False
      
    InDetTrigTrackFitterLowPt = Trk__GlobalChi2Fitter(name                  = 'InDetTrigTrackFitterLowPt',
                                                      ExtrapolationTool     = InDetTrigExtrapolator,
                                                      NavigatorTool         = InDetTrigNavigator,
                                                      PropagatorTool        = InDetTrigPropagator,		
                                                      RotCreatorTool        = InDetTrigRefitRotCreator,
                                                      BroadRotCreatorTool   = InDetTrigBroadInDetRotCreator,
                                                      MeasurementUpdateTool = InDetTrigUpdator,
                                                      StraightLine          = not InDetTrigFlags.solenoidOn(),
                                                      OutlierCut            = 5.0,
                                                      SignedDriftRadius     = True,
                                                      RecalibrateSilicon    = True,
                                                      RecalibrateTRT        = True,
                                                      ReintegrateOutliers   = True,
                                                      TrackChi2PerNDFCut    = 10,
                                                      TRTExtensionCuts      = True, 
                                                      MaxIterations         = 40,
                                                      Momentum=0.
                                                      )
    ToolSvc += InDetTrigTrackFitterLowPt



    #for cosmics
    InDetTrigTrackFitterCosmics = \
        Trk__GlobalChi2Fitter(name = 'InDetTrigTrackFitterCosmics',
                              ExtrapolationTool     = InDetTrigExtrapolator,
                              NavigatorTool         = InDetTrigNavigator,
                              PropagatorTool        = InDetTrigPropagator,		
                              RotCreatorTool        = InDetTrigRefitRotCreator,
                              BroadRotCreatorTool   = InDetTrigBroadInDetRotCreator,
                              MeasurementUpdateTool = InDetTrigUpdator,
                              StraightLine          = not InDetTrigFlags.solenoidOn(),
                              OutlierCut            = 10.0,
                              SignedDriftRadius     = True,
                              RecalibrateTRT        = True,
                              ReintegrateOutliers   = True,
                              TrackChi2PerNDFCut    = 20,
                              TRTExtensionCuts      = False, 
                              MaxIterations         = 40,
                              MaxOutliers           = 99,
                              RecalculateDerivatives = True,
                              Momentum=1000,
                              )
    InDetTrigTrackFitterCosmics.Acceleration       = False
    ToolSvc += InDetTrigTrackFitterCosmics

    #TRT
    InDetTrigTrackFitterTRT = Trk__GlobalChi2Fitter(name                  = 'InDetTrigTrackFitterTRT',
                                                    ExtrapolationTool     = InDetTrigExtrapolator,
                                                    NavigatorTool         = InDetTrigNavigator,
                                                    PropagatorTool        = InDetTrigPropagator,
                                                    RotCreatorTool        = InDetTrigRefitRotCreator,
                                                    MeasurementUpdateTool = InDetTrigUpdator,
                                                    StraightLine          = not InDetTrigFlags.solenoidOn(),
                                                    ReintegrateOutliers   = False,
                                                    MaxIterations         = 30,
                                                    #MaxOutliers           = 99,
                                                    RecalculateDerivatives= True,
                                                    TrackChi2PerNDFCut    = 999999,
                                                    Momentum=0.,
                                                    )
    if InDetTrigFlags.doRobustReco():
      InDetTrigTrackFitterTRT.MaxOutliers=99
            
  elif InDetTrigFlags.trackFitterType() is 'GaussianSumFilter' :
    #
    # component Reduction
    #
    from TrkGaussianSumFilter.TrkGaussianSumFilterConf import Trk__CloseComponentsMultiStateMerger
    InDetTrigGsfComponentReduction = \
        Trk__CloseComponentsMultiStateMerger (name = 'InDetTrigGsfComponentReduction',
                                              MaximumNumberOfComponents = 12)
    ToolSvc += InDetTrigGsfComponentReduction
    if (InDetTrigFlags.doPrintConfigurables()):
      print (     InDetTrigGsfComponentReduction)
    
    from TrkGaussianSumFilter.TrkGaussianSumFilterConf import Trk__GsfMaterialMixtureConvolution
    InDetTrigGsfMaterialUpdator = Trk__GsfMaterialMixtureConvolution (name = 'InDetTrigGsfMaterialUpdator',
                                                                      MultiComponentStateMerger = InDetTrigGsfComponentReduction)
    ToolSvc += InDetTrigGsfMaterialUpdator
    if (InDetTrigFlags.doPrintConfigurables()):
      print (     InDetTrigGsfMaterialUpdator)
    #
    # declare the extrapolator
    #
    from TrkGaussianSumFilter.TrkGaussianSumFilterConf import Trk__GsfExtrapolator
    InDetTrigGsfExtrapolator = Trk__GsfExtrapolator(name = 'InDetTrigGsfExtrapolator',
                                                    Propagators                   = [ InDetTrigPropagator ],
                                                    SearchLevelClosestParameters  = 10,
                                                    StickyConfiguration           = True,
                                                    Navigator                     = InDetTrigNavigator,
                                                    GsfMaterialConvolution        = InDetTrigGsfMaterialUpdator,
                                                    SurfaceBasedMaterialEffects   = False )
    ToolSvc += InDetTrigGsfExtrapolator
    if (InDetTrigFlags.doPrintConfigurables()):
      print (     InDetTrigGsfExtrapolator)
    # load alternative track fitter
    from TrkGaussianSumFilter.TrkGaussianSumFilterConf import Trk__GaussianSumFitter
    InDetTrigTrackFitter = Trk__GaussianSumFitter(name                    = 'InDetTrigTrackFitter',
                                                  ToolForExtrapolation    = InDetTrigGsfExtrapolator,
                                                  MeasurementUpdatorType  = InDetTrigGsfMeasurementUpdator,
                                                  ToolForROTCreation      = InDetTrigRotCreator,
                                                  ReintegrateOutliers     = False,
                                                  MakePerigee             = True,
                                                  RefitOnMeasurementBase  = True,
                                                  DoHitSorting            = True)
    
    
   # --- end of fitter loading
  ToolSvc += InDetTrigTrackFitter
  if (InDetTrigFlags.doPrintConfigurables()):
    print (     InDetTrigTrackFitter)
    
  if InDetTrigFlags.trackFitterType() is not 'GlobalChi2Fitter' :
    InDetTrigTrackFitterTRT=InDetTrigTrackFitter
    InDetTrigTrackFitterLowPt=InDetTrigTrackFitter
    ToolSvc += InDetTrigTrackFitterLowPt
    InDetTrigTrackFitterCosmics=InDetTrigTrackFitter
    
  ToolSvc += InDetTrigTrackFitterTRT
  if (InDetTrigFlags.doPrintConfigurables()):
    print (     InDetTrigTrackFitterTRT)



InDetTrigPixelConditionsSummaryTool = PixelConditionsSetup.summaryTool

if DetFlags.haveRIO.SCT_on():
  from InDetTrigRecExample.InDetTrigConditionsAccess import SCT_ConditionsSetup
  from SCT_ConditionsTools.SCT_ConditionsToolsConf import SCT_ConditionsSummaryTool
  InDetTrigSCTConditionsSummaryTool = SCT_ConditionsSummaryTool(SCT_ConditionsSetup.instanceName('InDetSCT_ConditionsSummaryTool'))
else:
  InDetTrigSCTConditionsSummaryTool = None

#
# ------load association tool from Inner Detector to handle pixel ganged ambiguities
#
if InDetTrigFlags.loadAssoTool():
  from InDetAssociationTools.InDetAssociationToolsConf import InDet__InDetPRD_AssociationToolGangedPixels
  InDetTrigPrdAssociationTool = InDet__InDetPRD_AssociationToolGangedPixels(name = "InDetTrigPrdAssociationTool",
                                                                             PixelClusterAmbiguitiesMapName = "TrigPixelClusterAmbiguitiesMap")
   
  ToolSvc += InDetTrigPrdAssociationTool
  if (InDetTrigFlags.doPrintConfigurables()):
    print (     InDetTrigPrdAssociationTool)

#
# ----------- control loading of Summary Tool
#
if InDetTrigFlags.loadSummaryTool():

  # Load Pixel Layer tool
  from InDetTestPixelLayer.InDetTestPixelLayerConf import InDet__InDetTestPixelLayerTool
  InDetTrigTestPixelLayerTool = InDet__InDetTestPixelLayerTool(name             = "InDetTrigTestPixelLayerTool",
                                                               PixelSummaryTool = InDetTrigPixelConditionsSummaryTool,
                                                               Extrapolator     = InDetTrigExtrapolator,
                                                               CheckActiveAreas = True,
                                                               CheckDeadRegions = True)
  ToolSvc += InDetTrigTestPixelLayerTool
  if (InDetTrigFlags.doPrintConfigurables()):
    print ( InDetTrigTestPixelLayerTool)

  from InDetBoundaryCheckTool.InDetBoundaryCheckToolConf import InDet__InDetBoundaryCheckTool
  InDetTrigBoundaryCheckTool = InDet__InDetBoundaryCheckTool(
    name="InDetTrigBoundaryCheckTool",
    UsePixel=DetFlags.haveRIO.pixel_on(),
    UseSCT=DetFlags.haveRIO.SCT_on(),
    SctSummaryTool = InDetTrigSCTConditionsSummaryTool,
    PixelLayerTool=InDetTrigTestPixelLayerTool
  )
  ToolSvc += InDetTrigBoundaryCheckTool


   #
   # Loading Configurable HoleSearchTool
   #
  from InDetTrackHoleSearch.InDetTrackHoleSearchConf import InDet__InDetTrackHoleSearchTool

  InDetTrigHoleSearchTool = InDet__InDetTrackHoleSearchTool(name = "InDetTrigHoleSearchTool",
                                                            Extrapolator = InDetTrigExtrapolator,
                                                            BoundaryCheckTool=InDetTrigBoundaryCheckTool
                                                            )
                                                            #Commissioning = InDetTrigFlags.doCommissioning()) #renamed
  InDetTrigHoleSearchTool.CountDeadModulesAfterLastHit = True  

  ToolSvc += InDetTrigHoleSearchTool
  if (InDetTrigFlags.doPrintConfigurables()):
    print (     InDetTrigHoleSearchTool)

  # Load BLayer tool
  from InDetTestBLayer.InDetTestBLayerConf import InDet__InDetTestBLayerTool
  InDetTrigTestBLayerTool = InDet__InDetTestBLayerTool(name            = "InDetTrigTestBLayerTool",
                                                       PixelSummaryTool = InDetTrigPixelConditionsSummaryTool,
                                                       Extrapolator    = InDetTrigExtrapolator,
                                                       CheckActiveAreas= True)
  ToolSvc += InDetTrigTestBLayerTool
  if (InDetTrigFlags.doPrintConfigurables()):
    print ( InDetTrigTestBLayerTool)

  #prevent loading of the pixel dE/dx tool  
  InDetTrigPixelToTPIDTool = None
  if (InDetTrigFlags.doPrintConfigurables()):
    print (    'InDetTrigPixelToTPIDTool ', InDetTrigPixelToTPIDTool)

  #
  # Configrable version of loading the InDetTrackSummaryHelperTool
  #
  from AthenaCommon.GlobalFlags import globalflags
  
  from InDetTrigRecExample.InDetTrigCommonTools import InDetTrigTRTStrawStatusSummaryTool
  
  from InDetTrackSummaryHelperTool.InDetTrackSummaryHelperToolConf import InDet__InDetTrackSummaryHelperTool
  from InDetTrigRecExample.InDetTrigConditionsAccess import TRT_ConditionsSetup
  InDetTrigTrackSummaryHelperTool = InDet__InDetTrackSummaryHelperTool(name          = "InDetTrigSummaryHelper",
                                                                       HoleSearch    = InDetTrigHoleSearchTool,
                                                                       AssoTool      = InDetTrigPrdAssociationTool,
                                                                       TestBLayerTool = None,
                                                                       PixelToTPIDTool= InDetTrigPixelToTPIDTool,
                                                                       DoSharedHits  = False,
                                                                       TRTStrawSummarySvc=InDetTrigTRTStrawStatusSummaryTool,
                                                                       usePixel      = DetFlags.haveRIO.pixel_on(),
                                                                       useSCT        = DetFlags.haveRIO.SCT_on(),
                                                                       useTRT        = DetFlags.haveRIO.TRT_on())
    
  ToolSvc += InDetTrigTrackSummaryHelperTool
  if (InDetTrigFlags.doPrintConfigurables()):
    print (     InDetTrigTrackSummaryHelperTool)

  #
  # Configurable version of TRT_ElectronPidTools
  #
  from IOVDbSvc.CondDB import conddb

  if not (conddb.folderRequested("/TRT/Calib/PID_vector") or \
            conddb.folderRequested("/TRT/Onl/Calib/PID_vector")):
    conddb.addFolderSplitOnline("TRT","/TRT/Onl/Calib/PID_vector","/TRT/Calib/PID_vector",className='CondAttrListVec')
  if not (conddb.folderRequested("/TRT/Calib/ToT/ToTVectors") or \
            conddb.folderRequested("/TRT/Onl/Calib/ToT/ToTVectors")):
    conddb.addFolderSplitOnline("TRT","/TRT/Onl/Calib/ToT/ToTVectors","/TRT/Calib/ToT/ToTVectors",className='CondAttrListVec')
  if not (conddb.folderRequested("/TRT/Calib/ToT/ToTValue") or \
            conddb.folderRequested("/TRT/Onl/Calib/ToT/ToTValue")):
    conddb.addFolderSplitOnline("TRT","/TRT/Onl/Calib/ToT/ToTValue","/TRT/Calib/ToT/ToTValue",className='CondAttrListCollection')

  from TrigInDetConfig.InDetTrigCollectionKeys import TrigTRTKeys
  from TRT_ElectronPidTools.TRT_ElectronPidToolsConf import InDet__TRT_ElectronPidToolRun2,InDet__TRT_LocalOccupancy,TRT_ToT_dEdx
  from InDetTrigRecExample.InDetTrigConditionsAccess import TRT_ConditionsSetup
  # Calibration DB Tool
  from TRT_ConditionsServices.TRT_ConditionsServicesConf import TRT_CalDbTool
  InDetTRTCalDbTool = TRT_CalDbTool(name = "TRT_CalDbTool")

  TRT_RDO_Key = "TRT_RDOs"
  if globalflags.DataSource == 'data':
      TRT_RDO_Key = TrigTRTKeys.RDOs
      

  InDetTrigTRT_LocalOccupancy = InDet__TRT_LocalOccupancy(name ="InDetTrig_TRT_LocalOccupancy",
                                                          isTrigger = True,
                                                          TRT_RDOContainerName = TRT_RDO_Key,
                                                          TRT_DriftCircleCollection = TrigTRTKeys.DriftCircles,
                                                          TRTCalDbTool = InDetTRTCalDbTool,
                                                          TRTStrawStatusSummaryTool = InDetTrigTRTStrawStatusSummaryTool)
  ToolSvc += InDetTrigTRT_LocalOccupancy

  import InDetRecExample.TrackingCommon as TrackingCommon
  InDetTrigTRT_ToT_dEdx = TRT_ToT_dEdx(name = "InDetTrig_TRT_ToT_dEdx",
                                       AssociationTool = InDetTrigPrdAssociationTool,
                                       TRTStrawSummaryTool = InDetTrigTRTStrawStatusSummaryTool,
                                       TRT_LocalOccupancyTool = InDetTrigTRT_LocalOccupancy)
  ToolSvc += InDetTrigTRT_ToT_dEdx
  
  
  InDetTrigTRT_ElectronPidTool = InDet__TRT_ElectronPidToolRun2(name   = "InDetTrigTRT_ElectronPidTool",
                                                                TRT_LocalOccupancyTool = InDetTrigTRT_LocalOccupancy,
                                                                TRTStrawSummaryTool= InDetTrigTRTStrawStatusSummaryTool,
                                                                OccupancyUsedInPID = True,
                                                                TRT_ToT_dEdx_Tool = InDetTrigTRT_ToT_dEdx,
                                                                isData = (globalflags.DataSource == 'data'))

  ToolSvc += InDetTrigTRT_ElectronPidTool
  if (InDetTrigFlags.doPrintConfigurables()):
    print (     InDetTrigTRT_ElectronPidTool)


 
  #
  # Configurable version of TrkTrackSummaryTool
  #
  from TrkTrackSummaryTool.TrkTrackSummaryToolConf import Trk__TrackSummaryTool
  InDetTrigTrackSummaryTool = Trk__TrackSummaryTool(name = "InDetTrigTrackSummaryTool",
                                                    InDetSummaryHelperTool = InDetTrigTrackSummaryHelperTool,
                                                    doSharedHits           = False,
                                                    doHolesInDet           = True,
                                                    #this may be temporary #61512 (and used within egamma later)
                                                    #TRT_ElectronPidTool    = InDetTrigTRT_ElectronPidTool, 
                                                    TRT_ElectronPidTool    = None, 
                                                    )
  ToolSvc += InDetTrigTrackSummaryTool
  if (InDetTrigFlags.doPrintConfigurables()):
     print (     InDetTrigTrackSummaryTool)



  if InDetTrigFlags.doSharedHits():
    #
    # Configrable version of loading the InDetTrackSummaryHelperTool
    #
    from InDetTrackSummaryHelperTool.InDetTrackSummaryHelperToolConf import InDet__InDetTrackSummaryHelperTool
    from InDetTrigRecExample.InDetTrigConditionsAccess import TRT_ConditionsSetup
    InDetTrigTrackSummaryHelperToolSharedHits = InDet__InDetTrackSummaryHelperTool(name         = "InDetTrigSummaryHelperSharedHits",
                                                                                   AssoTool     = InDetTrigPrdAssociationTool,
                                                                                   DoSharedHits = InDetTrigFlags.doSharedHits(),
                                                                                   HoleSearch   = InDetTrigHoleSearchTool,
                                                                                   TestBLayerTool=InDetTrigTestBLayerTool,
                                                                                   PixelToTPIDTool=InDetTrigPixelToTPIDTool,
                                                                                   TRTStrawSummarySvc = InDetTrigTRTStrawStatusSummaryTool)

    ToolSvc += InDetTrigTrackSummaryHelperToolSharedHits
    if (InDetTrigFlags.doPrintConfigurables()):
      print (     InDetTrigTrackSummaryHelperToolSharedHits)
    #
    # Configurable version of TrkTrackSummaryTool
    #
    from TrkTrackSummaryTool.TrkTrackSummaryToolConf import Trk__TrackSummaryTool
    InDetTrigTrackSummaryToolSharedHits = Trk__TrackSummaryTool(name = "InDetTrigTrackSummaryToolSharedHits",
                                                                InDetSummaryHelperTool = InDetTrigTrackSummaryHelperToolSharedHits,
                                                                doSharedHits           = InDetTrigFlags.doSharedHits(),
                                                                doHolesInDet           = True,
                                                                TRT_ElectronPidTool    = None)

    ToolSvc += InDetTrigTrackSummaryToolSharedHits
    if (InDetTrigFlags.doPrintConfigurables()):
      print (     InDetTrigTrackSummaryToolSharedHits)


  else:   
    InDetTrigTrackSummaryToolSharedHits        = InDetTrigTrackSummaryTool   

#
# ----------- control loading of tools which are needed by new tracking and backtracking
#
if InDetTrigFlags.doNewTracking() or InDetTrigFlags.doBackTracking() or InDetTrigFlags.doTrtSegments():
  # Igor's propagator and updator for the pattern
  #
  from TrkExRungeKuttaPropagator.TrkExRungeKuttaPropagatorConf import Trk__RungeKuttaPropagator as Propagator
  InDetTrigPatternPropagator = Propagator(name = 'InDetTrigPatternPropagator')
  
  ToolSvc += InDetTrigPatternPropagator
  if (InDetTrigFlags.doPrintConfigurables()):
     print (     InDetTrigPatternPropagator)

  # fast Kalman updator tool
  #
  from TrkMeasurementUpdator_xk.TrkMeasurementUpdator_xkConf import Trk__KalmanUpdator_xk
  InDetTrigPatternUpdator = Trk__KalmanUpdator_xk(name = 'InDetTrigPatternUpdator')

  ToolSvc += InDetTrigPatternUpdator
  if (InDetTrigFlags.doPrintConfigurables()):
     print (     InDetTrigPatternUpdator)


#
# TRT segment minimum number of drift circles tool
#

from InDetTrackSelectorTool.InDetTrackSelectorToolConf import InDet__InDetTrtDriftCircleCutTool
InDetTrigTRTDriftCircleCut = InDet__InDetTrtDriftCircleCutTool(
  name             = 'InDetTrigTRTDriftCircleCut',
  MinOffsetDCs     = 5,
  UseNewParameterization = True,
  UseActiveFractionSvc   = True #DetFlags.haveRIO.TRT_on()  # Use Thomas's new parameterization by default
  )

ToolSvc += InDetTrigTRTDriftCircleCut
if (InDetTrigFlags.doPrintConfigurables()):
  print (  InDetTrigTRTDriftCircleCut)

InDetTrigTRTDriftCircleCutForPatt = InDet__InDetTrtDriftCircleCutTool(
  name             = 'InDetTrigTRTDriftCircleCutForPatt',
  MinOffsetDCs     = 5,
  UseNewParameterization = InDetTrigCutValues.useNewParameterizationTRT(),
  UseActiveFractionSvc   = True #DetFlags.haveRIO.TRT_on()  # Use Thomas's new parameterization by default
  )

ToolSvc += InDetTrigTRTDriftCircleCut
if (InDetTrigFlags.doPrintConfigurables()):
  print (  InDetTrigTRTDriftCircleCut)




    #default

# from here if InDetTrigFlags.doSiSPSeededTrackFinder():
# was unable to import with this condition from L2 TRTSegMaker

#if InDetTrigFlags.doSiSPSeededTrackFinder():
if InDetTrigFlags.doNewTracking():
  # SCT and Pixel detector elements road builder
  #
  from SiDetElementsRoadTool_xk.SiDetElementsRoadTool_xkConf import InDet__SiDetElementsRoadMaker_xk

  InDetTrigSiDetElementsRoadMaker = \
                                  InDet__SiDetElementsRoadMaker_xk(name = 'InDetTrigSiDetElementsRoadMaker',
                                                                   PropagatorTool = InDetTrigPatternPropagator,
                                                                   usePixel     = DetFlags.haveRIO.pixel_on(), 
                                                                   useSCT       = DetFlags.haveRIO.SCT_on(),
                                                                   RoadWidth    = InDetTrigCutValues.RoadWidth()
                                                                   )
  ToolSvc += InDetTrigSiDetElementsRoadMaker

  # Condition algorithm for InDet__SiDetElementsRoadMaker_xk
  if DetFlags.haveRIO.SCT_on():
    from AthenaCommon.AlgSequence import AthSequencer
    condSeq = AthSequencer("AthCondSeq")
    if not hasattr(condSeq, "InDet__SiDetElementsRoadCondAlg_xk"):
      from SiDetElementsRoadTool_xk.SiDetElementsRoadTool_xkConf import InDet__SiDetElementsRoadCondAlg_xk
      condSeq += InDet__SiDetElementsRoadCondAlg_xk(name = "InDet__SiDetElementsRoadCondAlg_xk")

  # Local combinatorial track finding using space point seed and detector element road
  #
  from SiCombinatorialTrackFinderTool_xk.SiCombinatorialTrackFinderTool_xkConf import InDet__SiCombinatorialTrackFinder_xk
  InDetTrigSiComTrackFinder = \
                            InDet__SiCombinatorialTrackFinder_xk(name = 'InDetTrigSiComTrackFinder',
                                                                 PropagatorTool	= InDetTrigPatternPropagator,
                                                                 UpdatorTool	= InDetTrigPatternUpdator,
                                                                 RIOonTrackTool   = InDetTrigRotCreator,
                                                                 usePixel         = DetFlags.haveRIO.pixel_on(),
                                                                 useSCT           = DetFlags.haveRIO.SCT_on(),   
                                                                 PixelClusterContainer = 'PixelTrigClusters',
                                                                 SCT_ClusterContainer = 'SCT_TrigClusters',
                                                                 PixelSummaryTool = InDetTrigPixelConditionsSummaryTool,
                                                                 SctSummaryTool = InDetTrigSCTConditionsSummaryTool
                                                                 )															
  if DetFlags.haveRIO.pixel_on():
    # Condition algorithm for SiCombinatorialTrackFinder_xk
    from AthenaCommon.AlgSequence import AthSequencer
    condSeq = AthSequencer("AthCondSeq")
    if not hasattr(condSeq, "InDetSiDetElementBoundaryLinksPixelCondAlg"):
      from SiCombinatorialTrackFinderTool_xk.SiCombinatorialTrackFinderTool_xkConf import InDet__SiDetElementBoundaryLinksCondAlg_xk
      condSeq += InDet__SiDetElementBoundaryLinksCondAlg_xk(name = "InDetSiDetElementBoundaryLinksPixelCondAlg",
                                                            ReadKey = "PixelDetectorElementCollection",
                                                            WriteKey = "PixelDetElementBoundaryLinks_xk")
  if DetFlags.haveRIO.SCT_on():
    # Condition algorithm for SiCombinatorialTrackFinder_xk
    from AthenaCommon.AlgSequence import AthSequencer
    condSeq = AthSequencer("AthCondSeq")
    if not hasattr(condSeq, "InDetSiDetElementBoundaryLinksSCTCondAlg"):
      from SiCombinatorialTrackFinderTool_xk.SiCombinatorialTrackFinderTool_xkConf import InDet__SiDetElementBoundaryLinksCondAlg_xk
      condSeq += InDet__SiDetElementBoundaryLinksCondAlg_xk(name = "InDetSiDetElementBoundaryLinksSCTCondAlg",
                                                            ReadKey = "SCT_DetectorElementCollection",
                                                            WriteKey = "SCT_DetElementBoundaryLinks_xk")
      #to here

import InDetRecExample.TrackingCommon as TrackingCommon
from InDetAmbiTrackSelectionTool.InDetAmbiTrackSelectionToolConf import InDet__InDetAmbiTrackSelectionTool
InDetTrigAmbiTrackSelectionTool = \
    InDet__InDetAmbiTrackSelectionTool(name               = 'InDetTrigAmbiTrackSelectionTool',
                                       DriftCircleCutTool = InDetTrigTRTDriftCircleCut,
                                       AssociationTool = TrackingCommon.getInDetTrigPRDtoTrackMapToolGangedPixels(),
                                       minHits         = InDetTrigCutValues.minClusters(),
                                       minNotShared    = InDetTrigCutValues.minSiNotShared(),
                                       maxShared       = InDetTrigCutValues.maxShared(),
                                       minTRTHits      = 0,  # used for Si only tracking !!!
                                       Cosmics         = False,  #there is a different instance
                                       UseParameterization = False,
                                       # sharedProbCut   = 0.10,
                                       # doPixelSplitting = InDetTrigFlags.doPixelClusterSplitting()
                                       )
 
 
ToolSvc += InDetTrigAmbiTrackSelectionTool
if (InDetTrigFlags.doPrintConfigurables()):
  print (InDetTrigAmbiTrackSelectionTool)

if InDetTrigFlags.doNewTracking():

  #
  # ------ load new track selector (common for all vertexing algorithms, except for the moment VKalVrt
  #
  from InDetTrigRecExample.ConfiguredVertexingTrigCuts import EFIDVertexingCuts
  from InDetTrackSelectionTool.InDetTrackSelectionToolConf import InDet__InDetTrackSelectionTool

  InDetTrigTrackSelectorTool = \
      InDet__InDetTrackSelectionTool(name = "InDetTrigDetailedTrackSelectorTool",
                                     CutLevel                   =  EFIDVertexingCuts.TrackCutLevel(),
                                     minPt                      =  EFIDVertexingCuts.minPT(),
                                     maxD0			=  EFIDVertexingCuts.IPd0Max(),
                                     maxZ0			=  EFIDVertexingCuts.z0Max(),
                                     maxZ0SinTheta              =  EFIDVertexingCuts.IPz0Max(),
                                     maxSigmaD0 = EFIDVertexingCuts.sigIPd0Max(),
                                     maxSigmaZ0SinTheta = EFIDVertexingCuts.sigIPz0Max(),
                                     # maxChiSqperNdf = EFIDVertexingCuts.fitChi2OnNdfMax(), # Seems not to be implemented?
                                     maxAbsEta = EFIDVertexingCuts.etaMax(),
                                     minNInnermostLayerHits = EFIDVertexingCuts.nHitInnermostLayer(),
                                     minNPixelHits = EFIDVertexingCuts.nHitPix(),
                                     maxNPixelHoles = EFIDVertexingCuts.nHolesPix(),
                                     minNSctHits = EFIDVertexingCuts.nHitSct(),
                                     minNTrtHits = EFIDVertexingCuts.nHitTrt(),
                                     minNSiHits = EFIDVertexingCuts.nHitSi(),
                                     TrackSummaryTool =  InDetTrigTrackSummaryTool,
                                     Extrapolator     = InDetTrigExtrapolator,
                                     #TrtDCCutTool     = InDetTrigTRTDriftCircleCut,
                                     )



  ToolSvc += InDetTrigTrackSelectorTool
  if (InDetTrigFlags.doPrintConfigurables()):
    print (     InDetTrigTrackSelectorTool)