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
43 flags.IOVDb.WriteParametersAsMetaData=
False
46 if hasattr(runArgs,
'inputRDO_BKGFile'):
48 from OverlayConfiguration.OverlaySkeleton
import setOverlayInputFiles
49 setOverlayInputFiles(runArgs, flags, logFastChain)
50 flags.Common.isOverlay =
True
51 flags.Digitization.PileUp =
False
53 if flags.Overlay.DataOverlay:
54 from SimulationConfig.SimEnums
import VertexSource
55 if flags.Sim.VertexSource
is VertexSource.CondDB:
56 flags.Sim.VertexSource = VertexSource.MatchingBkg
59 if hasattr(runArgs,
'inputEVNTFile'):
60 flags.Input.Files = runArgs.inputEVNTFile
62 raise RuntimeError(
'No input EVNT file defined')
65 if hasattr(runArgs,
'outputHITSFile'):
66 flags.Output.HITSFileName = runArgs.outputHITSFile
68 if hasattr(runArgs,
'outputRDOFile'):
69 if runArgs.outputRDOFile ==
'None':
70 flags.Output.RDOFileName =
''
72 flags.Output.RDOFileName = runArgs.outputRDOFile
74 raise RuntimeError(
'No outputRDOFile defined')
76 if flags.Common.isOverlay:
77 if hasattr(runArgs,
'outputRDO_SGNLFile'):
78 flags.Output.RDO_SGNLFileName = runArgs.outputRDO_SGNLFile
80 if hasattr(runArgs,
'conditionsTag'):
81 flags.IOVDb.GlobalTag = runArgs.conditionsTag
84 from SimuJobTransforms.SimulationHelpers
import getDetectorsFromRunArgs
85 detectors = getDetectorsFromRunArgs(flags, runArgs)
88 from AthenaConfiguration.DetectorConfigFlags
import setupDetectorFlags
89 setupDetectorFlags(flags, detectors, toggle_geometry=
True)
92 from SimulationConfig.SimConfigFlags
import simulationRunArgsToFlags
93 simulationRunArgsToFlags(runArgs, flags)
96 from DigitizationConfig.DigitizationConfigFlags
import digitizationRunArgsToFlags
97 digitizationRunArgsToFlags(runArgs, flags)
100 if not flags.Common.isOverlay:
102 from DigitizationConfig.DigitizationConfigFlags
import setupDigitizationFlags
103 setupDigitizationFlags(runArgs, flags)
104 logFastChain.info(
'Running with pile-up: %s', flags.Digitization.PileUp)
107 if hasattr(runArgs,
'triggerConfig')
and runArgs.triggerConfig ==
'NONE':
108 flags.Detector.EnableL1Calo =
False
111 from PerfMonComps.PerfMonConfigHelpers
import setPerfmonFlagsFromRunArgs
112 setPerfmonFlagsFromRunArgs(flags, runArgs)
115 processPreInclude(runArgs, flags)
118 specialConfigPreInclude(flags)
121 processPreExec(runArgs, flags)
123 if not flags.Common.isOverlay:
125 from DigitizationConfig.DigitizationConfigFlags
import pileupRunArgsToFlags
126 pileupRunArgsToFlags(runArgs, flags)
129 if flags.Digitization.PileUp:
130 from RunDependentSimComps.PileUpUtils
import setupPileUpProfile
131 setupPileUpProfile(flags)
133 flags.Sim.DoFullChain =
True
137 if flags.Common.isOverlay:
138 flags.Input.OverrideRunNumber =
False
140 if flags.Overlay.DataOverlay:
141 flags.Input.OverrideRunNumber =
True
142 from CoolConvUtilities.MagFieldUtils
import getTimeForLB
143 flags.Input.TimeStamps = [int(getTimeForLB(run=flags.Input.RunNumbers[0], LB=flags.Input.LumiBlockNumbers[0])/1e9)]
152 if flags.Common.isOverlay:
153 from OverlayConfiguration.OverlayMetadata
import fastChainOverlayMetadataCheck
154 fastChainOverlayMetadataCheck(flags)
159 if flags.Digitization.PileUp:
160 from DigitizationConfig.PileUpConfig
import PileUpEventLoopMgrCfg
161 cfg = MainServicesCfg(flags, LoopMgr=
"PileUpEventLoopMgr")
162 cfg.merge(PileUpEventLoopMgrCfg(flags))
164 cfg = MainServicesCfg(flags)
166 cfg.merge(PoolReadCfg(flags))
168 from BeamEffects.BeamEffectsAlgConfig
import BeamEffectsAlgCfg
169 cfg.merge(BeamEffectsAlgCfg(flags))
171 if not flags.Digitization.PileUp
and not flags.Common.isOverlay:
174 from xAODEventInfoCnv.xAODEventInfoCnvConfig
import EventInfoUpdateFromContextAlgCfg
175 cfg.merge(EventInfoUpdateFromContextAlgCfg(flags))
177 if flags.Common.isOverlay:
178 from xAODEventInfoCnv.xAODEventInfoCnvConfig
import EventInfoOverlayCfg
179 cfg.merge(EventInfoOverlayCfg(flags))
181 if not flags.Overlay.DataOverlay:
182 from OverlayCopyAlgs.OverlayCopyAlgsConfig
import CopyMcEventCollectionCfg
183 cfg.merge(CopyMcEventCollectionCfg(flags))
185 from ISF_Config.ISF_MainConfig
import ISF_KernelCfg
186 cfg.merge(ISF_KernelCfg(flags))
189 if flags.Common.isOverlay:
190 from OverlayConfiguration.OverlaySteering
import OverlayMainContentCfg
191 cfg.merge(OverlayMainContentCfg(flags))
193 from DigitizationConfig.DigitizationSteering
import DigitizationMainContentCfg
194 cfg.merge(DigitizationMainContentCfg(flags))
197 if flags.Output.HITSFileName:
198 from AthenaConfiguration.Enums
import MetadataCategory
199 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
200 from SimuJobTransforms.SimOutputConfig
import getStreamHITS_ItemList
201 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
202 cfg.merge(OutputStreamCfg(flags,
"HITS", ItemList=getStreamHITS_ItemList(flags)))
203 cfg.merge(SetupMetaDataForStreamCfg(flags,
"HITS", createMetadata=[MetadataCategory.IOVMetaData]))
206 from DigitizationConfig.DigitizationSteering
import DigitizationMessageSvcCfg
207 cfg.merge(DigitizationMessageSvcCfg(flags))
210 specialConfigPostInclude(flags, cfg)
213 processPostInclude(runArgs, flags, cfg)
216 processPostExec(runArgs, flags, cfg)
218 from AthenaConfiguration.Utils
import setupLoggingLevels
219 setupLoggingLevels(flags, cfg)
223 sys.exit(
not sc.isSuccess())