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;
118 for (i=0; i<nBins; i++)
120 G4double e = _eMin + ( (_eMax - _eMin) / nBins) * i;
121 sampleArray[i] = E1Pdf(e);
124 G4cout <<
"*---* G4ContinuumTransition: e = " << e
125 <<
" pdf = " << sampleArray[i] <<
G4endl;
130 _eGamma = _eMin + (_eMax - _eMin) * random;
132 G4double finalExcitation = _excitation - _eGamma;
135 G4cout <<
"*---*---* G4ContinuumTransition: eGamma = " << _eGamma
136 <<
" finalExcitation = " << finalExcitation
137 <<
" random = " << random <<
G4endl;
140 if(finalExcitation < _minLevelE/2.)
142 _eGamma = _excitation;
143 finalExcitation = 0.;
146 if (finalExcitation < _maxLevelE && finalExcitation > 0.)
149 G4double diff = finalExcitation - levelE;
150 _eGamma = _eGamma + diff;
153 _gammaCreationTime = GammaTime();
156 G4cout <<
"*---*---* G4ContinuumTransition: _gammaCreationTime = "
157 << _gammaCreationTime/second <<
G4endl;
169 return _gammaCreationTime;
175 if (energy > 0.) _excitation = energy;
182 G4double U = std::max(0.0, _excitation - e);
184 if(e < 0.0 || _excitation < 0.0) {
return theProb; }
192 G4double coeff = std::exp(2.0*(std::sqrt(aLevelDensityParam*U)
193 - std::sqrt(aLevelDensityParam*_excitation)));
210 const G4double normC = 1.0 / (
pi * hbarc)*(pi * hbarc);
212 G4double numerator = sigma0 * e*e * GammaR*GammaR;
213 G4double denominator = (e*e - Egdp*Egdp)* (e*e - Egdp*Egdp) + GammaR*GammaR*e*e;
216 G4double sigmaAbs = numerator/denominator ;
219 G4cout <<
".. " << Egdp <<
" .. " << GammaR
220 <<
" .. " << normC <<
" .. " << sigmaAbs
221 <<
" .. " << e*e <<
" .. " << coeff
226 theProb = sigmaAbs * e*e * coeff;
232G4double G4ContinuumGammaTransition::GammaTime()
G4DLLIMPORT std::ostream G4cout
G4double LevelDensityParameter(const G4int A, const G4int, const G4double) const
virtual ~G4ContinuumGammaTransition()
virtual G4double GetGammaCreationTime()
virtual G4double GetGammaEnergy()
virtual void SetEnergyFrom(G4double energy)
virtual void SelectGamma()
G4ContinuumGammaTransition(const G4NuclearLevelManager *levelManager, G4int Z, G4int A, G4double excitation, G4int verbose)
G4int NumberOfLevels() const
const G4NuclearLevel * GetLevel(G4int i) const
G4double MinLevelEnergy() const
const G4NuclearLevel * NearestLevel(G4double energy, G4double eDiffMax=9999.*CLHEP::GeV) const
G4double MaxLevelEnergy() const
static G4Pow * GetInstance()
G4double powZ(G4int Z, G4double y)