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 flags.Input.OverrideRunNumber =
not flags.Common.isOverlay
141 if flags.Common.isOverlay:
142 from OverlayConfiguration.OverlayMetadata
import fastChainOverlayMetadataCheck
143 fastChainOverlayMetadataCheck(flags)
148 if flags.Digitization.PileUp:
149 from DigitizationConfig.PileUpConfig
import PileUpEventLoopMgrCfg
150 cfg = MainServicesCfg(flags, LoopMgr=
"PileUpEventLoopMgr")
151 cfg.merge(PileUpEventLoopMgrCfg(flags))
153 cfg = MainServicesCfg(flags)
155 cfg.merge(PoolReadCfg(flags))
157 from BeamEffects.BeamEffectsAlgConfig
import BeamEffectsAlgCfg
158 cfg.merge(BeamEffectsAlgCfg(flags))
160 if not flags.Digitization.PileUp
and not flags.Common.isOverlay:
163 from xAODEventInfoCnv.xAODEventInfoCnvConfig
import EventInfoUpdateFromContextAlgCfg
164 cfg.merge(EventInfoUpdateFromContextAlgCfg(flags))
166 if flags.Common.isOverlay:
167 from xAODEventInfoCnv.xAODEventInfoCnvConfig
import EventInfoOverlayCfg
168 cfg.merge(EventInfoOverlayCfg(flags))
170 if not flags.Overlay.DataOverlay:
171 from OverlayCopyAlgs.OverlayCopyAlgsConfig
import CopyMcEventCollectionCfg
172 cfg.merge(CopyMcEventCollectionCfg(flags))
174 from ISF_Config.ISF_MainConfig
import ISF_KernelCfg
175 cfg.merge(ISF_KernelCfg(flags))
178 if flags.Common.isOverlay:
179 from OverlayConfiguration.OverlaySteering
import OverlayMainContentCfg
180 cfg.merge(OverlayMainContentCfg(flags))
182 from DigitizationConfig.DigitizationSteering
import DigitizationMainContentCfg
183 cfg.merge(DigitizationMainContentCfg(flags))
186 if flags.Output.HITSFileName:
187 from AthenaConfiguration.Enums
import MetadataCategory
188 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
189 from SimuJobTransforms.SimOutputConfig
import getStreamHITS_ItemList
190 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
191 cfg.merge(OutputStreamCfg(flags,
"HITS", ItemList=getStreamHITS_ItemList(flags)))
192 cfg.merge(SetupMetaDataForStreamCfg(flags,
"HITS", createMetadata=[MetadataCategory.IOVMetaData]))
195 from DigitizationConfig.DigitizationSteering
import DigitizationMessageSvcCfg
196 cfg.merge(DigitizationMessageSvcCfg(flags))
199 specialConfigPostInclude(flags, cfg)
202 processPostInclude(runArgs, flags, cfg)
205 processPostExec(runArgs, flags, cfg)
207 from AthenaConfiguration.Utils
import setupLoggingLevels
208 setupLoggingLevels(flags, cfg)
212 sys.exit(
not sc.isSuccess())