ATLAS Offline Software
Public Member Functions | Public Attributes | List of all members
ParticleGun_FastCalo_Config_Erange.MyParticleSampler Class Reference
Inheritance diagram for ParticleGun_FastCalo_Config_Erange.MyParticleSampler:
Collaboration diagram for ParticleGun_FastCalo_Config_Erange.MyParticleSampler:

Public Member Functions

def __init__ (self, energy, eta, pid, shift_z=0)
 
def shoot (self)
 

Public Attributes

 pid
 
 shift_z
 
 mom1
 

Detailed Description

Definition at line 10 of file ParticleGun_FastCalo_Config_Erange.py.

Constructor & Destructor Documentation

◆ __init__()

def ParticleGun_FastCalo_Config_Erange.MyParticleSampler.__init__ (   self,
  energy,
  eta,
  pid,
  shift_z = 0 
)

Definition at line 11 of file ParticleGun_FastCalo_Config_Erange.py.

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 

Member Function Documentation

◆ shoot()

def ParticleGun_FastCalo_Config_Erange.MyParticleSampler.shoot (   self)

Definition at line 18 of file ParticleGun_FastCalo_Config_Erange.py.

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  # Define geometry
27  barrelR1 = 1148.0
28  barrelR2 = 120.0
29  barrelR3 = 41.0
30  endcapZ1 = 3550.0
31  endcapZ2 = 4587.0
32 
33  # Would it hit the barrel, or the endcap?
34  tanTheta = pos_temp.Perp() / abs( pos_temp.Z() );
35  if tanTheta > barrelR1 / endcapZ1:
36  pos_temp *= barrelR1 / pos_temp.Perp()
37  elif tanTheta > barrelR2 / endcapZ1:
38  pos_temp *= endcapZ1 / abs( pos_temp.Z() )
39  elif tanTheta > barrelR2 / endcapZ2:
40  pos_temp *= barrelR2 / pos_temp.Perp()
41  elif tanTheta > barrelR3 / endcapZ2:
42  pos_temp *= endcapZ2 / abs( pos_temp.Z() )
43  else:
44  pos_temp *= barrelR3 / pos_temp.Perp()
45 
46  # Shift position of vector in the Z direction
47  pos_temp_2 = ROOT.TVector3()
48  pos_temp_2.SetXYZ(pos_temp.X(), pos_temp.Y(), pos_temp.Z()+shift_z)
49  pos_temp_2 *= 1. / pos_temp_2.Mag(); # reduce magnitude of vector
50 
51  # recalculate; Would it hit the barrel, or the endcap?
52  tanTheta_2 = pos_temp_2.Perp() / abs( pos_temp_2.Z() );
53  if tanTheta_2 > barrelR1 / endcapZ1:
54  pos_temp_2 *= barrelR1 / pos_temp_2.Perp()
55  elif tanTheta_2 > barrelR2 / endcapZ1:
56  pos_temp_2 *= endcapZ1 / abs( pos_temp_2.Z() )
57  elif tanTheta_2 > barrelR2 / endcapZ2:
58  pos_temp_2 *= barrelR2 / pos_temp_2.Perp()
59  elif tanTheta_2 > barrelR3 / endcapZ2:
60  pos_temp_2 *= endcapZ2 / abs( pos_temp_2.Z() )
61  else:
62  pos_temp_2 *= barrelR3 / pos_temp_2.Perp()
63 
64  pos = ROOT.TLorentzVector(pos_temp_2.X(),pos_temp_2.Y(),pos_temp_2.Z(), pos_temp_2.Mag())
65 
66  #print "pid ",pid
67 
68  return [ PG.SampledParticle( pid , mom , pos ) ]
69 

Member Data Documentation

◆ mom1

ParticleGun_FastCalo_Config_Erange.MyParticleSampler.mom1

Definition at line 16 of file ParticleGun_FastCalo_Config_Erange.py.

◆ pid

ParticleGun_FastCalo_Config_Erange.MyParticleSampler.pid

Definition at line 12 of file ParticleGun_FastCalo_Config_Erange.py.

◆ shift_z

ParticleGun_FastCalo_Config_Erange.MyParticleSampler.shift_z

Definition at line 13 of file ParticleGun_FastCalo_Config_Erange.py.


The documentation for this class was generated from the following file:
python.processes.powheg.ZZ.ZZ.__init__
def __init__(self, base_directory, **kwargs)
Constructor: all process options are set here.
Definition: ZZ.py:18