diff --git a/InnerDetector/InDetConfig/python/BackTrackingConfig.py b/InnerDetector/InDetConfig/python/BackTrackingConfig.py index 940233ffa232f2d59ca6405c8bdec8fdb2d3c9c6..5d2714b8d588a25aaca0742a73e555b90b3bb0df 100644 --- a/InnerDetector/InDetConfig/python/BackTrackingConfig.py +++ b/InnerDetector/InDetConfig/python/BackTrackingConfig.py @@ -94,10 +94,9 @@ def TRT_SeededTrackFinder_ATLCfg(flags, name='InDetTRT_SeededTrackMaker', Tracki InDetSiComTrackFinder = acc.popToolsAndMerge(TC.SiCombinatorialTrackFinder_xkCfg(flags)) acc.addPublicTool(InDetSiComTrackFinder) - InDetTRT_SeededSiRoadMaker = acc.popToolsAndMerge(SiDetElementsRoadMaker_xkCfg(flags, TrackingFlags=TrackingFlags)) - acc.addPublicTool(InDetTRT_SeededSiRoadMaker) - if (TrackingFlags.usePixel and TrackingFlags.useSCT) is not False: + InDetTRT_SeededSiRoadMaker = acc.popToolsAndMerge(SiDetElementsRoadMaker_xkCfg(flags, TrackingFlags=TrackingFlags)) + acc.addPublicTool(InDetTRT_SeededSiRoadMaker) kwargs.setdefault("RoadTool", InDetTRT_SeededSiRoadMaker) # @@ -155,8 +154,8 @@ def TRT_SeededTrackFinderCfg(flags, name='InDetTRT_SeededTrackFinder', TrackingF suffix = '' usePrdAssociationTool = False - InDetTrackFitter = acc.popToolsAndMerge(TC.InDetKalmanFitterCfg(flags)) - acc.addPublicTool(InDetTrackFitter) + InDetTrackFitterBT = acc.popToolsAndMerge(TC.InDetTrackFitterBTCfg(flags)) + acc.addPublicTool(InDetTrackFitterBT) InDetTrackSummaryToolNoHoleSearch = acc.popToolsAndMerge(TC.InDetTrackSummaryToolNoHoleSearchCfg(flags)) acc.addPublicTool(InDetTrackSummaryToolNoHoleSearch) @@ -174,7 +173,7 @@ def TRT_SeededTrackFinderCfg(flags, name='InDetTRT_SeededTrackFinder', TrackingF InputCollections=InputCollections)) acc.addPublicTool(InDetTRT_SeededTrackTool) - kwargs.setdefault("RefitterTool", InDetTrackFitter) + kwargs.setdefault("RefitterTool", InDetTrackFitterBT) kwargs.setdefault("TrackTool", InDetTRT_SeededTrackTool) kwargs.setdefault("PRDtoTrackMap", prefix+'PRDtoTrackMap'+suffix if usePrdAssociationTool else "") kwargs.setdefault("TrackSummaryTool", InDetTrackSummaryToolNoHoleSearch) @@ -251,8 +250,8 @@ def SimpleAmbiguityProcessorToolCfg(flags, name='InDetTRT_SeededAmbiguityProcess # # --- load Ambiguity Processor # - InDetTrackFitter = acc.popToolsAndMerge(TC.InDetKalmanFitterCfg(flags)) - acc.addPublicTool(InDetTrackFitter) + InDetTrackFitterBT = acc.popToolsAndMerge(TC.InDetTrackFitterBTCfg(flags)) + acc.addPublicTool(InDetTrackFitterBT) InDetPRDtoTrackMapToolGangedPixels = TC.InDetPRDtoTrackMapToolGangedPixelsCfg(flags) acc.addPublicTool(InDetPRDtoTrackMapToolGangedPixels) @@ -274,7 +273,7 @@ def SimpleAmbiguityProcessorToolCfg(flags, name='InDetTRT_SeededAmbiguityProcess InDetTRT_SeededAmbiTrackSelectionTool = acc.popToolsAndMerge(InDetAmbiTrackSelectionToolCfg(flags, TrackingFlags=TrackingFlags)) acc.addPublicTool(InDetTRT_SeededAmbiTrackSelectionTool) - kwargs.setdefault("Fitter", InDetTrackFitter) + kwargs.setdefault("Fitter", InDetTrackFitterBT) kwargs.setdefault("AssociationTool", InDetPRDtoTrackMapToolGangedPixels) kwargs.setdefault("TrackSummaryTool", InDetTRT_SeededSummaryTool) kwargs.setdefault("SelectionTool", InDetTRT_SeededAmbiTrackSelectionTool) @@ -383,9 +382,6 @@ if __name__ == "__main__": from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg top_acc.merge(PoolReadCfg(ConfigFlags)) - from MagFieldServices.MagFieldServicesConfig import MagneticFieldSvcCfg - top_acc.merge(MagneticFieldSvcCfg(ConfigFlags)) - from PixelGeoModel.PixelGeoModelConfig import PixelGeometryCfg top_acc.merge( PixelGeometryCfg(ConfigFlags) ) @@ -418,7 +414,7 @@ if __name__ == "__main__": from SiLorentzAngleTool.SCT_LorentzAngleConfig import SCT_LorentzAngleCfg top_acc.addPublicTool(top_acc.popToolsAndMerge(SCT_LorentzAngleCfg(ConfigFlags))) ## - from PixelConditionsAlgorithms.PixelConditionsConfig import (PixelOfflineCalibCondAlgCfg, PixelDistortionAlgCfg) + from PixelConditionsAlgorithms.PixelConditionsConfig import PixelOfflineCalibCondAlgCfg, PixelDistortionAlgCfg top_acc.merge(PixelOfflineCalibCondAlgCfg(ConfigFlags)) top_acc.merge(PixelDistortionAlgCfg(ConfigFlags)) ## @@ -462,8 +458,6 @@ if __name__ == "__main__": iovsvc = top_acc.getService('IOVDbSvc') iovsvc.OutputLevel=5 - top_acc.getService('StoreGateSvc').Dump = True - top_acc.printConfig(withDetails = True, summariseProps = True) - + top_acc.printConfig() top_acc.run(25) top_acc.store(open("test_BackTrackingConfig.pkl", "wb")) \ No newline at end of file diff --git a/InnerDetector/InDetConfig/python/NewTrackingTRTExtensionConfig.py b/InnerDetector/InDetConfig/python/TRTExtensionConfig.py similarity index 91% rename from InnerDetector/InDetConfig/python/NewTrackingTRTExtensionConfig.py rename to InnerDetector/InDetConfig/python/TRTExtensionConfig.py index f2e3f048b3b51a68a11d50bdd2d3211937f6c5aa..d6c695fdc97f1dc7d13ecda31c9e7b2c6e390a80 100644 --- a/InnerDetector/InDetConfig/python/NewTrackingTRTExtensionConfig.py +++ b/InnerDetector/InDetConfig/python/TRTExtensionConfig.py @@ -5,14 +5,6 @@ import InDetConfig.TrackingCommonConfig as TC import AthenaCommon.SystemOfUnits as Units #///////////// Temporary location TrackingSiPatternConfig configurations /////////////////////// -def SiDetElementBoundaryLinksCondAlg_xkCfg(name="InDetSiDetElementBoundaryLinksPixelCondAlg", **kwargs) : - acc = ComponentAccumulator() - - kwargs.setdefault("ReadKey", "PixelDetectorElementCollection") - kwargs.setdefault("WriteKey", "PixelDetElementBoundaryLinks_xk") - acc.addCondAlgo(CompFactory.InDet.SiDetElementBoundaryLinksCondAlg_xk(name = name)) - return acc - def SiCombinatorialTrackFinder_xkCfg(flags, name="InDetSiComTrackFinder", TrackingFlags = None, **kwargs) : acc = ComponentAccumulator() # @@ -33,14 +25,22 @@ def SiCombinatorialTrackFinder_xkCfg(flags, name="InDetSiComTrackFinder", Tracki InDetPatternUpdator = TC.InDetPatternUpdatorCfg() acc.addPublicTool(InDetPatternUpdator) + from InDetConfig.InDetRecToolConfig import InDetBoundaryCheckToolCfg + boundary_check_tool = acc.popToolsAndMerge(InDetBoundaryCheckToolCfg(flags)) + acc.addPublicTool(boundary_check_tool) + kwargs.setdefault("PropagatorTool", InDetPatternPropagator) kwargs.setdefault("UpdatorTool", InDetPatternUpdator) + kwargs.setdefault("BoundaryCheckTool", boundary_check_tool) kwargs.setdefault("RIOonTrackTool", rot_creator_digital) kwargs.setdefault("usePixel", flags.Detector.RecoPixel) kwargs.setdefault("useSCT", flags.Detector.RecoSCT if not is_dbm else False) kwargs.setdefault("PixelClusterContainer", 'PixelClusters') # InDetKeys.PixelClusters() kwargs.setdefault("SCT_ClusterContainer", 'SCT_Clusters') # InDetKeys.SCT_Clusters() + if TrackingFlags.extension == "Offline": + kwargs.setdefault("writeHolesFromPattern", flags.InDet.useHolesFromPattern) + if is_dbm : kwargs.setdefault("MagneticFieldMode", "NoField") kwargs.setdefault("TrackQualityCut", 9.3) @@ -56,11 +56,42 @@ def SiCombinatorialTrackFinder_xkCfg(flags, name="InDetSiComTrackFinder", Tracki acc.setPrivateTools(track_finder) return acc +def SiDetElementsRoadMaker_xkCfg(flags, name="InDetSiRoadMaker", TrackingFlags = None, **kwargs) : + acc = ComponentAccumulator() + # + # --- SCT and Pixel detector elements road builder + # + InDetPatternPropagator = TC.InDetPatternPropagatorCfg() + acc.addPublicTool(InDetPatternPropagator) + + kwargs.setdefault("PropagatorTool", InDetPatternPropagator) + kwargs.setdefault("usePixel", TrackingFlags.usePixel ) + kwargs.setdefault("PixManagerLocation", 'Pixel') + kwargs.setdefault("useSCT", TrackingFlags.useSCT) + kwargs.setdefault("SCTManagerLocation", 'SCT') + kwargs.setdefault("RoadWidth", TrackingFlags.roadWidth) + + InDetSiDetElementsRoadMaker = CompFactory.InDet.SiDetElementsRoadMaker_xk(name = name+TrackingFlags.extension, **kwargs) + acc.setPrivateTools(InDetSiDetElementsRoadMaker) + return acc + def SiTrackMaker_xkCfg(flags, name="InDetSiTrackMaker", InputCollections = None, TrackingFlags = None, **kwargs) : acc = ComponentAccumulator() useBremMode = TrackingFlags.extension == "Offline" or TrackingFlags.extension == "SLHC" or TrackingFlags.extension == "DBM" - #InDetSiDetElementsRoadMaker = acc.popToolsAndMerge(SiDetElementsRoadMaker_xkCfg(flags, TrackingFlags = TrackingFlags )) - #acc.addPublicTool(InDetSiDetElementsRoadMaker) + InDetSiDetElementsRoadMaker = acc.popToolsAndMerge(SiDetElementsRoadMaker_xkCfg(flags, TrackingFlags = TrackingFlags )) + acc.addPublicTool(InDetSiDetElementsRoadMaker) + if flags.Detector.RecoPixel: + acc.addCondAlgo( CompFactory.InDet.SiDetElementBoundaryLinksCondAlg_xk( name = "InDetSiDetElementBoundaryLinksPixelCondAlg", + ReadKey = "PixelDetectorElementCollection", + WriteKey = "PixelDetElementBoundaryLinks_xk") ) + if TrackingFlags.useSCT: + acc.addCondAlgo(CompFactory.InDet.SiDetElementsRoadCondAlg_xk(name = "InDet__SiDetElementsRoadCondAlg_xk")) + + acc.addCondAlgo( CompFactory.InDet.SiDetElementBoundaryLinksCondAlg_xk( name = "InDetSiDetElementBoundaryLinksSCTCondAlg", + ReadKey = "SCT_DetectorElementCollection", + WriteKey = "SCT_DetElementBoundaryLinks_xk") ) + + track_finder = acc.popToolsAndMerge(SiCombinatorialTrackFinder_xkCfg(flags, TrackingFlags = TrackingFlags)) acc.addPublicTool(track_finder) @@ -74,7 +105,7 @@ def SiTrackMaker_xkCfg(flags, name="InDetSiTrackMaker", InputCollections = None, kwargs.setdefault("useSCT", TrackingFlags.useSCT) #TrackingFlags.useSCT() kwargs.setdefault("usePixel", TrackingFlags.usePixel) #TrackingFlags.usePixel() - #kwargs.setdefault("RoadTool", InDetSiDetElementsRoadMaker) + kwargs.setdefault("RoadTool", InDetSiDetElementsRoadMaker) kwargs.setdefault("CombinatorialTrackFinder", track_finder) kwargs.setdefault("pTmin", TrackingFlags.minPT) kwargs.setdefault("pTminBrem", TrackingFlags.minPTBrem) @@ -214,6 +245,8 @@ def SiSpacePointsSeedMakerCfg(flags, name="InDetSpSeedsMaker", InputCollections kwargs.setdefault("alwaysKeepConfirmedPixelSeeds", TrackingFlags.keepAllConfirmedPixelSeeds) kwargs.setdefault("mindRadius", 10) kwargs.setdefault("maxSizeSP", 200) + kwargs.setdefault("dImpactCutSlopeUnconfirmedSSS", 1.25) + kwargs.setdefault("dImpactCutSlopeUnconfirmedPPP", 2.0) if TrackingFlags.extension == "R3LargeD0": kwargs.setdefault("optimisePhiBinning", False) @@ -346,6 +379,9 @@ def SiSPSeededTrackFinderCfg(flags, name="InDetSiSpTrackFinder", InputCollection if flags.InDet.doHeavyIon : kwargs.setdefault("FreeClustersCut",2) #Heavy Ion optimization from Igor + if TrackingFlags.extension == "Offline": + kwargs.setdefault("writeHolesFromPattern", flags.InDet.useHolesFromPattern) + InDetSiSPSeededTrackFinder = CompFactory.InDet.SiSPSeededTrackFinder(name = name+TrackingFlags.extension, **kwargs) acc.addEventAlgo(InDetSiSPSeededTrackFinder) return acc @@ -401,6 +437,7 @@ def DeterministicAnnealingFilterCfg(flags, name = 'InDetDAF', **kwargs): def InDetExtensionProcessorCfg(flags, TrackingFlags, SiTrackCollection=None, ExtendedTrackCollection = None, ExtendedTracksMap = None, doPhase=True, **kwargs): acc = ComponentAccumulator() + ForwardTrackCollection = ExtendedTrackCollection # set output extension map name OutputExtendedTracks = ExtendedTracksMap @@ -412,8 +449,19 @@ def InDetExtensionProcessorCfg(flags, TrackingFlags, SiTrackCollection=None, Ext InDetExtensionFitter = acc.popToolsAndMerge(DeterministicAnnealingFilterCfg(flags, name = 'InDetDAF'+ TrackingFlags.extension)) acc.addPublicTool(InDetExtensionFitter) else: - InDetExtensionFitter = acc.popToolsAndMerge(TC.InDetKalmanFitterCfg(flags, name = "InDetTrackFitter")) - acc.addPublicTool(InDetExtensionFitter) + fitter_args = {} + if flags.InDet.holeSearchInGX2Fit: + fitter_args.setdefault("DoHoleSearch", True) + from InDetConfig.InDetRecToolConfig import InDetBoundaryCheckToolCfg + InDetBoundaryCheckTool = acc.popToolsAndMerge(InDetBoundaryCheckToolCfg(flags)) + acc.addPublicTool(InDetBoundaryCheckTool) + fitter_args.setdefault("BoundaryCheckTool", InDetBoundaryCheckTool) + if TrackingFlags.extension != "LowPt": + InDetExtensionFitter = acc.popToolsAndMerge(TC.InDetTrackFitterCfg(flags, 'InDetTrackFitter_TRTExtension'+TrackingFlags.extension, **fitter_args)) + acc.addPublicTool(InDetExtensionFitter) + else: + InDetExtensionFitter = acc.popToolsAndMerge(TC.InDetTrackFitterLowPt(flags, 'InDetTrackFitter_TRTExtension'+TrackingFlags.extension, **fitter_args)) + acc.addPublicTool(InDetExtensionFitter) # # --- load scoring for extension # @@ -519,6 +567,8 @@ if __name__ == "__main__": ConfigFlags.addFlag('InDet.doTRTExtension', True) ConfigFlags.addFlag('InDet.doExtensionProcessor', True) + ConfigFlags.addFlag('InDet.useHolesFromPattern', False) + ConfigFlags.addFlag('InDet.holeSearchInGX2Fit', True) # SiliconPreProcessing ConfigFlags.InDet.doPixelClusterSplitting = True @@ -535,9 +585,6 @@ if __name__ == "__main__": from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg top_acc.merge(PoolReadCfg(ConfigFlags)) - from MagFieldServices.MagFieldServicesConfig import MagneticFieldSvcCfg - top_acc.merge(MagneticFieldSvcCfg(ConfigFlags)) - from PixelGeoModel.PixelGeoModelConfig import PixelGeometryCfg from SCT_GeoModel.SCT_GeoModelConfig import SCT_GeometryCfg top_acc.merge(PixelGeometryCfg(ConfigFlags)) @@ -553,8 +600,7 @@ if __name__ == "__main__": from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg top_acc.merge(BeamSpotCondAlgCfg(ConfigFlags)) - from PixelConditionsAlgorithms.PixelConditionsConfig import (PixelOfflineCalibCondAlgCfg, PixelDistortionAlgCfg) - top_acc.merge(PixelOfflineCalibCondAlgCfg(ConfigFlags)) + from PixelConditionsAlgorithms.PixelConditionsConfig import PixelDistortionAlgCfg top_acc.merge(PixelDistortionAlgCfg(ConfigFlags)) from InDetConfig.TRTSegmentFindingConfig import TRTActiveCondAlgCfg @@ -569,14 +615,6 @@ if __name__ == "__main__": from SiLorentzAngleTool.SCT_LorentzAngleConfig import SCT_LorentzAngleCfg top_acc.addPublicTool(top_acc.popToolsAndMerge(SCT_LorentzAngleCfg(ConfigFlags))) - from PixelConditionsAlgorithms.PixelConditionsConfig import (PixelChargeCalibCondAlgCfg, PixelConfigCondAlgCfg, PixelCablingCondAlgCfg, PixelReadoutSpeedAlgCfg, PixelOfflineCalibCondAlgCfg, PixelDistortionAlgCfg) - top_acc.merge(PixelChargeCalibCondAlgCfg(ConfigFlags)) - top_acc.merge(PixelConfigCondAlgCfg(ConfigFlags)) - top_acc.merge(PixelCablingCondAlgCfg(ConfigFlags)) - top_acc.merge(PixelReadoutSpeedAlgCfg(ConfigFlags)) - top_acc.merge(PixelOfflineCalibCondAlgCfg(ConfigFlags)) - top_acc.merge(PixelDistortionAlgCfg(ConfigFlags)) - top_acc.merge(TC.PixelClusterNnCondAlgCfg(ConfigFlags)) top_acc.merge(TC.PixelClusterNnWithTrackCondAlgCfg(ConfigFlags)) @@ -587,30 +625,13 @@ if __name__ == "__main__": InputCollections = [] InDetSpSeededTracksKey = 'SiSPSeededTracks' # InDetKeys.SiSpSeededTracks() - - if ConfigFlags.InDet.doDBMstandalone: - InDetSpSeededTracksKey = 'SiSPSeededDBMTracks' # InDetKeys.SiSpSeededDBMTracks() - SiSPSeededTrackCollectionKey = InDetSpSeededTracksKey ExtendedTrackCollection = 'ExtendedTracksPhase' # InDetKeys.ExtendedTracksPhase ExtendedTracksMap = 'ExtendedTracksMapPhase' # InDetKeys.ExtendedTracksMapPhase #################### Additional Configuration ######################## - from IOVDbSvc.IOVDbSvcConfig import addFoldersSplitOnline - top_acc.merge(addFoldersSplitOnline(ConfigFlags, "TRT", "/TRT/Onl/Cond/StatusHT", "/TRT/Cond/StatusHT", className='TRTCond::StrawStatusMultChanContainer')) - top_acc.merge(addFoldersSplitOnline(ConfigFlags, 'INDET','/Indet/Onl/TrkErrorScaling','/Indet/TrkErrorScaling', className="CondAttrListCollection")) - - top_acc.addCondAlgo( CompFactory.InDet.SiDetElementBoundaryLinksCondAlg_xk( name = "InDetSiDetElementBoundaryLinksPixelCondAlg", - ReadKey = "PixelDetectorElementCollection", - WriteKey = "PixelDetElementBoundaryLinks_xk") ) - - top_acc.addCondAlgo( CompFactory.InDet.SiDetElementBoundaryLinksCondAlg_xk( name = "InDetSiDetElementBoundaryLinksSCTCondAlg", - ReadKey = "SCT_DetectorElementCollection", - WriteKey = "SCT_DetElementBoundaryLinks_xk") ) - - top_acc.addCondAlgo(CompFactory.InDet.SiDetElementsRoadCondAlg_xk(name = "InDet__SiDetElementsRoadCondAlg_xk")) - + ####################################################################### ################# TRTPreProcessing Configuration ###################### from InDetConfig.TRTPreProcessing import TRTPreProcessingCfg if not ConfigFlags.InDet.doDBMstandalone: @@ -627,8 +648,6 @@ if __name__ == "__main__": ####################### TrackingSiPattern ############################# if ConfigFlags.InDet.doSiSPSeededTrackFinder: - if ConfigFlags.Detector.RecoPixel: - top_acc.merge(SiDetElementBoundaryLinksCondAlg_xkCfg()) top_acc.merge(SiSPSeededTrackFinderCfg( ConfigFlags, InputCollections = InputCollections, SiSPSeededTrackCollectionKey = InDetSpSeededTracksKey, @@ -659,4 +678,4 @@ if __name__ == "__main__": # top_acc.printConfig() top_acc.run(25) - top_acc.store(open("NewTrackingTRTExtensionConfig.pkl", "wb")) \ No newline at end of file + top_acc.store(open("TRTExtensionConfig.pkl", "wb")) \ No newline at end of file diff --git a/InnerDetector/InDetConfig/python/TRTStandaloneConfig.py b/InnerDetector/InDetConfig/python/TRTStandaloneConfig.py index bd7b10255d1dd90a7becb1e6c7137f78e02ad041..455bf062905ca5bef27852b9ce2011b7385c0375 100644 --- a/InnerDetector/InDetConfig/python/TRTStandaloneConfig.py +++ b/InnerDetector/InDetConfig/python/TRTStandaloneConfig.py @@ -52,7 +52,7 @@ def TRT_SegmentToTrackToolCfg(flags, name ='InDetTRT_SegmentToTrackTool', Tracki else: asso_tool = None - InDetTrackFitterTRT = acc.popToolsAndMerge(TC.GlobalChi2FitterCfg(flags)) + InDetTrackFitterTRT = acc.popToolsAndMerge(TC.InDetTrackFitterTRTCfg(flags)) acc.addPublicTool(InDetTrackFitterTRT) InDetTrackSummaryTool = acc.popToolsAndMerge(TC.InDetTrackSummaryToolCfg(flags)) @@ -230,9 +230,6 @@ if __name__ == "__main__": from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg top_acc.merge(PoolReadCfg(ConfigFlags)) - from MagFieldServices.MagFieldServicesConfig import MagneticFieldSvcCfg - top_acc.merge(MagneticFieldSvcCfg(ConfigFlags)) - from TRT_GeoModel.TRT_GeoModelConfig import TRT_GeometryCfg top_acc.merge(TRT_GeometryCfg( ConfigFlags )) @@ -264,9 +261,6 @@ if __name__ == "__main__": PixeldEdxAlg = CompFactory.PixeldEdxAlg(name="PixeldEdxAlg", ReadFromCOOL = True) top_acc.addCondAlgo(PixeldEdxAlg) ### - ### - top_acc.merge(addFoldersSplitOnline(ConfigFlags, "TRT", "/TRT/Onl/Cond/Status", "/TRT/Cond/Status", className='TRTCond::StrawStatusMultChanContainer')) - InDetTRTStrawStatusSummaryTool = top_acc.popToolsAndMerge(TC.InDetTRTStrawStatusSummaryToolCfg(ConfigFlags)) top_acc.addPublicTool(InDetTRTStrawStatusSummaryTool) @@ -302,11 +296,11 @@ if __name__ == "__main__": top_acc.merge(TRTActiveCondAlgCfg(ConfigFlags)) top_acc.merge(TC.TRT_DetElementsRoadCondAlgCfg()) - + ############################# TRTPreProcessing configuration ############################ from InDetConfig.TRTPreProcessing import TRTPreProcessingCfg if not ConfigFlags.InDet.doDBMstandalone: top_acc.merge(TRTPreProcessingCfg(ConfigFlags,(not ConfigFlags.InDet.doTRTPhaseCalculation or ConfigFlags.Beam.Type =="collisions"),False)) - + ########################### TRTSegmentFindingCfg configuration ########################## TrackingFlags = ConfigFlags.InDet.Tracking # NewTracking collection keys InputCombinedInDetTracks = [] @@ -316,7 +310,7 @@ if __name__ == "__main__": InputCombinedInDetTracks, TrackingFlags, 'TRTSegments')) # InDetKeys.TRT_Segments - + ######################################################################################### ############################### TRTStandalone configuration ############################# top_acc.merge(TRTStandaloneCfg( ConfigFlags, extension = "", @@ -327,7 +321,5 @@ if __name__ == "__main__": iovsvc = top_acc.getService('IOVDbSvc') iovsvc.OutputLevel=5 - top_acc.getService('StoreGateSvc').Dump = True - top_acc.printConfig(withDetails = True, summariseProps = True) top_acc.run(25) top_acc.store(open("test_TRTStandaloneConfig.pkl", "wb")) \ No newline at end of file diff --git a/InnerDetector/InDetConfig/python/TrackTruthConfig.py b/InnerDetector/InDetConfig/python/TrackTruthConfig.py new file mode 100644 index 0000000000000000000000000000000000000000..f905b397c052d36a20cf4030aff4f4a2386cec4a --- /dev/null +++ b/InnerDetector/InDetConfig/python/TrackTruthConfig.py @@ -0,0 +1,166 @@ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator +from AthenaConfiguration.ComponentFactory import CompFactory +# ------------------------------------------------------------------------- +# +# ------- fragment to handle track truth association +# +# ------------------------------------------------------------------------- + +def InDetDetailedTrackTruthMakerCfg(flags, Tracks, DetailedTruth, name='Maker',**kwargs) : + acc = ComponentAccumulator() + kwargs.setdefault("TrackCollectionName", Tracks) + kwargs.setdefault("DetailedTrackTruthName", DetailedTruth) + kwargs.setdefault("TruthNamePixel", 'PRD_MultiTruthPixel') + kwargs.setdefault("TruthNameSCT", 'PRD_MultiTruthSCT') + kwargs.setdefault("TruthNameTRT", 'PRD_MultiTruthTRT') + + # this is how the truth maker gets to know which detector is on ... + if (not flags.Detector.RecoPixel): + kwargs.setdefault("TruthNamePixel", "") + if (not flags.Detector.RecoSCT): + kwargs.setdefault("TruthNameSCT", "") + # for cosmics, at the stage of SiPatternRecognition, the TRT truth information is not yet available + if ((not flags.Detector.RecoTRT) or (flags.Beam.Type == 'cosmics' and (DetailedTruth == "SiSPSeededTracksDetailedTruth" or DetailedTruth == "ResolvedTracksDetailedTruth"))): + kwargs.setdefault("TruthNameTRT", "") + + acc.addEventAlgo(CompFactory.InDet.InDetDetailedTrackTruthMaker(name = DetailedTruth+name, **kwargs)) + return acc + +def InDetTruthMatchToolCfg(flags, name='InDetTruthMatchTool', **kwargs) : + acc = ComponentAccumulator() + + if flags.InDet.truthMatchStrategy == 'TruthMatchRatio': + InDetTruthMatchTool = CompFactory.Trk.TruthMatchRatio + elif flags.InDet.truthMatchStrategy == 'TruthMatchTanimoto': + InDetTruthMatchTool = CompFactory.Trk.TruthMatchTanimoto + + kwargs.setdefault("WeightPixel", 10.) + kwargs.setdefault("WeightSCT", 5.) + kwargs.setdefault("WeightTRT", 1.) + + InDetTruthMatchSimilarityTool = InDetTruthMatchTool(name = name, **kwargs) + acc.setPrivateTools(InDetTruthMatchSimilarityTool) + return acc + +def TrackTruthSimilaritySelectorCfg(flags, DetailedTruth, TracksTruth, name='Selector', **kwargs) : + acc = ComponentAccumulator() + + InDetTruthMatchSimilarityTool = acc.popToolsAndMerge(InDetTruthMatchToolCfg(flags)) + acc.addPublicTool(InDetTruthMatchSimilarityTool) + + kwargs.setdefault("DetailedTrackTruthName", DetailedTruth) + kwargs.setdefault("OutputName", TracksTruth) + kwargs.setdefault("TrackTruthSimilarityTool", InDetTruthMatchSimilarityTool) + + acc.addEventAlgo(CompFactory.TrackTruthSimilaritySelector(name = TracksTruth+name, **kwargs)) + return acc + +def InDetTrackTruthCfg(flags, Tracks = None, DetailedTruth = None, TracksTruth = None): + acc = ComponentAccumulator() + # + # --- Enable the detailed track truth + # + acc.merge(InDetDetailedTrackTruthMakerCfg(flags, Tracks, DetailedTruth)) + # + # --- Detailed to old TrackTruth + # + acc.merge(TrackTruthSimilaritySelectorCfg(flags, DetailedTruth, TracksTruth)) + + return acc + + +if __name__ == "__main__": + from AthenaCommon.Configurable import Configurable + Configurable.configurableRun3Behavior=1 + + from AthenaConfiguration.AllConfigFlags import ConfigFlags + + numThreads=1 + ConfigFlags.Concurrency.NumThreads=numThreads + ConfigFlags.Concurrency.NumConcurrentEvents=numThreads # Might change this later, but good enough for the moment. + + ConfigFlags.Detector.GeometryPixel = True + ConfigFlags.Detector.GeometrySCT = True + ConfigFlags.Detector.GeometryTRT = True + + ConfigFlags.InDet.doPixelClusterSplitting = True + + ConfigFlags.Detector.RecoIBL = True + ConfigFlags.Detector.RecoPixel = True + ConfigFlags.Detector.RecoTRT = True + ConfigFlags.Detector.RecoSCT = True + + ConfigFlags.addFlag('InDet.useHolesFromPattern', False) + + from AthenaConfiguration.TestDefaults import defaultTestFiles + ConfigFlags.Input.Files = defaultTestFiles.RDO + ConfigFlags.lock() + ConfigFlags.dump() + + from AthenaConfiguration.MainServicesConfig import MainServicesCfg + top_acc = MainServicesCfg(ConfigFlags) + + from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg + top_acc.merge(PoolReadCfg(ConfigFlags)) + + ####################### Aditional Configurations ######################### + + from PixelGeoModel.PixelGeoModelConfig import PixelGeometryCfg + top_acc.merge( PixelGeometryCfg(ConfigFlags) ) + + from SCT_GeoModel.SCT_GeoModelConfig import SCT_GeometryCfg + top_acc.merge(SCT_GeometryCfg(ConfigFlags)) + + from TRT_GeoModel.TRT_GeoModelConfig import TRT_GeometryCfg + top_acc.merge(TRT_GeometryCfg( ConfigFlags )) + + from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg + top_acc.merge(BeamSpotCondAlgCfg(ConfigFlags)) + + from PixelConditionsAlgorithms.PixelConditionsConfig import PixelDistortionAlgCfg, PixelHitDiscCnfgAlgCfg + top_acc.merge(PixelDistortionAlgCfg(ConfigFlags)) + top_acc.merge(PixelHitDiscCnfgAlgCfg(ConfigFlags)) + + from SiLorentzAngleTool.PixelLorentzAngleConfig import PixelLorentzAngleTool, PixelLorentzAngleCfg + top_acc.addPublicTool(PixelLorentzAngleTool(ConfigFlags)) + top_acc.addPublicTool(top_acc.popToolsAndMerge(PixelLorentzAngleCfg(ConfigFlags))) + + from InDetOverlay.PixelOverlayConfig import PixelRawDataProviderAlgCfg + top_acc.merge(PixelRawDataProviderAlgCfg(ConfigFlags)) + + ################## SiliconPreProcessing Configurations ################### + from InDetConfig.SiliconPreProcessing import InDetRecPreProcessingSiliconCfg + top_acc.merge(InDetRecPreProcessingSiliconCfg(ConfigFlags)) + #################### TRTPreProcessing Configurations ##################### + from InDetConfig.TRTPreProcessing import TRTPreProcessingCfg + top_acc.merge(TRTPreProcessingCfg(ConfigFlags,(not ConfigFlags.InDet.doTRTPhaseCalculation or ConfigFlags.Beam.Type =="collisions"),False)) + + #//// TrackingSiPatternConfig configurations from Temporary location ///// + ################# SiSPSeededTrackFinder Configurations ################### + TrackingFlags = ConfigFlags.InDet.Tracking + + InputCollections = [] + + SiSPSeededTrackCollectionKey = 'SiSPSeededPixelTracks' + ResolvedTrackCollectionKey = 'ResolvedPixelTracks' + from InDetConfig.TRTExtensionConfig import SiSPSeededTrackFinderCfg + top_acc.merge(SiSPSeededTrackFinderCfg( ConfigFlags, + InputCollections = InputCollections, + SiSPSeededTrackCollectionKey = SiSPSeededTrackCollectionKey, + TrackingFlags = TrackingFlags)) + ########################################################################## + #################### InDetTrackTruth Configurations ###################### + + InputTrackCollection = 'SiSPSeededPixelTracks' + InputDetailedTrackTruth = 'DetailedTrackTruth' + InputTrackCollectionTruth = 'TrackTruthCollection' + + top_acc.merge(InDetTrackTruthCfg(flags=ConfigFlags, + Tracks = InputTrackCollection, + DetailedTruth = InputDetailedTrackTruth, + TracksTruth = InputTrackCollectionTruth)) + ################################################################# + top_acc.printConfig() + top_acc.run(25) + top_acc.store(open("TrackTruthConfig.pkl", "wb")) \ No newline at end of file diff --git a/InnerDetector/InDetConfig/python/TrackingCommonConfig.py b/InnerDetector/InDetConfig/python/TrackingCommonConfig.py index 40a893f022a3d70ab36e3e220679a92354ebef6a..13107c433f5a52c3a9c6101a3bf23d53298038d5 100644 --- a/InnerDetector/InDetConfig/python/TrackingCommonConfig.py +++ b/InnerDetector/InDetConfig/python/TrackingCommonConfig.py @@ -3,6 +3,7 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from IOVDbSvc.IOVDbSvcConfig import addFoldersSplitOnline from InDetConfig.InDetRecToolConfig import makeName +import AthenaCommon.SystemOfUnits as Units ####################################################################### def copyArgs(kwargs, copy_list): @@ -12,6 +13,12 @@ def copyArgs(kwargs, copy_list): dict_copy[elm]=kwargs[elm] return dict_copy +def stripArgs(kwargs, copy_list) : + dict_copy = copyArgs(kwargs,copy_list) + for an_arg in copy_list : + kwargs.pop(an_arg,None) + return dict_copy + def NeuralNetworkToHistoToolCfg(**kwargs): acc = ComponentAccumulator() name = kwargs.pop('name',"NeuralNetworkToHistoTool") @@ -88,7 +95,7 @@ def NnClusterizationFactoryCfg(flags, name = 'NnClusterizationFactory', **kwargs acc.merge(addFoldersSplitOnline(flags, "PIXEL", "/PIXEL/Onl/PixelClustering/PixelClusNNCalib", "/PIXEL/PixelClustering/PixelClusNNCalib", className='CondAttrListCollection')) acc.merge(LWTNNCondAlgCfg(flags, name='LWTNNCondAlg')) - kwargs.setdefault("doRunI", True) + kwargs.setdefault("doRunI", do_runI) kwargs.setdefault("useToT", False if do_runI else flags.InDet.doNNToTCalibration) kwargs.setdefault("useRecenteringNNWithoutTracks", True if do_runI else False) kwargs.setdefault("useRecenteringNNWithTracks", False if do_runI else False) @@ -144,7 +151,8 @@ def InDetPixelClusterOnTrackToolNNSplittingCfg(flags, name='InDetPixelClusterOnT def InDetPixelClusterOnTrackToolCfg(flags, name='InDetPixelClusterOnTrackTool', **kwargs): if 'LorentzAngleTool' not in kwargs : from SiLorentzAngleTool.PixelLorentzAngleConfig import PixelLorentzAngleTool - kwargs.setdefault("LorentzAngleTool", PixelLorentzAngleTool(flags, name="PixelLorentzAngleTool") ) + tool = PixelLorentzAngleTool(flags, name="PixelLorentzAngleTool") + kwargs.setdefault("LorentzAngleTool", tool ) if flags.InDet.doDigitalROTCreation: return InDetPixelClusterOnTrackToolDigitalCfg(flags, name=name, **kwargs) @@ -155,9 +163,10 @@ def InDetSCT_ClusterOnTrackToolCfg(flags, name='InDetSCT_ClusterOnTrackTool', ** the_name = makeName(name, kwargs) if 'LorentzAngleTool' not in kwargs : - from SiLorentzAngleTool.PixelLorentzAngleConfig import PixelLorentzAngleTool - kwargs.setdefault("LorentzAngleTool", PixelLorentzAngleTool(flags, name="PixelLorentzAngleTool") ) - + from SiLorentzAngleTool.SCT_LorentzAngleConfig import SCT_LorentzAngleCfg + SCT_LorentzAngle = SCT_LorentzAngleCfg(flags).popPrivateTools() + kwargs.setdefault("LorentzAngleTool", SCT_LorentzAngle ) + kwargs.setdefault("CorrectionStrategy", 0 ) # do correct position bias kwargs.setdefault("ErrorStrategy", 2 ) # do use phi dependent errors return CompFactory.InDet.SCT_ClusterOnTrackTool(the_name, **kwargs) @@ -198,13 +207,26 @@ def RIO_OnTrackErrorScalingCondAlgCfg(flags, **kwargs): acc.addCondAlgo(CompFactory.RIO_OnTrackErrorScalingCondAlg(**kwargs)) return acc +def LumiCondDataKeyForTRTMuScalingCfg(flags, **kwargs) : + acc = ComponentAccumulator() + LuminosityOutputKey = '' + if not flags.Beam.Type == 'cosmics' and False: # InDetFlags.useMuForTRTErrorScaling() "temporary value" + from LumiBlockComps.LuminosityCondAlgConfig import LuminosityCondAlgCfg + LuminosityCondAlg = LuminosityCondAlgCfg (flags) + acc.merge(LuminosityCondAlg) + LuminosityOutputKey = LuminosityCondAlg.getCondAlgo ('LuminosityCondAlg').LuminosityOutputKey + + return acc, LuminosityOutputKey + def InDetTRT_DriftCircleOnTrackToolCfg(flags, name='TRT_DriftCircleOnTrackTool', **kwargs): acc = ComponentAccumulator() the_name = makeName( name, kwargs) kwargs.pop('isHLT',None) acc.merge(RIO_OnTrackErrorScalingCondAlgCfg(flags, name = 'RIO_OnTrackErrorScalingCondAlg')) kwargs.setdefault("TRTErrorScalingKey", '/Indet/TrkErrorScalingTRT') - kwargs.setdefault("LumiDataKey", '') # need to check + tmpAcc, LuminosityOutputKey = LumiCondDataKeyForTRTMuScalingCfg(flags) + acc.merge(tmpAcc) + kwargs.setdefault("LumiDataKey", LuminosityOutputKey) acc.addPublicTool(CompFactory.InDet.TRT_DriftCircleOnTrackTool(name = the_name, **kwargs), primary = True) return acc @@ -214,7 +236,7 @@ def InDetBroadTRT_DriftCircleOnTrackToolCfg(name='InDetBroadTRT_DriftCircleOnTra def InDetRotCreatorCfg(flags, name='InDetRotCreator', **kwargs): acc = ComponentAccumulator() - strip_args=['SplitClusterMapExtension','ClusterSplitProbabilityName','RenounceInputHandles','nameSuffix'] + strip_args=['SplitClusterMapExtension','ClusterSplitProbabilityName','nameSuffix'] pix_cluster_on_track_args = copyArgs(kwargs,strip_args) the_name = makeName(name, kwargs) @@ -323,9 +345,8 @@ def InDetTrackSummaryToolCfg(flags, name='InDetTrackSummaryTool', **kwargs): acc = ComponentAccumulator() # makeName will remove the namePrefix in suffix from kwargs, so copyArgs has to be first hlt_args = copyArgs(kwargs,['isHLT','namePrefix']) - id_helper_args = copyArgs(kwargs,['ClusterSplitProbabilityName','RenounceInputHandles','namePrefix','nameSuffix']) if 'ClusterSplitProbabilityName' in kwargs else {} + id_helper_args = copyArgs(kwargs,['ClusterSplitProbabilityName','namePrefix','nameSuffix']) if 'ClusterSplitProbabilityName' in kwargs else {} kwargs.pop('ClusterSplitProbabilityName',None) - kwargs.pop('RenounceInputHandles',None) kwargs.pop('isHLT',None) the_name = makeName( name, kwargs) do_holes=kwargs.get("doHolesInDet",True) @@ -333,13 +354,15 @@ def InDetTrackSummaryToolCfg(flags, name='InDetTrackSummaryTool', **kwargs): id_helper_args.update(hlt_args) if 'InDetSummaryHelperTool' not in kwargs : - from InDetConfig.InDetRecToolConfig import InDetTrackSummaryHelperToolCfg - tmpAcc = InDetTrackSummaryHelperToolCfg(flags, **id_helper_args) - InDetSummaryHelper = tmpAcc.getPrimary() - acc.merge(tmpAcc) - InDetSummaryHelperNoHoleSearch = acc.popToolsAndMerge(InDetSummaryHelperNoHoleSearchCfg(flags, **id_helper_args)) - acc.addPublicTool(InDetSummaryHelperNoHoleSearch) - kwargs.setdefault("InDetSummaryHelperTool", InDetSummaryHelper if do_holes else InDetSummaryHelperNoHoleSearch) + if do_holes: + from InDetConfig.InDetRecToolConfig import InDetTrackSummaryHelperToolCfg + tmpAcc = InDetTrackSummaryHelperToolCfg(flags, **id_helper_args) + InDetSummaryHelperTool = tmpAcc.getPrimary() + acc.merge(tmpAcc) + else: + InDetSummaryHelperTool = acc.popToolsAndMerge(InDetSummaryHelperNoHoleSearchCfg(flags, **id_helper_args)) + acc.addPublicTool(InDetSummaryHelperTool) + kwargs.setdefault("InDetSummaryHelperTool", InDetSummaryHelperTool) # # Configurable version of TrkTrackSummaryTool: no TRT_PID tool needed here (no shared hits) @@ -484,7 +507,7 @@ def InDetTRT_ElectronPidToolCfg(flags, name = "InDetTRT_ElectronPidTool", **kwar InDetTRT_dEdxTool = None kwargs.setdefault( "TRT_ToT_dEdx_Tool", InDetTRT_dEdxTool) - kwargs.setdefault( "isData", not flags.Input.isMC) + kwargs.setdefault( "CalculateNNPid", flags.InDet.doTRTPIDNN) InDetTRT_ElectronPidTool = CompFactory.InDet.TRT_ElectronPidToolRun2(name = the_name, **kwargs) return InDetTRT_ElectronPidTool @@ -492,13 +515,12 @@ def InDetTRT_ElectronPidToolCfg(flags, name = "InDetTRT_ElectronPidTool", **kwar def InDetTrackSummaryToolSharedHitsCfg(flags, name='InDetTrackSummaryToolSharedHits',**kwargs): acc = ComponentAccumulator() if 'InDetSummaryHelperTool' not in kwargs : - copy_args=['ClusterSplitProbabilityName','RenounceInputHandles','namePrefix','nameSuffix'] + copy_args=['ClusterSplitProbabilityName','namePrefix','nameSuffix'] do_holes=kwargs.get("doHolesInDet",True) if do_holes : copy_args += ['isHLT'] id_helper_args = copyArgs(kwargs,copy_args) if 'ClusterSplitProbabilityName' in kwargs else {} kwargs.pop('ClusterSplitProbabilityName',None) - kwargs.pop('RenounceInputHandles',None) InDetSummaryHelperSharedHits = acc.popToolsAndMerge(InDetSummaryHelperSharedHitsCfg(flags, **id_helper_args)) acc.addPublicTool(InDetSummaryHelperSharedHits) @@ -546,10 +568,329 @@ def InDetMultipleScatteringUpdatorCfg(name = "InDetMultipleScatteringUpdator", * acc.setPrivateTools(MultipleScatteringUpdator) return acc -def GlobalChi2FitterCfg(flags, name ='InDetTrackFitterTRT', **kwargs): +def InDetMeasRecalibSTCfg(flags, name='InDetMeasRecalibST', **kwargs) : + acc = ComponentAccumulator() + + pix_cluster_on_track_args = stripArgs(kwargs,['SplitClusterMapExtension','ClusterSplitProbabilityName','nameSuffix']) + + if 'BroadPixelClusterOnTrackTool' not in kwargs : + InDetBroadPixelClusterOnTrackTool = InDetBroadPixelClusterOnTrackToolCfg(flags, **pix_cluster_on_track_args) + kwargs.setdefault('BroadPixelClusterOnTrackTool', InDetBroadPixelClusterOnTrackTool) + acc.addPublicTool(InDetBroadPixelClusterOnTrackTool) + if 'BroadSCT_ClusterOnTrackTool' not in kwargs : + InDetBroadSCT_ClusterOnTrackTool = InDetBroadSCT_ClusterOnTrackToolCfg(flags) + acc.addPublicTool(InDetBroadSCT_ClusterOnTrackTool) + kwargs.setdefault('BroadSCT_ClusterOnTrackTool', InDetBroadSCT_ClusterOnTrackTool) + if 'CommonRotCreator' not in kwargs : + InDetRefitRotCreator = acc.popToolsAndMerge(InDetRefitRotCreatorCfg(flags, **pix_cluster_on_track_args)) + acc.addPublicTool(InDetRefitRotCreator) + kwargs.setdefault('CommonRotCreator', InDetRefitRotCreator) + + MeasRecalibSteeringTool = CompFactory.Trk.MeasRecalibSteeringTool(name, **kwargs) + acc.setPrivateTools(MeasRecalibSteeringTool) + return acc + +def InDetKalmanTrackFitterBaseCfg(flags, name='InDetKalmanTrackFitterBase',**kwargs) : + acc = ComponentAccumulator() + nameSuffix=kwargs.pop('nameSuffix','') + pix_cluster_on_track_args = stripArgs(kwargs,['SplitClusterMapExtension','ClusterSplitProbabilityName']) + if len(pix_cluster_on_track_args)>0 and len(nameSuffix)>0 : + pix_cluster_on_track_args['nameSuffix']=nameSuffix + + from InDetConfig.InDetRecToolConfig import InDetExtrapolatorCfg + tmpAcc = InDetExtrapolatorCfg(flags) + kwargs.setdefault("ExtrapolatorHandle", tmpAcc.getPrimary()) + acc.merge(tmpAcc) + + if 'RIO_OnTrackCreatorHandle' not in kwargs : + InDetRefitRotCreator = acc.popToolsAndMerge(InDetRefitRotCreatorCfg(flags, **pix_cluster_on_track_args)) + acc.addPublicTool(InDetRefitRotCreator) + kwargs.setdefault("RIO_OnTrackCreatorHandle", InDetRefitRotCreator) + + InDetUpdator = InDetUpdatorCfg(flags) + acc.addPublicTool(InDetUpdator) + kwargs.setdefault('MeasurementUpdatorHandle', InDetUpdator) + kwargs.setdefault('KalmanSmootherHandle', InDetBKS()) + kwargs.setdefault('KalmanOutlierLogicHandle', InDetKOL()) + kwargs.setdefault('DynamicNoiseAdjustorHandle', None) + kwargs.setdefault('BrempointAnalyserHandle', None) + kwargs.setdefault('AlignableSurfaceProviderHandle',None) + + if len(pix_cluster_on_track_args)>0 : + if 'RecalibratorHandle' not in kwargs : + the_tool_name = 'InDetMeasRecalibST' + InDetMeasRecalibST = acc.popToolsAndMerge(InDetMeasRecalibSTCfg(flags, name=the_tool_name+nameSuffix, **pix_cluster_on_track_args)) + acc.addPublicTool(InDetMeasRecalibST) + kwargs.setdefault('RecalibratorHandle', InDetMeasRecalibST) + else : + InDetMeasRecalibST = acc.popToolsAndMerge(InDetMeasRecalibSTCfg(flags)) + acc.addPublicTool(InDetMeasRecalibST) + kwargs.setdefault('RecalibratorHandle', InDetMeasRecalibST) + + KalmanFitter = CompFactory.Trk.KalmanFitter(name=name, **kwargs) + acc.setPrivateTools(KalmanFitter) + return acc + +def InDetDNAdjustor(name='InDetDNAdjustor', **kwargs) : + return CompFactory.Trk.InDetDynamicNoiseAdjustment(name=name,**kwargs) + +def InDetDNASeparator(name='InDetDNASeparator',**kwargs) : + return CompFactory.InDet.InDetDNASeparator(name=name,**kwargs) + +def InDetAnnealBKS(name='InDetAnnealBKS',**kwargs) : + kwargs.setdefault('InitialCovarianceSeedFactor',200.) + return CompFactory.Trk.KalmanSmoother(name=name,**kwargs) + +def KalmanCompetingPixelClustersTool(name='KalmanCompetingPixelClustersTool',**kwargs): + kwargs.setdefault('WeightCutValueBarrel',5.5) + kwargs.setdefault('WeightCutValueEndCap',5.5) + return CompFactory.InDet.CompetingPixelClustersOnTrackTool(name=name, **kwargs) + +def KalmanCompetingSCT_ClustersTool(name='KalmanCompetingSCT_ClustersTool',**kwargs) : + kwargs.setdefault('WeightCutValueBarrel',5.5) + kwargs.setdefault('WeightCutValueEndCap',5.5) + return CompFactory.InDet.CompetingSCT_ClustersOnTrackTool(name=name,**kwargs) + +def KalmanCompetingRIOsTool(name='KalmanCompetingRIOsTool',**kwargs) : + kwargs.setdefault('ToolForCompPixelClusters',KalmanCompetingPixelClustersTool()) + kwargs.setdefault('ToolForCompSCT_Clusters',KalmanCompetingSCT_ClustersTool()) + return CompFactory.Trk.CompetingRIOsOnTrackTool(name=name,**kwargs) + +def KalmanInternalDAF(name='KalmanInternalDAF',**kwargs) : + kwargs.setdefault('CompetingRIOsOnTrackCreator',KalmanCompetingRIOsTool()) + kwargs.setdefault('BackwardSmoother',InDetAnnealBKS()) + return CompFactory.Trk.KalmanPiecewiseAnnealingFilter(name=name,**kwargs) + +def InDetAnnealFKF(name='InDetAnnealFKF',**kwargs) : + return CompFactory.Trk.ForwardKalmanFitter(name=name,**kwargs) + +def InDetFKFRef(name='InDetFKFRef',**kwargs) : + kwargs.setdefault('StateChi2PerNDFPreCut',30.0) + return InDetAnnealFKF(name=name,**kwargs) + +def KalmanInternalDAFRef(name='KalmanInternalDAFRef',**kwargs) : + kwargs.setdefault('ForwardFitter', InDetAnnealFKF()) + kwargs.setdefault('BackwardSmoother', InDetBKS()) + return KalmanInternalDAF(name=name,**kwargs) + +def InDetBroadRotCreatorCfg(flags, name='InDetBroadInDetRotCreator', **kwargs) : + acc = ComponentAccumulator() + + if 'ToolPixelCluster' not in kwargs : + pix_cluster_on_track_args = copyArgs(kwargs,['SplitClusterMapExtension','ClusterSplitProbabilityName','nameSuffix']) + InDetBroadPixelClusterOnTrackTool = InDetBroadPixelClusterOnTrackToolCfg(flags, **pix_cluster_on_track_args) + acc.addPublicTool(InDetBroadPixelClusterOnTrackTool) + kwargs.setdefault('ToolPixelCluster', InDetBroadPixelClusterOnTrackTool) + + if 'ToolSCT_Cluster' not in kwargs : + InDetBroadSCT_ClusterOnTrackTool = InDetBroadSCT_ClusterOnTrackToolCfg(flags) + acc.addPublicTool(InDetBroadSCT_ClusterOnTrackTool) + kwargs.setdefault('ToolSCT_Cluster', InDetBroadSCT_ClusterOnTrackTool) + + if flags.Detector.RecoTRT: + if 'ToolTRT_DriftCircle' not in kwargs : + InDetBroadTRT_DriftCircleOnTrackTool = InDetBroadTRT_DriftCircleOnTrackToolCfg() + acc.addPublicTool(InDetBroadTRT_DriftCircleOnTrackTool) + kwargs.setdefault('ToolTRT_DriftCircle', InDetBroadTRT_DriftCircleOnTrackTool) + + InDetRotCreator = acc.popToolsAndMerge(InDetRotCreatorCfg(flags, name = name, **kwargs)) + acc.setPrivateTools(InDetRotCreator) + return acc + +def KalmanFitterCfg(flags, name='KalmanFitter',**kwargs) : + acc = ComponentAccumulator() + + kwargs.setdefault('ForwardKalmanFitterHandle', InDetFKF()) + if flags.InDet.doBremRecovery: + kwargs.setdefault('DynamicNoiseAdjustorHandle', InDetDNAdjustor()) + kwargs.setdefault('BrempointAnalyserHandle', InDetDNASeparator()) + kwargs.setdefault('DoDNAForElectronsOnly', True) + else: + kwargs.setdefault('DynamicNoiseAdjustorHandle', None) + kwargs.setdefault('BrempointAnalyserHandle', None) + + kwargs.setdefault('InternalDAFHandle', KalmanInternalDAF()) + + InDetKalmanTrackFitterBase = acc.popToolsAndMerge(InDetKalmanTrackFitterBaseCfg(flags, name=name, **kwargs)) + acc.setPrivateTools(InDetKalmanTrackFitterBase) + return acc + +def KalmanDNAFitterCfg(flags, name='KalmanDNAFitter',**kwargs) : + acc = ComponentAccumulator() + + kwargs.setdefault('ForwardKalmanFitterHandle', InDetFKF()) + kwargs.setdefault('DynamicNoiseAdjustorHandle', InDetDNAdjustor()) + kwargs.setdefault('BrempointAnalyserHandle', InDetDNASeparator()) + kwargs.setdefault('InternalDAFHandle', KalmanInternalDAF()) + + InDetKalmanTrackFitterBase = acc.popToolsAndMerge(InDetKalmanTrackFitterBaseCfg(flags, name=name, **kwargs)) + acc.setPrivateTools(InDetKalmanTrackFitterBase) + return acc + +def ReferenceKalmanFitterCfg(flags, name='ReferenceKalmanFitter',**kwargs) : + acc = ComponentAccumulator() + + kwargs.setdefault('ForwardKalmanFitterHandle', InDetFKFRef()) + kwargs.setdefault('InternalDAFHandle', KalmanInternalDAFRef()) + + InDetKalmanTrackFitterBase = acc.popToolsAndMerge(InDetKalmanTrackFitterBaseCfg(flags, name=name, **kwargs)) + acc.setPrivateTools(InDetKalmanTrackFitterBase) + return acc + +def DistributedKalmanFilterCfg(flags, name="DistributedKalmanFilter", **kwargs) : + acc = ComponentAccumulator() + + pix_cluster_on_track_args = stripArgs(kwargs,['SplitClusterMapExtension','ClusterSplitProbabilityName','nameSuffix']) + + if 'ExtrapolatorTool' not in kwargs : + from InDetConfig.InDetRecToolConfig import InDetExtrapolatorCfg + tmpAcc = InDetExtrapolatorCfg(flags) + InDetExtrapolator = tmpAcc.getPrimary() + acc.merge(tmpAcc) + kwargs.setdefault('ExtrapolatorTool', InDetExtrapolator) + + if 'ROTcreator' not in kwargs : + InDetRotCreator = acc.popToolsAndMerge(InDetRotCreatorCfg(flags, **pix_cluster_on_track_args)) + acc.addPublicTool(InDetRotCreator) + kwargs.setdefault('ROTcreator', InDetRotCreator) + + DistributedKalmanFilter = CompFactory.Trk.DistributedKalmanFilter(name = name, **kwargs) + acc.setPrivateTools(DistributedKalmanFilter) + return acc + +def InDetGlobalChi2FitterCfg(flags, name='InDetGlobalChi2Fitter', **kwargs) : + acc = ComponentAccumulator() + + pix_cluster_on_track_args = stripArgs(kwargs,['SplitClusterMapExtension','ClusterSplitProbabilityName','nameSuffix']) + # PHF cut during fit iterations to save CPU time + kwargs.setdefault('MinPHFCut', flags.InDet.Tracking.minTRTPrecFrac) + + if 'RotCreatorTool' not in kwargs : + InDetRotCreator = acc.popToolsAndMerge(InDetRotCreatorCfg(flags, **pix_cluster_on_track_args)) + acc.addPublicTool(InDetRotCreator) + kwargs.setdefault('RotCreatorTool', InDetRotCreator) + + use_broad_cluster_any = flags.InDet.useBroadClusterErrors and (not flags.InDet.doDBMstandalone) + + if 'BroadRotCreatorTool' not in kwargs and not flags.InDet.doRefit: + InDetBroadRotCreator = acc.popToolsAndMerge(InDetBroadRotCreatorCfg(flags, **pix_cluster_on_track_args)) + acc.addPublicTool(InDetBroadRotCreator) + kwargs.setdefault('BroadRotCreatorTool', InDetBroadRotCreator) + + if flags.InDet.doDBMstandalone: + kwargs.setdefault('StraightLine', True) + kwargs.setdefault('OutlierCut', 5) + kwargs.setdefault('RecalibrateTRT', False) + kwargs.setdefault('TRTExtensionCuts', False) + kwargs.setdefault('TrackChi2PerNDFCut', 20) + + if flags.InDet.doRefit or use_broad_cluster_any is True: + kwargs.setdefault('RecalibrateSilicon', False) + + if flags.InDet.doRefit: + kwargs.setdefault('BroadRotCreatorTool', None) + kwargs.setdefault('ReintegrateOutliers', False) + kwargs.setdefault('RecalibrateTRT', False) + + if flags.InDet.doRobustReco: + kwargs.setdefault('OutlierCut', 10.0) + kwargs.setdefault('TrackChi2PerNDFCut', 20) + + if flags.InDet.doRobustReco or flags.Beam.Type == 'cosmics': + kwargs.setdefault('MaxOutliers', 99) + + if flags.Beam.Type == 'cosmics' or flags.InDet.doBeamHalo: + kwargs.setdefault('Acceleration', False) + + if flags.InDet.materialInteractions and not flags.BField.solenoidOn: + kwargs.setdefault('Momentum', 1000.*Units.MeV) + + InDetGlobalChi2FitterBase = acc.popToolsAndMerge(InDetGlobalChi2FitterBaseCfg(flags, name=name, **kwargs)) + acc.setPrivateTools(InDetGlobalChi2FitterBase) + return acc + +def InDetGsfMaterialUpdatorCfg(name='InDetGsfMaterialUpdator', **kwargs) : + the_name = makeName( name, kwargs) + acc = ComponentAccumulator() + + if 'MaximumNumberOfComponents' not in kwargs : + kwargs.setdefault('MaximumNumberOfComponents', 12) + + GsfMaterialMixtureConvolution = CompFactory.Trk.GsfMaterialMixtureConvolution (name = the_name, **kwargs) + acc.setPrivateTools(GsfMaterialMixtureConvolution) + return acc + +def InDetGsfExtrapolatorCfg(flags, name='InDetGsfExtrapolator', **kwargs) : + the_name = makeName(name,kwargs) + acc = ComponentAccumulator() + + if 'Propagators' not in kwargs : + from InDetConfig.InDetRecToolConfig import InDetPropagatorCfg + InDetPropagator = acc.popToolsAndMerge(InDetPropagatorCfg(flags)) + acc.addPublicTool(InDetPropagator) + kwargs.setdefault('Propagators', [ InDetPropagator ]) + + if 'Navigator' not in kwargs : + from InDetConfig.InDetRecToolConfig import InDetNavigatorCfg + InDetNavigator = acc.popToolsAndMerge(InDetNavigatorCfg(flags)) + acc.addPublicTool(InDetNavigator) + kwargs.setdefault('Navigator', InDetNavigator) + + if 'GsfMaterialConvolution' not in kwargs : + InDetGsfMaterialUpdato = acc.popToolsAndMerge(InDetGsfMaterialUpdatorCfg()) + acc.addPublicTool(InDetGsfMaterialUpdato) + kwargs.setdefault('GsfMaterialConvolution', InDetGsfMaterialUpdato) + + kwargs.setdefault('SearchLevelClosestParameters', 10) + kwargs.setdefault('StickyConfiguration', True) + kwargs.setdefault('SurfaceBasedMaterialEffects', False) + + GsfExtrapolator = CompFactory.Trk.GsfExtrapolator(name = the_name, **kwargs) + acc.setPrivateTools(GsfExtrapolator) + return acc + +def GaussianSumFitterCfg(flags, name='GaussianSumFitter', **kwargs) : + acc = ComponentAccumulator() + + pix_cluster_on_track_args = stripArgs(kwargs,['SplitClusterMapExtension','ClusterSplitProbabilityName','nameSuffix']) + + if 'ToolForROTCreation' not in kwargs : + InDetRotCreator = acc.popToolsAndMerge(InDetRotCreatorCfg(flags, **pix_cluster_on_track_args)) + acc.addPublicTool(InDetRotCreator) + kwargs.setdefault('ToolForROTCreation', InDetRotCreator) + + if 'ToolForExtrapolation' not in kwargs : + InDetGsfExtrapolator = acc.popToolsAndMerge(InDetGsfExtrapolatorCfg(flags)) + acc.addPublicTool(InDetGsfExtrapolator) + kwargs.setdefault('ToolForExtrapolation', InDetGsfExtrapolator) + + kwargs.setdefault('ReintegrateOutliers', False) + kwargs.setdefault('MakePerigee', True) + kwargs.setdefault('RefitOnMeasurementBase', True) + kwargs.setdefault('DoHitSorting', True) + + GaussianSumFitter = CompFactory.Trk.GaussianSumFitter(name = name, **kwargs) + acc.setPrivateTools(GaussianSumFitter) + return acc + +def InDetTrackFitterCfg(flags, name='InDetTrackFitter', **kwargs) : + return { + 'KalmanFitter' : KalmanFitterCfg, + 'KalmanDNAFitter' : KalmanDNAFitterCfg, + 'ReferenceKalmanFitter' : ReferenceKalmanFitterCfg, + 'DistributedKalmanFilter' : DistributedKalmanFilterCfg, + 'GlobalChi2Fitter' : InDetGlobalChi2FitterCfg, + 'GaussianSumFilter' : GaussianSumFitterCfg + }[flags.InDet.trackFitterType](flags, name=name, **kwargs) + +def InDetGlobalChi2FitterBaseCfg(flags, name='GlobalChi2FitterBase', **kwargs) : from InDetConfig.InDetRecToolConfig import InDetNavigatorCfg, InDetPropagatorCfg, InDetExtrapolatorCfg acc = ComponentAccumulator() + from TrkConfig.AtlasTrackingGeometrySvcConfig import TrackingGeometrySvcCfg + acc.merge(TrackingGeometrySvcCfg(flags)) + AtlasTrackingGeometrySvc = acc.getService('AtlasTrackingGeometrySvc') + tmpAcc = InDetExtrapolatorCfg(flags) InDetExtrapolator = tmpAcc.getPrimary() acc.merge(tmpAcc) @@ -560,35 +901,140 @@ def GlobalChi2FitterCfg(flags, name ='InDetTrackFitterTRT', **kwargs): InDetPropagator = acc.popToolsAndMerge(InDetPropagatorCfg(flags)) acc.addPublicTool(InDetPropagator) - InDetRefitRotCreator = acc.popToolsAndMerge(InDetRefitRotCreatorCfg(flags)) - acc.addPublicTool(InDetRefitRotCreator) - InDetUpdator = InDetUpdatorCfg(flags) acc.addPublicTool(InDetUpdator) InDetMultipleScatteringUpdator = acc.popToolsAndMerge(InDetMultipleScatteringUpdatorCfg()) acc.addPublicTool(InDetMultipleScatteringUpdator) - if flags.InDet.doRobustReco or flags.Beam.Type == "cosmics": - kwargs.setdefault("MaxOutliers", 99) - - if flags.InDet.materialInteractions and not flags.BField.solenoidOn: - from AthenaCommon.SystemOfUnits import MeV - kwargs.setdefault("Momentum", 1000.*MeV) + from InDetConfig.InDetRecToolConfig import InDetMaterialEffectsUpdatorCfg + InDetMaterialEffectsUpdator = acc.popToolsAndMerge(InDetMaterialEffectsUpdatorCfg(flags)) + acc.addPublicTool(InDetMaterialEffectsUpdator) kwargs.setdefault("ExtrapolationTool", InDetExtrapolator) kwargs.setdefault("NavigatorTool", InDetNavigator) kwargs.setdefault("PropagatorTool", InDetPropagator) - kwargs.setdefault("RotCreatorTool", InDetRefitRotCreator) - kwargs.setdefault("MeasurementUpdateTool", InDetUpdator) kwargs.setdefault("MultipleScatteringTool", InDetMultipleScatteringUpdator) + kwargs.setdefault("MeasurementUpdateTool", InDetUpdator) + kwargs.setdefault("TrackingGeometrySvc", AtlasTrackingGeometrySvc) + kwargs.setdefault("MaterialUpdateTool", InDetMaterialEffectsUpdator) kwargs.setdefault("StraightLine", not flags.BField.solenoidOn) - kwargs.setdefault("ReintegrateOutliers", False) + kwargs.setdefault("OutlierCut", 4) + kwargs.setdefault("SignedDriftRadius", True) + kwargs.setdefault("ReintegrateOutliers", True) + kwargs.setdefault("RecalibrateSilicon", True) + kwargs.setdefault("RecalibrateTRT", True) + kwargs.setdefault("TRTTubeHitCut", 1.75) + kwargs.setdefault("MaxIterations", 40) + kwargs.setdefault("Acceleration", True) + kwargs.setdefault("RecalculateDerivatives", flags.InDet.doMinBias or flags.Beam.Type == 'cosmics' or flags.InDet.doBeamHalo) + kwargs.setdefault("TRTExtensionCuts", True) + kwargs.setdefault("TrackChi2PerNDFCut", 7) + + GlobalChi2Fitter = CompFactory.Trk.GlobalChi2Fitter(name=name, **kwargs) + acc.setPrivateTools(GlobalChi2Fitter) + return acc + +def InDetGlobalChi2FitterTRTCfg(flags, name='InDetGlobalChi2FitterTRT', **kwargs) : + acc = ComponentAccumulator() + ''' + Global Chi2 Fitter for TRT segments with different settings + ''' + pix_cluster_on_track_args = stripArgs(kwargs,['SplitClusterMapExtension','ClusterSplitProbabilityName','nameSuffix']) + + if 'RotCreatorTool' not in kwargs : + InDetRefitRotCreator = acc.popToolsAndMerge(InDetRefitRotCreatorCfg(flags, **pix_cluster_on_track_args)) + acc.addPublicTool(InDetRefitRotCreator) + kwargs.setdefault("RotCreatorTool", InDetRefitRotCreator) + + kwargs.setdefault("MaterialUpdateTool", '') + kwargs.setdefault("TrackingGeometrySvc", '') + kwargs.setdefault("SignedDriftRadius", True) + kwargs.setdefault("RecalibrateSilicon", False) + kwargs.setdefault("RecalibrateTRT", False) + kwargs.setdefault("TRTTubeHitCut", 2.5) kwargs.setdefault("MaxIterations", 10) + kwargs.setdefault("Acceleration", False) kwargs.setdefault("RecalculateDerivatives", False) + kwargs.setdefault("TRTExtensionCuts", True) kwargs.setdefault("TrackChi2PerNDFCut", 999999) + kwargs.setdefault("Momentum", 1000.*Units.MeV if flags.InDet.materialInteractions and not flags.BField.solenoidOn else 0) + kwargs.setdefault("OutlierCut", 5) + kwargs.setdefault("MaxOutliers", 99 if flags.InDet.doRobustReco or flags.Beam.Type == 'cosmics' else 10) + kwargs.setdefault("ReintegrateOutliers", False if flags.InDet.doRefit else False) - acc.setPrivateTools(CompFactory.Trk.GlobalChi2Fitter(name = name, **kwargs)) + InDetGlobalChi2FitterBase = acc.popToolsAndMerge(InDetGlobalChi2FitterBaseCfg(flags, name=name, **kwargs)) + acc.setPrivateTools(InDetGlobalChi2FitterBase) + return acc + +def InDetTrackFitterTRTCfg(flags, name='InDetTrackFitterTRT', **kwargs) : + acc = ComponentAccumulator() + + if flags.InDet.trackFitterType != 'GlobalChi2Fitter' : + InDetTrackFitter = acc.popToolsAndMerge(InDetTrackFitterCfg(flags, name, **kwargs)) + acc.setPrivateTools(InDetTrackFitter) + else : + InDetGlobalChi2FitterTRT = acc.popToolsAndMerge(InDetGlobalChi2FitterTRTCfg(flags, name, **kwargs)) + acc.setPrivateTools(InDetGlobalChi2FitterTRT) + + return acc + +def InDetGlobalChi2FitterLowPtCfg(flags, name='InDetGlobalChi2FitterLowPt', **kwargs) : + acc = ComponentAccumulator() + # @TODO TrackingGeometrySvc was not set but is set now + # RotCreatorTool and BroadRotCreatorTool not set + pix_cluster_on_track_args = stripArgs(kwargs,['SplitClusterMapExtension','ClusterSplitProbabilityName','nameSuffix']) + + if 'RotCreatorTool' not in kwargs : + InDetRotCreator = acc.popToolsAndMerge(InDetRotCreatorCfg(flags, **pix_cluster_on_track_args)) + acc.addPublicTool(InDetRotCreator) + kwargs.setdefault('RotCreatorTool', InDetRotCreator) + + if 'BroadRotCreatorTool' not in kwargs and not flags.InDet.doRefit: + InDetBroadRotCreator = acc.popToolsAndMerge(InDetBroadRotCreatorCfg(flags, **pix_cluster_on_track_args)) + acc.addPublicTool(InDetBroadRotCreator) + kwargs.setdefault('BroadRotCreatorTool', InDetBroadRotCreator) + + kwargs.setdefault('OutlierCut', 5.0) + kwargs.setdefault('Acceleration', False) + kwargs.setdefault('RecalculateDerivatives', True) + kwargs.setdefault('TrackChi2PerNDFCut', 10) + + InDetGlobalChi2FitterBase = acc.popToolsAndMerge(InDetGlobalChi2FitterBaseCfg(flags, name=name, **kwargs)) + acc.setPrivateTools(InDetGlobalChi2FitterBase) + return acc + +def InDetTrackFitterLowPt(flags, name='InDetTrackFitter', **kwargs) : + acc = ComponentAccumulator() + + if flags.InDet.trackFitterType != 'GlobalChi2Fitter' : + InDetTrackFitter = acc.popToolsAndMerge(InDetTrackFitterCfg(flags, name, **kwargs)) + acc.setPrivateTools(InDetTrackFitter) + else : + InDetGlobalChi2FitterLowPt = acc.popToolsAndMerge(InDetGlobalChi2FitterLowPtCfg(flags, name, **kwargs)) + acc.setPrivateTools(InDetGlobalChi2FitterLowPt) + return acc + +def InDetGlobalChi2FitterBTCfg(flags, name='InDetGlobalChi2FitterBT', **kwargs): + acc = ComponentAccumulator() + ''' + Global Chi2 Fitter for backtracking + ''' + kwargs.setdefault("MinPHFCut", 0.) + + InDetGlobalChi2Fitter = acc.popToolsAndMerge(InDetGlobalChi2FitterCfg(flags, name=name, **kwargs)) + acc.setPrivateTools(InDetGlobalChi2Fitter) + return acc + +def InDetTrackFitterBTCfg(flags, name='InDetTrackFitterBT', **kwargs) : + acc = ComponentAccumulator() + + if flags.InDet.trackFitterType != 'GlobalChi2Fitter' : + InDetTrackFitter = acc.popToolsAndMerge(InDetTrackFitterCfg(flags, name, **kwargs)) + acc.setPrivateTools(InDetTrackFitter) + else : + InDetGlobalChi2Fitter = acc.popToolsAndMerge(InDetGlobalChi2FitterBTCfg(flags, name, **kwargs)) + acc.setPrivateTools(InDetGlobalChi2Fitter) return acc def InDetTrackSummaryToolTRTTracksCfg(flags, name='InDetTrackSummaryToolTRTTracks',**kwargs): @@ -613,35 +1059,6 @@ def InDetKOL(name = 'InDetKOL', **kwargs): kwargs.setdefault("StateChi2PerNDFCut", 12.5) PublicKOL = CompFactory.Trk.KalmanOutlierLogic return PublicKOL(name = name, **kwargs) - -def InDetKalmanFitterCfg(flags, name ='InDetKalmanFitter', **kwargs): - acc = ComponentAccumulator() - from InDetConfig.InDetRecToolConfig import InDetExtrapolatorCfg - - tmpAcc = InDetExtrapolatorCfg(flags) - InDetExtrapolator = tmpAcc.getPrimary() - acc.merge(tmpAcc) - - InDetUpdator = InDetUpdatorCfg(flags) - acc.addPublicTool(InDetUpdator) - - InDetRotCreator = acc.popToolsAndMerge(InDetRotCreatorCfg(flags)) - acc.addPublicTool(InDetRotCreator) - - kwargs.setdefault("ExtrapolatorHandle", InDetExtrapolator) - kwargs.setdefault("RIO_OnTrackCreatorHandle", InDetRotCreator) - kwargs.setdefault("MeasurementUpdatorHandle", InDetUpdator) - kwargs.setdefault("ForwardKalmanFitterHandle", InDetFKF()) - kwargs.setdefault("KalmanSmootherHandle", InDetBKS()) - kwargs.setdefault("KalmanOutlierLogicHandle", InDetKOL()) - kwargs.setdefault("DynamicNoiseAdjustorHandle", None) - kwargs.setdefault("BrempointAnalyserHandle", None) - kwargs.setdefault("AlignableSurfaceProviderHandle", None) - kwargs.setdefault("RecalibratorHandle", None) - kwargs.setdefault("InternalDAFHandle", None) - - acc.setPrivateTools(CompFactory.Trk.KalmanFitter(name = name, **kwargs)) - return acc ############################################################################################# #TRTSegmentFinder ############################################################################################# @@ -823,7 +1240,7 @@ def TRT_DetElementsRoadCondAlgCfg(**kwargs): def InDetRotCreatorDigitalCfg(flags, name='InDetRotCreatorDigital', **kwargs) : acc = ComponentAccumulator() if 'ToolPixelCluster' not in kwargs : - pix_cluster_on_track_args = copyArgs(kwargs,['SplitClusterMapExtension','ClusterSplitProbabilityName','RenounceInputHandles','nameSuffix']) + pix_cluster_on_track_args = copyArgs(kwargs,['SplitClusterMapExtension','ClusterSplitProbabilityName','nameSuffix']) ToolPixelCluster = InDetPixelClusterOnTrackToolDigitalCfg(flags, **pix_cluster_on_track_args) kwargs.setdefault('ToolPixelCluster', ToolPixelCluster) @@ -925,11 +1342,16 @@ def SiCombinatorialTrackFinder_xkCfg(flags, name='InDetSiComTrackFinder', **kwar InDetRotCreatorDigital = acc.popToolsAndMerge(InDetRotCreatorDigitalCfg(flags)) acc.addPublicTool(InDetRotCreatorDigital) + from InDetConfig.InDetRecToolConfig import InDetBoundaryCheckToolCfg + InDetBoundaryCheckTool = acc.popToolsAndMerge(InDetBoundaryCheckToolCfg(flags)) + acc.addPublicTool(InDetBoundaryCheckTool) + kwargs.setdefault("PropagatorTool", InDetPatternPropagator) kwargs.setdefault("UpdatorTool", InDetPatternUpdator) + kwargs.setdefault("BoundaryCheckTool", InDetBoundaryCheckTool) kwargs.setdefault("RIOonTrackTool", InDetRotCreatorDigital) kwargs.setdefault("usePixel", flags.Detector.RecoPixel) #DetFlags.haveRIO.pixel_on() - kwargs.setdefault("useSCT", flags.Detector.RecoSCT) #DetFlags.haveRIO.SCT_on() + kwargs.setdefault("useSCT", False) kwargs.setdefault("PixelClusterContainer", 'PixelClusters') #InDetKeys.PixelClusters() kwargs.setdefault("SCT_ClusterContainer", 'SCT_Clusters') # InDetKeys.SCT_Clusters() @@ -1016,7 +1438,7 @@ def InDetPixelClusterOnTrackToolDBMCfg(flags, name='InDetPixelClusterOnTrackTool def InDetRotCreatorDBMCfg(flags, name='InDetRotCreatorDBM', **kwargs) : acc = ComponentAccumulator() if 'ToolPixelCluster' not in kwargs : - pix_cluster_on_track_args = copyArgs(kwargs,['SplitClusterMapExtension','ClusterSplitProbabilityName','RenounceInputHandles','nameSuffix']) + pix_cluster_on_track_args = copyArgs(kwargs,['SplitClusterMapExtension','ClusterSplitProbabilityName','nameSuffix']) if flags.InDet.loadRotCreator and flags.Detector.RecoPixel: ToolPixelCluster = InDetPixelClusterOnTrackToolDBMCfg(flags, pix_cluster_on_track_args)