34 #define INCLXX_IN_GEANT4_MODE 1
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");
The INCL configuration object.
void deleteCrossSections()
G4double getMass() const
Get the cached particle mass.
Truncated multipion cross sections.
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)
Set the energy of the particle in MeV.
Cross sections used in INCL4.6.
G4double calculateNNAngularSlope(G4double energyCM, G4int iso)
Calculate the slope of the NN DDXS.
G4double NNToNDelta(Particle const *const p1, Particle const *const p2)
G4int getMaxNumberMultipions() const
Get the maximum number of pions for multipion collisions.
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".
void initialize(Config const *const theConfig)
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)
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)