Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4NucleiProperties Class Reference

#include <G4NucleiProperties.hh>

Public Member Functions

 G4NucleiProperties ()=default
 
 ~G4NucleiProperties ()=default
 

Static Public Member Functions

static G4double GetNuclearMass (const G4double A, const G4double Z)
 
static G4double GetNuclearMass (const G4int A, const G4int Z)
 
static G4bool IsInStableTable (const G4double A, const G4double Z)
 
static G4bool IsInStableTable (const G4int A, const G4int Z)
 
static G4double GetBindingEnergy (const G4int A, const G4int Z)
 
static G4double GetBindingEnergy (const G4double A, const G4double Z)
 
static G4double GetMassExcess (const G4int A, const G4int Z)
 
static G4double GetMassExcess (const G4double A, const G4double Z)
 

Detailed Description

Definition at line 44 of file G4NucleiProperties.hh.

Constructor & Destructor Documentation

◆ G4NucleiProperties()

G4NucleiProperties::G4NucleiProperties ( )
default

◆ ~G4NucleiProperties()

G4NucleiProperties::~G4NucleiProperties ( )
default

Member Function Documentation

◆ GetBindingEnergy() [1/2]

G4double G4NucleiProperties::GetBindingEnergy ( const G4double A,
const G4double Z )
static

Definition at line 222 of file G4NucleiProperties.cc.

223{
224 auto iA = G4int(A);
225 auto iZ = G4int(Z);
226 return GetBindingEnergy(iA, iZ);
227}
int G4int
Definition G4Types.hh:85
const G4double A[17]
static G4double GetBindingEnergy(const G4int A, const G4int Z)

◆ GetBindingEnergy() [2/2]

G4double G4NucleiProperties::GetBindingEnergy ( const G4int A,
const G4int Z )
static

Definition at line 229 of file G4NucleiProperties.cc.

230{
231 if (A < 1 || Z < 0 || Z > A) {
232#ifdef G4VERBOSE
233 if (G4ParticleTable::GetParticleTable()->GetVerboseLevel() > 0) {
234 G4cout << "G4NucleiProperties::GetMassExccess: Wrong values for A = " << A << " and Z = " << Z
235 << G4endl;
236 }
237#endif
238 return 0.0;
239 }
240
241 if (G4NucleiPropertiesTableAME12::IsInTable(Z, A)) {
242 return G4NucleiPropertiesTableAME12::GetBindingEnergy(Z, A);
243 }
244 if (G4NucleiPropertiesTheoreticalTable::IsInTable(Z, A)) {
245 return G4NucleiPropertiesTheoreticalTable::GetBindingEnergy(Z, A);
246 }
247 return BindingEnergy(A, Z);
248}
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
static G4ParticleTable * GetParticleTable()

Referenced by G4ParticleHPInelasticBaseFS::BaseApply(), G4InuclSpecialFunctions::bindingEnergy(), G4StatMFMacroBiNucleon::CalcEnergy(), G4StatMFMacroTetraNucleon::CalcEnergy(), G4StatMFMacroTriNucleon::CalcEnergy(), G4StatMFMacroBiNucleon::CalcMeanMultiplicity(), G4StatMFMacroTetraNucleon::CalcMeanMultiplicity(), G4StatMFMacroTriNucleon::CalcMeanMultiplicity(), G4LightIonQMDNucleus::CalEnergyAndAngularMomentumInCM(), G4QMDNucleus::CalEnergyAndAngularMomentumInCM(), GetBindingEnergy(), G4AntiProtonField::GetField(), G4KaonMinusField::GetField(), G4KaonPlusField::GetField(), G4KaonZeroField::GetField(), G4PionMinusField::GetField(), G4PionPlusField::GetField(), G4PionZeroField::GetField(), G4SigmaMinusField::GetField(), G4SigmaPlusField::GetField(), G4SigmaZeroField::GetField(), G4ParticleHPInelasticBaseFS::InitGammas(), and G4KM_OpticalEqRhs::SetFactor().

◆ GetMassExcess() [1/2]

G4double G4NucleiProperties::GetMassExcess ( const G4double A,
const G4double Z )
static

Definition at line 167 of file G4NucleiProperties.cc.

168{
169 auto iA = G4int(A);
170 auto iZ = G4int(Z);
171 return GetMassExcess(iA, iZ);
172}
static G4double GetMassExcess(const G4int A, const G4int Z)

◆ GetMassExcess() [2/2]

G4double G4NucleiProperties::GetMassExcess ( const G4int A,
const G4int Z )
static

Definition at line 174 of file G4NucleiProperties.cc.

175{
176 if (A < 1 || Z < 0 || Z > A) {
177#ifdef G4VERBOSE
178 if (G4ParticleTable::GetParticleTable()->GetVerboseLevel() > 0) {
179 G4cout << "G4NucleiProperties::GetMassExccess: Wrong values for A = " << A << " and Z = " << Z
180 << G4endl;
181 }
182#endif
183 return 0.0;
184 }
185
186 if (G4NucleiPropertiesTableAME12::IsInTable(Z, A)) {
187 // AME table
188 return G4NucleiPropertiesTableAME12::GetMassExcess(Z, A);
189 }
190 if (G4NucleiPropertiesTheoreticalTable::IsInTable(Z, A)) {
191 return G4NucleiPropertiesTheoreticalTable::GetMassExcess(Z, A);
192 }
193 return MassExcess(A, Z);
194}

Referenced by G4StatMFFragment::GetEnergy(), and GetMassExcess().

◆ GetNuclearMass() [1/2]

G4double G4NucleiProperties::GetNuclearMass ( const G4double A,
const G4double Z )
static

Definition at line 49 of file G4NucleiProperties.cc.

50{
51 G4double mass = 0.0;
52
53 if (std::fabs(A - G4int(A)) > 1.e-10) {
54 mass = NuclearMass(A, Z);
55 }
56 else {
57 // use mass table
58 auto iZ = G4int(Z);
59 auto iA = G4int(A);
60 mass = GetNuclearMass(iA, iZ);
61 }
62 return mass;
63}
double G4double
Definition G4Types.hh:83
static G4double GetNuclearMass(const G4double A, const G4double Z)

Referenced by G4AblaInterface::ApplyYourself(), G4ChargeExchange::ApplyYourself(), G4EmCaptureCascade::ApplyYourself(), G4EMDissociation::ApplyYourself(), G4HadronElastic::ApplyYourself(), G4INCLXXInterface::ApplyYourself(), G4LMsdGenerator::ApplyYourself(), G4LowEGammaNuclearModel::ApplyYourself(), G4LowEIonFragmentation::ApplyYourself(), G4MuMinusCapturePrecompound::ApplyYourself(), G4NeutronFissionVI::ApplyYourself(), G4NeutronHPCaptureFS::ApplyYourself(), G4NeutronRadCapture::ApplyYourself(), G4NeutronRadCaptureHP::ApplyYourself(), G4PreCompoundModel::ApplyYourself(), G4Nucleus::AtomicMass(), G4Nucleus::AtomicMass(), G4ParticleHPInelasticBaseFS::BaseApply(), G4InuclEvaporation::BreakItUp(), G4UnstableFragmentBreakUp::BreakUpChain(), G4HadronicProcess::CheckEnergyMomentumConservation(), G4HadronicProcess::CheckResult(), G4NeutrinoNucleusModel::CoherentPion(), G4ParticleHPInelasticCompFS::CompositeApply(), G4ComponentGGNuclNuclXsc::ComputeCoulombBarier(), G4Fragment::ComputeGroundStateMass(), G4HadronElastic::ComputeMomentumCMS(), G4NuclearRadii::CoulombFactor(), G4GEMProbability::Dump(), G4CompetitiveFission::EmittedFragment(), G4NeutrinoNucleusModel::FinalBarion(), G4ElasticData::G4ElasticData(), G4EvaporationChannel::G4EvaporationChannel(), G4FermiFragment::G4FermiFragment(), G4FermiPair::G4FermiPair(), G4GEMChannel::G4GEMChannel(), G4GEMChannelVI::G4GEMChannelVI(), G4UnstableFragmentBreakUp::G4UnstableFragmentBreakUp(), G4VEmissionProbability::G4VEmissionProbability(), G4NeutronHPCaptureData::GetCrossSection(), G4ParticleHPElasticData::GetCrossSection(), G4ParticleHPFissionData::GetCrossSection(), G4ParticleHPInelasticData::GetCrossSection(), G4EvaporationChannel::GetEmissionProbability(), G4GEMChannel::GetEmissionProbability(), G4GEMChannelVI::GetEmissionProbability(), G4ChargeExchangeXS::GetIsoCrossSection(), G4IonsShenCrossSection::GetIsoCrossSection(), G4MuonMinusBoundDecay::GetMuonDecayRate(), G4HyperNucleiProperties::GetNuclearMass(), G4LightIonQMDNucleus::GetNuclearMass(), GetNuclearMass(), G4QMDNucleus::GetNuclearMass(), G4InuclNuclei::getNucleiMass(), G4IonTable::GetNucleusMass(), G4ParticleHPThermalBoost::GetThermalEnergy(), G4FermiFragmentsPoolVI::Initialise(), G4VPreCompoundFragment::Initialize(), G4eCoulombScatteringModel::MinPrimaryEnergy(), G4hCoulombScatteringModel::MinPrimaryEnergy(), G4GeneratorPrecompoundInterface::Propagate(), G4GeneratorPrecompoundInterface::PropagateNuclNucl(), G4ParticleHPContAngularPar::Sample(), G4AntiNuclElastic::SampleInvariantT(), G4DiffuseElastic::SampleInvariantT(), G4DiffuseElasticV2::SampleInvariantT(), G4NuclNuclDiffuseElastic::SampleInvariantT(), G4BetheHeitler5DModel::SampleSecondaries(), G4eCoulombScatteringModel::SampleSecondaries(), G4eSingleCoulombScatteringModel::SampleSecondaries(), G4hCoulombScatteringModel::SampleSecondaries(), G4IonCoulombScatteringModel::SampleSecondaries(), and G4ScreeningMottCrossSection::SetupKinematic().

◆ GetNuclearMass() [2/2]

G4double G4NucleiProperties::GetNuclearMass ( const G4int A,
const G4int Z )
static

Definition at line 65 of file G4NucleiProperties.cc.

66{
67 if (mass_proton <= 0.0) {
68 const G4ParticleDefinition* nucleus = nullptr;
69 nucleus = G4ParticleTable::GetParticleTable()->FindParticle("neutron");
70 if (nucleus != nullptr) mass_neutron = nucleus->GetPDGMass();
71
72 nucleus = G4ParticleTable::GetParticleTable()->FindParticle("deuteron");
73 if (nucleus != nullptr) mass_deuteron = nucleus->GetPDGMass();
74
76 if (nucleus != nullptr) mass_triton = nucleus->GetPDGMass();
77
79 if (nucleus != nullptr) mass_alpha = nucleus->GetPDGMass();
80
82 if (nucleus != nullptr) mass_He3 = nucleus->GetPDGMass();
83
85 if (nucleus != nullptr) mass_proton = nucleus->GetPDGMass();
86 }
87
88 if (A < 1 || Z < 0 || Z > A) {
89#ifdef G4VERBOSE
90 if (G4ParticleTable::GetParticleTable()->GetVerboseLevel() > 0) {
91 G4cout << "G4NucleiProperties::GetNuclearMass: Wrong values for A = " << A << " and Z = " << Z
92 << G4endl;
93 }
94#endif
95 return 0.0;
96 }
97
98 G4double mass = -1.;
99 if ((Z <= 2)) {
100 // light nuclei
101 if ((Z == 1) && (A == 1)) {
102 mass = mass_proton;
103 }
104 else if ((Z == 0) && (A == 1)) {
105 mass = mass_neutron;
106 }
107 else if ((Z == 1) && (A == 2)) {
108 mass = mass_deuteron;
109 }
110 else if ((Z == 1) && (A == 3)) {
111 mass = mass_triton;
112 }
113 else if ((Z == 2) && (A == 4)) {
114 mass = mass_alpha;
115 }
116 else if ((Z == 2) && (A == 3)) {
117 mass = mass_He3;
118 }
119 }
120
121 if (mass < 0.) {
122 if (G4NucleiPropertiesTableAME12::IsInTable(Z, A)) {
123 // AME table
124 mass = G4NucleiPropertiesTableAME12::GetNuclearMass(Z, A);
125 }
126 else if (G4NucleiPropertiesTheoreticalTable::IsInTable(Z, A)) {
127 // Theoretical table
128 mass = G4NucleiPropertiesTheoreticalTable::GetNuclearMass(Z, A);
129 }
130 else if (Z == A) {
131 mass = A * mass_proton;
132 }
133 else if (0 == Z) {
134 mass = A * mass_neutron;
135 }
136 else {
137 mass = NuclearMass(G4double(A), G4double(Z));
138 }
139 }
140
141 if (mass < 0.) mass = 0.0;
142 return mass;
143}
G4ParticleDefinition * FindParticle(G4int PDGEncoding)

◆ IsInStableTable() [1/2]

G4bool G4NucleiProperties::IsInStableTable ( const G4double A,
const G4double Z )
static

Definition at line 145 of file G4NucleiProperties.cc.

146{
147 auto iA = G4int(A);
148 auto iZ = G4int(Z);
149 return IsInStableTable(iA, iZ);
150}
static G4bool IsInStableTable(const G4double A, const G4double Z)

Referenced by IsInStableTable().

◆ IsInStableTable() [2/2]

G4bool G4NucleiProperties::IsInStableTable ( const G4int A,
const G4int Z )
static

Definition at line 152 of file G4NucleiProperties.cc.

153{
154 if (A < 1 || Z < 0 || Z > A) {
155#ifdef G4VERBOSE
156 if (G4ParticleTable::GetParticleTable()->GetVerboseLevel() > 0) {
157 G4cout << "G4NucleiProperties::IsInStableTable: Wrong values for A = " << A
158 << " and Z = " << Z << G4endl;
159 }
160#endif
161 return false;
162 }
163
164 return G4NucleiPropertiesTableAME12::IsInTable(Z, A);
165}

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