63 threshold_of_half_life(1000.0*
ns),
64 minimum_threshold_of_half_life(
DBL_MAX),
65 fUserDefinedList(NULL),
67 flevelTolerance(1.0*
eV)
80 for ( std::map<
G4int , std::multimap< G4double , G4IsotopeProperty* > >::iterator
87 for ( std::map<
G4int , std::multimap< G4double , G4IsotopeProperty* > >::iterator
96 delete (*fIsotopeList)[i];
116 if ( Z == (*it)->GetAtomicNumber() && A == (*it)->GetAtomicMass() ) {
129 G4int ionCode = 1000*Z +
A;
130 std::map< G4int , std::multimap< G4double , G4IsotopeProperty* > >::iterator itf =
map_pre_load_list.find( ionCode );
133 std::multimap< G4double , G4IsotopeProperty* >::iterator lower_bound_itr = itf ->
second.lower_bound ( E -
flevelTolerance/2 );
135 if ( lower_bound_itr != itf ->
second.end() ) {
136 levelE = lower_bound_itr->first;
138 return lower_bound_itr->second;
168 char* path = getenv(
"G4ENSDFSTATEDATA");
172 FatalException,
"G4ENSDFSTATEDATA environment variable must be set");
178 filename +=
"/ENSDFSTATE.dat";
180 ifs.open( filename.c_str() );
199 ifs >> ionZ >> ionA >> ionE >> ionLife >> ionJ >> ionMu;
201 while ( ifs.good() ) {
203 if ( ionCode != 1000*ionZ + ionA ) {
205 ionCode = 1000*ionZ + ionA;
215 if ( ionE > 0 ) iLevel++;
216 if ( iLevel > 9 ) iLevel=9;
232 std::map< G4int , std::multimap< G4double , G4IsotopeProperty* > >::iterator itf =
map_full_list.find( ionCode );
234 std::multimap<G4double, G4IsotopeProperty*> aMultiMap;
236 itf = (
map_full_list.insert( std::pair<
G4int , std::multimap< G4double , G4IsotopeProperty* > > ( ionCode , aMultiMap ) ) ).first;
238 itf ->
second.insert( std::pair< G4double, G4IsotopeProperty* >( ionE , fProperty ) );
241 ifs >> ionZ >> ionA >> ionE >> ionLife >> ionJ >> ionMu;
250 for ( std::map<
G4int , std::multimap< G4double , G4IsotopeProperty* > >::iterator
257 for ( std::map<
G4int , std::multimap< G4double , G4IsotopeProperty* > >::iterator
260 G4int ionCode = it->first;
261 std::map< G4int , std::multimap< G4double , G4IsotopeProperty* > >::iterator itf =
map_pre_load_list.find( ionCode );
263 std::multimap<G4double, G4IsotopeProperty*> aMultiMap;
264 itf = (
map_pre_load_list.insert( std::pair<
G4int , std::multimap< G4double , G4IsotopeProperty* > > ( ionCode , aMultiMap ) ) ).first;
267 for ( std::multimap< G4double , G4IsotopeProperty* >::iterator
268 itt = it->second.begin(); itt != it->second.end(); itt++ ) {
271 G4double meanLife = itt->second->GetLifeTime();
276 if ( itt->first != 0.0 ) iLevel++;
277 if ( iLevel > 9 ) iLevel=9;
278 itt->second->SetIsomerLevel( iLevel );
280 itf ->
second.insert( std::pair< G4double, G4IsotopeProperty* >( exEnergy , itt->second ) );
void SetThresholdOfHalfLife(G4double)
void SetAtomicMass(G4int A)
std::vector< G4IsotopeProperty * > G4IsotopeList
std::map< G4int, std::multimap< G4double, G4IsotopeProperty * > > map_full_list
G4IsotopeList * fUserDefinedList
static const double joule
G4double threshold_of_half_life
virtual G4IsotopeProperty * GetIsotopeByIsoLvl(G4int Z, G4int A, G4int lvl=0)
void SetMagneticMoment(G4double M)
void SetLifeTime(G4double T)
void AddState(G4int, G4int, G4double, G4double, G4int ionJ=0, G4double ionMu=0.0)
G4IsotopeList * fIsotopeList
double A(double temperature)
G4double GetEnergy() const
static const double second
virtual G4IsotopeProperty * GetIsotope(G4int Z, G4int A, G4double E)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
std::map< G4int, std::multimap< G4double, G4IsotopeProperty * > > map_pre_load_list
void SetEnergy(G4double E)
void SetDecayTable(G4DecayTable *table)
G4double minimum_threshold_of_half_life
G4NuclideTableMessenger * fMessenger
static G4NuclideTable * GetInstance()
static MCTruthManager * instance
static const double tesla
virtual ~G4NuclideTable()
void SetAtomicNumber(G4int Z)
void SetIsomerLevel(G4int level)