35#define INCLXX_IN_GEANT4_MODE 1
39#ifndef G4INCLParticleTable_hh
40#define G4INCLParticleTable_hh 1
51#ifdef INCLXX_IN_GEANT4_MODE
92#ifndef INCLXX_IN_GEANT4_MODE
94 static G4double hasMassTable(
const unsigned int A,
const unsigned int Z) {
95 return ( Z > 0 && A > 0
96 && Z < massTableMask.size() && A < massTableMask.at(Z).size()
97 && massTableMask.at(Z).at(A));
110 const G4int Npairing = (A-Z)%2;
111 const G4int Zpairing = Z%2;
117 + 93.15*((fA/2.-fZ)*(fA/2.-fZ))/fA
119 if( Npairing == Zpairing )
binding += (Npairing+Zpairing-1) * 12.0 / std::sqrt(fA);
228 return momentumRMS[Z][A];
236 return theINCLProtonSeparationEnergy;
238 return theINCLNeutronSeparationEnergy;
240 ERROR(
"ParticleTable::getSeparationEnergyINCL : Unknown particle type." << std::endl);
253 ERROR(
"ParticleTable::getSeparationEnergyReal : Unknown particle type." << std::endl);
312#ifdef INCLXX_IN_GEANT4_MODE
315 static std::vector< std::vector <G4bool> > massTableMask;
316 static std::vector< std::vector <G4double> > massTable;
351 static const G4double theINCLNucleonMass;
352 static const G4double theINCLPionMass;
353 static const G4double theINCLNeutronSeparationEnergy;
354 static const G4double theINCLProtonSeparationEnergy;
357 static G4double neutronSeparationEnergy;
358 static G4double protonSeparationEnergy;
359 static G4double piPlusMass, piMinusMass, piZeroMass;
362 static G4double theRealChargedPiMass;
365 const static G4int mediumNucleiTableSize = 30;
366 const static G4double mediumDiffuseness[mediumNucleiTableSize];
367 const static G4double mediumRadius[mediumNucleiTableSize];
373#ifndef INCLXX_IN_GEANT4_MODE
375 static void readRealMasses(std::string
const &path);
378 const static std::string elementIUPACDigits;
381 static char iupacToInt(
char c) {
382 return (
char)(((
G4int)
'0')+elementIUPACDigits.find(c));
386 static char intToIUPAC(
char n) {
return elementIUPACDigits.at(n); }
389 static const NaturalIsotopicDistributions *theNaturalIsotopicDistributions;
392 static const NaturalIsotopicDistributions *getNaturalIsotopicDistributions() {
393 if(!theNaturalIsotopicDistributions)
394 theNaturalIsotopicDistributions =
new NaturalIsotopicDistributions;
395 return theNaturalIsotopicDistributions;
Classes that stores isotopic abundances.
Class that stores isotopic abundances for a given element.
G4int drawRandomIsotope(G4int const Z) const
Draw a random isotope.
IsotopicDistribution const & getIsotopicDistribution(G4int const Z) const
Get an isotopic distribution.
static const G4double clusterPosFact2[maxClusterMass+1]
static G4double getNeutronSeparationEnergy()
Getter for neutronSeparationEnergy.
static G4double getINCLMass(const G4int A, const G4int Z)
Get INCL nuclear mass (in MeV/c^2)
static NuclearMassFn getTableMass
Static pointer to the mass function for nuclei.
static G4double getMomentumRMS(const G4int A, const G4int Z)
Return the RMS of the momentum distribution (light clusters)
static const G4int clusterZMin[maxClusterMass+1]
static const G4double eSquared
Coulomb conversion factor, in MeV*fm.
static G4double getRadiusParameter(const G4int A, const G4int Z)
static IsotopicDistribution const & getNaturalIsotopicDistribution(const G4int Z)
static void initialize(Config const *const theConfig=0)
Initialize the particle table.
static const G4double effectiveDeltaMass
static SeparationEnergyFn getSeparationEnergy
Static pointer to the separation-energy function.
static ParticleMassFn getTableParticleMass
Static pointer to the mass function for particles.
static const G4double clusterPosFact[maxClusterMass+1]
static const G4int clusterTableZSize
static G4double getProtonSeparationEnergy()
Getter for protonSeparationEnergy.
static G4double getNuclearRadius(const G4int A, const G4int Z)
G4double(* NuclearMassFn)(const G4int, const G4int)
static G4double getRealMass(const G4INCL::ParticleType t)
Get particle mass (in MeV/c^2)
static G4IonTable * theG4IonTable
static G4double getTableSpeciesMass(const ParticleSpecies &p)
G4double(* ParticleMassFn)(const ParticleType)
static G4double getMaximumNuclearRadius(const G4int A, const G4int Z)
static G4int getMassNumber(const ParticleType t)
Get mass number from particle type.
static const G4double effectiveDeltaDecayThreshold
static G4double getSeparationEnergyReal(const ParticleType t, const G4int A, const G4int Z)
Return the real separation energy.
static G4int parseIUPACElement(std::string const &pS)
Parse a IUPAC element name.
static std::string getName(const ParticleType t)
Get the native INCL name of the particle.
G4double(* SeparationEnergyFn)(const ParticleType, const G4int, const G4int)
static void setNeutronSeparationEnergy(const G4double s)
Setter for protonSeparationEnergy.
static const G4int elementTableSize
static const G4double effectiveNucleonMass2
static G4int getChargeNumber(const ParticleType t)
Get charge number from particle type.
static void setProtonSeparationEnergy(const G4double s)
Setter for protonSeparationEnergy.
static std::string getIUPACElementName(const G4int Z)
Get the name of an unnamed element from the IUPAC convention.
static G4double getSeparationEnergyRealForLight(const ParticleType t, const G4int A, const G4int Z)
Return the real separation energy only for light nuclei.
static G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
static const G4double effectiveNucleonMass
static const G4double effectivePionMass
static const G4int clusterTableASize
static const G4int maxClusterCharge
static const G4double clusterPhaseSpaceCut[maxClusterMass+1]
static G4double getTableQValue(const G4int A1, const G4int Z1, const G4int A2, const G4int Z2)
Get Q-value (in MeV/c^2)
static const G4int clusterZMax[maxClusterMass+1]
static G4double getSeparationEnergyINCL(const ParticleType t, const G4int, const G4int)
Return INCL's default separation energy.
static G4int drawRandomNaturalIsotope(const G4int Z)
static std::string getShortName(const ParticleType t)
Get the short INCL name of the particle.
static G4double getSurfaceDiffuseness(const G4int A, const G4int Z)
static const G4int maxClusterMass
static std::string getElementName(const G4int Z)
Get the name of the element from the atomic number.
static const ClusterDecayType clusterDecayMode[clusterTableZSize][clusterTableASize]
static G4double getTableQValue(const G4int A1, const G4int Z1, const G4int A2, const G4int Z2, const G4int A3, const G4int Z3)
Get Q-value (in MeV/c^2)
G4double pow23(G4double x)
const G4double sqrtThreeFifths
G4double powMinus13(G4double x)
const G4double Pf
Fermi momentum [MeV/c].