79 0.5917, 0.7628, 0.8983, 0.9801 };
81 0.1813, 0.1569, 0.1112, 0.0506 };
96 use_completescreening(false)
143 G4double vcut1 = 0.5 - 0.5*sqrt(1. - dmin/dmax) ;
144 vcut =
max(vcut, vcut1);
156 for(
G4int l=0; l<
n; l++,e0 += delta) {
157 for(
G4int i=0; i<8; i++) {
186 G4double yp=eplusEnergy/totalEnergy;
191 cross = (yp*yp + ym*ym + 2./3.*ym*yp)*(
Fel -
fCoulomb) + 1./9.*yp*ym;
197 return cross/totalEnergy;
212 G4double yp=eplusEnergy/totalEnergy;
222 cross = (1./3.*
gLPM + 2./3.*
phiLPM)*(yp*yp + ym*ym)
227 return cross/totalEnergy;
248 else if (sprime>sqrt(2.)*s1) {
250 xiLPM = 1+h-0.08*(1-h)*(1-
sqr(1-h))/logTS1;
265 phiLPM = 6.*s0 - 18.84955592153876*s2 + 39.47841760435743*s3
266 - 57.69873135166053*s4;
267 gLPM = 37.69911184307752*s2 - 236.8705056261446*s3 + 807.7822389*s4;
269 else if (s0<1.9516) {
273 +s3/(0.623+0.795*s0+0.658*s2));
274 if (s0<0.415827397755) {
276 G4double psiLPM = 1-
G4Exp(-4*s0-8*s2/(1+3.936*s0+4.97*s2-0.05*s3+7.50*s4));
281 G4double pre = -0.16072300849123999 + s0*3.7550300067531581 + s2*-1.7981383069010097
282 + s3*0.67282686077812381 + s4*-0.1207722909879257;
288 phiLPM = 1. - 0.0119048/s4;
289 gLPM = 1. - 0.0230655/s4;
315 crossSection *= xsfactor*Z*(Z+xi);
348 if(epsil0 > 1.0) {
return; }
357 if (GammaEnergy < Egsmall) {
366 if (GammaEnergy > 50.*
MeV) { FZ += 8.*(anElement->
GetfCoulomb()); }
374 G4double epsil1 = 0.5 - 0.5*sqrt(1. - screenmin/screenmax) ;
375 G4double epsilmin =
max(epsil0,epsil1) , epsilrange = 0.5 - epsilmin;
385 G4double NormF1 =
max(F10*epsilrange*epsilrange,0.);
391 screenvar = screenfac/(epsil*(1-epsil));
403 screenvar = screenfac/(epsil*(1-epsil));
422 G4double ElectTotEnergy, PositTotEnergy;
425 ElectTotEnergy = (1.-epsil)*GammaEnergy;
426 PositTotEnergy = epsil*GammaEnergy;
430 PositTotEnergy = (1.-epsil)*GammaEnergy;
431 ElectTotEnergy = epsil*GammaEnergy;
452 G4double dxEl= sin(TetEl)*cos(Phi),dyEl= sin(TetEl)*sin(Phi),dzEl=cos(TetEl);
453 G4double dxPo=-sin(TetPo)*cos(Phi),dyPo=-sin(TetPo)*sin(Phi),dzPo=cos(TetPo);
464 ElectDirection.
rotateUz(GammaDirection);
475 PositDirection.
rotateUz(GammaDirection);
482 fvect->push_back(aParticle1);
483 fvect->push_back(aParticle2);
G4double Phi1(G4double delta) const
G4bool use_completescreening
G4double ComputeXSectionPerAtom(G4double totalEnergy, G4double Z)
G4double GetKineticEnergy() const
void InitialiseElementSelectors(const G4ParticleDefinition *, const G4DataVector &)
G4double Phi2(G4double delta) const
G4PairProductionRelModel(const G4ParticleDefinition *p=0, const G4String &nam="BetheHeitlerLPM")
G4double GetZ13(G4double Z)
G4double GetfCoulomb() const
static const G4double preS1
static const G4double Finel_light[5]
G4ParticleDefinition * thePositron
static G4NistManager * Instance()
static const G4double facFel
static const G4double xgi[8]
G4double ScreenFunction1(G4double ScreenVariable)
virtual void SetupForMaterial(const G4ParticleDefinition *, const G4Material *, G4double)
virtual void InitialiseLocal(const G4ParticleDefinition *, G4VEmModel *masterModel)
static const G4double wgi[8]
static const G4double logTwo
const G4ThreeVector & GetMomentumDirection() const
Hep3Vector & rotateUz(const Hep3Vector &)
virtual ~G4PairProductionRelModel()
G4double DeltaMin(G4double) const
void CalcLPMFunctions(G4double k, G4double eplus)
static const G4double facFinel
G4double ScreenFunction2(G4double ScreenVariable)
std::vector< G4EmElementSelector * > * GetElementSelectors()
G4double GetRadlen() const
G4double GetlogZ3() const
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
static G4Positron * Positron()
void SetElementSelectors(std::vector< G4EmElementSelector * > *)
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
G4ParticleChangeForGamma * fParticleChange
G4ParticleDefinition * theGamma
T max(const T t1, const T t2)
brief Return the largest of the two arguments
void SetCurrentElement(G4double)
G4double DeltaMax() const
G4IonisParamElm * GetIonisation() const
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
static G4Electron * Electron()
void SetProposedKineticEnergy(G4double proposedKinEnergy)
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
G4double ComputeRelDXSectionPerAtom(G4double eplusEnergy, G4double totalEnergy, G4double Z)
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kinEnergy, G4double Z, G4double A=0., G4double cut=0., G4double emax=DBL_MAX)
G4ParticleDefinition * theElectron
void ProposeTrackStatus(G4TrackStatus status)
static const G4double Fel_light[5]
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
G4ParticleChangeForGamma * GetParticleChangeForGamma()
const G4Material * GetMaterial() const
G4double ComputeDXSectionPerAtom(G4double eplusEnergy, G4double totalEnergy, G4double Z)