5 """Define methods to configure beam effects with the ComponentAccumulator"""
6 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
7 from AthenaConfiguration.ComponentFactory
import CompFactory
8 from AthenaConfiguration.Enums
import BeamType, ProductionStep
18 """Return a validity checker tool"""
20 acc.setPrivateTools(CompFactory.Simulation.GenEventValidityChecker(name, **kwargs))
25 """Return a event rotator tool"""
27 acc.setPrivateTools(CompFactory.Simulation.GenEventRotator(name, **kwargs))
32 """Return a lorentz booster tool"""
35 acc.setPrivateTools(CompFactory.Simulation.GenEventBeamEffectBooster(name, **kwargs))
40 """Return a vertex positioner tool"""
45 from SimulationConfig.SimEnums
import VertexSource
46 if flags.Sim.VertexSource
is VertexSource.MatchingBkg:
48 elif flags.Sim.VertexSource
is VertexSource.CondDB:
50 elif flags.Sim.VertexSource
is VertexSource.LongBeamspotVertexPositioner:
52 elif flags.Sim.VertexSource
is VertexSource.LRAPositioner:
55 acc.setPrivateTools(CompFactory.Simulation.GenEventVertexPositioner(name, **kwargs))
61 """Return a conditional (? todo) vertex positioner tool"""
62 from RngComps.RngCompsConfig
import AthRNGSvcCfg
66 kwargs.setdefault(
"RandomSvc", acc.getPrimaryAndMerge(
AthRNGSvcCfg(flags)))
67 kwargs.setdefault(
"SimpleTimeSmearing", flags.Sim.VertexTimeSmearing)
68 kwargs.setdefault(
"TimeWidth", flags.Sim.VertexTimeWidth)
70 from BeamSpotConditions.BeamSpotConditionsConfig
import BeamSpotCondAlgCfg
73 acc.setPrivateTools(CompFactory.Simulation.VertexBeamCondPositioner(name, **kwargs))
78 from RngComps.RngCompsConfig
import AthRNGSvcCfg
82 kwargs.setdefault(
"FileName", flags.Beam.vdMScan.ConfigFile)
83 kwargs.setdefault(
"HistName", flags.Beam.vdMScan.PV.PDF)
85 kwargs.setdefault(
"RNGService", acc.getPrimaryAndMerge(
AthRNGSvcCfg(flags)).name)
87 acc.setPrivateTools(CompFactory.Simulation.LRAVertexPositioner(name, **kwargs))
91 """Return a vertex positioner tool that reads a matching vertex from the background input file."""
94 if flags.Overlay.DataOverlay:
95 kwargs.setdefault(
"PrimaryVertexContainerName", f
"{flags.Overlay.BkgPrefix}PrimaryVertices")
97 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
98 acc.merge(
SGInputLoaderCfg(flags, [f
'xAOD::VertexContainer#{kwargs["PrimaryVertexContainerName"]}']))
100 acc.setPrivateTools(CompFactory.Simulation.MatchingBkgVertexPositioner(name, **kwargs))
105 """Return a Crab-Kissing vertex positioner tool"""
108 acc.setPrivateTools(CompFactory.Simulation.CrabKissingVertexPositioner(name, **kwargs))
113 """Return a long beamspot vertex positioner tool"""
116 kwargs.setdefault(
"SimpleTimeSmearing", flags.Sim.VertexTimeSmearing)
117 acc.setPrivateTools(CompFactory.Simulation.LongBeamspotVertexPositioner(name, **kwargs))
122 """Return an accumulator and algorithm for beam effects, wihout output"""
125 from SimulationConfig.SimEnums
import LArParameterization
126 if flags.Sim.LArParameterization
is LArParameterization.FastCaloSim:
127 kwargs.setdefault(
"ISFRun",
True)
129 kwargs.setdefault(
"ISFRun", flags.Sim.ISFRun)
132 if flags.Sim.DoFullChain
and flags.Digitization.PileUp:
133 kwargs.setdefault(
"InputMcEventCollection",
"OriginalEvent_SG+GEN_EVENT")
135 kwargs.setdefault(
"InputMcEventCollection",
"GEN_EVENT")
137 if flags.Sim.DoFullChain
and flags.Common.isOverlay
and not flags.Overlay.DataOverlay:
138 kwargs.setdefault(
'OutputMcEventCollection', f
"{flags.Overlay.SigPrefix}TruthEvent")
140 kwargs.setdefault(
'OutputMcEventCollection',
'BeamTruthEvent')
145 from SimulationConfig.SimEnums
import VertexSource
146 if not flags.Sim.VertexSource == VertexSource.AsGenerated:
148 from SimulationConfig.SimEnums
import CavernBackground
149 if flags.Beam.Type
not in [BeamType.Cosmics, BeamType.TestBeam]
and flags.Sim.CavernBackground
is not CavernBackground.Read:
153 kwargs.setdefault(
"GenEventManipulators", manipulators)
155 acc.addEventAlgo(CompFactory.Simulation.BeamEffectsAlg(name, **kwargs), primary=
True)
160 """Return an accumulator and algorithm for beam effects, with output"""
163 alg = acc.getPrimary()
164 ItemList = [
"McEventCollection#" + alg.OutputMcEventCollection]
165 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
166 acc.merge(
OutputStreamCfg(flags,
"HITS", ItemList=ItemList, disableEventTag=
True))
171 from BeamSpotConditions.BeamSpotConditionsConfig
import BeamSpotCondAlgCfg
174 kwargs.setdefault(
"InputKey",
"Input_EventInfo")
175 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
176 kwargs.setdefault(
"OutputKey", flags.Overlay.BkgPrefix +
"EventInfo")
178 kwargs.setdefault(
"OutputKey",
"EventInfo")
180 acc.addEventAlgo(CompFactory.Simulation.BeamSpotFixerAlg(name, **kwargs))
186 kwargs.setdefault(
'ApplyPatch',
True)
187 kwargs.setdefault(
'RemovePatch',
True)
188 result.addService(CompFactory.Simulation.ZeroLifetimePositioner(name, **kwargs), primary =
True)
193 from BeamSpotConditions.BeamSpotConditionsConfig
import BeamSpotCondAlgCfg
196 kwargs.setdefault(
"Input_beam_sigma_z", flags.Digitization.InputBeamSigmaZ)
198 acc.addEventAlgo(CompFactory.Simulation.BeamSpotReweightingAlg(name, **kwargs))
201 from AthenaConfiguration.MainServicesConfig
import OutputUsageIgnoreCfg
207 if __name__ ==
"__main__":
208 from AthenaCommon.Logging
import log
210 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
211 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
213 from AthenaConfiguration.TestDefaults
import defaultGeometryTags
214 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
221 inputDir = os.environ.get(
"ATLAS_REFERENCE_DATA",
222 "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art")
224 flags.Input.Files = [
226 "/SimCoreTests/e_E50_eta34_49.EVNT.pool.root"
230 flags.Output.HITSFileName =
"myHITS.pool.root"
233 from SimulationConfig.SimEnums
import VertexSource
235 flags.Sim.VertexSource = VertexSource.CondDB
239 flags.Input.isMC =
True
240 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
241 flags.IOVDb.GlobalTag =
"OFLCOND-MC16-SDR-14"
242 flags.Input.RunNumbers = [284500]
255 cfg.getService(
"StoreGateSvc").Dump =
True
256 cfg.printConfig(withDetails=
True)
260 with open(
"BeamEffectsAlg.pkl",
"wb")
as f:
264 cfg.run(maxEvents=20)