66   if (theFragmentsFactory) { 
delete theFragmentsFactory; }
 
   67   if (theFragmentsVector)  { 
delete theFragmentsVector; }
 
   72   if (theFragmentsFactory) { 
delete theFragmentsFactory; }
 
   74   if (theFragmentsVector) 
 
   88   if (theFragmentsFactory) 
delete theFragmentsFactory;
 
   90   if (theFragmentsVector) 
 
  106   if (thePreFragment == 0)
 
  108       G4cout <<  
"G4PreCompoundEmission::PerformEmission : I couldn't choose a fragment\n" 
  109          << 
"while trying to de-excite\n"  
  124   if(kinEnergyOfEmittedFragment < 0.0) { kinEnergyOfEmittedFragment = 0.0; }
 
  127   AngularDistribution(thePreFragment,aFragment,kinEnergyOfEmittedFragment);
 
  134                    EmittedMass + kinEnergyOfEmittedFragment);
 
  146   Rest4Momentum -= Emitted4Momentum;
 
  157                  thePreFragment->
GetA());
 
  160                    thePreFragment->
GetZ());
 
  198   G4double Eav = 2*p*(p+1)/((p+h)*gg);
 
  201   G4double Uf = std::max(U - (p - h)*Ef , 0.0);
 
  204   G4double w_num = rho(p+1, h, gg, Uf, Ef);
 
  205   G4double w_den = rho(p,   h, gg, Uf, Ef);
 
  206   if (w_num > 0.0 && w_den > 0.0)
 
  208       Eav *= (w_num/w_den);
 
  209       Eav += - Uf/(p+h) + Ef;
 
  219   G4double Eeff = ekin + Bemission + Ef;
 
  222     G4double zeta = std::max(1.0,9.3/std::sqrt(ekin/
MeV));
 
  230     an = 3*std::sqrt((ProjEnergy+Ef)*Eeff)/(zeta*Eav);
 
  233     if ( ne > 1 ) { an /= (
G4double)ne; }
 
  236     if ( an > 10. ) { an = 10.; }
 
  243   if(an < 0.1) { cost = 1. - 2*random; }
 
  246     cost = 1. + std::log(1-random*(1-exp2an))/
an;
 
  247     if(cost > 1.) { cost = 1.; }
 
  248     else if(cost < -1.) {cost = -1.; }
 
  256   G4double sint = std::sqrt((1.0-cost)*(1.0+cost));
 
  258   theFinalMomentum.
set(pmag*std::cos(phi)*sint,pmag*std::sin(phi)*sint,pmag*cost);
 
  262   theFinalMomentum.
rotateUz(theIncidentDirection);
 
  269   G4double Aph   = (p*p + h*h + p - 3.0*h)/(4.0*gg);
 
  272   if ( E - Aph < 0.0) { 
return 0.0; }
 
  274   G4double logConst =  (p+h)*std::log(gg) 
 
  281   G4double logt3 = (p+h-1) * std::log(E-Aph) + logConst;
 
  283   if(logt3 > logmax) { logt3 = logmax; }
 
  289   for(
G4int j=1; j<=h; ++j) 
 
  292       if(Eeff < 0.0) { 
break; }
 
  295       logt3 = (p+h-1) * std::log( Eeff) + logConst;
 
  296       if(logt3 > logmax) { logt3 = logmax; }
 
  297       tot += t1*t2*std::exp(logt3);