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

Functions

bool isPrimaryPass (flags)
bool isFastPrimaryPass (flags)
bool isValidationPass (flags)
bool isProductionPass (flags)
bool primaryPassUsesActs (flags)
str primaryPassExtension (flags)
list extractTrackingPasses (flags)
list[str] getListOfGeneratedTrackParticles (flags)

Function Documentation

◆ extractTrackingPasses()

list python.ITkActsHelpers.extractTrackingPasses ( flags)

Definition at line 35 of file ITkActsHelpers.py.

35def extractTrackingPasses(flags) -> list:
36 # Function for extracting the requested tracking passes that need to be scheduled
37 trackingPasses = []
38
39 # Check there is only one chain
40 # for the time being we still technically allow for a list, but we should move to a single value eventually
41 if len(flags.Tracking.recoChain) != 1:
42 raise ValueError(f"Conflicting reco configuration: Tracking.recoChain should have only one element but we found {flags.Tracking.recoChain}")
43
44 # Quick check about fast tracking configuration
45 from TrkConfig.TrkConfigFlags import ITkPrimaryPassConfig
46 if flags.Tracking.ITkPrimaryPassConfig is ITkPrimaryPassConfig.Acts:
47 if not flags.Tracking.doITkFastTracking:
48 raise ValueError(f"Main pass is set to Acts Fast Tracking but Tracking.doITkFastTracking is set to {flags.Tracking.doITkFastTracking}")
49 else:
50 if flags.Tracking.doITkFastTracking:
51 raise ValueError(f"Main pass is NOT set to Fast Tracking but Tracking.doITkFastTracking is set to {flags.Tracking.doITkFastTracking}")
52
53 # Check the ambiguity resolution strategy
54 if flags.Acts.doAmbiguityResolution:
55 from ActsConfig.ActsConfigFlags import AmbiguitySolverMode
56 # If ambiguity resolution is requested, it means we want to schedule the ambiguity resolution algorithm
57 # this means that we must have AmbiguitySolverMode.OUTSIDE_TF
58 if flags.Acts.AmbiguitySolverMode is not AmbiguitySolverMode.OUTSIDE_TF:
59 raise ValueError(f"Conflicting reco configuration: Acts.doAmbiguityResolution has been requested and this will schedule the ACTS ambiguity solver algorithm, yet the ambiguity mode (set to {flags.Acts.AmbiguitySolverMode}) is not compatible with this.")
60
61
62 # Primary pass
63 trackingPasses += [flags.cloneAndReplace(
64 "Tracking.ActiveConfig",
65 f"Tracking.{flags.Tracking.ITkPrimaryPassConfig.value}Pass")]
66
67 # Conversion pass
68 if flags.Acts.doITkConversion:
69 # Check that we can schedule the conversion
70 if not flags.Detector.EnableCalo:
71 raise ValueError("Problem in the job configuration: required reconstruction of photon conversion tracks but Calorimeter Detector is not enabled")
72 trackingPasses += [flags.cloneAndReplace(
73 "Tracking.ActiveConfig",
74 "Tracking.ITkActsConversionPass")]
75
76 # Large Radius pass
77 if flags.Acts.doLargeRadius:
78 trackingPasses += [flags.cloneAndReplace(
79 "Tracking.ActiveConfig",
80 "Tracking.ITkActsLargeRadiusPass")]
81
82
83 # Low pT pass
84 if flags.Acts.doLowPt:
85 trackingPasses += [flags.cloneAndReplace(
86 "Tracking.ActiveConfig",
87 "Tracking.ITkActsLowPtPass")]
88
89 print("List of scheduled passes:")
90 for trackingPass in trackingPasses:
91 print(f'- {trackingPass.Tracking.ActiveConfig.extension}')
92
93 # Check if we found a primary pass (and only one)
94 nPrimaryPasses = 0
95 for current_flags in trackingPasses:
96 if isPrimaryPass(current_flags):
97 nPrimaryPasses += 1
98 if nPrimaryPasses != 1:
99 raise ValueError(f"Problem in the job configuration: exactly one primary pass is required for a proper configuration, but we found {nPrimaryPasses} instead!")
100
101 return trackingPasses
102
void print(char *figname, TCanvas *c1)

◆ getListOfGeneratedTrackParticles()

list[str] python.ITkActsHelpers.getListOfGeneratedTrackParticles ( flags)

Definition at line 103 of file ITkActsHelpers.py.

103def getListOfGeneratedTrackParticles(flags) -> list[str]:
104 generateTrackCollections = ["InDetTrackParticles"]
105
106 # loop on tracking passes
107 scheduledTrackingPasses: list = extractTrackingPasses(flags)
108 for currentFlags in scheduledTrackingPasses:
109 # Add the seed tracks
110 if currentFlags.Tracking.ActiveConfig.storeTrackSeeds:
111 # pixel seeds
112 generatePixelSegments = currentFlags.Detector.EnableITkPixel
113 generateStripSegments = currentFlags.Detector.EnableITkStrip
114
115 # For conversion pass we do not process pixels
116 if currentFlags.Tracking.ActiveConfig.extension in ["ActsConversion", "ActsLargeRadius"]:
117 generatePixelSegments = False
118 # For main pass disable strips if fast tracking configuration
119 elif isFastPrimaryPass(currentFlags):
120 generateStripSegments = False
121
122 if generatePixelSegments:
123 generateTrackCollections += [f'SiSPSeedSegments{currentFlags.Tracking.ActiveConfig.extension}PixelTrackParticles']
124 if generateStripSegments:
125 generateTrackCollections += [f'SiSPSeedSegments{currentFlags.Tracking.ActiveConfig.extension}StripTrackParticles']
126 if generatePixelSegments and generateStripSegments:
127 generateTrackCollections += [f'SiSPSeedSegments{currentFlags.Tracking.ActiveConfig.extension}TrackParticles']
128
129 # Add CKF tracks
130 if currentFlags.Tracking.ActiveConfig.storeSiSPSeededTracks:
131 generateTrackCollections += [f'SiSPSeededTracks{currentFlags.Tracking.ActiveConfig.extension}TrackParticles']
132
133 # Add tracks after ambi
134 # this is necessary only if ambiguity resolution is run and we
135 # store track particles in a separate container w.r.t InDetTrackParticles
136 if currentFlags.Acts.doAmbiguityResolution and currentFlags.Tracking.ActiveConfig.storeSeparateContainer:
137 generateTrackCollections += [f'InDet{currentFlags.Tracking.ActiveConfig.extension}TrackParticles']
138
139 print('Here is the list of generated track particle collections:')
140 for collection in generateTrackCollections:
141 print(f'- {collection}')
142
143 return generateTrackCollections

◆ isFastPrimaryPass()

bool python.ITkActsHelpers.isFastPrimaryPass ( flags)

Definition at line 13 of file ITkActsHelpers.py.

13def isFastPrimaryPass(flags) -> bool:
14 if flags.hasCategory("Tracking.ActiveConfig") and flags.Tracking.ActiveConfig.extension in ["ActsValidateF100", "ActsValidateF150"] and flags.Tracking.doITkFastTracking:
15 return True
16 return flags.Tracking.doITkFastTracking and isPrimaryPass(flags)
17

◆ isPrimaryPass()

bool python.ITkActsHelpers.isPrimaryPass ( flags)

Definition at line 3 of file ITkActsHelpers.py.

3def isPrimaryPass(flags) -> bool:
4 if not flags.hasCategory("Tracking.ActiveConfig"):
5 return False
6 # Support for non ACTS passes, that do not respect the convention
7 # This comes from Athena legacy passes
8 if flags.Tracking.ActiveConfig.extension in ["", "HeavyIon"]:
9 return True
10 # For ACTS the convention is respected: ITk{extension} + Pass
11 return f"ITk{flags.Tracking.ActiveConfig.extension}" == flags.Tracking.ITkPrimaryPassConfig.value
12

◆ isProductionPass()

bool python.ITkActsHelpers.isProductionPass ( flags)

Definition at line 21 of file ITkActsHelpers.py.

21def isProductionPass(flags) -> bool:
22 return not isValidationPass(flags)
23

◆ isValidationPass()

bool python.ITkActsHelpers.isValidationPass ( flags)

Definition at line 18 of file ITkActsHelpers.py.

18def isValidationPass(flags) -> bool:
19 return "Validate" in flags.Tracking.ActiveConfig.extension
20

◆ primaryPassExtension()

str python.ITkActsHelpers.primaryPassExtension ( flags)

Definition at line 30 of file ITkActsHelpers.py.

30def primaryPassExtension(flags) -> str:
31 # we rely on the fact that flags.Tracking.ITkPrimaryPassConfig.value is
32 # equal to ITk{extension}
33 return flags.Tracking.ITkPrimaryPassConfig.value.replace("ITk", "")
34

◆ primaryPassUsesActs()

bool python.ITkActsHelpers.primaryPassUsesActs ( flags)

Definition at line 24 of file ITkActsHelpers.py.

24def primaryPassUsesActs(flags) -> bool:
25 from TrkConfig.TrkConfigFlags import ITkPrimaryPassConfig
26 return flags.Tracking.ITkPrimaryPassConfig in [ITkPrimaryPassConfig.Acts, \
27 ITkPrimaryPassConfig.ActsLegacy, \
28 ITkPrimaryPassConfig.ActsHeavyIon]
29