Geant4-11
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"
47#include "G4INCLLogger.hh"
48#include "G4INCLConfig.hh"
49#include "G4INCLHFB.hh"
50
51#ifdef INCLXX_IN_GEANT4_MODE
52#include "G4IonTable.hh"
53#include "G4ParticleTable.hh"
54#endif
55#include "G4INCLGlobals.hh"
57
58namespace G4INCL {
59
60 namespace ParticleTable {
61
64
68
70 const G4double effectiveNucleonMass2 = 8.8036860777616e5;
74 const G4double effectiveLambdaMass = 1115.683;
75 const G4double effectiveSigmaMass = 1197.45; // max value
76 const G4double effectiveKaonMass = 497.614; // max value
77 const G4double effectiveAntiKaonMass = 497.614; // max value
78 const G4double effectiveEtaMass = 547.862;
85
87 void initialize(Config const * const theConfig = 0);
88
91
93 std::string getName(const ParticleType t);
94
96 std::string getShortName(const ParticleType t);
97
99 std::string getName(const ParticleSpecies &s);
100
102 std::string getShortName(const ParticleSpecies &s);
103
105 std::string getName(const G4int A, const G4int Z);
106 std::string getName(const G4int A, const G4int Z, const G4int S);
107
109 std::string getShortName(const G4int A, const G4int Z);
110
112 G4double getINCLMass(const G4int A, const G4int Z, const G4int S);
113
116
117#ifndef INCLXX_IN_GEANT4_MODE
119 G4double hasMassTable(const unsigned int A, const unsigned int Z);
120
130 G4double getWeizsaeckerMass(const G4int A, const G4int Z);
131#endif
132
136 G4double getRealMass(const G4int A, const G4int Z, const G4int S = 0);
137
144 G4double getTableQValue(const G4int A1, const G4int Z1, const G4int S1, const G4int A2, const G4int Z2, const G4int S2);
145
152 G4double getTableQValue(const G4int A1, const G4int Z1, const G4int S1, const G4int A2, const G4int Z2, const G4int S2, const G4int A3, const G4int Z3, const G4int S3);
153
155
158
161
164
165 G4double getNuclearRadius(const ParticleType t, const G4int A, const G4int Z);
167 G4double getRadiusParameter(const ParticleType t, const G4int A, const G4int Z);
170
172 G4double getMomentumRMS(const G4int A, const G4int Z);
173
175 G4double getSeparationEnergyINCL(const ParticleType t, const G4int /*A*/, const G4int /*Z*/);
176
179
182
185
188
191
194
196 std::string getElementName(const G4int Z);
197
199 std::string getIUPACElementName(const G4int Z);
200
202 G4int parseElement(std::string pS);
203
211 G4int parseIUPACElement(std::string const &pS);
212
214
216
217 // Typedefs and pointers for transparent handling of mass functions
218 //typedef G4double (*NuclearMassFn)(const G4int, const G4int);
219 typedef G4double (*NuclearMassFn)(const G4int, const G4int, const G4int);
225
226 // Typedefs and pointers for transparent handling of separation energies
227 typedef G4double (*SeparationEnergyFn)(const ParticleType, const G4int, const G4int);
230
231 // Typedefs and pointers for transparent handling of Fermi momentum
232 typedef G4double (*FermiMomentumFn)(const G4int, const G4int);
234
236 G4double getFermiMomentumConstant(const G4int /*A*/, const G4int /*Z*/);
237
247
261
268
271
274
276 ParticleType getPionType(const G4int isosp);
277
279 ParticleType getNucleonType(const G4int isosp);
280
282 ParticleType getDeltaType(const G4int isosp);
283
285 ParticleType getSigmaType(const G4int isosp);
286
288 ParticleType getKaonType(const G4int isosp);
289
292
295 }
296}
297
298#endif
299
G4double S(G4double temp)
Classes that stores isotopic abundances.
static constexpr double s
Definition: G4SIunits.hh:154
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
const G4double A[17]
Class that stores isotopic abundances for a given element.
G4int getMassNumber(const ParticleType t)
Get mass number from particle type.
G4ThreadLocal FermiMomentumFn getFermiMomentum
const G4double effectiveDeltaWidth
G4int parseElement(std::string pS)
Get the name of the element from the atomic number.
G4ThreadLocal G4double minDeltaMass2
const G4double effectiveKaonMass
G4double(* FermiMomentumFn)(const G4int, const G4int)
G4ThreadLocal NuclearMassFn getTableMass
Static pointer to the mass function for nuclei.
G4ThreadLocal SeparationEnergyFn getSeparationEnergy
Static pointer to the separation-energy function.
G4double getTableQValue(const G4int A1, const G4int Z1, const G4int S1, const G4int A2, const G4int Z2, const G4int S2)
Get Q-value (in MeV/c^2)
G4ThreadLocal ParticleMassFn getTableParticleMass
Static pointer to the mass function for particles.
void initialize(Config const *const theConfig=0)
Initialize the particle table.
const G4double effectiveDeltaMass
G4double getFermiMomentumMassDependent(const G4int A, const G4int)
Return the value Fermi momentum from a fit.
G4double getTableSpeciesMass(const ParticleSpecies &p)
G4int drawRandomNaturalIsotope(const G4int Z)
G4double getSeparationEnergyReal(const ParticleType t, const G4int A, const G4int Z)
Return the real separation energy.
G4double getNeutronSeparationEnergy()
Getter for neutronSeparationEnergy.
G4ThreadLocal G4double minDeltaMass
G4double getRadiusParameter(const ParticleType t, const G4int A, const G4int Z)
G4double getLargestNuclearRadius(const G4int A, const G4int Z)
ParticleType getKaonType(const G4int isosp)
Get the type of kaon.
G4double getNeutronHalo()
Get the size of the neutron halo.
const G4double effectiveLambdaMass
const G4double effectiveEtaMass
G4double getRealMass(const G4INCL::ParticleType t)
Get particle mass (in MeV/c^2)
ParticleType getSigmaType(const G4int isosp)
Get the type of sigma.
G4double getINCLMass(const G4int A, const G4int Z, const G4int S)
Get INCL nuclear mass (in MeV/c^2)
G4double(* ParticleMassFn)(const ParticleType)
G4int getStrangenessNumber(const ParticleType t)
Get strangeness number from particle type.
G4double getMaximumNuclearRadius(const ParticleType t, const G4int A, 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.
G4double getSeparationEnergyINCL(const ParticleType t, const G4int, const G4int)
Return INCL's default separation energy.
void setNeutronSeparationEnergy(const G4double s)
Setter for protonSeparationEnergy.
G4double getFermiMomentumConstant(const G4int, const G4int)
Return the constant value of the Fermi momentum.
std::string getName(const ParticleType t)
Get the native INCL name of the particle.
G4ThreadLocal G4double minDeltaMassRndm
G4double(* SeparationEnergyFn)(const ParticleType, const G4int, const G4int)
const G4double effectiveNucleonMass2
G4double getNeutronSkin()
Get the thickness of the neutron skin.
const G4double effectiveOmegaMass
const G4double effectiveEtaPrimeMass
std::string getIUPACElementName(const G4int Z)
Get the name of an unnamed element from the IUPAC convention.
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
ParticleType getNucleonType(const G4int isosp)
Get the type of nucleon.
const G4double effectiveNucleonMass
G4double getSurfaceDiffuseness(const ParticleType t, const G4int A, const G4int Z)
const G4double effectivePionMass
G4double getFermiMomentumConstantLight(const G4int A, const G4int Z)
Return the constant value of the Fermi momentum - special for light.
void setProtonSeparationEnergy(const G4double s)
Setter for protonSeparationEnergy.
ParticleType getPionType(const G4int isosp)
Get the type of pion.
ParticleType getDeltaType(const G4int isosp)
Get the type of delta.
G4double(* NuclearMassFn)(const G4int, const G4int, const G4int)
G4int getChargeNumber(const ParticleType t)
Get charge number from particle type.
G4double getProtonSeparationEnergy()
Getter for protonSeparationEnergy.
IsotopicDistribution const & getNaturalIsotopicDistribution(const G4int Z)
G4double getMomentumRMS(const G4int A, const G4int Z)
Return the RMS of the momentum distribution (light clusters)
const G4double effectivePhotonMass
ParticleType getAntiKaonType(const G4int isosp)
Get the type of antikaon.
const G4double effectiveSigmaMass
G4double getSeparationEnergyRealForLight(const ParticleType t, const G4int A, const G4int Z)
Return the real separation energy only for light nuclei.
const G4double effectiveAntiKaonMass
G4double getNuclearRadius(const ParticleType t, const G4int A, const G4int Z)
G4double getWidth(const ParticleType t)
Get particle width (in s)
std::string getShortName(const ParticleType t)
Get the short INCL name of the particle.
std::string getElementName(const G4int Z)
Get the name of the element from the atomic number.
static const G4double Z1[5]
Definition: paraMaker.cc:41
#define G4ThreadLocal
Definition: tls.hh:77