73 alpha2(fine_structure_const*fine_structure_const)
80 G4double p0 = electron_mass_c2*classic_electr_radius;
87 chargeSquare = spin = mass = 0.0;
88 tkinLab = momLab2 = invbetaLab2 = tkin = mom2 = invbeta2 = 0.0;
90 targetZ = targetMass = screenZ = ScreenRSquare = etag = 0.0;
99 nucXSection = tkin = targetZ = mom2 = 0.0;
102 cosThetaMin = CosThetaLim;
109 if(ekin != tkinLab || tmass != targetMass) {
113 momLab2 = tkinLab*(tkinLab + 2.0*mass);
114 invbetaLab2 = 1.0 + mass*mass/momLab2;
124 G4double Ecm=sqrt(m12 + targetMass*targetMass + 2.0*etot*targetMass);
125 G4double mu_rel=mass*targetMass/Ecm;
126 G4double momCM= ptot*targetMass/Ecm;
129 invbeta2 = 1.0 + mu_rel*mu_rel/mom2;
130 tkin = momCM*sqrt(invbeta2) - mu_rel;
132 cosTetMinNuc = cosThetaMin;
133 cosTetMaxNuc = cosThetaMax;
142 if(Z != targetZ || e != etag) {
147 SetScreenRSquare(iz);
149 screenZ = ScreenRSquare/mom2;
153 G4double corr=5.*twopi*Z*std::sqrt(chargeSquare*alpha2);
155 screenZ *=0.5*(1.13 + corr*3.76*Z*Z*chargeSquare*invbeta2*
alpha2);
159 if(1 == iz && particle == theProton && cosTetMaxNuc < 0.0) {
167void G4IonCoulombCrossSection::SetScreenRSquare(
G4int iz)
177 if(particle == theProton){
181 ScreenRSquare = alpha2*x*x;
190 G4double fac = coeff*targetZ*(targetZ)*chargeSquare*invbeta2/mom2;
198 if(cosTetMaxNuc < cosTetMinNuc) {
199 nucXSection = fac*(cosTetMinNuc - cosTetMaxNuc)/
200 (x1*(1.0 - cosTetMaxNuc + screenZ));
211 if(cosTetMaxNuc < cosTetMinNuc) {
213 G4double x1 = 1. - cosTetMinNuc + screenZ;
214 G4double x2 = 1. - cosTetMaxNuc + screenZ;
215 G4double dx = cosTetMinNuc - cosTetMaxNuc;
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
void Initialise(const G4ParticleDefinition *, G4double cosThetaLim)
void SetupTarget(G4double Z, G4double kinEnergy, G4int heavycorr)
G4IonCoulombCrossSection()
void SetupKinematic(G4double kinEnergy, G4double tmass)
void SetupParticle(const G4ParticleDefinition *)
G4double SampleCosineTheta()
G4double NuclearCrossSection()
static G4NistManager * Instance()
static G4Pow * GetInstance()
G4double powZ(G4int Z, G4double y) const
G4double Z13(G4int Z) const
static G4Proton * Proton()