87 chargeSquare = spin = mass = 0.0;
88 tkinLab = momLab2 = invbetaLab2 = tkin = mom2 = invbeta2 = 0.0;
90 targetZ = targetMass = screenZ = ScreenRSquare = etag = 0.0;
103 nucXSection = tkin = targetZ = mom2 = 0.0;
106 cosThetaMin = CosThetaLim;
113 if(ekin != tkinLab || tmass != targetMass) {
117 momLab2 = tkinLab*(tkinLab + 2.0*mass);
118 invbetaLab2 = 1.0 + mass*mass/momLab2;
128 G4double Ecm=sqrt(m12 + targetMass*targetMass + 2.0*etot*targetMass);
129 G4double mu_rel=mass*targetMass/Ecm;
130 G4double momCM= ptot*targetMass/Ecm;
133 invbeta2 = 1.0 + mu_rel*mu_rel/mom2;
134 tkin = momCM*sqrt(invbeta2) - mu_rel;
136 cosTetMinNuc = cosThetaMin;
137 cosTetMaxNuc = cosThetaMax;
146 if(Z != targetZ || e != etag) {
151 SetScreenRSquare(iz);
153 screenZ = ScreenRSquare/mom2;
159 screenZ *=0.5*(1.13 + corr*3.76*Z*Z*chargeSquare*invbeta2*alpha2);
163 if(1 == iz && particle == theProton && cosTetMaxNuc < 0.0) {
171 void G4IonCoulombCrossSection::SetScreenRSquare(
G4int iz)
181 if(particle == theProton){
185 ScreenRSquare = alpha2*x*
x;
194 G4double fac = coeff*targetZ*(targetZ)*chargeSquare*invbeta2/mom2;
202 if(cosTetMaxNuc < cosTetMinNuc) {
203 nucXSection = fac*(cosTetMinNuc - cosTetMaxNuc)/
204 (x1*(1.0 - cosTetMaxNuc + screenZ));
215 if(cosTetMaxNuc < cosTetMinNuc) {
217 G4double x1 = 1. - cosTetMinNuc + screenZ;
218 G4double x2 = 1. - cosTetMaxNuc + screenZ;
219 G4double dx = cosTetMinNuc - cosTetMaxNuc;
void SetupTarget(G4double Z, G4double kinEnergy, G4int heavycorr)
static G4Pow * GetInstance()
void SetupKinematic(G4double kinEnergy, G4double tmass)
G4double SampleCosineTheta()
virtual ~G4IonCoulombCrossSection()
static G4NistManager * Instance()
G4IonCoulombCrossSection()
static constexpr double twopi
static constexpr double electron_mass_c2
G4double Z13(G4int Z) const
void SetupParticle(const G4ParticleDefinition *)
static G4Proton * Proton()
G4double NuclearCrossSection()
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
static const G4double fac
G4double powZ(G4int Z, G4double y) const
void Initialise(const G4ParticleDefinition *, G4double cosThetaLim)