106 if (thePreFragment ==
nullptr)
108 G4cout <<
"G4PreCompoundEmission::PerformEmission : "
109 <<
"I couldn't choose a fragment\n"
110 <<
"while trying to de-excite\n"
120 kinEnergy =
std::max(kinEnergy, 0.0);
127 std::sqrt(kinEnergy*(kinEnergy + 2.0*thePreFragment->
GetNuclearMass()));
147 Rest4Momentum -= Emitted4Momentum;
158 thePreFragment->
GetA());
161 thePreFragment->
GetZ());
189 G4double Eav = 2*p*(p+1)/((p+h)*gg);
195 G4double w_num =
rho(p+1, h, gg, Uf, fFermiEnergy);
197 if (w_num > 0.0 && w_den > 0.0)
199 Eav *= (w_num/w_den);
200 Eav += - Uf/(p+
h) + fFermiEnergy;
221 an = 3*std::sqrt((ProjEnergy+fFermiEnergy)*Eeff)/(zeta*Eav);
224 if ( ne > 1 ) { an /= (
G4double)ne; }
227 if ( an > 10. ) { an = 10.; }
234 if(an < 0.1) { cost = 1. - 2*random; }
237 cost = 1. +
G4Log(1-random*(1-exp2an))/
an;
238 if(cost > 1.) { cost = 1.; }
239 else if(cost < -1.) {cost = -1.; }
248 G4double sint = std::sqrt((1.0-cost)*(1.0+cost));
262 G4double Aph = (p*p + h*h + p - 3.0*
h)/(4.0*gg);
265 if ( E - Aph < 0.0) {
return 0.0; }
277 if(logt3 > logmax) { logt3 = logmax; }
286 if(Eeff < 0.0) {
break; }
289 logt3 = (p+h-1) *
G4Log( Eeff) + logConst;
290 if(logt3 > logmax) { logt3 = logmax; }
291 tot += t1*t2*
G4Exp(logt3);