]> git.uio.no Git - u/mrichter/AliRoot.git/blob - AliGeant4/AliGunParticle.cxx
New&delete used for array with variable size
[u/mrichter/AliRoot.git] / AliGeant4 / AliGunParticle.cxx
1 // $Id$
2 // Category: event
3 //
4 // See the class description in the header file.
5
6 #include "AliGunParticle.h"
7
8 #include <G4ParticleDefinition.hh>
9
10 AliGunParticle::AliGunParticle()
11   : fParticleDefinition(0),
12     fParticleMomentum(G4ThreeVector(0., 0., 1.)),
13     fPosition(G4ThreeVector()),
14     fTime(0),
15     fPolarization(G4ThreeVector())
16 {
17 //
18 }
19
20 AliGunParticle::AliGunParticle(G4ParticleDefinition* particleDef,
21                    G4ParticleMomentum momentum, G4ThreeVector position, 
22                    G4double time, G4ThreeVector polarization )
23   : fParticleDefinition(particleDef),
24     fParticleMomentum(momentum),
25     fPosition(position),
26     fTime(time),
27     fPolarization(polarization)
28 {
29 //
30 }
31
32 AliGunParticle::AliGunParticle( G4ParticleDefinition* particleDef, 
33                    G4ParticleMomentum momentumDir, G4double kinEnergy,
34                    G4ThreeVector position, G4double time, 
35                    G4ThreeVector polarization )
36   : fParticleDefinition(particleDef),
37     fPosition(position),
38     fTime(time),
39     fPolarization(polarization)
40 {
41 //   
42   G4double mass = fParticleDefinition->GetPDGMass();
43   G4double energy = kinEnergy + mass;
44   G4double pmag = sqrt(energy*energy - mass*mass);
45   fParticleMomentum = pmag*momentumDir;
46 }
47
48 AliGunParticle::AliGunParticle(const AliGunParticle& right) {
49 //
50   // copy stuff
51   *this = right;
52 }
53
54 AliGunParticle::~AliGunParticle() {
55 //
56 }
57
58 // operators
59
60 AliGunParticle& AliGunParticle::operator=(const AliGunParticle& right)
61 {    
62   // check assignement to self
63   if (this == &right) return *this;
64
65   fParticleDefinition = right.fParticleDefinition;
66   fParticleMomentum = right.fParticleMomentum;
67   fPosition = right.fPosition; 
68   fTime = right.fTime;
69   fPolarization = right.fPolarization; 
70   
71   return *this;
72 }
73
74 G4int AliGunParticle::operator==(const AliGunParticle& right) const 
75 {
76 //    
77   G4int returnValue = 0;
78   if (fParticleDefinition == right.fParticleDefinition 
79       && fParticleMomentum == right.fParticleMomentum 
80       && fPosition == right.fPosition 
81       && fTime == right.fTime 
82       && fPolarization == right.fPolarization)  returnValue = 1; 
83
84   return returnValue;  
85 }
86
87 G4int AliGunParticle::operator!=(const AliGunParticle& right) const
88 {
89 //    
90   G4int returnValue = 1;
91   if (*this == right) returnValue = 0; 
92   
93   return returnValue;
94 }
95
96 // public methods
97
98 void AliGunParticle::Print() const
99 {
100 // Prints particle properties.
101 // ---
102
103   G4cout << "    particle name: ";
104   G4cout << fParticleDefinition->GetParticleName() << G4endl;
105   G4cout << "    particle momentum: ";
106   G4cout << fParticleMomentum << G4endl;
107   G4cout << "    particle position: ";
108   G4cout << fPosition << " mm" << G4endl;
109   G4cout << "    particle time: ";
110   G4cout << fTime     << " s" << G4endl;
111   G4cout << "    particle polarization: ";
112   G4cout << fPolarization << G4endl;
113 }  
114
115 void AliGunParticle::SetKineticEnergy(G4double kinEnergy)
116 {
117 // Sets kinetic energy.
118 // ---
119
120   G4double mass = fParticleDefinition->GetPDGMass();
121   G4double energy = kinEnergy + mass;
122   G4double pmag = sqrt(energy*energy - mass*mass);
123   fParticleMomentum.setMag(pmag); 
124 }
125
126 G4double AliGunParticle::GetKineticEnergy() const
127 {
128 // Gets kinetic energy.
129 // ---
130
131   G4double mass = fParticleDefinition->GetPDGMass();
132   G4double energy 
133    = sqrt(fParticleMomentum.mag()*fParticleMomentum.mag() + mass*mass);
134   return energy - mass;
135 }
136
137
138
139
140
141
142
143