34 #define INCLXX_IN_GEANT4_MODE 1
54 namespace CrossSections {
56 return theCrossSections->elastic(p1,p2);
60 return theCrossSections->total(p1,p2);
64 return theCrossSections->NDeltaToNN(p1,p2);
68 return theCrossSections->NNToNDelta(p1,p2);
72 return theCrossSections->NNToxPiNN(xpi,p1,p2);
76 return theCrossSections->piNToDelta(p1,p2);
80 return theCrossSections->piNToxPiN(xpi,p1,p2);
84 return theCrossSections->piNToEtaN(p1,p2);
88 return theCrossSections->piNToOmegaN(p1,p2);
92 return theCrossSections->piNToEtaPrimeN(p1,p2);
96 return theCrossSections->etaNToPiN(p1,p2);
100 return theCrossSections->etaNToPiPiN(p1,p2);
104 return theCrossSections->omegaNToPiN(p1,p2);
108 return theCrossSections->omegaNToPiPiN(p1,p2);
112 return theCrossSections->etaPrimeNToPiN(p1,p2);
116 return theCrossSections->NNToNNEta(p1,p2);
120 return theCrossSections->NNToNNEtaExclu(p1,p2);
124 return theCrossSections->NNToNNEtaxPi(xpi,p1,p2);
128 return theCrossSections->NNToNDeltaEta(p1,p2);
132 return theCrossSections->NNToNNOmega(p1,p2);
136 return theCrossSections->NNToNNOmegaExclu(p1,p2);
140 return theCrossSections->NNToNNOmegaxPi(xpi,p1,p2);
144 return theCrossSections->NNToNDeltaOmega(p1,p2);
148 return theCrossSections->calculateNNAngularSlope(energyCM, iso);
156 piPlusProjectile.
setEnergy(piPlusProjectile.
getMass()+projectileKineticEnergy);
159 piZeroProjectile.
setEnergy(piZeroProjectile.
getMass()+projectileKineticEnergy);
162 piMinusProjectile.
setEnergy(piMinusProjectile.
getMass()+projectileKineticEnergy);
167 const G4double sigmapipp =
total(&piPlusProjectile, &protonTarget);
168 const G4double sigmapipn =
total(&piPlusProjectile, &neutronTarget);
169 const G4double sigmapi0p =
total(&piZeroProjectile, &protonTarget);
170 const G4double sigmapi0n =
total(&piZeroProjectile, &neutronTarget);
171 const G4double sigmapimp =
total(&piMinusProjectile, &protonTarget);
172 const G4double sigmapimn =
total(&piMinusProjectile, &neutronTarget);
181 return interactionDistance;
190 const G4double kineticEnergyPerNucleon = kineticEnergy / aSpecies.
theA;
193 protonProjectile.
setEnergy(protonProjectile.
getMass()+kineticEnergyPerNucleon);
196 neutronProjectile.
setEnergy(neutronProjectile.
getMass()+kineticEnergyPerNucleon);
201 const G4double sigmapp =
total(&protonProjectile, &protonTarget);
202 const G4double sigmapn =
total(&protonProjectile, &neutronTarget);
203 const G4double sigmann =
total(&neutronProjectile, &neutronTarget);
212 return interactionDistance;
216 theCrossSections = c;
220 delete theCrossSections;
221 theCrossSections = NULL;
235 INCL_WARN(
"Truncated multipion cross sections were requested, but the specified maximum\n"
236 <<
"number of pions is <=0. Falling back to standard multipion cross-sections.\n");
G4double NNToNNEtaxPi(const G4int xpi, Particle const *const p1, Particle const *const p2)
void deleteCrossSections()
G4double getMass() const
Get the cached particle mass.
Truncated multipion cross sections.
G4double etaNToPiN(Particle const *const p1, Particle const *const p2)
G4double omegaNToPiN(Particle const *const p1, Particle const *const p2)
G4double NNToNNOmegaxPi(const G4int xpi, Particle const *const p1, Particle const *const p2)
G4double etaNToPiPiN(Particle const *const p1, Particle const *const p2)
G4double interactionDistanceNN(const ParticleSpecies &aSpecies, const G4double kineticEnergy)
Compute the "interaction distance".
G4double NDeltaToNN(Particle const *const p1, Particle const *const p2)
void setCrossSections(ICrossSections *c)
void setEnergy(G4double energy)
G4double etaPrimeNToPiN(Particle const *const p1, Particle const *const p2)
Cross sections used in INCL4.6.
G4double piNToEtaN(Particle const *const p1, Particle const *const p2)
G4double piNToEtaPrimeN(Particle const *const p1, Particle const *const p2)
G4double calculateNNAngularSlope(G4double energyCM, G4int iso)
Calculate the slope of the NN DDXS.
G4double NNToNDeltaOmega(Particle const *const p1, Particle const *const p2)
Multipion and mesonic Resonances cross sections.
G4double NNToNDelta(Particle const *const p1, Particle const *const p2)
G4double NNToNNEtaExclu(Particle const *const p1, Particle const *const p2)
G4double omegaNToPiPiN(Particle const *const p1, Particle const *const p2)
G4int getMaxNumberMultipions() const
Get the maximum number of pions for multipion collisions.
G4double NNToNDeltaEta(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".
Multipion and mesonic Resonances cross sections.
void initialize(Config const *const theConfig)
Cross sections used in INCL Multipions.
G4double NNToNNOmega(Particle const *const p1, Particle const *const p2)
G4double piNToDelta(Particle const *const p1, Particle const *const p2)
Abstract interface for the cross-section classes.
G4double NNToNNOmegaExclu(Particle const *const p1, Particle const *const p2)
G4double piNToxPiN(const G4int xpi, Particle const *const p1, Particle const *const p2)
G4double piNToOmegaN(Particle const *const p1, Particle const *const p2)
G4double NNToNNEta(Particle const *const p1, Particle const *const p2)
CrossSectionsType getCrossSectionsType() const
Get the Cross Section type.
G4double NNToxPiNN(const G4int xpi, Particle const *const p1, Particle const *const p2)
Truncated multipion cross sections.
const ThreeVector & adjustMomentumFromEnergy()
Rescale the momentum to match the total energy.
Cross sections used in INCL4.6.
Cross sections used in INCL Multipions.
G4double elastic(Particle const *const p1, Particle const *const p2)