14def fromRunArgs(runArgs):
15 from AthenaCommon.Logging import logging
16 log = logging.getLogger('RAWtoALL')
17 log.info('****************** STARTING Reconstruction (RAWtoALL) *****************')
18
19 log.info('**** Transformation run arguments')
20 log.info(
str(runArgs))
21
22 import time
23 timeStart = time.time()
24
25 log.info('**** Setting-up configuration flags')
26 from AthenaConfiguration.AllConfigFlags import initConfigFlags
27 flags = initConfigFlags()
28
29 flags.Exec.EventTimeOut = 3600*Units.second
30
31 commonRunArgsToFlags(runArgs, flags)
32
33
34 if hasattr(runArgs, 'detectors'):
35 detectors = runArgs.detectors
36 else:
37 detectors = None
38
39
40
41
43 inputsDRAW = [prop for prop in dir(runArgs) if prop.startswith('inputDRAW') and prop.endswith('File')]
44 if hasattr(runArgs, 'inputBSFile'):
45 if inputsDRAW:
46 raise RuntimeError('Impossible to run RAWtoALL with input BS and DRAW files (one input type only!)')
47 flags.Input.Files = runArgs.inputBSFile
48 if len(inputsDRAW) == 1:
49 flags.Input.Files = getattr(runArgs, inputsDRAW[0])
50 elif len(inputsDRAW) > 1:
51 raise RuntimeError('Impossible to run RAWtoALL with multiple input DRAW files (viz.: {0})'.format(inputsDRAW))
52
53
54 if hasattr(runArgs, 'inputRDOFile'):
55 flags.Input.Files = runArgs.inputRDOFile
56 if hasattr(runArgs, 'inputRDO_TRIGFile'):
57 flags.Input.Files = runArgs.inputRDO_TRIGFile
58
59
60
61
62
63 if hasattr(runArgs, 'outputESDFile'):
64 flags.Output.ESDFileName = runArgs.outputESDFile
65 log.info("---------- Configured ESD output")
66
67 if hasattr(runArgs, 'outputAODFile'):
68 flags.Output.AODFileName = runArgs.outputAODFile
69 log.info("---------- Configured AOD output")
70
71 if hasattr(runArgs, 'outputHISTFile'):
72 flags.Output.HISTFileName = runArgs.outputHISTFile
73 flags.DQ.doMonitoring = True
74 log.info("---------- Configured HIST output")
75
76 if hasattr(runArgs, 'outputHIST_R2AFile'):
77 flags.Output.HISTFileName = runArgs.outputHIST_R2AFile
78 flags.DQ.doMonitoring = True
79 log.info("---------- Configured HIST_R2A output")
80
81 if hasattr(runArgs, 'outputDAOD_IDTIDEFile'):
82 flagString = 'Output.DAOD_IDTIDEFileName'
83 flags.addFlag(flagString, runArgs.outputDAOD_IDTIDEFile)
84 flags.Output.doWriteDAOD = True
85 flags.addFlag('Output.doWriteDAOD_IDTIDE', True)
86 log.info("---------- Configured DAOD_IDTIDE output")
87
88 if hasattr(runArgs, 'outputDAOD_PIXELVALIDFile'):
89 flagString = 'Output.DAOD_PIXELVALIDFileName'
90 flags.addFlag(flagString, runArgs.outputDAOD_PIXELVALIDFile)
91 flags.Output.doWriteDAOD = True
92 flags.addFlag('Output.doWriteDAOD_PIXELVALID', True)
93 log.info("---------- Configured DAOD_PIXELVALID output")
94
95 if hasattr(runArgs, 'outputDAOD_IDTRKVALIDFile'):
96 flagString = 'Output.DAOD_IDTRKVALIDFileName'
97 flags.addFlag(flagString, runArgs.outputDAOD_IDTRKVALIDFile)
98 flags.Output.doWriteDAOD = True
99 flags.addFlag('Output.doWriteDAOD_IDTRKVALID', True)
100 log.info("---------- Configured DAOD_IDTRKVALID output")
101
102 if hasattr(runArgs, 'outputDAOD_SCTVALIDFile'):
103 flagString = 'Output.DAOD_SCTVALIDFileName'
104 flags.addFlag(flagString, runArgs.outputDAOD_SCTVALIDFile)
105 flags.Output.doWriteDAOD = True
106 flags.addFlag('Output.doWriteDAOD_SCTVALID', True)
107 log.info("---------- Configured DAOD_SCTVALID output")
108
109 if hasattr(runArgs, 'outputDESDM_MCPFile'):
110 flagString = 'Output.DESDM_MCPFileName'
111 flags.addFlag(flagString, runArgs.outputDESDM_MCPFile)
112 flags.Output.doWriteDAOD = True
113 flags.addFlag('Output.doWriteDESDM_MCP', True)
114 log.info("---------- Configured DESDM_MCP output")
115
116 if hasattr(runArgs, 'outputDESDM_EXOTHIPFile'):
117 flagString = 'Output.DESDM_EXOTHIPFileName'
118 flags.addFlag(flagString, runArgs.outputDESDM_EXOTHIPFile)
119 flags.Output.doWriteDAOD = True
120 flags.addFlag('Output.doWriteDESDM_EXOTHIP', True)
121 log.info("---------- Configured DESDM_EXOTHIP output")
122
123 if hasattr(runArgs, 'outputDRAW_ZMUMUFile'):
124 flagString = 'Output.DRAW_ZmumuFileName'
125 flags.addFlag(flagString, runArgs.outputDRAW_ZMUMUFile)
126 flags.Output.doWriteBS = True
127 log.info("---------- Configured DRAW ZMUMU output")
128
129 if hasattr(runArgs, 'outputDRAW_EGZFile'):
130 flagString = 'Output.DRAW_EGZFileName'
131 flags.addFlag(flagString, runArgs.outputDRAW_EGZFile)
132 flags.Output.doWriteBS = True
133 log.info("---------- Configured DRAW_EGZ output")
134
135 if hasattr(runArgs, 'outputDRAW_TAULHFile'):
136 flagString = 'Output.DRAW_TAULHFileName'
137 flags.addFlag(flagString, runArgs.outputDRAW_TAULHFile)
138 flags.Output.doWriteBS = True
139 log.info("---------- Configured DRAW_TAULH output")
140
141 if hasattr(runArgs, 'outputDRAW_JETFile'):
142 flagString = 'Output.DRAW_JETFileName'
143 flags.addFlag(flagString, runArgs.outputDRAW_JETFile)
144 flags.Output.doWriteBS = True
145 log.info("---------- Configured DRAW_JET output")
146
147 if hasattr(runArgs, 'outputDAOD_L1CALO1File'):
148 flagString = 'Output.DAOD_L1CALO1FileName'
149 flags.addFlag(flagString, runArgs.outputDAOD_L1CALO1File)
150 flags.Output.doWriteDAOD = True
151 flags.addFlag('Output.doWriteDAOD_L1CALO1', True)
152 log.info("---------- Configured DAOD_L1CALO1 output")
153
154 if hasattr(runArgs, 'outputDAOD_L1CALO2File'):
155 flagString = 'Output.DAOD_L1CALO2FileName'
156 flags.addFlag(flagString, runArgs.outputDAOD_L1CALO2File)
157 flags.Output.doWriteDAOD = True
158 flags.addFlag('Output.doWriteDAOD_L1CALO2', True)
159 log.info("---------- Configured DAOD_L1CALO2 output")
160
161 if hasattr(runArgs, 'outputDESDM_PHOJETFile'):
162 flagString = 'Output.DESDM_PHOJETFileName'
163 flags.addFlag(flagString, runArgs.outputDESDM_PHOJETFile)
164 flags.Output.doWriteDAOD = True
165 flags.addFlag('Output.doWriteDESDM_PHOJET', True)
166 log.info("---------- Configured DESDM_PHOJET output")
167
168 if hasattr(runArgs, 'outputDESDM_ALLCELLSFile'):
169 streamName = 'DESDM_ALLCELLS'
170 flags.addFlag(f'Output.{streamName}FileName', runArgs.outputDESDM_ALLCELLSFile)
171 flags.addFlag(f'Output.doWrite{streamName}', True)
172 log.info("---------- Configured "+streamName+" output")
173
174
175 from RecJobTransforms.RecoConfigFlags import recoRunArgsToFlags
176 recoRunArgsToFlags(runArgs, flags)
177
178 from AthenaConfiguration.Enums import ProductionStep
179 flags.Common.ProductionStep=ProductionStep.Reconstruction
180
181
182 from AthenaConfiguration.DetectorConfigFlags import setupDetectorFlags
183 setupDetectorFlags(flags, detectors, use_metadata=True, toggle_geometry=True, keep_beampipe=True)
184
185 from RecJobTransforms.RecoConfigFlags import printRecoFlags
186 printRecoFlags(flags)
187
188
189
190
191
192
193
194
195
196
197 from PerfMonComps.PerfMonConfigHelpers import setPerfmonFlagsFromRunArgs
198 setPerfmonFlagsFromRunArgs(flags, runArgs)
199
200
201 processPreInclude(runArgs, flags)
202
203
204 processPreExec(runArgs, flags)
205
206
207 flags.fillFromArgs()
208
209
210 if flags.Exec.DebugStage != '':
211 flags.Exec.EventTimeOut = 0
212
213
214 flags.lock()
215
216
217 from RecJobTransforms.RecoSteering import RecoSteering
218 cfg = RecoSteering(flags)
219
220
221 cfg.flagPerfmonDomain('PerfDPD')
222
223 for flag in [key for key in flags._flagdict.keys() if ("Output.DAOD_IDTIDEFileName" in key)]:
224 from DerivationFrameworkInDet.IDTIDE import IDTIDECfg
225 cfg.merge(IDTIDECfg(flags))
226 log.info("---------- Configured IDTIDE perfDPD")
227
228
229 for flag in [key for key in flags._flagdict.keys() if ("Output.DAOD_PIXELVALIDFileName" in key)]:
230 from DerivationFrameworkInDet.PIXELVALID import PixelVALIDCfg
231 cfg.merge(PixelVALIDCfg(flags))
232 log.info("---------- Configured PixelVALID perfDPD")
233
234
235 for flag in [key for key in flags._flagdict.keys() if ("Output.DAOD_SCTVALIDFileName" in key)]:
236 from InDetPrepRawDataToxAOD.SCTVALID import SCTVALIDCfg
237 cfg.merge(SCTVALIDCfg(flags))
238 log.info("---------- Configured SCTVALID perfDPD")
239
240
241 for flag in [key for key in flags._flagdict.keys() if ("Output.DAOD_IDTRKVALIDFileName" in key)]:
242 from DerivationFrameworkInDet.IDTRKVALID import IDTRKVALIDCfg
243 cfg.merge(IDTRKVALIDCfg(flags))
244 log.info("---------- Configured IDTRKVALID perfDPD")
245
246
247 for flag in [key for key in flags._flagdict.keys() if ("Output.DESDM_MCPFileName" in key)]:
248 from PrimaryDPDMaker.DESDM_MCP import DESDM_MCPCfg
249 cfg.merge(DESDM_MCPCfg(flags))
250 log.info("---------- Configured DESDM_MCP perfDPD")
251
252
253 for flag in [key for key in flags._flagdict.keys() if ("Output.DESDM_EXOTHIPFileName" in key)]:
254 from PrimaryDPDMaker.DESDM_EXOTHIP import DESDM_EXOTHIPCfg
255 cfg.merge(DESDM_EXOTHIPCfg(flags))
256 log.info("---------- Configured DESDM_EXOTHIP perfDPD")
257
258
259 for flag in [key for key in flags._flagdict.keys() if ("Output.DRAW_ZmumuFileName" in key)]:
260 from PrimaryDPDMaker.DRAW_ZMUMU import DRAW_ZmumuCfg
261 cfg.merge(DRAW_ZmumuCfg(flags))
262 log.info("---------- Configured DRAW_ZMUMU perfDPD")
263
264
265 for flag in [key for key in flags._flagdict.keys() if ("Output.DRAW_EGZFileName" in key)]:
266 from PrimaryDPDMaker.DRAW_EGZ import DRAW_EGZCfg
267 cfg.merge(DRAW_EGZCfg(flags))
268 log.info("---------- Configured DRAW_EGZ perfDPD")
269
270
271 for flag in [key for key in flags._flagdict.keys() if ("Output.DRAW_TAULHFileName" in key)]:
272 from PrimaryDPDMaker.DRAW_TAULH import DRAW_TAULHCfg
273 cfg.merge(DRAW_TAULHCfg(flags))
274 log.info("---------- Configured DRAW_TAULH perfDPD")
275
276
277 for flag in [key for key in flags._flagdict.keys() if ("Output.DRAW_JETFileName" in key)]:
278 from PrimaryDPDMaker.DRAW_JET import DRAW_JETCfg
279 cfg.merge(DRAW_JETCfg(flags))
280 log.info("---------- Configured DRAW_JET perfDPD")
281
282
283 for flag in [key for key in flags._flagdict.keys() if ("Output.DAOD_L1CALO1FileName" in key)]:
284 from DerivationFrameworkL1Calo.L1CALO1 import L1CALO1Cfg
285 cfg.merge(L1CALO1Cfg(flags))
286 log.info("---------- Configured L1CALO1 perfDPD")
287
288 for flag in [key for key in flags._flagdict.keys() if ("Output.DAOD_L1CALO2FileName" in key)]:
289 from DerivationFrameworkL1Calo.L1CALO2 import L1CALO2Cfg
290 cfg.merge(L1CALO2Cfg(flags))
291 log.info("---------- Configured L1CALO2 perfDPD")
292
293
294 for flag in [key for key in flags._flagdict.keys() if ("Output.DESDM_PHOJETFileName" in key)]:
295 from PrimaryDPDMaker.DESDM_PHOJET import DESDM_PHOJETCfg
296 cfg.merge(DESDM_PHOJETCfg(flags))
297 log.info("---------- Configured PHOJET perfDPD")
298
299
300 for flag in [key for key in flags._flagdict.keys() if ("Output.DESDM_ALLCELLSFileName" in key)]:
301 from PrimaryDPDMaker.DESDM_ALLCELLS import DESDM_ALLCELLSCfg
302 cfg.merge(DESDM_ALLCELLSCfg(flags))
303 log.info("---------- Configured ALLCELLS perfDPD")
304
305
306 from DigitizationConfig.DigitizationSteering import DigitizationMessageSvcCfg
307 cfg.merge(DigitizationMessageSvcCfg(flags))
308
309
310 processPostInclude(runArgs, flags, cfg)
311
312
313 processPostExec(runArgs, flags, cfg)
314
315 from AthenaConfiguration.Utils import setupLoggingLevels
316 setupLoggingLevels(flags, cfg)
317
318
319 from EventInfoMgt.TagInfoMgrConfig import TagInfoMgrCfg
320 cfg.merge(
321 TagInfoMgrCfg(
322 flags,
323 tagValuePairs={
324 "beam_type": flags.Beam.Type.value,
325 "beam_energy":
str(int(flags.Beam.Energy)),
326 "triggerStreamOfFile": ""
327 if flags.Input.isMC
328 else flags.Input.TriggerStream,
329 "project_name": "IS_SIMULATION"
330 if flags.Input.isMC
331 else flags.Input.ProjectName,
332 f"AtlasRelease_{runArgs.trfSubstepName}": flags.Input.Release or "n/a",
333 },
334 )
335 )
336 if not flags.Input.isMC and flags.Input.DataYear > 0:
337 cfg.merge(TagInfoMgrCfg(flags, tagValuePairs={
338 "data_year":
str(flags.Input.DataYear)
339 }))
340
341
342 from PyUtils.AMITagHelperConfig import AMITagCfg
343 cfg.merge(AMITagCfg(flags, runArgs))
344
345
346 if flags.PerfMon.doFullMonMT:
347 cfg.printPerfmonDomains()
348
349 timeConfig = time.time()
350 log.info("configured in %d seconds", timeConfig - timeStart)
351
352 log.info("Configured according to flag values listed below")
353 flags.dump()
354
355
356 from AthenaConfiguration.AccumulatorCache import AccumulatorDecorator
357 AccumulatorDecorator.printStats()
358
359
360 sc = cfg.run()
361 timeFinal = time.time()
362 log.info("Run RAWtoALL_skeleton in %d seconds (running %d seconds)", timeFinal - timeStart, timeFinal - timeConfig)
363
364 import sys
365 sys.exit(not sc.isSuccess())