ATLAS Offline Software
Loading...
Searching...
No Matches
TrkConfigFlags.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 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.Overlay.DataOverlay and prevFlags.Common.ProductionStep is not ProductionStep.MinbiasPreprocessing))
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 # Special configuration for low-mu runs
173 icf.addFlag("Tracking.doLowMu", False)
174 # Turn running of doLowPt second pass on and off
175 icf.addFlag("Tracking.doLowPt",
176 lambda prevFlags: prevFlags.Tracking.doLowMu)
177
178 # Turn on to save the Track Seeds in a xAOD track collecting for development studies
179 icf.addFlag("Tracking.doStoreTrackSeeds", False)
180 # Save SiSP tracks (input to the ambiguity solver)
181 icf.addFlag("Tracking.doStoreSiSPSeededTracks", False)
182 # Turn writing of seed validation ntuple on and off
183 icf.addFlag("Tracking.writeSeedValNtuple", False)
184 # Save xAOD TrackMeasurementValidation + TrackStateValidation containers
185 icf.addFlag("Tracking.writeExtendedSi_PRDInfo", False)
186 icf.addFlag("Tracking.writeExtendedTRT_PRDInfo", False)
187 icf.addFlag("Tracking.PRDInfo.KeepOnlyOnTrackMeasurements", False)
188
189 # Only keep entries in xAOD TrackMeasurementValidation + TrackStateValidation containers for tracks passing user cut
190 # Indicate detector technology from which clusters should be thinned
191 icf.addFlag("Tracking.thinPixelClustersOnTrack", False)
192 icf.addFlag("Tracking.thinSCTClustersOnTrack", False)
193 icf.addFlag("Tracking.thinTRTClustersOnTrack", False)
194 icf.addFlag("Tracking.thinInDetClustersOnTrack",
195 lambda prevFlags: (
196 prevFlags.Tracking.thinPixelClustersOnTrack or
197 prevFlags.Tracking.thinSCTClustersOnTrack or
198 prevFlags.Tracking.thinTRTClustersOnTrack ))
199
200 # For cluster thinning (if enabled): list of containers and selection strings used in ThinInDetClustersAlg
201 icf.addFlag("Tracking.thinInDetClustersTrackContainers", ["InDetTrackParticles"])
202 icf.addFlag("Tracking.thinInDetClustersPixelMSOSContainers", ["PixelMSOSs"])
203 icf.addFlag("Tracking.thinInDetClustersSCTMSOSContainers", ["SCT_MSOSs"])
204 icf.addFlag("Tracking.thinInDetClustersTRTMSOSContainers", ["TRT_MSOSs"])
205 icf.addFlag("Tracking.thinInDetClustersSelectionStrings", ["InDetTrackParticles.pt > (1*GeV)"])
206
207 # Toggle track slimming
208 icf.addFlag("Tracking.doSlimming", lambda prevFlags:
209 not (prevFlags.Beam.Type in
210 [BeamType.SingleBeam, BeamType.Cosmics] or
211 prevFlags.Tracking.PrimaryPassConfig in [
212 PrimaryPassConfig.VtxLumi,
213 PrimaryPassConfig.VtxLumiHeavyIon,
214 PrimaryPassConfig.VtxBeamSpot,
215 PrimaryPassConfig.HighPileup]))
216
217
218
219 # The following flags are only used in InDet configurations for now
220 # No corresponding ITk config is available yet
221
222 icf.addFlag("Tracking.useNewParamTRT", lambda prevFlags:
223 prevFlags.Tracking.PrimaryPassConfig is not(
224 PrimaryPassConfig.HeavyIon))
225
226 # --- run back tracking and TRT only in RoI seed regions
227 icf.addFlag("Tracking.BackTracking.doRoISeeded", lambda prevFlags:
228 prevFlags.Detector.EnableCalo and not(
229 prevFlags.Tracking.doLowMu or
230 prevFlags.Tracking.PrimaryPassConfig is (
231 PrimaryPassConfig.HeavyIon) or
232 prevFlags.Beam.Type is BeamType.Cosmics or
233 prevFlags.Tracking.doMinBias))
234
235 # --- defaults for backtracking
236 def BackTrackingMinPt(flags):
237 if flags.Tracking.doMinBias:
238 return 0.4 * Units.GeV * flags.BField.configuredSolenoidFieldScale
239 elif (flags.Tracking.doLowMu or
240 flags.Tracking.PrimaryPassConfig in [
241 PrimaryPassConfig.HeavyIon, PrimaryPassConfig.VtxLumiHeavyIon] or
242 flags.Beam.Type is BeamType.Cosmics):
243 return 1.0 * Units.GeV * flags.BField.configuredSolenoidFieldScale
244 else:
245 return 3.0 * Units.GeV * flags.BField.configuredSolenoidFieldScale
246 icf.addFlag("Tracking.BackTracking.minPt", BackTrackingMinPt)
247 icf.addFlag("Tracking.BackTracking.TRTSegFinderPtBins", 50)
248 icf.addFlag("Tracking.BackTracking.maxTRTSharedFrac", 0.7)
249 icf.addFlag("Tracking.BackTracking.maxSecondaryImpact", 100.0 * Units.mm)
250 icf.addFlag("Tracking.BackTracking.minClusters", 4)
251 icf.addFlag("Tracking.BackTracking.minSiNotShared", 4)
252 # cut is now on number of shared modules
253 icf.addFlag("Tracking.BackTracking.maxShared", 1)
254 icf.addFlag("Tracking.BackTracking.minTRT", lambda prevFlags:
255 10 if (prevFlags.Tracking.doLowMu or
256 prevFlags.Tracking.PrimaryPassConfig is (
257 PrimaryPassConfig.HeavyIon))
258 else 15)
259 icf.addFlag("Tracking.BackTracking.minTRTPrecFrac", lambda prevFlags:
260 0. if (prevFlags.Tracking.doLowMu or
261 prevFlags.Tracking.PrimaryPassConfig is (
262 PrimaryPassConfig.HeavyIon))
263 else 0.3)
264
265 icf.addFlag("Tracking.BackTracking.maxHoles", lambda prevFlags:
266 2 if (prevFlags.Tracking.doLowMu or
267 prevFlags.Tracking.PrimaryPassConfig is (
268 PrimaryPassConfig.HeavyIon))
269 else 1)
270 icf.addFlag("Tracking.BackTracking.maxPixelHoles", lambda prevFlags:
271 2 if (prevFlags.Tracking.doLowMu or
272 prevFlags.Tracking.PrimaryPassConfig is (
273 PrimaryPassConfig.HeavyIon))
274 else 1)
275 icf.addFlag("Tracking.BackTracking.maxSCTHoles", lambda prevFlags:
276 2 if (prevFlags.Tracking.doLowMu or
277 prevFlags.Tracking.PrimaryPassConfig is (
278 PrimaryPassConfig.HeavyIon))
279 else 1)
280 icf.addFlag("Tracking.BackTracking.maxDoubleHoles", lambda prevFlags:
281 1 if (prevFlags.Tracking.doLowMu or
282 prevFlags.Tracking.PrimaryPassConfig is (
283 PrimaryPassConfig.HeavyIon))
284 else 0)
285 icf.addFlag("Tracking.BackTracking.nHolesMax", 2)
286 icf.addFlag("Tracking.BackTracking.nHolesGapMax", 2)
287
288 # extension finder in back tracking
289 icf.addFlag("Tracking.BackTracking.rejectShortExtensions", lambda prevFlags:
290 not(prevFlags.Beam.Type is BeamType.Cosmics or
291 prevFlags.Tracking.doLowMu or
292 prevFlags.Tracking.PrimaryPassConfig is (
293 PrimaryPassConfig.HeavyIon)))
294 # cut in Si Extensions before fit
295 icf.addFlag("Tracking.BackTracking.SiExtensionCuts", lambda prevFlags:
296 not(prevFlags.Tracking.doLowMu or
297 prevFlags.Tracking.PrimaryPassConfig is (
298 PrimaryPassConfig.HeavyIon)))
299 icf.addFlag("Tracking.BackTracking.minRoIClusterEt", lambda prevFlags:
300 0. if (prevFlags.Tracking.doLowMu or
301 prevFlags.Tracking.PrimaryPassConfig in [
302 PrimaryPassConfig.HeavyIon, PrimaryPassConfig.VtxLumiHeavyIon] or
303 prevFlags.Beam.Type is BeamType.Cosmics or
304 prevFlags.Tracking.doMinBias)
305 else 6.*Units.GeV * prevFlags.BField.configuredSolenoidFieldScale)
306
307 # TRT standalone configuration
308 def TRTStandaloneMinPt(flags):
309 if flags.Tracking.doMinBias:
310 return 0.4 * Units.GeV * flags.BField.configuredSolenoidFieldScale
311 elif flags.Tracking.doLowMu or (
312 flags.Tracking.PrimaryPassConfig is PrimaryPassConfig.HeavyIon):
313 return 1.0 * Units.GeV * flags.BField.configuredSolenoidFieldScale
314 else:
315 return 2.0 * Units.GeV * flags.BField.configuredSolenoidFieldScale
316 icf.addFlag("Tracking.TRTStandalone.minPt", TRTStandaloneMinPt)
317 icf.addFlag("Tracking.TRTStandalone.minTRTPrecFrac", 0.15)
318 icf.addFlag("Tracking.TRTStandalone.minTRT", 15)
319
320 # Disabled for data-taking up to 2024 included and MC campaigns up to MC23e included
321 icf.addFlag("Tracking.TRTStandalone.startAtOriginalPerigee",
322 lambda prevFlags: (
323 (not prevFlags.Input.isMC and prevFlags.Input.DataYear >= 2025) or
324 (prevFlags.Input.isMC and prevFlags.Input.MCCampaign >= Campaign.MC23g)))
325
326 # Turn on InDetRecStatistics
327 icf.addFlag("Tracking.doStats", False)
328 # Switch for track observer tool
329 icf.addFlag("Tracking.doTIDE_AmbiTrackMonitoring", False)
330 # use beam spot position in pixel NN
331 icf.addFlag("Tracking.useBeamSpotInfoNN", True)
332 # Threshold for NN cut in large D0 tracking for tracks in ambi
333 icf.addFlag("Tracking.nnCutLargeD0Threshold", -1.0)
334 # Use broad cluster errors for Pixel
335 icf.addFlag("Tracking.useBroadPixClusterErrors", False)
336 # Use broad cluster errors for SCT
337 icf.addFlag("Tracking.useBroadSCTClusterErrors", False)
338
339 # Tracking passes/configurations scheduled
340
341 # Turn running of track segment creation in pixel on and off
342 icf.addFlag("Tracking.doTrackSegmentsPixel",
343 lambda prevFlags: (
344 prevFlags.Detector.EnablePixel and (
345 prevFlags.Tracking.doMinBias or
346 prevFlags.Tracking.doLowMu or
347 prevFlags.Beam.Type is BeamType.Cosmics)))
348 # Turn running of track segment creation in SCT on and off
349 icf.addFlag("Tracking.doTrackSegmentsSCT",
350 lambda prevFlags: (
351 prevFlags.Detector.EnableSCT and (
352 prevFlags.Tracking.doLowMu or
353 prevFlags.Beam.Type is BeamType.Cosmics)))
354 # Turn running of track segment creation in TRT on and off
355 icf.addFlag("Tracking.doTrackSegmentsTRT",
356 lambda prevFlags: (
357 prevFlags.Detector.EnableTRT and
358 (prevFlags.Tracking.doLowMu or
359 prevFlags.Beam.Type is BeamType.Cosmics)))
360 # turn on / off TRT extensions
361 icf.addFlag("Tracking.doTRTExtension",
362 lambda prevFlags: prevFlags.Detector.EnableTRT)
363 # control to run TRT Segment finding (do it always after new tracking!)
364 icf.addFlag("Tracking.doTRTSegments",
365 lambda prevFlags: (prevFlags.Detector.EnableTRT and
366 (prevFlags.Tracking.doBackTracking or
367 prevFlags.Tracking.doTRTStandalone)))
368 # Turn running of backtracking on and off
369 icf.addFlag("Tracking.doBackTracking", lambda prevFlags: (
370 prevFlags.Detector.EnableTRT and
371 not(prevFlags.Beam.Type in [BeamType.SingleBeam, BeamType.Cosmics] or
372 prevFlags.Tracking.PrimaryPassConfig in [
373 PrimaryPassConfig.HeavyIon,
374 PrimaryPassConfig.VtxLumi,
375 PrimaryPassConfig.VtxLumiHeavyIon,
376 PrimaryPassConfig.VtxBeamSpot,
377 PrimaryPassConfig.HighPileup])))
378 # control TRT Standalone
379 icf.addFlag("Tracking.doTRTStandalone", lambda prevFlags: (
380 prevFlags.Detector.EnableTRT and
381 not(prevFlags.Tracking.PrimaryPassConfig in [
382 PrimaryPassConfig.HeavyIon,
383 PrimaryPassConfig.VtxLumi,
384 PrimaryPassConfig.VtxLumiHeavyIon,
385 PrimaryPassConfig.VtxBeamSpot,
386 PrimaryPassConfig.HighPileup])))
387
388 # Turn running of doForwardTracks pass on and off
389 icf.addFlag("Tracking.doForwardTracks", lambda prevFlags: (
390 prevFlags.Detector.EnablePixel and
391 not(prevFlags.Beam.Type in [BeamType.SingleBeam, BeamType.Cosmics] or
392 prevFlags.Tracking.PrimaryPassConfig in [
393 PrimaryPassConfig.HeavyIon,
394 PrimaryPassConfig.VtxLumi,
395 PrimaryPassConfig.VtxLumiHeavyIon,
396 PrimaryPassConfig.VtxBeamSpot,
397 PrimaryPassConfig.HighPileup] or
398 prevFlags.Tracking.doMinBias or
399 prevFlags.Tracking.doLowMu)))
400 icf.addFlag("Tracking.doTrackSegmentsDisappearing",
401 lambda prevFlags: (
402 not((prevFlags.Tracking.PrimaryPassConfig is
403 PrimaryPassConfig.HeavyIon) or
404 prevFlags.Beam.Type is BeamType.Cosmics)))
405
406 # Turn running of doVeryLowPt third pass on and off
407 icf.addFlag("Tracking.doVeryLowPt", False)
408 # Turn running of doLargeD0 second pass down to 100 MeV on and off
409 icf.addFlag("Tracking.doLowPtLargeD0", False)
410 # Switch for running LowPtRoI settings
411 icf.addFlag("Tracking.doLowPtRoI", False)
412 # Switch for running UPC settings
413 icf.addFlag("Tracking.doUPC", lambda prevFlags: prevFlags.Reco.HIMode is HIMode.UPC)
414 # Switch for running HIP settings
415 icf.addFlag("Tracking.doHIP", lambda prevFlags: prevFlags.Reco.HIMode is HIMode.HIP)
416 # Switch for running MinBias settings (UPC or HIP turn this ON)
417 icf.addFlag("Tracking.doMinBias", lambda prevFlags:
418 prevFlags.Tracking.doUPC or prevFlags.Tracking.doHIP)
419 # Turn running of BeamGas second pass on and off
420 icf.addFlag("Tracking.doBeamGas",
421 lambda prevFlags: prevFlags.Beam.Type is BeamType.SingleBeam)
422 # Special reconstruction for BLS physics
423 icf.addFlag("Tracking.doBLS", False)
424
425 # Special pass using truth information for pattern recognition, runs in parallel to/instead of the first pass
426 icf.addFlag("Tracking.doPseudoTracking", False)
427 # Special pass using truth information for pattern recognition, removes assumed in-efficencies applied to PseudoTracking
428 icf.addFlag("Tracking.doIdealPseudoTracking", False)
429
430
431
432 # The following flags are only used in ITk configurations
433
434 # Turn running of ITk FastTracking on and off
435 icf.addFlag("Tracking.doITkFastTracking", False)
436
437 # Turn running of Conversion second tracking pass on and off
438 icf.addFlag("Tracking.doITkConversion",
439 lambda prevFlags: not prevFlags.Tracking.doITkFastTracking)
440
441 # Allows TrigFastTrackFinder to be run as an offline algorithm by replacing
442 # SiSPSeededTrackFinder
443 icf.addFlag("Tracking.useITkFTF", False)
444
445 # GNN for ITk flags
446 from InDetGNNTracking.InDetGNNTrackingConfigFlags import createGNNTrackingConfigFlags
447 icf.join(createGNNTrackingConfigFlags())
448
449 # enable reco steps
450 icf.addFlag("Tracking.recoChain", [TrackingComponent.AthenaChain])
451
452
453
454 # Tracking pass flags
455
456 # InDet
457
458 from TrkConfig.TrackingPassFlags import (
459 createTrackingPassFlags, createHighPileupTrackingPassFlags,
460 createMinBiasTrackingPassFlags, createUPCTrackingPassFlags,
461 createHIPTrackingPassFlags, createR3LargeD0TrackingPassFlags,
462 createLowPtLargeD0TrackingPassFlags,
463 createLowPtTrackingPassFlags, createVeryLowPtTrackingPassFlags,
464 createLowPtRoITrackingPassFlags, createForwardTracksTrackingPassFlags,
465 createBeamGasTrackingPassFlags, createVtxLumiTrackingPassFlags, createVtxLumiHeavyIonTrackingPassFlags,
466 createVtxBeamSpotTrackingPassFlags, createCosmicsTrackingPassFlags,
467 createHeavyIonTrackingPassFlags, createPixelTrackingPassFlags,
468 createDisappearingTrackingPassFlags, createSCTTrackingPassFlags,
469 createTRTTrackingPassFlags, createTRTStandaloneTrackingPassFlags)
470
471 def primaryPass(flags):
472 if flags.Beam.Type is BeamType.Cosmics:
473 return PrimaryPassConfig.Cosmics
474 elif flags.Reco.EnableHI:
475 if flags.Tracking.doUPC: #For UPC
476 return PrimaryPassConfig.UPC
477 elif flags.Tracking.doHIP: #For HIP
478 return PrimaryPassConfig.HIP
479 else: #For HI (default)
480 return PrimaryPassConfig.HeavyIon
481 elif flags.Tracking.doMinBias:
482 return PrimaryPassConfig.MinBias
483 else:
484 return PrimaryPassConfig.Default
485
486 icf.addFlag("Tracking.PrimaryPassConfig", lambda prevFlags:
487 primaryPass(prevFlags), type=PrimaryPassConfig)
488
489 # Set up for first tracking pass, updated for second passes
490 icf.addFlagsCategory("Tracking.MainPass",
491 createTrackingPassFlags, prefix=True)
492 icf.addFlagsCategory("Tracking.HighPileupPass",
493 createHighPileupTrackingPassFlags, prefix=True)
494 icf.addFlagsCategory("Tracking.UPCPass",
495 createUPCTrackingPassFlags, prefix=True)
496 icf.addFlagsCategory("Tracking.HIPPass",
497 createHIPTrackingPassFlags, prefix=True)
498 icf.addFlagsCategory("Tracking.MinBiasPass",
499 createMinBiasTrackingPassFlags, prefix=True)
500 icf.addFlagsCategory("Tracking.R3LargeD0Pass",
501 createR3LargeD0TrackingPassFlags, prefix=True)
502 icf.addFlagsCategory("Tracking.LowPtLargeD0Pass",
503 createLowPtLargeD0TrackingPassFlags, prefix=True)
504 icf.addFlagsCategory("Tracking.LowPtPass",
505 createLowPtTrackingPassFlags, prefix=True)
506 icf.addFlagsCategory("Tracking.VeryLowPtPass",
507 createVeryLowPtTrackingPassFlags, prefix=True)
508 icf.addFlagsCategory("Tracking.LowPtRoIPass",
509 createLowPtRoITrackingPassFlags, prefix=True)
510 icf.addFlagsCategory("Tracking.ForwardPass",
511 createForwardTracksTrackingPassFlags, prefix=True)
512 icf.addFlagsCategory("Tracking.BeamGasPass",
513 createBeamGasTrackingPassFlags, prefix=True)
514 icf.addFlagsCategory("Tracking.VtxLumiPass",
515 createVtxLumiTrackingPassFlags, prefix=True)
516 icf.addFlagsCategory("Tracking.VtxLumiHeavyIonPass",
517 createVtxLumiHeavyIonTrackingPassFlags, prefix=True)
518 icf.addFlagsCategory("Tracking.VtxBeamSpotPass",
519 createVtxBeamSpotTrackingPassFlags, prefix=True)
520 icf.addFlagsCategory("Tracking.CosmicsPass",
521 createCosmicsTrackingPassFlags, prefix=True)
522 icf.addFlagsCategory("Tracking.HeavyIonPass",
523 createHeavyIonTrackingPassFlags, prefix=True)
524 icf.addFlagsCategory("Tracking.PixelPass",
525 createPixelTrackingPassFlags, prefix=True)
526 icf.addFlagsCategory("Tracking.DisappearingPass",
527 createDisappearingTrackingPassFlags, prefix=True)
528 icf.addFlagsCategory("Tracking.SCTPass",
529 createSCTTrackingPassFlags, prefix=True)
530 icf.addFlagsCategory("Tracking.TRTPass",
531 createTRTTrackingPassFlags, prefix=True)
532 icf.addFlagsCategory("Tracking.TRTStandalonePass",
533 createTRTStandaloneTrackingPassFlags, prefix=True)
534
535 # ITk
536
537 from TrkConfig.TrackingPassFlags import (
538 createITkTrackingPassFlags, createITkLargeD0TrackingPassFlags,
539 createITkConversionTrackingPassFlags,
540 createITkFastTrackingPassFlags, createITkLargeD0FastTrackingPassFlags,
541 createITkFTFPassFlags, createITkFTFLargeD0PassFlags, createITkLowPtTrackingPassFlags,
542 createITkHeavyIonTrackingPassFlags)
543
544 def itkPrimaryPass(flags):
545 if flags.Tracking.useITkFTF:
546 return ITkPrimaryPassConfig.FTF
547 elif TrackingComponent.ActsChain in flags.Tracking.recoChain:
548 return ITkPrimaryPassConfig.Acts
549 elif TrackingComponent.ActsLegacyChain in flags.Tracking.recoChain:
550 return ITkPrimaryPassConfig.ActsLegacy
551 elif TrackingComponent.ActsHeavyIon in flags.Tracking.recoChain:
552 return ITkPrimaryPassConfig.ActsHeavyIon
553 elif flags.Tracking.doITkFastTracking:
554 return ITkPrimaryPassConfig.FastTracking
555 elif flags.Reco.EnableHI:
556 return ITkPrimaryPassConfig.HeavyIon
557 else:
558 return ITkPrimaryPassConfig.Default
559
560 icf.addFlag("Tracking.ITkPrimaryPassConfig", lambda prevFlags:
561 itkPrimaryPass(prevFlags), type=ITkPrimaryPassConfig)
562
563 icf.addFlagsCategory ("Tracking.ITkMainPass",
564 createITkTrackingPassFlags, prefix=True)
565 icf.addFlagsCategory ("Tracking.ITkLargeD0Pass",
566 createITkLargeD0TrackingPassFlags, prefix=True)
567 icf.addFlagsCategory ("Tracking.ITkConversionPass",
568 createITkConversionTrackingPassFlags, prefix=True)
569 icf.addFlagsCategory ("Tracking.ITkLowPtPass",
570 createITkLowPtTrackingPassFlags, prefix=True)
571 icf.addFlagsCategory ("Tracking.ITkFastPass",
572 createITkFastTrackingPassFlags, prefix=True)
573 icf.addFlagsCategory ("Tracking.ITkLargeD0FastPass",
574 createITkLargeD0FastTrackingPassFlags, prefix=True)
575 icf.addFlagsCategory ("Tracking.ITkFTFPass",
576 createITkFTFPassFlags, prefix=True)
577 icf.addFlagsCategory ("Tracking.ITkFTFLargeD0Pass",
578 createITkFTFLargeD0PassFlags, prefix=True)
579 icf.addFlagsCategory ("Tracking.ITkHeavyIonPass",
580 createITkHeavyIonTrackingPassFlags, prefix=True)
581
582 # Acts
583 from ActsConfig.ActsTrackingPassFlags import (
584 createActsTrackingPassFlags,
585 createActsLegacyTrackingPassFlags,
586 createActsLargeRadiusTrackingPassFlags,
587 createActsConversionTrackingPassFlags,
588 createActsLowPtTrackingPassFlags,
589 createActsValidateClustersTrackingPassFlags,
590 createActsValidateSpacePointsTrackingPassFlags,
591 createActsValidateSeedsTrackingPassFlags,
592 createActsValidateConversionSeedsTrackingPassFlags,
593 createActsValidateLargeRadiusSeedsTrackingPassFlags,
594 createActsValidateLargeRadiusStandaloneTrackingPassFlags,
595 createActsValidateTracksTrackingPassFlags,
596 createActsValidateAmbiguityResolutionTrackingPassFlags,
597 createActsHeavyIonTrackingPassFlags,
598 createEFValidateF100TrackingPassFlags,
599 createEFValidateF150TrackingPassFlags
600 )
601
602 icf.addFlagsCategory ("Tracking.ITkActsPass",
603 createActsTrackingPassFlags, prefix=True)
604 icf.addFlagsCategory ("Tracking.ITkActsLegacyPass",
605 createActsLegacyTrackingPassFlags, prefix=True)
606 icf.addFlagsCategory ("Tracking.ITkActsLargeRadiusPass",
607 createActsLargeRadiusTrackingPassFlags, prefix=True)
608 icf.addFlagsCategory ('Tracking.ITkActsConversionPass',
609 createActsConversionTrackingPassFlags, prefix=True)
610 icf.addFlagsCategory ('Tracking.ITkActsLowPtPass',
611 createActsLowPtTrackingPassFlags, prefix=True)
612 icf.addFlagsCategory ("Tracking.ITkActsValidateClustersPass",
613 createActsValidateClustersTrackingPassFlags, prefix=True)
614 icf.addFlagsCategory ("Tracking.ITkActsValidateSpacePointsPass",
615 createActsValidateSpacePointsTrackingPassFlags, prefix=True)
616 icf.addFlagsCategory ("Tracking.ITkActsValidateSeedsPass",
617 createActsValidateSeedsTrackingPassFlags, prefix=True)
618 icf.addFlagsCategory ("Tracking.ITkActsValidateConversionSeedsPass",
619 createActsValidateConversionSeedsTrackingPassFlags, prefix=True)
620 icf.addFlagsCategory ("Tracking.ITkActsValidateLargeRadiusSeedsPass",
621 createActsValidateLargeRadiusSeedsTrackingPassFlags, prefix=True)
622 icf.addFlagsCategory ("Tracking.ITkActsValidateLargeRadiusStandalonePass",
623 createActsValidateLargeRadiusStandaloneTrackingPassFlags, prefix=True)
624 icf.addFlagsCategory ("Tracking.ITkActsValidateTracksPass",
625 createActsValidateTracksTrackingPassFlags, prefix=True)
626 icf.addFlagsCategory ("Tracking.ITkActsValidateAmbiguityResolutionPass",
627 createActsValidateAmbiguityResolutionTrackingPassFlags, prefix=True)
628 icf.addFlagsCategory ("Tracking.ITkActsHeavyIonPass",
629 createActsHeavyIonTrackingPassFlags, prefix=True)
630
631 # Acts F100 validation pass
632 icf.addFlagsCategory ("Tracking.ITkActsValidateF100Pass",
633 createEFValidateF100TrackingPassFlags, prefix=True)
634
635 # Acts F150 validation pass
636 icf.addFlagsCategory ("Tracking.ITkActsValidateF150Pass",
637 createEFValidateF150TrackingPassFlags, prefix=True)
638
639 # GNN
640 from InDetGNNTracking.InDetGNNTrackingFlags import createGNNTrackingPassFlags
641 icf.addFlagsCategory ("Tracking.ITkGNNPass",
642 createGNNTrackingPassFlags, prefix=True)
643 # FPGA
644 from TrkConfig.InDetFPGATrackingFlags import createFPGATrackingPassFlags
645 icf.addFlagsCategory ("Tracking.ITkFPGAPass",
646 createFPGATrackingPassFlags, prefix=True)
647
648
649
650
651 # Vertexing flags
652 from TrkConfig.VertexFindingFlags import createPriVertexingFlags
653 icf.addFlagsCategory("Tracking.PriVertex",
654 createPriVertexingFlags, prefix=True)
655
656 # Turn on the primary vertex reconstruction
657 icf.addFlag("Tracking.doVertexFinding",
658 lambda prevFlags: prevFlags.Beam.Type is not BeamType.Cosmics)
659 # Turn on the secondary vertex V0 finder
660 icf.addFlag("Tracking.doV0Finder", False)
661
662 icf.addFlag('Tracking.TruthClusterSplittingEff', 0.9)
663
664 # Dump GBTS training data: 0=no dump, 1=standard tracking, 2=LRT
665 icf.addFlag("Tracking.dumpGBTSTrainingData", 0)
666
667 return icf