ATLAS Offline Software
Loading...
Searching...
No Matches
python.TrkConfigFlags Namespace Reference

Classes

class  PrimaryPassConfig
class  ITkPrimaryPassConfig
class  TrackFitterType
class  KalmanUpdatorType
class  PixelClusterSplittingType
class  TrackingComponent

Functions

 createTrackingConfigFlags ()

Function Documentation

◆ createTrackingConfigFlags()

python.TrkConfigFlags.createTrackingConfigFlags ( )

Definition at line 68 of file TrkConfigFlags.py.

68def createTrackingConfigFlags():
69 icf = AthConfigFlags()
70
71 # Turn running of truth matching on and off (by default on for MC off for data)
72 icf.addFlag("Tracking.doTruth", lambda prevFlags: prevFlags.Input.isMC or
73 (prevFlags.Common.ProductionStep is not ProductionStep.MinbiasPreprocessing and prevFlags.Overlay.DataOverlay))
74
75 # control which fitter to be used
76 icf.addFlag("Tracking.trackFitterType",
77 TrackFitterType.GlobalChi2Fitter, type=TrackFitterType)
78 # control which measurement updator to load as InDetUpdator
79 icf.addFlag("Tracking.kalmanUpdator",
80 KalmanUpdatorType.KalmanUpdatorSMatrix, type=KalmanUpdatorType)
81
82 icf.addFlag("Tracking.materialInteractions", lambda prevFlags:
83 prevFlags.Beam.Type is not BeamType.SingleBeam)
84 # Control which type of particle hypothesis to use for the material interactions
85 # 0=non-interacting,1=electron,2=muon,3=pion,4=kaon,5=proton. See ParticleHypothesis.h for full definition.
86 icf.addFlag("Tracking.materialInteractionsType", lambda prevFlags:
87 2 if prevFlags.Beam.Type is BeamType.Cosmics else 3)
88
89 # Turn on running of Brem Recovery in tracking
90 icf.addFlag("Tracking.doBremRecovery", lambda prevFlags: (
91 prevFlags.Detector.EnableCalo and
92 not (prevFlags.Tracking.PrimaryPassConfig in
93 [PrimaryPassConfig.VtxLumi, PrimaryPassConfig.VtxLumiHeavyIon, PrimaryPassConfig.VtxBeamSpot] or
94 prevFlags.Tracking.doLowMu or
95 prevFlags.Beam.Type is not BeamType.Collisions or
96 not prevFlags.BField.solenoidOn)))
97 icf.addFlag("Tracking.doCaloSeededBrem", lambda prevFlags: (
98 prevFlags.Detector.EnableCalo and prevFlags.Tracking.doBremRecovery))
99 icf.addFlag("Tracking.phiWidthBrem", 0.3)
100 icf.addFlag("Tracking.etaWidthBrem", 0.2)
101 # Use Recover SSS to Calo ROIs
102 icf.addFlag("Tracking.doHadCaloSeededSSS", False)
103 # Use Calo ROIs to seed specific cuts for the ambi
104 icf.addFlag("Tracking.doCaloSeededAmbi", lambda prevFlags:
105 prevFlags.Detector.EnableCalo)
106 # control if the shared hits are recorded in TrackPatricles
107 icf.addFlag("Tracking.doSharedHits", True)
108 # Switch for running TIDE Ambi
109 icf.addFlag("Tracking.doTIDE_Ambi", lambda prevFlags:
110 not (prevFlags.Beam.Type is BeamType.Cosmics))
111 # Use simple position and error estimate for on-track pixel cluster
112 icf.addFlag("Tracking.doPixelDigitalClustering", False)
113 # Try to split pixel clusters
114 icf.addFlag("Tracking.doPixelClusterSplitting",
115 lambda prevFlags: not (prevFlags.Beam.Type is BeamType.Cosmics))
116 # choose splitter type: NeuralNet or AnalogClus
117 icf.addFlag("Tracking.pixelClusterSplittingType", lambda prevFlags:
118 PixelClusterSplittingType.NeuralNet
119 if prevFlags.GeoModel.Run <= LHCPeriod.Run3
120 else PixelClusterSplittingType.Truth,
121 type=PixelClusterSplittingType)
122 # Cut value for splitting clusters into two parts
123 icf.addFlag("Tracking.pixelClusterSplitProb1",
124 lambda prevFlags: (
125 0.5 if prevFlags.GeoModel.Run is LHCPeriod.Run1 else 0.55))
126 # Cut value for splitting clusters into three parts
127 icf.addFlag("Tracking.pixelClusterSplitProb2",
128 lambda prevFlags: (
129 0.5 if prevFlags.GeoModel.Run is LHCPeriod.Run1 else 0.45))
130 # Skip ambiguity solver in hadronic ROI
131 icf.addFlag("Tracking.doSkipAmbiROI", False)
132
133 # Guaranteed not-subtracted topo clusters even in heavy ions
134 icf.addFlag("Tracking.TopoClusters", "CaloTopoClusters")
135 icf.addFlag("Tracking.EgammaTopoClusters", "egammaTopoClusters")
136
137 # Express track parameters wrt. to : 'BeamLine','BeamSpot','Vertex' (first primary vertex)
138 icf.addFlag("Tracking.perigeeExpression", lambda prevFlags:
139 "Vertex" if (prevFlags.Tracking.PrimaryPassConfig in [
140 PrimaryPassConfig.HeavyIon, PrimaryPassConfig.VtxLumiHeavyIon] or
141 prevFlags.Tracking.ITkPrimaryPassConfig in [
142 ITkPrimaryPassConfig.HeavyIon, ITkPrimaryPassConfig.ActsHeavyIon]
143 )
144 else "BeamLine")
145
146 # to make eta overlap space points in endcap (aligned with search eta neighbour in strip endcaps)
147 icf.addFlag("Tracking.doEndcapEtaOverlapSpacePoint", lambda prevFlags: prevFlags.ITk.doEndcapEtaNeighbour)
148
149 # Tracking passes/configurations scheduled
150
151 def doLargeD0(flags):
152 if flags.GeoModel.Run <= LHCPeriod.Run3:
153 return not ((flags.Beam.Type in
154 [BeamType.SingleBeam, BeamType.Cosmics]) or
155 flags.Tracking.PrimaryPassConfig in [
156 PrimaryPassConfig.HeavyIon,
157 PrimaryPassConfig.UPC,
158 PrimaryPassConfig.HIP,
159 PrimaryPassConfig.VtxLumi,
160 PrimaryPassConfig.VtxLumiHeavyIon,
161 PrimaryPassConfig.VtxBeamSpot,
162 PrimaryPassConfig.HighPileup])
163 else: # LRT disabled by default for Run4 for now
164 return False
165
166 icf.addFlag("Tracking.doLargeD0", doLargeD0)
167 icf.addFlag("Tracking.storeSeparateLargeD0Container", True)
168
169 # Store separate track particles collection reconstructed in regards to the beam line
170 icf.addFlag("Tracking.storeBeamLineTrackParticles", lambda prevFlags: prevFlags.Overlay.DataOverlay)
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
401 def doTrackSegmentsDisappearing(flags):
402 if flags.GeoModel.Run <= LHCPeriod.Run3:
403 return not((flags.Tracking.PrimaryPassConfig is
404 PrimaryPassConfig.HeavyIon) or
405 flags.Beam.Type is BeamType.Cosmics)
406 else: # Disappearing tracks disabled for Run4
407 return False
408 icf.addFlag("Tracking.doTrackSegmentsDisappearing", doTrackSegmentsDisappearing)
409
410 # Turn running of doVeryLowPt third pass on and off
411 icf.addFlag("Tracking.doVeryLowPt", False)
412 # Turn running of doLargeD0 second pass down to 100 MeV on and off
413 icf.addFlag("Tracking.doLowPtLargeD0", False)
414 # Switch for running LowPtRoI settings
415 icf.addFlag("Tracking.doLowPtRoI", False)
416 # Switch for running UPC settings
417 icf.addFlag("Tracking.doUPC", lambda prevFlags: prevFlags.Reco.HIMode is HIMode.UPC)
418 # Switch for running HIP settings
419 icf.addFlag("Tracking.doHIP", lambda prevFlags: prevFlags.Reco.HIMode is HIMode.HIP)
420 # Switch for running MinBias settings (UPC or HIP turn this ON)
421 icf.addFlag("Tracking.doMinBias", lambda prevFlags:
422 prevFlags.Tracking.doUPC or prevFlags.Tracking.doHIP)
423 # Turn running of BeamGas second pass on and off
424 icf.addFlag("Tracking.doBeamGas",
425 lambda prevFlags: prevFlags.Beam.Type is BeamType.SingleBeam)
426 # Special reconstruction for BLS physics
427 icf.addFlag("Tracking.doBLS", False)
428
429 # Special pass using truth information for pattern recognition, runs in parallel to/instead of the first pass
430 icf.addFlag("Tracking.doPseudoTracking", False)
431 # Special pass using truth information for pattern recognition, removes assumed in-efficencies applied to PseudoTracking
432 icf.addFlag("Tracking.doIdealPseudoTracking", False)
433
434
435
436 # The following flags are only used in ITk configurations
437
438 # Turn running of ITk FastTracking on and off
439 icf.addFlag("Tracking.doITkFastTracking", False)
440
441 # Turn running of Conversion second tracking pass on and off
442 icf.addFlag("Tracking.doITkConversion", lambda prevFlags: (
443 not prevFlags.Tracking.doITkFastTracking and prevFlags.Detector.EnableCalo))
444
445 # Allows TrigFastTrackFinder to be run as an offline algorithm by replacing
446 # SiSPSeededTrackFinder
447 icf.addFlag("Tracking.useITkFTF", False)
448
449 # GNN for ITk flags
450 from InDetGNNTracking.InDetGNNTrackingConfigFlags import createGNNTrackingConfigFlags
451 icf.join(createGNNTrackingConfigFlags())
452
453 # enable reco steps
454 icf.addFlag("Tracking.recoChain", [TrackingComponent.AthenaChain])
455
456
457
458 # Tracking pass flags
459
460 # InDet
461
462 from TrkConfig.TrackingPassFlags import (
463 createTrackingPassFlags, createHighPileupTrackingPassFlags,
464 createMinBiasTrackingPassFlags, createUPCTrackingPassFlags,
465 createHIPTrackingPassFlags, createR3LargeD0TrackingPassFlags,
466 createLowPtLargeD0TrackingPassFlags,
467 createLowPtTrackingPassFlags, createVeryLowPtTrackingPassFlags,
468 createLowPtRoITrackingPassFlags, createForwardTracksTrackingPassFlags,
469 createBeamGasTrackingPassFlags, createVtxLumiTrackingPassFlags, createVtxLumiHeavyIonTrackingPassFlags,
470 createVtxBeamSpotTrackingPassFlags, createCosmicsTrackingPassFlags,
471 createHeavyIonTrackingPassFlags, createPixelTrackingPassFlags,
472 createDisappearingTrackingPassFlags, createSCTTrackingPassFlags,
473 createTRTTrackingPassFlags, createTRTStandaloneTrackingPassFlags)
474
475 def primaryPass(flags):
476 if TrackingComponent.ActsChain in flags.Tracking.recoChain:
477 return PrimaryPassConfig.Acts
478 if flags.Beam.Type is BeamType.Cosmics:
479 return PrimaryPassConfig.Cosmics
480 elif flags.Reco.EnableHI:
481 if flags.Tracking.doUPC: #For UPC
482 return PrimaryPassConfig.UPC
483 elif flags.Tracking.doHIP: #For HIP
484 return PrimaryPassConfig.HIP
485 else: #For HI (default)
486 return PrimaryPassConfig.HeavyIon
487 elif flags.Tracking.doMinBias:
488 return PrimaryPassConfig.MinBias
489 else:
490 return PrimaryPassConfig.Default
491
492 icf.addFlag("Tracking.PrimaryPassConfig", lambda prevFlags:
493 primaryPass(prevFlags), type=PrimaryPassConfig)
494
495 # Set up for first tracking pass, updated for second passes
496 icf.addFlagsCategory("Tracking.MainPass",
497 createTrackingPassFlags, prefix=True)
498 icf.addFlagsCategory("Tracking.HighPileupPass",
499 createHighPileupTrackingPassFlags, prefix=True)
500 icf.addFlagsCategory("Tracking.UPCPass",
501 createUPCTrackingPassFlags, prefix=True)
502 icf.addFlagsCategory("Tracking.HIPPass",
503 createHIPTrackingPassFlags, prefix=True)
504 icf.addFlagsCategory("Tracking.MinBiasPass",
505 createMinBiasTrackingPassFlags, prefix=True)
506 icf.addFlagsCategory("Tracking.R3LargeD0Pass",
507 createR3LargeD0TrackingPassFlags, prefix=True)
508 icf.addFlagsCategory("Tracking.LowPtLargeD0Pass",
509 createLowPtLargeD0TrackingPassFlags, prefix=True)
510 icf.addFlagsCategory("Tracking.LowPtPass",
511 createLowPtTrackingPassFlags, prefix=True)
512 icf.addFlagsCategory("Tracking.VeryLowPtPass",
513 createVeryLowPtTrackingPassFlags, prefix=True)
514 icf.addFlagsCategory("Tracking.LowPtRoIPass",
515 createLowPtRoITrackingPassFlags, prefix=True)
516 icf.addFlagsCategory("Tracking.ForwardPass",
517 createForwardTracksTrackingPassFlags, prefix=True)
518 icf.addFlagsCategory("Tracking.BeamGasPass",
519 createBeamGasTrackingPassFlags, prefix=True)
520 icf.addFlagsCategory("Tracking.VtxLumiPass",
521 createVtxLumiTrackingPassFlags, prefix=True)
522 icf.addFlagsCategory("Tracking.VtxLumiHeavyIonPass",
523 createVtxLumiHeavyIonTrackingPassFlags, prefix=True)
524 icf.addFlagsCategory("Tracking.VtxBeamSpotPass",
525 createVtxBeamSpotTrackingPassFlags, prefix=True)
526 icf.addFlagsCategory("Tracking.CosmicsPass",
527 createCosmicsTrackingPassFlags, prefix=True)
528 icf.addFlagsCategory("Tracking.HeavyIonPass",
529 createHeavyIonTrackingPassFlags, prefix=True)
530 icf.addFlagsCategory("Tracking.PixelPass",
531 createPixelTrackingPassFlags, prefix=True)
532 icf.addFlagsCategory("Tracking.DisappearingPass",
533 createDisappearingTrackingPassFlags, prefix=True)
534 icf.addFlagsCategory("Tracking.SCTPass",
535 createSCTTrackingPassFlags, prefix=True)
536 icf.addFlagsCategory("Tracking.TRTPass",
537 createTRTTrackingPassFlags, prefix=True)
538 icf.addFlagsCategory("Tracking.TRTStandalonePass",
539 createTRTStandaloneTrackingPassFlags, prefix=True)
540
541 # ITk
542
543 from TrkConfig.TrackingPassFlags import (
544 createITkTrackingPassFlags, createITkLargeD0TrackingPassFlags,
545 createITkConversionTrackingPassFlags,
546 createITkFastTrackingPassFlags, createITkLargeD0FastTrackingPassFlags,
547 createITkFTFPassFlags, createITkFTFLargeD0PassFlags, createITkLowPtTrackingPassFlags,
548 createITkHeavyIonTrackingPassFlags)
549
550 def itkPrimaryPass(flags):
551 if flags.Tracking.useITkFTF:
552 return ITkPrimaryPassConfig.FTF
553 elif TrackingComponent.ActsChain in flags.Tracking.recoChain:
554 return ITkPrimaryPassConfig.Acts
555 elif TrackingComponent.ActsLegacyChain in flags.Tracking.recoChain:
556 return ITkPrimaryPassConfig.ActsLegacy
557 elif TrackingComponent.ActsHeavyIon in flags.Tracking.recoChain:
558 return ITkPrimaryPassConfig.ActsHeavyIon
559 elif flags.Tracking.doITkFastTracking:
560 return ITkPrimaryPassConfig.FastTracking
561 elif flags.Reco.EnableHI:
562 return ITkPrimaryPassConfig.HeavyIon
563 else:
564 return ITkPrimaryPassConfig.Default
565
566 icf.addFlag("Tracking.ITkPrimaryPassConfig", lambda prevFlags:
567 itkPrimaryPass(prevFlags), type=ITkPrimaryPassConfig)
568
569 icf.addFlagsCategory ("Tracking.ITkMainPass",
570 createITkTrackingPassFlags, prefix=True)
571 icf.addFlagsCategory ("Tracking.ITkLargeD0Pass",
572 createITkLargeD0TrackingPassFlags, prefix=True)
573 icf.addFlagsCategory ("Tracking.ITkConversionPass",
574 createITkConversionTrackingPassFlags, prefix=True)
575 icf.addFlagsCategory ("Tracking.ITkLowPtPass",
576 createITkLowPtTrackingPassFlags, prefix=True)
577 icf.addFlagsCategory ("Tracking.ITkFastPass",
578 createITkFastTrackingPassFlags, prefix=True)
579 icf.addFlagsCategory ("Tracking.ITkLargeD0FastPass",
580 createITkLargeD0FastTrackingPassFlags, prefix=True)
581 icf.addFlagsCategory ("Tracking.ITkFTFPass",
582 createITkFTFPassFlags, prefix=True)
583 icf.addFlagsCategory ("Tracking.ITkFTFLargeD0Pass",
584 createITkFTFLargeD0PassFlags, prefix=True)
585 icf.addFlagsCategory ("Tracking.ITkHeavyIonPass",
586 createITkHeavyIonTrackingPassFlags, prefix=True)
587
588 # Acts
589 from ActsConfig.ActsTrackingPassFlags import (
590 createActsTrackingPassFlags,
591 createActsLegacyTrackingPassFlags,
592 createActsLargeRadiusTrackingPassFlags,
593 createActsConversionTrackingPassFlags,
594 createActsLowPtTrackingPassFlags,
595 createActsValidateClustersTrackingPassFlags,
596 createActsValidateLargeRadiusStandaloneTrackingPassFlags,
597 createActsValidateTracksTrackingPassFlags,
598 createActsValidateAmbiguityResolutionTrackingPassFlags,
599 createActsHeavyIonTrackingPassFlags,
600 createEFValidateF100TrackingPassFlags,
601 createEFValidateF150TrackingPassFlags,
602 createACTSInnerDetectorTrackingPassFlags
603 )
604
605 icf.addFlagsCategory ("Tracking.ITkActsPass",
606 createActsTrackingPassFlags, prefix=True)
607 icf.addFlagsCategory ("Tracking.ActsPass",
608 createACTSInnerDetectorTrackingPassFlags, prefix=True)
609 icf.addFlagsCategory ("Tracking.ITkActsLegacyPass",
610 createActsLegacyTrackingPassFlags, prefix=True)
611 icf.addFlagsCategory ("Tracking.ITkActsLargeRadiusPass",
612 createActsLargeRadiusTrackingPassFlags, prefix=True)
613 icf.addFlagsCategory ('Tracking.ITkActsConversionPass',
614 createActsConversionTrackingPassFlags, prefix=True)
615 icf.addFlagsCategory ('Tracking.ITkActsLowPtPass',
616 createActsLowPtTrackingPassFlags, prefix=True)
617 icf.addFlagsCategory ("Tracking.ITkActsValidateClustersPass",
618 createActsValidateClustersTrackingPassFlags, prefix=True)
619 icf.addFlagsCategory ("Tracking.ITkActsValidateLargeRadiusStandalonePass",
620 createActsValidateLargeRadiusStandaloneTrackingPassFlags, prefix=True)
621 icf.addFlagsCategory ("Tracking.ITkActsValidateTracksPass",
622 createActsValidateTracksTrackingPassFlags, prefix=True)
623 icf.addFlagsCategory ("Tracking.ITkActsValidateAmbiguityResolutionPass",
624 createActsValidateAmbiguityResolutionTrackingPassFlags, prefix=True)
625 icf.addFlagsCategory ("Tracking.ITkActsHeavyIonPass",
626 createActsHeavyIonTrackingPassFlags, prefix=True)
627
628 # Acts F100 validation pass
629 icf.addFlagsCategory ("Tracking.ITkActsValidateF100Pass",
630 createEFValidateF100TrackingPassFlags, prefix=True)
631
632 # Acts F150 validation pass
633 icf.addFlagsCategory ("Tracking.ITkActsValidateF150Pass",
634 createEFValidateF150TrackingPassFlags, prefix=True)
635
636 # GNN
637 from InDetGNNTracking.InDetGNNTrackingFlags import createGNNTrackingPassFlags
638 icf.addFlagsCategory ("Tracking.ITkGNNPass",
639 createGNNTrackingPassFlags, prefix=True)
640 # FPGA
641 from TrkConfig.InDetFPGATrackingFlags import createFPGATrackingPassFlags
642 icf.addFlagsCategory ("Tracking.ITkFPGAPass",
643 createFPGATrackingPassFlags, prefix=True)
644
645
646
647
648 # Vertexing flags
649 from TrkConfig.VertexFindingFlags import createPriVertexingFlags
650 icf.addFlagsCategory("Tracking.PriVertex",
651 createPriVertexingFlags, prefix=True)
652
653 # Turn on the primary vertex reconstruction
654 icf.addFlag("Tracking.doVertexFinding",
655 lambda prevFlags: prevFlags.Beam.Type is not BeamType.Cosmics)
656 # Turn on the secondary vertex V0 finder
657 icf.addFlag("Tracking.doV0Finder", False)
658
659 icf.addFlag('Tracking.TruthClusterSplittingEff', 0.9)
660
661 # Dump GBTS training data: 0=no dump, 1=standard tracking, 2=LRT
662 icf.addFlag("Tracking.dumpGBTSTrainingData", 0)
663
664 return icf