Geant4  10.00.p01
G4INCLParticleTable.hh
Go to the documentation of this file.
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 // INCL++ intra-nuclear cascade model
27 // Pekka Kaitaniemi, CEA and Helsinki Institute of Physics
28 // Davide Mancusi, CEA
29 // Alain Boudard, CEA
30 // Sylvie Leray, CEA
31 // Joseph Cugnon, University of Liege
32 //
33 #define INCLXX_IN_GEANT4_MODE 1
34 
35 #include "globals.hh"
36 
37 #ifndef G4INCLParticleTable_hh
38 #define G4INCLParticleTable_hh 1
39 
40 #include <string>
41 #include <vector>
42 // #include <cassert>
43 
44 #include "G4INCLParticleType.hh"
45 #include "G4INCLParticleSpecies.hh"
46 #include "G4INCLLogger.hh"
47 #include "G4INCLConfig.hh"
48 
49 #ifdef INCLXX_IN_GEANT4_MODE
50 #include "G4IonTable.hh"
51 #include "G4ParticleTable.hh"
52 #endif
53 #include "G4INCLGlobals.hh"
55 
56 namespace G4INCL {
57 
58  namespace ParticleTable {
59 
60  const G4int maxClusterMass = 12;
62 
63  const G4int clusterTableZSize = maxClusterCharge+1;
64  const G4int clusterTableASize = maxClusterMass+1;
65 
66  const G4double effectiveNucleonMass = 938.2796;
67  const G4double effectiveNucleonMass2 = 8.8036860777616e5;
68  const G4double effectiveDeltaMass = 1232.0;
69  const G4double effectivePionMass = 138.0;
71 
73  void initialize(Config const * const theConfig = 0);
74 
76  G4int getIsospin(const ParticleType t);
77 
79  std::string getName(const ParticleType t);
80 
82  std::string getShortName(const ParticleType t);
83 
85  std::string getName(const ParticleSpecies &s);
86 
88  std::string getShortName(const ParticleSpecies &s);
89 
91  std::string getName(const G4int A, const G4int Z);
92 
94  std::string getShortName(const G4int A, const G4int Z);
95 
97  G4double getINCLMass(const G4int A, const G4int Z);
98 
101 
102 #ifndef INCLXX_IN_GEANT4_MODE
103  G4double hasMassTable(const unsigned int A, const unsigned int Z);
105 
115  G4double getWeizsaeckerMass(const G4int A, const G4int Z);
116 #endif
117 
121  G4double getRealMass(const G4int A, const G4int Z);
122 
129  G4double getTableQValue(const G4int A1, const G4int Z1, const G4int A2, const G4int Z2);
130 
137  G4double getTableQValue(const G4int A1, const G4int Z1, const G4int A2, const G4int Z2, const G4int A3, const G4int Z3);
138 
140 
143 
146 
147  G4double getNuclearRadius(const ParticleType t, const G4int A, const G4int Z);
148  G4double getLargestNuclearRadius(const G4int A, const G4int Z);
149  G4double getRadiusParameter(const ParticleType t, const G4int A, const G4int Z);
150  G4double getMaximumNuclearRadius(const ParticleType t, const G4int A, const G4int Z);
151  G4double getSurfaceDiffuseness(const ParticleType t, const G4int A, const G4int Z);
152 
154  G4double getMomentumRMS(const G4int A, const G4int Z);
155 
157  G4double getSeparationEnergyINCL(const ParticleType t, const G4int /*A*/, const G4int /*Z*/);
158 
160  G4double getSeparationEnergyReal(const ParticleType t, const G4int A, const G4int Z);
161 
164 
167 
170 
173 
176 
178  std::string getElementName(const G4int Z);
179 
181  std::string getIUPACElementName(const G4int Z);
182 
184  G4int parseElement(std::string pS);
185 
193  G4int parseIUPACElement(std::string const &pS);
194 
196 
198 
199  // Typedefs and pointers for transparent handling of mass functions
200  typedef G4double (*NuclearMassFn)(const G4int, const G4int);
206 
207  // Typedefs and pointers for transparent handling of separation energies
208  typedef G4double (*SeparationEnergyFn)(const ParticleType, const G4int, const G4int);
211 
212  // Typedefs and pointers for transparent handling of Fermi momentum
213  typedef G4double (*FermiMomentumFn)(const G4int, const G4int);
215 
220  G4double getFermiMomentumConstant(const G4int /*A*/, const G4int /*Z*/);
221 
230  G4double getFermiMomentumConstantLight(const G4int A, const G4int Z);
231 
244  G4double getFermiMomentumMassDependent(const G4int A, const G4int /*Z*/);
245 
251  G4double getRPCorrelationCoefficient(const ParticleType t);
252 
255 
258 
259  }
260 }
261 
262 #endif
263 
The INCL configuration object.
Definition: G4INCLConfig.hh:67
G4double(* ParticleMassFn)(const ParticleType)
G4double getSeparationEnergyReal(const ParticleType t, const G4int A, const G4int Z)
Return the real separation energy.
G4ThreadLocal ParticleMassFn getTableParticleMass
Static pointer to the mass function for particles.
G4double getNeutronSeparationEnergy()
Getter for neutronSeparationEnergy.
G4double getProtonSeparationEnergy()
Getter for protonSeparationEnergy.
G4double getTableQValue(const G4int A1, const G4int Z1, const G4int A2, const G4int Z2)
Get Q-value (in MeV/c^2)
G4int getChargeNumber(const ParticleType t)
Get charge number from particle type.
G4double(* NuclearMassFn)(const G4int, const G4int)
G4double getFermiMomentumConstant(const G4int, const G4int)
Return the constant value of the Fermi momentum.
#define G4ThreadLocal
Definition: tls.hh:52
int G4int
Definition: G4Types.hh:78
void setProtonSeparationEnergy(const G4double s)
Setter for protonSeparationEnergy.
G4double(* FermiMomentumFn)(const G4int, const G4int)
G4double getNuclearRadius(const ParticleType t, const G4int A, const G4int Z)
static const double s
Definition: G4SIunits.hh:150
G4double getRealMass(const G4INCL::ParticleType t)
Get particle mass (in MeV/c^2)
G4int getMassNumber(const ParticleType t)
Get mass number from particle type.
const G4double effectivePionMass
Classes that stores isotopic abundances.
G4int parseElement(std::string pS)
Get the name of the element from the atomic number.
Class that stores isotopic abundances for a given element.
std::string getIUPACElementName(const G4int Z)
Get the name of an unnamed element from the IUPAC convention.
G4double getLargestNuclearRadius(const G4int A, const G4int Z)
static const G4double A[nN]
G4double(* SeparationEnergyFn)(const ParticleType, const G4int, const G4int)
G4double getSurfaceDiffuseness(const ParticleType t, const G4int A, const G4int Z)
G4double getRadiusParameter(const ParticleType t, const G4int A, const G4int Z)
G4ThreadLocal SeparationEnergyFn getSeparationEnergy
Static pointer to the separation-energy function.
std::string getElementName(const G4int Z)
Get the name of the element from the atomic number.
G4double getMaximumNuclearRadius(const ParticleType t, const G4int A, const G4int Z)
G4double getSeparationEnergyRealForLight(const ParticleType t, const G4int A, const G4int Z)
Return the real separation energy only for light nuclei.
G4double getINCLMass(const G4int A, const G4int Z)
Get INCL nuclear mass (in MeV/c^2)
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
const G4double effectiveNucleonMass2
G4ThreadLocal NuclearMassFn getTableMass
Static pointer to the mass function for nuclei.
G4double getNeutronSkinAdditionalDiffuseness()
Get the value of the additional neutron skin diffuseness.
G4int drawRandomNaturalIsotope(const G4int Z)
G4double getTableSpeciesMass(const ParticleSpecies &p)
G4double getMomentumRMS(const G4int A, const G4int Z)
Return the RMS of the momentum distribution (light clusters)
IsotopicDistribution const & getNaturalIsotopicDistribution(const G4int Z)
G4double getRPCorrelationCoefficient(const ParticleType t)
Get the value of the r-p correlation coefficient.
G4int parseIUPACElement(std::string const &pS)
Parse a IUPAC element name.
const G4double effectiveDeltaMass
double G4double
Definition: G4Types.hh:76
G4ThreadLocal G4double effectiveDeltaDecayThreshold
G4double getSeparationEnergyINCL(const ParticleType t, const G4int, const G4int)
Return INCL's default separation energy.
G4double getFermiMomentumMassDependent(const G4int A, const G4int)
Return the value Fermi momentum from a fit.
std::string getShortName(const ParticleType t)
Get the short INCL name of the particle.
void initialize(Config const *const theConfig=0)
Initialize the particle table.
const G4double effectiveNucleonMass
void setNeutronSeparationEnergy(const G4double s)
Setter for protonSeparationEnergy.
G4double getNeutronSkinThickness()
Get the value of the neutron skin thickness.
G4double getFermiMomentumConstantLight(const G4int A, const G4int Z)
Return the constant value of the Fermi momentum - special for light.
std::string getName(const ParticleType t)
Get the native INCL name of the particle.
G4ThreadLocal FermiMomentumFn getFermiMomentum