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);
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;
134 (0.4*alpha2*Pow->
powA(B,2.5) - 0.5*alphabeta*B*
B)*E1(B) -
135 (0.4*alpha2*Pow->
powA(A,2.5) - 0.5*alphabeta*A*
A)*E1(A)
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) -
160 (0.4*alpha2*Pow->
powA(A,2.5) - 0.5*alphabeta*A*
A)*E1(A)
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));
178 result -= 1.5*alphabeta*(
G4Exp(-B)*(1+
B) -
G4Exp(-A)*(1+
A) +
G4Exp(-Bp)*(1+Bp) +
G4Exp(-Ap)*(1+Ap) - 2.) ;
180 result = result / (3.*std::sqrt(tm*EF));
G4double G4ParticleHPJENDLHEData::G4double result
static G4Pow * GetInstance()
G4double powA(G4double A, G4double y) const
G4double Sample(G4double anEnergy)
double B(double temperature)
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
static constexpr double eV
G4double GetY(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double energy(const ThreeVector &p, const G4double m)
static constexpr double MeV
static const G4double alpha