60 threshold_of_half_life(1000.0*
ns),
61 flevelTolerance(1.0*
eV)
87 delete (*fIsotopeList)[i];
107 if (
Z == (*it)->GetAtomicNumber() &&
A == (*it)->GetAtomicMass() )
112 if( flb == (*it)->GetFloatLevelBase() ) {
return *it; }
129 while ( lower_bound_itr != itf ->
second.cend() )
131 levelE = lower_bound_itr->first;
134 if ( flb == (lower_bound_itr->second)->GetFloatLevelBase() )
136 return lower_bound_itr->second;
154 return eex - (
G4long)(eex/tolerance)*tolerance;
161 return round(eex/tolerance)*tolerance;
168 return (
G4long)(eex/tolerance);
191 char* path = std::getenv(
"G4ENSDFSTATEDATA");
193 if ( path ==
nullptr )
196 "G4ENSDFSTATEDATA environment variable must be set");
202 filename +=
"/ENSDFSTATE.dat";
204 ifs.open( filename.c_str() );
208 "ENSDFSTATE.dat is not found.");
222 ifs >> ionZ >> ionA >> ionE >> ionFL >> ionLife >> ionJ >> ionMu;
226 if ( ionCode != 1000*ionZ + ionA )
229 ionCode = 1000*ionZ + ionA;
241 if ( ionE > 0 ) ++iLevel;
242 if ( iLevel > 9 ) iLevel=9;
262 std::multimap<G4double, G4IsotopeProperty*> aMultiMap;
268 std::pair< G4double, G4IsotopeProperty* >(ionE, fProperty) );
270 ifs >> ionZ >> ionA >> ionE >> ionFL >> ionLife >> ionJ >> ionMu;
287 G4int ionCode = it->first;
291 std::multimap<G4double, G4IsotopeProperty*> aMultiMap;
297 for (
auto itt = it->second.cbegin(); itt != it->second.cend(); ++itt )
300 G4double meanLife = itt->second->GetLifeTime();
303 if ( itt->first != 0.0 ) ++iLevel;
304 if ( iLevel > 9 ) iLevel=9;
305 itt->second->SetIsomerLevel( iLevel );
307 std::pair< G4double, G4IsotopeProperty* >(exEnergy, itt->second) );
321 AddState(ionZ,ionA,ionE,flbIndex,ionLife,ionJ,ionMu);
393 flbIndex =
G4int(rem);
401 if ( sFLB.size() < 1 || 2 < sFLB.size() )
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.";
412 if ( !(sFLB ==
"-") )
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
static constexpr double joule
static constexpr double tesla
static constexpr double second
static constexpr double keV
static constexpr double eV
static G4Ions::G4FloatLevelBase FloatLevelBase(char flbChar)
void SetAtomicMass(G4int A)
void SetDecayTable(G4DecayTable *table)
void SetFloatLevelBase(G4Ions::G4FloatLevelBase flb)
void SetEnergy(G4double E)
void SetAtomicNumber(G4int Z)
void SetIsomerLevel(G4int level)
G4double GetEnergy() const
void SetLifeTime(G4double T)
void SetMagneticMoment(G4double M)
std::map< G4int, std::multimap< G4double, G4IsotopeProperty * > > map_full_list
static G4double GetTruncationError(G4double eex)
void AddState(G4int, G4int, G4double, G4double, G4int ionJ=0, G4double ionMu=0.0)
G4IsotopeList * fUserDefinedList
static G4NuclideTable * GetInstance()
std::map< G4int, std::multimap< G4double, G4IsotopeProperty * > > map_pre_load_list
void SetThresholdOfHalfLife(G4double)
G4NuclideTableMessenger * fMessenger
virtual G4IsotopeProperty * GetIsotope(G4int Z, G4int A, G4double E, G4Ions::G4FloatLevelBase flb=G4Ions::G4FloatLevelBase::no_Float)
G4double threshold_of_half_life
G4double minimum_threshold_of_half_life
static G4NuclideTable * GetNuclideTable()
static G4long Truncate(G4double eex)
G4double GetLevelTolerance()
G4IsotopeList * fIsotopeList
std::vector< G4IsotopeProperty * > G4IsotopeList
static G4double Tolerance()
G4double StripFloatLevelBase(G4double E, G4int &flbIndex)
static G4double Round(G4double eex)
virtual G4IsotopeProperty * GetIsotopeByIsoLvl(G4int Z, G4int A, G4int lvl=0)
virtual ~G4NuclideTable()