8from PyJobTransforms.TransformUtils
import processPreExec, processPreInclude, processPostExec, processPostInclude
9from SimuJobTransforms.CommonSimulationSteering
import specialConfigPreInclude, specialConfigPostInclude
17 hasRDO_BKGInput = hasattr(runArgs,
'inputRDO_BKGFile')
18 hasBS_SKIMInput = hasattr(runArgs,
'inputBS_SKIMFile')
19 hasEVNT_Input = hasattr(runArgs,
'inputEVNTFile')
21 if flags.Common.ProductionStep == ProductionStep.Overlay
and not hasattr(runArgs,
'inputHITSFile'):
22 raise RuntimeError(
'No input HITS file defined')
24 if hasRDO_BKGInput
and hasBS_SKIMInput:
25 raise RuntimeError(
'Both RDO_BKG and BS_SKIM are defined')
26 if not hasRDO_BKGInput
and not hasBS_SKIMInput:
27 raise RuntimeError(
'Define one of RDO_BKG and BS_SKIM file types')
29 if hasattr(runArgs,
'skipSecondaryEvents'):
30 flags.Overlay.SkipSecondaryEvents = runArgs.skipSecondaryEvents
33 flags.Input.Files = runArgs.inputRDO_BKGFile
36 log.info(
'Running MC+MC overlay')
37 flags.Overlay.DataOverlay =
False
39 log.info(
'Running MC+data overlay')
40 flags.Overlay.DataOverlay =
True
42 if flags.Common.ProductionStep == ProductionStep.Overlay:
43 flags.Input.SecondaryFiles = runArgs.inputHITSFile
44 elif flags.Common.ProductionStep == ProductionStep.FastChain:
46 raise RuntimeError(
'No input EVNT file defined')
48 flags.Input.SecondaryFiles = runArgs.inputEVNTFile
50 raise RuntimeError(
'No secondaryFiles are defined')
53 flags.Input.MCChannelNumber = GetFileMD(flags.Input.SecondaryFiles, allowEmpty=
False).
get(
"mc_channel_number", 0)
56 if hasattr(runArgs,
'runNumber'):
57 if flags.Input.MCChannelNumber != runArgs.runNumber:
58 log.warning(
'Got different MC channel number (%d) from runNumber than from metadata (%d)', runArgs.runNumber, flags.Input.MCChannelNumber)
59 flags.Input.MCChannelNumber = runArgs.runNumber
61 log.info(
'MC channel number: %d', flags.Input.MCChannelNumber)
63 log.info(
'Running MC+data overlay from ByteStream')
64 flags.Overlay.DataOverlay =
True
65 flags.Overlay.ByteStream =
True
66 flags.Input.isMC =
False
67 if flags.Common.ProductionStep == ProductionStep.Overlay:
68 flags.Input.Files = runArgs.inputHITSFile
69 elif flags.Common.ProductionStep == ProductionStep.FastChain:
71 raise RuntimeError(
'No input EVNT file defined')
73 flags.Input.Files = runArgs.inputEVNTFile
75 raise RuntimeError(
'No input files are defined')
77 flags.Input.SecondaryFiles = runArgs.inputBS_SKIMFile
81 flags.Input.RunNumbers = list(GetFileMD(flags.Input.SecondaryFiles).
get(
"runNumbers", []))
82 flags.Input.LumiBlockNumbers = list(GetFileMD(flags.Input.SecondaryFiles).
get(
"lumiBlockNumbers", []))
86 from AthenaCommon.Logging
import logging
87 logOverlay = logging.getLogger(
'Overlay')
88 logOverlay.info(
'****************** STARTING OVERLAY *****************')
90 logOverlay.info(
'**** Transformation run arguments')
91 logOverlay.info(str(runArgs))
93 logOverlay.info(
'**** Setting-up configuration flags')
94 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
95 flags = initConfigFlags()
97 commonRunArgsToFlags(runArgs, flags)
99 flags.Common.ProductionStep = ProductionStep.Overlay
105 if hasattr(runArgs,
'outputRDOFile'):
106 if runArgs.outputRDOFile ==
'None':
107 flags.Output.RDOFileName =
''
109 flags.Output.RDOFileName = runArgs.outputRDOFile
111 raise RuntimeError(
'No output RDO file defined')
113 if hasattr(runArgs,
'outputRDO_SGNLFile'):
114 flags.Output.RDO_SGNLFileName = runArgs.outputRDO_SGNLFile
117 if hasattr(runArgs,
'detectors'):
118 detectors = runArgs.detectors
123 from DigitizationConfig.DigitizationConfigFlags
import digitizationRunArgsToFlags
124 digitizationRunArgsToFlags(runArgs, flags)
127 from AthenaConfiguration.DetectorConfigFlags
import setupDetectorFlags
128 setupDetectorFlags(flags, detectors, use_metadata=
True, toggle_geometry=
True)
131 if hasattr(runArgs,
'triggerConfig')
and runArgs.triggerConfig ==
'NONE':
132 flags.Detector.EnableL1Calo =
False
135 from PerfMonComps.PerfMonConfigHelpers
import setPerfmonFlagsFromRunArgs
136 setPerfmonFlagsFromRunArgs(flags, runArgs)
139 specialConfigPreInclude(flags)
142 processPreInclude(runArgs, flags)
145 processPreExec(runArgs, flags)
152 from OverlayConfiguration.OverlayMetadata
import overlayMetadataCheck
154 overlayMetadataCheck(flags)
160 from OverlayConfiguration.OverlaySteering
import OverlayMainCfg
161 cfg = OverlayMainCfg(flags)
164 from DigitizationConfig.DigitizationSteering
import DigitizationMessageSvcCfg
165 cfg.merge(DigitizationMessageSvcCfg(flags))
168 specialConfigPostInclude(flags, cfg)
171 processPostInclude(runArgs, flags, cfg)
174 processPostExec(runArgs, flags, cfg)
177 from PyUtils.AMITagHelperConfig
import AMITagCfg
178 cfg.merge(AMITagCfg(flags, runArgs))
182 sys.exit(
not sc.isSuccess())