Geant4 11.1.1
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 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 ( )
inline

Definition at line 48 of file G4NucleiProperties.hh.

48{}

◆ ~G4NucleiProperties()

G4NucleiProperties::~G4NucleiProperties ( )
inline

Definition at line 49 of file G4NucleiProperties.hh.

49{}

Member Function Documentation

◆ GetBindingEnergy() [1/2]

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

Definition at line 239 of file G4NucleiProperties.cc.

240{
241 G4int iA = G4int(A);
242 G4int iZ = G4int(Z);
243 return GetBindingEnergy(iA,iZ);
244}
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
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 246 of file G4NucleiProperties.cc.

247{
248 if (A < 1 || Z < 0 || Z > A)
249 {
250#ifdef G4VERBOSE
251 if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>0)
252 {
253 G4cout << "G4NucleiProperties::GetMassExccess: Wrong values for A = "
254 << A << " and Z = " << Z << G4endl;
255 }
256#endif
257 return 0.0;
258
259 }
260 else
261 {
262 if ( G4NucleiPropertiesTableAME12::IsInTable(Z,A) ) {
263 return G4NucleiPropertiesTableAME12::GetBindingEnergy(Z,A);
264 } else if (G4NucleiPropertiesTheoreticalTable::IsInTable(Z,A)) {
265 return G4NucleiPropertiesTheoreticalTable::GetBindingEnergy(Z,A);
266 }else {
267 return BindingEnergy(A,Z);
268 }
269 }
270}
#define G4endl
Definition: G4ios.hh:57
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(), 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 170 of file G4NucleiProperties.cc.

171{
172 G4int iA = G4int(A);
173 G4int iZ = G4int(Z);
174 return GetMassExcess(iA,iZ);
175}
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 177 of file G4NucleiProperties.cc.

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

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

◆ GetNuclearMass() [1/2]

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

Definition at line 50 of file G4NucleiProperties.cc.

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

Referenced by G4EMDissociation::ApplyYourself(), G4EmCaptureCascade::ApplyYourself(), G4MuMinusCapturePrecompound::ApplyYourself(), G4NeutronRadCapture::ApplyYourself(), G4LowEGammaNuclearModel::ApplyYourself(), G4ChargeExchange::ApplyYourself(), G4HadronElastic::ApplyYourself(), G4INCLXXInterface::ApplyYourself(), G4LMsdGenerator::ApplyYourself(), G4PreCompoundModel::ApplyYourself(), G4LowEIonFragmentation::ApplyYourself(), G4ParticleHPCaptureFS::ApplyYourself(), 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(), G4ParticleHPCaptureData::GetCrossSection(), G4ParticleHPElasticData::GetCrossSection(), G4ParticleHPFissionData::GetCrossSection(), G4ParticleHPInelasticData::GetCrossSection(), G4EvaporationChannel::GetEmissionProbability(), G4GEMChannel::GetEmissionProbability(), G4GEMChannelVI::GetEmissionProbability(), G4IonsShenCrossSection::GetIsoCrossSection(), G4MuonMinusBoundDecay::GetMuonDecayRate(), G4QMDNucleus::GetNuclearMass(), GetNuclearMass(), G4HyperNucleiProperties::GetNuclearMass(), G4InuclNuclei::getNucleiMass(), G4IonTable::GetNucleusMass(), G4ParticleHPThermalBoost::GetThermalEnergy(), G4VPreCompoundFragment::Initialize(), G4eCoulombScatteringModel::MinPrimaryEnergy(), G4hCoulombScatteringModel::MinPrimaryEnergy(), G4GeneratorPrecompoundInterface::Propagate(), G4GeneratorPrecompoundInterface::PropagateNuclNucl(), G4ParticleHPContAngularPar::Sample(), G4DiffuseElastic::SampleInvariantT(), G4DiffuseElasticV2::SampleInvariantT(), G4NuclNuclDiffuseElastic::SampleInvariantT(), G4AntiNuclElastic::SampleInvariantT(), G4eSingleCoulombScatteringModel::SampleSecondaries(), G4IonCoulombScatteringModel::SampleSecondaries(), G4eCoulombScatteringModel::SampleSecondaries(), G4hCoulombScatteringModel::SampleSecondaries(), G4BetheHeitler5DModel::SampleSecondaries(), and G4ScreeningMottCrossSection::SetupKinematic().

◆ GetNuclearMass() [2/2]

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

Definition at line 70 of file G4NucleiProperties.cc.

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

◆ IsInStableTable() [1/2]

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

Definition at line 146 of file G4NucleiProperties.cc.

147{
148 G4int iA = G4int(A);
149 G4int iZ = G4int(Z);
150 return IsInStableTable(iA, iZ);
151}
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 153 of file G4NucleiProperties.cc.

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

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