Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Static Public Member Functions
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 ( )
inline

Definition at line 59 of file G4NucleiProperties.hh.

59 { };
G4NucleiProperties::G4NucleiProperties ( )
inline

Definition at line 62 of file G4NucleiProperties.hh.

62 {};

Member Function Documentation

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

Definition at line 223 of file G4NucleiProperties.cc.

References G4cout, G4endl, and G4ParticleTable::GetParticleTable().

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

224 {
225  if (A < 1 || Z < 0 || Z > A) {
226 #ifdef G4VERBOSE
227  if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>0) {
228  G4cout << "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 }
G4GLOB_DLL std::ostream G4cout
static G4ParticleTable * GetParticleTable()
#define G4endl
Definition: G4ios.hh:61
G4double G4NucleiProperties::GetBindingEnergy ( const G4double  A,
const G4double  Z 
)
static

Definition at line 216 of file G4NucleiProperties.cc.

References GetBindingEnergy().

217 {
218  G4int iA = G4int(A);
219  G4int iZ = G4int(Z);
220  return GetBindingEnergy(iA,iZ);
221 }
int G4int
Definition: G4Types.hh:78
static G4double GetBindingEnergy(const G4int A, const G4int Z)
G4double G4NucleiProperties::GetMassExcess ( const G4int  A,
const G4int  Z 
)
static

Definition at line 164 of file G4NucleiProperties.cc.

References G4cout, G4endl, and G4ParticleTable::GetParticleTable().

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

165 {
166  if (A < 1 || Z < 0 || Z > A) {
167 #ifdef G4VERBOSE
168  if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>0) {
169  G4cout << "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 }
G4GLOB_DLL std::ostream G4cout
static G4ParticleTable * GetParticleTable()
#define G4endl
Definition: G4ios.hh:61
G4double G4NucleiProperties::GetMassExcess ( const G4double  A,
const G4double  Z 
)
static

Definition at line 157 of file G4NucleiProperties.cc.

References GetMassExcess().

158 {
159  G4int iA = G4int(A);
160  G4int iZ = G4int(Z);
161  return GetMassExcess(iA,iZ);
162 }
int G4int
Definition: G4Types.hh:78
static G4double GetMassExcess(const G4int A, const G4int Z)
G4double G4NucleiProperties::GetNuclearMass ( const G4double  A,
const G4double  Z 
)
static

Definition at line 53 of file G4NucleiProperties.cc.

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

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 }
static G4double GetNuclearMass(const G4double A, const G4double Z)
int G4int
Definition: G4Types.hh:78
double G4double
Definition: G4Types.hh:76
G4double G4NucleiProperties::GetNuclearMass ( const G4int  A,
const G4int  Z 
)
static

Definition at line 71 of file G4NucleiProperties.cc.

References G4ParticleTable::FindParticle(), G4cout, G4endl, G4ParticleTable::GetParticleTable(), and G4ParticleDefinition::GetPDGMass().

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  G4cout << "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)
G4GLOB_DLL std::ostream G4cout
G4double GetPDGMass() const
static G4ParticleTable * GetParticleTable()
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76
G4bool G4NucleiProperties::IsInStableTable ( const G4double  A,
const G4double  Z 
)
static

Definition at line 134 of file G4NucleiProperties.cc.

135 {
136  G4int iA = G4int(A);
137  G4int iZ = G4int(Z);
138  return IsInStableTable(iA, iZ);
139 }
int G4int
Definition: G4Types.hh:78
static bool IsInStableTable(const G4double A, const G4double Z)
G4bool G4NucleiProperties::IsInStableTable ( const G4int  A,
const G4int  Z 
)
static

Definition at line 141 of file G4NucleiProperties.cc.

References G4cout, G4endl, and G4ParticleTable::GetParticleTable().

142 {
143  if (A < 1 || Z < 0 || Z > A) {
144 #ifdef G4VERBOSE
145  if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>0) {
146  G4cout << "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 }
G4GLOB_DLL std::ostream G4cout
static G4ParticleTable * GetParticleTable()
#define G4endl
Definition: G4ios.hh:61

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