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

Functions

 createRecoConfigFlags ()
 printRecoFlags (flags)
 recoRunArgsToFlags (runArgs, flags)
 _recoZDC (prevFlags)
 _hiModeChoice (prevFlags)

Variables

list _all_domains

Function Documentation

◆ _hiModeChoice()

python.RecoConfigFlags._hiModeChoice ( prevFlags)
protected

Definition at line 232 of file RecoConfigFlags.py.

232def _hiModeChoice(prevFlags):
233 if ("_hip" in prevFlags.Input.ProjectName):
234 return HIMode.HIP
235 elif ("_hi" in prevFlags.Input.ProjectName):
236 if (prevFlags.Input.TriggerStream == "physics_UPC"):
237 return HIMode.UPC
238 else:
239 return HIMode.HI
240 elif prevFlags.Input.isMC or prevFlags.Overlay.DataOverlay:
241 # it misses the run numbers for 2025, 2026
242 if prevFlags.Input.RunNumbers[0] in [460000, 488600]:
243 return HIMode.HI
244 # this is pO, OO, NeNe 2025
245 elif prevFlags.Input.RunNumbers[0] == 500700:
246 return HIMode.HIP
247 return HIMode.pp

◆ _recoZDC()

python.RecoConfigFlags._recoZDC ( prevFlags)
protected

Definition at line 219 of file RecoConfigFlags.py.

219def _recoZDC(prevFlags):
220 if prevFlags.Input.isMC:
221 return prevFlags.Detector.EnableZDC
222 else:
223 from AthenaConfiguration.AutoConfigFlags import GetFileMD
224 from libpyeformat_helper import SubDetector, DetectorMask
225 maskbits=GetFileMD(prevFlags.Input.Files).get("detectorMask",[0x0])
226 maskbits=maskbits[0] #Check the first input file
227 detMask=DetectorMask(maskbits & 0xFFFFFFFFFFFFFFFF, maskbits >> 64) #DetectorMask constructor swallows two 64bit ints
228 return detMask.is_set(SubDetector.FORWARD_ZDC)
229
230
231
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition hcg.cxx:130

◆ createRecoConfigFlags()

python.RecoConfigFlags.createRecoConfigFlags ( )
Return an AthConfigFlags object with required flags

Definition at line 27 of file RecoConfigFlags.py.

27def createRecoConfigFlags():
28 """Return an AthConfigFlags object with required flags"""
29 flags = AthConfigFlags()
30
31 # The various reconstruction domains/steps.
32 # Note that Calo and Muon System Reconstruction
33 # depend just on the Detector.EnableCalo and
34 # Detector.EnableMuon flags.
35
36 # Enable Tracking Reconstruction
37 flags.addFlag("Reco.EnableTracking",
38 lambda prevFlags: prevFlags.Detector.EnableID or
39 prevFlags.Detector.EnableITk)
40 # Enable HGTD Reconstruction
41 flags.addFlag("Reco.EnableHGTDExtension",
42 lambda prevFlags: prevFlags.Reco.EnableTracking and
43 prevFlags.Detector.EnableHGTD)
44 # Enable Electron/Photon (EGamma) Reconstruction
45 flags.addFlag("Reco.EnableEgamma",
46 lambda prevFlags: prevFlags.Detector.EnableCalo)
47 # Enable Caching of InDet TrackParticles extension to
48 # Calorimeter. Used by (Muon,PFlow,Tau)
49 flags.addFlag("Reco.EnableCaloExtension", lambda prevFlags: (
50 (
51 prevFlags.Reco.EnablePFlow
52 or prevFlags.Reco.EnableTau
53 or prevFlags.Reco.EnableCombinedMuon
54 )
55 and prevFlags.Detector.EnableCalo
56 and prevFlags.Reco.EnableTracking))
57 # Enable Combined (InDet+MS) Muon Reconstruction
58 flags.addFlag("Reco.EnableCombinedMuon",
59 lambda prevFlags: prevFlags.Detector.EnableMuon and
60 prevFlags.Reco.EnableTracking)
61 # Enable TrackOverlay Reconstruction
62 flags.addFlag("Reco.EnableTrackOverlay", lambda prevFlags: False)
63 # Enable PFlow Reconstruction
64 flags.addFlag("Reco.EnablePFlow", lambda prevFlags: (
65 prevFlags.Reco.EnableTracking
66 and prevFlags.Detector.EnableCalo
67 and prevFlags.Tracking.doVertexFinding))
68 # Enable Isolation Reconstruction
69 flags.addFlag("Reco.EnableIsolation", lambda prevFlags: (
70 prevFlags.Tracking.doVertexFinding
71 and (prevFlags.Reco.EnableCombinedMuon
72 or prevFlags.Reco.EnableEgamma)))
73 # Enable Jet Reconstruction
74 flags.addFlag("Reco.EnableJet", lambda prevFlags: (
75 prevFlags.Detector.EnableCalo
76 and prevFlags.Reco.EnableTracking
77 and prevFlags.Reco.EnableEgamma
78 and prevFlags.Reco.EnableCombinedMuon
79 and prevFlags.Reco.EnablePFlow
80 and prevFlags.Reco.HIMode is not HIMode.HI) or
81 prevFlags.Common.ProductionStep is ProductionStep.Derivation)
82
83 # Enable Tau Reconstruction
84 flags.addFlag("Reco.EnableTau", lambda prevFlags: prevFlags.Reco.EnableJet)
85 # Enable BTagging Reconstruction
86 flags.addFlag("Reco.EnableBTagging",
87 lambda prevFlags: prevFlags.Reco.EnableJet or
88 (prevFlags.Reco.EnableHI and prevFlags.HeavyIon.doJet))
89 # Enable MET Reconstruction
90 flags.addFlag("Reco.EnableMet", lambda prevFlags: (
91 prevFlags.Reco.EnableJet
92 and prevFlags.Reco.EnableTau))
93 # Enable the building of links between the newly
94 # created jet constituents (GlobalFE)
95 # and electrons,photons,muons and taus
96 flags.addFlag("Reco.EnableGlobalFELinking",
97 lambda prevFlags: prevFlags.Reco.EnableJet and
98 prevFlags.Reco.EnableTau and prevFlags.Reco.EnablePFlow and
99 prevFlags.Reco.EnableEgamma and
100 prevFlags.Reco.EnableCombinedMuon)
101 # Enable association of calorimeter cells to Tracks
102 flags.addFlag("Reco.EnableTrackCellAssociation",
103 lambda prevFlags: prevFlags.Detector.EnableCalo and
104 prevFlags.Reco.EnableTracking)
105 # Enable creation of "Rings" of calorimeter cells
106 flags.addFlag("Reco.EnableCaloRinger",
107 lambda prevFlags: prevFlags.Reco.EnableEgamma and
108 not prevFlags.Reco.EnableHI)
109
110 # This flags enables trigger data decoding (not trigger simulation)
111 # EDMVersion > 0 check prevents this flag being true in jobs before
112 # the trigger has executed, or where it was not executed.
113 flags.addFlag("Reco.EnableTrigger",
114 lambda prevFlags: prevFlags.Trigger.EDMVersion > 0)
115
116 # enable automatically for HI data
117 flags.addFlag("Reco.EnableHI",
118 lambda prevFlags: prevFlags.Reco.HIMode is not HIMode.pp)
119
120 flags.addFlag("Reco.HIMode", _hiModeChoice, type=HIMode)
121
122 # Enable alg for decorating EventInfo with BeamSpot info
123 # (maybe not always available for calibration runs, etc)
124 flags.addFlag("Reco.EnableBeamSpotDecoration",
125 lambda prevFlags: not prevFlags.Common.isOnline)
126
127 # Enable ZDC reconstruction if ZDC data is in Bytestream or simulated
128 flags.addFlag("Reco.EnableZDC",_recoZDC)
129
130 # Enable common thinning and other post-processing
131 flags.addFlag("Reco.EnablePostProcessing", True)
132 flags.addFlag("Reco.PostProcessing.ThinNegativeClusters",
133 lambda prevFlags: prevFlags.Reco.EnablePostProcessing and
134 prevFlags.Detector.EnableCalo and
135 prevFlags.Output.doWriteAOD and
136 prevFlags.Calo.Thin.NegativeEnergyCaloClusters and
137 not prevFlags.Reco.EnableHI)
138
139 flags.addFlag("Reco.PostProcessing.TRTAloneThinning",
140 lambda prevFlags: prevFlags.Reco.EnablePostProcessing and
141 prevFlags.Detector.EnableID and
142 prevFlags.Output.doWriteAOD)
143
144 flags.addFlag("Reco.PostProcessing.GeantTruthThinning",
145 lambda prevFlags: prevFlags.Reco.EnablePostProcessing and
146 prevFlags.Input.isMC and
147 prevFlags.Output.doWriteAOD)
148 flags.addFlag("Reco.PostProcessing.InDetForwardTrackParticleThinning",
149 lambda prevFlags: prevFlags.Reco.EnablePostProcessing and
150 prevFlags.Reco.EnableTracking and
151 prevFlags.Reco.EnableCombinedMuon and
152 prevFlags.Output.doWriteAOD)
153 return flags
154
155

◆ printRecoFlags()

python.RecoConfigFlags.printRecoFlags ( flags)

Definition at line 156 of file RecoConfigFlags.py.

156def printRecoFlags(flags):
157 # setup logging
158 from AthenaCommon.Logging import logging
159 log = logging.getLogger('RecoSteering')
160
161 # load flags
162 flags._loadDynaFlags('Detector')
163 flags._loadDynaFlags('Reco')
164
165 # generate common formatting string
166 item_len = 7
167 format_common = f'%-{item_len}s'
168
169 domain_len = 7
170 for d in _all_domains:
171 domain_len = max(domain_len, len(d) + 2)
172
173 enabled = []
174 for d in _all_domains:
175 if flags.hasFlag(f'Detector.Enable{d}'):
176 name = f'Detector.Enable{d}'
177 elif flags.hasFlag(f'Reco.Enable{d}'):
178 name = f'Reco.Enable{d}'
179 else:
180 raise RuntimeError(f'Unknown reconstruction domain {d}')
181
182 if flags[name] is not False:
183 enabled.append('ON')
184 else:
185 enabled.append('--')
186
187 format_header = f'%{domain_len}s ' + format_common
188 format = f'%{domain_len}s : ' + format_common
189 data = [_all_domains, enabled]
190 data = list(map(list, zip(*data)))
191
192 # print header rows
193 log.info(format_header, *(['', 'Enbl.']))
194 # print data
195 for row in data:
196 log.info(format, *row)
197
198
#define max(a, b)
Definition cfImp.cxx:41
STL class.

◆ recoRunArgsToFlags()

python.RecoConfigFlags.recoRunArgsToFlags ( runArgs,
flags )

Definition at line 199 of file RecoConfigFlags.py.

199def recoRunArgsToFlags(runArgs, flags):
200 if hasattr(runArgs, "runNumber") and not flags.Input.isMC and not flags.Overlay.DataOverlay and runArgs.runNumber not in flags.Input.RunNumbers:
201 flags.Input.RunNumbers = [runArgs.runNumber]
202 flags.Input.OverrideRunNumber = True
203
204 if hasattr(runArgs, "projectName"):
205 flags.Input.projectName = runArgs.projectName
206
207 # TODO: not handled yet
208 # --autoConfiguration
209 # --trigStream
210 # --topOptions
211 # --valid
212
213 # --AMITag
214 # --userExec
215 # --triggerConfig
216 # --trigFilterList
217
218

Variable Documentation

◆ _all_domains

list python.RecoConfigFlags._all_domains
protected
Initial value:
1= [
2 "Trigger",
3 "BeamSpotDecoration",
4 "Calo", "Tracking",
5 "HGTDExtension",
6 "Muon", "CombinedMuon",
7 "Egamma",
8 "Isolation",
9 "CaloExtension",
10 "TrackCellAssociation",
11 "PFlow", "Jet", "BTagging",
12 "Tau",
13 "GlobalFELinking",
14 "Met",
15 "CaloRinger",
16 "AFP",
17 "HI",
18 "PostProcessing",
19 "TrackOverlay",
20]

Definition at line 5 of file RecoConfigFlags.py.