Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 // Alain Boudard, CEA-Saclay, France
28 // Joseph Cugnon, University of Liege, Belgium
29 // Jean-Christophe David, CEA-Saclay, France
30 // Pekka Kaitaniemi, CEA-Saclay, France, and Helsinki Institute of Physics, Finland
31 // Sylvie Leray, CEA-Saclay, France
32 // Davide Mancusi, CEA-Saclay, France
33 //
34 #define INCLXX_IN_GEANT4_MODE 1
35 
36 #include "globals.hh"
37 
38 #ifndef G4INCLParticleTable_hh
39 #define G4INCLParticleTable_hh 1
40 
41 #include <string>
42 #include <vector>
43 // #include <cassert>
44 
45 #include "G4INCLParticleType.hh"
46 #include "G4INCLParticleSpecies.hh"
47 #include "G4INCLLogger.hh"
48 #include "G4INCLConfig.hh"
49 
50 #ifdef INCLXX_IN_GEANT4_MODE
51 #include "G4IonTable.hh"
52 #include "G4ParticleTable.hh"
53 #endif
54 #include "G4INCLGlobals.hh"
56 
57 namespace G4INCL {
58 
59  namespace ParticleTable {
60 
61  const G4int maxClusterMass = 12;
63 
66 
67  const G4double effectiveNucleonMass = 938.2796;
68  const G4double effectiveNucleonMass2 = 8.8036860777616e5;
69  const G4double effectiveDeltaMass = 1232.0;
71  const G4double effectivePionMass = 138.0;
72  const G4double effectiveEtaMass = 547.862;
73  const G4double effectiveOmegaMass = 782.65;
79 
81  void initialize(Config const * const theConfig = 0);
82 
84  G4int getIsospin(const ParticleType t);
85 
87  std::string getName(const ParticleType t);
88 
90  std::string getShortName(const ParticleType t);
91 
93  std::string getName(const ParticleSpecies &s);
94 
96  std::string getShortName(const ParticleSpecies &s);
97 
99  std::string getName(const G4int A, const G4int Z);
100 
102  std::string getShortName(const G4int A, const G4int Z);
103 
105  G4double getINCLMass(const G4int A, const G4int Z);
106 
109 
110 #ifndef INCLXX_IN_GEANT4_MODE
111  G4double hasMassTable(const unsigned int A, const unsigned int Z);
113 
123  G4double getWeizsaeckerMass(const G4int A, const G4int Z);
124 #endif
125 
129  G4double getRealMass(const G4int A, const G4int Z);
130 
137  G4double getTableQValue(const G4int A1, const G4int Z1, const G4int A2, const G4int Z2);
138 
145  G4double getTableQValue(const G4int A1, const G4int Z1, const G4int A2, const G4int Z2, const G4int A3, const G4int Z3);
146 
148 
151 
154 
155  G4double getNuclearRadius(const ParticleType t, const G4int A, const G4int Z);
157  G4double getRadiusParameter(const ParticleType t, const G4int A, const G4int Z);
158  G4double getMaximumNuclearRadius(const ParticleType t, const G4int A, const G4int Z);
159  G4double getSurfaceDiffuseness(const ParticleType t, const G4int A, const G4int Z);
160 
162  G4double getMomentumRMS(const G4int A, const G4int Z);
163 
165  G4double getSeparationEnergyINCL(const ParticleType t, const G4int /*A*/, const G4int /*Z*/);
166 
168  G4double getSeparationEnergyReal(const ParticleType t, const G4int A, const G4int Z);
169 
172 
175 
178 
181 
184 
186  std::string getElementName(const G4int Z);
187 
189  std::string getIUPACElementName(const G4int Z);
190 
192  G4int parseElement(std::string pS);
193 
201  G4int parseIUPACElement(std::string const &pS);
202 
204 
206 
207  // Typedefs and pointers for transparent handling of mass functions
208  typedef G4double (*NuclearMassFn)(const G4int, const G4int);
214 
215  // Typedefs and pointers for transparent handling of separation energies
216  typedef G4double (*SeparationEnergyFn)(const ParticleType, const G4int, const G4int);
219 
220  // Typedefs and pointers for transparent handling of Fermi momentum
221  typedef G4double (*FermiMomentumFn)(const G4int, const G4int);
223 
225  G4double getFermiMomentumConstant(const G4int /*A*/, const G4int /*Z*/);
226 
236 
249  G4double getFermiMomentumMassDependent(const G4int A, const G4int /*Z*/);
250 
257 
260 
263 
265  ParticleType getPionType(const G4int isosp);
266 
268  ParticleType getNucleonType(const G4int isosp);
269 
271  ParticleType getDeltaType(const G4int isosp);
272 
274  G4double getWidth(const ParticleType t);
275  }
276 }
277 
278 #endif
279 
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.
G4ThreadLocal G4double minDeltaMassRndm
G4double getNeutronSkin()
Get the thickness of the neutron skin.
G4double getNeutronSeparationEnergy()
Getter for neutronSeparationEnergy.
G4ThreadLocal G4double minDeltaMass2
G4double getProtonSeparationEnergy()
Getter for protonSeparationEnergy.
const char * p
Definition: xmltok.h:285
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:89
ParticleType getNucleonType(const G4int isosp)
Get the type of nucleon.
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)
ParticleType getPionType(const G4int isosp)
Get the type of pion.
const XML_Char * s
Definition: expat.h:262
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 effectiveOmegaMass
double A(double temperature)
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)
const G4double effectivePhotonMass
ParticleType getDeltaType(const G4int isosp)
Get the type of delta.
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.
G4double getWidth(const ParticleType t)
Get particle width (in s)
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)
const G4double effectiveDeltaWidth
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)
G4ThreadLocal G4double minDeltaMass
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.
const G4double effectiveEtaMass
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
const G4double effectiveEtaPrimeMass
G4double getSeparationEnergyINCL(const ParticleType t, const G4int, const G4int)
Return INCL&#39;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 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.
G4double getNeutronHalo()
Get the size of the neutron halo.
G4ThreadLocal FermiMomentumFn getFermiMomentum