47 _NumOfNeutralFragments(0),
48 _NumOfChargedFragments(0)
61 std::deque<G4StatMFFragment*>::iterator i;
67 if ( (A > 1 && (Z > A || Z <= 0)) || (A==1 && Z > A) || A <= 0 )
return false;
96 return running_total + fragment->GetCoulombEnergy();
110 std::deque<G4StatMFFragment*>::const_iterator i;
113 Energy += (*i)->GetEnergy(T);
115 return Energy + TranslationalEnergy;
129 std::deque<G4StatMFFragment*>::iterator i;
131 theResult->push_back((*i)->GetFragment(T));
166 TooMuchIterations =
false;
175 G4bool ThereAreOverlaps =
false;
176 std::deque<G4StatMFFragment*>::iterator i;
186 std::deque<G4StatMFFragment*>::iterator j;
190 (*i)->GetPosition() - (*j)->GetPosition();
192 g4calc->
Z13((*j)->GetA()));
193 if ( (ThereAreOverlaps = (FragToFragVector.
mag2() < Rmin*Rmin)))
198 }
while (ThereAreOverlaps && counter < 1000);
202 TooMuchIterations =
true;
207 }
while (TooMuchIterations);
253 for (
G4int i = idx; i < idx+NF-2; ++i)
276 AvailableE = KinE - SummedE;
285 *AvailableE/p.
mag2());
289 if (CTM12 > 1.) {CosTheta1 = 1.;}
298 while (CosTheta1*CosTheta1 < CTM12);
301 while (CTM12 >= 0.0 && CosTheta1 < 0.0);
304 if (CTM12 < 0.0) Sign = 1.0;
309 *(CosTheta1*CosTheta1-CTM12)))/H;
312 G4double SinTheta1 = std::sqrt(1.0 - CosTheta1*CosTheta1);
319 if (CosTheta2 > -1.0 && CosTheta2 < 1.0) {
320 SinTheta2 = std::sqrt(1.0 - CosTheta2*CosTheta2);
322 G4ThreeVector p1(P1*SinTheta1*CosPhi1,P1*SinTheta1*SinPhi1,P1*CosTheta1);
323 G4ThreeVector p2(P2*SinTheta2*CosPhi2,P2*SinTheta2*SinPhi2,P2*CosTheta2);
348 if (CoulombEnergy <= 0.0)
return;
350 G4int Iterations = 0;
378 distance = Pos[i] - Pos[j];
381 (distance.
mag2()*distance.
mag()))*distance;
387 TimeN = TimeS + DeltaTime;
392 Vel[i] += Accel[i]*(TimeN-TimeS);
393 Pos[i] += (SavedVel+Vel[i])*(TimeN-TimeS)*0.5;
398 }
while (Iterations++ < 100);
409 G4double Eta = ( CoulombEnergy + KineticEnergy ) / TotalKineticEnergy;
437 G4double Alpha2 = std::sqrt(V.mag2() - Alpha1*Alpha1);
442 ( (V.x() - Alpha1*U.
x())/Alpha2 ) * P.
x() + N.x() * P.
y() + U.
x() * P.
z(),
443 ( (V.y() - Alpha1*U.
y())/Alpha2 ) * P.
x() + N.y() * P.
y() + U.
y() * P.
z(),
444 ( (V.z() - Alpha1*U.
z())/Alpha2 ) * P.
x() + N.z() * P.
y() + U.
z() * P.
z()
446 return RotatedMomentum;