4 // See the class description in the header file.
6 #include "AliGunParticle.h"
8 #include <G4ParticleDefinition.hh>
10 //_____________________________________________________________________________
11 AliGunParticle::AliGunParticle()
12 : fParticleDefinition(0),
13 fParticleMomentum(G4ThreeVector(0., 0., 1.)),
14 fPosition(G4ThreeVector()),
16 fPolarization(G4ThreeVector())
21 //_____________________________________________________________________________
22 AliGunParticle::AliGunParticle(G4ParticleDefinition* particleDef,
23 G4ParticleMomentum momentum, G4ThreeVector position,
24 G4double time, G4ThreeVector polarization )
25 : fParticleDefinition(particleDef),
26 fParticleMomentum(momentum),
29 fPolarization(polarization)
34 //_____________________________________________________________________________
35 AliGunParticle::AliGunParticle( G4ParticleDefinition* particleDef,
36 G4ParticleMomentum momentumDir, G4double kinEnergy,
37 G4ThreeVector position, G4double time,
38 G4ThreeVector polarization )
39 : fParticleDefinition(particleDef),
42 fPolarization(polarization)
45 G4double mass = fParticleDefinition->GetPDGMass();
46 G4double energy = kinEnergy + mass;
47 G4double pmag = sqrt(energy*energy - mass*mass);
48 fParticleMomentum = pmag*momentumDir;
51 //_____________________________________________________________________________
52 AliGunParticle::AliGunParticle(const AliGunParticle& right) {
58 //_____________________________________________________________________________
59 AliGunParticle::~AliGunParticle() {
65 //_____________________________________________________________________________
66 AliGunParticle& AliGunParticle::operator=(const AliGunParticle& right)
68 // check assignement to self
69 if (this == &right) return *this;
71 fParticleDefinition = right.fParticleDefinition;
72 fParticleMomentum = right.fParticleMomentum;
73 fPosition = right.fPosition;
75 fPolarization = right.fPolarization;
80 //_____________________________________________________________________________
81 G4int AliGunParticle::operator==(const AliGunParticle& right) const
84 G4int returnValue = 0;
85 if (fParticleDefinition == right.fParticleDefinition
86 && fParticleMomentum == right.fParticleMomentum
87 && fPosition == right.fPosition
88 && fTime == right.fTime
89 && fPolarization == right.fPolarization) returnValue = 1;
94 //_____________________________________________________________________________
95 G4int AliGunParticle::operator!=(const AliGunParticle& right) const
98 G4int returnValue = 1;
99 if (*this == right) returnValue = 0;
106 //_____________________________________________________________________________
107 void AliGunParticle::Print() const
109 // Prints particle properties.
112 G4cout << " particle name: ";
113 G4cout << fParticleDefinition->GetParticleName() << G4endl;
114 G4cout << " particle momentum: ";
115 G4cout << fParticleMomentum << G4endl;
116 G4cout << " particle position: ";
117 G4cout << fPosition << " mm" << G4endl;
118 G4cout << " particle time: ";
119 G4cout << fTime << " s" << G4endl;
120 G4cout << " particle polarization: ";
121 G4cout << fPolarization << G4endl;
124 //_____________________________________________________________________________
125 void AliGunParticle::SetKineticEnergy(G4double kinEnergy)
127 // Sets kinetic energy.
130 G4double mass = fParticleDefinition->GetPDGMass();
131 G4double energy = kinEnergy + mass;
132 G4double pmag = sqrt(energy*energy - mass*mass);
133 fParticleMomentum.setMag(pmag);
136 //_____________________________________________________________________________
137 G4double AliGunParticle::GetKineticEnergy() const
139 // Gets kinetic energy.
142 G4double mass = fParticleDefinition->GetPDGMass();
144 = sqrt(fParticleMomentum.mag()*fParticleMomentum.mag() + mass*mass);
145 return energy - mass;