16 from AthenaCommon.Logging
import logging
17 logFastChain = logging.getLogger(
'FastChainSkeleton')
18 logFastChain.info(
'****************** STARTING FastChain Simulation *****************')
20 logFastChain.info(
'**** Transformation run arguments')
21 logFastChain.info(
str(runArgs))
23 logFastChain.info(
'**** Setting-up configuration flags')
24 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
25 flags = initConfigFlags()
27 from SimulationConfig.SimEnums
import SimulationFlavour
28 commonRunArgsToFlags(runArgs, flags)
31 from AthenaConfiguration.Enums
import ProductionStep
32 flags.Common.ProductionStep = ProductionStep.FastChain
35 if hasattr(runArgs,
'simulator'):
36 flags.Sim.ISF.Simulator = SimulationFlavour(runArgs.simulator)
39 flags.Sim.ISFRun =
True
42 if hasattr(runArgs,
'inputRDO_BKGFile'):
44 from OverlayConfiguration.OverlaySkeleton
import setOverlayInputFiles
45 setOverlayInputFiles(runArgs, flags, logFastChain)
46 flags.Common.isOverlay =
True
47 flags.Digitization.PileUp =
False
49 if flags.Overlay.DataOverlay:
50 from SimulationConfig.SimEnums
import VertexSource
51 if flags.Sim.VertexSource
is VertexSource.CondDB:
52 flags.Sim.VertexSource = VertexSource.MatchingBkg
55 if hasattr(runArgs,
'inputEVNTFile'):
56 flags.Input.Files = runArgs.inputEVNTFile
58 raise RuntimeError(
'No input EVNT file defined')
61 if hasattr(runArgs,
'outputHITSFile'):
62 flags.Output.HITSFileName = runArgs.outputHITSFile
64 if hasattr(runArgs,
'outputRDOFile'):
65 if runArgs.outputRDOFile ==
'None':
66 flags.Output.RDOFileName =
''
68 flags.Output.RDOFileName = runArgs.outputRDOFile
70 raise RuntimeError(
'No outputRDOFile defined')
72 if flags.Common.isOverlay:
73 if hasattr(runArgs,
'outputRDO_SGNLFile'):
74 flags.Output.RDO_SGNLFileName = runArgs.outputRDO_SGNLFile
76 if hasattr(runArgs,
'conditionsTag'):
77 flags.IOVDb.GlobalTag = runArgs.conditionsTag
80 from SimuJobTransforms.SimulationHelpers
import getDetectorsFromRunArgs
81 detectors = getDetectorsFromRunArgs(flags, runArgs)
84 from AthenaConfiguration.DetectorConfigFlags
import setupDetectorFlags
85 setupDetectorFlags(flags, detectors, toggle_geometry=
True)
88 from SimulationConfig.SimConfigFlags
import simulationRunArgsToFlags
89 simulationRunArgsToFlags(runArgs, flags)
92 from DigitizationConfig.DigitizationConfigFlags
import digitizationRunArgsToFlags
93 digitizationRunArgsToFlags(runArgs, flags)
96 if not flags.Common.isOverlay:
98 from DigitizationConfig.DigitizationConfigFlags
import setupDigitizationFlags
99 setupDigitizationFlags(runArgs, flags)
100 logFastChain.info(
'Running with pile-up: %s', flags.Digitization.PileUp)
103 if hasattr(runArgs,
'triggerConfig')
and runArgs.triggerConfig ==
'NONE':
104 flags.Detector.EnableL1Calo =
False
107 from PerfMonComps.PerfMonConfigHelpers
import setPerfmonFlagsFromRunArgs
108 setPerfmonFlagsFromRunArgs(flags, runArgs)
111 processPreInclude(runArgs, flags)
114 specialConfigPreInclude(flags)
117 processPreExec(runArgs, flags)
119 if not flags.Common.isOverlay:
121 from DigitizationConfig.DigitizationConfigFlags
import pileupRunArgsToFlags
122 pileupRunArgsToFlags(runArgs, flags)
125 if flags.Digitization.PileUp:
126 from RunDependentSimComps.PileUpUtils
import setupPileUpProfile
127 setupPileUpProfile(flags)
129 flags.Sim.DoFullChain =
True
133 if flags.Common.isOverlay:
134 flags.Input.OverrideRunNumber =
False
136 if flags.Overlay.DataOverlay:
137 flags.Input.OverrideRunNumber =
True
138 from CoolConvUtilities.MagFieldUtils
import getTimeForLB
139 flags.Input.TimeStamps = [int(getTimeForLB(run=flags.Input.RunNumbers[0], LB=flags.Input.LumiBlockNumbers[0])/1e9)]
148 if flags.Common.isOverlay:
149 from OverlayConfiguration.OverlayMetadata
import fastChainOverlayMetadataCheck
150 fastChainOverlayMetadataCheck(flags)
155 if flags.Digitization.PileUp:
156 from DigitizationConfig.PileUpConfig
import PileUpEventLoopMgrCfg
157 cfg = MainServicesCfg(flags, LoopMgr=
"PileUpEventLoopMgr")
158 cfg.merge(PileUpEventLoopMgrCfg(flags))
160 cfg = MainServicesCfg(flags)
162 cfg.merge(PoolReadCfg(flags))
164 from BeamEffects.BeamEffectsAlgConfig
import BeamEffectsAlgCfg
165 cfg.merge(BeamEffectsAlgCfg(flags))
167 if not flags.Digitization.PileUp
and not flags.Common.isOverlay:
170 from xAODEventInfoCnv.xAODEventInfoCnvConfig
import EventInfoUpdateFromContextAlgCfg
171 cfg.merge(EventInfoUpdateFromContextAlgCfg(flags))
173 if flags.Common.isOverlay:
174 from xAODEventInfoCnv.xAODEventInfoCnvConfig
import EventInfoOverlayCfg
175 cfg.merge(EventInfoOverlayCfg(flags))
177 if not flags.Overlay.DataOverlay:
178 from OverlayCopyAlgs.OverlayCopyAlgsConfig
import CopyMcEventCollectionCfg
179 cfg.merge(CopyMcEventCollectionCfg(flags))
181 from ISF_Config.ISF_MainConfig
import ISF_KernelCfg
182 cfg.merge(ISF_KernelCfg(flags))
185 if flags.Common.isOverlay:
186 from OverlayConfiguration.OverlaySteering
import OverlayMainContentCfg
187 cfg.merge(OverlayMainContentCfg(flags))
189 from DigitizationConfig.DigitizationSteering
import DigitizationMainContentCfg
190 cfg.merge(DigitizationMainContentCfg(flags))
193 if flags.Output.HITSFileName:
194 from AthenaConfiguration.Enums
import MetadataCategory
195 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
196 from SimuJobTransforms.SimOutputConfig
import getStreamHITS_ItemList
197 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
198 cfg.merge(OutputStreamCfg(flags,
"HITS", ItemList=getStreamHITS_ItemList(flags)))
199 cfg.merge(SetupMetaDataForStreamCfg(flags,
"HITS", createMetadata=[MetadataCategory.IOVMetaData]))
202 from DigitizationConfig.DigitizationSteering
import DigitizationMessageSvcCfg
203 cfg.merge(DigitizationMessageSvcCfg(flags))
206 specialConfigPostInclude(flags, cfg)
209 processPostInclude(runArgs, flags, cfg)
212 processPostExec(runArgs, flags, cfg)
214 from AthenaConfiguration.Utils
import setupLoggingLevels
215 setupLoggingLevels(flags, cfg)
219 sys.exit(
not sc.isSuccess())