Geant4  10.02.p02
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 
64  const G4int clusterTableZSize = maxClusterCharge+1;
65  const G4int clusterTableASize = maxClusterMass+1;
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;
75 
77  void initialize(Config const * const theConfig = 0);
78 
80  G4int getIsospin(const ParticleType t);
81 
83  std::string getName(const ParticleType t);
84 
86  std::string getShortName(const ParticleType t);
87 
89  std::string getName(const ParticleSpecies &s);
90 
92  std::string getShortName(const ParticleSpecies &s);
93 
95  std::string getName(const G4int A, const G4int Z);
96 
98  std::string getShortName(const G4int A, const G4int Z);
99 
101  G4double getINCLMass(const G4int A, const G4int Z);
102 
105 
106 #ifndef INCLXX_IN_GEANT4_MODE
107  G4double hasMassTable(const unsigned int A, const unsigned int Z);
109 
119  G4double getWeizsaeckerMass(const G4int A, const G4int Z);
120 #endif
121 
125  G4double getRealMass(const G4int A, const G4int Z);
126 
133  G4double getTableQValue(const G4int A1, const G4int Z1, const G4int A2, const G4int Z2);
134 
141  G4double getTableQValue(const G4int A1, const G4int Z1, const G4int A2, const G4int Z2, const G4int A3, const G4int Z3);
142 
144 
147 
150 
151  G4double getNuclearRadius(const ParticleType t, const G4int A, const G4int Z);
152  G4double getLargestNuclearRadius(const G4int A, const G4int Z);
153  G4double getRadiusParameter(const ParticleType t, const G4int A, const G4int Z);
154  G4double getMaximumNuclearRadius(const ParticleType t, const G4int A, const G4int Z);
155  G4double getSurfaceDiffuseness(const ParticleType t, const G4int A, const G4int Z);
156 
158  G4double getMomentumRMS(const G4int A, const G4int Z);
159 
161  G4double getSeparationEnergyINCL(const ParticleType t, const G4int /*A*/, const G4int /*Z*/);
162 
164  G4double getSeparationEnergyReal(const ParticleType t, const G4int A, const G4int Z);
165 
168 
171 
174 
177 
180 
182  std::string getElementName(const G4int Z);
183 
185  std::string getIUPACElementName(const G4int Z);
186 
188  G4int parseElement(std::string pS);
189 
197  G4int parseIUPACElement(std::string const &pS);
198 
200 
202 
203  // Typedefs and pointers for transparent handling of mass functions
204  typedef G4double (*NuclearMassFn)(const G4int, const G4int);
210 
211  // Typedefs and pointers for transparent handling of separation energies
212  typedef G4double (*SeparationEnergyFn)(const ParticleType, const G4int, const G4int);
215 
216  // Typedefs and pointers for transparent handling of Fermi momentum
217  typedef G4double (*FermiMomentumFn)(const G4int, const G4int);
219 
221  G4double getFermiMomentumConstant(const G4int /*A*/, const G4int /*Z*/);
222 
231  G4double getFermiMomentumConstantLight(const G4int A, const G4int Z);
232 
245  G4double getFermiMomentumMassDependent(const G4int A, const G4int /*Z*/);
246 
252  G4double getRPCorrelationCoefficient(const ParticleType t);
253 
256 
259 
261  ParticleType getPionType(const G4int isosp);
262 
264  ParticleType getNucleonType(const G4int isosp);
265 
267  ParticleType getDeltaType(const G4int isosp);
268 
269  }
270 }
271 
272 #endif
273 
The INCL configuration object.
Definition: G4INCLConfig.hh:60
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.
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.
static const double s
Definition: G4SIunits.hh:168
G4double getRealMass(const G4INCL::ParticleType t)
Get particle mass (in MeV/c^2)
G4int getMassNumber(const ParticleType t)
Get mass number from particle type.
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)
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.
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.
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
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 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