54 #ifndef G4WentzelVIRelXSection_h
55 #define G4WentzelVIRelXSection_h 1
113 void ComputeMaxElectronScattering(
G4double cut);
185 if(kinEnergy != tkin || mat != currentMaterial ||
186 ecut != cut || tmass != targetMass) {
188 currentMaterial = mat;
191 G4double momLab2 = tkin*(tkin + 2.0*mass);
203 G4double Ecm = std::sqrt(m12 + targetMass*targetMass + 2.0*etot*targetMass);
204 G4double mu_rel = mass*targetMass/Ecm;
205 G4double momCM = ptot*targetMass/Ecm;
208 invbeta2 = 1.0 + mu_rel*mu_rel/mom2;
210 factB = spin/invbeta2;
211 factD = std::sqrt(mom2)/tmass;
214 if(cost > cosTetMaxNuc) { cosTetMaxNuc = cost; }
239 return cosTetMaxElec;
249 if(cosTMax < cosTMin) {
250 xsec = targetZ*kinFactor*(cosTMin - cosTMax)/
251 ((1.0 - cosTMin + screenZ)*(1.0 - cosTMax + screenZ));
266 xsec = kinFactor*(cost1 - cost2)/
267 ((1.0 - cost1 + screenZ)*(1.0 - cost2 + screenZ));
G4IonisParamMat * GetIonisation() const
G4double ComputeNuclearCrossSection(G4double CosThetaMin, G4double CosThetaMax)
G4WentzelVIRelXSection(G4bool combined=true)
G4double ComputeTransportCrossSectionPerAtom(G4double CosThetaMax)
G4double GetCosThetaElec() const
void SetupParticle(const G4ParticleDefinition *)
G4double GetMomentumSquare() const
G4double SetupKinematic(G4double kinEnergy, const G4Material *mat, G4double cut, G4double tmass)
G4double SetupTarget(G4int Z, G4double cut)
G4double GetInvA23() const
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double ComputeElectronCrossSection(G4double CosThetaMin, G4double CosThetaMax)
void Initialise(const G4ParticleDefinition *, G4double CosThetaLim)
G4double GetCosThetaNuc() const
G4ThreeVector & SampleSingleScattering(G4double CosThetaMin, G4double CosThetaMax, G4double elecRatio)
virtual ~G4WentzelVIRelXSection()