Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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)
 
static void UseOldAMETable (G4bool val=true)
 

Detailed Description

Definition at line 47 of file G4NucleiProperties.hh.

Constructor & Destructor Documentation

G4NucleiProperties::~G4NucleiProperties ( )
inline

Definition at line 56 of file G4NucleiProperties.hh.

56 { };
G4NucleiProperties::G4NucleiProperties ( )
inline

Definition at line 59 of file G4NucleiProperties.hh.

59 { };

Member Function Documentation

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

Definition at line 268 of file G4NucleiProperties.cc.

269 {
270  if (A < 1 || Z < 0 || Z > A) {
271 #ifdef G4VERBOSE
272  if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>0) {
273  G4cout << "G4NucleiProperties::GetMassExccess: Wrong values for A = "
274  << A << " and Z = " << Z << G4endl;
275  }
276 #endif
277  return 0.0;
278 
279  } else {
280  G4bool inAMETable = false;
281  if ( ! use_old_evaluation ) {
282  inAMETable = G4NucleiPropertiesTableAME12::IsInTable(Z,A);
283  } else {
284  inAMETable = G4NucleiPropertiesTableAME03::IsInTable(Z,A);
285  }
286  if (inAMETable) {
287  if ( ! use_old_evaluation ) {
288  return G4NucleiPropertiesTableAME12::GetBindingEnergy(Z,A);
289  } else {
290  return G4NucleiPropertiesTableAME03::GetBindingEnergy(Z,A);
291  }
292  } else if (G4NucleiPropertiesTheoreticalTable::IsInTable(Z,A)) {
293  return G4NucleiPropertiesTheoreticalTable::GetBindingEnergy(Z,A);
294  }else {
295  return BindingEnergy(A,Z);
296  }
297 
298  }
299 }
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
bool G4bool
Definition: G4Types.hh:79
static G4ParticleTable * GetParticleTable()
#define G4endl
Definition: G4ios.hh:61

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 261 of file G4NucleiProperties.cc.

262 {
263  G4int iA = G4int(A);
264  G4int iZ = G4int(Z);
265  return GetBindingEnergy(iA,iZ);
266 }
int G4int
Definition: G4Types.hh:78
double A(double temperature)
static G4double GetBindingEnergy(const G4int A, const G4int Z)

Here is the call graph for this function:

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

Definition at line 188 of file G4NucleiProperties.cc.

189 {
190  if (A < 1 || Z < 0 || Z > A) {
191 #ifdef G4VERBOSE
192  if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>0) {
193  G4cout << "G4NucleiProperties::GetMassExccess: Wrong values for A = "
194  << A << " and Z = " << Z << G4endl;
195  }
196 #endif
197  return 0.0;
198 
199  } else {
200 
201  G4bool inAMETable = false;
202  if ( ! use_old_evaluation ) {
203  inAMETable = G4NucleiPropertiesTableAME12::IsInTable(Z,A);
204  } else {
205  inAMETable = G4NucleiPropertiesTableAME03::IsInTable(Z,A);
206  }
207  if (inAMETable){
208  // AME table
209  if ( ! use_old_evaluation ) {
210  return G4NucleiPropertiesTableAME12::GetMassExcess(Z,A);
211  } else {
212  return G4NucleiPropertiesTableAME03::GetMassExcess(Z,A);
213  }
214  } else if (G4NucleiPropertiesTheoreticalTable::IsInTable(Z,A)){
215  return G4NucleiPropertiesTheoreticalTable::GetMassExcess(Z,A);
216  } else {
217  return MassExcess(A,Z);
218  }
219  }
220 
221 }
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
bool G4bool
Definition: G4Types.hh:79
static G4ParticleTable * GetParticleTable()
#define G4endl
Definition: G4ios.hh:61

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 181 of file G4NucleiProperties.cc.

182 {
183  G4int iA = G4int(A);
184  G4int iZ = G4int(Z);
185  return GetMassExcess(iA,iZ);
186 }
int G4int
Definition: G4Types.hh:78
static G4double GetMassExcess(const G4int A, const G4int Z)
double A(double temperature)

Here is the call graph for this function:

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

Definition at line 64 of file G4NucleiProperties.cc.

65 {
66  G4double mass=0.0;
67 
68  if (std::fabs(A - G4int(A)) > 1.e-10) {
69  mass = NuclearMass(A,Z);
70 
71  } else {
72  // use mass table
73  G4int iZ = G4int(Z);
74  G4int iA = G4int(A);
75  mass =GetNuclearMass(iA,iZ);
76  }
77 
78  return mass;
79 }
static G4double GetNuclearMass(const G4double A, const G4double Z)
int G4int
Definition: G4Types.hh:78
double A(double temperature)
double G4double
Definition: G4Types.hh:76
G4double G4NucleiProperties::GetNuclearMass ( const G4int  A,
const G4int  Z 
)
static

Definition at line 82 of file G4NucleiProperties.cc.

83 {
84  if (mass_proton <= 0.0 ) {
85  const G4ParticleDefinition * nucleus = 0;
86  nucleus = G4ParticleTable::GetParticleTable()->FindParticle("proton"); // proton
87  if (nucleus!=0) mass_proton = nucleus->GetPDGMass();
88  nucleus = G4ParticleTable::GetParticleTable()->FindParticle("neutron"); // neutron
89  if (nucleus!=0) mass_neutron = nucleus->GetPDGMass();
90  nucleus = G4ParticleTable::GetParticleTable()->FindParticle("deuteron"); // deuteron
91  if (nucleus!=0) mass_deuteron = nucleus->GetPDGMass();
92  nucleus = G4ParticleTable::GetParticleTable()->FindParticle("triton"); // triton
93  if (nucleus!=0) mass_triton = nucleus->GetPDGMass();
94  nucleus = G4ParticleTable::GetParticleTable()->FindParticle("alpha"); // alpha
95  if (nucleus!=0) mass_alpha = nucleus->GetPDGMass();
96  nucleus = G4ParticleTable::GetParticleTable()->FindParticle("He3"); // He3
97  if (nucleus!=0) mass_He3 = nucleus->GetPDGMass();
98 
99  }
100 
101  if (A < 1 || Z < 0 || Z > A) {
102 #ifdef G4VERBOSE
103  if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>0) {
104  G4cout << "G4NucleiProperties::GetNuclearMass: Wrong values for A = " << A
105  << " and Z = " << Z << G4endl;
106  }
107 #endif
108  return 0.0;
109  }
110 
111  G4double mass= -1.;
112  if ( (Z<=2) ) {
113  // light nuclei
114  if ( (Z==1)&&(A==1) ) {
115  mass = mass_proton;
116  } else if ( (Z==0)&&(A==1) ) {
117  mass = mass_neutron;
118  } else if ( (Z==1)&&(A==2) ) {
119  mass = mass_deuteron;
120  } else if ( (Z==1)&&(A==3) ) {
121  mass = mass_triton;
122  } else if ( (Z==2)&&(A==4) ) {
123  mass = mass_alpha;
124  } else if ( (Z==2)&&(A==3) ) {
125  mass = mass_He3;
126  }
127  }
128 
129  if (mass < 0.) {
130  G4bool inAMETable = false;
131  if ( ! use_old_evaluation ) {
132  inAMETable = G4NucleiPropertiesTableAME12::IsInTable(Z,A);
133  } else {
134  inAMETable = G4NucleiPropertiesTableAME03::IsInTable(Z,A);
135  }
136  if ( inAMETable ) {
137  // AME table
138  if ( ! use_old_evaluation ) {
139  mass = G4NucleiPropertiesTableAME12::GetNuclearMass(Z,A);
140  } else {
141  mass = G4NucleiPropertiesTableAME03::GetNuclearMass(Z,A);
142  }
143  } else if (G4NucleiPropertiesTheoreticalTable::IsInTable(Z,A)){
144  // Theoretical table
145  mass = G4NucleiPropertiesTheoreticalTable::GetNuclearMass(Z,A);
146  } else {
147  mass = NuclearMass(G4double(A),G4double(Z));
148  }
149  }
150 
151  if (mass < 0.) mass = 0.0;
152  return mass;
153 }
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
bool G4bool
Definition: G4Types.hh:79
G4double GetPDGMass() const
static G4ParticleTable * GetParticleTable()
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

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

Definition at line 155 of file G4NucleiProperties.cc.

156 {
157  G4int iA = G4int(A);
158  G4int iZ = G4int(Z);
159  return IsInStableTable(iA, iZ);
160 }
int G4int
Definition: G4Types.hh:78
double A(double temperature)
static bool IsInStableTable(const G4double A, const G4double Z)
G4bool G4NucleiProperties::IsInStableTable ( const G4int  A,
const G4int  Z 
)
static

Definition at line 162 of file G4NucleiProperties.cc.

163 {
164  if (A < 1 || Z < 0 || Z > A) {
165 #ifdef G4VERBOSE
166  if (G4ParticleTable::GetParticleTable()->GetVerboseLevel()>0) {
167  G4cout << "G4NucleiProperties::IsInStableTable: Wrong values for A = "
168  << A << " and Z = " << Z << G4endl;
169  }
170 #endif
171  return false;
172  }
173 
174  if ( ! use_old_evaluation ) {
175  return G4NucleiPropertiesTableAME12::IsInTable(Z,A);
176  } else {
177  return G4NucleiPropertiesTableAME03::IsInTable(Z,A);
178  }
179 }
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
static G4ParticleTable * GetParticleTable()
#define G4endl
Definition: G4ios.hh:61

Here is the call graph for this function:

void G4NucleiProperties::UseOldAMETable ( G4bool  val = true)
static

Definition at line 364 of file G4NucleiProperties.cc.

365 {
366  use_old_evaluation = val;
367 }

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