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