From ab204f1ce5954833aadee17c3e0dd315c0919ff5 Mon Sep 17 00:00:00 2001 From: tstreble <thomas.strebler@cern.ch> Date: Tue, 11 Jan 2022 19:26:05 +0100 Subject: [PATCH] Cleaning of InDetFlags #7 --- .../InDetConfig/python/BackTrackingConfig.py | 10 ++--- .../python/ClusterizationConfig.py | 2 +- .../InDetConfig/python/ITkConfigFlags.py | 2 - .../InDetConfig/python/ITkTrackRecoConfig.py | 2 +- .../python/ITkTrackingSiPatternConfig.py | 4 +- .../InDetConfig/python/InDetConfigFlags.py | 39 +++++++------------ .../python/SiliconPreProcessing.py | 2 +- .../InDetConfig/python/TRTExtensionConfig.py | 8 +--- .../InDetConfig/python/TRTPreProcessing.py | 4 +- .../python/TRTSegmentFindingConfig.py | 2 +- .../InDetConfig/python/TrackRecoConfig.py | 38 ++++++++++++++---- .../InDetConfig/python/TrackTruthConfig.py | 13 ++----- .../python/TrackingCommonConfig.py | 36 +++++++---------- .../python/TrackingSiPatternConfig.py | 38 +++++------------- 14 files changed, 86 insertions(+), 114 deletions(-) diff --git a/InnerDetector/InDetConfig/python/BackTrackingConfig.py b/InnerDetector/InDetConfig/python/BackTrackingConfig.py index fc121d8dc153..9ee028686b5d 100644 --- a/InnerDetector/InDetConfig/python/BackTrackingConfig.py +++ b/InnerDetector/InDetConfig/python/BackTrackingConfig.py @@ -251,7 +251,7 @@ def InDetTRTAmbiTrackSelectionToolCfg(flags, name='InDetTRT_SeededAmbiTrackSelec kwargs.setdefault("minTRTHits", flags.InDet.Tracking.Pass.minSecondaryTRTonTrk) kwargs.setdefault("UseParameterization", flags.InDet.Tracking.Pass.useParameterizedTRTCuts) kwargs.setdefault("Cosmics", flags.Beam.Type == "cosmics") - kwargs.setdefault("doPixelSplitting", flags.InDet.doPixelClusterSplitting) + kwargs.setdefault("doPixelSplitting", flags.InDet.Tracking.doPixelClusterSplitting) acc.setPrivateTools(CompFactory.InDet.InDetAmbiTrackSelectionTool(name, **kwargs)) return acc @@ -282,15 +282,11 @@ def SimpleAmbiguityProcessorToolCfg(flags, name='InDetTRT_SeededAmbiguityProcess kwargs.setdefault("SelectionTool", InDetTRT_SeededAmbiTrackSelectionTool) kwargs.setdefault("InputClusterSplitProbabilityName", ClusterSplitProbContainer) kwargs.setdefault("OutputClusterSplitProbabilityName", 'InDetTRT_SeededAmbiguityProcessorSplitProb'+flags.InDet.Tracking.Pass.extension) - kwargs.setdefault("RefitPrds", not flags.InDet.refitROT) + kwargs.setdefault("RefitPrds", False) kwargs.setdefault("SuppressTrackFit", False) kwargs.setdefault("SuppressHoleSearch", False) kwargs.setdefault("ScoringTool", InDetTRT_SeededScoringTool) - - if flags.InDet.materialInteractions: - kwargs.setdefault("MatEffects", flags.InDet.materialInteractionsType) - else: - kwargs.setdefault("MatEffects", 0) + kwargs.setdefault("MatEffects", flags.InDet.Tracking.materialInteractionsType if flags.InDet.Tracking.materialInteractions else 0) InDetTRT_SeededAmbiguityProcessor = CompFactory.Trk.SimpleAmbiguityProcessorTool(name = name, **kwargs) acc.setPrivateTools(InDetTRT_SeededAmbiguityProcessor) diff --git a/InnerDetector/InDetConfig/python/ClusterizationConfig.py b/InnerDetector/InDetConfig/python/ClusterizationConfig.py index d3f72a4af2fc..eb94e3e1d4df 100644 --- a/InnerDetector/InDetConfig/python/ClusterizationConfig.py +++ b/InnerDetector/InDetConfig/python/ClusterizationConfig.py @@ -61,7 +61,7 @@ if __name__ == "__main__": ConfigFlags.Detector.GeometryPixel = True ConfigFlags.Detector.GeometrySCT = True - ConfigFlags.InDet.doPixelClusterSplitting = True + ConfigFlags.InDet.Tracking.doPixelClusterSplitting = True from AthenaConfiguration.TestDefaults import defaultTestFiles ConfigFlags.Input.Files = defaultTestFiles.RDO diff --git a/InnerDetector/InDetConfig/python/ITkConfigFlags.py b/InnerDetector/InDetConfig/python/ITkConfigFlags.py index bae1b3ff2d92..fea350a8e562 100644 --- a/InnerDetector/InDetConfig/python/ITkConfigFlags.py +++ b/InnerDetector/InDetConfig/python/ITkConfigFlags.py @@ -14,7 +14,6 @@ def createITkConfigFlags(): itkcf.addFlag("ITk.doStripModuleVeto", False) # Turn on SCT_ModuleVetoSvc, allowing it to be configured later itkcf.addFlag("ITk.checkDeadPixelsOnTrack", True) # Enable check for dead modules and FEs - itkcf.addFlag("ITk.pixelClusterBadClusterID", 3) # Select the mode to identify suspicous pixel clustering itkcf.addFlag("ITk.Tracking.doStoreTrackSeeds", False) # Turn on to save the Track Seeds in a xAOD track collecting for development studies itkcf.addFlag("ITk.Tracking.doDigitalROTCreation", False) # use PixelClusterOnTrackToolDigital during ROT creation to save CPU @@ -34,7 +33,6 @@ def createITkConfigFlags(): itkcf.addFlag("ITk.Tracking.pixelClusterSplittingType", "Truth") # choose splitter type: NeuralNet, AnalogClus or Truth itkcf.addFlag("ITk.Tracking.pixelClusterSplitProb1", 0.55) # Cut value for splitting clusters into two parts itkcf.addFlag("ITk.Tracking.pixelClusterSplitProb2", 0.45) # Cut value for splitting clusters into three parts - itkcf.addFlag("ITk.Tracking.pixelClusterSplitMinPt", 1000) # Min pt for tracks to try and split hits itkcf.addFlag("ITk.Tracking.perigeeExpression", "BeamLine" ) # Express track parameters wrt. to : 'BeamLine','BeamSpot','Vertex' (first primary vertex) itkcf.addFlag("ITk.Tracking.doSharedHits", True) # control if the shared hits are recorded in TrackParticles itkcf.addFlag("ITk.Tracking.materialInteractions", True) diff --git a/InnerDetector/InDetConfig/python/ITkTrackRecoConfig.py b/InnerDetector/InDetConfig/python/ITkTrackRecoConfig.py index b4717e30a651..8cb14ae08294 100644 --- a/InnerDetector/InDetConfig/python/ITkTrackRecoConfig.py +++ b/InnerDetector/InDetConfig/python/ITkTrackRecoConfig.py @@ -141,7 +141,7 @@ def ITkTrackParticleCreatorToolCfg(flags, name="ITkTrackParticleCreatorTool", ** from InDetConfig.ITkTrackingCommonConfig import ITkTrackSummaryToolSharedHitsCfg TrackSummaryTool = result.getPrimaryAndMerge(ITkTrackSummaryToolSharedHitsCfg(flags)) kwargs["TrackSummaryTool"] = TrackSummaryTool - kwargs.setdefault("BadClusterID", flags.ITk.pixelClusterBadClusterID) + kwargs.setdefault("BadClusterID", 3) # Select the mode to identify suspicous pixel cluster kwargs.setdefault("KeepParameters", True) kwargs.setdefault("KeepFirstParameters", False) # need to treat Vertex specifically because at the time of diff --git a/InnerDetector/InDetConfig/python/ITkTrackingSiPatternConfig.py b/InnerDetector/InDetConfig/python/ITkTrackingSiPatternConfig.py index f2cbe6a1d579..fb0db531eab0 100644 --- a/InnerDetector/InDetConfig/python/ITkTrackingSiPatternConfig.py +++ b/InnerDetector/InDetConfig/python/ITkTrackingSiPatternConfig.py @@ -290,7 +290,7 @@ def ITkAmbiTrackSelectionToolCfg(flags, name="ITkAmbiTrackSelectionTool", **kwar kwargs.setdefault("minSiHitsToAllowSplitting" , 9) kwargs.setdefault("minUniqueSCTHits" , 4) kwargs.setdefault("minTrackChi2ForSharedHits" , 3) - kwargs.setdefault("minPtSplit" , flags.ITk.Tracking.pixelClusterSplitMinPt) #Only allow split clusters on track withe pt greater than this MeV + kwargs.setdefault("minPtSplit" , 1000) #Only allow split clusters on track withe pt greater than this MeV kwargs.setdefault("maxSharedModulesInROI" , 3) #Maximum number of shared modules for tracks in ROI kwargs.setdefault("minNotSharedInROI" , 2) #Minimum number of unique modules for tracks in ROI kwargs.setdefault("minSiHitsToAllowSplittingInROI" , 8) #Minimum number of Si hits to allow splittings for tracks in ROI @@ -336,8 +336,6 @@ def ITkDenseEnvironmentsAmbiguityScoreProcessorToolCfg(flags, name = "ITkAmbigui kwargs.setdefault("sharedProbCut", flags.ITk.Tracking.pixelClusterSplitProb1) kwargs.setdefault("sharedProbCut2", flags.ITk.Tracking.pixelClusterSplitProb2) - if flags.ITk.Tracking.Pass.extension == "": - kwargs.setdefault("SplitClusterMap_old", "") kwargs.setdefault("SplitClusterMap_new", 'SplitClusterAmbiguityMap'+flags.ITk.Tracking.Pass.extension) kwargs.setdefault("ScoringTool", ITkAmbiScoringTool) diff --git a/InnerDetector/InDetConfig/python/InDetConfigFlags.py b/InnerDetector/InDetConfig/python/InDetConfigFlags.py index f4a004a4df60..a9d9437a44dc 100644 --- a/InnerDetector/InDetConfig/python/InDetConfigFlags.py +++ b/InnerDetector/InDetConfig/python/InDetConfigFlags.py @@ -12,29 +12,40 @@ def createInDetConfigFlags(): icf.addFlag("InDet.doDBMstandalone",False) icf.addFlag("InDet.doSplitReco", False) # Turn running of the truth seeded pseudo tracking only for pileup on and off. Only makes sense to run on RDO file where SplitDigi was used! icf.addFlag("InDet.doTruth", lambda f: f.Input.isMC) # Turn running of truth matching on and off (by default on for MC off for data) - + icf.addFlag("InDet.selectSCTIntimeHits", True) # defines if the X1X mode is used for the offline or not + icf.addFlag("InDet.useDCS", True) + icf.addFlag("InDet.usePixelDCS", lambda prevFlags : (prevFlags.InDet.useDCS and prevFlags.Detector.EnablePixel)) + icf.addFlag("InDet.useSctDCS", lambda prevFlags : (prevFlags.InDet.useDCS and prevFlags.Detector.EnableSCT)) ### Tracking parameters + icf.addFlag("InDet.Tracking.materialInteractions", True) + icf.addFlag("InDet.Tracking.materialInteractionsType", 3) # Control which type of particle hypothesis to use for the material interactions 0=non-interacting,1=electron,2=muon,3=pion,4=kaon,5=proton. See ParticleHypothesis.h for full definition. icf.addFlag("InDet.Tracking.useHolesFromPattern", False) icf.addFlag("InDet.Tracking.useZvertexTool", False) # start with Zvertex finding icf.addFlag("InDet.Tracking.holeSearchInGX2Fit", True) icf.addFlag("InDet.Tracking.trackFitterType", "GlobalChi2Fitter") # control which fitter to be used: 'KalmanFitter', 'KalmanDNAFitter', 'DistributedKalmanFilter', 'GlobalChi2Fitter', 'GaussianSumFilter' icf.addFlag("InDet.Tracking.kalmanUpdator", "smatrix") # control which updator to load for KalmanFitter ("None"/"fast"/"smatrix"/"weight"/"amg") - icf.addFlag("InDet.Tracking.doRefit", False) # Turn running of refitting on and off icf.addFlag("InDet.Tracking.propagatorType", "RungeKutta") # control which propagator to use ('RungeKutta'/'STEP') + icf.addFlag("InDet.Tracking.doSharedHits", True) # control if the shared hits are recorded in TrackPatricles + icf.addFlag("InDet.Tracking.perigeeExpression", "BeamLine") # Express track parameters wrt. to : 'BeamLine','BeamSpot','Vertex' (first primary vertex) icf.addFlag("InDet.Tracking.cutLevel", 19) # Control cuts and settings for different lumi to limit CPU and disk space icf.addFlag("InDet.Tracking.doBremRecovery", True) # Turn on running of Brem Recover in tracking icf.addFlag("InDet.Tracking.doCaloSeededBrem", True) # Brem Recover in tracking restricted to Calo ROIs icf.addFlag("InDet.Tracking.doHadCaloSeededSSS", False) # Use Recover SSS to Calo ROIs icf.addFlag("InDet.Tracking.doCaloSeededAmbi", lambda prevFlags: prevFlags.Detector.EnableCalo) # Use Calo ROIs to seed specific cuts for the ambi icf.addFlag("InDet.Tracking.doBeamHalo", False) # Turn running of BeamHalo second pass on and off / Which second pass? + icf.addFlag("InDet.Tracking.doPixelClusterSplitting", True) # Try to split pixel clusters + icf.addFlag("InDet.Tracking.pixelClusterSplittingType", "NeuralNet") # choose splitter type: NeuralNet or AnalogClus + icf.addFlag("InDet.Tracking.pixelClusterSplitProb1", lambda prevFlags: 0.5 if prevFlags.GeoModel.Run == 'RUN1' else 0.55) # Cut value for splitting clusters into two parts + icf.addFlag("InDet.Tracking.pixelClusterSplitProb2", lambda prevFlags: 0.5 if prevFlags.GeoModel.Run == 'RUN1' else 0.45) # Cut value for splitting clusters into three parts icf.addFlag("InDet.Tracking.useBeamSpotInfoNN", True) # use beam spot position in pixel NN icf.addFlag("InDet.Tracking.nnCutLargeD0Threshold", -1.0) # Enable check for dead modules and FEs icf.addFlag("InDet.Tracking.trtExtensionType", 'xk') # which extension type ("xk"/"DAF") icf.addFlag("InDet.Tracking.redoTRT_LR", True) # use smart TRT LR/tube hit creator and redo ROTs icf.addFlag("InDet.Tracking.doTRTPhaseCalculation", False) # control to run TRT phase calculation icf.addFlag("InDet.Tracking.loadSimpleTRTSeededSPFinder", False) # control which TRT SP finder is used + icf.addFlag("InDet.Tracking.noTRTTiming", False) ### Tracking passes/configurations scheduled @@ -56,26 +67,8 @@ def createInDetConfigFlags(): icf.addFlag("InDet.Tracking.doTrackSegmentsDisappearing", True) icf.addFlag("InDet.Tracking.doBeamGas", False) # Turn running of BeamGas second pass on and off - icf.addFlag("InDet.refitROT", True) # control if refit is done from PRD or ROT - icf.addFlag("InDet.perigeeExpression", "BeamLine") # Express track parameters wrt. to : 'BeamLine','BeamSpot','Vertex' (first primary vertex) - # icf.addFlag("InDet.secondaryVertexCutSetup", "PileUp") # string to store the type of cuts to be used in PV reconstruction: 'StartUp', 'PileUp' - # icf.addFlag("InDet.conversionVertexCutSetup", "ConversionPileUp") # string to store the type of cuts to be used in conversion reconstruction: 'ConversionStartUp', 'ConversionPileUp' - icf.addFlag("InDet.doSharedHits", True) # control if the shared hits are recorded in TrackPatricles - icf.addFlag("InDet.materialInteractions", True) - icf.addFlag("InDet.materialInteractionsType", 3) # Control which type of particle hypothesis to use for the material interactions 0=non-interacting,1=electron,2=muon,3=pion,4=kaon,5=proton. See ParticleHypothesis.h for full definition. - icf.addFlag("InDet.removeTRTNoise", False) - icf.addFlag("InDet.noTRTTiming", False) - icf.addFlag("InDet.InDet25nsec", True ) # in most of the cases this is True - icf.addFlag("InDet.selectSCTIntimeHits", True) # defines if the X1X mode is used for the offline or not - icf.addFlag("InDet.useDCS", True) - icf.addFlag("InDet.truthMatchStrategy", "TruthMatchRatio") # defines how truth matching is done. possible values TruthMatchRatio (old style) or TruthMatchTanimoto (new style) - icf.addFlag("InDet.doFatras", False) # Switch for FATRAS running - icf.addFlag("InDet.doPixelClusterSplitting", True) # Try to split pixel clusters - icf.addFlag("InDet.pixelClusterSplittingType", "NeuralNet") # choose splitter type: NeuralNet or AnalogClus - icf.addFlag("InDet.pixelClusterSplitProb1", lambda prevFlags: 0.5 if prevFlags.GeoModel.Run == 'RUN1' else 0.55) # Cut value for splitting clusters into two parts - icf.addFlag("InDet.pixelClusterSplitProb2", lambda prevFlags: 0.5 if prevFlags.GeoModel.Run == 'RUN1' else 0.45) # Cut value for splitting clusters into three parts - icf.addFlag("InDet.pixelClusterSplitMinPt", 1000) # Min pt for tracks to try and split hits - icf.addFlag("InDet.pixelClusterBadClusterID", 3) # Select the mode to identify suspicous pixel clusteri + + icf.addFlag("InDet.useBroadClusterErrors", False) # Use broad cluster errors for Pixel/SCT #TODO: useBroadPixClusterErrors and ...SCT... were set to none such that they print a warning if they're accessed without being set. None will be interpreted as False (same behavior as old config) but defaults cannot be None icf.addFlag("InDet.useBroadPixClusterErrors", False) # Use broad cluster errors for Pixel @@ -99,8 +92,6 @@ def createInDetConfigFlags(): icf.addFlag("InDet.doHIP300", False) # Switch for running MinBias settings with a 300 MeV pT cut (for Heavy Ion Proton) icf.addFlag("InDet.checkDeadElementsOnTrack", True) # Enable check for dead modules and FEs icf.addFlag("InDet.doDigitalROTCreation",False) # use PixelClusterOnTrackToolDigital during ROT creation to save CPU - icf.addFlag("InDet.usePixelDCS", lambda prevFlags : (prevFlags.InDet.useDCS and prevFlags.Detector.EnablePixel)) - icf.addFlag("InDet.useSctDCS", lambda prevFlags : (prevFlags.InDet.useDCS and prevFlags.Detector.EnableSCT)) from InDetConfig.TrackingPassFlags import createTrackingPassFlags, createIBLTrackingPassFlags, createHighPileupTrackingPassFlags, \ createMinBiasTrackingPassFlags, createLargeD0TrackingPassFlags, createR3LargeD0TrackingPassFlags, createLowPtLargeD0TrackingPassFlags, \ diff --git a/InnerDetector/InDetConfig/python/SiliconPreProcessing.py b/InnerDetector/InDetConfig/python/SiliconPreProcessing.py index 70a19bff28af..1be93631ef70 100644 --- a/InnerDetector/InDetConfig/python/SiliconPreProcessing.py +++ b/InnerDetector/InDetConfig/python/SiliconPreProcessing.py @@ -233,7 +233,7 @@ if __name__ == "__main__": from AthenaConfiguration.TestDefaults import defaultTestFiles ConfigFlags.Input.Files=defaultTestFiles.RDO - ConfigFlags.InDet.doPixelClusterSplitting = True + ConfigFlags.InDet.Tracking.doPixelClusterSplitting = True numThreads=1 ConfigFlags.Concurrency.NumThreads=numThreads diff --git a/InnerDetector/InDetConfig/python/TRTExtensionConfig.py b/InnerDetector/InDetConfig/python/TRTExtensionConfig.py index 232a17d95f07..76f8136d8370 100644 --- a/InnerDetector/InDetConfig/python/TRTExtensionConfig.py +++ b/InnerDetector/InDetConfig/python/TRTExtensionConfig.py @@ -91,11 +91,6 @@ def InDetExtensionProcessorCfg(flags, SiTrackCollection=None, ExtendedTrackColle # InDetTrackSummaryTool = acc.getPrimaryAndMerge(TC.InDetTrackSummaryToolCfg(flags)) - if flags.InDet.materialInteractions: - kwargs.setdefault("matEffects", flags.InDet.materialInteractionsType) - else: - kwargs.setdefault("matEffects", 0) - kwargs.setdefault("TrackName", SiTrackCollection) kwargs.setdefault("ExtensionMap", OutputExtendedTracks) kwargs.setdefault("NewTrackName", ForwardTrackCollection) @@ -106,7 +101,8 @@ def InDetExtensionProcessorCfg(flags, SiTrackCollection=None, ExtendedTrackColle kwargs.setdefault("tryBremFit", flags.InDet.Tracking.doBremRecovery) kwargs.setdefault("caloSeededBrem", flags.InDet.Tracking.doCaloSeededBrem and flags.Detector.EnableCalo) kwargs.setdefault("pTminBrem", flags.InDet.Tracking.Pass.minPTBrem) - kwargs.setdefault("RefitPrds", not (flags.InDet.refitROT or (flags.InDet.Tracking.trtExtensionType == 'DAF'))) + kwargs.setdefault("RefitPrds", False) + kwargs.setdefault("matEffects", flags.InDet.Tracking.materialInteractionsType if flags.InDet.Tracking.materialInteractions else 0) if doPhase: kwargs.setdefault("Cosmics", True) diff --git a/InnerDetector/InDetConfig/python/TRTPreProcessing.py b/InnerDetector/InDetConfig/python/TRTPreProcessing.py index d60288e5ae60..68bbcd6a5bdb 100644 --- a/InnerDetector/InDetConfig/python/TRTPreProcessing.py +++ b/InnerDetector/InDetConfig/python/TRTPreProcessing.py @@ -55,7 +55,7 @@ def InDetTRT_DriftFunctionToolCfg(flags, useTimeInfo, usePhase, name = "InDetTRT acc.addPublicTool(CalDbTool) # --- overwrite for uncalibrated DC production - if (not useTimeInfo) or flags.InDet.noTRTTiming: + if (not useTimeInfo) or flags.InDet.Tracking.noTRTTiming: kwargs.setdefault("DummyMode", True) kwargs.setdefault("UniversalError", 1.15) @@ -169,7 +169,7 @@ def TRT_DriftCircleToolCfg(flags, useTimeInfo, usePhase, prefix, name = "InDetTR kwargs.setdefault("useDriftTimeToTCorrection", True) - if flags.InDet.InDet25nsec and flags.Beam.Type == "collisions": + if flags.Beam.BunchSpacing<=25 and flags.Beam.Type == "collisions": kwargs.setdefault("ValidityGateSuppression", True) kwargs.setdefault("SimpleOutOfTimePileupSupression", False) diff --git a/InnerDetector/InDetConfig/python/TRTSegmentFindingConfig.py b/InnerDetector/InDetConfig/python/TRTSegmentFindingConfig.py index 0c367d0db44f..195b61f5a4a4 100644 --- a/InnerDetector/InDetConfig/python/TRTSegmentFindingConfig.py +++ b/InnerDetector/InDetConfig/python/TRTSegmentFindingConfig.py @@ -50,7 +50,7 @@ def TRT_TrackSegmentsMaker_ATLxkCfg(flags, name = 'InDetTRT_SeedsMaker', extensi kwargs.setdefault("PropagatorTool", InDetPatternPropagator) kwargs.setdefault("TrackExtensionTool", InDetTRTExtensionTool) kwargs.setdefault("PRDtoTrackMap", prefix+'PRDtoTrackMap'+suffix if usePrdAssociationTool else '') - kwargs.setdefault("RemoveNoiseDriftCircles", flags.InDet.removeTRTNoise) + kwargs.setdefault("RemoveNoiseDriftCircles", False) kwargs.setdefault("MinNumberDriftCircles", MinNumberDCs) kwargs.setdefault("NumberMomentumChannel", flags.InDet.Tracking.Pass.TRTSegFinderPtBins) kwargs.setdefault("pTmin", pTmin) diff --git a/InnerDetector/InDetConfig/python/TrackRecoConfig.py b/InnerDetector/InDetConfig/python/TrackRecoConfig.py index 897b2005d17e..4f3f00b17b6a 100644 --- a/InnerDetector/InDetConfig/python/TrackRecoConfig.py +++ b/InnerDetector/InDetConfig/python/TrackRecoConfig.py @@ -52,7 +52,7 @@ def SCTClusterizationCfg(flags, name="InDetSCT_Clusterization", **kwargs) : globalPosAlg = InDetClusterMakerTool, conditionsTool = InDetSCT_ConditionsSummaryToolWithoutFlagged) if flags.InDet.selectSCTIntimeHits : - if flags.InDet.InDet25nsec : + if flags.Beam.BunchSpacing<=25 and flags.Beam.Type == "collisions": InDetSCT_ClusteringTool.timeBins = "01X" else: InDetSCT_ClusteringTool.timeBins = "X1X" @@ -152,13 +152,15 @@ def TrackParticleCreatorToolCfg(flags, name="InDetxAODParticleCreatorTool", **kw from InDetConfig.TrackingCommonConfig import InDetTrackSummaryToolSharedHitsCfg TrackSummaryTool = result.getPrimaryAndMerge(InDetTrackSummaryToolSharedHitsCfg(flags)) kwargs["TrackSummaryTool"] = TrackSummaryTool - p_expr = flags.InDet.perigeeExpression - kwargs.setdefault("BadClusterID", flags.InDet.pixelClusterBadClusterID) + kwargs.setdefault("BadClusterID", 3) # Select the mode to identify suspicous pixel cluster kwargs.setdefault("KeepParameters", True) kwargs.setdefault("KeepFirstParameters", False) - kwargs.setdefault( - "PerigeeExpression", - p_expr if p_expr != "Vertex" else "BeamLine") + # need to treat Vertex specifically because at the time of + # the track particle creation the primary vertex does not yet exist. + # The problem is solved by first creating track particles wrt. the beam line + # and correcting the parameters after the vertex finding. + kwargs.setdefault("PerigeeExpression", "BeamLine" if flags.InDet.Tracking.perigeeExpression=="Vertex" + else flags.InDet.Tracking.perigeeExpression) result.addPublicTool(CompFactory.Trk.TrackParticleCreatorTool(name, **kwargs), primary = True) return result @@ -229,6 +231,27 @@ def TrackParticleCnvAlgCfg(flags, name="TrackParticleCnvAlg", TrackContainerName result.addEventAlgo(CompFactory.xAODMaker.TrackParticleCnvAlg(name, **kwargs)) return result +# Configuration not supported, to be recommissioned if needed +def ReFitTrackAlgCfg(flags, name="InDetRefitTrack", InputTrackCollection="CombinedInDetTracks", OutputTrackCollection="RefittedTracks", **kwargs): + result = ComponentAccumulator() + + from InDetConfig.TrackingCommonConfig import InDetTrackFitterCfg, InDetTrackFitterTRTCfg, InDetTrackSummaryToolSharedHitsCfg, InDetPRDtoTrackMapToolGangedPixelsCfg + InDetTrackFitter = result.popToolsAndMerge(InDetTrackFitterCfg(flags)) + InDetTrackFitterTRT = result.popToolsAndMerge(InDetTrackFitterTRTCfg(flags)) + TrackSummaryTool = result.getPrimaryAndMerge(InDetTrackSummaryToolSharedHitsCfg(flags)) + InDetPRDtoTrackMapToolGangedPixels = result.popToolsAndMerge(InDetPRDtoTrackMapToolGangedPixelsCfg(flags)) + kwargs.setdefault("FitterTool", InDetTrackFitter) + kwargs.setdefault("FitterToolTRT", InDetTrackFitterTRT) + kwargs.setdefault("SummaryTool", TrackSummaryTool) + kwargs.setdefault("AssociationTool", InDetPRDtoTrackMapToolGangedPixels) + kwargs.setdefault("TrackName", InputTrackCollection) + kwargs.setdefault("NewTrackName", OutputTrackCollection) + kwargs.setdefault("useParticleHypothesisFromTrack", True) + kwargs.setdefault("matEffects", flags.InDet.materialInteractionsType if flags.InDet.materialInteractions else 0) + + result.addEventAlgo(CompFactory.Trk.ReFitTrack(name, **kwargs)) + return result + def InDetTrackRecoCfg(flags): if flags.Detector.GeometryITk: from InDetConfig.ITkTrackRecoConfig import ITkTrackRecoCfg @@ -528,9 +551,10 @@ def InDetTrackRecoCfg(flags): from InDetConfig.TrackTruthConfig import InDetTrackTruthCfg result.merge(InDetTrackTruthCfg(flags)) - # TODO add followup algs result.merge(TrackParticleCnvAlgCfg(flags)) + # TODO add followup algs + if flags.InDet.PriVertex.doVertexFinding: from InDetConfig.VertexFindingConfig import primaryVertexFindingCfg result.merge(primaryVertexFindingCfg(flags)) diff --git a/InnerDetector/InDetConfig/python/TrackTruthConfig.py b/InnerDetector/InDetConfig/python/TrackTruthConfig.py index 521781fa7b47..3f117522bb92 100644 --- a/InnerDetector/InDetConfig/python/TrackTruthConfig.py +++ b/InnerDetector/InDetConfig/python/TrackTruthConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory # ------------------------------------------------------------------------- @@ -30,16 +30,11 @@ def InDetDetailedTrackTruthMakerCfg(flags, Tracks, DetailedTruth, name='Maker',* 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) + InDetTruthMatchSimilarityTool = CompFactory.Trk.TruthMatchRatio(name = name, **kwargs) acc.setPrivateTools(InDetTruthMatchSimilarityTool) return acc @@ -83,8 +78,8 @@ if __name__ == "__main__": ConfigFlags.Detector.GeometrySCT = True ConfigFlags.Detector.GeometryTRT = True - ConfigFlags.InDet.doPixelClusterSplitting = True - ConfigFlags.InDet.useHolesFromPattern = False + ConfigFlags.InDet.Tracking.doPixelClusterSplitting = True + ConfigFlags.InDet.Tracking.useHolesFromPattern = False from AthenaConfiguration.TestDefaults import defaultTestFiles ConfigFlags.Input.Files = defaultTestFiles.RDO diff --git a/InnerDetector/InDetConfig/python/TrackingCommonConfig.py b/InnerDetector/InDetConfig/python/TrackingCommonConfig.py index 3383706fe338..8d92751fc633 100644 --- a/InnerDetector/InDetConfig/python/TrackingCommonConfig.py +++ b/InnerDetector/InDetConfig/python/TrackingCommonConfig.py @@ -118,16 +118,16 @@ def InDetPixelClusterOnTrackToolBaseCfg(flags, name="PixelClusterOnTrackTool", * from PixelConditionsAlgorithms.PixelConditionsConfig import PixelDistortionAlgCfg, PixelOfflineCalibCondAlgCfg acc.merge(PixelOfflineCalibCondAlgCfg(flags)) - if not (flags.InDet.doFatras or flags.InDet.doDBMstandalone): + if not flags.InDet.doDBMstandalone: acc.merge(PixelDistortionAlgCfg(flags)) if flags.Beam.Type == "cosmics" or flags.InDet.doDBMstandalone: kwargs.setdefault("ErrorStrategy", 0) kwargs.setdefault("PositionStrategy", 0) - kwargs.setdefault("DisableDistortions", flags.InDet.doFatras or flags.InDet.doDBMstandalone) - kwargs.setdefault("applyNNcorrection", flags.InDet.doPixelClusterSplitting and flags.InDet.pixelClusterSplittingType == "NeuralNet") - kwargs.setdefault("NNIBLcorrection", flags.InDet.doPixelClusterSplitting and flags.InDet.pixelClusterSplittingType == "NeuralNet") + kwargs.setdefault("DisableDistortions", flags.InDet.doDBMstandalone) + kwargs.setdefault("applyNNcorrection", flags.InDet.Tracking.doPixelClusterSplitting and flags.InDet.Tracking.pixelClusterSplittingType == "NeuralNet") + kwargs.setdefault("NNIBLcorrection", flags.InDet.Tracking.doPixelClusterSplitting and flags.InDet.Tracking.pixelClusterSplittingType == "NeuralNet") split_cluster_map_extension = flags.InDet.Tracking.Pass.extension if flags.InDet.Tracking.Pass.useTIDE_Ambi else "" kwargs.setdefault("SplitClusterAmbiguityMap", f"SplitClusterAmbiguityMap{split_cluster_map_extension}") kwargs.setdefault("RunningTIDE_Ambi", flags.InDet.doTIDE_Ambi) @@ -161,7 +161,7 @@ def InDetPixelClusterOnTrackToolDigitalCfg(flags, name="InDetPixelClusterOnTrack def InDetPixelClusterOnTrackToolNNSplittingCfg(flags, name="InDetPixelClusterOnTrackToolNNSplitting", **kwargs): acc = ComponentAccumulator() - if flags.InDet.doPixelClusterSplitting and flags.InDet.pixelClusterSplittingType == "NeuralNet": + if flags.InDet.Tracking.doPixelClusterSplitting and flags.InDet.Tracking.pixelClusterSplittingType == "NeuralNet": if "NnClusterizationFactory" not in kwargs: kwargs.setdefault("NnClusterizationFactory", acc.popToolsAndMerge(NnClusterizationFactoryCfg(flags))) @@ -455,10 +455,10 @@ def InDetSummaryHelperSharedHitsCfg(flags, name='InDetSummaryHelperSharedHits', InDetRecTestBLayerTool = None kwargs.setdefault("TestBLayerTool", InDetRecTestBLayerTool) - kwargs.setdefault("DoSharedHits", flags.InDet.doSharedHits) + kwargs.setdefault("DoSharedHits", flags.InDet.Tracking.doSharedHits) if flags.Detector.EnableTRT: - kwargs.setdefault("DoSharedHitsTRT", flags.InDet.doSharedHits) + kwargs.setdefault("DoSharedHitsTRT", flags.InDet.Tracking.doSharedHits) from InDetConfig.InDetRecToolConfig import InDetTrackSummaryHelperToolCfg InDetSummaryHelper = acc.popToolsAndMerge(InDetTrackSummaryHelperToolCfg(flags, name = name, **kwargs)) @@ -491,7 +491,7 @@ def InDetTrackSummaryToolSharedHitsCfg(flags, name='InDetTrackSummaryToolSharedH InDetPixelToTPIDTool = acc.popToolsAndMerge(InDetPixelToTPIDToolCfg(flags)) kwargs.setdefault( "PixelToTPIDTool", InDetPixelToTPIDTool) - kwargs.setdefault( "doSharedHits", flags.InDet.doSharedHits) + kwargs.setdefault( "doSharedHits", flags.InDet.Tracking.doSharedHits) InDetTrackSummaryTool = acc.getPrimaryAndMerge(InDetTrackSummaryToolCfg(flags, name, **kwargs)) acc.addPublicTool(InDetTrackSummaryTool, primary=True) @@ -716,7 +716,7 @@ def InDetGlobalChi2FitterCfg(flags, name='InDetGlobalChi2Fitter', **kwargs) : InDetRotCreator = acc.popToolsAndMerge(InDetRotCreatorCfg(flags, **pix_cluster_on_track_args)) kwargs.setdefault('RotCreatorTool', InDetRotCreator) - if 'BroadRotCreatorTool' not in kwargs and not flags.InDet.Tracking.doRefit: + if 'BroadRotCreatorTool' not in kwargs: InDetBroadRotCreator = acc.popToolsAndMerge(InDetBroadRotCreatorCfg(flags, **pix_cluster_on_track_args)) kwargs.setdefault('BroadRotCreatorTool', InDetBroadRotCreator) @@ -730,12 +730,6 @@ def InDetGlobalChi2FitterCfg(flags, name='InDetGlobalChi2Fitter', **kwargs) : if flags.InDet.useBroadClusterErrors and not flags.InDet.doDBMstandalone: kwargs.setdefault('RecalibrateSilicon', False) - if flags.InDet.Tracking.doRefit: - kwargs.setdefault('RecalibrateSilicon', False) - 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) @@ -746,7 +740,7 @@ def InDetGlobalChi2FitterCfg(flags, name='InDetGlobalChi2Fitter', **kwargs) : if flags.Beam.Type == 'cosmics' or flags.InDet.Tracking.doBeamHalo: kwargs.setdefault('Acceleration', False) - if flags.InDet.materialInteractions and not flags.BField.solenoidOn: + if flags.InDet.Tracking.materialInteractions and not flags.BField.solenoidOn: kwargs.setdefault('Momentum', 1000.*Units.MeV) InDetGlobalChi2FitterBase = acc.popToolsAndMerge(InDetGlobalChi2FitterBaseCfg(flags, name=name, **kwargs)) @@ -866,7 +860,7 @@ def InDetGlobalChi2FitterTRTCfg(flags, name='InDetGlobalChi2FitterTRT', **kwargs 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("Momentum", 1000.*Units.MeV if flags.InDet.Tracking.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) @@ -897,7 +891,7 @@ def InDetGlobalChi2FitterLowPtCfg(flags, name='InDetGlobalChi2FitterLowPt', **kw InDetRotCreator = acc.popToolsAndMerge(InDetRotCreatorCfg(flags, **pix_cluster_on_track_args)) kwargs.setdefault('RotCreatorTool', InDetRotCreator) - if 'BroadRotCreatorTool' not in kwargs and not flags.InDet.Tracking.doRefit: + if 'BroadRotCreatorTool' not in kwargs: InDetBroadRotCreator = acc.popToolsAndMerge(InDetBroadRotCreatorCfg(flags, **pix_cluster_on_track_args)) kwargs.setdefault('BroadRotCreatorTool', InDetBroadRotCreator) @@ -1038,9 +1032,9 @@ def InDetTRT_TrackExtensionTool_xkCfg(flags, name='InDetTRT_ExtensionTool', **kw InDetTRT_RoadMaker = acc.popToolsAndMerge(InDetTRT_RoadMakerCfg(flags)) kwargs.setdefault("RoadTool", InDetTRT_RoadMaker) - kwargs.setdefault("TRT_ClustersContainer", 'TRT_DriftCircles') # InDetKeys.TRT_DriftCircles() - kwargs.setdefault("TrtManagerLocation", 'TRT') # InDetKeys.TRT_Manager() - kwargs.setdefault("UseDriftRadius", not flags.InDet.noTRTTiming) + kwargs.setdefault("TRT_ClustersContainer", "TRT_DriftCircles") + kwargs.setdefault("TrtManagerLocation", "TRT") + kwargs.setdefault("UseDriftRadius", not flags.InDet.Tracking.noTRTTiming) kwargs.setdefault("MinNumberDriftCircles", flags.InDet.Tracking.Pass.minTRTonTrk) kwargs.setdefault("ScaleHitUncertainty", 2) kwargs.setdefault("RoadWidth", 20.) diff --git a/InnerDetector/InDetConfig/python/TrackingSiPatternConfig.py b/InnerDetector/InDetConfig/python/TrackingSiPatternConfig.py index 858133c51afa..b21d12637203 100644 --- a/InnerDetector/InDetConfig/python/TrackingSiPatternConfig.py +++ b/InnerDetector/InDetConfig/python/TrackingSiPatternConfig.py @@ -316,15 +316,6 @@ def InDetAmbiTrackSelectionToolCfg(flags, name="InDetAmbiTrackSelectionTool", ** # # --- load InnerDetector TrackSelectionTool # - if flags.GeoModel.Run == "Run1": - prob1 = flags.InDet.pixelClusterSplitProb1_run1 - prob2 = flags.InDet.pixelClusterSplitProb2_run1 - nhitsToAllowSplitting = 8 - else: - prob1 = flags.InDet.pixelClusterSplitProb1 - prob2 = flags.InDet.pixelClusterSplitProb2 - nhitsToAllowSplitting = 9 - if flags.InDet.doTIDE_Ambi and flags.InDet.Tracking.Pass.useTIDE_Ambi: AmbiTrackSelectionTool = CompFactory.InDet.InDetDenseEnvAmbiTrackSelectionTool else: @@ -343,15 +334,15 @@ def InDetAmbiTrackSelectionToolCfg(flags, name="InDetAmbiTrackSelectionTool", ** kwargs.setdefault("minTRTHits" , 0) # used for Si only tracking !!! kwargs.setdefault("UseParameterization" , False) kwargs.setdefault("Cosmics" , flags.Beam.Type == 'cosmics' and flags.InDet.Tracking.Pass.extension != "DBM") - kwargs.setdefault("doPixelSplitting" , flags.InDet.doPixelClusterSplitting and flags.InDet.Tracking.Pass.extension != "DBM") + kwargs.setdefault("doPixelSplitting" , flags.InDet.Tracking.doPixelClusterSplitting and flags.InDet.Tracking.Pass.extension != "DBM") if flags.InDet.doTIDE_Ambi and flags.InDet.Tracking.Pass.useTIDE_Ambi: - kwargs.setdefault("sharedProbCut" , prob1) - kwargs.setdefault("sharedProbCut2" , prob2) - kwargs.setdefault("minSiHitsToAllowSplitting" , nhitsToAllowSplitting) + kwargs.setdefault("sharedProbCut" , flags.InDet.Tracking.pixelClusterSplitProb1) + kwargs.setdefault("sharedProbCut2" , flags.InDet.Tracking.pixelClusterSplitProb2) + kwargs.setdefault("minSiHitsToAllowSplitting" , 8 if flags.GeoModel.Run == "Run1" else 9) kwargs.setdefault("minUniqueSCTHits" , 4) kwargs.setdefault("minTrackChi2ForSharedHits" , 3) - kwargs.setdefault("minPtSplit" , flags.InDet.pixelClusterSplitMinPt) #Only allow split clusters on track withe pt greater than this MeV + kwargs.setdefault("minPtSplit" , 1000) #Only allow split clusters on track withe pt greater than this MeV kwargs.setdefault("maxSharedModulesInROI" , 3) #Maximum number of shared modules for tracks in ROI kwargs.setdefault("minNotSharedInROI" , 2) #Minimum number of unique modules for tracks in ROI kwargs.setdefault("minSiHitsToAllowSplittingInROI" , 8) #Minimum number of Si hits to allow splittings for tracks in ROI @@ -401,26 +392,15 @@ def DenseEnvironmentsAmbiguityScoreProcessorToolCfg(flags, name="InDetAmbiguityS kwargs.setdefault("ScoringTool", InDetAmbiScoringTool) from InDetConfig.SiliconPreProcessing import NnPixelClusterSplitProbToolCfg - kwargs.setdefault("SplitProbTool", acc.popToolsAndMerge(NnPixelClusterSplitProbToolCfg(flags)) if flags.InDet.doPixelClusterSplitting else "") + kwargs.setdefault("SplitProbTool", acc.popToolsAndMerge(NnPixelClusterSplitProbToolCfg(flags)) if flags.InDet.Tracking.doPixelClusterSplitting else "") kwargs.setdefault("AssociationTool", acc.popToolsAndMerge(TC.InDetPRDtoTrackMapToolGangedPixelsCfg(flags))) kwargs.setdefault("AssociationToolNotGanged", acc.popToolsAndMerge(TC.PRDtoTrackMapToolCfg())) kwargs.setdefault("AssociationMapName", f"PRDToTrackMap{flags.InDet.Tracking.Pass.extension}") - if flags.GeoModel.Run == "Run1": - prob1 = flags.InDet.pixelClusterSplitProb1_run1 - prob2 = flags.InDet.pixelClusterSplitProb2_run1 - else: - prob1 = flags.InDet.pixelClusterSplitProb1 - prob2 = flags.InDet.pixelClusterSplitProb2 - if flags.InDet.doTIDE_Ambi and flags.InDet.Tracking.Pass.useTIDE_Ambi: - kwargs.setdefault("sharedProbCut", prob1) - kwargs.setdefault("sharedProbCut2", prob2) - if flags.InDet.Tracking.Pass.extension == "": - kwargs.setdefault("SplitClusterMap_old", "") - elif flags.InDet.Tracking.Pass.extension == "Disappearing": - kwargs.setdefault("SplitClusterMap_old", "SplitClusterAmbiguityMap") + kwargs.setdefault("sharedProbCut", flags.InDet.Tracking.pixelClusterSplitProb1) + kwargs.setdefault("sharedProbCut2", flags.InDet.Tracking.pixelClusterSplitProb2) kwargs.setdefault("SplitClusterMap_new", f"SplitClusterAmbiguityMap{flags.InDet.Tracking.Pass.extension}") kwargs.setdefault("InputClusterSplitProbabilityName", ClusterSplitProbContainer) @@ -544,7 +524,7 @@ def SimpleAmbiguityProcessorToolCfg(flags, name = "InDetAmbiguityProcessor", Clu kwargs.setdefault("caloSeededBrem", flags.InDet.Tracking.doCaloSeededBrem and flags.Detector.EnableCalo and flags.InDet.Tracking.Pass.extension == "") kwargs.setdefault("pTminBrem", flags.InDet.Tracking.Pass.minPTBrem) kwargs.setdefault("RefitPrds", True) - kwargs.setdefault("MatEffects", flags.InDet.materialInteractionsType if flags.InDet.materialInteractions else 0) + kwargs.setdefault("MatEffects", flags.InDet.Tracking.materialInteractionsType if flags.InDet.Tracking.materialInteractions else 0) if flags.InDet.Tracking.Pass.extension == "Pixel" or flags.InDet.Tracking.Pass.extension == "DBM": kwargs.setdefault("SuppressHoleSearch", True) -- GitLab