3 from PyJobTransforms.CommonRunArgsToFlags
import commonRunArgsToFlags
4 from PyJobTransforms.TransformUtils
import processPreExec, processPreInclude, processPostExec, processPostInclude
6 from AthenaCommon
import SystemOfUnits
as Units
9 from AthenaCommon
import JobProperties
10 JobProperties.jobPropertiesDisallowed =
True
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
32 flags.Exec.EventTimeOut = 3600*Units.second
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
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
200 from PerfMonComps.PerfMonConfigHelpers
import setPerfmonFlagsFromRunArgs
213 if flags.Exec.DebugStage !=
'':
214 flags.Exec.EventTimeOut = 0
220 from RecJobTransforms.RecoSteering
import RecoSteering
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
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
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
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
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
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
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
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
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
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
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
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
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
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
306 log.info(
"---------- Configured ALLCELLS perfDPD")
309 from DigitizationConfig.DigitizationSteering
import DigitizationMessageSvcCfg
318 from AthenaConfiguration.Utils
import setupLoggingLevels
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:
341 "data_year":
str(flags.Input.DataYear)
345 from PyUtils.AMITagHelperConfig
import AMITagCfg
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())