132   if ( Z < 0.9 || GammaEnergy <= 2.0*electron_mass_c2 ) { 
return xSection; }
 
  135   G4double GammaEnergySave = GammaEnergy;
 
  138   G4double X=
G4Log(GammaEnergy/electron_mass_c2), X2=X*X, X3=X2*X, X4=X3*X, X5=X4*X;
 
  144   xSection = (Z + 1.)*(F1*Z + F2*Z*Z + F3);
 
  148     X = (GammaEnergySave  - 2.*electron_mass_c2)
 
  153   if (xSection < 0.) { xSection = 0.; }
 
  183   G4double epsil0 = electron_mass_c2/GammaEnergy ;
 
  184   if(epsil0 > 1.0) { 
return; }
 
  199     if (GammaEnergy > 50.*
MeV) { FZ += 8.*(anElement->
GetfCoulomb()); }
 
  203     G4double screenmax = exp ((42.24 - FZ)/8.368) - 0.952 ;
 
  207     G4double epsil1 = 0.5 - 0.5*sqrt(1. - screenmin/screenmax) ;
 
  208     G4double epsilmin = 
max(epsil0,epsil1) , epsilrange = 0.5 - epsilmin;
 
  218     G4double NormF1 = 
max(F10*epsilrange*epsilrange,0.); 
 
  224         screenvar = screenfac/(epsil*(1-epsil));
 
  229         screenvar = screenfac/(epsil*(1-epsil));
 
  241   G4double ElectTotEnergy, PositTotEnergy;
 
  244     ElectTotEnergy = (1.-epsil)*GammaEnergy;
 
  245     PositTotEnergy = epsil*GammaEnergy;
 
  249     PositTotEnergy = (1.-epsil)*GammaEnergy;
 
  250     ElectTotEnergy = epsil*GammaEnergy;
 
  268   G4double TetEl = u*electron_mass_c2/ElectTotEnergy;
 
  269   G4double TetPo = u*electron_mass_c2/PositTotEnergy;
 
  271   G4double dxEl= sin(TetEl)*cos(Phi),dyEl= sin(TetEl)*sin(Phi),dzEl=cos(TetEl);
 
  272   G4double dxPo=-sin(TetPo)*cos(Phi),dyPo=-sin(TetPo)*sin(Phi),dzPo=cos(TetPo);
 
  280   G4double ElectKineEnergy = 
max(0.,ElectTotEnergy - electron_mass_c2);
 
  283   ElectDirection.rotateUz(GammaDirection);   
 
  291   G4double PositKineEnergy = 
max(0.,PositTotEnergy - electron_mass_c2);
 
  294   PositDirection.rotateUz(GammaDirection);   
 
  301   fvect->push_back(aParticle1);
 
  302   fvect->push_back(aParticle2);
 
static G4Pow * GetInstance()
 
G4ParticleChangeForGamma * fParticleChange
 
G4double GetKineticEnergy() const 
 
CLHEP::Hep3Vector G4ThreeVector
 
void InitialiseElementSelectors(const G4ParticleDefinition *, const G4DataVector &)
 
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
 
static const double microbarn
 
G4ParticleDefinition * thePositron
 
G4double GetfCoulomb() const 
 
G4double ScreenFunction2(G4double ScreenVariable)
 
static const G4double Egsmall
 
G4double ScreenFunction1(G4double ScreenVariable)
 
virtual void InitialiseLocal(const G4ParticleDefinition *, G4VEmModel *masterModel)
 
const G4ThreeVector & GetMomentumDirection() const 
 
G4ParticleDefinition * theGamma
 
std::vector< G4EmElementSelector * > * GetElementSelectors()
 
G4BetheHeitlerModel(const G4ParticleDefinition *p=0, const G4String &nam="BetheHeitler")
 
G4double GetlogZ3() const 
 
G4double G4Log(G4double x)
 
static G4Positron * Positron()
 
G4ParticleDefinition * theElectron
 
void SetElementSelectors(std::vector< G4EmElementSelector * > *)
 
virtual ~G4BetheHeitlerModel()
 
G4double A13(G4double A) const 
 
T max(const T t1, const T t2)
brief Return the largest of the two arguments 
 
G4IonisParamElm * GetIonisation() const 
 
T min(const T t1, const T t2)
brief Return the smallest of the two arguments 
 
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kinEnergy, G4double Z, G4double A=0., G4double cut=0., G4double emax=DBL_MAX)
 
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
 
static G4Electron * Electron()
 
void SetProposedKineticEnergy(G4double proposedKinEnergy)
 
static const G4double GammaEnergyLimit
 
void ProposeTrackStatus(G4TrackStatus status)
 
G4ThreeVector G4ParticleMomentum
 
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
G4ParticleChangeForGamma * GetParticleChangeForGamma()
 
const G4Material * GetMaterial() const