65 G4bool IsScatProjToProjCase,
87 IsScatProjToProjCase);
93 G4double gammaE2 = adjointPrimKinEnergy;
94 if (!IsScatProjToProjCase) gammaE2 = gammaE1 - adjointPrimKinEnergy;
105 if (!IsScatProjToProjCase) {
107 cos_th = (gammaE1 - gammaE2*cos_th)/p_elec;
110 if (std::abs(cos_th)>1){
118 else sin_th = std::sqrt(1.-cos_th*cos_th);
130 gammaMomentum1.
rotateUz(dir_parallel);
138 adjointPrimKinEnergy,
140 IsScatProjToProjCase);
142 if (!IsScatProjToProjCase){
157 G4bool IsScatProjToProjCase,
177 if (!IsScatProjToProjCase){
181 if (Emin>=Emax)
return;
183 G4double f2=(Emax-adjointPrimKinEnergy)/Emax/f1;
184 gammaE1=adjointPrimKinEnergy/(1.-f1*std::pow(f2,
G4UniformRand()));;
185 gammaE2=gammaE1-adjointPrimKinEnergy;
186 diffCSUsed= diffCSUsed*(1.+2.*std::log(1.+
electron_mass_c2/adjointPrimKinEnergy))*adjointPrimKinEnergy/gammaE1/gammaE2;
192 if (Emin>=Emax)
return;
193 gammaE2 =adjointPrimKinEnergy;
195 diffCSUsed= diffCSUsed/gammaE1;
212 if (diffCS >0) diffCS /=G4direct_CS;
217 w_corr*=diffCS/diffCSUsed;
230 if (!IsScatProjToProjCase) {
232 cos_th = (gammaE1 - gammaE2*cos_th)/p_elec;
235 if (std::abs(cos_th)>1){
243 else sin_th = std::sqrt(1.-cos_th*cos_th);
255 gammaMomentum1.
rotateUz(dir_parallel);
260 if (!IsScatProjToProjCase){
284 G4double gamEnergy1 = gamEnergy0 - kinEnergyElec;
309 G4double one_plus_two_epsi =1.+2.*epsilon;
310 G4double gamEnergy1_max = gamEnergy0;
311 G4double gamEnergy1_min = gamEnergy0/one_plus_two_epsi;
312 if (gamEnergy1 >gamEnergy1_max || gamEnergy1<gamEnergy1_min) {
322 G4double one_plus_two_epsi_2=one_plus_two_epsi*one_plus_two_epsi;
325 G4double CS=std::log(one_plus_two_epsi)*(1.- 2.*(1.+epsilon)/epsi2);
326 CS+=4./epsilon +0.5*(1.-1./one_plus_two_epsi_2);
336 G4double term1 =1.+ 1./epsilon -1/epsilon1;
337 G4double dCS_dE1= 1./v +v + term1*term1 -1.;
338 dCS_dE1 *=1./epsilon/gamEnergy0;
348 dCS_dE1 *= G4direct_CS/CS;
378 G4bool IsScatProjToProjCase)
387 if (!IsScatProjToProjCase ){
390 if (Emax_proj>Emin_proj ){
391 Cross= std::log((Emax_proj-
float (primEnergy))*Emin_proj/Emax_proj/(Emin_proj-primEnergy))
398 if (Emax_proj>Emin_proj) {
399 Cross = std::log(Emax_proj/Emin_proj);
408 return double(Cross);
414 G4bool IsScatProjToProjCase)