4 // See the class description in the header file.
6 #include "AliGunParticle.h"
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) {
50 fParticleDefinition = right.fParticleDefinition;
51 fParticleMomentum = right.fParticleMomentum;
52 fPosition = right.fPosition;
54 fPolarization = right.fPolarization;
57 AliGunParticle::~AliGunParticle() {
63 AliGunParticle& AliGunParticle::operator=(const AliGunParticle& right)
65 // check assignement to self
66 if (this == &right) return *this;
68 fParticleDefinition = right.fParticleDefinition;
69 fParticleMomentum = right.fParticleMomentum;
70 fPosition = right.fPosition;
72 fPolarization = right.fPolarization;
77 G4int AliGunParticle::operator==(const AliGunParticle& right) const
80 G4int returnValue = 0;
81 if (fParticleDefinition == right.fParticleDefinition
82 && fParticleMomentum == right.fParticleMomentum
83 && fPosition == right.fPosition
84 && fTime == right.fTime
85 && fPolarization == right.fPolarization) returnValue = 1;
90 G4int AliGunParticle::operator!=(const AliGunParticle& right) const
93 G4int returnValue = 1;
94 if (*this == right) returnValue = 0;
101 void AliGunParticle::Print() const
103 // Prints particle properties.
106 G4cout << " particle name: ";
107 G4cout << fParticleDefinition->GetParticleName() << endl;
108 G4cout << " particle momentum: ";
109 G4cout << fParticleMomentum << endl;
110 G4cout << " particle position: ";
111 G4cout << fPosition << " mm" << endl;
112 G4cout << " particle time: ";
113 G4cout << fTime << " s" << endl;
114 G4cout << " particle polarization: ";
115 G4cout << fPolarization << endl;
118 void AliGunParticle::SetKineticEnergy(G4double kinEnergy)
120 // Sets kinetic energy.
123 G4double mass = fParticleDefinition->GetPDGMass();
124 G4double energy = kinEnergy + mass;
125 G4double pmag = sqrt(energy*energy - mass*mass);
126 fParticleMomentum.setMag(pmag);
129 G4double AliGunParticle::GetKineticEnergy() const
131 // Gets kinetic energy.
134 G4double mass = fParticleDefinition->GetPDGMass();
136 = sqrt(fParticleMomentum.mag()*fParticleMomentum.mag() + mass*mass);
137 return energy - mass;