64 _nucleusA(A), _nucleusZ(Z), _fileName(filename), _validity(false),
65 _levels(0), _levelEnergy(0), _gammaEnergy(0), _probability(0)
67 if (A <= 0 || Z <= 0 || Z > A ) {
69 "==== G4NuclearLevelManager ==== (Z,A) <0, or Z>A");
82 if (A <= 0 || Z <= 0 || Z > A ) {
84 "==== G4NuclearLevelManager ==== (Z,A) <0, or Z>A");
111 for (
unsigned int i=0; i<
_levels->size(); i++)
114 G4double eDiff = std::abs(e - energy);
116 if (eDiff < diff && eDiff <= eDiffMax)
196 if(dataFile.fail()) { okay =
false; }
197 else { x = strtod(buffer, NULL); }
204 const G4double minProbability = 1e-8;
271 std::ifstream inFile(
_fileName, std::ios::in);
274 #ifdef GAMMAFILEWARNING
277 <<
") does not have a gamma levels file" <<
G4endl;
289 while (
Read(inFile)) {
302 G4PtrSort<G4NuclearLevel>(
_levels);
342 if (!level || !
_levels)
return;
354 <<
") has " << nLevels <<
" levels" <<
G4endl
359 for (
G4int i=0; i<nLevels; i++)
398 G4PtrSort<G4NuclearLevel>(
_levels);
std::vector< G4double > _m3CC
std::vector< G4double > _m1CC
G4NuclearLevelManager(G4int Z, G4int A, const G4String &filename)
const G4NuclearLevel * HighestLevel() const
G4double MinLevelEnergy() const
std::vector< G4double > _l3CC
G4NuclearLevel * UseLevelOrMakeNew(G4NuclearLevel *level)
G4double _angularMomentum
std::vector< G4double > _weights
std::vector< G4double > _polarities
G4bool Read(std::ifstream &aDataFile)
G4bool ReadDataItem(std::istream &dataFile, G4double &x)
std::vector< G4NuclearLevel * > G4PtrLevelVector
std::vector< G4double > _m5CC
G4GLOB_DLL std::ostream G4cout
std::vector< G4double > _l1CC
void SetNucleus(G4int Z, G4int A, const G4String &filename)
const G4NuclearLevel * LowestLevel() const
const G4NuclearLevel * GetLevel(G4int i) const
std::vector< G4double > _nPlusCC
std::vector< G4double > _energies
std::vector< G4double > _m2CC
static const double second
G4bool ReadDataLine(std::ifstream &dataFile)
static const G4double A[nN]
std::vector< G4double > _kCC
G4double energy(const ThreeVector &p, const G4double m)
void FinishLevel(G4NuclearLevel *level)
G4int NumberOfLevels() const
G4PtrLevelVector * _levels
std::vector< G4double > _m4CC
const G4NuclearLevel * NearestLevel(G4double energy, G4double eDiffMax=9999.*CLHEP::GeV) const
void AddDataToLevel(G4NuclearLevel *level)
std::vector< G4double > _l2CC
G4double MaxLevelEnergy() const
std::vector< G4double > _totalCC