120 G4cout <<
"G4RIsotopeTable::GetIsotope No. : ";
149 G4cout <<
"G4RIsotopeTable::GetIsotope create: ";
160 std::ostringstream os;
161 os.setf(std::ios::fixed);
162 os <<
"A"<< A <<
"Z" << Z <<
'[' << std::setprecision(1) << E/
keV <<
']';
165 G4cout <<
"G4RIsotopeTable::GetIsotope Name: ";
184 if (!getenv(
"G4RADIOACTIVEDATA")) {
185 G4cout <<
"Please setenv G4RADIOACTIVEDATA to point to the radioactive decay data files." <<
G4endl;
187 "Please setenv G4RADIOACTIVEDATA to point to the radioactive decay data files.");
189 G4String dirName = getenv(
"G4RADIOACTIVEDATA");
191 std::ostringstream os;
192 os <<dirName <<
"/z" <<Z <<
".a" <<
A ;
195 std::ifstream DecaySchemeFile(file);
197 G4bool found_in_raddecay_data(
false);
198 if (!DecaySchemeFile) {
200 G4cout <<
"G4RIsotopeTable::GetMeanLife() : "
201 <<
"cannot find ion radioactive decay file: "
205 char inputChars[100]={
' '};
211 while (!found_in_raddecay_data && !DecaySchemeFile.getline(inputChars, 100).eof()) {
212 inputLine = inputChars;
213 inputLine = inputLine.
strip(1);
215 if (inputChars[0] !=
'#' && inputLine.length() != 0) {
216 std::istringstream tmpstream(inputLine);
217 tmpstream >> recordType >> a >> b;
218 if (recordType ==
"P") {
220 found_in_raddecay_data =
true;
221 lifetime = b/0.693147*
s ;
226 DecaySchemeFile.close();
229 if (!found_in_raddecay_data && aE) {
231 lifetime = 1.0E-20*
s;
241 lifetime = half_life/0.693147;
245 G4cout <<
"G4RIsotopeTable::GetMeanLife() : ";
246 G4cout <<
"cannot find ion of required excitation E = " << aE <<
G4endl;
247 G4cout <<
"state in radioactive or photoevaporation data file " <<
G4endl;
248 G4cout <<
"The nucleus is assumed to be IT decayed with life = 1E-20 s" <<
G4endl;
249 G4cout <<
" -----------* THIS MAY CAUSE PROBLEM IN ITS DECAY-----------" <<
G4endl;
253 if (!found_in_raddecay_data && !aE) {
255 G4cout <<
"G4RIsotopeTable::GetMeanLife() : ";
256 G4cout <<
"cannot find ion of required excitation E = " << aE <<
G4endl;
257 G4cout <<
"state in radioactive or photoevaporation data file" <<
G4endl;
258 G4cout <<
"The nucleus is assumed to be stable" <<
G4endl;
264 G4cout <<
"G4RIsotopeTable::GetMeanLifeTime: ";
276 std::ifstream DecaySchemeFile(filename);
277 if (DecaySchemeFile){
278 G4int ID_ion=A*1000+Z;
282 G4cout<<
"The file "<<filename<<
" does not exist!"<<
G4endl;
void SetAtomicMass(G4int A)
virtual G4IsotopeProperty * GetIsotope(G4int Z, G4int A, G4double E)
virtual ~G4RIsotopeTable()
G4double HalfLife() const
G4String strip(G4int strip_Type=trailing, char c=' ')
void AddUserDecayDataFile(G4int Z, G4int A, G4String filename)
virtual G4bool FindIsotope(G4IsotopeProperty *property)
static G4NuclearLevelStore * GetInstance()
static const G4double levelTolerance
G4int GetVerboseLevel() const
void SetLifeTime(G4double T)
G4GLOB_DLL std::ostream G4cout
static const G4double A[nN]
G4NuclearLevelManager * GetManager(G4int Z, G4int A)
void SetEnergy(G4double E)
void SetDecayTable(G4DecayTable *table)
static G4ParticleTable * GetParticleTable()
G4double GetMeanLifeTime(G4int Z, G4int A, G4double &E)
G4IsotopeList fIsotopeList
const G4NuclearLevel * NearestLevel(G4double energy, G4double eDiffMax=9999.*CLHEP::GeV) const
std::map< G4int, G4String > theUserRadioactiveDataFiles
G4int GetVerboseLevel() const
void SetAtomicNumber(G4int Z)
G4String GetIsotopeName(G4int Z, G4int A, G4double E)
G4IsotopeNameList fIsotopeNameList