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 log.info(
'**** Setting-up configuration flags')
26 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
27 flags = initConfigFlags()
29 flags.Exec.EventTimeOut = 3600*Units.second
31 commonRunArgsToFlags(runArgs, flags)
34 if hasattr(runArgs,
'detectors'):
35 detectors = runArgs.detectors
43 inputsDRAW = [prop
for prop
in dir(runArgs)
if prop.startswith(
'inputDRAW')
and prop.endswith(
'File')]
44 if hasattr(runArgs,
'inputBSFile'):
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))
54 if hasattr(runArgs,
'inputRDOFile'):
55 flags.Input.Files = runArgs.inputRDOFile
56 if hasattr(runArgs,
'inputRDO_TRIGFile'):
57 flags.Input.Files = runArgs.inputRDO_TRIGFile
63 if hasattr(runArgs,
'outputESDFile'):
64 flags.Output.ESDFileName = runArgs.outputESDFile
65 log.info(
"---------- Configured ESD output")
67 if hasattr(runArgs,
'outputAODFile'):
68 flags.Output.AODFileName = runArgs.outputAODFile
69 log.info(
"---------- Configured AOD output")
71 if hasattr(runArgs,
'outputHISTFile'):
72 flags.Output.HISTFileName = runArgs.outputHISTFile
73 flags.DQ.doMonitoring =
True
74 log.info(
"---------- Configured HIST output")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
175 from RecJobTransforms.RecoConfigFlags
import recoRunArgsToFlags
176 recoRunArgsToFlags(runArgs, flags)
178 from AthenaConfiguration.Enums
import ProductionStep
179 flags.Common.ProductionStep=ProductionStep.Reconstruction
182 from AthenaConfiguration.DetectorConfigFlags
import setupDetectorFlags
183 setupDetectorFlags(flags, detectors, use_metadata=
True, toggle_geometry=
True, keep_beampipe=
True)
185 from RecJobTransforms.RecoConfigFlags
import printRecoFlags
186 printRecoFlags(flags)
197 from PerfMonComps.PerfMonConfigHelpers
import setPerfmonFlagsFromRunArgs
198 setPerfmonFlagsFromRunArgs(flags, runArgs)
201 processPreInclude(runArgs, flags)
204 processPreExec(runArgs, flags)
210 if flags.Exec.DebugStage !=
'':
211 flags.Exec.EventTimeOut = 0
217 from RecJobTransforms.RecoSteering
import RecoSteering
218 cfg = RecoSteering(flags)
221 cfg.flagPerfmonDomain(
'PerfDPD')
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
306 from DigitizationConfig.DigitizationSteering
import DigitizationMessageSvcCfg
307 cfg.merge(DigitizationMessageSvcCfg(flags))
310 processPostInclude(runArgs, flags, cfg)
313 processPostExec(runArgs, flags, cfg)
315 from AthenaConfiguration.Utils
import setupLoggingLevels
316 setupLoggingLevels(flags, cfg)
319 from EventInfoMgt.TagInfoMgrConfig
import TagInfoMgrCfg
324 "beam_type": flags.Beam.Type.value,
325 "beam_energy": str(int(flags.Beam.Energy)),
326 "triggerStreamOfFile":
""
328 else flags.Input.TriggerStream,
329 "project_name":
"IS_SIMULATION"
331 else flags.Input.ProjectName,
332 f
"AtlasRelease_{runArgs.trfSubstepName}": flags.Input.Release
or "n/a",
336 if not flags.Input.isMC
and flags.Input.DataYear > 0:
337 cfg.merge(TagInfoMgrCfg(flags, tagValuePairs={
338 "data_year": str(flags.Input.DataYear)
342 from PyUtils.AMITagHelperConfig
import AMITagCfg
343 cfg.merge(AMITagCfg(flags, runArgs))
346 if flags.PerfMon.doFullMonMT:
347 cfg.printPerfmonDomains()
349 timeConfig = time.time()
350 log.info(
"configured in %d seconds", timeConfig - timeStart)
352 log.info(
"Configured according to flag values listed below")
356 from AthenaConfiguration.AccumulatorCache
import AccumulatorDecorator
357 AccumulatorDecorator.printStats()
361 timeFinal = time.time()
362 log.info(
"Run RAWtoALL_skeleton in %d seconds (running %d seconds)", timeFinal - timeStart, timeFinal - timeConfig)
365 sys.exit(
not sc.isSuccess())