33 #define INCLXX_IN_GEANT4_MODE 1
49 namespace CrossSections {
51 return theCrossSections->elastic(p1,p2);
55 return theCrossSections->total(p1,p2);
59 return theCrossSections->pionNucleon(p1,p2);
63 return theCrossSections->recombination(p1,p2);
67 return theCrossSections->deltaProduction(p1,p2);
71 return theCrossSections->calculateNNAngularSlope(energyCM, iso);
79 piPlusProjectile.
setEnergy(piPlusProjectile.
getMass()+projectileKineticEnergy);
82 piZeroProjectile.
setEnergy(piZeroProjectile.
getMass()+projectileKineticEnergy);
85 piMinusProjectile.
setEnergy(piMinusProjectile.
getMass()+projectileKineticEnergy);
90 const G4double sigmapipp =
total(&piPlusProjectile, &protonTarget);
91 const G4double sigmapipn =
total(&piPlusProjectile, &neutronTarget);
92 const G4double sigmapi0p =
total(&piZeroProjectile, &protonTarget);
93 const G4double sigmapi0n =
total(&piZeroProjectile, &neutronTarget);
94 const G4double sigmapimp =
total(&piMinusProjectile, &protonTarget);
95 const G4double sigmapimn =
total(&piMinusProjectile, &neutronTarget);
104 return interactionDistance;
113 const G4double kineticEnergyPerNucleon = kineticEnergy / aSpecies.
theA;
116 protonProjectile.
setEnergy(protonProjectile.
getMass()+kineticEnergyPerNucleon);
119 neutronProjectile.
setEnergy(neutronProjectile.
getMass()+kineticEnergyPerNucleon);
124 const G4double sigmapp =
total(&protonProjectile, &protonTarget);
125 const G4double sigmapn =
total(&protonProjectile, &neutronTarget);
126 const G4double sigmann =
total(&neutronProjectile, &neutronTarget);
135 return interactionDistance;
139 theCrossSections =
c;
143 delete theCrossSections;
144 theCrossSections = NULL;
void deleteCrossSections()
G4double getMass() const
Get the cached particle mass.
G4double deltaProduction(Particle const *const p1, Particle const *const p2)
G4double recombination(Particle const *const p1, Particle const *const p2)
G4double interactionDistanceNN(const ParticleSpecies &aSpecies, const G4double kineticEnergy)
Compute the "interaction distance".
void setCrossSections(ICrossSections *c)
void setEnergy(G4double energy)
G4double calculateNNAngularSlope(G4double energyCM, G4int iso)
Calculate the slope of the NN DDXS.
G4double pionNucleon(Particle const *const p1, Particle const *const p2)
G4double total(Particle const *const p1, Particle const *const p2)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double interactionDistancePiN(const G4double projectileKineticEnergy)
Compute the "interaction distance".
Abstract interface for the cross-section classes.
const ThreeVector & adjustMomentumFromEnergy()
Rescale the momentum to match the total energy.
G4double elastic(Particle const *const p1, Particle const *const p2)