53 "-",
"+X",
"+Y",
"+Z",
"+U",
"+V",
"+W",
"+R",
"+S",
"+T",
"+A",
"+B",
"+C"};
56 : fData(ptr),fVerbose(1),fLevelMax(632),fTransMax(145)
61 char* directory = std::getenv(
"G4LEVELGAMMADATA");
66 "Environment variable G4LEVELGAMMADATA is not defined");
70 for(
G4int i=0; i<10; ++i) {
fICC[i] = 0.0f; }
96 return stream.fail() ? false :
true;
105 if(dataFile.fail()) { okay =
false; }
106 else { x = strtod(
buffer, 0); }
117 if(dataFile.fail()) { okay =
false; }
118 else { x = atof(
buff1); }
129 if(dataFile.fail()) { okay =
false; }
130 else { ix = atoi(
buff2); }
140 if(dataFile.fail()) { okay =
false; }
148 std::vector<G4float>* vec =
nullptr;
172 if(
LL < 3) {
for(
G4int i=
LL+1; i<=4; ++i) {
fICC[i] = 0.0f; } }
173 if(
M < 5) {
for(
G4int i=
M+4; i<=8; ++i) {
fICC[i] = 0.0f; } }
174 if(N < 1) {
fICC[9] = 0.0f; }
177 for(
G4int i=0; i<10; ++i) {
181 if(norm == 0.0f &&
fAlpha > 0.0f) {
182 fICC[0] = norm = 1.0f;
186 vec =
new std::vector<G4float>;
188 for(
G4int i=0; i<10; ++i) {
190 if(x > 0.995f || 9 == i) {
191 vec->push_back(1.0f);
198 G4cout <<
"# InternalConv: ";
211 std::ostringstream ss;
213 std::ifstream infile(ss.str(), std::ios::in);
221 std::ifstream infile(filename, std::ios::in);
222 if (!infile.is_open()) {
224 ed <<
"User file for Z= " <<
Z <<
" A= " <<
A
225 <<
" is not opened!";
226 G4Exception(
"G4LevelReader::MakeLevelManager(..)",
"had014",
235 std::ifstream& infile)
238 if (!infile.is_open()) {
241 ed <<
" for Z= " <<
Z <<
" A= " <<
A
242 <<
" is not opened!";
243 G4Exception(
"G4LevelReader::LevelManager(..)",
"had014",
249 G4cout <<
"G4LevelReader: open file for Z= "
257 G4cout <<
"## New isotope Z= " <<
Z <<
" A= " <<
A;
273 for(i=0; i<nlevels; ++i) {
278 G4cout <<
"### End of file Z= " <<
Z <<
" A= " <<
A
279 <<
" Nlevels= " << i <<
G4endl;
285 ed <<
" G4LevelReader: wrong data file for Z= " <<
Z <<
" A= " <<
A
286 <<
" level #" << i <<
" has index " <<
i1 <<
G4endl;
287 G4Exception(
"G4LevelReader::LevelManager(..)",
"had014",
297 G4cout <<
"### End of file Z= " <<
Z <<
" A= " <<
A
298 <<
" Nlevels= " << i <<
G4endl;
312 G4cout <<
"### G4LevelReader: broken level " << i
314 <<
" for isotope Z= " <<
Z <<
" A= "
315 <<
A <<
" level energy increased" <<
G4endl;
325 <<
" LTime(s)= " <<
fTime <<
" 2S= " <<
vSpin[i]
326 <<
" meta= " <<
vSpin[i]/100000 <<
" idx= " << i
360 G4cout <<
"### Fail to read transition j= " << j
361 <<
" Z= " <<
Z <<
" A= " <<
A <<
G4endl;
366 G4cout <<
"### G4LevelReader: broken transition " << j
367 <<
" from level " << i <<
" to " <<
i2
368 <<
" for isotope Z= " <<
Z <<
" A= "
369 <<
A <<
" - use ground level" <<
G4endl;
381 G4cout <<
"### Transition #" << j <<
" to level " <<
i2
383 <<
" fProb= " <<
fProb <<
" MultiP= " <<
tnum
389 for(
k=0;
k<10; ++
k) {
394 G4cout <<
"### Fail to read conversion coeff k= " <<
k
395 <<
" for transition j= " << j
396 <<
" Z= " <<
Z <<
" A= " <<
A <<
G4endl;
410 for(
k=0;
k<nt; ++
k) {
413 G4cout <<
"Probabilities[" <<
k
416 <<
" idxTrans= " <<
vTrans[
k]/10000
422 G4cout <<
"Probabilities[" << nt <<
"]= "
425 <<
" IdxTrans= " <<
vTrans[nt]/10000
444 G4cout <<
"=== Reader: new manager for Z= " <<
Z <<
" A= " <<
A
445 <<
" Nlevels= " << i <<
" E[0]= "
static const G4int LL[nN]
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
G4GLOB_DLL std::ostream G4cout
G4bool StoreICLevelData() const
static const G4int nfloting
std::vector< const std::vector< G4float > * > vShellProbability
G4DeexPrecoParameters * fParam
static const G4int nbufmax
std::vector< G4float > vRatio
const G4LevelManager * MakeLevelManager(G4int Z, G4int A, const G4String &filename)
const G4LevelManager * LevelManager(G4int Z, G4int A, G4int nlev, std::ifstream &infile)
std::vector< G4float > vGammaProbability
std::vector< const G4NucLevel * > vLevel
const std::vector< G4float > * NormalizedICCProbability(G4int Z)
std::vector< G4float > vGammaCumProbability
std::vector< G4int > vSpin
const G4LevelManager * CreateLevelManager(G4int Z, G4int A)
G4bool ReadDataItem(std::istream &dataFile, G4double &x)
static G4String fFloatingLevels[nfloting]
G4LevelReader(G4NuclearLevelData *)
std::vector< G4int > vTrans
G4bool ReadData(std::istringstream &dataFile, G4double &x)
std::vector< G4double > vEnergy
G4NuclearLevelData * fData
G4DeexPrecoParameters * GetParameters()
static G4Pow * GetInstance()
G4double logZ(G4int Z) const
static constexpr double keV
static constexpr double MeV
static constexpr double second
T max(const T t1, const T t2)
brief Return the largest of the two arguments
T min(const T t1, const T t2)
brief Return the smallest of the two arguments