113 if (std::fabs(cut/emax-1.)<1.
e-10)
return xs;
123 TotalXSection(xmin,xmax,gam,
127 TotalXSection(xmin,xmax,gam,
130 if (crossUnpol>0.) factor=crossPol/crossUnpol;
160 if (targetIsPolarized)
167 if(tmin >= tmax)
return;
171 polL=std::fabs(polL);
174 polT=std::fabs(polT);
178 G4double totalMomentum = std::sqrt(kineticEnergy*(energy + electron_mass_c2));
197 G4double G = ((2.0*gam - 1.0)/gamma2)*(1. - polT - polL*gam);
198 G4double H = (
sqr(gam - 1.0)/gamma2)*(1. + polT + polL*((gam + 3.)/(gam - 1.)));
201 grej = 1.0 - G*xmax + xmax*xmax*(H + (1.0 - G*
y)/(y*y));
202 grej2 = 1.0 - G*xmin + xmin*xmin*(H + (1.0 - G*
y)/(y*y));
203 if (grej2 > grej) grej = grej2;
208 x = xmin*xmax/(xmin*(1.0 - q) + xmax*q);
216 G4cout<<
"WARNING : error in Moller rejection routine! \n"
217 <<
" z = "<<z<<
" grej="<<grej<<
"\n";
229 grej += y*y*gmo3*(1. + (polL + polT)*(gam + 3.)/gmo);
230 grej += -2.*xmin*xmin*xmin*gam*gmo2*(1. - (polL + polT)*(gam + 3.)/gmo);
231 grej += y*y*gmo*(3.*gamma2 + 6.*gam + 4.)*(1. + (polL*(3.*gam + 1.)*(gamma2 + gam + 1.) + polT*((gam + 2.)*gamma2 + 1.))/(gmo*(3.*gam*(gam + 2.) + 4.)));
233 grej += -xmin*(2.*gamma2 + 4.*gam + 1.)*(1. - gam*(polL*(2.*gam + 1.) + polT)/(2.*gam*(gam + 2.) + 1.))/gpo2;
234 grej += gamma2/(gamma2 - 1.);
240 x = xmin*xmax/(xmin*(1.0 - q) + xmax*q);
252 G4cout<<
"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"<<
G4endl;
253 G4cout <<
"G4PolarizedMollerBhabhaModel::SampleSecondaries Warning! "<<G4endl
254 <<
"Majorant " << grej <<
" < "
255 << z <<
" for x= " << x<<G4endl
256 <<
" e+e- (Bhabha) scattering"<<
" at KinEnergy "<<kineticEnergy<<
G4endl;
257 G4cout<<
"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"<<
G4endl;
278 G4cout <<
"G4PolarizedMollerBhabhaModel::SampleSecondaries Warning! "<<
G4endl
279 <<
"Majorant " << grej <<
" < "
281 <<
" e-e- (Moller) scattering"<<
G4endl
284 G4cout <<
"G4PolarizedMollerBhabhaModel::SampleSecondaries Warning! "<<
G4endl
285 <<
"Majorant " << grej <<
" < "
287 <<
" e+e- (Bhabha) scattering"<<
G4endl
296 G4double deltaKinEnergy = x * kineticEnergy;
298 std::sqrt(deltaKinEnergy * (deltaKinEnergy + 2.0*electron_mass_c2));
300 (deltaMomentum * totalMomentum);
302 if(sint > 0.0) sint = std::sqrt(sint);
309 kineticEnergy -= deltaKinEnergy;
314 direction = dir.
unit();
320 vdp->push_back(delta);