77 alpha2(fine_structure_const*fine_structure_const)
88 G4double p0 = electron_mass_c2*classic_electr_radius;
99 factB1= 0.5*CLHEP::pi*fine_structure_const;
152#ifdef G4MULTITHREADED
153 G4MUTEXLOCK(&G4WentzelOKandVIxSection::WentzelOKandVIxSectionMutex);
157 G4double constn = 6.937e-6/(MeV*MeV);
166 for(
G4int j=2; j<100; ++j) {
173#ifdef G4MULTITHREADED
175 G4MUTEXUNLOCK(&G4WentzelOKandVIxSection::WentzelOKandVIxSectionMutex);
227 G4double massT = (1 == Z) ? CLHEP::proton_mass_c2 :
238 }
else if(
mass > MeV) {
243 screenZ = std::min(Z*1.13,(1.13 +3.76*Z*Z
257 return cosTetMaxNuc2;
266 if(cosTMax >= 1.0) {
return xSection; }
276 xSection = x2*((1.0 - 1.3333333*x + 3*x2) - fb*x*(0.6666667 - x));
280 xSection = xlog - x1 - fb*(x + x1 - 2*xlog);
286 G4cout <<
"G4WentzelOKandVIxSection::ComputeTransportCrossSectionPerAtom"
287 <<
" scattering on e- <0"
289 G4cout <<
"cross= " << xSection
290 <<
" e(MeV)= " <<
tkin <<
" p(MeV/c)= " << sqrt(
mom2)
293 G4cout <<
" 1-costm= " << 1.0-costm <<
" screenZ= " <<
screenZ
313 y = x2*((1.0 - 1.3333333*x + 3*x2) - fb*x*(0.6666667 - x));
317 y = xlog - x1 - fb*(x + x1 - 2*xlog);
323 G4cout <<
"G4WentzelOKandVIxSection::ComputeTransportCrossSectionPerAtom"
324 <<
" scattering on nucleus <0"
362 if(elecRatio > 0.0) {
363 if(rndmEngineMod->
flat() <= elecRatio) {
380 fm =
G4Exp(-2*formf*z1);
382 static const G4double ccoef = 0.00508/MeV;
394 *fm*fm/(1.0 + z1*
factD);
401 if(cost > 1.0) { cost = 1.0; }
402 else if(cost < -1.0) { cost =-1.0; }
403 G4double sint = sqrt((1.0 - cost)*(1.0 + cost));
406 temp.
set(sint*cos(phi),sint*sin(phi),cost);
420 G4double tmax = 2.0*electron_mass_c2*tau*(tau + 2.)/
421 (1.0 + 2.0*ratio*(tau + 1.0) + ratio*ratio);
426 G4double t = std::min(cutEnergy, tmax);
427 G4double mom21 = t*(t + 2.0*electron_mass_c2);
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
#define G4MUTEX_INITIALIZER
#define G4MUTEXLOCK(mutex)
#define G4MUTEXUNLOCK(mutex)
G4GLOB_DLL std::ostream G4cout
void set(double x, double y, double z)
static G4Electron * Electron()
static G4EmParameters * Instance()
G4double ScreeningFactor() const
G4NuclearFormfactorType NuclearFormfactorType() const
G4double FactorForAngleLimit() const
G4double GetInvA23() const
G4IonisParamMat * GetIonisation() const
G4double GetA27(G4int Z) const
static G4NistManager * Instance()
G4double GetAtomicMassAmu(const G4String &symb) const
G4double GetPDGMass() const
G4double GetPDGCharge() const
const G4String & GetParticleName() const
G4double GetPDGSpin() const
static G4Positron * Positron()
static G4Pow * GetInstance()
G4double A13(G4double A) const
G4double Z13(G4int Z) const
G4double Z23(G4int Z) const
static G4Proton * Proton()
void SetupKinematic(G4double kinEnergy, G4int Z)
void Initialise(const G4ParticleDefinition *, G4double cosThetaLim)
G4double RatioMottRutherfordCosT(G4double sin2t2)
G4double SetupTarget(G4int Z, G4double cut)
void SetTargetMass(G4double value)
static G4double ScreenRSquareElec[100]
G4double ComputeSecondTransportMoment(G4double CosThetaMax)
void ComputeMaxElectronScattering(G4double cut)
virtual ~G4WentzelOKandVIxSection()
const G4ParticleDefinition * theProton
void Initialise(const G4ParticleDefinition *, G4double CosThetaLim)
G4NistManager * fNistManager
const G4ParticleDefinition * thePositron
const G4ParticleDefinition * particle
G4WentzelOKandVIxSection(G4bool comb=true)
G4double ComputeTransportCrossSectionPerAtom(G4double CosThetaMax)
void SetupParticle(const G4ParticleDefinition *)
static G4double ScreenRSquare[100]
G4double SetupKinematic(G4double kinEnergy, const G4Material *mat)
G4ScreeningMottCrossSection * fMottXSection
G4NuclearFormfactorType fNucFormfactor
G4double FlatFormfactor(G4double x)
G4ThreeVector & SampleSingleScattering(G4double CosThetaMin, G4double CosThetaMax, G4double elecRatio)
const G4ParticleDefinition * theElectron
static G4double FormFactor[100]
const G4Material * currentMaterial