72   delete theFragmentsFactory; 
 
   73   delete theFragmentsVector; 
 
   78   if (theFragmentsFactory) { 
delete theFragmentsFactory; }
 
   80   if (theFragmentsVector) {
 
   90   if (theFragmentsFactory) 
delete theFragmentsFactory;
 
   92   if (theFragmentsVector) {
 
  106   if (thePreFragment == 0)
 
  108       G4cout << 
"G4PreCompoundEmission::PerformEmission : " 
  109          << 
"I couldn't choose a fragment\n" 
  110          << 
"while trying to de-excite\n"  
  125   kinEnergy = 
std::max(kinEnergy, 0.0);
 
  128   AngularDistribution(thePreFragment,aFragment,kinEnergy);
 
  134   G4LorentzVector Emitted4Momentum(theFinalMomentum,EmittedMass + kinEnergy);
 
  146   Rest4Momentum -= Emitted4Momentum;
 
  157                  thePreFragment->
GetA());
 
  160                    thePreFragment->
GetZ());
 
  176 void G4PreCompoundEmission::AngularDistribution(
 
  191   G4double Eav = 2*p*(p+1)/((p+h)*gg);
 
  197   G4double w_num = rho(p+1, h, gg, Uf, fFermiEnergy);
 
  198   G4double w_den = rho(p,   h, gg, Uf, fFermiEnergy);
 
  199   if (w_num > 0.0 && w_den > 0.0)
 
  201       Eav *= (w_num/w_den);
 
  202       Eav += - Uf/(p+h) + fFermiEnergy;
 
  212   G4double Eeff = ekin + Bemission + fFermiEnergy;
 
  223     an = 3*std::sqrt((ProjEnergy+fFermiEnergy)*Eeff)/(zeta*Eav);
 
  226     if ( ne > 1 ) { an /= (
G4double)ne; }
 
  229     if ( an > 10. ) { an = 10.; }
 
  236   if(an < 0.1) { cost = 1. - 2*random; }
 
  239     cost = 1. + 
G4Log(1-random*(1-exp2an))/
an;
 
  240     if(cost > 1.) { cost = 1.; }
 
  241     else if(cost < -1.) {cost = -1.; }
 
  250   G4double sint = std::sqrt((1.0-cost)*(1.0+cost));
 
  252   theFinalMomentum.
set(pmag*std::cos(phi)*sint,pmag*std::sin(phi)*sint,
 
  257   theFinalMomentum.
rotateUz(theIncidentDirection);
 
  264   G4double Aph   = (p*p + h*h + p - 3.0*h)/(4.0*gg);
 
  267   if ( E - Aph < 0.0) { 
return 0.0; }
 
  279   if(logt3 > logmax) { logt3 = logmax; }
 
  285   for(
G4int j=1; j<=h; ++j) 
 
  288       if(Eeff < 0.0) { 
break; }
 
  291       logt3 = (p+h-1) * 
G4Log( Eeff) + logConst;
 
  292       if(logt3 > logmax) { logt3 = logmax; }
 
  293       tot += t1*t2*
G4Exp(logt3);
 
void set(double x, double y, double z)
 
static G4Pow * GetInstance()
 
Hep3Vector boostVector() const 
 
G4ReactionProduct * GetReactionProduct() const 
 
std::vector< G4VPreCompoundFragment * > * GetFragmentVector()
 
G4int GetNumberOfParticles() const 
 
void SetVector(pcfvector *avector)
 
G4double GetLevelDensity() const 
 
G4double GetBindingEnergy() const 
 
G4int GetNumberOfHoles() const 
 
void SetMomentum(const G4LorentzVector &value)
 
G4GLOB_DLL std::ostream G4cout
 
G4double GetFermiEnergy() const 
 
const G4LorentzVector & GetMomentum() const 
 
HepLorentzVector & boost(double, double, double)
 
void SetMomentum(const G4LorentzVector &value)
 
Hep3Vector & rotateUz(const Hep3Vector &)
 
G4DeexPrecoParameters * GetParameters()
 
void SetNumberOfParticles(G4int value)
 
G4double G4Log(G4double x)
 
G4double G4Exp(G4double initial_x)
Exponential Function double precision. 
 
G4VPreCompoundFragment * ChooseFragment()
 
G4double GetNuclearMass() const 
 
G4ReactionProduct * PerformEmission(G4Fragment &aFragment)
 
G4int GetNumberOfExcitons() const 
 
T max(const T t1, const T t2)
brief Return the largest of the two arguments 
 
G4double logfactorial(G4int Z) const 
 
void SetZandA_asInt(G4int Znew, G4int Anew)
 
virtual G4double SampleKineticEnergy(const G4Fragment &aFragment)=0
 
static constexpr double MeV
 
void SetNumberOfCharged(G4int value)
 
G4int GetNumberOfCharged() const 
 
static G4NuclearLevelData * GetInstance()
 
static constexpr double twopi
 
G4double GetExcitationEnergy() const 
 
static constexpr double pi2