71 _nucleusA(A), _nucleusZ(Z), _excitation(excitation), _levelManager(levelManager)
79 if (eTolerance < 0.) eTolerance = 0.;
85 _gammaCreationTime = 0.;
95 G4double widthGDR = 0.30 * energyGDR;
98 _eMax = energyGDR + factor * widthGDR;
99 if (_eMax > excitation) _eMax = _excitation;
117 sampleArray[0] = 0.0;
124 for (i=1; i<=nBins; i++) {
127 sum += 0.5*(w1 + w2);
129 sampleArray[i] = sum;
131 G4cout <<
"*---* G4ContinuumTransition: e = " << e
132 <<
" pdf = " << sampleArray[i] <<
G4endl;
137 for (i=1; i<=nBins; i++) {
138 if(sum <= sampleArray[i]) {
139 _eGamma = _eMin + del * i;
140 G4double w = sampleArray[i] - sampleArray[i-1];
143 _eGamma -= (sampleArray[i] - sum)*del/w;
149 G4double finalExcitation = _excitation - _eGamma;
152 G4cout <<
"*---*---* G4ContinuumTransition: eGamma = " << _eGamma
153 <<
" finalExcitation = " << finalExcitation <<
G4endl;
156 if(finalExcitation < _minLevelE/2.)
158 _eGamma = _excitation;
159 finalExcitation = 0.;
162 if (finalExcitation < _maxLevelE && finalExcitation > 0.)
165 G4double diff = finalExcitation - levelE;
166 _eGamma = _eGamma + diff;
169 _gammaCreationTime = GammaTime();
172 G4cout <<
"*---*---* G4ContinuumTransition: _gammaCreationTime = "
185 return _gammaCreationTime;
191 if (energy > 0.) _excitation =
energy;
200 if(e < 0.0 || _excitation < 0.0) {
return theProb; }
208 G4double coeff = std::exp(2.0*(std::sqrt(aLevelDensityParam*U)
209 - std::sqrt(aLevelDensityParam*_excitation)));
228 G4double numerator = sigma0 * e*e * GammaR*GammaR;
229 G4double denominator = (e*e - Egdp*Egdp)* (e*e - Egdp*Egdp) + GammaR*GammaR*e*e;
232 G4double sigmaAbs = numerator/denominator ;
235 G4cout <<
".. " << Egdp <<
" .. " << GammaR
236 <<
" .. " << normC <<
" .. " << sigmaAbs
237 <<
" .. " << e*e <<
" .. " << coeff
242 theProb = sigmaAbs * e*e * coeff;
248 G4double G4ContinuumGammaTransition::GammaTime()
static G4Pow * GetInstance()
G4double MinLevelEnergy() const
G4GLOB_DLL std::ostream G4cout
const G4NuclearLevel * GetLevel(G4int i) const
virtual G4double GetGammaCreationTime()
virtual void SetEnergyFrom(G4double energy)
G4double G4Log(G4double x)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
virtual void SelectGamma()
G4int NumberOfLevels() const
virtual ~G4ContinuumGammaTransition()
G4ContinuumGammaTransition(const G4NuclearLevelManager *levelManager, G4int Z, G4int A, G4double excitation, G4int verbose)
G4double powZ(G4int Z, G4double y) const
G4double LevelDensityParameter(const G4int A, const G4int, const G4double) const
const G4NuclearLevel * NearestLevel(G4double energy, G4double eDiffMax=9999.*CLHEP::GeV) const
virtual G4double GetGammaEnergy()
G4double MaxLevelEnergy() const