111 G4bool IsScatProjToProjCase,
128 IsScatProjToProjCase);
133 adjointPrimKinEnergy,
135 IsScatProjToProjCase);
141 G4double projectileTotalEnergy = projectileM0+projectileKinEnergy;
142 G4double projectileP2 = projectileTotalEnergy*projectileTotalEnergy - projectileM0*projectileM0;
143 G4double projectileP = std::sqrt(projectileP2);
149 const G4double a1 = 0.625 , a2 = 3.*a1 ,
d = 27. ;
162 projectileMomentum=
G4ThreeVector(std::cos(phi)*sint,std::sin(phi)*sint,cost)*projectileP;
163 if (IsScatProjToProjCase) {
166 G4double cost1 = std::cos(dirProd.
angle(projectileMomentum));
167 G4double sint1 = std::sqrt(1.-cost1*cost1);
168 projectileMomentum=
G4ThreeVector(std::cos(phi)*sint1,std::sin(phi)*sint1,cost1)*projectileP;
176 if (!IsScatProjToProjCase ){
189 G4bool IsScatProjToProjCase,
207 if (!IsScatProjToProjCase){
208 gammaEnergy=adjointPrimKinEnergy;
211 if (Emin>=Emax)
return;
212 projectileKinEnergy=Emin*std::pow(Emax/Emin,
G4UniformRand());
218 if (Emin>=Emax)
return;
220 G4double f2=(Emax-adjointPrimKinEnergy)/Emax/f1;
221 projectileKinEnergy=adjointPrimKinEnergy/(1.-f1*std::pow(f2,
G4UniformRand()));
222 gammaEnergy=projectileKinEnergy-adjointPrimKinEnergy;
223 diffCSUsed=
lastCZ*adjointPrimKinEnergy/projectileKinEnergy/gammaEnergy;
252 w_corr*=diffCS/diffCSUsed;
265 G4double projectileTotalEnergy = projectileM0+projectileKinEnergy;
266 G4double projectileP2 = projectileTotalEnergy*projectileTotalEnergy - projectileM0*projectileM0;
267 G4double projectileP = std::sqrt(projectileP2);
302 if (IsScatProjToProjCase) {
305 G4double cost1 = std::cos(dirProd.
angle(projectileMomentum));
306 G4double sint1 = std::sqrt(1.-cost1*cost1);
307 projectileMomentum=
G4ThreeVector(std::cos(phi)*sint1,std::sin(phi)*sint1,cost1)*projectileP;
312 if (!IsScatProjToProjCase ){
362 if (kinEnergyProj>Emin_proj && kinEnergyProj<=Emax_proj){
364 dCrossEprod=sigma/kinEnergyProd/std::log(kinEnergyProj/
keV);
386 G4double E1=kinEnergyProd,E2=kinEnergyProd*1.001;
391 dCrossEprod += theAtomNumDensityVector[i] * (C1-
C2)/dE;
401 G4bool IsScatProjToProjCase)
411 if (!IsScatProjToProjCase ){
419 if (Emax_proj>Emin_proj) Cross=
lastCZ*std::log((Emax_proj-primEnergy)*Emin_proj/Emax_proj/(Emin_proj-primEnergy));
427 G4bool IsScatProjToProjCase)