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
37 from CoolConvUtilities.MagFieldUtils
import getTimeForLB
38 flags.Input.TimeStamps = [int(getTimeForLB(run=flags.Input.RunNumbers[0], LB=flags.Input.LumiBlockNumbers[0])/1e9)]
40 if flags.Common.ProductionStep == ProductionStep.Overlay:
41 flags.Input.SecondaryFiles = runArgs.inputHITSFile
42 elif flags.Common.ProductionStep == ProductionStep.FastChain:
44 raise RuntimeError(
'No input EVNT file defined')
46 flags.Input.SecondaryFiles = runArgs.inputEVNTFile
48 raise RuntimeError(
'No secondaryFiles are defined')
51 flags.Input.MCChannelNumber = GetFileMD(flags.Input.SecondaryFiles, allowEmpty=
False).
get(
"mc_channel_number", 0)
54 if hasattr(runArgs,
'runNumber'):
55 if flags.Input.MCChannelNumber != runArgs.runNumber:
56 log.warning(
'Got different MC channel number (%d) from runNumber than from metadata (%d)', runArgs.runNumber, flags.Input.MCChannelNumber)
57 flags.Input.MCChannelNumber = runArgs.runNumber
59 log.info(
'MC channel number: %d', flags.Input.MCChannelNumber)
63 from AthenaCommon.Logging
import logging
64 logOverlay = logging.getLogger(
'Overlay')
65 logOverlay.info(
'****************** STARTING OVERLAY *****************')
67 logOverlay.info(
'**** Transformation run arguments')
68 logOverlay.info(
str(runArgs))
70 logOverlay.info(
'**** Setting-up configuration flags')
71 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
72 flags = initConfigFlags()
74 commonRunArgsToFlags(runArgs, flags)
76 flags.Common.ProductionStep = ProductionStep.Overlay
82 if hasattr(runArgs,
'outputRDOFile'):
83 if runArgs.outputRDOFile ==
'None':
84 flags.Output.RDOFileName =
''
86 flags.Output.RDOFileName = runArgs.outputRDOFile
88 raise RuntimeError(
'No output RDO file defined')
90 if hasattr(runArgs,
'outputRDO_SGNLFile'):
91 flags.Output.RDO_SGNLFileName = runArgs.outputRDO_SGNLFile
94 if hasattr(runArgs,
'detectors'):
95 detectors = runArgs.detectors
100 from DigitizationConfig.DigitizationConfigFlags
import digitizationRunArgsToFlags
101 digitizationRunArgsToFlags(runArgs, flags)
104 from AthenaConfiguration.DetectorConfigFlags
import setupDetectorFlags
105 setupDetectorFlags(flags, detectors, use_metadata=
True, toggle_geometry=
True)
108 if hasattr(runArgs,
'triggerConfig')
and runArgs.triggerConfig ==
'NONE':
109 flags.Detector.EnableL1Calo =
False
112 from PerfMonComps.PerfMonConfigHelpers
import setPerfmonFlagsFromRunArgs
113 setPerfmonFlagsFromRunArgs(flags, runArgs)
116 specialConfigPreInclude(flags)
119 processPreInclude(runArgs, flags)
122 processPreExec(runArgs, flags)
129 from OverlayConfiguration.OverlayMetadata
import overlayMetadataCheck
131 overlayMetadataCheck(flags)
137 from OverlayConfiguration.OverlaySteering
import OverlayMainCfg
138 cfg = OverlayMainCfg(flags)
141 from DigitizationConfig.DigitizationSteering
import DigitizationMessageSvcCfg
142 cfg.merge(DigitizationMessageSvcCfg(flags))
145 specialConfigPostInclude(flags, cfg)
148 processPostInclude(runArgs, flags, cfg)
151 processPostExec(runArgs, flags, cfg)
154 from PyUtils.AMITagHelperConfig
import AMITagCfg
155 cfg.merge(AMITagCfg(flags, runArgs))
159 sys.exit(
not sc.isSuccess())