41 EF = theAvarageKineticPerNucleonForLightFragments/eV;
42 G4double lightU1 = std::sqrt(energy)-std::sqrt(EF);
43 lightU1 *= lightU1/
tm;
44 G4double lightU2 = std::sqrt(energy)+std::sqrt(EF);
45 lightU2 *= lightU2/
tm;
47 if(theAvarageKineticPerNucleonForLightFragments>1*eV)
49 lightTerm = Pow->
powA(lightU2, 1.5)*E1(lightU2);
50 lightTerm -= Pow->
powA(lightU1, 1.5)*E1(lightU1);
51 lightTerm += Gamma15(lightU2)-Gamma15(lightU1);
52 lightTerm /= 3.*std::sqrt(tm*EF);
55 EF = theAvarageKineticPerNucleonForHeavyFragments/eV;
56 G4double heavyU1 = std::sqrt(energy)-std::sqrt(EF);
57 heavyU1 *= heavyU1/
tm;
58 G4double heavyU2 = std::sqrt(energy)+std::sqrt(EF);
59 heavyU2 *= heavyU2/
tm;
61 if(theAvarageKineticPerNucleonForHeavyFragments> 1*eV)
63 heavyTerm = Pow->
powA(heavyU2, 1.5)*E1(heavyU2);
64 heavyTerm -= Pow->
powA(heavyU1, 1.5)*E1(heavyU1);
65 heavyTerm += Gamma15(heavyU2)-Gamma15(heavyU1);
66 heavyTerm /= 3.*std::sqrt(tm*EF);
69 result = 0.5*(lightTerm+heavyTerm);
77 G4double last=0, buff, current = 100*MeV;
83 G4int icounter_max=1024;
87 if ( icounter > icounter_max ) {
88 G4cout <<
"Loop-counter exceeded the threshold value at " << __LINE__ <<
"th line of " << __FILE__ <<
"." <<
G4endl;
92 newValue = FissionIntegral(tm, current);
96 current+=std::abs(current-last)/2.;
98 if(current>190*MeV)
throw G4HadronicException(__FILE__, __LINE__,
"Madland-Nix Spectrum has not converged in sampling");
103 current-=std::abs(current-last)/2.;
107 while (std::abs(oldValue-newValue)>precision*newValue);
111 G4double G4ParticleHPMadlandNixSpectrum::
115 if(aMean<1*eV)
return 0;
125 G4double Bp = (sb-beta)*(sb-beta)/tm;
134 (0.4*
alpha2*Pow->
powA(B,2.5) - 0.5*alphabeta*
B*
B)*E1(B) -
139 (0.4*
alpha2*Pow->
powA(Bp,2.5) + 0.5*alphabeta*Bp*Bp)*E1(Bp) -
140 (0.4*
alpha2*Pow->
powA(Ap,2.5) + 0.5*alphabeta*Ap*Ap)*E1(Ap)
144 (
alpha2*B-2*alphabeta*std::sqrt(B))*Gamma15(B) -
145 (
alpha2*
A-2*alphabeta*std::sqrt(
A))*Gamma15(
A)
149 (
alpha2*Bp-2*alphabeta*std::sqrt(Bp))*Gamma15(Bp) -
150 (
alpha2*Ap-2*alphabeta*std::sqrt(Ap))*Gamma15(Ap)
152 - 0.6*
alpha2*(Gamma25(B) - Gamma25(
A) - Gamma25(Bp) + Gamma25(Ap))
159 (0.4*
alpha2*Pow->
powA(B,2.5) - 0.5*alphabeta*
B*
B)*E1(B) -
164 (0.4*
alpha2*Pow->
powA(Bp,2.5) + 0.5*alphabeta*Bp*Bp)*E1(Bp) -
165 (0.4*
alpha2*Pow->
powA(Ap,2.5) + 0.5*alphabeta*Ap*Ap)*E1(Ap)
169 (
alpha2*
B-2*alphabeta*std::sqrt(B))*Gamma15(B) -
170 (
alpha2*
A-2*alphabeta*std::sqrt(
A))*Gamma15(
A)
174 (
alpha2*Bp+2*alphabeta*std::sqrt(Bp))*Gamma15(Bp) -
175 (
alpha2*Ap+2*alphabeta*std::sqrt(Ap))*Gamma15(Ap)
177 result -= 0.6*
alpha2*(Gamma25(B) - Gamma25(
A) - Gamma25(Bp) + Gamma25(Ap));
180 result = result / (3.*std::sqrt(tm*EF));
G4double B(G4double temperature)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4GLOB_DLL std::ostream G4cout
G4double Sample(G4double anEnergy)
G4double GetY(G4double x)
static G4Pow * GetInstance()
G4double powA(G4double A, G4double y) const
G4double energy(const ThreeVector &p, const G4double m)