34 #define INCLXX_IN_GEANT4_MODE 1
52 namespace CrossSections {
54 return theCrossSections->elastic(p1,p2);
58 return theCrossSections->total(p1,p2);
62 return theCrossSections->NDeltaToNN(p1,p2);
66 return theCrossSections->NNToNDelta(p1,p2);
70 return theCrossSections->NNToxPiNN(xpi,p1,p2);
74 return theCrossSections->piNToDelta(p1,p2);
78 return theCrossSections->piNToxPiN(xpi,p1,p2);
82 return theCrossSections->calculateNNAngularSlope(energyCM, iso);
90 piPlusProjectile.
setEnergy(piPlusProjectile.
getMass()+projectileKineticEnergy);
93 piZeroProjectile.
setEnergy(piZeroProjectile.
getMass()+projectileKineticEnergy);
96 piMinusProjectile.
setEnergy(piMinusProjectile.
getMass()+projectileKineticEnergy);
101 const G4double sigmapipp =
total(&piPlusProjectile, &protonTarget);
102 const G4double sigmapipn =
total(&piPlusProjectile, &neutronTarget);
103 const G4double sigmapi0p =
total(&piZeroProjectile, &protonTarget);
104 const G4double sigmapi0n =
total(&piZeroProjectile, &neutronTarget);
105 const G4double sigmapimp =
total(&piMinusProjectile, &protonTarget);
106 const G4double sigmapimn =
total(&piMinusProjectile, &neutronTarget);
115 return interactionDistance;
124 const G4double kineticEnergyPerNucleon = kineticEnergy / aSpecies.
theA;
127 protonProjectile.
setEnergy(protonProjectile.
getMass()+kineticEnergyPerNucleon);
130 neutronProjectile.
setEnergy(neutronProjectile.
getMass()+kineticEnergyPerNucleon);
135 const G4double sigmapp =
total(&protonProjectile, &protonTarget);
136 const G4double sigmapn =
total(&protonProjectile, &neutronTarget);
137 const G4double sigmann =
total(&neutronProjectile, &neutronTarget);
146 return interactionDistance;
150 theCrossSections = c;
154 delete theCrossSections;
155 theCrossSections = NULL;
The INCL configuration object.
void deleteCrossSections()
G4double getMass() const
Get the cached particle mass.
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)
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)
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)