Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
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 effectiveXiMass = 1321.71; // max value
77 const G4double effectiveKaonMass = 497.614; // max value
78 const G4double effectiveAntiKaonMass = 497.614; // max value
79 const G4double effectiveEtaMass = 547.862;
86
87 /// \brief Initialize the particle table
88 void initialize(Config const * const theConfig = 0);
89
90 /// \brief Get the isospin of a particle
92
93 /// \brief Get the native INCL name of the particle
94 std::string getName(const ParticleType t);
95
96 /// \brief Get the short INCL name of the particle
97 std::string getShortName(const ParticleType t);
98
99 /// \brief Get the native INCL name of the particle
100 std::string getName(const ParticleSpecies &s);
101
102 /// \brief Get the short INCL name of the particle
103 std::string getShortName(const ParticleSpecies &s);
104
105 /// \brief Get the native INCL name of the ion
106 std::string getName(const G4int A, const G4int Z);
107
108 /// \brief Get the native INCL name of the ion
109 std::string getName(const G4int A, const G4int Z, const G4int S);
110
111 /// \brief Get the short INCL name of the ion
112 std::string getShortName(const G4int A, const G4int Z);
113
114 /// \brief Get INCL nuclear mass (in MeV/c^2)
115 G4double getINCLMass(const G4int A, const G4int Z, const G4int S);
116
117 /// \brief Get INCL particle mass (in MeV/c^2)
119
120#ifndef INCLXX_IN_GEANT4_MODE
121 /// \brief Do we have this particle mass?
122 G4double hasMassTable(const unsigned int A, const unsigned int Z);
123
124 /** \brief Weizsaecker mass formula
125 *
126 * Return the nuclear mass, as calculated from Weizsaecker's mass formula.
127 * Adapted from the Geant4 source.
128 *
129 * \param A the mass number
130 * \param Z the charge number
131 * \return the nuclear mass [MeV/c^2]
132 */
133 G4double getWeizsaeckerMass(const G4int A, const G4int Z);
134#endif
135
136 ///\brief Get particle mass (in MeV/c^2)
138 ///\brief Get nuclear mass (in MeV/c^2)
139 G4double getRealMass(const G4int A, const G4int Z, const G4int S = 0);
140
141 /**\brief Get Q-value (in MeV/c^2)
142 *
143 * Uses the getTableMass function to compute the Q-value for the
144 * following reaction:
145 * \f[ (A_1,Z_1) + (A_2, Z_2) --> (A_1+A_2,Z_1+Z_2) \f]
146 */
147 G4double getTableQValue(const G4int A1, const G4int Z1, const G4int S1, const G4int A2, const G4int Z2, const G4int S2);
148
149 /**\brief Get Q-value (in MeV/c^2)
150 *
151 * Uses the getTableMass function to compute the Q-value for the
152 * following reaction:
153 * \f[ (A_1,Z_1) + (A_2, Z_2) --> (A_3,Z_3) + (A1+A2-A3,Z1+Z2-Z3) \f]
154 */
155 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);
156
158
159 /// \brief Get mass number from particle type
161
162 /// \brief Get charge number from particle type
164
165 /// \brief Get strangeness number from particle type
167
168 G4double getNuclearRadius(const ParticleType t, const G4int A, const G4int Z);
170 G4double getRadiusParameter(const ParticleType t, const G4int A, const G4int Z);
171 G4double getMaximumNuclearRadius(const ParticleType t, const G4int A, const G4int Z);
172 G4double getSurfaceDiffuseness(const ParticleType t, const G4int A, const G4int Z);
173
174 /// \brief Return the RMS of the momentum distribution (light clusters)
175 G4double getMomentumRMS(const G4int A, const G4int Z);
176
177 /// \brief Return INCL's default separation energy
178 G4double getSeparationEnergyINCL(const ParticleType t, const G4int /*A*/, const G4int /*Z*/);
179
180 /// \brief Return the real separation energy
181 G4double getSeparationEnergyReal(const ParticleType t, const G4int A, const G4int Z);
182
183 /// \brief Return the real separation energy only for light nuclei
185
186 /// \brief Getter for protonSeparationEnergy
188
189 /// \brief Getter for neutronSeparationEnergy
191
192 /// \brief Getter for antiprotonSeparationEnergy
194
195 /// \brief Getter for antineutronSeparationEnergy
197
198 /// \brief Getter for antilambdaSeparationEnergy
200
201 /// \brief Getter for lambdaSeparationEnergy
203
204 /// \brief Setter for protonSeparationEnergy
206
207 /// \brief Setter for protonSeparationEnergy
209
210 /// \brief Setter for lambdaSeparationEnergy
212
213 /// \brief Setter for antilambdaSeparationEnergy
215
216 /// \brief Get the name of the element from the atomic number
217 std::string getElementName(const G4int Z);
218
219 /// \brief Get the name of an unnamed element from the IUPAC convention
220 std::string getIUPACElementName(const G4int Z);
221
222 /// \brief Get the name of the element from the atomic number
223 G4int parseElement(std::string pS);
224
225 /** \brief Parse a IUPAC element name
226 *
227 * Note: this function is UGLY. Look at it at your own peril.
228 *
229 * \param pS a normalised string (lowercase)
230 * \return the charge number of the nuclide, or zero on fail
231 */
232 G4int parseIUPACElement(std::string const &pS);
233
235
237
238 // Typedefs and pointers for transparent handling of mass functions
239 //typedef G4double (*NuclearMassFn)(const G4int, const G4int);
240 typedef G4double (*NuclearMassFn)(const G4int, const G4int, const G4int);
242 /// \brief Static pointer to the mass function for nuclei
244 /// \brief Static pointer to the mass function for particles
246
247 // Typedefs and pointers for transparent handling of separation energies
248 typedef G4double (*SeparationEnergyFn)(const ParticleType, const G4int, const G4int);
249 /// \brief Static pointer to the separation-energy function
251
252 // Typedefs and pointers for transparent handling of Fermi momentum
253 typedef G4double (*FermiMomentumFn)(const G4int, const G4int);
255
256 /// \brief Return the constant value of the Fermi momentum
257 G4double getFermiMomentumConstant(const G4int /*A*/, const G4int /*Z*/);
258
259 /** \brief Return the constant value of the Fermi momentum - special for light
260 *
261 * This function should always return PhysicalConstants::Pf for heavy
262 * nuclei, and values from the momentumRMS table for light nuclei.
263 *
264 * \param A mass number
265 * \param Z charge number
266 */
268
269 /** \brief Return the value Fermi momentum from a fit
270 *
271 * This function returns a fitted Fermi momentum, based on data from Moniz
272 * et al., Phys. Rev. Lett. 26 (1971) 445. The fitted functional form is
273 * \f[
274 * p_F(A)=\alpha-\beta\cdot e^{(-A\cdot\gamma)}
275 * \f]
276 * with \f$\alpha=259.416\f$ MeV/\f$c\f$, \f$\beta=152.824\f$ MeV/\f$c\f$
277 * and \f$\gamma=9.5157\cdot10^{-2}\f$.
278 *
279 * \param A mass number
280 */
282
283 /** \brief Get the value of the r-p correlation coefficient
284 *
285 * \param t the type of the particle (Proton or Neutron)
286 * \return the value of the r-p correlation coefficient
287 */
289
290 /// \brief Get the configuration of src-pair correlations
292
293 /// \brief Get the distance between src nucleons
295
296 /// \brief Get the thickness of the neutron skin
298
299 /// \brief Get the size of the neutron halo
301
302 /// \brief Get the type of pion
303 ParticleType getPionType(const G4int isosp);
304
305 /// \brief Get the type of nucleon
306 ParticleType getNucleonType(const G4int isosp);
307
308 /// \brief Get the type of delta
309 ParticleType getDeltaType(const G4int isosp);
310
311 /// \brief Get the type of sigma
312 ParticleType getSigmaType(const G4int isosp);
313
314 /// \brief Get the type of kaon
315 ParticleType getKaonType(const G4int isosp);
316
317 /// \brief Get the type of antikaon
319
320 /// \brief Get the type of xi
321 ParticleType getXiType(const G4int isosp);
322
323 /// \brief Get the type of antinucleon
325
326 /// \brief Get the type of antidelta
327 ParticleType getAntiXiType(const G4int isosp);
328
329 /// \brief Get the type of antisigma
330 ParticleType getAntiSigmaType(const G4int isosp);
331
332 /// \brief Get particle width (in s)
334 }
335}
336
337#endif
338
G4double S(G4double temp)
Classes that stores isotopic abundances.
float G4float
Definition G4Types.hh:84
double G4double
Definition G4Types.hh:83
bool G4bool
Definition G4Types.hh:86
int G4int
Definition G4Types.hh:85
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
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.
G4double getantiProtonSeparationEnergy()
Getter for antiprotonSeparationEnergy.
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)
G4double getLambdaSeparationEnergy()
Getter for lambdaSeparationEnergy.
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.
G4float getsrcPairDistance()
Get the distance between src nucleons.
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
G4double getRealMass(const G4INCL::ParticleType t)
Get particle mass (in MeV/c^2).
ParticleType getAntiNucleonType(const G4int isosp)
Get the type of antinucleon.
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)
void setLambdaSeparationEnergy(const G4double s)
Setter for lambdaSeparationEnergy.
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 getantiLambdaSeparationEnergy()
Getter for antilambdaSeparationEnergy.
G4double getFermiMomentumConstant(const G4int, const G4int)
Return the constant value of the Fermi momentum.
G4double getantiNeutronSeparationEnergy()
Getter for antineutronSeparationEnergy.
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
ParticleType getAntiXiType(const G4int isosp)
Get the type of antidelta.
G4double getSurfaceDiffuseness(const ParticleType t, const G4int A, const G4int Z)
void setantiLambdaSeparationEnergy(const G4double s)
Setter for antilambdaSeparationEnergy.
G4double getFermiMomentumConstantLight(const G4int A, const G4int Z)
Return the constant value of the Fermi momentum - special for light.
G4bool getsrcPairConfig()
Get the configuration of src-pair correlations.
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)
ParticleType getAntiSigmaType(const G4int isosp)
Get the type of antisigma.
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.
ParticleType getXiType(const G4int isosp)
Get the type of xi.
#define G4ThreadLocal
Definition tls.hh:77