44 modifiedOriginal = *originalIncident;
46 targetParticle = *originalTarget;
49 SlowNeutron(originalIncident,modifiedOriginal,targetParticle,targetNucleus );
50 delete originalTarget;
77 p = std::sqrt(
std::abs((et-amas)*(et+amas)) );
87 SlowNeutron( originalIncident, modifiedOriginal, targetParticle, targetNucleus );
88 delete originalTarget;
95 G4bool incidentHasChanged =
false;
96 G4bool targetHasChanged =
false;
97 G4bool quasiElastic =
false;
103 incidentHasChanged, targetHasChanged);
106 originalIncident, originalTarget, modifiedOriginal,
107 targetNucleus, currentParticle, targetParticle,
108 incidentHasChanged, targetHasChanged, quasiElastic);
111 currentParticle, targetParticle,
114 delete originalTarget;
139 eka = 1.0 + 2.0*cost1*A + A*
A;
142 eka /= (1.0+
A)*(1.0+A);
160 G4double pO = std::sqrt(pxO*pxO+pyO*pyO+pzO*pzO);
162 sint = 0.5*(std::sqrt(
std::abs((1.0-cost)*(1.0+cost)))+std::sqrt(ptO)/pO);
164 if( pyO < 0.0 )ph = ph*1.5;
165 if(
std::abs(pxO) > 0.000001 )ph = std::atan2(pyO,pxO);
168 px = cost*cosp*px - sinp*py+sint*cosp*pz;
169 py = cost*sinp*px + cosp*py+sint*sinp*pz;
170 pz = -sint*px + cost*pz;
174 if( pz < 0.0 )pz *= -1.0;
176 G4double pu = std::sqrt(px*px+py*py+pz*pz);
184 targetParticle.
SetTotalEnergy( std::sqrt( pp*pp + tarmas*tarmas ) );
200 massVec[0] = targetNucleus.
AtomicMass( A+1.0, Z );
201 massVec[1] = theAtomicMass;
203 if (Z > 1.0) massVec[2] = targetNucleus.
AtomicMass(A, Z-1.0);
205 if (Z > 1.0 && A > 1.0) massVec[3] = targetNucleus.
AtomicMass(A-1.0, Z-1.0 );
207 if (Z > 1.0 && A > 2.0 && A-2.0 > Z-1.0)
208 massVec[4] = targetNucleus.
AtomicMass( A-2.0, Z-1.0 );
210 if (Z > 2.0 && A > 3.0 && A-3.0 > Z-2.0)
211 massVec[5] = targetNucleus.
AtomicMass( A-3.0, Z-2.0 );
213 if (A > 1.0 && A-1.0 > Z) massVec[6] = targetNucleus.
AtomicMass(A-1.0, Z);
214 massVec[7] = massVec[3];
216 if (Z > 2.0 && A > 1.0) massVec[8] = targetNucleus.
AtomicMass( A-1.0,Z-2.0 );
219 targetNucleus, theAtomicMass, massVec );
225 for(
G4int i=0; i<vecLen; ++i ) {
246 G4bool& incidentHasChanged,
253 std::vector<G4int> fsTypes;
274 incidentHasChanged =
true;
276 targetHasChanged =
true;
281 targetHasChanged =
true;
282 incidentHasChanged =
true;
286 if (part2 >
neu && part2 <
xi0) targetHasChanged =
true;
303 incidentHasChanged =
true;
304 }
else if (part2 ==
neu) {
306 incidentHasChanged =
true;
307 targetHasChanged =
true;
313 }
else if (part2 >
neu && part2 <
xi0) {
314 incidentHasChanged =
true;
315 targetHasChanged =
true;
319 targetHasChanged =
true;
332 fsTypes.erase(fsTypes.begin());
333 fsTypes.erase(fsTypes.begin());
338 for(
G4int i=0; i < mult-2; ++i ) {
339 partType = fsTypes[i];
348 CheckQnums(vec, vecLen, currentParticle, targetParticle,
349 testCharge, testBaryon, testStrange);