00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #define INCLXX_IN_GEANT4_MODE 1
00034
00035 #include "globals.hh"
00036
00037 #ifndef KinematicsUtils_hh
00038 #define KinematicsUtils_hh 1
00039
00040 #include "G4INCLThreeVector.hh"
00041 #include "G4INCLParticle.hh"
00042 #include "G4INCLNucleus.hh"
00043 #include "G4INCLParticleSpecies.hh"
00044
00045 namespace G4INCL {
00046
00047 class KinematicsUtils {
00048 public:
00049 static void transformToLocalEnergyFrame(Nucleus const * const n, Particle * const p);
00050 static G4double getLocalEnergy(Nucleus const * const n, Particle * const p);
00051
00052 static ThreeVector makeBoostVector(Particle const * const p1, Particle const * const p2);
00053 static G4double totalEnergyInCM(Particle const * const p1, Particle const * const p2);
00054 static G4double squareTotalEnergyInCM(Particle const * const p1, Particle const * const p2);
00055
00068 static G4double momentumInCM(Particle const * const p1, Particle const * const p2);
00069
00070 static G4double momentumInCM(const G4double E, const G4double M1, const G4double M2);
00071
00084 static G4double momentumInLab(Particle const * const p1, Particle const * const p2);
00085 static G4double momentumInLab(const G4double s, const G4double m1, const G4double m2);
00086 static G4double sumTotalEnergies(const ParticleList &);
00087 static ThreeVector sumMomenta(const ParticleList &);
00088 static G4double energy(const ThreeVector &p, const G4double m);
00089 static G4double invariantMass(const G4double E, const ThreeVector & p);
00090 static G4double gammaFromKineticEnergy(const ParticleSpecies &p, const G4double EKin);
00091 };
00092 }
00093
00094 #endif