ATLAS Offline Software
Loading...
Searching...
No Matches
ActsTrackingPassFlags.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2
3from ActsConfig.ActsConfigFlags import SeedingStrategy
4import AthenaCommon.SystemOfUnits as Units
5
7 icf.doAthenaCluster = False
8 icf.doAthenaSpacePoint = False
9 icf.doAthenaSeed = False
10 icf.doAthenaTrack = False
11 icf.doAthenaAmbiguityResolution = False
12 icf.doActsCluster = False
13 icf.doActsSpacePoint = False
14 icf.doActsSeed = False
15 icf.doActsTrack = False
16 icf.doActsAmbiguityResolution = False
17
19 icf.doActsCluster = True
20 icf.doActsSpacePoint = True
21 icf.doActsSeed = True
22 icf.doActsTrack = True
23 # Ambiguity resolution can follow if ActsTrack is
24 # enabled. Ambi. can be activated/deactivated with
25 # the flag: Acts.doAmbiguityResolution
26 icf.doActsAmbiguityResolution = lambda pcf: pcf.Acts.doAmbiguityResolution
27
28# Main ACTS Tracking pass with Fast Tracking configuration
30 from AthenaConfiguration.AthConfigFlags import AthConfigFlags
31 icf = AthConfigFlags()
32
33 icf.addFlag("extension", "Acts" )
34
35 icf.addFlag("useITkPixel", lambda pcf : pcf.Detector.EnableITkPixel )
36 icf.addFlag("useITkStrip", lambda pcf : pcf.Detector.EnableITkStrip )
37 icf.addFlag("useITkPixelSeeding", True )
38 icf.addFlag("useITkStripSeeding", False )
39
40 icf.addFlag("usePrdAssociationTool" , False)
41 icf.addFlag("storeSeparateContainer" , False)
42 icf.addFlag("doZBoundary" , True)
43 icf.addFlag("doAmbiguityProcessorTrackFit", True)
44
45 icf.addFlag("useTIDE_Ambi", lambda pcf: pcf.Tracking.doTIDE_Ambi)
46
47 # Maximum bin set to 9999 instead of four to prevent out of bounds lookups
48 icf.addFlag("etaBins" , [-1.0, 2.0, 2.6, 9999.0])
49 icf.addFlag("maxEta" , 4.0)
50 icf.addFlag("minPT" , lambda pcf :
51 [0.2 * Units.GeV * pcf.BField.configuredSolenoidFieldScale]
52 if pcf.Tracking.doLowMu else
53 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
54 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale,
55 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
56
57 icf.addFlag("minPTSeed" , lambda pcf : (
58 pcf.BField.configuredSolenoidFieldScale *
59 (0.2 * Units.GeV if pcf.Tracking.doLowMu
60 else 0.9 * Units.GeV)))
61 icf.addFlag("maxPrimaryImpactSeed" , 5.0 * Units.mm)
62 icf.addFlag("maxZImpactSeed" , 150.0 * Units.mm)
63 icf.addFlag("useSeedFilter" , True)
64 icf.addFlag("useHoughVertexFilter" , False) # experimental, keep False
65
66 # --- cluster cuts
67 icf.addFlag("minClusters" , lambda pcf :
68 [6, 5, 4] if pcf.Tracking.doLowMu else [9, 8, 7])
69 icf.addFlag("minSiNotShared" , lambda pcf :
70 [6, 5, 4] if pcf.Tracking.doLowMu else [7, 6, 5])
71 icf.addFlag("maxShared" , [2])
72 icf.addFlag("minPixel" , [3])
73 icf.addFlag("maxHoles" , [1])
74 icf.addFlag("maxPixelHoles" , [2])
75 icf.addFlag("maxSctHoles" , [2])
76 icf.addFlag("maxDoubleHoles" , [1])
77 icf.addFlag("maxPrimaryImpact" , [5.0 * Units.mm, 5.0 * Units.mm, 10.0 * Units.mm])
78 icf.addFlag("maxEMImpact" , [50.0 * Units.mm])
79 icf.addFlag("maxZImpact" , [150.0 * Units.mm])
80
81 # --- general pattern cuts for NewTracking
82 icf.addFlag("roadWidth" , 20.)
83 icf.addFlag("nHolesMax" , icf.maxHoles)
84 icf.addFlag("nHolesGapMax" , icf.maxHoles)
85
86 # Chi2 cut used together with 1 max. hole
87 icf.addFlag("Xi2max" , [50.])
88 icf.addFlag("Xi2maxNoAdd" , [100.])
89 icf.addFlag("nWeightedClustersMin" , [6])
90
91 # --- seeding
92 icf.addFlag("maxdImpactSSSSeeds" , [20.0 * Units.mm])
93 icf.addFlag("radMax" , 1100. * Units.mm)
94
95 # --- min pt cut for brem
96 icf.addFlag("doBremRecoverySi", lambda pcf: pcf.Tracking.doBremRecovery)
97 icf.addFlag("minPTBrem", lambda pcf: (
98 [1. * Units.GeV * pcf.BField.configuredSolenoidFieldScale]))
99
100 # -- use of calo information
101 icf.addFlag("doCaloSeededBremSi", lambda pcf: pcf.Tracking.doCaloSeededBrem)
102 icf.addFlag("doCaloSeededAmbiSi", lambda pcf: pcf.Tracking.doCaloSeededAmbi)
103
104 # ACTS specifc config flags
105 icf.addFlag("isSecondaryPass", False)
106 icf.addFlag("isLargeD0", False)
107 icf.addFlag("autoReverseSearch", False)
108 icf.addFlag("PixelSeedingStrategy", SeedingStrategy.Gbts, type=SeedingStrategy)
109 icf.addFlag("StripSeedingStrategy", SeedingStrategy.GridTriplet, type=SeedingStrategy)
110 # Extension used to name the persistified track particle container
111 # (InDet{extension}TrackParticles) when storeSeparateContainer is
112 # requested. If empty, the pass extension is used.
113 icf.addFlag("storedTrackParticlesExtension", "")
114
115 # --- handle ACTS workflow coexistence
116 # Athena components
117 icf.addFlag("doAthenaCluster", False)
118 icf.addFlag("doAthenaSpacePoint", False)
119 icf.addFlag("doAthenaSeed", False)
120 icf.addFlag("doAthenaTrack", False)
121 icf.addFlag("doAthenaAmbiguityResolution", False)
122 # Acts components
123 icf.addFlag("doActsCluster", True)
124 icf.addFlag("doActsSpacePoint", True)
125 icf.addFlag("doActsSeed", True)
126 icf.addFlag("doActsTrack", True)
127 icf.addFlag("doActsAmbiguityResolution", lambda pcf:
128 pcf.Acts.doAmbiguityResolution)
129
130 # Athena -> Acts EDM converters
131 icf.addFlag("doAthenaToActsCluster", False)
132 icf.addFlag("doAthenaToActsSpacePoint", False)
133 icf.addFlag("doAthenaToActsTrack", False)
134 # Acts -> Athena EDM converters
135 icf.addFlag("doActsToAthenaCluster", False)
136 icf.addFlag("doActsToAthenaSpacePoint", False)
137 icf.addFlag("doActsToAthenaTrack", False)
138 icf.addFlag("doActsToAthenaResolvedTrack", False)
139
140 # --- flags for GNN tracking
141 icf.addFlag("doGNNTrack", False)
142
143 # ---flag for FPGA tracking
144 icf.addFlag("doFPGASpacePoint", False)
145 icf.addFlag("doFPGACluster", False)
146 icf.addFlag("doFPGASeed", False)
147 icf.addFlag("doFPGATrackSim", False)
148
149 # --- Flags for detailed information.
150 # Ignored for Primary Pass (always active);
151 # Enable for other passes with dedicated output container, if desired.
152 icf.addFlag("storeTrackSeeds", False)
153 icf.addFlag("storeSiSPSeededTracks", False)
154
155 return icf
156
157
160 icf.extension = "ActsLegacy"
161 icf.maxZImpact = [200. * Units.mm]
162 icf.maxZImpactSeed = 200. * Units.mm
163 icf.PixelSeedingStrategy = SeedingStrategy.GridTriplet
164 icf.useITkStripSeeding = True
165 icf.minPixel = [1]
166 icf.maxHoles = [2]
167 icf.nHolesMax = icf.maxHoles
168 icf.nHolesGapMax = icf.maxHoles
169 # Chi2 cut used together with 2 max. holes
170 icf.Xi2max = [25.]
171 icf.Xi2maxNoAdd = [25.]
172 return icf
173
174
175# Main ACTS Tracking pass with Heavy Ion configuration
178 icf.extension = "ActsHeavyIon"
179 icf.useITkStripSeeding = True
180 icf.maxPrimaryImpact = [5.0 * Units.mm]
181 icf.minPT = lambda pcf : (
182 [0.4 *Units.GeV * pcf.BField.configuredSolenoidFieldScale])
183 icf.minPTSeed = lambda pcf : (
184 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
185 icf.minClusters = [6]
186 icf.minSiNotShared = [6]
187 icf.maxPixelHoles = [1]
188 icf.maxSctHoles = [1]
189 icf.maxDoubleHoles = [0]
190 icf.maxHoles = [2]
191 icf.nHolesMax = icf.maxHoles
192 icf.nHolesGapMax = icf.maxHoles
193 icf.Xi2max = [25.]
194 icf.Xi2maxNoAdd = [25.]
195 icf.doBremRecoverySi = False
196 icf.doAmbiguityProcessorTrackFit = False
197 return icf
198
199# Secondary ACTS Tracking pass for Large Radius Tracking
202 icf.extension = "ActsLargeRadius"
203
204 # Store the output track particles in InDetLargeD0TrackParticles
205 # (instead of InDetActsLargeRadiusTrackParticles) so that downstream
206 # LRT clients can rely on the same container name as in Run 3
207 icf.storedTrackParticlesExtension = "LargeD0"
208
209 # Override acts default values
210 icf.Xi2max = [25]
211 icf.Xi2maxNoAdd = [50]
212
213 # Mark as secondary pass
214 icf.isSecondaryPass = True
215 # Store sepate container for LRT
216 # In Athena this is handled by the Tracking.storeSeparateLargeD0Container flag
217 icf.storeSeparateContainer = True
218 icf.isLargeD0 = True
219 icf.autoReverseSearch = True
220
221 icf.usePrdAssociationTool = True
222 icf.storeSeparateContainer = lambda pcf : pcf.Tracking.storeSeparateLargeD0Container
223
224 icf.minPT = lambda pcf : (
225 [1000 * Units.MeV * pcf.BField.configuredSolenoidFieldScale])
226 icf.maxEta = 4.0
227 icf.etaBins = [-1.0, 4.0]
228 icf.maxPrimaryImpact = [300 * Units.mm]
229 icf.maxZImpact = [500 * Units.mm]
230 icf.minClusters = [8]
231 icf.minSiNotShared = [6]
232 icf.maxShared = [2]
233 icf.minPixel = [0]
234 icf.maxHoles = [1]
235 icf.nHolesMax = icf.maxHoles
236 icf.nHolesGapMax = icf.maxHoles
237 icf.maxPixelHoles = [1]
238 icf.maxSctHoles = [1]
239 icf.maxDoubleHoles = [0]
240
241 icf.maxZImpactSeed = 500.0 * Units.mm
242 icf.maxPrimaryImpactSeed = 300.0 * Units.mm
243 icf.minPTSeed = lambda pcf : (
244 1000 * Units.MeV * pcf.BField.configuredSolenoidFieldScale)
245
246 icf.radMax = 1100. * Units.mm
247 icf.roadWidth = 5
248
249 # --- seeding
250 icf.useITkPixelSeeding = False
251 icf.useITkStripSeeding = True
252 icf.maxdImpactSSSSeeds = [300.0 * Units.mm]
253
254 icf.doBremRecoverySi = False
255
256 icf.nWeightedClustersMin = [6]
257 return icf
258
259# Secondary ACTS Tracking pass for Conversion tracking
262 icf.extension = "ActsConversion"
263
264 # Mark as secondary pass
265 icf.isSecondaryPass = True
266 # Conversion pass is merged with main pass
267 icf.storeSeparateContainer = False
268
269 icf.usePrdAssociationTool = True
270 icf.useITkPixelSeeding = False
271 icf.useITkStripSeeding = True
272
273 icf.etaBins = [-1.0,4.0]
274 icf.minPT = lambda pcf: (
275 [0.9 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
276 icf.maxPrimaryImpact = [10.0 * Units.mm]
277 icf.maxPrimaryImpactSeed = 10.0 * Units.mm
278 icf.minClusters = [6]
279 icf.minSiNotShared = [6]
280 icf.maxShared = [0]
281 icf.minPixel = [0]
282 icf.maxHoles = [0]
283 icf.maxPixelHoles = [1]
284 icf.maxSctHoles = [2]
285 icf.maxDoubleHoles = [1]
286
287 icf.nHolesMax = icf.maxHoles
288 icf.nHolesGapMax = icf.maxHoles
289 icf.nWeightedClustersMin = [6]
290 icf.maxdImpactSSSSeeds = [20.0 * Units.mm]
291 icf.radMax = 1100. * Units.mm
292 icf.doZBoundary = False
293
294 icf.doBremRecoverySi = True
295
296 return icf
297
298# Secondary ACTS Tracking pass for Low pT tracking
301 icf.extension = "ActsLowPt"
302
303 # Mark as secondary pass
304 icf.isSecondaryPass = True
305 # For the time being we do not store sepate containers for this pass (to be revised)
306 icf.storeSeparateContainer = False
307
308 icf.minPT = lambda pcf : (
309 [0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale])
310 icf.minPTSeed = lambda pcf : (
311 0.4 * Units.GeV * pcf.BField.configuredSolenoidFieldScale)
312 icf.doBremRecoverySi = False
313
314 return icf
315
316
317# Validation chains
318
321 icf.extension = "ActsValidateF100"
322 icf.doActsCluster = False
323 icf.doFPGACluster = True
324 icf.doFPGATrackSim = True
325 icf.doActsSpacePoint = True
326 icf.doActsSeed = True
327 icf.doActsTrack = True
328
329 # Override acts default values
330 icf.Xi2max = [50]
331 icf.Xi2maxNoAdd = [100]
332 icf.useITkStripSeeding = False
333 return icf
334
337 icf.extension = "ActsValidateF150"
338 icf.doActsCluster = False
339 icf.doFPGACluster = True
340 icf.doFPGASeed = True
341 icf.doFPGATrackSim = True
342 icf.doActsSpacePoint = False
343 icf.doActsSeed = False
344 icf.doActsTrack = True
345
346 # Override acts default values
347 icf.Xi2max = [50]
348 icf.Xi2maxNoAdd = [100]
349 icf.PixelSeedingStrategy = SeedingStrategy.F150
350 icf.useITkStripSeeding = False
351 return icf
352
353# Main Inner Detector ACTS Tracking pass
355 # flags for ACTS based InnerDetector silicon tracking
356 from TrkConfig.TrackingPassFlags import createTrackingPassFlags
357 icf = createTrackingPassFlags()
358 icf.extension = ""
359 icf.Xi2max = 25.0
360 icf.Xi2maxNoAdd = 25.0
361 # ACTS components
362 icf.addFlag("doActsCluster", True)
363 icf.addFlag("doActsSpacePoint", True)
364 icf.addFlag("doActsSeed", True)
365 icf.addFlag("doActsTrack", True)
366 icf.addFlag("doActsAmbiguityResolution", True)
367
368 # Maximum bin set to 9999 instead of four to prevent out of bounds lookups
369 icf.addFlag("etaBins" , [-1.0, 3.0, 9999.0])
370 icf.addFlag("maxPrimaryImpactList" , [5.0 * Units.mm, 5.0 * Units.mm, 25.0 * Units.mm])
371 icf.addFlag("PixelSeedingStrategy", SeedingStrategy.GridTriplet, type=SeedingStrategy)
372 icf.addFlag("StripSeedingStrategy", SeedingStrategy.GridTriplet, type=SeedingStrategy)
373 return icf