15 from AthenaCommon.Logging
import logging
16 log = logging.getLogger(
'RAWtoALL')
17 log.info(
'****************** STARTING Reconstruction (RAWtoALL) *****************')
19 log.info(
'**** Transformation run arguments')
20 log.info(str(runArgs))
23 timeStart = time.time()
25 from PyUtils.Helpers
import ROOTSetup
28 log.info(
'**** Setting-up configuration flags')
29 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
30 flags = initConfigFlags()
32 flags.Exec.EventTimeOut = 3600*Units.second
34 commonRunArgsToFlags(runArgs, flags)
37 if hasattr(runArgs,
'detectors'):
38 detectors = runArgs.detectors
46 inputsDRAW = [prop
for prop
in dir(runArgs)
if prop.startswith(
'inputDRAW')
and prop.endswith(
'File')]
47 if hasattr(runArgs,
'inputBSFile'):
49 raise RuntimeError(
'Impossible to run RAWtoALL with input BS and DRAW files (one input type only!)')
50 flags.Input.Files = runArgs.inputBSFile
51 if len(inputsDRAW) == 1:
52 flags.Input.Files = getattr(runArgs, inputsDRAW[0])
53 elif len(inputsDRAW) > 1:
54 raise RuntimeError(
'Impossible to run RAWtoALL with multiple input DRAW files (viz.: {0})'.format(inputsDRAW))
57 if hasattr(runArgs,
'inputRDOFile'):
58 flags.Input.Files = runArgs.inputRDOFile
59 if hasattr(runArgs,
'inputRDO_TRIGFile'):
60 flags.Input.Files = runArgs.inputRDO_TRIGFile
66 if hasattr(runArgs,
'outputESDFile'):
67 flags.Output.ESDFileName = runArgs.outputESDFile
68 log.info(
"---------- Configured ESD output")
70 if hasattr(runArgs,
'outputAODFile'):
71 flags.Output.AODFileName = runArgs.outputAODFile
72 log.info(
"---------- Configured AOD output")
74 if hasattr(runArgs,
'outputHISTFile'):
75 flags.Output.HISTFileName = runArgs.outputHISTFile
76 flags.DQ.doMonitoring =
True
77 log.info(
"---------- Configured HIST output")
79 if hasattr(runArgs,
'outputHIST_R2AFile'):
80 flags.Output.HISTFileName = runArgs.outputHIST_R2AFile
81 flags.DQ.doMonitoring =
True
82 log.info(
"---------- Configured HIST_R2A output")
84 if hasattr(runArgs,
'outputDAOD_IDTIDEFile'):
85 flagString =
'Output.DAOD_IDTIDEFileName'
86 flags.addFlag(flagString, runArgs.outputDAOD_IDTIDEFile)
87 flags.Output.doWriteDAOD =
True
88 flags.addFlag(
'Output.doWriteDAOD_IDTIDE',
True)
89 log.info(
"---------- Configured DAOD_IDTIDE output")
91 if hasattr(runArgs,
'outputDAOD_PIXELVALIDFile'):
92 flagString =
'Output.DAOD_PIXELVALIDFileName'
93 flags.addFlag(flagString, runArgs.outputDAOD_PIXELVALIDFile)
94 flags.Output.doWriteDAOD =
True
95 flags.addFlag(
'Output.doWriteDAOD_PIXELVALID',
True)
96 log.info(
"---------- Configured DAOD_PIXELVALID output")
98 if hasattr(runArgs,
'outputDAOD_IDTRKVALIDFile'):
99 flagString =
'Output.DAOD_IDTRKVALIDFileName'
100 flags.addFlag(flagString, runArgs.outputDAOD_IDTRKVALIDFile)
101 flags.Output.doWriteDAOD =
True
102 flags.addFlag(
'Output.doWriteDAOD_IDTRKVALID',
True)
103 log.info(
"---------- Configured DAOD_IDTRKVALID output")
105 if hasattr(runArgs,
'outputDAOD_SCTVALIDFile'):
106 flagString =
'Output.DAOD_SCTVALIDFileName'
107 flags.addFlag(flagString, runArgs.outputDAOD_SCTVALIDFile)
108 flags.Output.doWriteDAOD =
True
109 flags.addFlag(
'Output.doWriteDAOD_SCTVALID',
True)
110 log.info(
"---------- Configured DAOD_SCTVALID output")
112 if hasattr(runArgs,
'outputDESDM_MCPFile'):
113 flagString =
'Output.DESDM_MCPFileName'
114 flags.addFlag(flagString, runArgs.outputDESDM_MCPFile)
115 flags.Output.doWriteDAOD =
True
116 flags.addFlag(
'Output.doWriteDESDM_MCP',
True)
117 log.info(
"---------- Configured DESDM_MCP output")
119 if hasattr(runArgs,
'outputDESDM_EXOTHIPFile'):
120 flagString =
'Output.DESDM_EXOTHIPFileName'
121 flags.addFlag(flagString, runArgs.outputDESDM_EXOTHIPFile)
122 flags.Output.doWriteDAOD =
True
123 flags.addFlag(
'Output.doWriteDESDM_EXOTHIP',
True)
124 log.info(
"---------- Configured DESDM_EXOTHIP output")
126 if hasattr(runArgs,
'outputDRAW_ZMUMUFile'):
127 flagString =
'Output.DRAW_ZmumuFileName'
128 flags.addFlag(flagString, runArgs.outputDRAW_ZMUMUFile)
129 flags.Output.doWriteBS =
True
130 log.info(
"---------- Configured DRAW ZMUMU output")
132 if hasattr(runArgs,
'outputDRAW_EGZFile'):
133 flagString =
'Output.DRAW_EGZFileName'
134 flags.addFlag(flagString, runArgs.outputDRAW_EGZFile)
135 flags.Output.doWriteBS =
True
136 log.info(
"---------- Configured DRAW_EGZ output")
138 if hasattr(runArgs,
'outputDRAW_TAULHFile'):
139 flagString =
'Output.DRAW_TAULHFileName'
140 flags.addFlag(flagString, runArgs.outputDRAW_TAULHFile)
141 flags.Output.doWriteBS =
True
142 log.info(
"---------- Configured DRAW_TAULH output")
144 if hasattr(runArgs,
'outputDRAW_JETFile'):
145 flagString =
'Output.DRAW_JETFileName'
146 flags.addFlag(flagString, runArgs.outputDRAW_JETFile)
147 flags.Output.doWriteBS =
True
148 log.info(
"---------- Configured DRAW_JET output")
150 if hasattr(runArgs,
'outputDAOD_L1CALO1File'):
151 flagString =
'Output.DAOD_L1CALO1FileName'
152 flags.addFlag(flagString, runArgs.outputDAOD_L1CALO1File)
153 flags.Output.doWriteDAOD =
True
154 flags.addFlag(
'Output.doWriteDAOD_L1CALO1',
True)
155 log.info(
"---------- Configured DAOD_L1CALO1 output")
157 if hasattr(runArgs,
'outputDAOD_L1CALO2File'):
158 flagString =
'Output.DAOD_L1CALO2FileName'
159 flags.addFlag(flagString, runArgs.outputDAOD_L1CALO2File)
160 flags.Output.doWriteDAOD =
True
161 flags.addFlag(
'Output.doWriteDAOD_L1CALO2',
True)
162 log.info(
"---------- Configured DAOD_L1CALO2 output")
164 if hasattr(runArgs,
'outputDESDM_PHOJETFile'):
165 flagString =
'Output.DESDM_PHOJETFileName'
166 flags.addFlag(flagString, runArgs.outputDESDM_PHOJETFile)
167 flags.Output.doWriteDAOD =
True
168 flags.addFlag(
'Output.doWriteDESDM_PHOJET',
True)
169 log.info(
"---------- Configured DESDM_PHOJET output")
171 if hasattr(runArgs,
'outputDESDM_ALLCELLSFile'):
172 streamName =
'DESDM_ALLCELLS'
173 flags.addFlag(f
'Output.{streamName}FileName', runArgs.outputDESDM_ALLCELLSFile)
174 flags.addFlag(f
'Output.doWrite{streamName}',
True)
175 log.info(
"---------- Configured "+streamName+
" output")
178 from RecJobTransforms.RecoConfigFlags
import recoRunArgsToFlags
179 recoRunArgsToFlags(runArgs, flags)
181 from AthenaConfiguration.Enums
import ProductionStep
182 flags.Common.ProductionStep=ProductionStep.Reconstruction
185 from AthenaConfiguration.DetectorConfigFlags
import setupDetectorFlags
186 setupDetectorFlags(flags, detectors, use_metadata=
True, toggle_geometry=
True, keep_beampipe=
True)
188 from RecJobTransforms.RecoConfigFlags
import printRecoFlags
189 printRecoFlags(flags)
200 from PerfMonComps.PerfMonConfigHelpers
import setPerfmonFlagsFromRunArgs
201 setPerfmonFlagsFromRunArgs(flags, runArgs)
204 processPreInclude(runArgs, flags)
207 processPreExec(runArgs, flags)
213 if flags.Exec.DebugStage !=
'':
214 flags.Exec.EventTimeOut = 0
220 from RecJobTransforms.RecoSteering
import RecoSteering
221 cfg = RecoSteering(flags)
224 cfg.flagPerfmonDomain(
'PerfDPD')
226 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DAOD_IDTIDEFileName" in key)]:
227 from DerivationFrameworkInDet.IDTIDE
import IDTIDECfg
228 cfg.merge(IDTIDECfg(flags))
229 log.info(
"---------- Configured IDTIDE perfDPD")
232 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DAOD_PIXELVALIDFileName" in key)]:
233 from DerivationFrameworkInDet.PIXELVALID
import PixelVALIDCfg
234 cfg.merge(PixelVALIDCfg(flags))
235 log.info(
"---------- Configured PixelVALID perfDPD")
238 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DAOD_SCTVALIDFileName" in key)]:
239 from InDetPrepRawDataToxAOD.SCTVALID
import SCTVALIDCfg
240 cfg.merge(SCTVALIDCfg(flags))
241 log.info(
"---------- Configured SCTVALID perfDPD")
244 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DAOD_IDTRKVALIDFileName" in key)]:
245 from DerivationFrameworkInDet.IDTRKVALID
import IDTRKVALIDCfg
246 cfg.merge(IDTRKVALIDCfg(flags))
247 log.info(
"---------- Configured IDTRKVALID perfDPD")
250 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DESDM_MCPFileName" in key)]:
251 from PrimaryDPDMaker.DESDM_MCP
import DESDM_MCPCfg
252 cfg.merge(DESDM_MCPCfg(flags))
253 log.info(
"---------- Configured DESDM_MCP perfDPD")
256 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DESDM_EXOTHIPFileName" in key)]:
257 from PrimaryDPDMaker.DESDM_EXOTHIP
import DESDM_EXOTHIPCfg
258 cfg.merge(DESDM_EXOTHIPCfg(flags))
259 log.info(
"---------- Configured DESDM_EXOTHIP perfDPD")
262 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DRAW_ZmumuFileName" in key)]:
263 from PrimaryDPDMaker.DRAW_ZMUMU
import DRAW_ZmumuCfg
264 cfg.merge(DRAW_ZmumuCfg(flags))
265 log.info(
"---------- Configured DRAW_ZMUMU perfDPD")
268 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DRAW_EGZFileName" in key)]:
269 from PrimaryDPDMaker.DRAW_EGZ
import DRAW_EGZCfg
270 cfg.merge(DRAW_EGZCfg(flags))
271 log.info(
"---------- Configured DRAW_EGZ perfDPD")
274 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DRAW_TAULHFileName" in key)]:
275 from PrimaryDPDMaker.DRAW_TAULH
import DRAW_TAULHCfg
276 cfg.merge(DRAW_TAULHCfg(flags))
277 log.info(
"---------- Configured DRAW_TAULH perfDPD")
280 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DRAW_JETFileName" in key)]:
281 from PrimaryDPDMaker.DRAW_JET
import DRAW_JETCfg
282 cfg.merge(DRAW_JETCfg(flags))
283 log.info(
"---------- Configured DRAW_JET perfDPD")
286 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DAOD_L1CALO1FileName" in key)]:
287 from DerivationFrameworkL1Calo.L1CALO1
import L1CALO1Cfg
288 cfg.merge(L1CALO1Cfg(flags))
289 log.info(
"---------- Configured L1CALO1 perfDPD")
291 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DAOD_L1CALO2FileName" in key)]:
292 from DerivationFrameworkL1Calo.L1CALO2
import L1CALO2Cfg
293 cfg.merge(L1CALO2Cfg(flags))
294 log.info(
"---------- Configured L1CALO2 perfDPD")
297 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DESDM_PHOJETFileName" in key)]:
298 from PrimaryDPDMaker.DESDM_PHOJET
import DESDM_PHOJETCfg
299 cfg.merge(DESDM_PHOJETCfg(flags))
300 log.info(
"---------- Configured PHOJET perfDPD")
303 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DESDM_ALLCELLSFileName" in key)]:
304 from PrimaryDPDMaker.DESDM_ALLCELLS
import DESDM_ALLCELLSCfg
305 cfg.merge(DESDM_ALLCELLSCfg(flags))
306 log.info(
"---------- Configured ALLCELLS perfDPD")
309 from DigitizationConfig.DigitizationSteering
import DigitizationMessageSvcCfg
310 cfg.merge(DigitizationMessageSvcCfg(flags))
313 processPostInclude(runArgs, flags, cfg)
316 processPostExec(runArgs, flags, cfg)
318 from AthenaConfiguration.Utils
import setupLoggingLevels
319 setupLoggingLevels(flags, cfg)
322 from EventInfoMgt.TagInfoMgrConfig
import TagInfoMgrCfg
327 "beam_type": flags.Beam.Type.value,
328 "beam_energy": str(int(flags.Beam.Energy)),
329 "triggerStreamOfFile":
""
331 else flags.Input.TriggerStream,
332 "project_name":
"IS_SIMULATION"
334 else flags.Input.ProjectName,
335 f
"AtlasRelease_{runArgs.trfSubstepName}": flags.Input.Release
or "n/a",
339 if not flags.Input.isMC
and flags.Input.DataYear > 0:
340 cfg.merge(TagInfoMgrCfg(flags, tagValuePairs={
341 "data_year": str(flags.Input.DataYear)
345 from PyUtils.AMITagHelperConfig
import AMITagCfg
346 cfg.merge(AMITagCfg(flags, runArgs))
349 if flags.PerfMon.doFullMonMT:
350 cfg.printPerfmonDomains()
352 timeConfig = time.time()
353 log.info(
"configured in %d seconds", timeConfig - timeStart)
355 log.info(
"Configured according to flag values listed below")
359 from AthenaConfiguration.AccumulatorCache
import AccumulatorDecorator
360 AccumulatorDecorator.printStats()
364 timeFinal = time.time()
365 log.info(
"Run RAWtoALL_skeleton in %d seconds (running %d seconds)", timeFinal - timeStart, timeFinal - timeConfig)
368 sys.exit(
not sc.isSuccess())