60   _NumOfNeutralFragments(0), 
 
   61   _NumOfChargedFragments(0)
 
   74     std::deque<G4StatMFFragment*>::iterator i;
 
   79         G4int Z = (*i)->GetZ();
 
   80         if ( (A > 1 && (Z > A || Z <= 0)) || (A==1 && Z > A) || A <= 0 ) 
return false;
 
  119     std::deque<G4StatMFFragment*>::const_iterator i;
 
  122         Energy += (*i)->GetEnergy(T);
 
  124     return Energy + TranslationalEnergy;        
 
  139     std::deque<G4StatMFFragment*>::iterator i;
 
  141         theResult->push_back((*i)->GetFragment(T));
 
  176         TooMuchIterations = 
false;
 
  185         G4bool ThereAreOverlaps = 
false;
 
  186         std::deque<G4StatMFFragment*>::iterator i;
 
  196                 std::deque<G4StatMFFragment*>::iterator j;
 
  199                     G4ThreeVector FragToFragVector = (*i)->GetPosition() - (*j)->GetPosition();
 
  201                                         g4pow->
Z13((*j)->GetA()));
 
  202                     if ( (ThereAreOverlaps = (FragToFragVector.mag2() < Rmin*Rmin)) ) 
break;
 
  205               } 
while (ThereAreOverlaps && counter < 1000);
 
  209                 TooMuchIterations = 
true;
 
  213     } 
while (TooMuchIterations);
 
  259             SummedP.setX(0.0);SummedP.setY(0.0);SummedP.setZ(0.0);
 
  260             for (
G4int i = idx; i < idx+NF-2; i++) 
 
  268                     Boltzmann = std::sqrt(E)*std::exp(-E/T);
 
  271                 while (RandE > Boltzmann);
 
  282             AvailableE = KinE - SummedE;
 
  285         while (AvailableE <= p.mag2()/(2.0*(
_theFragments[i1]->GetNuclearMass()+
 
  293         if (CTM12 > 0.9999) {CosTheta1 = 1.;} 
 
  301              while (CosTheta1*CosTheta1 < CTM12);
 
  303           while (CTM12 >= 0.0 && CosTheta1 < 0.0);
 
  306         if (CTM12 < 0.0) Sign = 1.0;
 
  311         G4double P1 = (p.mag()*CosTheta1+Sign*std::sqrt(p.mag2()*(CosTheta1*CosTheta1-CTM12)))/H;
 
  312         G4double P2 = std::sqrt(P1*P1+p.mag2() - 2.0*P1*p.mag()*CosTheta1);
 
  314         G4double SinTheta1 = std::sqrt(1.0 - CosTheta1*CosTheta1);
 
  319         G4double CosTheta2 = (p.mag2() + P2*P2 - P1*
P1)/(2.0*p.mag()*
P2);
 
  321         if (CosTheta2 > -1.0 && CosTheta2 < 1.0) SinTheta2 = std::sqrt(1.0 - CosTheta2*CosTheta2);
 
  323         G4ThreeVector p1(P1*SinTheta1*CosPhi1,P1*SinTheta1*SinPhi1,P1*CosTheta1);
 
  324         G4ThreeVector p2(P2*SinTheta2*CosPhi2,P2*SinTheta2*SinPhi2,P2*CosTheta2);
 
  331         SummedE += p1.mag2()/(2.0*
_theFragments[i1]->GetNuclearMass()) + 
 
  347   G4double CoulombEnergy = (3./5.)*(elm_coupling*anZ*anZ)*
 
  351   if (CoulombEnergy <= 0.0) 
return;
 
  353   G4int Iterations = 0;
 
  378           force.setX(0.0); force.setY(0.0); force.setZ(0.0);
 
  383                   distance = Pos[i] - Pos[j];
 
  386                             (distance.mag2()*distance.mag()))*distance;
 
  392       TimeN = TimeS + DeltaTime;
 
  398           Vel[i] += Accel[i]*(TimeN-TimeS);
 
  399           Pos[i] += (SavedVel+Vel[i])*(TimeN-TimeS)*0.5;
 
  408   while (Iterations++ < 100);
 
  419   G4double Eta = ( CoulombEnergy + KineticEnergy ) / TotalKineticEnergy;
 
  449   G4double Alpha2 = std::sqrt(V.mag2() - Alpha1*Alpha1);
 
  454                                 ( (V.x() - Alpha1*U.x())/Alpha2 ) * P.x() + N.x() * P.y() + U.x() * P.z(),
 
  455                                 ( (V.y() - Alpha1*U.y())/Alpha2 ) * P.x() + N.y() * P.y() + U.y() * P.z(),
 
  456                                 ( (V.z() - Alpha1*U.z())/Alpha2 ) * P.x() + N.z() * P.y() + U.z() * P.z()
 
  458   return RotatedMomentum;
 
  470     G4double SinTheta = std::sqrt(1.0 - CosTheta*CosTheta);
 
  473                          Magnitude*std::cos(Phi)*CosTheta,
 
  474                          Magnitude*std::sin(Phi));
 
static G4Pow * GetInstance()
 
static const G4double * P1[nN]
 
static G4double GetKappaCoulomb()
 
CLHEP::Hep3Vector G4ThreeVector
 
void CoulombImpulse(G4int anA, G4int anZ, G4double T)
 
G4double GetFragmentsEnergy(G4double T) const 
 
G4double GetCoulombEnergy(void) const 
 
G4ThreeVector RotateMomentum(G4ThreeVector Pa, G4ThreeVector V, G4ThreeVector P)
 
G4double operator()(G4double &, G4StatMFFragment *&frag)
 
G4int _NumOfChargedFragments
 
G4ThreeVector IsotropicVector(G4double Magnitude=1.0)
 
void CreateFragment(G4int A, G4int Z)
 
G4double Z13(G4int Z) const 
 
void PlaceFragments(G4int anA)
 
std::vector< G4Fragment * > G4FragmentVector
 
G4int _NumOfNeutralFragments
 
void FragmentsMomenta(G4int NF, G4int idx, G4double T)
 
static const G4double A[nN]
 
G4double GetFragmentsCoulombEnergy(void)
 
static const G4double * P2[nN]
 
std::deque< G4StatMFFragment * > _theFragments
 
short Sign(short a, short b)
 
G4bool CheckFragments(void)
 
void SolveEqOfMotion(G4int anA, G4int anZ, G4double T)
 
G4FragmentVector * GetFragments(G4int anA, G4int anZ, G4double T)