46 if(!theNew->
Init(aDataFile))
57 for(
G4int i=0;i<nGammas;i++) buffer[i] = theGammas[i];
61 theGammas[nGammas] = theNew;
73 for(i=0; i<nGammas; i++)
76 if(std::abs(currentE-nextE)>epsilon) nLevels++;
84 levelStart =
new G4int [nLevels];
85 levelSize =
new G4int [nLevels];
91 G4int levelCounter=-1;
92 for(i=0; i<nGammas; i++)
95 if(std::abs(currentE-nextE)>epsilon)
98 levelStart[levelCounter] = i;
99 levelSize[levelCounter] = 0;
101 levelSize[levelCounter]++;
105 for(i=0; i<nLevels; i++)
108 for(
G4int ii=levelStart[i]; ii<levelStart[i]+levelSize[i]; ii++)
110 theLevels[i].
SetGamma(ii-levelStart[i], theGammas[ii]);
115 G4double levelE, gammaE, currentLevelE;
117 for(i=0; i<nGammas; i++)
122 min = currentLevelE-gammaE-
epsilon;
123 for(
G4int ii=0; ii<nLevels; ii++)
126 if(std::abs(currentLevelE-(levelE+gammaE))<min)
128 min = std::abs(currentLevelE-(levelE+gammaE));
133 if ( it != -1 && currentLevelE == theLevels[it].
GetLevelEnergy() )
141 if(it!=-1) theGammas[i]->
SetNext(&theLevels[it]);
G4double GetLevelEnergy()
void SetNumberOfGammas(G4int aGammas)
G4double GetLevelEnergy()
G4bool Init(std::istream &aDataFile)
void SetNext(G4ParticleHPLevel *aLevel)
void SetGamma(G4int i, G4ParticleHPGamma *aGamma)
void Init(std::istream &aDataFile)
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
G4double GetGammaEnergy()
static constexpr double keV
G4double GetLevelEnergy(G4int aLevel)
double epsilon(double density, double temperature)