Geant4-11
Public Types | Public Member Functions | Static Public Member Functions | Private Types | Private Member Functions | Private Attributes
G4NuclideTable Class Reference

#include <G4NuclideTable.hh>

Inheritance diagram for G4NuclideTable:
G4VIsotopeTable

Public Types

using G4IsotopeList = std::vector< G4IsotopeProperty * >
 

Public Member Functions

void AddState (G4int, G4int, G4double, G4double, G4int ionJ=0, G4double ionMu=0.0)
 
void AddState (G4int, G4int, G4double, G4int, G4double, G4int ionJ=0, G4double ionMu=0.0)
 
void AddState (G4int, G4int, G4double, G4Ions::G4FloatLevelBase, G4double, G4int ionJ=0, G4double ionMu=0.0)
 
void DumpTable (G4int Zmin=1, G4int Zmax=118)
 
std::size_t entries () const
 
 G4NuclideTable (const G4NuclideTable &)=delete
 
void GenerateNuclide ()
 
virtual G4IsotopeProperty * GetIsotope (G4int Z, G4int A, G4double E, G4Ions::G4FloatLevelBase flb=G4Ions::G4FloatLevelBase::no_Float)
 
G4IsotopeProperty * GetIsotopeByIndex (std::size_t idx) const
 
virtual G4IsotopeProperty * GetIsotopeByIsoLvl (G4int Z, G4int A, G4int lvl=0)
 
G4double GetLevelTolerance ()
 
const G4String & GetName () const
 
std::size_t GetSizeOfIsotopeList ()
 
G4double GetThresholdOfHalfLife ()
 
G4int GetVerboseLevel () const
 
G4NuclideTable & operator= (const G4NuclideTable &)=delete
 
void SetLevelTolerance (G4double x)
 
void SetThresholdOfHalfLife (G4double)
 
void SetVerboseLevel (G4int level)
 
virtual ~G4NuclideTable ()
 

Static Public Member Functions

static G4NuclideTable * GetInstance ()
 
static G4NuclideTable * GetNuclideTable ()
 
static G4double GetTruncationError (G4double eex)
 
static G4double Round (G4double eex)
 
static G4double Tolerance ()
 
static G4long Truncate (G4double eex)
 

Private Types

enum  {
  idxZ =0 , idxA , idxEnergy , idxLife ,
  idxSpin , idxMu
}
 

Private Member Functions

 G4NuclideTable ()
 
G4Ions::G4FloatLevelBase StripFloatLevelBase (const G4String &)
 
G4double StripFloatLevelBase (G4double E, G4int &flbIndex)
 

Private Attributes

G4IsotopeList * fIsotopeList = nullptr
 
G4double flevelTolerance = 0.0
 
G4NuclideTableMessenger * fMessenger = nullptr
 
G4String fName = ""
 
G4IsotopeList * fUserDefinedList = nullptr
 
std::map< G4int, std::multimap< G4double, G4IsotopeProperty * > > map_full_list
 
std::map< G4int, std::multimap< G4double, G4IsotopeProperty * > > map_pre_load_list
 
G4double minimum_threshold_of_half_life = DBL_MAX
 
G4double threshold_of_half_life = 0.0
 
G4int verboseLevel = 0
 

Detailed Description

Definition at line 52 of file G4NuclideTable.hh.

Member Typedef Documentation

◆ G4IsotopeList

Definition at line 56 of file G4NuclideTable.hh.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
idxZ 
idxA 
idxEnergy 
idxLife 
idxSpin 
idxMu 

Definition at line 128 of file G4NuclideTable.hh.

Constructor & Destructor Documentation

◆ ~G4NuclideTable()

G4NuclideTable::~G4NuclideTable ( )
virtual

Definition at line 69 of file G4NuclideTable.cc.

70{
71 for (auto it=map_pre_load_list.begin(); it!=map_pre_load_list.end(); ++it)
72 {
73 it->second.clear();
74 }
75 map_pre_load_list.clear();
76
77 for (auto it=map_full_list.begin(); it!=map_full_list.end(); ++it)
78 {
79 it->second.clear();
80 }
81 map_full_list.clear();
82
83 if (fIsotopeList != nullptr)
84 {
85 for (std::size_t i = 0 ; i<fIsotopeList->size(); ++i)
86 {
87 delete (*fIsotopeList)[i];
88 }
89 fIsotopeList->clear();
90 delete fIsotopeList;
91 fIsotopeList = nullptr;
92 }
93 delete fMessenger;
94}
std::map< G4int, std::multimap< G4double, G4IsotopeProperty * > > map_full_list
std::map< G4int, std::multimap< G4double, G4IsotopeProperty * > > map_pre_load_list
G4NuclideTableMessenger * fMessenger
G4IsotopeList * fIsotopeList

References fIsotopeList, fMessenger, map_full_list, and map_pre_load_list.

◆ G4NuclideTable() [1/2]

G4NuclideTable::G4NuclideTable ( const G4NuclideTable &  )
delete

◆ G4NuclideTable() [2/2]

G4NuclideTable::G4NuclideTable ( )
private

Definition at line 58 of file G4NuclideTable.cc.

59 : G4VIsotopeTable("Isomer"),
62{
66}
static constexpr double eV
Definition: G4SIunits.hh:201
G4double flevelTolerance
G4double threshold_of_half_life
std::vector< G4IsotopeProperty * > G4IsotopeList
#define ns
Definition: xmlparse.cc:614

References fIsotopeList, fMessenger, and GenerateNuclide().

Member Function Documentation

◆ AddState() [1/3]

void G4NuclideTable::AddState ( G4int  ionZ,
G4int  ionA,
G4double  ionE,
G4double  ionLife,
G4int  ionJ = 0,
G4double  ionMu = 0.0 
)

Definition at line 314 of file G4NuclideTable.cc.

316{
318 {
319 G4int flbIndex = 0;
320 ionE = StripFloatLevelBase( ionE, flbIndex );
321 AddState(ionZ,ionA,ionE,flbIndex,ionLife,ionJ,ionMu);
322 }
323}
int G4int
Definition: G4Types.hh:85
void AddState(G4int, G4int, G4double, G4double, G4int ionJ=0, G4double ionMu=0.0)
G4double StripFloatLevelBase(G4double E, G4int &flbIndex)
G4bool IsMasterThread()
Definition: G4Threading.cc:124

References AddState(), G4Threading::IsMasterThread(), and StripFloatLevelBase().

Referenced by AddState().

◆ AddState() [2/3]

void G4NuclideTable::AddState ( G4int  ionZ,
G4int  ionA,
G4double  ionE,
G4int  flbIndex,
G4double  ionLife,
G4int  ionJ = 0,
G4double  ionMu = 0.0 
)

Definition at line 326 of file G4NuclideTable.cc.

329{
331 {
332 if ( fUserDefinedList == nullptr ) fUserDefinedList = new G4IsotopeList();
333
334 G4IsotopeProperty* fProperty = new G4IsotopeProperty();
335
336 // Set Isotope Property
337 fProperty->SetAtomicNumber(ionZ);
338 fProperty->SetAtomicMass(ionA);
339 fProperty->SetIsomerLevel(9);
340 fProperty->SetEnergy(ionE);
341 fProperty->SetiSpin(ionJ);
342 fProperty->SetLifeTime(ionLife);
343 fProperty->SetDecayTable(nullptr);
344 fProperty->SetMagneticMoment(ionMu);
345 fProperty->SetFloatLevelBase(flbIndex);
346
347 fUserDefinedList->push_back(fProperty);
348 fIsotopeList->push_back(fProperty);
349 }
350}
void SetAtomicMass(G4int A)
void SetDecayTable(G4DecayTable *table)
void SetFloatLevelBase(G4Ions::G4FloatLevelBase flb)
void SetEnergy(G4double E)
void SetiSpin(G4int J)
void SetAtomicNumber(G4int Z)
void SetIsomerLevel(G4int level)
void SetLifeTime(G4double T)
void SetMagneticMoment(G4double M)
G4IsotopeList * fUserDefinedList

References fIsotopeList, fUserDefinedList, G4Threading::IsMasterThread(), G4IsotopeProperty::SetAtomicMass(), G4IsotopeProperty::SetAtomicNumber(), G4IsotopeProperty::SetDecayTable(), G4IsotopeProperty::SetEnergy(), G4IsotopeProperty::SetFloatLevelBase(), G4IsotopeProperty::SetIsomerLevel(), G4IsotopeProperty::SetiSpin(), G4IsotopeProperty::SetLifeTime(), and G4IsotopeProperty::SetMagneticMoment().

◆ AddState() [3/3]

void G4NuclideTable::AddState ( G4int  ionZ,
G4int  ionA,
G4double  ionE,
G4Ions::G4FloatLevelBase  flb,
G4double  ionLife,
G4int  ionJ = 0,
G4double  ionMu = 0.0 
)

Definition at line 353 of file G4NuclideTable.cc.

356{
358 {
359 if ( fUserDefinedList == nullptr ) fUserDefinedList = new G4IsotopeList();
360
361 G4IsotopeProperty* fProperty = new G4IsotopeProperty();
362
363 // Set Isotope Property
364 fProperty->SetAtomicNumber(ionZ);
365 fProperty->SetAtomicMass(ionA);
366 fProperty->SetIsomerLevel(9);
367 fProperty->SetEnergy(ionE);
368 fProperty->SetiSpin(ionJ);
369 fProperty->SetLifeTime(ionLife);
370 fProperty->SetDecayTable(0);
371 fProperty->SetMagneticMoment(ionMu);
372 fProperty->SetFloatLevelBase( flb );
373
374 fUserDefinedList->push_back(fProperty);
375 fIsotopeList->push_back(fProperty);
376 }
377}

References fIsotopeList, fUserDefinedList, G4Threading::IsMasterThread(), G4IsotopeProperty::SetAtomicMass(), G4IsotopeProperty::SetAtomicNumber(), G4IsotopeProperty::SetDecayTable(), G4IsotopeProperty::SetEnergy(), G4IsotopeProperty::SetFloatLevelBase(), G4IsotopeProperty::SetIsomerLevel(), G4IsotopeProperty::SetiSpin(), G4IsotopeProperty::SetLifeTime(), and G4IsotopeProperty::SetMagneticMoment().

◆ DumpTable()

void G4VIsotopeTable::DumpTable ( G4int  Zmin = 1,
G4int  Zmax = 118 
)
inherited

Definition at line 83 of file G4VIsotopeTable.cc.

84{
85 G4int Z, A;
86 G4int lvl;
87 const G4int MAX_LVL=9;
88 for ( Z =Zmin; Z<=Zmax; ++Z )
89 {
90 for ( A= Z; A<=3*Z; ++A )
91 {
92 for ( lvl=0; lvl<=MAX_LVL; ++lvl )
93 {
94 G4IsotopeProperty* ptr = GetIsotope(Z,A,lvl);
95 if (ptr!=nullptr) ptr->DumpInfo();
96 }
97 }
98 }
99}
const G4int Z[17]
const G4double A[17]
virtual G4IsotopeProperty * GetIsotope(G4int Z, G4int A, G4double E, G4Ions::G4FloatLevelBase flb=G4Ions::G4FloatLevelBase::no_Float)=0

References A, G4IsotopeProperty::DumpInfo(), G4VIsotopeTable::GetIsotope(), and Z.

◆ entries()

std::size_t G4NuclideTable::entries ( ) const
inline

Definition at line 171 of file G4NuclideTable.hh.

172{
173 return ( fIsotopeList ? fIsotopeList->size() : static_cast<size_t>(0) );
174}

References fIsotopeList.

Referenced by G4IonTable::PreloadNuclide().

◆ GenerateNuclide()

void G4NuclideTable::GenerateNuclide ( )

Definition at line 186 of file G4NuclideTable.cc.

187{
189 {
190 // Need to update full list
191 char* path = std::getenv("G4ENSDFSTATEDATA");
192
193 if ( path == nullptr )
194 {
195 G4Exception("G4NuclideTable", "PART70000", FatalException,
196 "G4ENSDFSTATEDATA environment variable must be set");
197 return;
198 }
199
200 std::ifstream ifs;
201 G4String filename(path);
202 filename += "/ENSDFSTATE.dat";
203
204 ifs.open( filename.c_str() );
205 if ( !ifs.good() )
206 {
207 G4Exception("G4NuclideTable", "PART70001", FatalException,
208 "ENSDFSTATE.dat is not found.");
209 return;
210 }
211
212 G4int ionCode=0;
213 G4int iLevel=0;
214 G4int ionZ;
215 G4int ionA;
216 G4double ionE;
217 G4String ionFL;
218 G4double ionLife;
219 G4int ionJ;
220 G4double ionMu;
221
222 ifs >> ionZ >> ionA >> ionE >> ionFL >> ionLife >> ionJ >> ionMu;
223
224 while ( ifs.good() ) // Loop checking, 09.08.2015, K.Kurashige
225 {
226 if ( ionCode != 1000*ionZ + ionA )
227 {
228 iLevel = 0;
229 ionCode = 1000*ionZ + ionA;
230 }
231
232 ionE *= keV;
234 ionLife *= ns;
235 ionMu *= (joule/tesla);
236
237 if ( ( ionE == 0 && flb == G4Ions::G4FloatLevelBase::no_Float )
238 || ( threshold_of_half_life <= ionLife*std::log(2.0)
239 && ionLife*std::log(2.0) < minimum_threshold_of_half_life ) )
240 {
241 if ( ionE > 0 ) ++iLevel;
242 if ( iLevel > 9 ) iLevel=9;
243
244 G4IsotopeProperty* fProperty = new G4IsotopeProperty();
245
246 // Set Isotope Property
247 fProperty->SetAtomicNumber(ionZ);
248 fProperty->SetAtomicMass(ionA);
249 fProperty->SetIsomerLevel(iLevel);
250 fProperty->SetEnergy(ionE);
251 fProperty->SetiSpin(ionJ);
252 fProperty->SetLifeTime(ionLife);
253 fProperty->SetDecayTable(nullptr);
254 fProperty->SetMagneticMoment(ionMu);
255 fProperty->SetFloatLevelBase( flb );
256
257 fIsotopeList->push_back(fProperty);
258
259 auto itf = map_full_list.find( ionCode );
260 if ( itf == map_full_list.cend() )
261 {
262 std::multimap<G4double, G4IsotopeProperty*> aMultiMap;
263 itf = ( map_full_list.insert(
264 std::pair< G4int, std::multimap< G4double,
265 G4IsotopeProperty* > > ( ionCode, aMultiMap ) ) ).first;
266 }
267 itf -> second.insert(
268 std::pair< G4double, G4IsotopeProperty* >(ionE, fProperty) );
269 }
270 ifs >> ionZ >> ionA >> ionE >> ionFL >> ionLife >> ionJ >> ionMu;
271 }
272
274
275 }
276
277 // Clear current map
278 for ( auto it=map_pre_load_list.begin(); it!=map_pre_load_list.end(); ++it )
279 {
280 it->second.clear();
281 }
282 map_pre_load_list.clear();
283
284 // Build map based on current threshold value
285 for ( auto it = map_full_list.cbegin(); it != map_full_list.cend(); ++it )
286 {
287 G4int ionCode = it->first;
288 auto itf = map_pre_load_list.find( ionCode );
289 if ( itf == map_pre_load_list.cend() )
290 {
291 std::multimap<G4double, G4IsotopeProperty*> aMultiMap;
292 itf = ( map_pre_load_list.insert(
293 std::pair< G4int, std::multimap< G4double,
294 G4IsotopeProperty* > > (ionCode, aMultiMap) ) ).first;
295 }
296 G4int iLevel = 0;
297 for ( auto itt = it->second.cbegin(); itt != it->second.cend(); ++itt )
298 {
299 G4double exEnergy = itt->first;
300 G4double meanLife = itt->second->GetLifeTime();
301 if ( exEnergy == 0.0 || meanLife*std::log(2.0) > threshold_of_half_life )
302 {
303 if ( itt->first != 0.0 ) ++iLevel;
304 if ( iLevel > 9 ) iLevel=9;
305 itt->second->SetIsomerLevel( iLevel );
306 itf->second.insert(
307 std::pair< G4double, G4IsotopeProperty* >(exEnergy, itt->second) );
308 }
309 }
310 }
311}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
static constexpr double joule
Definition: G4SIunits.hh:189
static constexpr double tesla
Definition: G4SIunits.hh:259
static constexpr double second
Definition: G4SIunits.hh:137
static constexpr double keV
Definition: G4SIunits.hh:202
double G4double
Definition: G4Types.hh:83
G4FloatLevelBase
Definition: G4Ions.hh:83
G4double minimum_threshold_of_half_life

References FatalException, fIsotopeList, G4Exception(), joule, keV, map_full_list, map_pre_load_list, minimum_threshold_of_half_life, G4Ions::no_Float, ns, second, G4IsotopeProperty::SetAtomicMass(), G4IsotopeProperty::SetAtomicNumber(), G4IsotopeProperty::SetDecayTable(), G4IsotopeProperty::SetEnergy(), G4IsotopeProperty::SetFloatLevelBase(), G4IsotopeProperty::SetIsomerLevel(), G4IsotopeProperty::SetiSpin(), G4IsotopeProperty::SetLifeTime(), G4IsotopeProperty::SetMagneticMoment(), StripFloatLevelBase(), tesla, and threshold_of_half_life.

Referenced by G4NuclideTable(), G4IonTable::PreloadNuclide(), and SetThresholdOfHalfLife().

◆ GetInstance()

G4NuclideTable * G4NuclideTable::GetInstance ( )
static

◆ GetIsotope()

G4IsotopeProperty * G4NuclideTable::GetIsotope ( G4int  Z,
G4int  A,
G4double  E,
G4Ions::G4FloatLevelBase  flb = G4Ions::G4FloatLevelBase::no_Float 
)
virtual

Implements G4VIsotopeTable.

Definition at line 97 of file G4NuclideTable.cc.

99{
100 G4IsotopeProperty* fProperty = nullptr;
101
102 // At first searching UserDefined
103 if ( fUserDefinedList )
104 {
105 for (auto it=fUserDefinedList->cbegin(); it!=fUserDefinedList->cend(); ++it)
106 {
107 if ( Z == (*it)->GetAtomicNumber() && A == (*it)->GetAtomicMass() )
108 {
109 G4double levelE = (*it)->GetEnergy();
110 if ( levelE - flevelTolerance/2 <= E && E < levelE + flevelTolerance/2 )
111 {
112 if( flb == (*it)->GetFloatLevelBase() ) { return *it; } //found
113 }
114 }
115 }
116 }
117
118 // Searching pre-load
119 // Note: isomer level is properly set only for pre_load_list
120 //
121 G4int ionCode = 1000*Z + A;
122 auto itf = map_pre_load_list.find( ionCode );
123
124 if ( itf != map_pre_load_list.cend() )
125 {
126 auto lower_bound_itr = itf -> second.lower_bound ( E - flevelTolerance/2 );
127 G4double levelE = DBL_MAX;
128
129 while ( lower_bound_itr != itf -> second.cend() )
130 {
131 levelE = lower_bound_itr->first;
132 if ( levelE - flevelTolerance/2 <= E && E < levelE + flevelTolerance/2 )
133 {
134 if ( flb == (lower_bound_itr->second)->GetFloatLevelBase() )
135 {
136 return lower_bound_itr->second; // found
137 }
138 }
139 else
140 {
141 break;
142 }
143 ++lower_bound_itr;
144 }
145 }
146
147 return fProperty; // not found
148}
G4double GetEnergy() const
#define DBL_MAX
Definition: templates.hh:62

References A, DBL_MAX, flevelTolerance, fUserDefinedList, G4IsotopeProperty::GetEnergy(), map_pre_load_list, second, and Z.

Referenced by GetIsotopeByIsoLvl().

◆ GetIsotopeByIndex()

G4IsotopeProperty * G4NuclideTable::GetIsotopeByIndex ( std::size_t  idx) const
inline

Definition at line 177 of file G4NuclideTable.hh.

178{
179 if ( fIsotopeList && idx<fIsotopeList->size()) return (*fIsotopeList)[idx];
180 else return nullptr;
181}

References fIsotopeList.

Referenced by G4IonTable::PreloadNuclide().

◆ GetIsotopeByIsoLvl()

G4IsotopeProperty * G4NuclideTable::GetIsotopeByIsoLvl ( G4int  Z,
G4int  A,
G4int  lvl = 0 
)
virtual

Reimplemented from G4VIsotopeTable.

Definition at line 179 of file G4NuclideTable.cc.

180{
181 if(lvl==0) return GetIsotope(Z,A,0.0);
182 return nullptr;
183}
virtual G4IsotopeProperty * GetIsotope(G4int Z, G4int A, G4double E, G4Ions::G4FloatLevelBase flb=G4Ions::G4FloatLevelBase::no_Float)

References A, GetIsotope(), and Z.

◆ GetLevelTolerance()

G4double G4NuclideTable::GetLevelTolerance ( )
inline

◆ GetName()

const G4String & G4VIsotopeTable::GetName ( ) const
inlineinherited

Definition at line 101 of file G4VIsotopeTable.hh.

102{
103 return fName;
104}

References G4VIsotopeTable::fName.

Referenced by G4IonTable::RegisterIsotopeTable().

◆ GetNuclideTable()

G4NuclideTable * G4NuclideTable::GetNuclideTable ( )
static

Definition at line 52 of file G4NuclideTable.cc.

53{
54 return GetInstance();
55}
static G4NuclideTable * GetInstance()

References GetInstance().

Referenced by G4IonTable::DestroyWorkerG4IonTable(), G4IonTable::PrepareNuclideTable(), and G4IonTable::~G4IonTable().

◆ GetSizeOfIsotopeList()

std::size_t G4NuclideTable::GetSizeOfIsotopeList ( )
inline

Definition at line 165 of file G4NuclideTable.hh.

166{
167 return ( fIsotopeList ? fIsotopeList->size() : static_cast<size_t>(0) );
168}

References fIsotopeList.

◆ GetThresholdOfHalfLife()

G4double G4NuclideTable::GetThresholdOfHalfLife ( )
inline

Definition at line 147 of file G4NuclideTable.hh.

148{
150}

References threshold_of_half_life.

◆ GetTruncationError()

G4double G4NuclideTable::GetTruncationError ( G4double  eex)
static

Definition at line 151 of file G4NuclideTable.cc.

152{
154 return eex - (G4long)(eex/tolerance)*tolerance;
155}
long G4long
Definition: G4Types.hh:87
G4double GetLevelTolerance()

References GetInstance(), and GetLevelTolerance().

◆ GetVerboseLevel()

G4int G4VIsotopeTable::GetVerboseLevel ( ) const
inlineinherited

Definition at line 107 of file G4VIsotopeTable.hh.

108{
109 return verboseLevel;
110}

References G4VIsotopeTable::verboseLevel.

◆ operator=()

G4NuclideTable & G4NuclideTable::operator= ( const G4NuclideTable &  )
delete

◆ Round()

G4double G4NuclideTable::Round ( G4double  eex)
static

Definition at line 158 of file G4NuclideTable.cc.

159{
161 return round(eex/tolerance)*tolerance;
162}

References GetInstance(), and GetLevelTolerance().

◆ SetLevelTolerance()

void G4NuclideTable::SetLevelTolerance ( G4double  x)
inline

Definition at line 153 of file G4NuclideTable.hh.

154{
155 flevelTolerance = x;
156}

References flevelTolerance.

Referenced by G4NuclideTableMessenger::SetNewValue().

◆ SetThresholdOfHalfLife()

void G4NuclideTable::SetThresholdOfHalfLife ( G4double  t)

◆ SetVerboseLevel()

void G4VIsotopeTable::SetVerboseLevel ( G4int  level)
inlineinherited

Definition at line 113 of file G4VIsotopeTable.hh.

114{
115 verboseLevel = level;
116}

References G4VIsotopeTable::verboseLevel.

◆ StripFloatLevelBase() [1/2]

G4Ions::G4FloatLevelBase G4NuclideTable::StripFloatLevelBase ( const G4String &  sFLB)
private

Definition at line 399 of file G4NuclideTable.cc.

400{
401 if ( sFLB.size() < 1 || 2 < sFLB.size() )
402 {
403 G4String text;
404 text += sFLB;
405 text += " is not valid indicator of G4Ions::G4FloatLevelBase.\n";
406 text += "You may use a wrong version of ENSDFSTATE data.\n";
407 text += "Please use G4ENSDFSTATE-2.0 or later.";
408
409 G4Exception( "G4NuclideTable", "PART70002", FatalException, text );
410 }
412 if ( !(sFLB == "-") )
413 {
414 flb = G4Ions::FloatLevelBase( sFLB.back() );
415 }
416 return flb;
417}
#define noFloat
Definition: G4Ions.hh:112
static G4Ions::G4FloatLevelBase FloatLevelBase(char flbChar)
Definition: G4Ions.cc:103

References FatalException, G4Ions::FloatLevelBase(), G4Exception(), and noFloat.

◆ StripFloatLevelBase() [2/2]

G4double G4NuclideTable::StripFloatLevelBase ( G4double  E,
G4int &  flbIndex 
)
private

Definition at line 390 of file G4NuclideTable.cc.

391{
392 G4double rem = std::fmod(E/(1.0E-3*eV),10.0);
393 flbIndex = G4int(rem);
394 return E-rem;
395}

References eV.

Referenced by AddState(), and GenerateNuclide().

◆ Tolerance()

G4double G4NuclideTable::Tolerance ( )
static

Definition at line 172 of file G4NuclideTable.cc.

173{
175}

References GetInstance(), and GetLevelTolerance().

◆ Truncate()

G4long G4NuclideTable::Truncate ( G4double  eex)
static

Definition at line 165 of file G4NuclideTable.cc.

166{
168 return (G4long)(eex/tolerance);
169}

References GetInstance(), and GetLevelTolerance().

Field Documentation

◆ fIsotopeList

G4IsotopeList* G4NuclideTable::fIsotopeList = nullptr
private

◆ flevelTolerance

G4double G4NuclideTable::flevelTolerance = 0.0
private

Definition at line 138 of file G4NuclideTable.hh.

Referenced by GetIsotope(), GetLevelTolerance(), and SetLevelTolerance().

◆ fMessenger

G4NuclideTableMessenger* G4NuclideTable::fMessenger = nullptr
private

Definition at line 139 of file G4NuclideTable.hh.

Referenced by G4NuclideTable(), and ~G4NuclideTable().

◆ fName

G4String G4VIsotopeTable::fName = ""
privateinherited

Definition at line 92 of file G4VIsotopeTable.hh.

Referenced by G4VIsotopeTable::GetName(), and G4VIsotopeTable::operator=().

◆ fUserDefinedList

G4IsotopeList* G4NuclideTable::fUserDefinedList = nullptr
private

Definition at line 119 of file G4NuclideTable.hh.

Referenced by AddState(), and GetIsotope().

◆ map_full_list

std::map<G4int, std::multimap<G4double, G4IsotopeProperty*> > G4NuclideTable::map_full_list
private

Definition at line 124 of file G4NuclideTable.hh.

Referenced by GenerateNuclide(), and ~G4NuclideTable().

◆ map_pre_load_list

std::map<G4int, std::multimap<G4double, G4IsotopeProperty*> > G4NuclideTable::map_pre_load_list
private

Definition at line 121 of file G4NuclideTable.hh.

Referenced by GenerateNuclide(), GetIsotope(), and ~G4NuclideTable().

◆ minimum_threshold_of_half_life

G4double G4NuclideTable::minimum_threshold_of_half_life = DBL_MAX
private

Definition at line 116 of file G4NuclideTable.hh.

Referenced by GenerateNuclide().

◆ threshold_of_half_life

G4double G4NuclideTable::threshold_of_half_life = 0.0
private

◆ verboseLevel

G4int G4VIsotopeTable::verboseLevel = 0
privateinherited

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