Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4INCL::ParticleTable Class Reference

#include <G4INCLParticleTable.hh>

Public Types

enum  ClusterDecayType {
  StableCluster , NeutronDecay , ProtonDecay , AlphaDecay ,
  TwoProtonDecay , TwoNeutronDecay , ProtonUnbound , NeutronUnbound
}
 
typedef G4double(* NuclearMassFn) (const G4int, const G4int)
 
typedef G4double(* ParticleMassFn) (const ParticleType)
 
typedef G4double(* SeparationEnergyFn) (const ParticleType, const G4int, const G4int)
 

Static Public Member Functions

static void initialize (Config const *const theConfig=0)
 Initialize the particle table.
 
static G4int getIsospin (const ParticleType t)
 Get the isospin of a particle.
 
static std::string getName (const ParticleType t)
 Get the native INCL name of the particle.
 
static std::string getShortName (const ParticleType t)
 Get the short INCL name of the particle.
 
static std::string getName (const ParticleSpecies s)
 Get the native INCL name of the particle.
 
static std::string getShortName (const ParticleSpecies s)
 Get the short INCL name of the particle.
 
static std::string getName (const G4int A, const G4int Z)
 Get the native INCL name of the ion.
 
static std::string getShortName (const G4int A, const G4int Z)
 Get the short INCL name of the ion.
 
static G4double getINCLMass (const G4int A, const G4int Z)
 Get INCL nuclear mass (in MeV/c^2)
 
static G4double getINCLMass (const ParticleType t)
 Get INCL particle mass (in MeV/c^2)
 
static G4double getRealMass (const G4INCL::ParticleType t)
 Get particle mass (in MeV/c^2)
 
static G4double getRealMass (const G4int A, const G4int Z)
 Get nuclear mass (in MeV/c^2)
 
static G4double getTableQValue (const G4int A1, const G4int Z1, const G4int A2, const G4int Z2)
 Get Q-value (in MeV/c^2)
 
static G4double getTableQValue (const G4int A1, const G4int Z1, const G4int A2, const G4int Z2, const G4int A3, const G4int Z3)
 Get Q-value (in MeV/c^2)
 
static G4double getTableSpeciesMass (const ParticleSpecies &p)
 
static G4int getMassNumber (const ParticleType t)
 Get mass number from particle type.
 
static G4int getChargeNumber (const ParticleType t)
 Get charge number from particle type.
 
static G4double getNuclearRadius (const G4int A, const G4int Z)
 
static G4double getRadiusParameter (const G4int A, const G4int Z)
 
static G4double getMaximumNuclearRadius (const G4int A, const G4int Z)
 
static G4double getSurfaceDiffuseness (const G4int A, const G4int Z)
 
static G4double getMomentumRMS (const G4int A, const G4int Z)
 Return the RMS of the momentum distribution (light clusters)
 
static G4double getSeparationEnergyINCL (const ParticleType t, const G4int, const G4int)
 Return INCL's default separation energy.
 
static G4double getSeparationEnergyReal (const ParticleType t, const G4int A, const G4int Z)
 Return the real separation energy.
 
static G4double getSeparationEnergyRealForLight (const ParticleType t, const G4int A, const G4int Z)
 Return the real separation energy only for light nuclei.
 
static G4double getProtonSeparationEnergy ()
 Getter for protonSeparationEnergy.
 
static G4double getNeutronSeparationEnergy ()
 Getter for neutronSeparationEnergy.
 
static void setProtonSeparationEnergy (const G4double s)
 Setter for protonSeparationEnergy.
 
static void setNeutronSeparationEnergy (const G4double s)
 Setter for protonSeparationEnergy.
 
static std::string getElementName (const G4int Z)
 Get the name of the element from the atomic number.
 
static std::string getIUPACElementName (const G4int Z)
 Get the name of an unnamed element from the IUPAC convention.
 
static G4int parseIUPACElement (std::string const &pS)
 Parse a IUPAC element name.
 
static IsotopicDistribution constgetNaturalIsotopicDistribution (const G4int Z)
 
static G4int drawRandomNaturalIsotope (const G4int Z)
 

Static Public Attributes

static NuclearMassFn getTableMass
 Static pointer to the mass function for nuclei.
 
static ParticleMassFn getTableParticleMass
 Static pointer to the mass function for particles.
 
static SeparationEnergyFn getSeparationEnergy
 Static pointer to the separation-energy function.
 
static const G4int elementTableSize = 113
 
static const G4double effectiveNucleonMass = 938.2796
 
static const G4double effectiveNucleonMass2 = 8.8036860777616e5
 
static const G4double effectiveDeltaMass = 1232.0
 
static const G4double effectivePionMass = 138.0
 
static const G4double effectiveDeltaDecayThreshold
 
static const G4int maxClusterMass = 12
 
static const G4int maxClusterCharge = 8
 
static const G4int clusterTableZSize = ParticleTable::maxClusterCharge+1
 
static const G4int clusterTableASize = ParticleTable::maxClusterMass+1
 
static const G4double clusterPosFact [maxClusterMass+1]
 
static const G4double clusterPosFact2 [maxClusterMass+1]
 
static const G4int clusterZMin [maxClusterMass+1] = {0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3}
 
static const G4int clusterZMax [maxClusterMass+1] = {0, 0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 7, 8}
 
static const G4double clusterPhaseSpaceCut [maxClusterMass+1]
 
static G4IonTabletheG4IonTable
 
static const ClusterDecayType clusterDecayMode [clusterTableZSize][clusterTableASize]
 
static const G4double eSquared = 1.439964
 Coulomb conversion factor, in MeV*fm.
 

Protected Member Functions

 ParticleTable ()
 
 ~ParticleTable ()
 

Detailed Description

Definition at line 60 of file G4INCLParticleTable.hh.

Member Typedef Documentation

◆ NuclearMassFn

typedef G4double(* G4INCL::ParticleTable::NuclearMassFn) (const G4int, const G4int)

Definition at line 151 of file G4INCLParticleTable.hh.

◆ ParticleMassFn

typedef G4double(* G4INCL::ParticleTable::ParticleMassFn) (const ParticleType)

Definition at line 152 of file G4INCLParticleTable.hh.

◆ SeparationEnergyFn

typedef G4double(* G4INCL::ParticleTable::SeparationEnergyFn) (const ParticleType, const G4int, const G4int)

Definition at line 164 of file G4INCLParticleTable.hh.

Member Enumeration Documentation

◆ ClusterDecayType

Enumerator
StableCluster 
NeutronDecay 
ProtonDecay 
AlphaDecay 
TwoProtonDecay 
TwoNeutronDecay 
ProtonUnbound 
NeutronUnbound 

Definition at line 320 of file G4INCLParticleTable.hh.

Constructor & Destructor Documentation

◆ ParticleTable()

G4INCL::ParticleTable::ParticleTable ( )
inlineprotected

Definition at line 347 of file G4INCLParticleTable.hh.

347{};

◆ ~ParticleTable()

G4INCL::ParticleTable::~ParticleTable ( )
inlineprotected

Definition at line 348 of file G4INCLParticleTable.hh.

348{};

Member Function Documentation

◆ drawRandomNaturalIsotope()

static G4int G4INCL::ParticleTable::drawRandomNaturalIsotope ( const G4int  Z)
inlinestatic

Definition at line 342 of file G4INCLParticleTable.hh.

342 {
343 return getNaturalIsotopicDistributions()->drawRandomIsotope(Z);
344 }
G4int drawRandomIsotope(G4int const Z) const
Draw a random isotope.

Referenced by G4INCL::INCL::prepareReaction().

◆ getChargeNumber()

static G4int G4INCL::ParticleTable::getChargeNumber ( const ParticleType  t)
inlinestatic

Get charge number from particle type.

Definition at line 192 of file G4INCLParticleTable.hh.

192 {
193 switch(t) {
194 case DeltaPlusPlus:
195 return 2;
196 break;
197 case Proton:
198 case DeltaPlus:
199 case PiPlus:
200 return 1;
201 break;
202 case Neutron:
203 case DeltaZero:
204 case PiZero:
205 return 0;
206 break;
207 case DeltaMinus:
208 case PiMinus:
209 return -1;
210 break;
211 default:
212/* FATAL("Can't determine charge number for particle type " << t << std::endl);
213 std::abort();*/
214 return 0;
215 break;
216 }
217 }

◆ getElementName()

std::string G4INCL::ParticleTable::getElementName ( const G4int  Z)
static

Get the name of the element from the atomic number.

Definition at line 624 of file G4INCLParticleTable.cc.

624 {
625 if(Z<1) {
626 WARN("getElementName called with Z<1" << std::endl);
627 return elementTable[0];
628 } else if(Z<elementTableSize)
629 return elementTable[Z];
630 else
631 return getIUPACElementName(Z);
632 }
#define WARN(x)
static const G4int elementTableSize
static std::string getIUPACElementName(const G4int Z)
Get the name of an unnamed element from the IUPAC convention.

Referenced by getName(), and getShortName().

◆ getINCLMass() [1/2]

G4double G4INCL::ParticleTable::getINCLMass ( const G4int  A,
const G4int  Z 
)
static

Get INCL nuclear mass (in MeV/c^2)

Definition at line 518 of file G4INCLParticleTable.cc.

518 {
519// assert(A>=0);
520 // For nuclei with Z<0 or Z>A, assume that the exotic charge state is due to pions
521 if(Z<0)
522 return A*neutronMass - Z*getINCLMass(PiMinus);
523 else if(Z>A)
524 return A*protonMass + (A-Z)*getINCLMass(PiPlus);
525 else if(A>1)
526 return Z*(protonMass - protonSeparationEnergy) + (A-Z)*(neutronMass - neutronSeparationEnergy);
527 else if(A==1 && Z==0)
528 return getINCLMass(Neutron);
529 else if(A==1 && Z==1)
530 return getINCLMass(Proton);
531 else
532 return 0.;
533 }
static G4double getINCLMass(const G4int A, const G4int Z)
Get INCL nuclear mass (in MeV/c^2)

Referenced by G4INCL::Particle::getEmissionQValueCorrection(), G4INCL::DeltaDecayChannel::getFinalState(), G4INCL::Particle::getINCLMass(), getINCLMass(), G4INCL::Particle::getTransferQValueCorrection(), initialize(), and G4INCL::CDPP::isBlocked().

◆ getINCLMass() [2/2]

G4double G4INCL::ParticleTable::getINCLMass ( const ParticleType  t)
static

Get INCL particle mass (in MeV/c^2)

Definition at line 451 of file G4INCLParticleTable.cc.

451 {
452 if(pt == Proton) {
453 return protonMass;
454 } else if(pt == Neutron) {
455 return neutronMass;
456 } else if(pt == PiPlus) {
457 return piPlusMass;
458 } else if(pt == PiMinus) {
459 return piMinusMass;
460 } else if(pt == PiZero) {
461 return piZeroMass;
462 } else {
463 ERROR("ParticleTable::getMass : Unknown particle type." << std::endl);
464 return 0.0;
465 }
466 }
#define ERROR(x)

◆ getIsospin()

G4int G4INCL::ParticleTable::getIsospin ( const ParticleType  t)
static

Get the isospin of a particle.

Definition at line 347 of file G4INCLParticleTable.cc.

347 {
348 // Actually this is the 3rd component of isospin (I_z) multiplied by 2!
349 if(t == Proton) {
350 return 1;
351 } else if(t == Neutron) {
352 return -1;
353 } else if(t == PiPlus) {
354 return 2;
355 } else if(t == PiMinus) {
356 return -2;
357 } else if(t == PiZero) {
358 return 0;
359 } else if(t == DeltaPlusPlus) {
360 return 3;
361 } else if(t == DeltaPlus) {
362 return 1;
363 } else if(t == DeltaZero) {
364 return -1;
365 } else if(t == DeltaMinus) {
366 return -3;
367 }
368
369 ERROR("Requested isospin of an unknown particle!");
370 return -10; // Unknown
371 }

Referenced by G4INCL::CrossSections::deltaProduction(), G4INCL::DeltaProductionChannel::getFinalState(), G4INCL::ElasticChannel::getFinalState(), G4INCL::Nucleus::insertParticle(), G4INCL::CrossSections::pionNucleon(), and G4INCL::CrossSections::recombination().

◆ getIUPACElementName()

std::string G4INCL::ParticleTable::getIUPACElementName ( const G4int  Z)
static

Get the name of an unnamed element from the IUPAC convention.

Definition at line 678 of file G4INCLParticleTable.cc.

678 {
679 std::stringstream elementStream;
680 elementStream << Z;
681 std::string elementName = elementStream.str();
682 std::transform(elementName.begin(), elementName.end(), elementName.begin(), ParticleTable::intToIUPAC);
683 elementName[0] = std::toupper(elementName.at(0));
684 return elementName;
685 }

Referenced by getElementName().

◆ getMassNumber()

static G4int G4INCL::ParticleTable::getMassNumber ( const ParticleType  t)
inlinestatic

Get mass number from particle type.

Definition at line 168 of file G4INCLParticleTable.hh.

168 {
169 switch(t) {
170 case Proton:
171 case Neutron:
172 case DeltaPlusPlus:
173 case DeltaPlus:
174 case DeltaZero:
175 case DeltaMinus:
176 return 1;
177 break;
178 case PiPlus:
179 case PiMinus:
180 case PiZero:
181 return 0;
182 break;
183 default:
184/* FATAL("Can't determine mass number for particle type " << t << std::endl);
185 std::abort();*/
186 return 0;
187 break;
188 }
189 }

◆ getMaximumNuclearRadius()

G4double G4INCL::ParticleTable::getMaximumNuclearRadius ( const G4int  A,
const G4int  Z 
)
static

Definition at line 589 of file G4INCLParticleTable.cc.

589 {
590 const G4double XFOISA = 8.0;
591 if(A >= 19) {
592 return getNuclearRadius(A,Z) + XFOISA * getSurfaceDiffuseness(A,Z);
593 } else if(A < 19 && A >= 6) {
594 return 5.5 + 0.3 * (G4double(A) - 6.0)/12.0;
595 } else if(A >= 2) {
596 return ParticleTable::getNuclearRadius(A, Z) + 4.5;
597 } else {
598 ERROR("ParticleTable::getMaximumNuclearRadius : No maximum radius for nucleus A = " << A << " Z = " << Z << std::endl);
599 return 0.0;
600 }
601 }
double G4double
Definition: G4Types.hh:64
static G4double getNuclearRadius(const G4int A, const G4int Z)
static G4double getSurfaceDiffuseness(const G4int A, const G4int Z)

Referenced by G4INCL::NuclearDensityFactory::createRCDFTable(), and G4INCL::NuclearDensityFactory::createRPCorrelationTable().

◆ getMomentumRMS()

static G4double G4INCL::ParticleTable::getMomentumRMS ( const G4int  A,
const G4int  Z 
)
inlinestatic

Return the RMS of the momentum distribution (light clusters)

Definition at line 225 of file G4INCLParticleTable.hh.

225 {
226// assert(Z>=0 && A>=0 && Z<=A);
228 return momentumRMS[Z][A];
229 else
231 }
static const G4int clusterTableZSize
static const G4int clusterTableASize
const G4double sqrtThreeFifths
const G4double Pf
Fermi momentum [MeV/c].

Referenced by G4INCL::NuclearDensityFactory::createPCDFTable().

◆ getName() [1/3]

std::string G4INCL::ParticleTable::getName ( const G4int  A,
const G4int  Z 
)
static

Get the native INCL name of the ion.

Definition at line 387 of file G4INCLParticleTable.cc.

387 {
388 std::stringstream stream;
389 stream << getElementName(Z) << "-" << A;
390 return stream.str();
391 }
static std::string getElementName(const G4int Z)
Get the name of the element from the atomic number.

◆ getName() [2/3]

std::string G4INCL::ParticleTable::getName ( const ParticleSpecies  s)
static

Get the native INCL name of the particle.

Definition at line 380 of file G4INCLParticleTable.cc.

380 {
381 if(s.theType==Composite)
382 return getName(s.theA,s.theZ);
383 else
384 return getName(s.theType);
385 }
static std::string getName(const ParticleType t)
Get the native INCL name of the particle.

◆ getName() [3/3]

std::string G4INCL::ParticleTable::getName ( const ParticleType  t)
static

Get the native INCL name of the particle.

Definition at line 401 of file G4INCLParticleTable.cc.

401 {
402 if(p == G4INCL::Proton) {
403 return std::string("proton");
404 } else if(p == G4INCL::Neutron) {
405 return std::string("neutron");
406 } else if(p == G4INCL::DeltaPlusPlus) {
407 return std::string("delta++");
408 } else if(p == G4INCL::DeltaPlus) {
409 return std::string("delta+");
410 } else if(p == G4INCL::DeltaZero) {
411 return std::string("delta0");
412 } else if(p == G4INCL::DeltaMinus) {
413 return std::string("delta-");
414 } else if(p == G4INCL::PiPlus) {
415 return std::string("pi+");
416 } else if(p == G4INCL::PiZero) {
417 return std::string("pi0");
418 } else if(p == G4INCL::PiMinus) {
419 return std::string("pi-");
420 } else if(p == G4INCL::Composite) {
421 return std::string("composite");
422 }
423 return std::string("unknown");
424 }

Referenced by G4INCL::Particle::dump(), getName(), G4INCL::Cluster::print(), G4INCL::Particle::print(), and G4INCL::Config::summary().

◆ getNaturalIsotopicDistribution()

static IsotopicDistribution const & G4INCL::ParticleTable::getNaturalIsotopicDistribution ( const G4int  Z)
inlinestatic

Definition at line 338 of file G4INCLParticleTable.hh.

338 {
339 return getNaturalIsotopicDistributions()->getIsotopicDistribution(Z);
340 }
IsotopicDistribution const & getIsotopicDistribution(G4int const Z) const
Get an isotopic distribution.

◆ getNeutronSeparationEnergy()

static G4double G4INCL::ParticleTable::getNeutronSeparationEnergy ( )
inlinestatic

Getter for neutronSeparationEnergy.

Definition at line 271 of file G4INCLParticleTable.hh.

271{ return neutronSeparationEnergy; }

◆ getNuclearRadius()

G4double G4INCL::ParticleTable::getNuclearRadius ( const G4int  A,
const G4int  Z 
)
static

Definition at line 535 of file G4INCLParticleTable.cc.

535 {
536// assert(A>0 && Z>=0 && Z<=A);
537 if(A >= 19 || (A < 6 && A >= 2)) {
538 // For large (Woods-Saxon or Modified Harmonic Oscillator) or small
539 // (Gaussian) nuclei, the radius parameter is just the nuclear radius
540 return getRadiusParameter(A,Z);
541 } else if(A < clusterTableASize && Z < clusterTableZSize && A >= 6) {
542 const G4double thisRMS = positionRMS[Z][A];
543 if(thisRMS>0.0)
544 return thisRMS;
545 else {
546 ERROR("ParticleTable::getRadiusParameter : Radius for nucleus A = " << A << " Z = " << Z << " is ==0.0" << std::endl);
547 return 0.0;
548 }
549 } else if(A < 19) {
550 const G4double theRadiusParameter = getRadiusParameter(A, Z);
551 const G4double theDiffusenessParameter = getSurfaceDiffuseness(A, Z);
552 // The formula yields the nuclear RMS radius based on the parameters of
553 // the nuclear-density function
554 return 1.581*theDiffusenessParameter*
555 (2.+5.*theRadiusParameter)/(2.+3.*theRadiusParameter);
556 } else {
557 ERROR("ParticleTable::getNuclearRadius: No radius for nucleus A = " << A << " Z = " << Z << std::endl);
558 return 0.0;
559 }
560 }
static G4double getRadiusParameter(const G4int A, const G4int Z)

Referenced by getMaximumNuclearRadius(), G4INCL::NuclearDensity::getTransmissionRadius(), G4INCL::CoulombNonRelativistic::maxImpactParameter(), G4INCL::CoulombNone::maxImpactParameter(), and G4INCL::StandardPropagationModel::shootComposite().

◆ getProtonSeparationEnergy()

static G4double G4INCL::ParticleTable::getProtonSeparationEnergy ( )
inlinestatic

Getter for protonSeparationEnergy.

Definition at line 268 of file G4INCLParticleTable.hh.

268{ return protonSeparationEnergy; }

◆ getRadiusParameter()

G4double G4INCL::ParticleTable::getRadiusParameter ( const G4int  A,
const G4int  Z 
)
static

Definition at line 562 of file G4INCLParticleTable.cc.

562 {
563// assert(A>0 && Z>=0 && Z<=A);
564 if(A >= 28) {
565 // phenomenological radius fit
566 return (2.745e-4 * A + 1.063) * std::pow(A, 1.0/3.0);
567 } else if(A < 6 && A >= 2) {
568 if(Z<clusterTableZSize) {
569 const G4double thisRMS = positionRMS[Z][A];
570 if(thisRMS>0.0)
571 return thisRMS;
572 else {
573 ERROR("ParticleTable::getRadiusParameter : Radius for nucleus A = " << A << " Z = " << Z << " is ==0.0" << std::endl);
574 return 0.0;
575 }
576 } else {
577 ERROR("ParticleTable::getRadiusParameter : No radius for nucleus A = " << A << " Z = " << Z << std::endl);
578 return 0.0;
579 }
580 } else if(A < 28 && A >= 6) {
581 return mediumRadius[A-1];
582 // return 1.581*mediumDiffuseness[A-1]*(2.+5.*mediumRadius[A-1])/(2.+3.*mediumRadius[A-1]);
583 } else {
584 ERROR("ParticleTable::getRadiusParameter: No radius for nucleus A = " << A << " Z = " << Z << std::endl);
585 return 0.0;
586 }
587 }

Referenced by G4INCL::NuclearDensityFactory::createRCDFTable(), G4INCL::NuclearDensityFactory::createRPCorrelationTable(), and getNuclearRadius().

◆ getRealMass() [1/2]

G4double G4INCL::ParticleTable::getRealMass ( const G4INCL::ParticleType  t)
static

Get particle mass (in MeV/c^2)

Definition at line 468 of file G4INCLParticleTable.cc.

468 {
469 switch(t) {
470 case Proton:
471 return theRealProtonMass;
472 break;
473 case Neutron:
474 return theRealNeutronMass;
475 break;
476 case PiPlus:
477 case PiMinus:
478 return theRealChargedPiMass;
479 break;
480 case PiZero:
481 return theRealPiZeroMass;
482 break;
483 default:
484 ERROR("Particle::getRealMass : Unknown particle type." << std::endl);
485 return 0.0;
486 break;
487 }
488 }

Referenced by G4INCL::Particle::getRealMass(), getRealMass(), and initialize().

◆ getRealMass() [2/2]

G4double G4INCL::ParticleTable::getRealMass ( const G4int  A,
const G4int  Z 
)
static

Get nuclear mass (in MeV/c^2)

Definition at line 490 of file G4INCLParticleTable.cc.

490 {
491// assert(A>=0);
492 // For nuclei with Z<0 or Z>A, assume that the exotic charge state is due to pions
493 if(Z<0)
494 return A*neutronMass - Z*getRealMass(PiMinus);
495 else if(Z>A)
496 return A*protonMass + (A-Z)*getRealMass(PiPlus);
497 else if(Z==0)
498 return A*getRealMass(Neutron);
499 else if(A==Z)
500 return A*getRealMass(Proton);
501 else if(A>1) {
502#ifndef INCLXX_IN_GEANT4_MODE
503 if(ParticleTable::hasMassTable(A,Z))
504 return ParticleTable::massTable.at(Z).at(A);
505 else {
506 DEBUG("Real mass unavailable for isotope A=" << A << ", Z=" << Z
507 << ", using Weizsaecker's formula"
508 << std::endl);
509 return getWeizsaeckerMass(A,Z);
510 }
511#else
512 return theG4IonTable->GetNucleusMass(Z,A) / MeV;
513#endif
514 } else
515 return 0.;
516 }
#define DEBUG(x)
static G4double getRealMass(const G4INCL::ParticleType t)
Get particle mass (in MeV/c^2)
static G4IonTable * theG4IonTable
G4double GetNucleusMass(G4int Z, G4int A, G4int L=0) const
Definition: G4IonTable.cc:741

◆ getSeparationEnergyINCL()

static G4double G4INCL::ParticleTable::getSeparationEnergyINCL ( const ParticleType  t,
const  G4int,
const  G4int 
)
inlinestatic

Return INCL's default separation energy.

Definition at line 234 of file G4INCLParticleTable.hh.

234 {
235 if(t==Proton)
236 return theINCLProtonSeparationEnergy;
237 else if(t==Neutron)
238 return theINCLNeutronSeparationEnergy;
239 else {
240 ERROR("ParticleTable::getSeparationEnergyINCL : Unknown particle type." << std::endl);
241 return 0.0;
242 }
243 }

Referenced by getSeparationEnergyRealForLight(), and initialize().

◆ getSeparationEnergyReal()

static G4double G4INCL::ParticleTable::getSeparationEnergyReal ( const ParticleType  t,
const G4int  A,
const G4int  Z 
)
inlinestatic

Return the real separation energy.

Definition at line 246 of file G4INCLParticleTable.hh.

246 {
247 // Real separation energies for all nuclei
248 if(t==Proton)
249 return (*getTableParticleMass)(Proton) + (*getTableMass)(A-1,Z-1) - (*getTableMass)(A,Z);
250 else if(t==Neutron)
251 return (*getTableParticleMass)(Neutron) + (*getTableMass)(A-1,Z) - (*getTableMass)(A,Z);
252 else {
253 ERROR("ParticleTable::getSeparationEnergyReal : Unknown particle type." << std::endl);
254 return 0.0;
255 }
256 }
static NuclearMassFn getTableMass
Static pointer to the mass function for nuclei.
static ParticleMassFn getTableParticleMass
Static pointer to the mass function for particles.

Referenced by getSeparationEnergyRealForLight(), and initialize().

◆ getSeparationEnergyRealForLight()

static G4double G4INCL::ParticleTable::getSeparationEnergyRealForLight ( const ParticleType  t,
const G4int  A,
const G4int  Z 
)
inlinestatic

Return the real separation energy only for light nuclei.

Definition at line 259 of file G4INCLParticleTable.hh.

259 {
260 // Real separation energies for light nuclei, fixed values for heavy nuclei
262 return getSeparationEnergyReal(t, A, Z);
263 else
264 return getSeparationEnergyINCL(t, A, Z);
265 }
static G4double getSeparationEnergyReal(const ParticleType t, const G4int A, const G4int Z)
Return the real separation energy.
static G4double getSeparationEnergyINCL(const ParticleType t, const G4int, const G4int)
Return INCL's default separation energy.

Referenced by initialize().

◆ getShortName() [1/3]

std::string G4INCL::ParticleTable::getShortName ( const G4int  A,
const G4int  Z 
)
static

Get the short INCL name of the ion.

Definition at line 393 of file G4INCLParticleTable.cc.

393 {
394 std::stringstream stream;
395 stream << getElementName(Z);
396 if(A>0)
397 stream << A;
398 return stream.str();
399 }

◆ getShortName() [2/3]

std::string G4INCL::ParticleTable::getShortName ( const ParticleSpecies  s)
static

Get the short INCL name of the particle.

Definition at line 373 of file G4INCLParticleTable.cc.

373 {
374 if(s.theType==Composite)
375 return getShortName(s.theA,s.theZ);
376 else
377 return getShortName(s.theType);
378 }
static std::string getShortName(const ParticleType t)
Get the short INCL name of the particle.

◆ getShortName() [3/3]

std::string G4INCL::ParticleTable::getShortName ( const ParticleType  t)
static

Get the short INCL name of the particle.

Definition at line 426 of file G4INCLParticleTable.cc.

426 {
427 if(p == G4INCL::Proton) {
428 return std::string("p");
429 } else if(p == G4INCL::Neutron) {
430 return std::string("n");
431 } else if(p == G4INCL::DeltaPlusPlus) {
432 return std::string("d++");
433 } else if(p == G4INCL::DeltaPlus) {
434 return std::string("d+");
435 } else if(p == G4INCL::DeltaZero) {
436 return std::string("d0");
437 } else if(p == G4INCL::DeltaMinus) {
438 return std::string("d-");
439 } else if(p == G4INCL::PiPlus) {
440 return std::string("pi+");
441 } else if(p == G4INCL::PiZero) {
442 return std::string("pi0");
443 } else if(p == G4INCL::PiMinus) {
444 return std::string("pi-");
445 } else if(p == G4INCL::Composite) {
446 return std::string("comp");
447 }
448 return std::string("unknown");
449 }

Referenced by getShortName().

◆ getSurfaceDiffuseness()

G4double G4INCL::ParticleTable::getSurfaceDiffuseness ( const G4int  A,
const G4int  Z 
)
static

Definition at line 604 of file G4INCLParticleTable.cc.

604 {
605#else
607#endif // INCLXX_IN_GEANT4_MODE
608
609 if(A >= 28) {
610 return 1.63e-4 * A + 0.510;
611 } else if(A < 28 && A >= 19) {
612 return mediumDiffuseness[A-1];
613 } else if(A < 19 && A >= 6) {
614 return mediumDiffuseness[A-1];
615 } else if(A < 6 && A >= 2) {
616 ERROR("ParticleTable::getSurfaceDiffuseness: was called for A = " << A << " Z = " << Z << std::endl);
617 return 0.0;
618 } else {
619 ERROR("ParticleTable::getSurfaceDiffuseness: No diffuseness for nucleus A = " << A << " Z = " << Z << std::endl);
620 return 0.0;
621 }
622 }
int G4int
Definition: G4Types.hh:66

Referenced by G4INCL::NuclearDensityFactory::createRCDFTable(), G4INCL::NuclearDensityFactory::createRPCorrelationTable(), getMaximumNuclearRadius(), getNuclearRadius(), and getSurfaceDiffuseness().

◆ getTableQValue() [1/2]

static G4double G4INCL::ParticleTable::getTableQValue ( const G4int  A1,
const G4int  Z1,
const G4int  A2,
const G4int  Z2 
)
inlinestatic

Get Q-value (in MeV/c^2)

Uses the getTableMass function to compute the Q-value for the following reaction:

\[ (A_1,Z_1) + (A_2, Z_2) --> (A_1+A_2,Z_1+Z_2) \]

Definition at line 136 of file G4INCLParticleTable.hh.

136 {
137 return getTableMass(A1,Z1) + getTableMass(A2,Z2) - getTableMass(A1+A2,Z1+Z2);
138 }

Referenced by G4INCL::Particle::getEmissionQValueCorrection(), and G4INCL::Particle::getTransferQValueCorrection().

◆ getTableQValue() [2/2]

static G4double G4INCL::ParticleTable::getTableQValue ( const G4int  A1,
const G4int  Z1,
const G4int  A2,
const G4int  Z2,
const G4int  A3,
const G4int  Z3 
)
inlinestatic

Get Q-value (in MeV/c^2)

Uses the getTableMass function to compute the Q-value for the following reaction:

\[ (A_1,Z_1) + (A_2, Z_2) --> (A_3,Z_3) + (A1+A2-A3,Z1+Z2-Z3) \]

Definition at line 146 of file G4INCLParticleTable.hh.

146 {
147 return getTableMass(A1,Z1) + getTableMass(A2,Z2) - getTableMass(A3,Z3) - getTableMass(A1+A2-A3,Z1+Z2-Z3);
148 }

◆ getTableSpeciesMass()

static G4double G4INCL::ParticleTable::getTableSpeciesMass ( const ParticleSpecies p)
inlinestatic

Definition at line 156 of file G4INCLParticleTable.hh.

156 {
157 if(p.theType == Composite)
158 return (*getTableMass)(p.theA, p.theZ);
159 else
160 return (*getTableParticleMass)(p.theType);
161 }

◆ initialize()

void G4INCL::ParticleTable::initialize ( Config const *const  theConfig = 0)
static

Initialize the particle table.

Definition at line 303 of file G4INCLParticleTable.cc.

303 {
304 protonMass = theINCLNucleonMass;
305 neutronMass = theINCLNucleonMass;
306 piPlusMass = theINCLPionMass;
307 piMinusMass = theINCLPionMass;
308 piZeroMass = theINCLPionMass;
309
310#ifndef INCLXX_IN_GEANT4_MODE
311 std::string dataFilePath;
312 if(theConfig)
313 dataFilePath = theConfig->getINCLXXDataFilePath();
314 readRealMasses(dataFilePath);
315#endif
316
317 if(theConfig && theConfig->getUseRealMasses()) {
320 } else {
323 }
324#ifdef INCLXX_IN_GEANT4_MODE
326 theG4IonTable = theG4ParticleTable->GetIonTable();
327 theRealProtonMass = theG4ParticleTable->FindParticle("proton")->GetPDGMass() / MeV;
328 theRealNeutronMass = theG4ParticleTable->FindParticle("neutron")->GetPDGMass() / MeV;
329 theRealChargedPiMass = theG4ParticleTable->FindParticle("pi+")->GetPDGMass() / MeV;
330 theRealPiZeroMass = theG4ParticleTable->FindParticle("pi0")->GetPDGMass() / MeV;
331#endif
332
333 // Initialise the separation-energy function
334 if(!theConfig || theConfig->getSeparationEnergyType()==INCLSeparationEnergy)
336 else if(theConfig->getSeparationEnergyType()==RealSeparationEnergy)
338 else if(theConfig->getSeparationEnergyType()==RealForLightSeparationEnergy)
340 else {
341 FATAL("Unrecognized separation-energy type in ParticleTable initialization: " << theConfig->getSeparationEnergyType() << std::endl);
342 std::abort();
343 }
344
345 }
#define FATAL(x)
static SeparationEnergyFn getSeparationEnergy
Static pointer to the separation-energy function.
static G4double getSeparationEnergyRealForLight(const ParticleType t, const G4int A, const G4int Z)
Return the real separation energy only for light nuclei.
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()
G4IonTable * GetIonTable()
@ INCLSeparationEnergy
@ RealForLightSeparationEnergy

Referenced by G4INCL::INCL::INCL().

◆ parseIUPACElement()

G4int G4INCL::ParticleTable::parseIUPACElement ( std::string const pS)
static

Parse a IUPAC element name.

Note: this function is UGLY. Look at it at your own peril.

Parameters
pSa normalised string (lowercase)
Returns
the charge number of the nuclide, or zero on fail

Definition at line 687 of file G4INCLParticleTable.cc.

687 {
688 // Normalise to lower case
689 std::string elementName(s);
690 std::transform(elementName.begin(), elementName.end(), elementName.begin(), ::tolower);
691 // Return 0 if the element name contains anything but IUPAC digits
692 if(elementName.find_first_not_of(elementIUPACDigits)!=std::string::npos)
693 return 0;
694 std::transform(elementName.begin(), elementName.end(), elementName.begin(), ParticleTable::iupacToInt);
695 std::stringstream elementStream(elementName);
696 G4int Z;
697 elementStream >> Z;
698 return Z;
699 }

◆ setNeutronSeparationEnergy()

static void G4INCL::ParticleTable::setNeutronSeparationEnergy ( const G4double  s)
inlinestatic

Setter for protonSeparationEnergy.

Definition at line 277 of file G4INCLParticleTable.hh.

277{ neutronSeparationEnergy = s; }

Referenced by G4INCL::Nucleus::Nucleus().

◆ setProtonSeparationEnergy()

static void G4INCL::ParticleTable::setProtonSeparationEnergy ( const G4double  s)
inlinestatic

Setter for protonSeparationEnergy.

Definition at line 274 of file G4INCLParticleTable.hh.

274{ protonSeparationEnergy = s; }

Referenced by G4INCL::Nucleus::Nucleus().

Member Data Documentation

◆ clusterDecayMode

const ParticleTable::ClusterDecayType G4INCL::ParticleTable::clusterDecayMode
static
Initial value:
=
{
}

Definition at line 330 of file G4INCLParticleTable.hh.

Referenced by G4INCL::ClusterDecay::isStable().

◆ clusterPhaseSpaceCut

const G4double G4INCL::ParticleTable::clusterPhaseSpaceCut
static
Initial value:
= {0.0, 70000.0, 180000.0,
90000.0, 90000.0,
128941.0 ,145607.0,
161365.0, 176389.0,
190798.0, 204681.0,
218109.0, 231135.0}

Definition at line 310 of file G4INCLParticleTable.hh.

Referenced by G4INCL::ClusteringModelIntercomparison::getCluster().

◆ clusterPosFact

const G4double G4INCL::ParticleTable::clusterPosFact
static
Initial value:
= {0.0, 1.0, 0.5,
0.33333, 0.25,
0.2, 0.16667,
0.14286, 0.125,
0.11111, 0.1,
0.09091, 0.083333}

Precomputed factor 1.0/A

Definition at line 306 of file G4INCLParticleTable.hh.

Referenced by G4INCL::ClusterUtils::getNewPositionVector().

◆ clusterPosFact2

const G4double G4INCL::ParticleTable::clusterPosFact2
static
Initial value:
= {0.0, 1.0, 0.25,
0.11111, 0.0625,
0.04, 0.0277778,
0.020408, 0.015625,
0.012346, 0.01,
0.0082645, 0.0069444}

Precomputed factor (1.0/A)^2

Definition at line 307 of file G4INCLParticleTable.hh.

Referenced by G4INCL::ClusteringModelIntercomparison::getCluster(), and G4INCL::ClusterUtils::getPhaseSpace().

◆ clusterTableASize

const G4int G4INCL::ParticleTable::clusterTableASize = ParticleTable::maxClusterMass+1
static

◆ clusterTableZSize

const G4int G4INCL::ParticleTable::clusterTableZSize = ParticleTable::maxClusterCharge+1
static

◆ clusterZMax

const G4int G4INCL::ParticleTable::clusterZMax = {0, 0, 1, 2, 3, 3, 5, 5, 6, 6, 7, 7, 8}
static

◆ clusterZMin

const G4int G4INCL::ParticleTable::clusterZMin = {0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3}
static

◆ effectiveDeltaDecayThreshold

const G4double G4INCL::ParticleTable::effectiveDeltaDecayThreshold
static
Initial value:
=
ParticleTable::theRealNeutronMass + ParticleTable::theRealChargedPiMass
+ 0.5

Definition at line 299 of file G4INCLParticleTable.hh.

Referenced by G4INCL::InteractionAvatar::enforceEnergyConservation(), and G4INCL::InteractionAvatar::postInteraction().

◆ effectiveDeltaMass

const G4double G4INCL::ParticleTable::effectiveDeltaMass = 1232.0
static

Definition at line 297 of file G4INCLParticleTable.hh.

◆ effectiveNucleonMass

◆ effectiveNucleonMass2

const G4double G4INCL::ParticleTable::effectiveNucleonMass2 = 8.8036860777616e5
static

◆ effectivePionMass

const G4double G4INCL::ParticleTable::effectivePionMass = 138.0
static

◆ elementTableSize

const G4int G4INCL::ParticleTable::elementTableSize = 113
static

Definition at line 293 of file G4INCLParticleTable.hh.

Referenced by getElementName().

◆ eSquared

const G4double G4INCL::ParticleTable::eSquared = 1.439964
static

Coulomb conversion factor, in MeV*fm.

\[ e^2/(4 pi epsilon_0) \]

Definition at line 336 of file G4INCLParticleTable.hh.

Referenced by G4INCL::Nucleus::getCoulombRadius().

◆ getSeparationEnergy

ParticleTable::SeparationEnergyFn G4INCL::ParticleTable::getSeparationEnergy
static

Static pointer to the separation-energy function.

Definition at line 165 of file G4INCLParticleTable.hh.

Referenced by initialize().

◆ getTableMass

◆ getTableParticleMass

ParticleTable::ParticleMassFn G4INCL::ParticleTable::getTableParticleMass
static

◆ maxClusterCharge

const G4int G4INCL::ParticleTable::maxClusterCharge = 8
static

Definition at line 302 of file G4INCLParticleTable.hh.

◆ maxClusterMass

const G4int G4INCL::ParticleTable::maxClusterMass = 12
static

◆ theG4IonTable

G4IonTable * G4INCL::ParticleTable::theG4IonTable
static

Definition at line 313 of file G4INCLParticleTable.hh.

Referenced by getRealMass(), and initialize().


The documentation for this class was generated from the following files: