2from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
3from GeneratorConfig.Sequences
import EvgenSequence, EvgenSequenceFactory
7 result = ComponentAccumulator()
8 import ParticleGun
as PG
9 pg = PG.ParticleGun(randomStream =
"SINGLE", randomSeed = flags.Random.SeedOffset)
10 result.addEventAlgo(pg)
15 result = ComponentAccumulator()
16 import ParticleGun
as PG
17 pg = PG.ParticleGun(randomStream =
"SINGLE", randomSeed = flags.Random.SeedOffset)
18 pg.samplers.append(PG.ParticleSampler())
19 pg.samplers[0].pid = (-13, 13)
20 pg.samplers[0].mom = PG.PtEtaMPhiSampler(pt=[4000, 100000], eta=[1.0, 3.2])
21 pg.samplers[1].pid = (13, -13)
22 pg.samplers[1].mom = PG.PtEtaMPhiSampler(pt=[4000, 100000], eta=[-3.2, -1.0])
23 result.addEventAlgo(pg)
28 result = ComponentAccumulator()
29 import ParticleGun
as PG
30 pg = PG.ParticleGun(randomStream =
"SINGLE", randomSeed = flags.Random.SeedOffset)
32 pg.sampler.mom = PG.EEtaMPhiSampler(energy=10000, eta=[-1,1])
33 result.addEventAlgo(pg)
38 result = ComponentAccumulator()
39 import ParticleGun
as PG
40 pg = PG.ParticleGun(randomStream =
"SINGLE", randomSeed = flags.Random.SeedOffset)
41 pg.sampler.pid = PG.CyclicSeqSampler([-13,13])
42 pg.sampler.mom = PG.PtEtaMPhiSampler(pt=50000, eta=[-4,4])
43 result.addEventAlgo(pg)
48 result = ComponentAccumulator()
49 import ParticleGun
as PG
50 pg = PG.ParticleGun(randomStream =
"SINGLE", randomSeed = flags.Random.SeedOffset)
51 pg.sampler.pid = PG.CyclicSeqSampler([-11,11])
52 pg.sampler.mom = PG.PtEtaMPhiSampler(pt=10000, eta=[-3,3])
53 result.addEventAlgo(pg)
58 result = ComponentAccumulator()
59 import ParticleGun
as PG
60 pg = PG.ParticleGun(randomStream =
"SINGLE", randomSeed = flags.Random.SeedOffset)
61 pg.sampler.pid = PG.CyclicSeqSampler([-211,211])
62 pg.sampler.mom = PG.PtEtaMPhiSampler(pt=50000, eta=[-4,4])
63 result.addEventAlgo(pg)
68 flags.BField.solenoidOn=
False
69 flags.BField.barrelToroidOn=
False
70 flags.BField.endcapToroidOn=
False
71 from SimulationConfig.SimEnums
import VertexSource
72 flags.Sim.VertexSource=VertexSource.AsGenerated
73 flags.Sim.GenerationConfiguration=
"ParticleGun.ParticleGunConfig.ParticleGun_ALFA_SingleParticleCfg"
74 from ForwardTransportSvc.ForwardTransportSvcConfig
import ForwardTransportBeta90mPreInclude
75 ForwardTransportBeta90mPreInclude(flags)
79 result = ComponentAccumulator()
80 import ParticleGun
as PG
81 pg = PG.ParticleGun(randomStream =
"SINGLE", randomSeed = flags.Random.SeedOffset)
83 pg.sampler.mom = PG.EEtaMPhiSampler(energy=3500000, eta=10)
84 result.addEventAlgo(pg)
89 from SimulationConfig.SimEnums
import VertexSource
90 flags.Sim.VertexSource=VertexSource.AsGenerated
91 flags.Sim.GenerationConfiguration=
"ParticleGun.ParticleGunConfig.ParticleGun_ZDC_SingleParticleCfg"
92 from ForwardTransportSvc.ForwardTransportSvcConfig
import ForwardTransportBeta055mPreInclude
93 ForwardTransportBeta055mPreInclude(flags)
97 result = ComponentAccumulator()
98 import ParticleGun
as PG
99 pg = PG.ParticleGun(randomStream =
"SINGLE", randomSeed = flags.Random.SeedOffset)
100 pg.sampler.pid = PG.CyclicSeqSampler([2112, 22, 2112, 22])
101 esampler = PG.CyclicSeqSampler([1360000, 500000, 1360000, 500000])
102 thsampler = PG.CyclicSeqSampler([0, 0, PG.PI, PG.PI])
103 pg.sampler.mom = PG.EThetaMPhiSampler(energy=esampler, theta=thsampler)
104 result.addEventAlgo(pg)
109 result = ComponentAccumulator()
110 import ParticleGun
as PG
111 pg = PG.ParticleGun(randomStream =
"SINGLE", randomSeed = flags.Random.SeedOffset)
122 pg.sampler.pid = flags.TestBeam.BeamPID
123 pg.sampler.pos = PG.PosSampler(
124 x=flags.TestBeam.Xbeam,
125 y=flags.TestBeam.Ybeam,
126 z=flags.TestBeam.Zbeam,
127 t=flags.TestBeam.Tbeam)
128 pg.sampler.mom = PG.EEtaMPhiSampler(
129 energy=flags.TestBeam.BeamEnergy,
132 result.addEventAlgo(pg)
138 Factory for the various PG momentum samplers.
139 kwargs are passed through to the corresponding sampler.
143 if samplerType ==
"EEtaMPhi":
145 return PG.EEtaMPhiSampler(
146 energy=kwargs[
"energy"],
147 eta=kwargs.get(
"eta"),
148 mass=kwargs.get(
"mass", 0),
149 phi=kwargs.get(
"phi", [0, 2*pi]),
152 if samplerType ==
"PtEtaMPhi":
154 return PG.PtEtaMPhiSampler(
156 eta=kwargs.get(
"eta"),
157 mass=kwargs.get(
"mass", 0),
158 phi=kwargs.get(
"phi", [0, 2*pi]),
161 if samplerType ==
"EThetaMPhi":
163 return PG.EThetaMPhiSampler(
164 energy=kwargs[
"energy"],
165 theta=kwargs[
"theta"],
166 mass=kwargs.get(
"mass", 0),
167 phi=kwargs.get(
"phi", [0, 2*pi]),
170 raise ValueError(f
"Unknown samplerType '{samplerType}'")
177 samplerType="EEtaMPhi",
178 randomStream="SINGLE",
183 Generic single-particle gun configuration steered via arguments.
187 pid : int or sequence
188 PDG ID (or sampler) for the primary particle.
190 Which momentum sampler to use: "EEtaMPhi", "PtEtaMPhi", "EThetaMPhi".
192 Name of the random stream (defaults to "SINGLE").
193 randomSeed : int or None
194 Random seed (defaults to flags.Random.SeedOffset if None).
196 Keyword arguments passed to the momentum sampler factory.
197 E.g. for samplerType="EEtaMPhi":
199 for samplerType="PtEtaMPhi":
200 pt=[4000, 100000], eta=[-2.5, 2.5]
202 import ParticleGun
as PG
203 ca = ComponentAccumulator(EvgenSequenceFactory(EvgenSequence.Generator))
206 from GeneratorConfig.GeneratorInfoSvcConfig
import GeneratorInfoSvcCfg
207 ca.merge(GeneratorInfoSvcCfg(flags, Generators=[
"ParticleGun"]), sequenceName=EvgenSequence.Generator.value)
209 if randomSeed
is None:
210 randomSeed = flags.Random.SeedOffset
213 randomStream=randomStream,
214 randomSeed=randomSeed,
223 samplerType=samplerType,
ZDC_SingleParticlePreInclude(flags)
ParticleGun_ZDC_SingleParticleCfg(flags)
ParticleGun_SingleMuonCfg(flags)
ALFA_SingleParticlePreInclude(flags)
ParticleGun_SingleMuonBasicCfg(flags)
ParticleGunBaseCfg(flags)
ParticleGun_SteeredSingleParticleCfg(flags, *, pid, samplerType="EEtaMPhi", randomStream="SINGLE", randomSeed=None, **kwargs)
ParticleGun_TestBeam_SingleParticleCfg(flags)
ParticleGun_SinglePionCfg(flags)
_makeMomentumSampler(PG, samplerType="EEtaMPhi", **kwargs)
ParticleGun_flatpt_2particleCfg(flags)
ParticleGun_ALFA_SingleParticleCfg(flags)
ParticleGun_SingleElectronCfg(flags)