4 // Author: I. Hrivnacova
6 // Class AliGunParticle
7 // --------------------
8 // See the class description in the header file.
10 #include "AliGunParticle.h"
12 #include <G4ParticleDefinition.hh>
14 //_____________________________________________________________________________
15 AliGunParticle::AliGunParticle()
16 : fParticleDefinition(0),
17 fParticleMomentum(G4ThreeVector(0., 0., 1.)),
18 fPosition(G4ThreeVector()),
20 fPolarization(G4ThreeVector())
25 //_____________________________________________________________________________
26 AliGunParticle::AliGunParticle(G4ParticleDefinition* particleDef,
27 G4ParticleMomentum momentum,
28 G4ThreeVector position,
30 G4ThreeVector polarization )
31 : fParticleDefinition(particleDef),
32 fParticleMomentum(momentum),
35 fPolarization(polarization)
40 //_____________________________________________________________________________
41 AliGunParticle::AliGunParticle(G4ParticleDefinition* particleDef,
42 G4ParticleMomentum momentumDir,
44 G4ThreeVector position,
46 G4ThreeVector polarization )
47 : fParticleDefinition(particleDef),
50 fPolarization(polarization)
53 G4double mass = fParticleDefinition->GetPDGMass();
54 G4double energy = kinEnergy + mass;
55 G4double pmag = sqrt(energy*energy - mass*mass);
56 fParticleMomentum = pmag*momentumDir;
59 //_____________________________________________________________________________
60 AliGunParticle::AliGunParticle(const AliGunParticle& right) {
66 //_____________________________________________________________________________
67 AliGunParticle::~AliGunParticle() {
73 //_____________________________________________________________________________
74 AliGunParticle& AliGunParticle::operator=(const AliGunParticle& right)
76 // check assignement to self
77 if (this == &right) return *this;
79 fParticleDefinition = right.fParticleDefinition;
80 fParticleMomentum = right.fParticleMomentum;
81 fPosition = right.fPosition;
83 fPolarization = right.fPolarization;
88 //_____________________________________________________________________________
89 G4int AliGunParticle::operator==(const AliGunParticle& right) const
92 G4int returnValue = 0;
93 if (fParticleDefinition == right.fParticleDefinition
94 && fParticleMomentum == right.fParticleMomentum
95 && fPosition == right.fPosition
96 && fTime == right.fTime
97 && fPolarization == right.fPolarization) returnValue = 1;
102 //_____________________________________________________________________________
103 G4int AliGunParticle::operator!=(const AliGunParticle& right) const
106 G4int returnValue = 1;
107 if (*this == right) returnValue = 0;
114 //_____________________________________________________________________________
115 void AliGunParticle::Print() const
117 // Prints particle properties.
120 G4cout << " particle name: ";
121 G4cout << fParticleDefinition->GetParticleName() << G4endl;
122 G4cout << " particle momentum: ";
123 G4cout << fParticleMomentum << G4endl;
124 G4cout << " particle position: ";
125 G4cout << fPosition << " mm" << G4endl;
126 G4cout << " particle time: ";
127 G4cout << fTime << " s" << G4endl;
128 G4cout << " particle polarization: ";
129 G4cout << fPolarization << G4endl;
132 //_____________________________________________________________________________
133 void AliGunParticle::SetKineticEnergy(G4double kinEnergy)
135 // Sets kinetic energy.
138 G4double mass = fParticleDefinition->GetPDGMass();
139 G4double energy = kinEnergy + mass;
140 G4double pmag = sqrt(energy*energy - mass*mass);
141 fParticleMomentum.setMag(pmag);
144 //_____________________________________________________________________________
145 G4double AliGunParticle::GetKineticEnergy() const
147 // Gets kinetic energy.
150 G4double mass = fParticleDefinition->GetPDGMass();
152 = sqrt(fParticleMomentum.mag()*fParticleMomentum.mag() + mass*mass);
153 return energy - mass;