ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Generators
ParticleGun
share
common
ParticleGun_FastCalo_NoChargeFlip_Config.py
Go to the documentation of this file.
1
#! -*- python -*-
2
evgenConfig.description =
"Single particle gun for FastCaloSim event generation"
3
evgenConfig.keywords = [
"singleParticle"
,]
4
evgenConfig.generators = [
"ParticleGun"
]
5
evgenConfig.contact = [
"david.sosa@cern.ch"
]
6
7
import
ParticleGun
as
PG
8
import
ROOT
9
10
class
MyParticleSampler
(PG.ParticleSampler):
11
def
__init__
(self,energy,eta,pid,shift_z=0):
12
self.
pid
= pid
13
self.
shift_z
= shift_z
14
pdg_table = ROOT.TDatabasePDG.Instance()
#Gives values in GeV
15
mass = pdg_table.GetParticle(self.
pid
()).Mass()*1000.
16
self.
mom1
= PG.EEtaMPhiSampler(energy=energy,eta=eta,mass=mass)
17
18
def
shoot
(self):
19
pid = self.
pid
()
20
21
shift_z = self.
shift_z
22
23
mom = self.
mom1
.
shoot
()
24
pos_temp = mom.Vect().Unit()
25
26
# Would it hit the barrel, or the endcap?
27
if
abs(pos_temp.Z())/3550.<pos_temp.Perp()/1148.:
# Hit the barrel!
28
pos_temp *= 1148./pos_temp.Perp()
29
else
:
# Hit the endcap!
30
pos_temp *= 3550./abs(pos_temp.Z())
31
32
# Shift position of vector in the Z direction
33
pos_temp_2 = ROOT.TVector3()
34
pos_temp_2.SetXYZ(pos_temp.X(), pos_temp.Y(), pos_temp.Z()+shift_z)
35
pos_temp_2 *= 1. / pos_temp_2.Mag();
# reduce magnitude of vector
36
37
# recalculate; Would it hit the barrel, or the endcap?
38
if
abs(pos_temp_2.Z())/3550.<pos_temp_2.Perp()/1148.:
39
pos_temp_2 *= 1148./pos_temp_2.Perp()
40
else
:
41
pos_temp_2 *= 3550./abs(pos_temp_2.Z())
42
43
pos = ROOT.TLorentzVector(pos_temp_2.X(),pos_temp_2.Y(),pos_temp_2.Z(), pos_temp_2.Mag())
44
45
#print "pid ",pid
46
47
return
[ PG.SampledParticle( pid , mom , pos ) ]
48
49
myE = float(jofile.split(
'_E'
)[1].
split
(
'_'
)[0])
50
myZV = float(jofile.split(
'_'
)[-1].
split
(
'.py'
)[0].
replace
(
"m"
,
"-"
))
51
52
myPDGID = jofile.split(
'_pid'
)[1].
split
(
'_'
)[0].
replace
(
'n'
,
'-'
)
53
myPDGID = int(float(myPDGID.split(
'_pid'
)[1].
split
(
'_'
)[0].
replace
(
'p'
,
''
)))
54
55
eta_li = []
56
57
if
"disj"
in
jofile:
58
myLowEta1 = 0.01*float(jofile.split(
'eta_'
)[1].
split
(
'_'
)[0].
replace
(
'm'
,
'-'
))
59
myLowEta2 = 0.01*float(jofile.split(
'eta_'
)[1].
split
(
'_'
)[1].
replace
(
'm'
,
'-'
))
60
myHighEta1 = 0.01*float(jofile.split(
'eta_'
)[1].
split
(
'_'
)[2].
replace
(
'm'
,
'-'
))
61
myHighEta2 = 0.01*float(jofile.split(
'eta_'
)[1].
split
(
'_'
)[3].
replace
(
'm'
,
'-'
))
62
eta_li.extend([myLowEta1,myLowEta2,myHighEta1,myHighEta2])
63
64
else
:
65
myLowEta = 0.01*float(jofile.split(
'eta'
)[1].
split
(
'_'
)[0].
replace
(
'm'
,
'-'
))
66
myHighEta = 0.01*float(jofile.split(
'eta'
)[1].
split
(
'_'
)[1].
replace
(
'm'
,
'-'
))
67
eta_li.extend([myLowEta,myHighEta])
68
69
70
print
"================ SETTTINGS ================="
71
print
(
"energy = "
, myE)
72
print
(
"eta = "
, eta_li)
73
print
(
"pid = "
, myPDGID)
74
print
(
"shift_z = "
, myZV)
75
print
"============================================"
76
77
genSeq += PG.ParticleGun()
78
genSeq.ParticleGun.sampler =
MyParticleSampler
(energy=myE,eta=eta_li,pid=(myPDGID,myPDGID),shift_z=myZV)
#unmixed
ParticleGun_FastCalo_NoChargeFlip_Config.MyParticleSampler
Definition
ParticleGun_FastCalo_NoChargeFlip_Config.py:10
ParticleGun_FastCalo_NoChargeFlip_Config.MyParticleSampler.pid
pid
Definition
ParticleGun_FastCalo_NoChargeFlip_Config.py:12
ParticleGun_FastCalo_NoChargeFlip_Config.MyParticleSampler.mom1
mom1
Definition
ParticleGun_FastCalo_NoChargeFlip_Config.py:16
ParticleGun_FastCalo_NoChargeFlip_Config.MyParticleSampler.shift_z
shift_z
Definition
ParticleGun_FastCalo_NoChargeFlip_Config.py:13
ParticleGun_FastCalo_NoChargeFlip_Config.MyParticleSampler.__init__
__init__(self, energy, eta, pid, shift_z=0)
Definition
ParticleGun_FastCalo_NoChargeFlip_Config.py:11
ParticleGun_FastCalo_NoChargeFlip_Config.MyParticleSampler.shoot
shoot(self)
Definition
ParticleGun_FastCalo_NoChargeFlip_Config.py:18
replace
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition
hcg.cxx:312
split
std::vector< std::string > split(const std::string &s, const std::string &t=":")
Definition
hcg.cxx:179
Generated on
for ATLAS Offline Software by
1.17.0