34 #define INCLXX_IN_GEANT4_MODE 1 38 #include "G4INCLCrossSections.hh" 53 namespace CrossSections {
55 return theCrossSections->elastic(p1,p2);
59 return theCrossSections->total(p1,p2);
63 return theCrossSections->NDeltaToNN(p1,p2);
67 return theCrossSections->NNToNDelta(p1,p2);
71 return theCrossSections->NNToxPiNN(xpi,p1,p2);
75 return theCrossSections->piNToDelta(p1,p2);
79 return theCrossSections->piNToxPiN(xpi,p1,p2);
83 return theCrossSections->calculateNNAngularSlope(energyCM, iso);
91 piPlusProjectile.
setEnergy(piPlusProjectile.
getMass()+projectileKineticEnergy);
94 piZeroProjectile.
setEnergy(piZeroProjectile.
getMass()+projectileKineticEnergy);
97 piMinusProjectile.
setEnergy(piMinusProjectile.
getMass()+projectileKineticEnergy);
102 const G4double sigmapipp =
total(&piPlusProjectile, &protonTarget);
103 const G4double sigmapipn =
total(&piPlusProjectile, &neutronTarget);
104 const G4double sigmapi0p =
total(&piZeroProjectile, &protonTarget);
105 const G4double sigmapi0n =
total(&piZeroProjectile, &neutronTarget);
106 const G4double sigmapimp =
total(&piMinusProjectile, &protonTarget);
107 const G4double sigmapimn =
total(&piMinusProjectile, &neutronTarget);
116 return interactionDistance;
125 const G4double kineticEnergyPerNucleon = kineticEnergy / aSpecies.
theA;
128 protonProjectile.
setEnergy(protonProjectile.
getMass()+kineticEnergyPerNucleon);
131 neutronProjectile.
setEnergy(neutronProjectile.
getMass()+kineticEnergyPerNucleon);
136 const G4double sigmapp =
total(&protonProjectile, &protonTarget);
137 const G4double sigmapn =
total(&protonProjectile, &neutronTarget);
138 const G4double sigmann =
total(&neutronProjectile, &neutronTarget);
147 return interactionDistance;
151 theCrossSections =
c;
155 delete theCrossSections;
156 theCrossSections = NULL;
170 INCL_WARN(
"Truncated multipion cross sections were requested, but the specified maximum\n" 171 <<
"number of pions is <=0. Falling back to standard multipion cross-sections.\n");
void deleteCrossSections()
Truncated multipion cross sections.
CrossSectionsType getCrossSectionsType() const
Get the Cross Section type.
G4double getMass() const
Get the cached particle mass.
G4double interactionDistanceNN(const ParticleSpecies &aSpecies, const G4double kineticEnergy)
G4double NDeltaToNN(Particle const *const p1, Particle const *const p2)
G4int getMaxNumberMultipions() const
Get the maximum number of pions for multipion collisions.
void setCrossSections(ICrossSections *c)
void setEnergy(G4double energy)
Cross sections used in INCL4.6.
G4double calculateNNAngularSlope(G4double energyCM, G4int iso)
G4double NNToNDelta(Particle const *const p1, Particle const *const p2)
G4double total(Particle const *const p1, Particle const *const p2)
G4double interactionDistancePiN(const G4double projectileKineticEnergy)
void initialize(Config const *const theConfig)
Initialize the Coulomb-distortion algorithm.
Cross sections used in INCL Multipions.
G4double piNToDelta(Particle const *const p1, Particle const *const p2)
Abstract interface for the cross-section classes.
G4double piNToxPiN(const G4int xpi, Particle const *const p1, Particle const *const p2)
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)