63 threshold_of_half_life(1000.0*
ns),
64 fUserDefinedList(NULL),
76 delete (*fIsotopeList)[i];
83 for ( std::map<
G4int , std::multimap< G4double , G4IsotopeProperty* > >::iterator
89 for ( std::map<
G4int , std::multimap< G4double , G4IsotopeProperty* > >::iterator
91 for ( std::multimap< G4double , G4IsotopeProperty* >::iterator
92 itt = it->second.begin(); itt != it->second.end(); itt++ ) {
99 for ( std::map<
G4int , std::multimap< G4double , G4IsotopeProperty* > >::iterator
101 for ( std::multimap< G4double , G4IsotopeProperty* >::iterator
102 itt = it->second.begin(); itt != it->second.end(); itt++ ) {
116 G4int ionCode = 1000*Z +
A;
122 std::multimap< G4double , G4IsotopeProperty* >::iterator lower_bound_itr =
130 levelE = lower_bound_itr->first;
132 return lower_bound_itr->second;
139 std::multimap< G4double , G4IsotopeProperty* >::iterator lower_bound_itr =
147 levelE = lower_bound_itr->first;
149 return lower_bound_itr->second;
155 char* path = getenv(
"G4ENSDFSTATEDATA");
163 std::multimap<G4double, G4IsotopeProperty*> aMultiMap;
164 map_full_list.insert( std::pair<
G4int , std::multimap< G4double , G4IsotopeProperty* > > ( ionCode , aMultiMap ) );
168 filename +=
"/ENSDFSTATE.dat";
169 ifs.open( filename.c_str() );
171 G4bool reading_target =
false;
180 ifs >> ionZ >> ionA >> ionE >> ionLife >> ionJ >> ionMu;
182 while ( ifs.good() ) {
184 if ( ionZ == Z && ionA == A ) {
186 reading_target =
true;
195 property->SetAtomicNumber(ionZ);
196 property->SetAtomicMass(ionA);
197 property->SetIsomerLevel(iLevel);
198 property->SetEnergy(ionE);
199 property->SetiSpin(ionJ);
200 property->SetLifeTime(ionLife);
201 property->SetMagneticMoment(ionMu);
203 map_full_list.find ( ionCode ) ->
second.insert( std::pair< G4double, G4IsotopeProperty* >( ionE , property ) );
205 }
else if ( reading_target ==
true ) {
210 ifs >> ionZ >> ionA >> ionE >> ionLife >> ionJ >> ionMu;
219 std::multimap< G4double , G4IsotopeProperty* >::iterator lower_bound_itr =
227 levelE = lower_bound_itr->first;
229 return lower_bound_itr->second;
258 G4int ionCode = 1000*ionZ + ionA;
273 std::multimap<G4double, G4IsotopeProperty*> aMultiMap;
274 map_hard_code_list.insert( std::pair<
G4int , std::multimap< G4double , G4IsotopeProperty* > > ( ionCode , aMultiMap ) );
276 map_hard_code_list.find ( ionCode ) ->
second.insert( std::pair< G4double, G4IsotopeProperty* >( ionE , fProperty ) );
289 G4int ionCode = 1000*ionZ + ionA;
304 std::multimap<G4double, G4IsotopeProperty*> aMultiMap;
305 map_hard_code_list.insert( std::pair<
G4int , std::multimap< G4double , G4IsotopeProperty* > > ( ionCode , aMultiMap ) );
307 map_hard_code_list.find ( ionCode ) ->
second.insert( std::pair< G4double, G4IsotopeProperty* >( ionE , fProperty ) );
346 G4int ionCode = 1000*ionZ + ionA;
348 std::multimap<G4double, G4IsotopeProperty*> aMultiMap;
349 map_pre_load_list.insert( std::pair<
G4int , std::multimap< G4double , G4IsotopeProperty* > > ( ionCode , aMultiMap ) );
351 map_pre_load_list.find ( ionCode ) ->
second.insert( std::pair< G4double, G4IsotopeProperty* >( ionE , fProperty ) );
366 if ( ionCode != 1000*ionZ + ionA ) {
369 ionCode = 1000*ionZ + ionA;
381 if ( iLevel > 9 ) iLevel=9;
399 std::multimap<G4double, G4IsotopeProperty*> aMultiMap;
400 map_pre_load_list.insert( std::pair<
G4int , std::multimap< G4double , G4IsotopeProperty* > > ( ionCode , aMultiMap ) );
402 map_pre_load_list.find ( ionCode ) ->
second.insert( std::pair< G4double, G4IsotopeProperty* >( ionE , fProperty ) );
408 char* path = getenv(
"G4ENSDFSTATEDATA");
412 FatalException,
"G4ENSDFSTATEDATA environment variable must be set");
418 filename +=
"/ENSDFSTATE.dat";
420 ifs.open( filename.c_str() );
439 ifs >> ionZ >> ionA >> ionE >> ionLife >> ionJ >> ionMu;
441 while ( ifs.good() ) {
443 if ( ionCode != 1000*ionZ + ionA ) {
445 ionCode = 1000*ionZ + ionA;
456 if ( iLevel > 9 ) iLevel=9;
474 std::multimap<G4double, G4IsotopeProperty*> aMultiMap;
475 map_pre_load_list.insert( std::pair<
G4int , std::multimap< G4double , G4IsotopeProperty* > > ( ionCode , aMultiMap ) );
477 map_pre_load_list.find ( ionCode ) ->
second.insert( std::pair< G4double, G4IsotopeProperty* >( ionE , fProperty ) );
481 ifs >> ionZ >> ionA >> ionE >> ionLife >> ionJ >> ionMu;
void SetAtomicMass(G4int A)
std::vector< G4IsotopeProperty * > G4IsotopeList
std::map< G4int, std::multimap< G4double, G4IsotopeProperty * > > map_full_list
static const G4double groundStateTable[nEntries_ground_state][6]
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)
G4IsotopeList * fIsotopeList
static const double second
static const G4double exciteStateTable[nEntries_excite_state][6]
virtual G4IsotopeProperty * GetIsotope(G4int Z, G4int A, G4double E)
static const G4double A[nN]
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)
void AddState(G4int, G4int, G4double, G4double, G4int, G4double)
static const G4double levelTolerance
static G4NuclideTable * GetInstance()
static MCTruthManager * instance
static const double tesla
virtual ~G4NuclideTable()
void SetAtomicNumber(G4int Z)
void SetIsomerLevel(G4int level)
std::map< G4int, std::multimap< G4double, G4IsotopeProperty * > > map_hard_code_list