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