8from PyJobTransforms.TransformUtils
import processPreExec, processPreInclude, processPostExec, processPostInclude
9from SimuJobTransforms.CommonSimulationSteering
import specialConfigPreInclude, specialConfigPostInclude
17 hasRDO_BKGInput = hasattr(runArgs,
'inputRDO_BKGFile')
18 hasEVNT_Input = hasattr(runArgs,
'inputEVNTFile')
20 if flags.Common.ProductionStep == ProductionStep.Overlay
and not hasattr(runArgs,
'inputHITSFile'):
21 raise RuntimeError(
'No input HITS file defined')
23 if not hasRDO_BKGInput:
24 raise RuntimeError(
'No input RDO_BKG file defined')
26 if hasattr(runArgs,
'skipSecondaryEvents'):
27 flags.Overlay.SkipSecondaryEvents = runArgs.skipSecondaryEvents
29 flags.Input.Files = runArgs.inputRDO_BKGFile
32 log.info(
'Running MC+MC overlay')
33 flags.Overlay.DataOverlay =
False
35 log.info(
'Running MC+data overlay')
36 flags.Overlay.DataOverlay =
True
38 if flags.Common.ProductionStep == ProductionStep.Overlay:
39 flags.Input.SecondaryFiles = runArgs.inputHITSFile
40 elif flags.Common.ProductionStep == ProductionStep.FastChain:
42 raise RuntimeError(
'No input EVNT file defined')
44 flags.Input.SecondaryFiles = runArgs.inputEVNTFile
46 raise RuntimeError(
'No secondaryFiles are defined')
49 flags.Input.MCChannelNumber = GetFileMD(flags.Input.SecondaryFiles, allowEmpty=
False).
get(
"mc_channel_number", 0)
52 if hasattr(runArgs,
'runNumber'):
53 if flags.Input.MCChannelNumber != runArgs.runNumber:
54 log.warning(
'Got different MC channel number (%d) from runNumber than from metadata (%d)', runArgs.runNumber, flags.Input.MCChannelNumber)
55 flags.Input.MCChannelNumber = runArgs.runNumber
57 log.info(
'MC channel number: %d', flags.Input.MCChannelNumber)
61 from AthenaCommon.Logging
import logging
62 logOverlay = logging.getLogger(
'Overlay')
63 logOverlay.info(
'****************** STARTING OVERLAY *****************')
65 logOverlay.info(
'**** Transformation run arguments')
66 logOverlay.info(str(runArgs))
68 logOverlay.info(
'**** Setting-up configuration flags')
69 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
70 flags = initConfigFlags()
72 commonRunArgsToFlags(runArgs, flags)
74 flags.Common.ProductionStep = ProductionStep.Overlay
80 if hasattr(runArgs,
'outputRDOFile'):
81 if runArgs.outputRDOFile ==
'None':
82 flags.Output.RDOFileName =
''
84 flags.Output.RDOFileName = runArgs.outputRDOFile
86 raise RuntimeError(
'No output RDO file defined')
88 if hasattr(runArgs,
'outputRDO_SGNLFile'):
89 flags.Output.RDO_SGNLFileName = runArgs.outputRDO_SGNLFile
92 if hasattr(runArgs,
'detectors'):
93 detectors = runArgs.detectors
98 from DigitizationConfig.DigitizationConfigFlags
import digitizationRunArgsToFlags
99 digitizationRunArgsToFlags(runArgs, flags)
102 from AthenaConfiguration.DetectorConfigFlags
import setupDetectorFlags
103 setupDetectorFlags(flags, detectors, use_metadata=
True, toggle_geometry=
True)
106 if hasattr(runArgs,
'triggerConfig')
and runArgs.triggerConfig ==
'NONE':
107 flags.Detector.EnableL1Calo =
False
110 from PerfMonComps.PerfMonConfigHelpers
import setPerfmonFlagsFromRunArgs
111 setPerfmonFlagsFromRunArgs(flags, runArgs)
114 specialConfigPreInclude(flags)
117 processPreInclude(runArgs, flags)
120 processPreExec(runArgs, flags)
127 from OverlayConfiguration.OverlayMetadata
import overlayMetadataCheck
129 overlayMetadataCheck(flags)
135 from OverlayConfiguration.OverlaySteering
import OverlayMainCfg
136 cfg = OverlayMainCfg(flags)
139 from DigitizationConfig.DigitizationSteering
import DigitizationMessageSvcCfg
140 cfg.merge(DigitizationMessageSvcCfg(flags))
143 specialConfigPostInclude(flags, cfg)
146 processPostInclude(runArgs, flags, cfg)
149 processPostExec(runArgs, flags, cfg)
152 from PyUtils.AMITagHelperConfig
import AMITagCfg
153 cfg.merge(AMITagCfg(flags, runArgs))
157 sys.exit(
not sc.isSuccess())