84 G4bool IsScatProjToProjCase,
105 adjointPrimKinEnergy,
107 IsScatProjToProjCase);
116 G4double projectileTotalEnergy = projectileM0+projectileKinEnergy;
117 G4double projectileP2 = projectileTotalEnergy*projectileTotalEnergy - projectileM0*projectileM0;
124 if (IsScatProjToProjCase) {
127 G4double companionTotalEnergy =companionM0+ projectileKinEnergy-adjointPrimKinEnergy;
128 G4double companionP2 = companionTotalEnergy*companionTotalEnergy - companionM0*companionM0;
133 G4double P_parallel = (adjointPrimP*adjointPrimP + projectileP2 - companionP2)/(2.*adjointPrimP);
134 G4double P_perp = std::sqrt( projectileP2 - P_parallel*P_parallel);
138 projectileMomentum.
rotateUz(dir_parallel);
142 if (!IsScatProjToProjCase ){
160 G4bool IsScatProjToProjCase,
178 if (!IsScatProjToProjCase){
180 eEnergy=adjointPrimKinEnergy;
183 if (Emin>=Emax)
return;
186 newCS=newCS*(b-
a)/eEnergy;
194 if (Emin>=Emax)
return;
195 G4double diff1=Emin-adjointPrimKinEnergy;
196 G4double diff2=Emax-adjointPrimKinEnergy;
198 G4double t1=adjointPrimKinEnergy*(1./diff1-1./diff2);
204 newCS=newCS*sum_t/adjointPrimKinEnergy/adjointPrimKinEnergy;
208 projectileKinEnergy =adjointPrimKinEnergy +1./(1./diff1-q);
213 projectileKinEnergy =1./(1./Emin-q);
216 projectileKinEnergy=Emin*std::pow(Emax/Emin,
G4UniformRand());
219 eEnergy=projectileKinEnergy-adjointPrimKinEnergy;
226 G4double diffCS_perAtom_Used=
twopi_mc2_rcl2*mass*adjointPrimKinEnergy/projectileKinEnergy/projectileKinEnergy/eEnergy/eEnergy;
242 w_corr*=diffCS/diffCS_perAtom_Used;
259 G4double projectileTotalEnergy = projectileM0+projectileKinEnergy;
260 G4double projectileP2 = projectileTotalEnergy*projectileTotalEnergy - projectileM0*projectileM0;
267 if (IsScatProjToProjCase) {
270 G4double companionTotalEnergy =companionM0+ projectileKinEnergy-adjointPrimKinEnergy;
271 G4double companionP2 = companionTotalEnergy*companionTotalEnergy - companionM0*companionM0;
276 G4double P_parallel = (adjointPrimP*adjointPrimP + projectileP2 - companionP2)/(2.*adjointPrimP);
277 G4double P_perp = std::sqrt( projectileP2 - P_parallel*P_parallel);
281 projectileMomentum.
rotateUz(dir_parallel);
285 if (!IsScatProjToProjCase ){
319 if (kinEnergyProj>Emin_proj && kinEnergyProj<=Emax_proj){
326 if (kinEnergyProj >2.*
MeV){
336 dSigmadEprod=(sigma1-sigma2)/dE;
337 if (dSigmadEprod>1.) {
340 G4cout<<
"dsigma "<<kinEnergyProj/
MeV<<
'\t'<<kinEnergyProd/
MeV<<
'\t'<<dSigmadEprod<<
G4endl;
353 G4double deltaKinEnergy = kinEnergyProd;
367 G4double etot2 = totEnergy*totEnergy;
368 G4double beta2 = kinEnergyProj*(kinEnergyProj + 2.0*
mass)/etot2;
371 f = 1.0 - beta2*deltaKinEnergy/Tmax;
373 f1 = 0.5*deltaKinEnergy*deltaKinEnergy/etot2;
383 G4cout <<
"### G4BetheBlochModel in Adjoint Sim WARNING: g= " <<
g
406 pname !=
"deuteron" && pname !=
"triton") {
439 G4bool IsScatProjToProjCase)
447 if (!IsScatProjToProjCase ){
451 Cross*=(1./Emin_proj -1./Emax_proj)/primEnergy;
464 G4double diff1=Emin_proj-primEnergy;
465 G4double diff2=Emax_proj-primEnergy;
466 G4double t1=(1./diff1+1./Emin_proj-1./diff2-1./Emax_proj)/primEnergy;
468 G4double t2=2.*std::log(Emax_proj/Emin_proj)/primEnergy/primEnergy;
486 {
return PrimAdjEnergy+Tcut;