Geant4 9.6.0
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 ()
 
 G4NucleiProperties ()
 

Static Public Member Functions

static G4double GetNuclearMass (const G4double A, const G4double Z)
 
static G4double GetNuclearMass (const G4int A, const G4int Z)
 
static bool IsInStableTable (const G4double A, const G4double Z)
 
static bool 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 50 of file G4NucleiProperties.hh.

Constructor & Destructor Documentation

◆ ~G4NucleiProperties()

G4NucleiProperties::~G4NucleiProperties ( )
inline

Definition at line 59 of file G4NucleiProperties.hh.

59{ };

◆ G4NucleiProperties()

G4NucleiProperties::G4NucleiProperties ( )
inline

Definition at line 62 of file G4NucleiProperties.hh.

62{};

Member Function Documentation

◆ GetBindingEnergy() [1/2]

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

Definition at line 216 of file G4NucleiProperties.cc.

217{
218 G4int iA = G4int(A);
219 G4int iZ = G4int(Z);
220 return GetBindingEnergy(iA,iZ);
221}
int G4int
Definition: G4Types.hh:66
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 223 of file G4NucleiProperties.cc.

224{
225 if (A < 1 || Z < 0 || Z > A) {
226#ifdef G4VERBOSE
227 if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>0) {
228 G4cerr << "G4NucleiProperties::GetMassExccess: Wrong values for A = "
229 << A << " and Z = " << Z << G4endl;
230 }
231#endif
232 return 0.0;
233
234 } else {
235 if (G4NucleiPropertiesTableAME03::IsInTable(Z,A)) {
236 return G4NucleiPropertiesTableAME03::GetBindingEnergy(Z,A);
237 } else if (G4NucleiPropertiesTheoreticalTable::IsInTable(Z,A)) {
238 return G4NucleiPropertiesTheoreticalTable::GetBindingEnergy(Z,A);
239 }else {
240 return BindingEnergy(A,Z);
241 }
242
243 }
244}
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cerr
static G4ParticleTable * GetParticleTable()

Referenced by G4KaonMinusAbsorptionAtRest::AtRestDoIt(), G4NeutronHPInelasticBaseFS::BaseApply(), G4InuclSpecialFunctions::bindingEnergy(), G4StatMFMacroBiNucleon::CalcEnergy(), G4StatMFMacroTetraNucleon::CalcEnergy(), G4StatMFMacroTriNucleon::CalcEnergy(), G4StatMFMacroBiNucleon::CalcMeanMultiplicity(), G4StatMFMacroTetraNucleon::CalcMeanMultiplicity(), G4StatMFMacroTriNucleon::CalcMeanMultiplicity(), G4QMDNucleus::CalEnergyAndAngularMomentumInCM(), G4PiMinusStopAbsorption::DoAbsorption(), G4PiMinusStopAbsorption::Energy(), GetBindingEnergy(), G4AntiProtonField::GetField(), G4KaonMinusField::GetField(), G4KaonPlusField::GetField(), G4KaonZeroField::GetField(), G4PionMinusField::GetField(), G4PionPlusField::GetField(), G4PionZeroField::GetField(), G4SigmaMinusField::GetField(), G4SigmaPlusField::GetField(), G4SigmaZeroField::GetField(), G4NeutronHPInelasticBaseFS::InitGammas(), G4NeutronHPContAngularPar::Sample(), and G4KM_OpticalEqRhs::SetFactor().

◆ GetMassExcess() [1/2]

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

Definition at line 157 of file G4NucleiProperties.cc.

158{
159 G4int iA = G4int(A);
160 G4int iZ = G4int(Z);
161 return GetMassExcess(iA,iZ);
162}
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 164 of file G4NucleiProperties.cc.

165{
166 if (A < 1 || Z < 0 || Z > A) {
167#ifdef G4VERBOSE
168 if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>0) {
169 G4cerr << "G4NucleiProperties::GetMassExccess: Wrong values for A = "
170 << A << " and Z = " << Z << G4endl;
171 }
172#endif
173 return 0.0;
174
175 } else {
176
177 if (G4NucleiPropertiesTableAME03::IsInTable(Z,A)){
178 return G4NucleiPropertiesTableAME03::GetMassExcess(Z,A);
179 } else if (G4NucleiPropertiesTheoreticalTable::IsInTable(Z,A)){
180 return G4NucleiPropertiesTheoreticalTable::GetMassExcess(Z,A);
181 } else {
182 return MassExcess(A,Z);
183 }
184 }
185
186}

Referenced by G4BEDeuteronChannel::G4BEDeuteronChannel(), G4StatMFFragment::GetEnergy(), GetMassExcess(), and G4BertiniEvaporationChannel::getQ().

◆ GetNuclearMass() [1/2]

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

Definition at line 53 of file G4NucleiProperties.cc.

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

Referenced by G4EMDissociation::ApplyYourself(), G4ChargeExchange::ApplyYourself(), G4HadronElastic::ApplyYourself(), G4NeutronRadCapture::ApplyYourself(), G4EmCaptureCascade::ApplyYourself(), G4MuMinusCapturePrecompound::ApplyYourself(), G4ParaFissionModel::ApplyYourself(), G4INCLXXInterface::ApplyYourself(), G4LowEIonFragmentation::ApplyYourself(), G4PreCompoundModel::ApplyYourself(), G4NeutronHPCaptureFS::ApplyYourself(), G4Nucleus::AtomicMass(), G4MuonMinusCaptureAtRest::AtRestDoIt(), G4NeutronHPInelasticBaseFS::BaseApply(), G4InuclEvaporation::BreakItUp(), G4BertiniEvaporation::BreakItUp(), G4StopTheoDeexcitation::BreakUp(), G4UnstableFragmentBreakUp::BreakUpFragment(), G4HadronicProcess::CheckEnergyMomentumConservation(), G4HadronicProcess::CheckResult(), G4NeutronHPInelasticCompFS::CompositeApply(), G4Fragment::ComputeGroundStateMass(), G4HadronElastic::ComputeMomentumCMS(), G4PiMinusStopAbsorption::DoAbsorption(), G4PiMinusStopAbsorption::Energy(), G4B9FermiFragment::G4B9FermiFragment(), G4Be8FermiFragment::G4Be8FermiFragment(), G4EvaporationChannel::G4EvaporationChannel(), G4GEMChannel::G4GEMChannel(), G4He5FermiFragment::G4He5FermiFragment(), G4Li5FermiFragment::G4Li5FermiFragment(), G4UnstableFragmentBreakUp::G4UnstableFragmentBreakUp(), G4VFermiFragment::G4VFermiFragment(), G4FermiFragmentsPool::GetConfigurationList(), G4NeutronHPCaptureData::GetCrossSection(), G4NeutronHPElasticData::GetCrossSection(), G4NeutronHPFissionData::GetCrossSection(), G4NeutronHPInelasticData::GetCrossSection(), G4NeutronHPorLCaptureData::GetCrossSection(), G4NeutronHPorLEInelasticData::GetCrossSection(), G4NeutronHPorLElasticData::GetCrossSection(), G4NeutronHPorLFissionData::GetCrossSection(), G4IonsKoxCrossSection::GetElementCrossSection(), G4TripathiLightCrossSection::GetElementCrossSection(), G4EvaporationChannel::GetEmissionProbability(), G4GEMChannel::GetEmissionProbability(), G4PromptPhotonEvaporation::GetEmissionProbability(), G4IonsShenCrossSection::GetIsoCrossSection(), G4QMDNucleus::GetNuclearMass(), GetNuclearMass(), G4HyperNucleiProperties::GetNuclearMass(), G4InuclNuclei::getNucleiMass(), G4IonTable::GetNucleusMass(), G4NeutronHPThermalBoost::GetThermalEnergy(), G4VPreCompoundFragment::Initialize(), G4GeneratorPrecompoundInterface::Propagate(), G4AntiNuclElastic::SampleInvariantT(), G4DiffuseElastic::SampleInvariantT(), G4NuclNuclDiffuseElastic::SampleInvariantT(), G4eCoulombScatteringModel::SampleSecondaries(), G4hCoulombScatteringModel::SampleSecondaries(), G4IonCoulombScatteringModel::SampleSecondaries(), G4ScreeningMottCrossSection::SetupKinematic(), G4QElectronNuclearCrossSection::ThresholdEnergy(), G4QMuonNuclearCrossSection::ThresholdEnergy(), G4QTauNuclearCrossSection::ThresholdEnergy(), and G4QPhotonNuclearCrossSection::ThresholdEnergy().

◆ GetNuclearMass() [2/2]

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

Definition at line 71 of file G4NucleiProperties.cc.

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

◆ IsInStableTable() [1/2]

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

◆ IsInStableTable() [2/2]

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

Definition at line 141 of file G4NucleiProperties.cc.

142{
143 if (A < 1 || Z < 0 || Z > A) {
144#ifdef G4VERBOSE
145 if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>0) {
146 G4cerr << "G4NucleiProperties::IsInStableTable: Wrong values for A = "
147 << A << " and Z = " << Z << G4endl;
148 }
149#endif
150 return false;
151 }
152
153 return G4NucleiPropertiesTableAME03::IsInTable(Z,A);
154
155}

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