4 // See the class description in the header file.
6 #include "AliGunParticle.h"
8 #include <G4ParticleDefinition.hh>
10 AliGunParticle::AliGunParticle()
11 : fParticleDefinition(0),
12 fParticleMomentum(G4ThreeVector(0., 0., 1.)),
13 fPosition(G4ThreeVector()),
15 fPolarization(G4ThreeVector())
20 AliGunParticle::AliGunParticle(G4ParticleDefinition* particleDef,
21 G4ParticleMomentum momentum, G4ThreeVector position,
22 G4double time, G4ThreeVector polarization )
23 : fParticleDefinition(particleDef),
24 fParticleMomentum(momentum),
27 fPolarization(polarization)
32 AliGunParticle::AliGunParticle( G4ParticleDefinition* particleDef,
33 G4ParticleMomentum momentumDir, G4double kinEnergy,
34 G4ThreeVector position, G4double time,
35 G4ThreeVector polarization )
36 : fParticleDefinition(particleDef),
39 fPolarization(polarization)
42 G4double mass = fParticleDefinition->GetPDGMass();
43 G4double energy = kinEnergy + mass;
44 G4double pmag = sqrt(energy*energy - mass*mass);
45 fParticleMomentum = pmag*momentumDir;
48 AliGunParticle::AliGunParticle(const AliGunParticle& right) {
54 AliGunParticle::~AliGunParticle() {
60 AliGunParticle& AliGunParticle::operator=(const AliGunParticle& right)
62 // check assignement to self
63 if (this == &right) return *this;
65 fParticleDefinition = right.fParticleDefinition;
66 fParticleMomentum = right.fParticleMomentum;
67 fPosition = right.fPosition;
69 fPolarization = right.fPolarization;
74 G4int AliGunParticle::operator==(const AliGunParticle& right) const
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;
87 G4int AliGunParticle::operator!=(const AliGunParticle& right) const
90 G4int returnValue = 1;
91 if (*this == right) returnValue = 0;
98 void AliGunParticle::Print() const
100 // Prints particle properties.
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;
115 void AliGunParticle::SetKineticEnergy(G4double kinEnergy)
117 // Sets kinetic energy.
120 G4double mass = fParticleDefinition->GetPDGMass();
121 G4double energy = kinEnergy + mass;
122 G4double pmag = sqrt(energy*energy - mass*mass);
123 fParticleMomentum.setMag(pmag);
126 G4double AliGunParticle::GetKineticEnergy() const
128 // Gets kinetic energy.
131 G4double mass = fParticleDefinition->GetPDGMass();
133 = sqrt(fParticleMomentum.mag()*fParticleMomentum.mag() + mass*mass);
134 return energy - mass;