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 log.info(
'**** executing ROOT6Setup')
26 from PyUtils.Helpers
import ROOT6Setup
29 log.info(
'**** Setting-up configuration flags')
30 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
33 flags.Exec.EventTimeOut = 3600*Units.second
38 if hasattr(runArgs,
'detectors'):
39 detectors = runArgs.detectors
47 inputsDRAW = [prop
for prop
in dir(runArgs)
if prop.startswith(
'inputDRAW')
and prop.endswith(
'File')]
48 if hasattr(runArgs,
'inputBSFile'):
50 raise RuntimeError(
'Impossible to run RAWtoALL with input BS and DRAW files (one input type only!)')
51 flags.Input.Files = runArgs.inputBSFile
52 if len(inputsDRAW) == 1:
53 flags.Input.Files = getattr(runArgs, inputsDRAW[0])
54 elif len(inputsDRAW) > 1:
55 raise RuntimeError(
'Impossible to run RAWtoALL with multiple input DRAW files (viz.: {0})'.
format(inputsDRAW))
58 if hasattr(runArgs,
'inputRDOFile'):
59 flags.Input.Files = runArgs.inputRDOFile
60 if hasattr(runArgs,
'inputRDO_TRIGFile'):
61 flags.Input.Files = runArgs.inputRDO_TRIGFile
67 if hasattr(runArgs,
'outputESDFile'):
68 flags.Output.ESDFileName = runArgs.outputESDFile
69 log.info(
"---------- Configured ESD output")
71 if hasattr(runArgs,
'outputAODFile'):
72 flags.Output.AODFileName = runArgs.outputAODFile
73 log.info(
"---------- Configured AOD output")
75 if hasattr(runArgs,
'outputHISTFile'):
76 flags.Output.HISTFileName = runArgs.outputHISTFile
77 flags.DQ.doMonitoring =
True
78 log.info(
"---------- Configured HIST output")
80 if hasattr(runArgs,
'outputHIST_R2AFile'):
81 flags.Output.HISTFileName = runArgs.outputHIST_R2AFile
82 flags.DQ.doMonitoring =
True
83 log.info(
"---------- Configured HIST_R2A output")
85 if hasattr(runArgs,
'outputDAOD_IDTIDEFile'):
86 flagString =
'Output.DAOD_IDTIDEFileName'
87 flags.addFlag(flagString, runArgs.outputDAOD_IDTIDEFile)
88 flags.Output.doWriteDAOD =
True
89 flags.addFlag(
'Output.doWriteDAOD_IDTIDE',
True)
90 log.info(
"---------- Configured DAOD_IDTIDE output")
92 if hasattr(runArgs,
'outputDAOD_PIXELVALIDFile'):
93 flagString =
'Output.DAOD_PIXELVALIDFileName'
94 flags.addFlag(flagString, runArgs.outputDAOD_PIXELVALIDFile)
95 flags.Output.doWriteDAOD =
True
96 flags.addFlag(
'Output.doWriteDAOD_PIXELVALID',
True)
97 log.info(
"---------- Configured DAOD_PIXELVALID output")
99 if hasattr(runArgs,
'outputDAOD_IDTRKVALIDFile'):
100 flagString =
'Output.DAOD_IDTRKVALIDFileName'
101 flags.addFlag(flagString, runArgs.outputDAOD_IDTRKVALIDFile)
102 flags.Output.doWriteDAOD =
True
103 flags.addFlag(
'Output.doWriteDAOD_IDTRKVALID',
True)
104 log.info(
"---------- Configured DAOD_IDTRKVALID output")
106 if hasattr(runArgs,
'outputDAOD_SCTVALIDFile'):
107 flagString =
'Output.DAOD_SCTVALIDFileName'
108 flags.addFlag(flagString, runArgs.outputDAOD_SCTVALIDFile)
109 flags.Output.doWriteDAOD =
True
110 flags.addFlag(
'Output.doWriteDAOD_SCTVALID',
True)
111 log.info(
"---------- Configured DAOD_SCTVALID output")
113 if hasattr(runArgs,
'outputDESDM_MCPFile'):
114 flagString =
'Output.DESDM_MCPFileName'
115 flags.addFlag(flagString, runArgs.outputDESDM_MCPFile)
116 flags.Output.doWriteDAOD =
True
117 flags.addFlag(
'Output.doWriteDESDM_MCP',
True)
118 log.info(
"---------- Configured DESDM_MCP output")
120 if hasattr(runArgs,
'outputDRAW_ZMUMUFile'):
121 flagString =
'Output.DRAW_ZmumuFileName'
122 flags.addFlag(flagString, runArgs.outputDRAW_ZMUMUFile)
123 flags.Output.doWriteBS =
True
124 log.info(
"---------- Configured DRAW ZMUMU output")
126 if hasattr(runArgs,
'outputDRAW_EGZFile'):
127 flagString =
'Output.DRAW_EGZFileName'
128 flags.addFlag(flagString, runArgs.outputDRAW_EGZFile)
129 flags.Output.doWriteBS =
True
130 log.info(
"---------- Configured DRAW_EGZ output")
132 if hasattr(runArgs,
'outputDRAW_TAULHFile'):
133 flagString =
'Output.DRAW_TAULHFileName'
134 flags.addFlag(flagString, runArgs.outputDRAW_TAULHFile)
135 flags.Output.doWriteBS =
True
136 log.info(
"---------- Configured DRAW_TAULH output")
138 if hasattr(runArgs,
'outputDRAW_JETFile'):
139 flagString =
'Output.DRAW_JETFileName'
140 flags.addFlag(flagString, runArgs.outputDRAW_JETFile)
141 flags.Output.doWriteBS =
True
142 log.info(
"---------- Configured DRAW_JET output")
144 if hasattr(runArgs,
'outputDAOD_L1CALO1File'):
145 flagString =
'Output.DAOD_L1CALO1FileName'
146 flags.addFlag(flagString, runArgs.outputDAOD_L1CALO1File)
147 flags.Output.doWriteDAOD =
True
148 flags.addFlag(
'Output.doWriteDAOD_L1CALO1',
True)
149 log.info(
"---------- Configured DAOD_L1CALO1 output")
151 if hasattr(runArgs,
'outputDAOD_L1CALO2File'):
152 flagString =
'Output.DAOD_L1CALO2FileName'
153 flags.addFlag(flagString, runArgs.outputDAOD_L1CALO2File)
154 flags.Output.doWriteDAOD =
True
155 flags.addFlag(
'Output.doWriteDAOD_L1CALO2',
True)
156 log.info(
"---------- Configured DAOD_L1CALO2 output")
158 if hasattr(runArgs,
'outputDESDM_PHOJETFile'):
159 flagString =
'Output.DESDM_PHOJETFileName'
160 flags.addFlag(flagString, runArgs.outputDESDM_PHOJETFile)
161 flags.Output.doWriteDAOD =
True
162 flags.addFlag(
'Output.doWriteDESDM_PHOJET',
True)
163 log.info(
"---------- Configured DESDM_PHOJET output")
165 if hasattr(runArgs,
'outputDESDM_ALLCELLSFile'):
166 streamName =
'DESDM_ALLCELLS'
167 flags.addFlag(f
'Output.{streamName}FileName', runArgs.outputDESDM_ALLCELLSFile)
168 flags.addFlag(f
'Output.doWrite{streamName}',
True)
169 log.info(
"---------- Configured "+streamName+
" output")
172 from RecJobTransforms.RecoConfigFlags
import recoRunArgsToFlags
175 from AthenaConfiguration.Enums
import ProductionStep
176 flags.Common.ProductionStep=ProductionStep.Reconstruction
179 from AthenaConfiguration.DetectorConfigFlags
import setupDetectorFlags
180 setupDetectorFlags(flags, detectors, use_metadata=
True, toggle_geometry=
True, keep_beampipe=
True)
182 from RecJobTransforms.RecoConfigFlags
import printRecoFlags
194 from PerfMonComps.PerfMonConfigHelpers
import setPerfmonFlagsFromRunArgs
210 from RecJobTransforms.RecoSteering
import RecoSteering
214 cfg.flagPerfmonDomain(
'PerfDPD')
216 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DAOD_IDTIDEFileName" in key)]:
217 from DerivationFrameworkInDet.IDTIDE
import IDTIDECfg
219 log.info(
"---------- Configured IDTIDE perfDPD")
222 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DAOD_PIXELVALIDFileName" in key)]:
223 from DerivationFrameworkInDet.PIXELVALID
import PixelVALIDCfg
225 log.info(
"---------- Configured PixelVALID perfDPD")
228 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DAOD_SCTVALIDFileName" in key)]:
229 from InDetPrepRawDataToxAOD.SCTVALID
import SCTVALIDCfg
231 log.info(
"---------- Configured SCTVALID perfDPD")
234 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DAOD_IDTRKVALIDFileName" in key)]:
235 from DerivationFrameworkInDet.IDTRKVALID
import IDTRKVALIDCfg
237 log.info(
"---------- Configured IDTRKVALID perfDPD")
240 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DESDM_MCPFileName" in key)]:
241 from PrimaryDPDMaker.DESDM_MCP
import DESDM_MCPCfg
243 log.info(
"---------- Configured DESDM_MCP perfDPD")
246 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DRAW_ZmumuFileName" in key)]:
247 from PrimaryDPDMaker.DRAW_ZMUMU
import DRAW_ZmumuCfg
249 log.info(
"---------- Configured DRAW_ZMUMU perfDPD")
252 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DRAW_EGZFileName" in key)]:
253 from PrimaryDPDMaker.DRAW_EGZ
import DRAW_EGZCfg
255 log.info(
"---------- Configured DRAW_EGZ perfDPD")
258 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DRAW_TAULHFileName" in key)]:
259 from PrimaryDPDMaker.DRAW_TAULH
import DRAW_TAULHCfg
261 log.info(
"---------- Configured DRAW_TAULH perfDPD")
264 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DRAW_JETFileName" in key)]:
265 from PrimaryDPDMaker.DRAW_JET
import DRAW_JETCfg
267 log.info(
"---------- Configured DRAW_JET perfDPD")
270 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DAOD_L1CALO1FileName" in key)]:
271 from DerivationFrameworkL1Calo.L1CALO1
import L1CALO1Cfg
273 log.info(
"---------- Configured L1CALO1 perfDPD")
275 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DAOD_L1CALO2FileName" in key)]:
276 from DerivationFrameworkL1Calo.L1CALO2
import L1CALO2Cfg
278 log.info(
"---------- Configured L1CALO2 perfDPD")
281 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DESDM_PHOJETFileName" in key)]:
282 from PrimaryDPDMaker.DESDM_PHOJET
import DESDM_PHOJETCfg
284 log.info(
"---------- Configured PHOJET perfDPD")
287 for flag
in [key
for key
in flags._flagdict.keys()
if (
"Output.DESDM_ALLCELLSFileName" in key)]:
288 from PrimaryDPDMaker.DESDM_ALLCELLS
import DESDM_ALLCELLSCfg
290 log.info(
"---------- Configured ALLCELLS perfDPD")
293 from DigitizationConfig.DigitizationSteering
import DigitizationMessageSvcCfg
302 from AthenaConfiguration.Utils
import setupLoggingLevels
306 from EventInfoMgt.TagInfoMgrConfig
import TagInfoMgrCfg
311 "beam_type": flags.Beam.Type.value,
312 "beam_energy":
str(
int(flags.Beam.Energy)),
313 "triggerStreamOfFile":
""
315 else flags.Input.TriggerStream,
316 "project_name":
"IS_SIMULATION"
318 else flags.Input.ProjectName,
319 f
"AtlasRelease_{runArgs.trfSubstepName}": flags.Input.Release
or "n/a",
323 if not flags.Input.isMC
and flags.Input.DataYear > 0:
325 "data_year":
str(flags.Input.DataYear)
329 from PyUtils.AMITagHelperConfig
import AMITagCfg
333 if flags.PerfMon.doFullMonMT:
334 cfg.printPerfmonDomains()
336 timeConfig = time.time()
337 log.info(
"configured in %d seconds", timeConfig - timeStart)
339 log.info(
"Configured according to flag values listed below")
343 from AthenaConfiguration.AccumulatorCache
import AccumulatorDecorator
344 AccumulatorDecorator.printStats()
348 timeFinal = time.time()
349 log.info(
"Run RAWtoALL_skeleton in %d seconds (running %d seconds)", timeFinal - timeStart, timeFinal - timeConfig)
352 sys.exit(
not sc.isSuccess())