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

Classes

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

Functions

 createTrackingConfigFlags ()

Function Documentation

◆ createTrackingConfigFlags()

createTrackingConfigFlags ( )

Definition at line 64 of file TrkConfigFlags.py.

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