ATLAS Offline Software
Loading...
Searching...
No Matches
TrkConfigFlags.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.AthConfigFlags import AthConfigFlags
4from AthenaConfiguration.Enums import BeamType, LHCPeriod, FlagEnum, HIMode, ProductionStep
5import AthenaCommon.SystemOfUnits as Units
6from Campaigns.Utils import Campaign
7
8
9class PrimaryPassConfig(FlagEnum):
10 VtxLumi = 'VtxLumi'
11 VtxLumiHeavyIon = 'VtxLumiHeavyIon'
12 VtxBeamSpot = 'VtxBeamSpot'
13 Cosmics = 'Cosmics'
14 HeavyIon = 'HeavyIon'
15 HighPileup = 'HighPileup'
16 UPC = 'UPC'
17 HIP = 'HIP'
18 MinBias = 'MinBias'
19 Default = 'Main'
20
21
22class ITkPrimaryPassConfig(FlagEnum):
23 FTF = 'ITkFTF'
24 FastTracking = 'ITkFast'
25 HeavyIon = 'ITkHeavyIon'
26 Acts = 'ITkActs'
27 ActsLegacy = 'ITkActsLegacy'
28 ActsHeavyIon = 'ITkActsHeavyIon'
29 Default = 'ITkMain'
30
31class TrackFitterType(FlagEnum):
32 DistributedKalmanFilter = 'DistributedKalmanFilter'
33 GlobalChi2Fitter = 'GlobalChi2Fitter'
34 GaussianSumFilter = 'GaussianSumFilter'
35
36
37class KalmanUpdatorType(FlagEnum):
38 KalmanUpdator = 'KalmanUpdator'
39 KalmanUpdator_xk = 'KalmanUpdator_xk'
40 KalmanUpdatorSMatrix = 'KalmanUpdatorSMatrix'
41
42
44 NeuralNet = 'NeuralNet'
45 Truth = 'Truth'
46
47
48class TrackingComponent(FlagEnum):
49 AthenaChain = "AthenaChain" # full Athena Chain (default)
50 ActsChain = "ActsChain" # full Acts Chain
51 ActsLegacyChain = "ActsLegacyChain" # Acts Chain - legacy like
52 ActsHeavyIon = "ActsHeavyIon"
53 # Validation options
54 ActsValidateClusters = "ActsValidateClusters"
55 ActsValidateSpacePoints = "ActsValidateSpacePoints"
56 ActsValidateSeeds = "ActsValidateSeeds"
57 ActsValidateConversionSeeds = "ActsValidateConversionSeeds"
58 ActsValidateLargeRadiusSeeds = "ActsValidateLargeRadiusSeeds"
59 ActsValidateLargeRadiusStandalone = "ActsValidateLargeRadiusStandalone"
60 ActsValidateTracks = "ActsValidateTracks"
61 ActsValidateAmbiguityResolution = "ActsValidateAmbiguityResolution"
62
63 # GNN
64 GNNChain = "GNNChain"
65
66 # FPGA
67 FPGAChain = "FPGAChain"
68 ActsValidateF100 = "ActsValidateF100"
69 ActsValidateF150 = "ActsValidateF150"
70
72 icf = AthConfigFlags()
73
74 # Turn running of truth matching on and off (by default on for MC off for data)
75 icf.addFlag("Tracking.doTruth", lambda prevFlags: prevFlags.Input.isMC or
76 (prevFlags.Common.ProductionStep is not ProductionStep.MinbiasPreprocessing and prevFlags.Overlay.DataOverlay))
77
78 # control which fitter to be used
79 icf.addFlag("Tracking.trackFitterType",
80 TrackFitterType.GlobalChi2Fitter, type=TrackFitterType)
81 # control which measurement updator to load as InDetUpdator
82 icf.addFlag("Tracking.kalmanUpdator",
83 KalmanUpdatorType.KalmanUpdatorSMatrix, type=KalmanUpdatorType)
84
85 icf.addFlag("Tracking.materialInteractions", lambda prevFlags:
86 prevFlags.Beam.Type is not BeamType.SingleBeam)
87 # Control which type of particle hypothesis to use for the material interactions
88 # 0=non-interacting,1=electron,2=muon,3=pion,4=kaon,5=proton. See ParticleHypothesis.h for full definition.
89 icf.addFlag("Tracking.materialInteractionsType", lambda prevFlags:
90 2 if prevFlags.Beam.Type is BeamType.Cosmics else 3)
91
92 # Turn on running of Brem Recovery in tracking
93 icf.addFlag("Tracking.doBremRecovery", lambda prevFlags: (
94 prevFlags.Detector.EnableCalo and
95 not (prevFlags.Tracking.PrimaryPassConfig in
96 [PrimaryPassConfig.VtxLumi, PrimaryPassConfig.VtxLumiHeavyIon, PrimaryPassConfig.VtxBeamSpot] or
97 prevFlags.Tracking.doLowMu or
98 prevFlags.Beam.Type is not BeamType.Collisions or
99 not prevFlags.BField.solenoidOn)))
100 icf.addFlag("Tracking.doCaloSeededBrem", lambda prevFlags: (
101 prevFlags.Detector.EnableCalo and prevFlags.Tracking.doBremRecovery))
102 icf.addFlag("Tracking.phiWidthBrem", 0.3)
103 icf.addFlag("Tracking.etaWidthBrem", 0.2)
104 # Use Recover SSS to Calo ROIs
105 icf.addFlag("Tracking.doHadCaloSeededSSS", False)
106 # Use Calo ROIs to seed specific cuts for the ambi
107 icf.addFlag("Tracking.doCaloSeededAmbi", lambda prevFlags:
108 prevFlags.Detector.EnableCalo)
109 # control if the shared hits are recorded in TrackPatricles
110 icf.addFlag("Tracking.doSharedHits", True)
111 # Switch for running TIDE Ambi
112 icf.addFlag("Tracking.doTIDE_Ambi", lambda prevFlags:
113 not (prevFlags.Beam.Type is BeamType.Cosmics))
114 # Use simple position and error estimate for on-track pixel cluster
115 icf.addFlag("Tracking.doPixelDigitalClustering", False)
116 # Try to split pixel clusters
117 icf.addFlag("Tracking.doPixelClusterSplitting",
118 lambda prevFlags: not (prevFlags.Beam.Type is BeamType.Cosmics))
119 # choose splitter type: NeuralNet or AnalogClus
120 icf.addFlag("Tracking.pixelClusterSplittingType", lambda prevFlags:
121 PixelClusterSplittingType.NeuralNet
122 if prevFlags.GeoModel.Run <= LHCPeriod.Run3
123 else PixelClusterSplittingType.Truth,
124 type=PixelClusterSplittingType)
125 # Cut value for splitting clusters into two parts
126 icf.addFlag("Tracking.pixelClusterSplitProb1",
127 lambda prevFlags: (
128 0.5 if prevFlags.GeoModel.Run is LHCPeriod.Run1 else 0.55))
129 # Cut value for splitting clusters into three parts
130 icf.addFlag("Tracking.pixelClusterSplitProb2",
131 lambda prevFlags: (
132 0.5 if prevFlags.GeoModel.Run is LHCPeriod.Run1 else 0.45))
133 # Skip ambiguity solver in hadronic ROI
134 icf.addFlag("Tracking.doSkipAmbiROI", False)
135
136 # Guaranteed not-subtracted topo clusters even in heavy ions
137 icf.addFlag("Tracking.TopoClusters", "CaloTopoClusters")
138 icf.addFlag("Tracking.EgammaTopoClusters", "egammaTopoClusters")
139
140 # Express track parameters wrt. to : 'BeamLine','BeamSpot','Vertex' (first primary vertex)
141 icf.addFlag("Tracking.perigeeExpression", lambda prevFlags:
142 "Vertex" if (prevFlags.Tracking.PrimaryPassConfig in [
143 PrimaryPassConfig.HeavyIon, PrimaryPassConfig.VtxLumiHeavyIon] or
144 prevFlags.Tracking.ITkPrimaryPassConfig in [
145 ITkPrimaryPassConfig.HeavyIon, ITkPrimaryPassConfig.ActsHeavyIon]
146 )
147 else "BeamLine")
148
149 # to make eta overlap space points in endcap (aligned with search eta neighbour in strip endcaps)
150 icf.addFlag("Tracking.doEndcapEtaOverlapSpacePoint", lambda prevFlags: prevFlags.ITk.doEndcapEtaNeighbour)
151
152 # Tracking passes/configurations scheduled
153
154 def doLargeD0(flags):
155 if flags.GeoModel.Run <= LHCPeriod.Run3:
156 return not ((flags.Beam.Type in
157 [BeamType.SingleBeam, BeamType.Cosmics]) or
158 flags.Tracking.PrimaryPassConfig in [
159 PrimaryPassConfig.HeavyIon,
160 PrimaryPassConfig.UPC,
161 PrimaryPassConfig.HIP,
162 PrimaryPassConfig.VtxLumi,
163 PrimaryPassConfig.VtxLumiHeavyIon,
164 PrimaryPassConfig.VtxBeamSpot,
165 PrimaryPassConfig.HighPileup])
166 else: # LRT disabled by default for Run4 for now
167 return False
168
169 icf.addFlag("Tracking.doLargeD0", doLargeD0)
170 icf.addFlag("Tracking.storeSeparateLargeD0Container", True)
171
172 # Store separate track particles collection reconstructed in regards to the beam line
173 icf.addFlag("Tracking.storeBeamLineTrackParticles", lambda prevFlags: prevFlags.Overlay.DataOverlay)
174
175 # Special configuration for low-mu runs
176 icf.addFlag("Tracking.doLowMu", False)
177 # Turn running of doLowPt second pass on and off
178 icf.addFlag("Tracking.doLowPt",
179 lambda prevFlags: prevFlags.Tracking.doLowMu)
180
181 # Turn on to save the Track Seeds in a xAOD track collecting for development studies
182 icf.addFlag("Tracking.doStoreTrackSeeds", False)
183 # Save SiSP tracks (input to the ambiguity solver)
184 icf.addFlag("Tracking.doStoreSiSPSeededTracks", False)
185 # Turn writing of seed validation ntuple on and off
186 icf.addFlag("Tracking.writeSeedValNtuple", False)
187 # Save xAOD TrackMeasurementValidation + TrackStateValidation containers
188 icf.addFlag("Tracking.writeExtendedSi_PRDInfo", False)
189 icf.addFlag("Tracking.writeExtendedTRT_PRDInfo", False)
190 icf.addFlag("Tracking.PRDInfo.KeepOnlyOnTrackMeasurements", False)
191
192 # Only keep entries in xAOD TrackMeasurementValidation + TrackStateValidation containers for tracks passing user cut
193 # Indicate detector technology from which clusters should be thinned
194 icf.addFlag("Tracking.thinPixelClustersOnTrack", False)
195 icf.addFlag("Tracking.thinSCTClustersOnTrack", False)
196 icf.addFlag("Tracking.thinTRTClustersOnTrack", False)
197 icf.addFlag("Tracking.thinInDetClustersOnTrack",
198 lambda prevFlags: (
199 prevFlags.Tracking.thinPixelClustersOnTrack or
200 prevFlags.Tracking.thinSCTClustersOnTrack or
201 prevFlags.Tracking.thinTRTClustersOnTrack ))
202
203 # For cluster thinning (if enabled): list of containers and selection strings used in ThinInDetClustersAlg
204 icf.addFlag("Tracking.thinInDetClustersTrackContainers", ["InDetTrackParticles"])
205 icf.addFlag("Tracking.thinInDetClustersPixelMSOSContainers", ["PixelMSOSs"])
206 icf.addFlag("Tracking.thinInDetClustersSCTMSOSContainers", ["SCT_MSOSs"])
207 icf.addFlag("Tracking.thinInDetClustersTRTMSOSContainers", ["TRT_MSOSs"])
208 icf.addFlag("Tracking.thinInDetClustersSelectionStrings", ["InDetTrackParticles.pt > (1*GeV)"])
209
210 # Toggle track slimming
211 icf.addFlag("Tracking.doSlimming", lambda prevFlags:
212 not (prevFlags.Beam.Type in
213 [BeamType.SingleBeam, BeamType.Cosmics] or
214 prevFlags.Tracking.PrimaryPassConfig in [
215 PrimaryPassConfig.VtxLumi,
216 PrimaryPassConfig.VtxLumiHeavyIon,
217 PrimaryPassConfig.VtxBeamSpot,
218 PrimaryPassConfig.HighPileup]))
219
220
221
222 # The following flags are only used in InDet configurations for now
223 # No corresponding ITk config is available yet
224
225 icf.addFlag("Tracking.useNewParamTRT", lambda prevFlags:
226 prevFlags.Tracking.PrimaryPassConfig is not(
227 PrimaryPassConfig.HeavyIon))
228
229 # --- run back tracking and TRT only in RoI seed regions
230 icf.addFlag("Tracking.BackTracking.doRoISeeded", lambda prevFlags:
231 prevFlags.Detector.EnableCalo and not(
232 prevFlags.Tracking.doLowMu or
233 prevFlags.Tracking.PrimaryPassConfig is (
234 PrimaryPassConfig.HeavyIon) or
235 prevFlags.Beam.Type is BeamType.Cosmics or
236 prevFlags.Tracking.doMinBias))
237
238 # --- defaults for backtracking
239 def BackTrackingMinPt(flags):
240 if flags.Tracking.doMinBias:
241 return 0.4 * Units.GeV * flags.BField.configuredSolenoidFieldScale
242 elif (flags.Tracking.doLowMu or
243 flags.Tracking.PrimaryPassConfig in [
244 PrimaryPassConfig.HeavyIon, PrimaryPassConfig.VtxLumiHeavyIon] or
245 flags.Beam.Type is BeamType.Cosmics):
246 return 1.0 * Units.GeV * flags.BField.configuredSolenoidFieldScale
247 else:
248 return 3.0 * Units.GeV * flags.BField.configuredSolenoidFieldScale
249 icf.addFlag("Tracking.BackTracking.minPt", BackTrackingMinPt)
250 icf.addFlag("Tracking.BackTracking.TRTSegFinderPtBins", 50)
251 icf.addFlag("Tracking.BackTracking.maxTRTSharedFrac", 0.7)
252 icf.addFlag("Tracking.BackTracking.maxSecondaryImpact", 100.0 * Units.mm)
253 icf.addFlag("Tracking.BackTracking.minClusters", 4)
254 icf.addFlag("Tracking.BackTracking.minSiNotShared", 4)
255 # cut is now on number of shared modules
256 icf.addFlag("Tracking.BackTracking.maxShared", 1)
257 icf.addFlag("Tracking.BackTracking.minTRT", lambda prevFlags:
258 10 if (prevFlags.Tracking.doLowMu or
259 prevFlags.Tracking.PrimaryPassConfig is (
260 PrimaryPassConfig.HeavyIon))
261 else 15)
262 icf.addFlag("Tracking.BackTracking.minTRTPrecFrac", lambda prevFlags:
263 0. if (prevFlags.Tracking.doLowMu or
264 prevFlags.Tracking.PrimaryPassConfig is (
265 PrimaryPassConfig.HeavyIon))
266 else 0.3)
267
268 icf.addFlag("Tracking.BackTracking.maxHoles", lambda prevFlags:
269 2 if (prevFlags.Tracking.doLowMu or
270 prevFlags.Tracking.PrimaryPassConfig is (
271 PrimaryPassConfig.HeavyIon))
272 else 1)
273 icf.addFlag("Tracking.BackTracking.maxPixelHoles", lambda prevFlags:
274 2 if (prevFlags.Tracking.doLowMu or
275 prevFlags.Tracking.PrimaryPassConfig is (
276 PrimaryPassConfig.HeavyIon))
277 else 1)
278 icf.addFlag("Tracking.BackTracking.maxSCTHoles", lambda prevFlags:
279 2 if (prevFlags.Tracking.doLowMu or
280 prevFlags.Tracking.PrimaryPassConfig is (
281 PrimaryPassConfig.HeavyIon))
282 else 1)
283 icf.addFlag("Tracking.BackTracking.maxDoubleHoles", lambda prevFlags:
284 1 if (prevFlags.Tracking.doLowMu or
285 prevFlags.Tracking.PrimaryPassConfig is (
286 PrimaryPassConfig.HeavyIon))
287 else 0)
288 icf.addFlag("Tracking.BackTracking.nHolesMax", 2)
289 icf.addFlag("Tracking.BackTracking.nHolesGapMax", 2)
290
291 # extension finder in back tracking
292 icf.addFlag("Tracking.BackTracking.rejectShortExtensions", lambda prevFlags:
293 not(prevFlags.Beam.Type is BeamType.Cosmics or
294 prevFlags.Tracking.doLowMu or
295 prevFlags.Tracking.PrimaryPassConfig is (
296 PrimaryPassConfig.HeavyIon)))
297 # cut in Si Extensions before fit
298 icf.addFlag("Tracking.BackTracking.SiExtensionCuts", lambda prevFlags:
299 not(prevFlags.Tracking.doLowMu or
300 prevFlags.Tracking.PrimaryPassConfig is (
301 PrimaryPassConfig.HeavyIon)))
302 icf.addFlag("Tracking.BackTracking.minRoIClusterEt", lambda prevFlags:
303 0. if (prevFlags.Tracking.doLowMu or
304 prevFlags.Tracking.PrimaryPassConfig in [
305 PrimaryPassConfig.HeavyIon, PrimaryPassConfig.VtxLumiHeavyIon] or
306 prevFlags.Beam.Type is BeamType.Cosmics or
307 prevFlags.Tracking.doMinBias)
308 else 6.*Units.GeV * prevFlags.BField.configuredSolenoidFieldScale)
309
310 # TRT standalone configuration
311 def TRTStandaloneMinPt(flags):
312 if flags.Tracking.doMinBias:
313 return 0.4 * Units.GeV * flags.BField.configuredSolenoidFieldScale
314 elif flags.Tracking.doLowMu or (
315 flags.Tracking.PrimaryPassConfig is PrimaryPassConfig.HeavyIon):
316 return 1.0 * Units.GeV * flags.BField.configuredSolenoidFieldScale
317 else:
318 return 2.0 * Units.GeV * flags.BField.configuredSolenoidFieldScale
319 icf.addFlag("Tracking.TRTStandalone.minPt", TRTStandaloneMinPt)
320 icf.addFlag("Tracking.TRTStandalone.minTRTPrecFrac", 0.15)
321 icf.addFlag("Tracking.TRTStandalone.minTRT", 15)
322
323 # Disabled for data-taking up to 2024 included and MC campaigns up to MC23e included
324 icf.addFlag("Tracking.TRTStandalone.startAtOriginalPerigee",
325 lambda prevFlags: (
326 (not prevFlags.Input.isMC and prevFlags.Input.DataYear >= 2025) or
327 (prevFlags.Input.isMC and prevFlags.Input.MCCampaign >= Campaign.MC23g)))
328
329 # Turn on InDetRecStatistics
330 icf.addFlag("Tracking.doStats", False)
331 # Switch for track observer tool
332 icf.addFlag("Tracking.doTIDE_AmbiTrackMonitoring", False)
333 # use beam spot position in pixel NN
334 icf.addFlag("Tracking.useBeamSpotInfoNN", True)
335 # Threshold for NN cut in large D0 tracking for tracks in ambi
336 icf.addFlag("Tracking.nnCutLargeD0Threshold", -1.0)
337 # Use broad cluster errors for Pixel
338 icf.addFlag("Tracking.useBroadPixClusterErrors", False)
339 # Use broad cluster errors for SCT
340 icf.addFlag("Tracking.useBroadSCTClusterErrors", False)
341
342 # Tracking passes/configurations scheduled
343
344 # Turn running of track segment creation in pixel on and off
345 icf.addFlag("Tracking.doTrackSegmentsPixel",
346 lambda prevFlags: (
347 prevFlags.Detector.EnablePixel and (
348 prevFlags.Tracking.doMinBias or
349 prevFlags.Tracking.doLowMu or
350 prevFlags.Beam.Type is BeamType.Cosmics)))
351 # Turn running of track segment creation in SCT on and off
352 icf.addFlag("Tracking.doTrackSegmentsSCT",
353 lambda prevFlags: (
354 prevFlags.Detector.EnableSCT and (
355 prevFlags.Tracking.doLowMu or
356 prevFlags.Beam.Type is BeamType.Cosmics)))
357 # Turn running of track segment creation in TRT on and off
358 icf.addFlag("Tracking.doTrackSegmentsTRT",
359 lambda prevFlags: (
360 prevFlags.Detector.EnableTRT and
361 (prevFlags.Tracking.doLowMu or
362 prevFlags.Beam.Type is BeamType.Cosmics)))
363 # turn on / off TRT extensions
364 icf.addFlag("Tracking.doTRTExtension",
365 lambda prevFlags: prevFlags.Detector.EnableTRT)
366 # control to run TRT Segment finding (do it always after new tracking!)
367 icf.addFlag("Tracking.doTRTSegments",
368 lambda prevFlags: (prevFlags.Detector.EnableTRT and
369 (prevFlags.Tracking.doBackTracking or
370 prevFlags.Tracking.doTRTStandalone)))
371 # Turn running of backtracking on and off
372 icf.addFlag("Tracking.doBackTracking", lambda prevFlags: (
373 prevFlags.Detector.EnableTRT and
374 not(prevFlags.Beam.Type in [BeamType.SingleBeam, BeamType.Cosmics] or
375 prevFlags.Tracking.PrimaryPassConfig in [
376 PrimaryPassConfig.HeavyIon,
377 PrimaryPassConfig.VtxLumi,
378 PrimaryPassConfig.VtxLumiHeavyIon,
379 PrimaryPassConfig.VtxBeamSpot,
380 PrimaryPassConfig.HighPileup])))
381 # control TRT Standalone
382 icf.addFlag("Tracking.doTRTStandalone", lambda prevFlags: (
383 prevFlags.Detector.EnableTRT and
384 not(prevFlags.Tracking.PrimaryPassConfig in [
385 PrimaryPassConfig.HeavyIon,
386 PrimaryPassConfig.VtxLumi,
387 PrimaryPassConfig.VtxLumiHeavyIon,
388 PrimaryPassConfig.VtxBeamSpot,
389 PrimaryPassConfig.HighPileup])))
390
391 # Turn running of doForwardTracks pass on and off
392 icf.addFlag("Tracking.doForwardTracks", lambda prevFlags: (
393 prevFlags.Detector.EnablePixel and
394 not(prevFlags.Beam.Type in [BeamType.SingleBeam, BeamType.Cosmics] or
395 prevFlags.Tracking.PrimaryPassConfig in [
396 PrimaryPassConfig.HeavyIon,
397 PrimaryPassConfig.VtxLumi,
398 PrimaryPassConfig.VtxLumiHeavyIon,
399 PrimaryPassConfig.VtxBeamSpot,
400 PrimaryPassConfig.HighPileup] or
401 prevFlags.Tracking.doMinBias or
402 prevFlags.Tracking.doLowMu)))
403
404 def doTrackSegmentsDisappearing(flags):
405 if flags.GeoModel.Run <= LHCPeriod.Run3:
406 return not((flags.Tracking.PrimaryPassConfig is
407 PrimaryPassConfig.HeavyIon) or
408 flags.Beam.Type is BeamType.Cosmics)
409 else: # Disappearing tracks disabled for Run4
410 return False
411 icf.addFlag("Tracking.doTrackSegmentsDisappearing", doTrackSegmentsDisappearing)
412
413 # Turn running of doVeryLowPt third pass on and off
414 icf.addFlag("Tracking.doVeryLowPt", False)
415 # Turn running of doLargeD0 second pass down to 100 MeV on and off
416 icf.addFlag("Tracking.doLowPtLargeD0", False)
417 # Switch for running LowPtRoI settings
418 icf.addFlag("Tracking.doLowPtRoI", False)
419 # Switch for running UPC settings
420 icf.addFlag("Tracking.doUPC", lambda prevFlags: prevFlags.Reco.HIMode is HIMode.UPC)
421 # Switch for running HIP settings
422 icf.addFlag("Tracking.doHIP", lambda prevFlags: prevFlags.Reco.HIMode is HIMode.HIP)
423 # Switch for running MinBias settings (UPC or HIP turn this ON)
424 icf.addFlag("Tracking.doMinBias", lambda prevFlags:
425 prevFlags.Tracking.doUPC or prevFlags.Tracking.doHIP)
426 # Turn running of BeamGas second pass on and off
427 icf.addFlag("Tracking.doBeamGas",
428 lambda prevFlags: prevFlags.Beam.Type is BeamType.SingleBeam)
429 # Special reconstruction for BLS physics
430 icf.addFlag("Tracking.doBLS", False)
431
432 # Special pass using truth information for pattern recognition, runs in parallel to/instead of the first pass
433 icf.addFlag("Tracking.doPseudoTracking", False)
434 # Special pass using truth information for pattern recognition, removes assumed in-efficencies applied to PseudoTracking
435 icf.addFlag("Tracking.doIdealPseudoTracking", False)
436
437
438
439 # The following flags are only used in ITk configurations
440
441 # Turn running of ITk FastTracking on and off
442 icf.addFlag("Tracking.doITkFastTracking", False)
443
444 # Turn running of Conversion second tracking pass on and off
445 icf.addFlag("Tracking.doITkConversion",
446 lambda prevFlags: not prevFlags.Tracking.doITkFastTracking)
447
448 # Allows TrigFastTrackFinder to be run as an offline algorithm by replacing
449 # SiSPSeededTrackFinder
450 icf.addFlag("Tracking.useITkFTF", False)
451
452 # GNN for ITk flags
453 from InDetGNNTracking.InDetGNNTrackingConfigFlags import createGNNTrackingConfigFlags
454 icf.join(createGNNTrackingConfigFlags())
455
456 # enable reco steps
457 icf.addFlag("Tracking.recoChain", [TrackingComponent.AthenaChain])
458
459
460
461 # Tracking pass flags
462
463 # InDet
464
465 from TrkConfig.TrackingPassFlags import (
466 createTrackingPassFlags, createHighPileupTrackingPassFlags,
467 createMinBiasTrackingPassFlags, createUPCTrackingPassFlags,
468 createHIPTrackingPassFlags, createR3LargeD0TrackingPassFlags,
469 createLowPtLargeD0TrackingPassFlags,
470 createLowPtTrackingPassFlags, createVeryLowPtTrackingPassFlags,
471 createLowPtRoITrackingPassFlags, createForwardTracksTrackingPassFlags,
472 createBeamGasTrackingPassFlags, createVtxLumiTrackingPassFlags, createVtxLumiHeavyIonTrackingPassFlags,
473 createVtxBeamSpotTrackingPassFlags, createCosmicsTrackingPassFlags,
474 createHeavyIonTrackingPassFlags, createPixelTrackingPassFlags,
475 createDisappearingTrackingPassFlags, createSCTTrackingPassFlags,
476 createTRTTrackingPassFlags, createTRTStandaloneTrackingPassFlags)
477
478 def primaryPass(flags):
479 if flags.Beam.Type is BeamType.Cosmics:
480 return PrimaryPassConfig.Cosmics
481 elif flags.Reco.EnableHI:
482 if flags.Tracking.doUPC: #For UPC
483 return PrimaryPassConfig.UPC
484 elif flags.Tracking.doHIP: #For HIP
485 return PrimaryPassConfig.HIP
486 else: #For HI (default)
487 return PrimaryPassConfig.HeavyIon
488 elif flags.Tracking.doMinBias:
489 return PrimaryPassConfig.MinBias
490 else:
491 return PrimaryPassConfig.Default
492
493 icf.addFlag("Tracking.PrimaryPassConfig", lambda prevFlags:
494 primaryPass(prevFlags), type=PrimaryPassConfig)
495
496 # Set up for first tracking pass, updated for second passes
497 icf.addFlagsCategory("Tracking.MainPass",
498 createTrackingPassFlags, prefix=True)
499 icf.addFlagsCategory("Tracking.HighPileupPass",
500 createHighPileupTrackingPassFlags, prefix=True)
501 icf.addFlagsCategory("Tracking.UPCPass",
502 createUPCTrackingPassFlags, prefix=True)
503 icf.addFlagsCategory("Tracking.HIPPass",
504 createHIPTrackingPassFlags, prefix=True)
505 icf.addFlagsCategory("Tracking.MinBiasPass",
506 createMinBiasTrackingPassFlags, prefix=True)
507 icf.addFlagsCategory("Tracking.R3LargeD0Pass",
508 createR3LargeD0TrackingPassFlags, prefix=True)
509 icf.addFlagsCategory("Tracking.LowPtLargeD0Pass",
510 createLowPtLargeD0TrackingPassFlags, prefix=True)
511 icf.addFlagsCategory("Tracking.LowPtPass",
512 createLowPtTrackingPassFlags, prefix=True)
513 icf.addFlagsCategory("Tracking.VeryLowPtPass",
514 createVeryLowPtTrackingPassFlags, prefix=True)
515 icf.addFlagsCategory("Tracking.LowPtRoIPass",
516 createLowPtRoITrackingPassFlags, prefix=True)
517 icf.addFlagsCategory("Tracking.ForwardPass",
518 createForwardTracksTrackingPassFlags, prefix=True)
519 icf.addFlagsCategory("Tracking.BeamGasPass",
520 createBeamGasTrackingPassFlags, prefix=True)
521 icf.addFlagsCategory("Tracking.VtxLumiPass",
522 createVtxLumiTrackingPassFlags, prefix=True)
523 icf.addFlagsCategory("Tracking.VtxLumiHeavyIonPass",
524 createVtxLumiHeavyIonTrackingPassFlags, prefix=True)
525 icf.addFlagsCategory("Tracking.VtxBeamSpotPass",
526 createVtxBeamSpotTrackingPassFlags, prefix=True)
527 icf.addFlagsCategory("Tracking.CosmicsPass",
528 createCosmicsTrackingPassFlags, prefix=True)
529 icf.addFlagsCategory("Tracking.HeavyIonPass",
530 createHeavyIonTrackingPassFlags, prefix=True)
531 icf.addFlagsCategory("Tracking.PixelPass",
532 createPixelTrackingPassFlags, prefix=True)
533 icf.addFlagsCategory("Tracking.DisappearingPass",
534 createDisappearingTrackingPassFlags, prefix=True)
535 icf.addFlagsCategory("Tracking.SCTPass",
536 createSCTTrackingPassFlags, prefix=True)
537 icf.addFlagsCategory("Tracking.TRTPass",
538 createTRTTrackingPassFlags, prefix=True)
539 icf.addFlagsCategory("Tracking.TRTStandalonePass",
540 createTRTStandaloneTrackingPassFlags, prefix=True)
541
542 # ITk
543
544 from TrkConfig.TrackingPassFlags import (
545 createITkTrackingPassFlags, createITkLargeD0TrackingPassFlags,
546 createITkConversionTrackingPassFlags,
547 createITkFastTrackingPassFlags, createITkLargeD0FastTrackingPassFlags,
548 createITkFTFPassFlags, createITkFTFLargeD0PassFlags, createITkLowPtTrackingPassFlags,
549 createITkHeavyIonTrackingPassFlags)
550
551 def itkPrimaryPass(flags):
552 if flags.Tracking.useITkFTF:
553 return ITkPrimaryPassConfig.FTF
554 elif TrackingComponent.ActsChain in flags.Tracking.recoChain:
555 return ITkPrimaryPassConfig.Acts
556 elif TrackingComponent.ActsLegacyChain in flags.Tracking.recoChain:
557 return ITkPrimaryPassConfig.ActsLegacy
558 elif TrackingComponent.ActsHeavyIon in flags.Tracking.recoChain:
559 return ITkPrimaryPassConfig.ActsHeavyIon
560 elif flags.Tracking.doITkFastTracking:
561 return ITkPrimaryPassConfig.FastTracking
562 elif flags.Reco.EnableHI:
563 return ITkPrimaryPassConfig.HeavyIon
564 else:
565 return ITkPrimaryPassConfig.Default
566
567 icf.addFlag("Tracking.ITkPrimaryPassConfig", lambda prevFlags:
568 itkPrimaryPass(prevFlags), type=ITkPrimaryPassConfig)
569
570 icf.addFlagsCategory ("Tracking.ITkMainPass",
571 createITkTrackingPassFlags, prefix=True)
572 icf.addFlagsCategory ("Tracking.ITkLargeD0Pass",
573 createITkLargeD0TrackingPassFlags, prefix=True)
574 icf.addFlagsCategory ("Tracking.ITkConversionPass",
575 createITkConversionTrackingPassFlags, prefix=True)
576 icf.addFlagsCategory ("Tracking.ITkLowPtPass",
577 createITkLowPtTrackingPassFlags, prefix=True)
578 icf.addFlagsCategory ("Tracking.ITkFastPass",
579 createITkFastTrackingPassFlags, prefix=True)
580 icf.addFlagsCategory ("Tracking.ITkLargeD0FastPass",
581 createITkLargeD0FastTrackingPassFlags, prefix=True)
582 icf.addFlagsCategory ("Tracking.ITkFTFPass",
583 createITkFTFPassFlags, prefix=True)
584 icf.addFlagsCategory ("Tracking.ITkFTFLargeD0Pass",
585 createITkFTFLargeD0PassFlags, prefix=True)
586 icf.addFlagsCategory ("Tracking.ITkHeavyIonPass",
587 createITkHeavyIonTrackingPassFlags, prefix=True)
588
589 # Acts
590 from ActsConfig.ActsTrackingPassFlags import (
591 createActsTrackingPassFlags,
592 createActsLegacyTrackingPassFlags,
593 createActsLargeRadiusTrackingPassFlags,
594 createActsConversionTrackingPassFlags,
595 createActsLowPtTrackingPassFlags,
596 createActsValidateClustersTrackingPassFlags,
597 createActsValidateSpacePointsTrackingPassFlags,
598 createActsValidateSeedsTrackingPassFlags,
599 createActsValidateConversionSeedsTrackingPassFlags,
600 createActsValidateLargeRadiusSeedsTrackingPassFlags,
601 createActsValidateLargeRadiusStandaloneTrackingPassFlags,
602 createActsValidateTracksTrackingPassFlags,
603 createActsValidateAmbiguityResolutionTrackingPassFlags,
604 createActsHeavyIonTrackingPassFlags,
605 createEFValidateF100TrackingPassFlags,
606 createEFValidateF150TrackingPassFlags
607 )
608
609 icf.addFlagsCategory ("Tracking.ITkActsPass",
610 createActsTrackingPassFlags, prefix=True)
611 icf.addFlagsCategory ("Tracking.ITkActsLegacyPass",
612 createActsLegacyTrackingPassFlags, prefix=True)
613 icf.addFlagsCategory ("Tracking.ITkActsLargeRadiusPass",
614 createActsLargeRadiusTrackingPassFlags, prefix=True)
615 icf.addFlagsCategory ('Tracking.ITkActsConversionPass',
616 createActsConversionTrackingPassFlags, prefix=True)
617 icf.addFlagsCategory ('Tracking.ITkActsLowPtPass',
618 createActsLowPtTrackingPassFlags, prefix=True)
619 icf.addFlagsCategory ("Tracking.ITkActsValidateClustersPass",
620 createActsValidateClustersTrackingPassFlags, prefix=True)
621 icf.addFlagsCategory ("Tracking.ITkActsValidateSpacePointsPass",
622 createActsValidateSpacePointsTrackingPassFlags, prefix=True)
623 icf.addFlagsCategory ("Tracking.ITkActsValidateSeedsPass",
624 createActsValidateSeedsTrackingPassFlags, prefix=True)
625 icf.addFlagsCategory ("Tracking.ITkActsValidateConversionSeedsPass",
626 createActsValidateConversionSeedsTrackingPassFlags, prefix=True)
627 icf.addFlagsCategory ("Tracking.ITkActsValidateLargeRadiusSeedsPass",
628 createActsValidateLargeRadiusSeedsTrackingPassFlags, prefix=True)
629 icf.addFlagsCategory ("Tracking.ITkActsValidateLargeRadiusStandalonePass",
630 createActsValidateLargeRadiusStandaloneTrackingPassFlags, prefix=True)
631 icf.addFlagsCategory ("Tracking.ITkActsValidateTracksPass",
632 createActsValidateTracksTrackingPassFlags, prefix=True)
633 icf.addFlagsCategory ("Tracking.ITkActsValidateAmbiguityResolutionPass",
634 createActsValidateAmbiguityResolutionTrackingPassFlags, prefix=True)
635 icf.addFlagsCategory ("Tracking.ITkActsHeavyIonPass",
636 createActsHeavyIonTrackingPassFlags, prefix=True)
637
638 # Acts F100 validation pass
639 icf.addFlagsCategory ("Tracking.ITkActsValidateF100Pass",
640 createEFValidateF100TrackingPassFlags, prefix=True)
641
642 # Acts F150 validation pass
643 icf.addFlagsCategory ("Tracking.ITkActsValidateF150Pass",
644 createEFValidateF150TrackingPassFlags, prefix=True)
645
646 # GNN
647 from InDetGNNTracking.InDetGNNTrackingFlags import createGNNTrackingPassFlags
648 icf.addFlagsCategory ("Tracking.ITkGNNPass",
649 createGNNTrackingPassFlags, prefix=True)
650 # FPGA
651 from TrkConfig.InDetFPGATrackingFlags import createFPGATrackingPassFlags
652 icf.addFlagsCategory ("Tracking.ITkFPGAPass",
653 createFPGATrackingPassFlags, prefix=True)
654
655
656
657
658 # Vertexing flags
659 from TrkConfig.VertexFindingFlags import createPriVertexingFlags
660 icf.addFlagsCategory("Tracking.PriVertex",
661 createPriVertexingFlags, prefix=True)
662
663 # Turn on the primary vertex reconstruction
664 icf.addFlag("Tracking.doVertexFinding",
665 lambda prevFlags: prevFlags.Beam.Type is not BeamType.Cosmics)
666 # Turn on the secondary vertex V0 finder
667 icf.addFlag("Tracking.doV0Finder", False)
668
669 icf.addFlag('Tracking.TruthClusterSplittingEff', 0.9)
670
671 # Dump GBTS training data: 0=no dump, 1=standard tracking, 2=LRT
672 icf.addFlag("Tracking.dumpGBTSTrainingData", 0)
673
674 return icf