diff --git a/InnerDetector/InDetExample/InDetRecExample/python/InDetRecExampleConfig.py b/InnerDetector/InDetExample/InDetRecExample/python/InDetRecExampleConfig.py index ab66c503ddebaf7b2c88adbf19dc3e8f23f39e7b..5ec47e436e5153d16d6aa085a267e43ced00a79a 100644 --- a/InnerDetector/InDetExample/InDetRecExample/python/InDetRecExampleConfig.py +++ b/InnerDetector/InDetExample/InDetRecExample/python/InDetRecExampleConfig.py @@ -1,9 +1,11 @@ # Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration from AthenaCommon import CfgMgr,CfgGetter +import AthenaCommon.SystemOfUnits as Units +from InDetRecExample.TrackingCommon import setDefaults def setTool(prop,tool_name,kwargs) : - if tool_name == None : + if tool_name is None : kwargs.setdefault(prop, tool_name ) return @@ -101,24 +103,49 @@ def InDetKOL(name='InDetKOL',**kwargs) : def InDetMeasRecalibST(name='InDetMeasRecalibST',**kwargs) : from TrkKalmanFitter.TrkKalmanFitterConf import Trk__MeasRecalibSteeringTool - from AthenaCommon.AppMgr import ToolSvc - kwargs.setdefault('BroadPixelClusterOnTrackTool',ToolSvc.InDetBroadPixelClusterOnTrackTool) - kwargs.setdefault('BroadSCT_ClusterOnTrackTool', ToolSvc.InDetBroadSCT_ClusterOnTrackTool) - kwargs.setdefault('CommonRotCreator', ToolSvc.InDetRefitRotCreator) + + split_cluster_map_extension = kwargs.pop('SplitClusterMapExtension','') + + from InDetRecExample import TrackingCommon as TrackingCommon + if 'BroadPixelClusterOnTrackTool' not in kwargs : + kwargs = setDefaults(kwargs, + BroadPixelClusterOnTrackTool = TrackingCommon.getInDetBroadPixelClusterOnTrackTool(nameSuffix = split_cluster_map_extension, + SplitClusterMapExtension = split_cluster_map_extension)) + if 'BroadSCT_ClusterOnTrackTool' not in kwargs : + kwargs = setDefaults(kwargs, + BroadSCT_ClusterOnTrackTool = TrackingCommon.getInDetBroadSCT_ClusterOnTrackTool()) + + if 'CommonRotCreator' not in kwargs : + kwargs=setDefaults(kwargs, + CommonRotCreator = TrackingCommon.getInDetRefitRotCreator( + SplitClusterMapExtension = split_cluster_map_extension)) + return Trk__MeasRecalibSteeringTool(name,**kwargs) def InDetKalmanTrackFitterBase(name='InDetKalmanTrackFitterBase',**kwargs) : from TrkKalmanFitter.TrkKalmanFitterConf import Trk__KalmanFitter from AthenaCommon.AppMgr import ToolSvc + split_cluster_map_extension = kwargs.get('SplitClusterMapExtension','') + kwargs.setdefault('ExtrapolatorHandle', ToolSvc.InDetExtrapolator) - kwargs.setdefault('RIO_OnTrackCreatorHandle', ToolSvc.InDetRefitRotCreator) + if 'RIO_OnTrackCreatorHandle' not in kwargs : + from InDetRecExample import TrackingCommon as TrackingCommon + kwargs=setDefaults(kwargs, + RIO_OnTrackCreatorHandle = TrackingCommon.getInDetRefitRotCreator( + SplitClusterMapExtension = split_cluster_map_extension)) + kwargs.setdefault('MeasurementUpdatorHandle', ToolSvc.InDetUpdator) setTool('KalmanSmootherHandle', 'InDetBKS', kwargs ) setTool('KalmanOutlierLogicHandle', 'InDetKOL',kwargs ) kwargs.setdefault('DynamicNoiseAdjustorHandle', None) kwargs.setdefault('BrempointAnalyserHandle', None) kwargs.setdefault('AlignableSurfaceProviderHandle',None) - setTool('RecalibratorHandle', 'InDetMeasRecalibST', kwargs ) + if len(split_cluster_map_extension)>0 : + if 'RecalibratorHandle' not in kwargs : + the_tool_name = 'InDetMeasRecalibST' + kwargs.setdefault('RecalibratorHandle', CfgGetter.getPublicToolClone(the_tool_name+split_cluster_map_extension,the_tool_name, SplitClusterMapExtension = split_cluster_map_extension) ) + else : + setTool('RecalibratorHandle', 'InDetMeasRecalibST', kwargs ) # setTool('InternalDAFHandle','KalmanInternalDAF',kwargs ) # from InDetRecExample.InDetJobProperties import InDetFlags # kwargs.setdefault('DoDNAForElectronsOnly', True if InDetFlags.doBremRecovery() and InDetFlags.trackFitterType() is 'KalmanFitter' else False) @@ -154,6 +181,235 @@ def ReferenceKalmanFitter(name='ReferenceKalmanFitter',**kwargs) : def KalmanDNAFitter(name='KalmanDNAFitter',**kwargs) : setTool('ForwardKalmanFitterHandle','InDetFKF', kwargs ) setTool('DynamicNoiseAdjustorHandle', 'InDetDNAdjustor',kwargs ) - setTool('BrempointAnalyserHandle', 'InDetDNASeparator', kwargs) + setTool('BrempointAnalyserHandle', 'InDetDNASeparator', kwargs ) setTool('InternalDAFHandle','KalmanInternalDAF',kwargs ) return InDetKalmanTrackFitterBase(name,**kwargs) + +def DistributedKalmanFilter(name="DistributedKalmanFilter", **kwargs) : + split_cluster_map_extension = kwargs.pop('SplitClusterMapExtension','') + + from AthenaCommon.AppMgr import ToolSvc + from InDetRecExample.TrackingCommon import setDefaults + if 'ExtrapolatorTool' not in kwargs : + kwargs = setDefaults(kwargs, ExtrapolatorTool = ToolSvc.InDetExtrapolator) + + from InDetRecExample import TrackingCommon as TrackingCommon + if 'ROTcreator' not in kwargs : + kwargs=setDefaults(kwargs, + ROTcreator = TrackingCommon.getInDetRotCreator( + nameSuffix = split_cluster_map_extension, + SplitClusterMapExtension = split_cluster_map_extension)) + + # @TODO set sortingReferencePoint = ??? + from TrkDistributedKalmanFilter.TrkDistributedKalmanFilterConf import Trk__DistributedKalmanFilter + return Trk__DistributedKalmanFilter(name = name, **kwargs) + + +def InDetGlobalChi2FitterBase(name='GlobalChi2FitterBase', **kwargs) : + from TrkDetDescrSvc.AtlasTrackingGeometrySvc import AtlasTrackingGeometrySvc + from InDetRecExample.TrackingCommon import setDefaults + from AthenaCommon.AppMgr import ToolSvc + from InDetRecExample.InDetJobProperties import InDetFlags + import InDetRecExample.TrackingCommon as TrackingCommon + + kwargs=setDefaults(kwargs, + ExtrapolationTool = ToolSvc.InDetExtrapolator, + NavigatorTool = ToolSvc.InDetNavigator, + PropagatorTool = ToolSvc.InDetPropagator, + MultipleScatteringTool = ToolSvc.InDetMultipleScatteringUpdator, + MeasurementUpdateTool = ToolSvc.InDetUpdator, + TrackingGeometrySvc = AtlasTrackingGeometrySvc, + MaterialUpdateTool = ToolSvc.InDetMaterialEffectsUpdator, + StraightLine = not InDetFlags.solenoidOn(), + OutlierCut = 4, + SignedDriftRadius = True, + ReintegrateOutliers = True, + RecalibrateSilicon = True, + RecalibrateTRT = True, + TRTTubeHitCut = TrackingCommon.default_ScaleHitUncertainty, + MaxIterations = 40, + Acceleration = True, + RecalculateDerivatives = InDetFlags.doMinBias() or InDetFlags.doCosmics() or InDetFlags.doBeamHalo(), + TRTExtensionCuts = True, + TrackChi2PerNDFCut = 7) + from TrkGlobalChi2Fitter.TrkGlobalChi2FitterConf import Trk__GlobalChi2Fitter + return Trk__GlobalChi2Fitter(name, **kwargs) + +def InDetGlobalChi2Fitter(name='InDetGlobalChi2Fitter', **kwargs) : + split_cluster_map_extension = kwargs.pop('SplitClusterMapExtension','') + + from InDetRecExample import TrackingCommon as TrackingCommon + if 'RotCreatorTool' not in kwargs : + kwargs=setDefaults(kwargs, + RotCreatorTool = TrackingCommon.getInDetRotCreator( + nameSuffix = split_cluster_map_extension, + SplitClusterMapExtension = split_cluster_map_extension)) + + from InDetRecExample.InDetJobProperties import InDetFlags + use_broad_cluster_any = InDetFlags.useBroadClusterErrors() and (not InDetFlags.doDBMstandalone()) + if 'BroadRotCreatorTool' not in kwargs and not InDetFlags.doRefit(): + kwargs=setDefaults(kwargs, + BroadRotCreatorTool = TrackingCommon.getInDetBroadRotCreator( + nameSuffix = split_cluster_map_extension, + SplitClusterMapExtension = split_cluster_map_extension)) + + if InDetFlags.doDBMstandalone(): + kwargs=setDefaults(kwargs, + StraightLine = True, + OutlierCut = 5, + RecalibrateTRT = False, + TRTExtensionCuts = False, + TrackChi2PerNDFCut = 20) + + if InDetFlags.doRefit() or use_broad_cluster_any is True: + kwargs=setDefaults(kwargs, + RecalibrateSilicon = False) + if InDetFlags.doRefit(): + kwargs=setDefaults(kwargs, + BroadRotCreatorTool = None, + ReintegrateOutliers = False, + RecalibrateTRT = False) + if InDetFlags.doRobustReco(): + kwargs=setDefaults(kwargs, + # BroadRotCreatorTool = None + OutlierCut = 10.0, + TrackChi2PerNDFCut = 20) + + if InDetFlags.doRobustReco() or InDetFlags.doCosmics(): + kwargs=setDefaults(kwargs, + MaxOutliers = 99) + if InDetFlags.doCosmics() or InDetFlags.doBeamHalo(): + kwargs=setDefaults(kwargs, + Acceleration = False) + + if InDetFlags.materialInteractions() and not InDetFlags.solenoidOn(): + kwargs=setDefaults(kwargs, + Momentum = 1000.*Units.MeV) + return InDetGlobalChi2FitterBase(name, **kwargs) + +def InDetGlobalChi2FitterLowPt(name='InDetGlobalChi2FitterLowPt', **kwargs) : + # @TODO TrackingGeometrySvc was not set but is set now + # RotCreatorTool and BroadRotCreatorTool not set + split_cluster_map_extension = kwargs.pop('SplitClusterMapExtension','') + + from InDetRecExample import TrackingCommon as TrackingCommon + if 'RotCreatorTool' not in kwargs : + kwargs=setDefaults(kwargs, + RotCreatorTool = TrackingCommon.getInDetRotCreator( + nameSuffix = split_cluster_map_extension, + SplitClusterMapExtension = split_cluster_map_extension)) + + from InDetRecExample.InDetJobProperties import InDetFlags + use_broad_cluster_any = InDetFlags.useBroadClusterErrors() and (not InDetFlags.doDBMstandalone()) + if 'BroadRotCreatorTool' not in kwargs and not InDetFlags.doRefit(): + kwargs=setDefaults(kwargs, + BroadRotCreatorTool = TrackingCommon.getInDetBroadRotCreator( + nameSuffix = split_cluster_map_extension, + SplitClusterMapExtension = split_cluster_map_extension)) + + return InDetGlobalChi2FitterBase(name, **setDefaults(kwargs, + OutlierCut = 5.0, + Acceleration = False, # default + RecalculateDerivatives = True, + TrackChi2PerNDFCut = 10)) + + +def InDetGlobalChi2FitterTRT(name='InDetGlobalChi2FitterTRT', **kwargs) : + ''' + Global Chi2 Fitter for TRT segments with different settings + ''' + split_cluster_map_extension = kwargs.pop('SplitClusterMapExtension','') + + if 'RotCreatorTool' not in kwargs : + from InDetRecExample import TrackingCommon as TrackingCommon + kwargs=setDefaults(kwargs, + RotCreatorTool = TrackingCommon.getInDetRefitRotCreator( + nameSuffix = split_cluster_map_extension, + SplitClusterMapExtension = split_cluster_map_extension)) + + from InDetRecExample.InDetJobProperties import InDetFlags + return InDetGlobalChi2FitterBase(name, **setDefaults( + kwargs, + MaterialUpdateTool = '', # default + TrackingGeometrySvc = '', # default + SignedDriftRadius = True, # default, + RecalibrateSilicon = False, # default, + RecalibrateTRT = False, # default, + TRTTubeHitCut = 2.5, # default, + MaxIterations = 10, + Acceleration = False, # default, + RecalculateDerivatives = False, + TRTExtensionCuts = True, # default, + TrackChi2PerNDFCut = 999999, + Momentum = 1000.*Units.MeV if InDetFlags.materialInteractions() and not InDetFlags.solenoidOn() else 0, # default, + OutlierCut = 5, # default + MaxOutliers = 99 if InDetFlags.doRobustReco() or InDetFlags.doCosmics() else 10, # default, + ReintegrateOutliers = False if InDetFlags.doRefit() else False # default + )) + +def InDetGlobalChi2FitterDBM(name='InDetGlobalChi2FitterDBM', **kwargs) : + split_cluster_map_extension = kwargs.pop('SplitClusterMapExtension','') + if 'RotCreatorTool' not in kwargs : + from InDetRecExample import TrackingCommon as TrackingCommon + kwargs=setDefaults(kwargs, RotCreatorTool = TrackingCommon.getInDetRotCreatorDBM(SplitClusterMapExtension = split_cluster_map_extension)) + + return InDetGlobalChi2FitterBase(name, **setDefaults(kwargs, + BroadRotCreatorTool = None, + StraightLine = True, + OutlierCut = 5, + RecalibrateTRT = False, + RecalculateDerivatives= False, + TRTExtensionCuts = False, + TrackChi2PerNDFCut = 20, + Momentum = 1000.*Units.MeV)) + +def GaussianSumFitter(name='GaussianSumFitter', **kwargs) : + split_cluster_map_extension = kwargs.pop('SplitClusterMapExtension','') + + from InDetRecExample import TrackingCommon as TrackingCommon + if 'ToolForROTCreation' not in kwargs : + kwargs=setDefaults(kwargs, + ToolForROTCreation = TrackingCommon.getInDetRotCreator( + nameSuffix = split_cluster_map_extension, + SplitClusterMapExtension = split_cluster_map_extension)) + + if 'ToolForExtrapolation' not in kwargs : + kwargs=setDefaults(kwargs, ToolForExtrapolation = TrackingCommon.getInDetGsfExtrapolator()) + + if 'MeasurementUpdatorType' not in kwargs : + kwargs=setDefaults(kwargs, MeasurementUpdatorType = TrackingCommon.getInDetGsfMeasurementUpdator()) + + from TrkGaussianSumFilter.TrkGaussianSumFilterConf import Trk__GaussianSumFitter + return Trk__GaussianSumFitter(name = the_name, **setDefaults(kwargs, + ReintegrateOutliers = False, + MakePerigee = True, + RefitOnMeasurementBase = True, + DoHitSorting = True)) + +def InDetTrackFitter(name='InDetTrackFitter', **kwargs) : + from InDetRecExample.InDetJobProperties import InDetFlags + return { + 'KalmanFitter' : KalmanFitter, + 'KalmanDNAFitter' : KalmanDNAFitter, + 'ReferenceKalmanFitter' : ReferenceKalmanFitter, + 'DistributedKalmanFilter' : DistributedKalmanFilter, + 'GlobalChi2Fitter' : InDetGlobalChi2Fitter, + 'GaussianSumFilter' : GaussianSumFitter + }[InDetFlags.trackFitterType()](name,**kwargs) + +def InDetTrackFitterLowPt(name='InDetTrackFitter', **kwargs) : + from InDetRecExample.InDetJobProperties import InDetFlags + if InDetFlags.trackFitterType() != 'GlobalChi2Fitter' : + return InDetTrackFitter(name,**kwargs) + else : + return InDetGlobalChi2FitterLowPt(name,**kwargs) + +def InDetTrackFitterTRT(name='InDetTrackFitterTRT', **kwargs) : + from InDetRecExample.InDetJobProperties import InDetFlags + if InDetFlags.trackFitterType() != 'GlobalChi2Fitter' : + return InDetTrackFitter(name,**kwargs) + else : + return InDetGlobalChi2FitterTRT(name,**kwargs) + +def InDetTrackFitterDBM(name='InDetTrackFitterDBM', **kwargs) : + return InDetGlobalChi2FitterDBM(name,**kwargs) diff --git a/InnerDetector/InDetExample/InDetRecExample/python/InDetRecExampleConfigDb.py b/InnerDetector/InDetExample/InDetRecExample/python/InDetRecExampleConfigDb.py index 2c876b7019219e97b660609ae6910604bc8d226e..c636839641bc3ce29b62098a1dac485d73101e53 100644 --- a/InnerDetector/InDetExample/InDetRecExample/python/InDetRecExampleConfigDb.py +++ b/InnerDetector/InDetExample/InDetRecExample/python/InDetRecExampleConfigDb.py @@ -25,3 +25,7 @@ addTool('InDetRecExample.InDetRecExampleConfig.InDetMeasRecalibST','InDetMeasRec addTool('InDetRecExample.InDetRecExampleConfig.KalmanFitter','KalmanFitter') addTool('InDetRecExample.InDetRecExampleConfig.ReferenceKalmanFitter','ReferenceKalmanFitter') addTool('InDetRecExample.InDetRecExampleConfig.KalmanDNAFitter','KalmanDNAFitter') +addTool('InDetRecExample.InDetRecExampleConfig.InDetTrackFitter','InDetTrackFitter') +addTool('InDetRecExample.InDetRecExampleConfig.InDetTrackFitterLowPt','InDetTrackFitterLowPt') +addTool('InDetRecExample.InDetRecExampleConfig.InDetTrackFitterTRT','InDetTrackFitterTRT') +addTool('InDetRecExample.InDetRecExampleConfig.InDetTrackFitterDBM','InDetTrackFitterDBM') diff --git a/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py b/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py index 7c21b63a59cb93bf0317a7135541171dd33a055f..028c288866b33d08193186841364a83f5396cb91 100644 --- a/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py +++ b/InnerDetector/InDetExample/InDetRecExample/python/TrackingCommon.py @@ -19,12 +19,55 @@ def setDefaults(kwargs, **def_kwargs) : def_kwargs.update(kwargs) return def_kwargs +def makeName( name, kwargs) : + namePrefix=kwargs.pop('namePrefix','') + nameSuffix=kwargs.pop('nameSuffix','') + return namePrefix + name + nameSuffix + +def getDefaultName(func) : + # @TODO only works for python 2 + import inspect + defaults=inspect.getargspec(func).defaults + if len(defaults)==0 : + raise Exception("Missing default name for %s" % func.__name__) + return defaults[0] + +def makePublicTool(tool_creator) : + ''' + If the decorated method gets called the created tool will be added to ToolSvc + ''' + def createPublicTool(*args,**kwargs): + from AthenaCommon.AppMgr import ToolSvc + name=kwargs.pop('name',None) + if len(args) == 1 : + if name != None : + raise Exception('Name given as positional and keyword argument') + name=args[0] + if name is None : + name=getDefaultName(tool_creator) + + the_name = kwargs.get('namePrefix','') + name + kwargs.get('nameSuffix','') + if the_name not in ToolSvc : + if len(args) > 1 : + raise Exception('Too many positional arguments') + tool = tool_creator(name, **kwargs) + if the_name != tool.name() : + raise Exception('Tool has not the exepected name %s but %s' % (the_name, tool.the_name())) + ToolSvc += tool + return tool + else : + return getattr(ToolSvc, the_name) + + createPublicTool.__name__ = tool_creator.__name__ + createPublicTool.__module__ = tool_creator.__module__ + return createPublicTool + def getPixelRIO_OnTrackErrorScalingDbOverrideCondAlg( **kwargs) : ''' usage: createAndAddCondAlg( getPixelRIO_OnTrackErrorScalingDbOverrideCondAlg, 'PixelRIO_OnTrackErrorScalingDbOverrideCondAlg' ) ''' - the_name=kwargs.pop("name",None) + the_name=kwargs.pop("name",'PixelRIO_OnTrackErrorScalingDbOverrideCondAlg') from AtlasGeoModel.InDetGMJobProperties import InDetGeometryFlags as geoFlags # kPixBarrelPhi params = [ 10. , 0.0044] @@ -45,12 +88,12 @@ def getPixelRIO_OnTrackErrorScalingDbOverrideCondAlg( **kwargs) : from TrkRIO_OnTrackCreator.TrkRIO_OnTrackCreatorConf import RIO_OnTrackErrorScalingDbOverrideCondAlg - return RIO_OnTrackErrorScalingDbOverrideCondAlg( 'PixelRIO_OnTrackErrorScalingDbOverrideCondAlg', + return RIO_OnTrackErrorScalingDbOverrideCondAlg( name = the_name, **setDefaults( kwargs, ErrorScalingTypeName = error_scaling_type, WriteKey = "/Indet/TrkErrorScalingPixel", ErorScalingParameters = params, - OutputLevel = 1) ) # VERBOSE + OutputLevel = 1) ) # VERBOSE def getRIO_OnTrackErrorScalingCondAlg( **kwargs) : the_name=kwargs.pop("name",None) @@ -92,10 +135,9 @@ def getRIO_OnTrackErrorScalingCondAlg( **kwargs) : OutKeys = error_scaling_outkey) ) - def getEventInfoKey() : - from AthenaCommon.GlobalFlags import globalflags - from AthenaCommon.DetFlags import DetFlags + from AthenaCommon.GlobalFlags import globalflags + from AthenaCommon.DetFlags import DetFlags isData = (globalflags.DataSource == 'data') @@ -111,19 +153,6 @@ def getEventInfoKey() : return eventInfoKey -def getTRT_DriftCircleOnTrackTool() : - from AthenaCommon.AppMgr import ToolSvc - if not hasattr(ToolSvc,'TRT_DriftCircleOnTrackTool') : - createAndAddCondAlg(getRIO_OnTrackErrorScalingCondAlg,'RIO_OnTrackErrorScalingCondAlg') - from TRT_DriftCircleOnTrackTool.TRT_DriftCircleOnTrackToolConf import InDet__TRT_DriftCircleOnTrackTool - tool = InDet__TRT_DriftCircleOnTrackTool( EventInfoKey = getEventInfoKey(), - TRTErrorScalingKey = '/Indet/TrkErrorScalingTRT') - log.debug('default name = %s', tool.getName()) - ToolSvc += tool - return tool - else : - return ToolSvc.TRT_DriftCircleOnTrackTool - def getNeuralNetworkToHistoTool(**kwargs) : from TrkNeuralNetworkUtils.TrkNeuralNetworkUtilsConf import Trk__NeuralNetworkToHistoTool name = kwargs.pop('name',"NeuralNetworkToHistoTool") @@ -176,3 +205,292 @@ def getPixelClusterNnWithTrackCondAlg(**kwargs) : TrackNetwork = True, name ='PixelClusterNnWithTrackCondAlg') return getPixelClusterNnCondAlg( **kwargs ) + +def getPixelLorentzAngleTool(name='PixelLorentzAngleTool', **kwargs) : + the_name = makeName( name, kwargs) + if the_name != "PixelLorentzAngleTool" : + raise Exception('There should be only one Pixel Lorentz angle tool configuration named "PixelLorentzAngleTool"') + from AthenaCommon.AppMgr import ToolSvc + if not hasattr(ToolSvc, the_name ): + from SiLorentzAngleTool.PixelLorentzAngleToolSetup import PixelLorentzAngleToolSetup + PixelLorentzAngleToolSetup() + return getattr(ToolSvc,the_name) + +def getSCTLorentzAngleTool(name='SCTLorentzAngleTool', **kwargs) : + the_name = makeName( name, kwargs) + if the_name != "SCTLorentzAngleTool" : + raise Exception('There should be only one SCT Lorentz angle tool configuration named "SCTLorentzAngleTool"') + from SiLorentzAngleTool.SCTLorentzAngleToolSetup import SCTLorentzAngleToolSetup + return SCTLorentzAngleToolSetup().SCTLorentzAngleTool + +@makePublicTool +def getNnClusterizationFactory(name='NnClusterizationFactory', **kwargs) : + the_name = makeName( name, kwargs) + from SiClusterizationTool.SiClusterizationToolConf import InDet__NnClusterizationFactory + + if 'PixelLorentzAngleTool' not in kwargs : + kwargs = setDefaults( kwargs, PixelLorentzAngleTool = getPixelLorentzAngleTool()) + + from AtlasGeoModel.CommonGMJobProperties import CommonGeometryFlags as geoFlags + do_runI = geoFlags.Run() not in ["RUN2", "RUN3"] + createAndAddCondAlg( getPixelClusterNnCondAlg, 'PixelClusterNnCondAlg', GetInputsInfo = do_runI) + createAndAddCondAlg( getPixelClusterNnWithTrackCondAlg,'PixelClusterNnWithTrackCondAlg', GetInputsInfo = do_runI) + + from InDetRecExample.InDetJobProperties import InDetFlags + kwargs = setDefaults( kwargs, + doRunI = do_runI, + useToT = False if do_runI else InDetFlags.doNNToTCalibration(), + useRecenteringNNWithoutTracks = True if do_runI else False, # default, + useRecenteringNNWithTracks = False if do_runI else False, # default, + correctLorShiftBarrelWithoutTracks = 0, + correctLorShiftBarrelWithTracks = 0.030 if do_runI else 0.000, # default, + NnCollectionReadKey = 'PixelClusterNN', + NnCollectionWithTrackReadKey = 'PixelClusterNNWithTrack') + return InDet__NnClusterizationFactory(name=the_name, **kwargs) + +@makePublicTool +def getInDetPixelClusterOnTrackToolBase(name, **kwargs) : + the_name = makeName( name, kwargs) + split_cluster_map_extension = kwargs.pop('SplitClusterMapExtension','') + from InDetRecExample.InDetJobProperties import InDetFlags + from SiClusterOnTrackTool.SiClusterOnTrackToolConf import InDet__PixelClusterOnTrackTool + + if InDetFlags.doCosmics() or InDetFlags.doDBMstandalone(): + kwargs = setDefaults(kwargs, + ErrorStrategy = 0, + PositionStrategy = 0) + + from InDetRecExample.InDetKeys import InDetKeys + kwargs = setDefaults(kwargs, + DisableDistortions = (InDetFlags.doFatras() or InDetFlags.doDBMstandalone()), + applyNNcorrection = ( InDetFlags.doPixelClusterSplitting() and + InDetFlags.pixelClusterSplittingType() == 'NeuralNet' and not InDetFlags.doSLHC()), + NNIBLcorrection = ( InDetFlags.doPixelClusterSplitting() and + InDetFlags.pixelClusterSplittingType() == 'NeuralNet' and not InDetFlags.doSLHC()), + SplitClusterAmbiguityMap = InDetKeys.SplitClusterAmbiguityMap() + split_cluster_map_extension, + RunningTIDE_Ambi = InDetFlags.doTIDE_Ambi()) + + return InDet__PixelClusterOnTrackTool(the_name , **kwargs) + +def getInDetPixelClusterOnTrackToolNNSplitting(name='InDetPixelClusterOnTrackToolNNSplitting', **kwargs) : + from InDetRecExample.InDetJobProperties import InDetFlags + if InDetFlags.doPixelClusterSplitting() and InDetFlags.pixelClusterSplittingType() == 'NeuralNet': + if 'NnClusterizationFactory' not in kwargs : + kwargs = setDefaults(kwargs, NnClusterizationFactory = getNnClusterizationFactory()) + + if InDetFlags.doTIDE_RescalePixelCovariances() : + kwargs = setDefaults(kwargs, applydRcorrection = True) + return getInDetPixelClusterOnTrackToolBase(name=name, **kwargs) + +def getInDetPixelClusterOnTrackTool(name='InDetPixelClusterOnTrackTool', **kwargs) : + if 'LorentzAngleTool' not in kwargs : + kwargs = setDefaults(kwargs, LorentzAngleTool = getPixelLorentzAngleTool()) + + return getInDetPixelClusterOnTrackToolNNSplitting(name=name, **kwargs) + +def getInDetPixelClusterOnTrackToolPattern(name='InDetPixelClusterOnTrackToolPattern', **kwargs) : + return getInDetPixelClusterOnTrackToolNNSplitting(name=name, **kwargs) + +def getInDetPixelClusterOnTrackToolDigital(name='InDetPixelClusterOnTrackToolDigital', **kwargs) : + from InDetRecExample.InDetJobProperties import InDetFlags + if 'LorentzAngleTool' not in kwargs : + kwargs = setDefaults(kwargs, LorentzAngleTool = getPixelLorentzAngleTool()) + + if InDetFlags.doDigitalROTCreation(): + kwargs = setDefaults(kwargs, + applyNNcorrection = False, + NNIBLcorrection = False, + ErrorStrategy = 2, + PositionStrategy = 1) + else : + kwargs = setDefaults(kwargs, + SplitClusterAmbiguityMap = "") + + return getInDetPixelClusterOnTrackToolBase(name=name, **kwargs) + +def getInDetPixelClusterOnTrackToolDBM(name='InDetPixelClusterOnTrackToolDBM', **kwargs) : + return getInDetPixelClusterOnTrackToolBase(name=name, **setDefaults(kwargs, + DisableDistortions = True, + applyNNcorrection = False, + NNIBLcorrection = False, + RunningTIDE_Ambi = False, + ErrorStrategy = 0, + PositionStrategy = 0)) + +def getInDetBroadPixelClusterOnTrackTool(name='InDetBroadPixelClusterOnTrackTool', **kwargs) : + return getInDetPixelClusterOnTrackTool(name=name, **setDefaults(kwargs, ErrorStrategy = 0)) + +@makePublicTool +def getInDetSCT_ClusterOnTrackTool(name='InDetSCT_ClusterOnTrackTool', **kwargs) : + the_name = makeName( name, kwargs) + if 'LorentzAngleTool' not in kwargs : + kwargs = setDefaults(kwargs, LorentzAngleTool = getSCTLorentzAngleTool()) + + kwargs = setDefaults(kwargs, + # CorrectionStrategy = -1, # no position correction (test for bug #56477) + CorrectionStrategy = 0, # do correct position bias + ErrorStrategy = 2 # do use phi dependent errors + ) + from SiClusterOnTrackTool.SiClusterOnTrackToolConf import InDet__SCT_ClusterOnTrackTool + return InDet__SCT_ClusterOnTrackTool (the_name, **kwargs) + +def getInDetBroadSCT_ClusterOnTrackTool(name='InDetBroadSCT_ClusterOnTrackTool', **kwargs) : + return getInDetSCT_ClusterOnTrackTool(name=name, **setDefaults( kwargs, ErrorStrategy = 0) ) + + +@makePublicTool +def getInDetBroadTRT_DriftCircleOnTrackTool(name='InDetBroadTRT_DriftCircleOnTrackTool', **kwargs) : + the_name = makeName( name, kwargs) + from TRT_DriftCircleOnTrackTool.TRT_DriftCircleOnTrackToolConf import InDet__TRT_DriftCircleOnTrackNoDriftTimeTool + return InDet__TRT_DriftCircleOnTrackNoDriftTimeTool(the_name) + +# @TODO rename to InDetTRT_DriftCircleOnTrackTool ? +def getInDetTRT_DriftCircleOnTrackTool(name='TRT_DriftCircleOnTrackTool', **kwargs) : + createAndAddCondAlg(getRIO_OnTrackErrorScalingCondAlg,'RIO_OnTrackErrorScalingCondAlg') + kwargs = setDefaults(kwargs, + EventInfoKey = getEventInfoKey(), + TRTErrorScalingKey = '/Indet/TrkErrorScalingTRT') + return getInDetBroadTRT_DriftCircleOnTrackTool(name = name, **kwargs) + +default_ScaleHitUncertainty = 2.5 + +@makePublicTool +def getInDetTRT_DriftCircleOnTrackUniversalTool(name='InDetTRT_RefitRotCreator',**kwargs) : + the_name = makeName( name, kwargs) + if 'RIOonTrackToolDrift' not in kwargs : + kwargs = setDefaults(kwargs, RIOonTrackToolDrift = getInDetTRT_DriftCircleOnTrackTool()) + if 'RIOonTrackToolTube' not in kwargs : + kwargs = setDefaults(kwargs, RIOonTrackToolTube = getInDetBroadTRT_DriftCircleOnTrackTool()) + + from TRT_DriftCircleOnTrackTool.TRT_DriftCircleOnTrackToolConf import InDet__TRT_DriftCircleOnTrackUniversalTool + return InDet__TRT_DriftCircleOnTrackUniversalTool(name = the_name, **setDefaults(kwargs, + ScaleHitUncertainty = default_ScaleHitUncertainty)) + +@makePublicTool +def getInDetRotCreator(name='InDetRotCreator', **kwargs) : + the_name = makeName( name, kwargs) + split_cluster_map_extension = kwargs.pop('SplitClusterMapExtension','') + from InDetRecExample.InDetJobProperties import InDetFlags + use_broad_cluster_pix = InDetFlags.useBroadPixClusterErrors() and (not InDetFlags.doDBMstandalone()) + use_broad_cluster_sct = InDetFlags.useBroadSCTClusterErrors() and (not InDetFlags.doDBMstandalone()) + + if 'ToolPixelCluster' not in kwargs : + if use_broad_cluster_pix : + kwargs = setDefaults( kwargs, + ToolPixelCluster = getInDetBroadPixelClusterOnTrackTool(nameSuffix = split_cluster_map_extension, + SplitClusterMapExtension = split_cluster_map_extension)) + else : + kwargs = setDefaults( kwargs, + ToolPixelCluster = getInDetPixelClusterOnTrackTool(nameSuffix = split_cluster_map_extension, + SplitClusterMapExtension = split_cluster_map_extension)) + + if 'ToolSCT_Cluster' not in kwargs : + if use_broad_cluster_sct : + kwargs = setDefaults( kwargs, ToolSCT_Cluster = getInDetBroadSCT_ClusterOnTrackTool()) + else : + kwargs = setDefaults( kwargs, ToolSCT_Cluster = getInDetSCT_ClusterOnTrackTool()) + + kwargs = setDefaults( kwargs, Mode = 'indet') + + from TrkRIO_OnTrackCreator.TrkRIO_OnTrackCreatorConf import Trk__RIO_OnTrackCreator + return Trk__RIO_OnTrackCreator(name=the_name, **kwargs) + +def getInDetRotCreatorPattern(name='InDetRotCreatorPattern', **kwargs) : + if 'ToolPixelCluster' not in kwargs : + split_cluster_map_extension = kwargs.get('SplitClusterMapExtension','') + kwargs = setDefaults(kwargs, + ToolPixelCluster = getInDetPixelClusterOnTrackToolPattern(nameSuffix = split_cluster_map_extension, + SplitClusterMapExtension = split_cluster_map_extension)) + return getInDetRotCreator(name=name, **kwargs) + + +def getInDetRotCreatorDBM(name='InDetRotCreatorDBM', **kwargs) : + split_cluster_map_extension = kwargs.pop('SplitClusterMapExtension','') + if 'ToolPixelCluster' not in kwargs : + from InDetRecExample.InDetJobProperties import InDetFlags + from AthenaCommon.DetFlags import DetFlags + if InDetFlags.loadRotCreator() and DetFlags.haveRIO.pixel_on(): + kwargs = setDefaults(kwargs, + ToolPixelCluster = getInDetPixelClusterOnTrackToolDBM(nameSuffix = split_cluster_map_extension, + SplitClusterMapExtension = split_cluster_map_extension)) + else : + kwargs = setDefaults(kwargs, + ToolPixelCluster = getInDetPixelClusterOnTrackTool(nameSuffix = split_cluster_map_extension, + SplitClusterMapExtension = split_cluster_map_extension)) + return getInDetRotCreator(name=name, **kwargs) + +def getInDetRotCreatorDigital(name='InDetRotCreatorDigital', **kwargs) : + if 'ToolPixelCluster' not in kwargs : + split_cluster_map_extension = kwargs.get('SplitClusterMapExtension','') + kwargs = setDefaults(kwargs, + ToolPixelCluster = getInDetPixelClusterOnTrackToolDigital(nameSuffix = split_cluster_map_extension, + SplitClusterMapExtension = split_cluster_map_extension)) + return getInDetRotCreator(name=name, **kwargs) + +# @TODO rename to InDetBroadRotCreator +def getInDetBroadRotCreator(name='InDetBroadInDetRotCreator', **kwargs) : + if 'ToolPixelCluster' not in kwargs : + split_cluster_map_extension = kwargs.get('SplitClusterMapExtension','') + kwargs = setDefaults(kwargs, + ToolPixelCluster = getInDetBroadPixelClusterOnTrackTool(nameSuffix = split_cluster_map_extension, + SplitClusterMapExtension = split_cluster_map_extension)) + if 'ToolSCT_Cluster' not in kwargs : + kwargs = setDefaults(kwargs, + ToolSCT_Cluster = getInDetBroadSCT_ClusterOnTrackTool()) + + from AthenaCommon.DetFlags import DetFlags + if DetFlags.haveRIO.TRT_on(): + if 'ToolTRT_DriftCircle' not in kwargs : + kwargs = setDefaults(kwargs, + ToolTRT_DriftCircle = getInDetBroadTRT_DriftCircleOnTrackTool()) + + return getInDetRotCreator(name=name, **kwargs) + + +def getInDetRefitRotCreator(name='InDetRefitRotCreator', **kwargs) : + ScaleHitUncertainty = kwargs.pop('ScaleHitUncertainty',default_ScaleHitUncertainty) + from InDetRecExample.InDetJobProperties import InDetFlags + from AthenaCommon.DetFlags import DetFlags + + if InDetFlags.redoTRT_LR(): + if DetFlags.haveRIO.TRT_on(): + if 'ToolTRT_DriftCircle' not in kwargs : + kwargs = setDefaults(kwargs, + ToolTRT_DriftCircle = getInDetTRT_DriftCircleOnTrackUniversalTool(ScaleHitUncertainty = ScaleHitUncertainty)) + + return getInDetRotCreator(name = name, **kwargs) + +@makePublicTool +def getInDetGsfMaterialUpdator(name='InDetGsfMaterialUpdator', **kwargs) : + the_name = makeName( name, kwargs) + from TrkGaussianSumFilter.TrkGaussianSumFilterConf import Trk__GsfMaterialMixtureConvolution + return Trk__GsfMaterialMixtureConvolution (name = the_name, **kwargs) + +@makePublicTool +def getInDetGsfComponentReduction(name='InDetGsfComponentReduction', **kwargs) : + the_name = makeName( name, kwargs) + from TrkGaussianSumFilter.TrkGaussianSumFilterConf import Trk__QuickCloseComponentsMultiStateMerger + return Trk__QuickCloseComponentsMultiStateMerger (name = the_name, **setDefaults(kwargs, MaximumNumberOfComponents = 12)) + +@makePublicTool +def getInDetGsfExtrapolator(name='InDetGsfExtrapolator', **kwargs) : + the_name = makeName(name,kwargs) + if 'Propagators' not in kwargs : + from AthenaCommon.AppMgr import ToolSvc + kwargs=setDefaults(kwargs, Propagators = [ ToolSvc.InDetPropagator ] ) + + if 'Navigator' not in kwargs : + from AthenaCommon.AppMgr import ToolSvc + kwargs=setDefaults(kwargs, Navigator = ToolSvc.InDetNavigator) + + if 'GsfMaterialConvolution' not in kwargs : + kwargs=setDefaults(kwargs, GsfMaterialConvolution = getInDetGsfMaterialUpdator()) + + if 'ComponentMerger' not in kwargs : + kwargs=setDefaults(kwargs, ComponentMerger = getInDetGsfComponentReduction()) + + from TrkGaussianSumFilter.TrkGaussianSumFilterConf import Trk__GsfExtrapolator + return Trk__GsfExtrapolator(name = the_name, **setDefaults(kwargs, + SearchLevelClosestParameters = 10, + StickyConfiguration = True, + SurfaceBasedMaterialEffects = False )) diff --git a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredBackTracking.py b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredBackTracking.py index fc0c79a5e1422561f8a22f7cc9bc606802adf7d3..ce6927a04498b673b0e652cfcf0bdb1f792a093a 100755 --- a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredBackTracking.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredBackTracking.py @@ -148,9 +148,10 @@ class ConfiguredBackTracking: # # TRT seeded back tracking algorithm # + from AthenaCommon import CfgGetter from TRT_SeededTrackFinder.TRT_SeededTrackFinderConf import InDet__TRT_SeededTrackFinder InDetTRT_SeededTrackFinder = InDet__TRT_SeededTrackFinder(name = 'InDetTRT_SeededTrackFinder', - RefitterTool = InDetTrackFitter, + RefitterTool = CfgGetter.getPublicTool('InDetTrackFitter'), TrackTool = InDetTRT_SeededTrackTool, TrackExtensionTool = InDetTRTExtensionTool, MinTRTonSegment = NewTrackingCuts.minSecondaryTRTonTrk(), @@ -269,7 +270,7 @@ class ConfiguredBackTracking: # from TrkAmbiguityProcessor.TrkAmbiguityProcessorConf import Trk__SimpleAmbiguityProcessorTool InDetTRT_SeededAmbiguityProcessor = Trk__SimpleAmbiguityProcessorTool(name = 'InDetTRT_SeededAmbiguityProcessor', - Fitter = InDetTrackFitter, + Fitter = CfgGetter.getPublicTool('InDetTrackFitter'), SelectionTool = InDetTRT_SeededAmbiTrackSelectionTool, RefitPrds = not InDetFlags.refitROT(), SuppressTrackFit = False, diff --git a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py index 5988b6431ea3b5c6642950eae2c15ba8147f89f2..af98cf6d41dca60773ea316bf0e37ab13928b599 100644 --- a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingSiPattern.py @@ -36,7 +36,7 @@ class ConfiguredNewTrackingSiPattern: from InDetTrackPRD_Association.InDetTrackPRD_AssociationConf import InDet__InDetTrackPRD_Association InDetPRD_Association = InDet__InDetTrackPRD_Association(name = 'InDetPRD_Association'+NewTrackingCuts.extension(), AssociationTool = InDetPrdAssociationTool, - TracksName = list(InputCollections)) + TracksName = list(InputCollections)) topSequence += InDetPRD_Association if (InDetFlags.doPrintConfigurables()): print InDetPRD_Association @@ -169,6 +169,29 @@ class ConfiguredNewTrackingSiPattern: # # --- Local track finding using sdCaloSeededSSSpace point seed # + # @TODO ensure that PRD association map is used if usePrdAssociationTool is set + is_dbm = InDetFlags.doDBMstandalone() or NewTrackingCuts.extension()=='DBM' + rot_creator_digital = TrackingCommon.getInDetRotCreatorDigital() if not is_dbm else TrackingCommon.getInDetRotCreatorDBM() + from SiCombinatorialTrackFinderTool_xk.SiCombinatorialTrackFinderTool_xkConf import InDet__SiCombinatorialTrackFinder_xk + track_finder = InDet__SiCombinatorialTrackFinder_xk(name = 'InDetSiComTrackFinder'+NewTrackingCuts.extension(), + PropagatorTool = InDetPatternPropagator, + UpdatorTool = InDetPatternUpdator, + RIOonTrackTool = rot_creator_digital, + usePixel = DetFlags.haveRIO.pixel_on(), + useSCT = DetFlags.haveRIO.SCT_on() if not is_dbm else False, + PixelClusterContainer = InDetKeys.PixelClusters(), + SCT_ClusterContainer = InDetKeys.SCT_Clusters()) + if is_dbm : + track_finder.MagneticFieldMode = "NoField" + track_finder.TrackQualityCut = 9.3 + + + if (DetFlags.haveRIO.SCT_on()): + track_finder.SctSummaryTool = InDetSCT_ConditionsSummaryTool + else: + track_finder.SctSummaryTool = None + + ToolSvc += track_finder useBremMode = NewTrackingCuts.mode() == "Offline" or NewTrackingCuts.mode() == "SLHC" or NewTrackingCuts.mode() == "DBM" from SiTrackMakerTool_xk.SiTrackMakerTool_xkConf import InDet__SiTrackMaker_xk as SiTrackMaker @@ -176,7 +199,7 @@ class ConfiguredNewTrackingSiPattern: useSCT = NewTrackingCuts.useSCT(), usePixel = NewTrackingCuts.usePixel(), RoadTool = InDetSiDetElementsRoadMaker, - CombinatorialTrackFinder = InDetSiComTrackFinder, + CombinatorialTrackFinder = track_finder, pTmin = NewTrackingCuts.minPT(), pTminBrem = NewTrackingCuts.minPTBrem(), pTminSSS = InDetFlags.pT_SSScut(), @@ -189,7 +212,7 @@ class ConfiguredNewTrackingSiPattern: nWeightedClustersMin = NewTrackingCuts.nWeightedClustersMin(), CosmicTrack = InDetFlags.doCosmics(), Xi2maxMultiTracks = NewTrackingCuts.Xi2max(), # was 3. - useSSSseedsFilter = InDetFlags.doSSSfilter(), + useSSSseedsFilter = InDetFlags.doSSSfilter(), doMultiTracksProd = True, useBremModel = InDetFlags.doBremRecovery() and useBremMode, # only for NewTracking the brem is debugged !!! doCaloSeededBrem = InDetFlags.doCaloSeededBrem(), @@ -452,11 +475,26 @@ class ConfiguredNewTrackingSiPattern: # DenseEnvironmentsAmbiguityProcessorTool from TrkAmbiguityProcessor.TrkAmbiguityProcessorConf import Trk__DenseEnvironmentsAmbiguityProcessorTool as ProcessorTool use_low_pt_fitter = True if NewTrackingCuts.mode() == "LowPt" or NewTrackingCuts.mode() == "VeryLowPt" or (NewTrackingCuts.mode() == "Pixel" and InDetFlags.doMinBias()) else False - fitter_list=[( InDetTrackFitter if not use_low_pt_fitter else InDetTrackFitterLowPt )] + + from AthenaCommon import CfgGetter + from InDetRecExample.TrackingCommon import setDefaults + if len(NewTrackingCuts.extension()) > 0 : + fitter_args = setDefaults({}, SplitClusterMapExtension = NewTrackingCuts.extension() ) + fitter_list=[ CfgGetter.getPublicToolClone('InDetTrackFitter'+NewTrackingCuts.extension(), 'InDetTrackFitter',**fitter_args) if not use_low_pt_fitter \ + else CfgGetter.getPublicToolClone('InDetTrackFitterLowPt'+NewTrackingCuts.extension(), 'InDetTrackFitterLowPt',**fitter_args)] + else : + fitter_list=[ CfgGetter.getPublicTool('InDetTrackFitter') if not use_low_pt_fitter \ + else CfgGetter.getPublicTool('InDetTrackFitterLowPt')] + if InDetFlags.doRefitInvalidCov() : from AthenaCommon import CfgGetter - fitter_list.append(CfgGetter.getPublicTool('KalmanFitter')) - fitter_list.append(CfgGetter.getPublicTool('ReferenceKalmanFitter')) + if len(NewTrackingCuts.extension()) > 0 : + fitter_args = setDefaults({}, SplitClusterMapExtension = NewTrackingCuts.extension() ) + fitter_list.append(CfgGetter.getPublicToolClone('KalmanFitter' +NewTrackingCuts.extension(),'KalmanFitter', **fitter_args)) + fitter_list.append(CfgGetter.getPublicToolClone('ReferenceKalmanFitter'+NewTrackingCuts.extension(),'ReferenceKalmanFitter',**fitter_args)) + else : + fitter_list.append(CfgGetter.getPublicTool('KalmanFitter')) + fitter_list.append(CfgGetter.getPublicTool('ReferenceKalmanFitter')) InDetAmbiguityProcessor = ProcessorTool(name = 'InDetAmbiguityProcessor'+NewTrackingCuts.extension(), Fitter = fitter_list , @@ -466,7 +504,7 @@ class ConfiguredNewTrackingSiPattern: tryBremFit = InDetFlags.doBremRecovery() and useBremMode and NewTrackingCuts.mode() != "DBM", caloSeededBrem = InDetFlags.doCaloSeededBrem() and NewTrackingCuts.mode() != "DBM", pTminBrem = NewTrackingCuts.minPTBrem(), - RefitPrds = True, + RefitPrds = True, doHadCaloSeed = InDetFlags.doCaloSeededRefit(), InputHadClusterContainerName = InDetKeys.HadCaloClusterROIContainer()+"Bjet") @@ -477,9 +515,10 @@ class ConfiguredNewTrackingSiPattern: SelectionTool = InDetAmbiTrackSelectionTool) hasScoreProcessorTool = True else: + from AthenaCommon import CfgGetter from TrkAmbiguityProcessor.TrkAmbiguityProcessorConf import Trk__SimpleAmbiguityProcessorTool as ProcessorTool InDetAmbiguityProcessor = ProcessorTool(name = 'InDetAmbiguityProcessor'+NewTrackingCuts.extension(), - Fitter = InDetTrackFitter, + Fitter = CfgGetter.getPublicTool('InDetTrackFitter'), ScoringTool = InDetAmbiScoringTool, SelectionTool = InDetAmbiTrackSelectionTool, SuppressHoleSearch = False, @@ -508,7 +547,8 @@ class ConfiguredNewTrackingSiPattern: if InDetAmbiguityProcessor.getName().find('Dense') : pass else : - InDetAmbiguityProcessor.Fitter = InDetTrackFitterLowPt + from AthenaCommon import CfgGetter + InDetAmbiguityProcessor.Fitter = CfgGetter.getPublicTool('InDetTrackFitterLowPt') if InDetFlags.materialInteractions(): InDetAmbiguityProcessor.MatEffects = InDetFlags.materialInteractionsType() diff --git a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingTRTExtension.py b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingTRTExtension.py index b53a80239c31c41a1d9a5894e25367f587a726e0..0b7ee6e43cc4155945b2594d01de263b628b16b9 100644 --- a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingTRTExtension.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredNewTrackingTRTExtension.py @@ -98,9 +98,8 @@ class ConfiguredNewTrackingTRTExtension: if (InDetFlags.doPrintConfigurables()): print InDetExtensionFitter else: - InDetExtensionFitter = InDetTrackFitter - if NewTrackingCuts.mode() == "LowPt": - InDetExtensionFitter = InDetTrackFitterLowPt + from AthenaCommon import CfgGetter + InDetExtensionFitter = CfgGetter.getPublicTool('InDetTrackFitter' if NewTrackingCuts.mode() != "LowPt" else 'InDetTrackFitterLowPt') # # --- load scoring for extension diff --git a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredTRTSegmentFinding.py b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredTRTSegmentFinding.py index d96239ca37dc1aa3d5c1cdf4202df11f46b7d2e4..077799b161260bf9710be4082cb60d4dd906d418 100644 --- a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredTRTSegmentFinding.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredTRTSegmentFinding.py @@ -35,7 +35,7 @@ class ConfiguredTRTSegmentFinding: from InDetTrackPRD_Association.InDetTrackPRD_AssociationConf import InDet__InDetTrackPRD_Association InDetSegmentPRD_Association = InDet__InDetTrackPRD_Association(name = 'InDetSegmentPRD_Association'+extension, AssociationTool = InDetPrdAssociationTool, - TracksName = list(InputCollections)) + TracksName = list(InputCollections)) topSequence += InDetSegmentPRD_Association if (InDetFlags.doPrintConfigurables()): print InDetSegmentPRD_Association diff --git a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredTRTStandalone.py b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredTRTStandalone.py index 1b6dae5930d3abe910b45032eb41edf813e049d7..6b72227291881aceec64abe409187b84663ea4a0 100644 --- a/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredTRTStandalone.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/ConfiguredTRTStandalone.py @@ -77,17 +77,18 @@ class ConfiguredTRTStandalone: # # set up TRT_SegmentToTrackTool # + from AthenaCommon import CfgGetter from TRT_SegmentToTrackTool.TRT_SegmentToTrackToolConf import InDet__TRT_SegmentToTrackTool InDetTRT_SegmentToTrackTool = InDet__TRT_SegmentToTrackTool(name = 'InDetTRT_SegmentToTrackTool'+extension, - RefitterTool = InDetTrackFitterTRT, - UseAssociationTool = usePrdAssociationTool, - AssociationTool = InDetPrdAssociationTool, - ScoringTool = InDetTRT_StandaloneScoringTool, - Extrapolator = InDetExtrapolator, - FinalRefit = True, - MaxSharedHitsFraction = NewTrackingCuts.maxTRTonlyShared(), - SuppressHoleSearch = True - ) + RefitterTool = CfgGetter.getPublicTool('InDetTrackFitterTRT'), + UseAssociationTool = usePrdAssociationTool, + AssociationTool = InDetPrdAssociationTool, + ScoringTool = InDetTRT_StandaloneScoringTool, + Extrapolator = InDetExtrapolator, + FinalRefit = True, + MaxSharedHitsFraction = NewTrackingCuts.maxTRTonlyShared(), + SuppressHoleSearch = True) + ToolSvc += InDetTRT_SegmentToTrackTool if (InDetFlags.doPrintConfigurables()): print InDetTRT_SegmentToTrackTool @@ -121,12 +122,12 @@ class ConfiguredTRTStandalone: # # --- cosmics segment to track conversion for Barrel # - + from AthenaCommon import CfgGetter from TRT_SegmentsToTrack.TRT_SegmentsToTrackConf import InDet__TRT_SegmentsToTrack InDetTrkSegmenttoTrk = InDet__TRT_SegmentsToTrack(name = "InDetTRT_SegmentsToTrack_Barrel"+extension, InputSegmentsCollection = BarrelSegments, OutputTrackCollection = self.__TRTStandaloneTracks, - TrackFitter = InDetTrackFitter, + TrackFitter = CfgGetter.getPublicTool('InDetTrackFitter'), MinNHit = NewTrackingCuts.minTRTonly(), CombineTracks = False, OutputCombiCollection = "", diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetMonitoringAlignment.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetMonitoringAlignment.py index 25fb8bfc2461bd2ce34029c4c4194b4decfa6955..dd28ca7acfb0e1b37319d0ea5447c19d82ee842e 100755 --- a/InnerDetector/InDetExample/InDetRecExample/share/InDetMonitoringAlignment.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetMonitoringAlignment.py @@ -276,10 +276,11 @@ if jobproperties.Beam.beamType()=='cosmics': m_deltaPhi2D = [ 0.02, 0.02, 0.02, 0.02,0.05] m_deltaQoverPt = [ 0.05, 0.2, 0.05, 0.04, 0.1] m_deltaQoverPt2D = [ 0.05, 0.2, 0.05, 0.04, 0.1] - + from AthenaCommon import CfgGetter + indet_track_fitter = CfgGetter.getPublicTool('InDetTrackFitter') for i in range(5): m_trackSplitter.append(InDet__InDetTrackSplitterTool(name = m_trackSplitterName[i], - TrackFitter = InDetTrackFitter, + TrackFitter = indet_track_fitter, OutputUpperTracksName = m_upperTracksName[i], OutputLowerTracksName = m_lowerTracksName[i])) diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecLoadTools.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecLoadTools.py index e27e7905faaf0d576682d81d55f72e6d9c04ab90..b6d0de222ce7cb0659fd77336899537614ef2ab4 100755 --- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRecLoadTools.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRecLoadTools.py @@ -6,7 +6,7 @@ # ------------------------------------------------------------ from InDetRecExample.TrackingCommon import createAndAddCondAlg -from InDetRecExample.TrackingCommon import getRIO_OnTrackErrorScalingCondAlg,getEventInfoKey, getTRT_DriftCircleOnTrackTool +from InDetRecExample.TrackingCommon import getRIO_OnTrackErrorScalingCondAlg,getEventInfoKey, getInDetTRT_DriftCircleOnTrackTool use_broad_cluster_any = InDetFlags.useBroadClusterErrors() and (not InDetFlags.doDBMstandalone()) use_broad_cluster_pix = InDetFlags.useBroadPixClusterErrors() and (not InDetFlags.doDBMstandalone()) @@ -125,6 +125,7 @@ from TrkEventCnvTools import TrkEventCnvToolsConfig # if InDetFlags.loadRotCreator(): + import InDetRecExample.TrackingCommon as TrackingCommon # # --- configure default ROT creator # @@ -133,205 +134,59 @@ if InDetFlags.loadRotCreator(): # load Pixel ROT creator, we overwrite the defaults for the # tool to always make conservative pixel cluster errors # SiLorentzAngleTool - if not hasattr(ToolSvc, "PixelLorentzAngleTool"): - from SiLorentzAngleTool.PixelLorentzAngleToolSetup import PixelLorentzAngleToolSetup - pixelLorentzAngleToolSetup = PixelLorentzAngleToolSetup() - from SiClusterOnTrackTool.SiClusterOnTrackToolConf import InDet__PixelClusterOnTrackTool if InDetFlags.doDBM(): - PixelClusterOnTrackToolDBM = InDet__PixelClusterOnTrackTool("InDetPixelClusterOnTrackToolDBM", - LorentzAngleTool = ToolSvc.PixelLorentzAngleTool, - DisableDistortions = True, - applyNNcorrection = False, - NNIBLcorrection = False, - SplitClusterAmbiguityMap = InDetKeys.SplitClusterAmbiguityMap() + InDetNewTrackingCuts.extension(), - RunningTIDE_Ambi = False, - ErrorStrategy = 0, - PositionStrategy = 0 - ) - ToolSvc += PixelClusterOnTrackToolDBM - PixelClusterOnTrackTool = InDet__PixelClusterOnTrackTool("InDetPixelClusterOnTrackTool", - LorentzAngleTool = ToolSvc.PixelLorentzAngleTool, - DisableDistortions = (InDetFlags.doFatras() or InDetFlags.doDBMstandalone()), - applyNNcorrection = ( InDetFlags.doPixelClusterSplitting() and - InDetFlags.pixelClusterSplittingType() == 'NeuralNet' and not InDetFlags.doSLHC()), - NNIBLcorrection = ( InDetFlags.doPixelClusterSplitting() and - InDetFlags.pixelClusterSplittingType() == 'NeuralNet' and not InDetFlags.doSLHC()), - SplitClusterAmbiguityMap = InDetKeys.SplitClusterAmbiguityMap() + InDetNewTrackingCuts.extension(), - RunningTIDE_Ambi = InDetFlags.doTIDE_Ambi() - ) - if InDetFlags.doPixelClusterSplitting() and InDetFlags.pixelClusterSplittingType() == 'NeuralNet': - PixelClusterOnTrackTool.NnClusterizationFactory = NnClusterizationFactory - if InDetFlags.doTIDE_RescalePixelCovariances() : - PixelClusterOnTrackTool.applydRcorrection = True - - if InDetFlags.doCosmics() or InDetFlags.doDBMstandalone(): - PixelClusterOnTrackTool.ErrorStrategy = 0 - PixelClusterOnTrackTool.PositionStrategy = 0 - - ToolSvc += PixelClusterOnTrackTool - - PixelClusterOnTrackToolPattern = InDet__PixelClusterOnTrackTool("InDetPixelClusterOnTrackToolPattern", - DisableDistortions = (InDetFlags.doFatras() or InDetFlags.doDBMstandalone()), - applyNNcorrection = ( InDetFlags.doPixelClusterSplitting() and - InDetFlags.pixelClusterSplittingType() == 'NeuralNet' and not InDetFlags.doSLHC()), - NNIBLcorrection = ( InDetFlags.doPixelClusterSplitting() and - InDetFlags.pixelClusterSplittingType() == 'NeuralNet' and not InDetFlags.doSLHC()), - SplitClusterAmbiguityMap = InDetKeys.SplitClusterAmbiguityMap(), - RunningTIDE_Ambi = InDetFlags.doTIDE_Ambi() - ) - if InDetFlags.doPixelClusterSplitting() and InDetFlags.pixelClusterSplittingType() == 'NeuralNet': - PixelClusterOnTrackToolPattern.NnClusterizationFactory = NnClusterizationFactory - if InDetFlags.doTIDE_RescalePixelCovariances() : - PixelClusterOnTrackToolPattern.applydRcorrection = True - - ToolSvc += PixelClusterOnTrackToolPattern + PixelClusterOnTrackToolDBM = TrackingCommon.getInDetPixelClusterOnTrackToolDBM() + PixelClusterOnTrackTool = TrackingCommon.getInDetPixelClusterOnTrackTool() + PixelClusterOnTrackToolPattern = TrackingCommon.getInDetPixelClusterOnTrackToolPattern() - if (InDetFlags.doPrintConfigurables()): - print PixelClusterOnTrackTool - if InDetFlags.doDBM(): - print PixelClusterOnTrackToolDBM - if InDetFlags.doDigitalROTCreation(): - - PixelClusterOnTrackToolDigital = InDet__PixelClusterOnTrackTool("InDetPixelClusterOnTrackToolDigital", - LorentzAngleTool = ToolSvc.PixelLorentzAngleTool, - DisableDistortions = (InDetFlags.doFatras() or InDetFlags.doDBMstandalone()), - applyNNcorrection = False, - NNIBLcorrection = False, - SplitClusterAmbiguityMap = InDetKeys.SplitClusterAmbiguityMap() + InDetNewTrackingCuts.extension(), - RunningTIDE_Ambi = InDetFlags.doTIDE_Ambi(), - ErrorStrategy = 2, - PositionStrategy = 1 - ) - - ToolSvc += PixelClusterOnTrackToolDigital - + PixelClusterOnTrackToolDigital = TrackingCommon.getInDetPixelClusterOnTrackToolDigital() else : - PixelClusterOnTrackToolDigital = InDet__PixelClusterOnTrackTool("InDetPixelClusterOnTrackToolDigital", - LorentzAngleTool = ToolSvc.PixelLorentzAngleTool, - DisableDistortions = (InDetFlags.doFatras() or InDetFlags.doDBMstandalone()), - applyNNcorrection = ( InDetFlags.doPixelClusterSplitting() and - InDetFlags.pixelClusterSplittingType() == 'NeuralNet' and not InDetFlags.doSLHC()), - NNIBLcorrection = ( InDetFlags.doPixelClusterSplitting() and - InDetFlags.pixelClusterSplittingType() == 'NeuralNet' and not InDetFlags.doSLHC()), - SplitClusterAmbiguityMap = "", - RunningTIDE_Ambi = InDetFlags.doTIDE_Ambi() - ) - ToolSvc += PixelClusterOnTrackToolDigital + PixelClusterOnTrackToolDigital = TrackingCommon.getInDetPixelClusterOnTrackTool(name = "InDetPixelClusterOnTrackToolNoSplitClusterMap", + SplitClusterAmbiguityMap = "") else: PixelClusterOnTrackTool = None PixelClusterOnTrackToolDigital = None PixelClusterOnTrackToolPattern = None if DetFlags.haveRIO.SCT_on(): - # SiLorentzAngleTool - from SiLorentzAngleTool.SCTLorentzAngleToolSetup import SCTLorentzAngleToolSetup - sctLorentzAngleToolSetup = SCTLorentzAngleToolSetup() - from SiClusterOnTrackTool.SiClusterOnTrackToolConf import InDet__SCT_ClusterOnTrackTool - SCT_ClusterOnTrackTool = InDet__SCT_ClusterOnTrackTool ("InDetSCT_ClusterOnTrackTool", - #CorrectionStrategy = -1, # no position correction (test for bug #56477) - CorrectionStrategy = 0, # do correct position bias - ErrorStrategy = 2, # do use phi dependent errors - LorentzAngleTool = sctLorentzAngleToolSetup.SCTLorentzAngleTool) - if (InDetFlags.doPrintConfigurables()): - print SCT_ClusterOnTrackTool + SCT_ClusterOnTrackTool = TrackingCommon.getInDetSCT_ClusterOnTrackTool() else: SCT_ClusterOnTrackTool = None # # default ROT creator, not smart ! # - from TrkRIO_OnTrackCreator.TrkRIO_OnTrackCreatorConf import Trk__RIO_OnTrackCreator - InDetRotCreator = Trk__RIO_OnTrackCreator(name = 'InDetRotCreator', - ToolPixelCluster = PixelClusterOnTrackTool, - ToolSCT_Cluster = SCT_ClusterOnTrackTool, - Mode = 'indet') - - InDetRotCreatorPattern = Trk__RIO_OnTrackCreator(name = 'InDetRotCreatorPattern', - ToolPixelCluster = PixelClusterOnTrackToolPattern, - ToolSCT_Cluster = SCT_ClusterOnTrackTool, - Mode = 'indet') + InDetRotCreator = TrackingCommon.getInDetRotCreator() + InDetRotCreatorPattern = TrackingCommon.getInDetRotCreatorPattern() if InDetFlags.doDBM(): - if InDetFlags.loadRotCreator() and DetFlags.haveRIO.pixel_on(): - InDetRotCreatorDBM = Trk__RIO_OnTrackCreator(name = 'InDetRotCreatorDBM', - ToolPixelCluster = PixelClusterOnTrackToolDBM, - ToolSCT_Cluster = SCT_ClusterOnTrackTool, - Mode = 'indet') - else: - InDetRotCreatorDBM = Trk__RIO_OnTrackCreator(name = 'InDetRotCreatorDBM', - ToolPixelCluster = PixelClusterOnTrackTool, - ToolSCT_Cluster = SCT_ClusterOnTrackTool, - Mode = 'indet') - ToolSvc += InDetRotCreatorDBM - - - - ToolSvc += InDetRotCreator - ToolSvc += InDetRotCreatorPattern + InDetRotCreatorDBM=TrackingCommon.getInDetRotCreatorDBM() if PixelClusterOnTrackToolDigital != None : - InDetRotCreatorDigital = Trk__RIO_OnTrackCreator(name = 'InDetRotCreatorDigital', - ToolPixelCluster = PixelClusterOnTrackToolDigital, - ToolSCT_Cluster = SCT_ClusterOnTrackTool, - Mode = 'indet') - ToolSvc += InDetRotCreatorDigital - + InDetRotCreatorDigital = TrackingCommon.getInDetRotCreatorDigital() else: - InDetRotCreatorDigital=InDetRotCreatorPattern # # --- configure broad cluster ROT creator # if DetFlags.haveRIO.pixel_on(): - # SiLorentzAngleTool - if not hasattr(ToolSvc, "PixelLorentzAngleTool"): - from SiLorentzAngleTool.PixelLorentzAngleToolSetup import PixelLorentzAngleToolSetup - pixelLorentzAngleToolSetup = PixelLorentzAngleToolSetup() # # tool to always make conservative pixel cluster errors if not InDetFlags.doDBMstandalone(): - from SiClusterOnTrackTool.SiClusterOnTrackToolConf import InDet__PixelClusterOnTrackTool - BroadPixelClusterOnTrackTool = InDet__PixelClusterOnTrackTool("InDetBroadPixelClusterOnTrackTool", - LorentzAngleTool = ToolSvc.PixelLorentzAngleTool, - ErrorStrategy = 0, - DisableDistortions = (InDetFlags.doFatras() or InDetFlags.doDBMstandalone()), - applyNNcorrection = ( InDetFlags.doPixelClusterSplitting() and - InDetFlags.pixelClusterSplittingType() == 'NeuralNet' and not InDetFlags.doSLHC()), - NNIBLcorrection = ( InDetFlags.doPixelClusterSplitting() and - InDetFlags.pixelClusterSplittingType() == 'NeuralNet' and not InDetFlags.doSLHC()), - SplitClusterAmbiguityMap = InDetKeys.SplitClusterAmbiguityMap(), - RunningTIDE_Ambi = InDetFlags.doTIDE_Ambi() - ) - if InDetFlags.doPixelClusterSplitting() and InDetFlags.pixelClusterSplittingType() == 'NeuralNet': - BroadPixelClusterOnTrackTool.NnClusterizationFactory = NnClusterizationFactory - if InDetFlags.doTIDE_RescalePixelCovariances() : - BroadPixelClusterOnTrackTool.applydRcorrection = True - - ToolSvc += BroadPixelClusterOnTrackTool - if (InDetFlags.doPrintConfigurables()): - print BroadPixelClusterOnTrackTool + BroadPixelClusterOnTrackTool = TrackingCommon.getInDetBroadPixelClusterOnTrackTool() else: BroadPixelClusterOnTrackTool = None else: BroadPixelClusterOnTrackTool = None if DetFlags.haveRIO.SCT_on(): - # SiLorentzAngleTool - from SiLorentzAngleTool.SCTLorentzAngleToolSetup import SCTLorentzAngleToolSetup - sctLorentzAngleToolSetup = SCTLorentzAngleToolSetup() # # tool to always make conservative sct cluster errors # from SiClusterOnTrackTool.SiClusterOnTrackToolConf import InDet__SCT_ClusterOnTrackTool - BroadSCT_ClusterOnTrackTool = InDet__SCT_ClusterOnTrackTool ("InDetBroadSCT_ClusterOnTrackTool", - #CorrectionStrategy = -1, # no position correction (test for bug #56477) - CorrectionStrategy = 0, # do correct position bias - ErrorStrategy = 0, # do use broad errors - LorentzAngleTool = sctLorentzAngleToolSetup.SCTLorentzAngleTool) - if (InDetFlags.doPrintConfigurables()): - print BroadSCT_ClusterOnTrackTool + BroadSCT_ClusterOnTrackTool = TrackingCommon.getInDetBroadSCT_ClusterOnTrackTool() else: BroadSCT_ClusterOnTrackTool= None @@ -339,38 +194,12 @@ if InDetFlags.loadRotCreator(): # # tool to always make conservative trt drift circle errors # - from TRT_DriftCircleOnTrackTool.TRT_DriftCircleOnTrackToolConf import InDet__TRT_DriftCircleOnTrackNoDriftTimeTool - BroadTRT_DriftCircleOnTrackTool = InDet__TRT_DriftCircleOnTrackNoDriftTimeTool ("InDetBroadTRT_DriftCircleOnTrackTool") - ToolSvc += BroadTRT_DriftCircleOnTrackTool - if (InDetFlags.doPrintConfigurables()): - print BroadTRT_DriftCircleOnTrackTool + BroadTRT_DriftCircleOnTrackTool = TrackingCommon.getInDetBroadTRT_DriftCircleOnTrackTool() else: BroadTRT_DriftCircleOnTrackTool = None - from TrkRIO_OnTrackCreator.TrkRIO_OnTrackCreatorConf import Trk__RIO_OnTrackCreator - BroadInDetRotCreator = Trk__RIO_OnTrackCreator(name = 'InDetBroadInDetRotCreator', - ToolPixelCluster = BroadPixelClusterOnTrackTool, - ToolSCT_Cluster = BroadSCT_ClusterOnTrackTool, - ToolTRT_DriftCircle = BroadTRT_DriftCircleOnTrackTool, - Mode = 'indet') - ToolSvc += BroadInDetRotCreator + BroadInDetRotCreator = TrackingCommon.getInDetBroadRotCreator() - # - # use broad clusters everywhere ? - # - if use_broad_cluster_pix == True : - InDetRotCreator.ToolPixelCluster = BroadPixelClusterOnTrackTool - - if use_broad_cluster_sct == True : - InDetRotCreator.ToolSCT_Cluster = BroadSCT_ClusterOnTrackTool - - if (InDetFlags.doPrintConfigurables()): - print InDetRotCreator - if InDetFlags.doDBM(): - print InDetRotCreatorDBM - if (InDetFlags.doPrintConfigurables()): - print BroadInDetRotCreator - # # --- load error scaling # @@ -383,35 +212,13 @@ if InDetFlags.loadRotCreator(): if InDetFlags.redoTRT_LR(): if DetFlags.haveRIO.TRT_on(): - from TRT_DriftCircleOnTrackTool.TRT_DriftCircleOnTrackToolConf import InDet__TRT_DriftCircleOnTrackUniversalTool - # --- this is the cut for making a TRT hit a tube hit (biases the distribution) - - TRT_RefitRotCreator = InDet__TRT_DriftCircleOnTrackUniversalTool(name = 'InDetTRT_RefitRotCreator', - RIOonTrackToolDrift = getTRT_DriftCircleOnTrackTool(), - RIOonTrackToolTube = BroadTRT_DriftCircleOnTrackTool, - ScaleHitUncertainty = ScaleHitUncertainty) # fix from Thijs - ToolSvc += TRT_RefitRotCreator - if (InDetFlags.doPrintConfigurables()): - print TRT_RefitRotCreator + TRT_RefitRotCreator = TrackingCommon.getInDetTRT_DriftCircleOnTrackUniversalTool() else: TRT_RefitRotCreator = None - - from TrkRIO_OnTrackCreator.TrkRIO_OnTrackCreatorConf import Trk__RIO_OnTrackCreator - InDetRefitRotCreator = Trk__RIO_OnTrackCreator(name = 'InDetRefitRotCreator', - ToolPixelCluster = PixelClusterOnTrackTool, - ToolSCT_Cluster = SCT_ClusterOnTrackTool, - ToolTRT_DriftCircle = TRT_RefitRotCreator, - Mode = 'indet') - if use_broad_cluster_pix == True : - InDetRefitRotCreator.ToolPixelCluster=BroadPixelClusterOnTrackTool - if use_broad_cluster_sct == True : - InDetRefitRotCreator.ToolSCT_Cluster=BroadSCT_ClusterOnTrackTool - - ToolSvc += InDetRefitRotCreator - if (InDetFlags.doPrintConfigurables()): - print InDetRefitRotCreator - + + InDetRefitRotCreator = TrackingCommon.getInDetRefitRotCreator() + else: InDetRefitRotCreator = InDetRotCreator @@ -557,330 +364,32 @@ if InDetFlags.loadExtrapolator(): # if InDetFlags.loadFitter(): - # - # ----------- Kalman Filter setup (including DNA setup if needed) - # - if InDetFlags.trackFitterType() in ['KalmanFitter', 'KalmanDNAFitter', 'ReferenceKalmanFitter']: - - from InDetCompetingRIOsOnTrackTool.InDetCompetingRIOsOnTrackToolConf \ - import InDet__CompetingPixelClustersOnTrackTool as IDCPCOTT - InDetCompetingPixelTool = IDCPCOTT(name='KalmanCompetingPixelClustersTool', - WeightCutValueBarrel = 5.5, - WeightCutValueEndCap = 5.5) - ToolSvc+=InDetCompetingPixelTool - from InDetCompetingRIOsOnTrackTool.InDetCompetingRIOsOnTrackToolConf \ - import InDet__CompetingSCT_ClustersOnTrackTool as IDCSCOTT - InDetCompetingSctTool = IDCSCOTT(name='KalmanCompetingSCT_ClustersTool', - WeightCutValueBarrel = 5.5, - WeightCutValueEndCap = 5.5) - ToolSvc+=InDetCompetingSctTool - from TrkCompetingRIOsOnTrackTool.TrkCompetingRIOsOnTrackToolConf \ - import Trk__CompetingRIOsOnTrackTool as CompRotTool - InDetKalmanCompetingROT_Tool = CompRotTool(name='KalmanCompetingRIOsTool', - ToolForCompPixelClusters = InDetCompetingPixelTool, - ToolForCompSCT_Clusters = InDetCompetingSctTool) - ToolSvc += InDetKalmanCompetingROT_Tool - - if InDetFlags.trackFitterType() is 'KalmanDNAFitter' or \ - ( InDetFlags.doBremRecovery() and InDetFlags.trackFitterType() is 'KalmanFitter'): - - from TrkDynamicNoiseAdjustor.TrkDynamicNoiseAdjustorConf import Trk__InDetDynamicNoiseAdjustment - InDetDNAdjustor = Trk__InDetDynamicNoiseAdjustment(name = 'InDetDNAdjustor') - ToolSvc += InDetDNAdjustor - if (InDetFlags.doPrintConfigurables()): - print InDetDNAdjustor - - from InDetDNASeparator.InDetDNASeparatorConf import InDet__InDetDNASeparator - InDetDNASeparator = InDet__InDetDNASeparator(name="InDetDNASeparator") - - ToolSvc += InDetDNASeparator - if (InDetFlags.doPrintConfigurables()): - print InDetDNASeparator - - else: - InDetDNAdjustor = None - InDetDNASeparator = None - - # Load Kalman Filter tools - if InDetFlags.trackFitterType() is 'ReferenceKalmanFitter' : - from TrkKalmanFitter.TrkKalmanFitterConf import Trk__ForwardRefTrackKalmanFitter as PublicFKF - else : - from TrkKalmanFitter.TrkKalmanFitterConf import Trk__ForwardKalmanFitter as PublicFKF - InDetFKF = PublicFKF(name = 'InDetFKF', - StateChi2PerNDFPreCut = 30.0) - ToolSvc += InDetFKF - if (InDetFlags.doPrintConfigurables()): - print InDetFKF - from TrkKalmanFitter.TrkKalmanFitterConf import Trk__KalmanSmoother as PublicBKS - InDetBKS = PublicBKS(name = 'InDetBKS', - InitialCovarianceSeedFactor = 200.) - ToolSvc += InDetBKS - if (InDetFlags.doPrintConfigurables()): - print InDetBKS - from TrkKalmanFitter.TrkKalmanFitterConf import Trk__KalmanOutlierRecovery_InDet as PublicKOR - InDetKOR = PublicKOR(name = "KOL_RecoveryID") - - from TrkKalmanFitter.TrkKalmanFitterConf import Trk__KalmanOutlierLogic as PublicKOL - InDetKOL = PublicKOL(name = 'InDetKOL', - TrackChi2PerNDFCut = 17.0, - StateChi2PerNDFCut = 12.5) - ToolSvc += InDetKOL - if (InDetFlags.doPrintConfigurables()): - print InDetKOL - - from TrkKalmanFitter.TrkKalmanFitterConf import Trk__KalmanPiecewiseAnnealingFilter as KPAF - InDetKalmanInternalDAF = KPAF(name = 'KalmanInternalDAF', - CompetingRIOsOnTrackCreator = InDetKalmanCompetingROT_Tool) - ToolSvc += InDetKalmanInternalDAF - if InDetFlags.trackFitterType() is 'ReferenceKalmanFitter' : - InDetAnnealFKF = PublicFKF(name = 'InDetAnnealFKF') # allow separate options - ToolSvc+=InDetAnnealFKF - InDetKalmanInternalDAF.ForwardFitter = InDetAnnealFKF - InDetKalmanInternalDAF.BackwardSmoother = InDetBKS # same tuning so far - - from TrkKalmanFitter.TrkKalmanFitterConf import Trk__MeasRecalibSteeringTool - InDetMeasRecalibST = Trk__MeasRecalibSteeringTool(name='InDetMeasRecalibST', - BroadPixelClusterOnTrackTool = BroadPixelClusterOnTrackTool, - BroadSCT_ClusterOnTrackTool = BroadSCT_ClusterOnTrackTool, - CommonRotCreator = InDetRefitRotCreator - ) - ToolSvc += InDetMeasRecalibST - if (InDetFlags.doPrintConfigurables()): - print InDetMeasRecalibST - - from TrkKalmanFitter.TrkKalmanFitterConf import Trk__KalmanFitter as ConfiguredKalmanFitter - InDetTrackFitter = ConfiguredKalmanFitter(name = 'InDetTrackFitter', - ExtrapolatorHandle = InDetExtrapolator, - RIO_OnTrackCreatorHandle = InDetRefitRotCreator, - MeasurementUpdatorHandle = InDetUpdator, - ForwardKalmanFitterHandle = InDetFKF, - KalmanSmootherHandle = InDetBKS, - KalmanOutlierLogicHandle = InDetKOL, - DynamicNoiseAdjustorHandle = InDetDNAdjustor, - BrempointAnalyserHandle = InDetDNASeparator, - AlignableSurfaceProviderHandle = None, - RecalibratorHandle = InDetMeasRecalibST, - InternalDAFHandle = InDetKalmanInternalDAF) - - if InDetFlags.doBremRecovery() and InDetFlags.trackFitterType() is 'KalmanFitter': - InDetTrackFitter.DoDNAForElectronsOnly = True - - # - # ----------- Distributed Kalman Filter setup - # - elif InDetFlags.trackFitterType() is 'DistributedKalmanFilter' : - from TrkDistributedKalmanFilter.TrkDistributedKalmanFilterConf import Trk__DistributedKalmanFilter - InDetTrackFitter = Trk__DistributedKalmanFilter(name = 'InDetTrackFitter', - ExtrapolatorTool = InDetExtrapolator, - ROTcreator = InDetRotCreator - #sortingReferencePoint = ??? - ) - - # - # ----------- Global Chi2 Fitter setup - # - elif InDetFlags.trackFitterType() is 'GlobalChi2Fitter' : - # - # !!!!!!!!!!!!!!!!!!!!!!! HACK - # - if InDetFlags.doBremRecovery() : - from TrkExTools.TrkExToolsConf import Trk__EnergyLossUpdator - InDetEnergyLossUpdator = Trk__EnergyLossUpdator(name="AtlasEnergyLossUpdator") - ToolSvc += InDetEnergyLossUpdator - ToolSvc.AtlasEnergyLossUpdator.UseBetheBlochForElectrons = False - # - # ----------- main Global Chi2 Fitter for NewT and BackT - # - from TrkGlobalChi2Fitter.TrkGlobalChi2FitterConf import Trk__GlobalChi2Fitter - InDetTrackFitter = Trk__GlobalChi2Fitter(name = 'InDetTrackFitter', - ExtrapolationTool = InDetExtrapolator, - NavigatorTool = InDetNavigator, - PropagatorTool = InDetPropagator, - RotCreatorTool = InDetRotCreator, - BroadRotCreatorTool = BroadInDetRotCreator, - MultipleScatteringTool = InDetMultipleScatteringUpdator, - MeasurementUpdateTool = InDetUpdator, - TrackingGeometrySvc = AtlasTrackingGeometrySvc, - MaterialUpdateTool = InDetMaterialUpdator, - StraightLine = not InDetFlags.solenoidOn(), - OutlierCut = 4, - SignedDriftRadius = True, - ReintegrateOutliers = True, - RecalibrateSilicon = True, - RecalibrateTRT = True, - TRTTubeHitCut = ScaleHitUncertainty, - MaxIterations = 40, - Acceleration = True, - RecalculateDerivatives= InDetFlags.doMinBias() or InDetFlags.doCosmics() or InDetFlags.doBeamHalo(), - TRTExtensionCuts = True, - TrackChi2PerNDFCut = 7) - - if InDetFlags.doDBMstandalone(): - 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(): - InDetTrackFitter.BroadRotCreatorTool = None - InDetTrackFitter.ReintegrateOutliers = False - InDetTrackFitter.RecalibrateTRT = False - if InDetFlags.doRobustReco(): - #InDetTrackFitter.BroadRotCreatorTool=None - InDetTrackFitter.OutlierCut = 10.0 - InDetTrackFitter.TrackChi2PerNDFCut = 20 - if InDetFlags.doRobustReco() or InDetFlags.doCosmics(): - InDetTrackFitter.MaxOutliers = 99 - if InDetFlags.doCosmics() or InDetFlags.doBeamHalo(): - InDetTrackFitter.Acceleration = False - - if InDetFlags.materialInteractions() and not InDetFlags.solenoidOn(): - InDetTrackFitter.Momentum = 1000.*MeV - - # - # ----------- Global Chi2 Fitter for Low-Pt with different settings - # - if InDetFlags.doLowPt() or InDetFlags.doVeryLowPt() or (InDetFlags.doTrackSegmentsPixel() and InDetFlags.doMinBias()): - InDetTrackFitterLowPt = Trk__GlobalChi2Fitter(name = 'InDetTrackFitterLowPt', - ExtrapolationTool = InDetExtrapolator, - NavigatorTool = InDetNavigator, - PropagatorTool = InDetPropagator, - RotCreatorTool = InDetRotCreator, - BroadRotCreatorTool = BroadInDetRotCreator, - MultipleScatteringTool = InDetMultipleScatteringUpdator, - MeasurementUpdateTool = InDetUpdator, - StraightLine = not InDetFlags.solenoidOn(), - OutlierCut = 5.0, - SignedDriftRadius = True, - ReintegrateOutliers = True, - RecalibrateSilicon = True, - RecalibrateTRT = True, - TRTTubeHitCut = ScaleHitUncertainty, - MaxIterations = 40, - RecalculateDerivatives= True, - TRTExtensionCuts = True, - TrackChi2PerNDFCut = 10) - - # - # ----------- Global Chi2 Fitter for TRT segments with different settings - # - InDetTrackFitterTRT = Trk__GlobalChi2Fitter(name = 'InDetTrackFitterTRT', - ExtrapolationTool = InDetExtrapolator, - NavigatorTool = InDetNavigator, - PropagatorTool = InDetPropagator, - RotCreatorTool = InDetRefitRotCreator, - MeasurementUpdateTool = InDetUpdator, - MultipleScatteringTool = InDetMultipleScatteringUpdator, - StraightLine = not InDetFlags.solenoidOn(), - ReintegrateOutliers = False, - MaxIterations = 10, - RecalculateDerivatives= False, - TrackChi2PerNDFCut = 999999) - #TrackChi2PerNDFCut = 10) - - if InDetFlags.materialInteractions() and not InDetFlags.solenoidOn(): - InDetTrackFitterTRT.Momentum=1000.*MeV - if InDetFlags.doRobustReco() or InDetFlags.doCosmics(): - InDetTrackFitterTRT.MaxOutliers=99 - if InDetFlags.doRefit(): - InDetTrackFitterTRT.ReintegrateOutliers = False - - # - # ----------- Gaussian Sum Fitter setup - # - elif InDetFlags.trackFitterType() is 'GaussianSumFilter' : - # - # Material effects for the Gsf Extrapolator - # - from TrkGaussianSumFilter.TrkGaussianSumFilterConf import Trk__GsfMaterialMixtureConvolution - InDetGsfMaterialUpdator = Trk__GsfMaterialMixtureConvolution (name = 'InDetGsfMaterialUpdator') - ToolSvc += InDetGsfMaterialUpdator - if (InDetFlags.doPrintConfigurables()): - print InDetGsfMaterialUpdator - # - # component Reduction - # - from TrkGaussianSumFilter.TrkGaussianSumFilterConf import Trk__QuickCloseComponentsMultiStateMerger - InDetGsfComponentReduction = Trk__QuickCloseComponentsMultiStateMerger (name = 'InDetGsfComponentReduction', - MaximumNumberOfComponents = 12) - ToolSvc += InDetGsfComponentReduction - if (InDetFlags.doPrintConfigurables()): - print InDetGsfComponentReduction - # - # declare the extrapolator - # - from TrkGaussianSumFilter.TrkGaussianSumFilterConf import Trk__GsfExtrapolator - InDetGsfExtrapolator = Trk__GsfExtrapolator(name = 'InDetGsfExtrapolator', - Propagators = [ InDetPropagator ], - SearchLevelClosestParameters = 10, - StickyConfiguration = True, - Navigator = InDetNavigator, - GsfMaterialConvolution = InDetGsfMaterialUpdator, - ComponentMerger = InDetGsfComponentReduction, - SurfaceBasedMaterialEffects = False ) - ToolSvc += InDetGsfExtrapolator - if (InDetFlags.doPrintConfigurables()): - print InDetGsfExtrapolator - # load alternative track fitter - from TrkGaussianSumFilter.TrkGaussianSumFilterConf import Trk__GaussianSumFitter - InDetTrackFitter = Trk__GaussianSumFitter(name = 'InDetTrackFitter', - ToolForExtrapolation = InDetGsfExtrapolator, - MeasurementUpdatorType = InDetGsfMeasurementUpdator, - ToolForROTCreation = InDetRotCreator, - ReintegrateOutliers = False, - MakePerigee = True, - RefitOnMeasurementBase = True, - DoHitSorting = True) + if InDetFlags.doBremRecovery() and InDetFlags.trackFitterType() is 'GlobalChi2Fitter' : + # @TODO create where it is needed + from TrkExTools.TrkExToolsConf import Trk__EnergyLossUpdator + InDetEnergyLossUpdator = Trk__EnergyLossUpdator(name="AtlasEnergyLossUpdator", + UseBetheBlochForElectrons = False) + ToolSvc += InDetEnergyLossUpdator + from AthenaCommon import CfgGetter + InDetTrackFitter = CfgGetter.getPublicTool('InDetTrackFitter') + if InDetFlags.doLowPt() or InDetFlags.doVeryLowPt() or (InDetFlags.doTrackSegmentsPixel() and InDetFlags.doMinBias()): + InDetTrackFitterLowPt = CfgGetter.getPublicTool('InDetTrackFitterLowPt') + if DetFlags.TRT_on(): + InDetTrackFitterTRT = CfgGetter.getPublicTool('InDetTrackFitterTRT') if InDetFlags.doDBM(): - InDetTrackFitterDBM = Trk__GlobalChi2Fitter(name = 'InDetTrackFitterDBM', - ExtrapolationTool = InDetExtrapolator, - NavigatorTool = InDetNavigator, - PropagatorTool = InDetPropagator, - RotCreatorTool = InDetRotCreatorDBM, - BroadRotCreatorTool = None, - MultipleScatteringTool = InDetMultipleScatteringUpdator, - MeasurementUpdateTool = InDetUpdator, - TrackingGeometrySvc = AtlasTrackingGeometrySvc, - MaterialUpdateTool = InDetMaterialUpdator, - StraightLine = True, - OutlierCut = 5, - SignedDriftRadius = True, - ReintegrateOutliers = True, - RecalibrateSilicon = True, - RecalibrateTRT = False, - TRTTubeHitCut = ScaleHitUncertainty, - MaxIterations = 40, - Acceleration = True, - RecalculateDerivatives= False, - TRTExtensionCuts = False, - TrackChi2PerNDFCut = 20, - Momentum = 1000.*MeV) - ToolSvc += InDetTrackFitterDBM - - # --- end of fitter loading - ToolSvc += InDetTrackFitter - if (InDetFlags.doPrintConfigurables()): - print InDetTrackFitter - if InDetFlags.doDBM(): - print InDetTrackFitterDBM - - if InDetFlags.trackFitterType() is not 'GlobalChi2Fitter' : - InDetTrackFitterTRT=InDetTrackFitter - InDetTrackFitterLowPt=InDetTrackFitter - else: - if not InDetFlags.doDBMstandalone(): - ToolSvc += InDetTrackFitterTRT - if (InDetFlags.doPrintConfigurables()): - print InDetTrackFitterTRT - if InDetFlags.doLowPt() or (InDetFlags.doTrackSegmentsPixel() and InDetFlags.doMinBias()): - ToolSvc+=InDetTrackFitterLowPt - if (InDetFlags.doPrintConfigurables()): - print InDetTrackFitterLowPt + InDetTrackFitterDBM = CfgGetter.getPublicTool('InDetTrackFitterDBM') + + # @TODO should aldready be in ToolSvc + # if not InDetFlags.doDBMstandalone(): + # ToolSvc += InDetTrackFitterTRT + # if (InDetFlags.doPrintConfigurables()): + # print InDetTrackFitterTRT + # if InDetFlags.doLowPt() or (InDetFlags.doTrackSegmentsPixel() and InDetFlags.doMinBias()): + # ToolSvc+=InDetTrackFitterLowPt + # if (InDetFlags.doPrintConfigurables()): + # print InDetTrackFitterLowPt # # ----------- load association tool from Inner Detector to handle pixel ganged ambiguities @@ -1375,10 +884,11 @@ if InDetFlags.doPattern() and InDetFlags.doCosmics(): print InDetAmbiTrackSelectionToolCosmics + from AthenaCommon import CfgGetter from TrkAmbiguityProcessor.TrkAmbiguityProcessorConf import Trk__SimpleAmbiguityProcessorTool InDetAmbiguityProcessorCosmics = Trk__SimpleAmbiguityProcessorTool(name = 'InDetAmbiguityProcessorCosmics', ScoringTool = InDetScoringToolCosmics, - Fitter = InDetTrackFitter, + Fitter = CfgGetter.getPublicTool('InDetTrackFitter'), SelectionTool = InDetAmbiTrackSelectionToolCosmics, SuppressTrackFit = True, ForceRefit = False, diff --git a/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_jobOptions.py b/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_jobOptions.py index 61f18672cc63661cf16f08f2f92b1e9cf0706cd5..9438c8a3565a4d9bb00dc2acdebf42ecbe692f4f 100755 --- a/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_jobOptions.py +++ b/InnerDetector/InDetExample/InDetRecExample/share/InDetRec_jobOptions.py @@ -309,17 +309,17 @@ else: from InDetTrackPRD_Association.InDetTrackPRD_AssociationConf import InDet__InDetTrackPRD_Association InDetTRTonly_PRD_AssociationPhase = InDet__InDetTrackPRD_Association(name = 'InDetTRTonly_PRD_AssociationPhase', AssociationTool = InDetPrdAssociationTool, - TracksName = copy.copy(TrackCollectionKeys)) + TracksName = copy.copy(TrackCollectionKeys)) topSequence += InDetTRTonly_PRD_AssociationPhase if (InDetFlags.doPrintConfigurables()): print InDetTRTonly_PRD_AssociationPhase - + from AthenaCommon import CfgGetter from TRT_SegmentsToTrack.TRT_SegmentsToTrackConf import InDet__TRT_SegmentsToTrack InDetTrkSegmenttoTrkPhase = InDet__TRT_SegmentsToTrack(name = "InDetTRT_SegmentsToTrack_BarrelPhase", InputSegmentsCollection = InDetKeys.TRT_Segments_Phase(), OutputTrackCollection = InDetKeys.TRT_Tracks_Phase(), - TrackFitter = InDetTrackFitter, + TrackFitter = CfgGetter.getPublicTool('InDetTrackFitter'), MinNHit = InDetNewTrackingCuts.minTRTonly(), CombineTracks = False, OutputCombiCollection = "", @@ -765,9 +765,10 @@ else: if DetFlags.haveRIO.pixel_on(): PixelClusterOnTrackTool = PixelClusterOnTrackToolDBM if InDetFlags.loadFitter(): - InDetTrackFitter = InDetTrackFitterDBM - if InDetFlags.doPattern(): - InDetSiComTrackFinder = InDetSiComTrackFinderDBM + from AthenaCommon import CfgGetter + InDetTrackFitter = CfgGetter.getPublicTool('InDetTrackFitterDBM') + # if InDetFlags.doPattern(): + # InDetSiComTrackFinder = InDetSiComTrackFinderDBM # InDetSiTrackerSpacePointFinder = InDetSiTrackerSpacePointFinderDBM @@ -792,10 +793,10 @@ else: InputCosmicsCombinedAmbiSolver = list(InputCombinedInDetTracks) from TrkAmbiguitySolver.TrkAmbiguitySolverConf import Trk__TrkAmbiguityScore - InDetAmbiguityScore_combinedCosmics = Trk__TrkAmbiguityScore(name = 'InDetCombinedCosmicsAmbiguityScore', - TrackInput = InputCosmicsCombinedAmbiSolver, - TrackOutput = 'ScoredMapCosmics')#, - #AmbiguityScoreProcessor = InDetAmbiguityScoreProcessor ) + InDetAmbiguityScore_combinedCosmics = Trk__TrkAmbiguityScore(name = 'InDetCombinedCosmicsAmbiguityScore', + TrackInput = InputCosmicsCombinedAmbiSolver, + TrackOutput = 'ScoredMapCosmics', + AmbiguityScoreProcessor = '' ) topSequence += InDetAmbiguityScore_combinedCosmics @@ -849,9 +850,11 @@ else: ToolSvc += InDetPRD_Provider # --- the truth track builder + from AthenaCommon import CfgGetter from TrkTruthTrackTools.TrkTruthTrackToolsConf import Trk__TruthTrackBuilder + # @TODO should a track fitter be used which does not require a split cluster map ? InDetTruthTrackBuilder = Trk__TruthTrackBuilder(name = 'InDetTruthTrackBuilder', - TrackFitter = InDetTrackFitter, + TrackFitter = CfgGetter.getPublicTool('InDetTrackFitter'), ExtrapolationTool = InDetExtrapolator, RotCreatorTool = InDetRotCreator, BroadRotCreatorTool = BroadInDetRotCreator, @@ -1079,16 +1082,19 @@ else: # ---------------------------------------------------------------- if InDetFlags.doRefit(): from TrkRefitAlg.TrkRefitAlgConf import Trk__ReFitTrack + from AthenaCommon import CfgGetter + # @TODO for the track refit can a track fitter be used which requires a split cluster map ? + # Should the scoring+split cluster map building be executed ? InDetReFitTrack = Trk__ReFitTrack (name = "InDetRefitTrack", - FitterTool = InDetTrackFitter, - FitterToolTRT = InDetTrackFitterTRT, + FitterTool = CfgGetter.getPublicTool('InDetTrackFitter'), + FitterToolTRT = CfgGetter.getPublicTool('InDetTrackFitterTRT'), SummaryTool = InDetTrackSummaryToolSharedHits, AssoTool = InDetPrdAssociationTool, TrackName = InputTrackCollection, NewTrackName = InDetKeys.RefittedTracks(), fitRIO_OnTrack = InDetFlags.refitROT(), useParticleHypothesisFromTrack = True) - + if InDetFlags.materialInteractions(): InDetReFitTrack.matEffects = InDetFlags.materialInteractionsType() else: diff --git a/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigConfigRecLoadTools.py b/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigConfigRecLoadTools.py index 94988a83948e06ea8087003f6be50eeab40a5c07..bf446a74346cbd538392aed7eef6fa1a1f2a1a63 100755 --- a/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigConfigRecLoadTools.py +++ b/InnerDetector/InDetExample/InDetTrigRecExample/python/InDetTrigConfigRecLoadTools.py @@ -192,12 +192,12 @@ if InDetTrigFlags.loadRotCreator(): # if InDetTrigFlags.redoTRT_LR(): - from InDetRecExample.TrackingCommon import getTRT_DriftCircleOnTrackTool + from InDetRecExample.TrackingCommon import getInDetTRT_DriftCircleOnTrackTool from TRT_DriftCircleOnTrackTool.TRT_DriftCircleOnTrackToolConf import \ InDet__TRT_DriftCircleOnTrackUniversalTool InDetTrigTRT_RefitRotCreator = \ InDet__TRT_DriftCircleOnTrackUniversalTool(name = 'InDetTrigTRT_RefitRotCreator', - RIOonTrackToolDrift = getTRT_DriftCircleOnTrackTool(), # special settings for trigger needed ? + 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.