50     LowestEnergyLimit (4*
G4MuonPlus::MuonPlus()->GetPDGMass()), 
 
   51     HighestEnergyLimit(1e21*
eV), 
 
  116     G4double AtomicZ = (*theElementVector)[i]->GetZ();
 
  118     SIGMA += NbOfAtomsPerVolume[i] *
 
  149   static const G4double Mele=electron_mass_c2;
 
  150   static const G4double Rc=elm_coupling/Mmuon; 
 
  151   static const G4double sqrte=sqrt(exp(1.));
 
  156   if ( A < 1. ) 
return 0;
 
  157   if ( Egam < 4*Mmuon ) 
return 0 ; 
 
  162   if(Zlast==Z && Egam==EgamLast) 
return CrossSection; 
 
  175     Zthird=pow(Z,-1./3.); 
 
  176     Winfty=B*Zthird*Mmuon/(Dn*Mele);
 
  177     WMedAppr=1./(4.*Dn*sqrte*Mmuon);
 
  178     Wsatur=Winfty/WMedAppr;
 
  179     sigfac=4.*fine_structure_const*Z*Z*Rc*Rc;
 
  180     PowThres=1.479+0.00799*Dn;
 
  181     Ecor=-18.+4347./(B*Zthird);
 
  183   G4double CorFuc=1.+.04*log(1.+Ecor/Egam);
 
  184   G4double Eg=pow(1.-4.*Mmuon/Egam,PowThres)*pow( pow(Wsatur,PowSat)+
 
  185               pow(Egam,PowSat),1./PowSat); 
 
  186   CrossSection=7./9.*sigfac*log(1.+WMedAppr*CorFuc*Eg);
 
  196   G4cout << 
"The cross section for GammaConversionToMuons is artificially " 
  213   static const G4double Mele=electron_mass_c2;
 
  214   static const G4double sqrte=sqrt(exp(1.));
 
  238     Zthird=pow(Z,-1./3.); 
 
  239     Winfty=B*Zthird*Mmuon/(Dn*Mele);
 
  243     C2Term2=Mele/(183.*Zthird*Mmuon);
 
  247   G4double sqrtx=sqrt(.25-GammaMuonInv);
 
  254   G4double LogWmaxInv=1./log(Winfty*(1.+2.*Ds2*GammaMuonInv)
 
  255                              /(1.+2.*sBZ*Mmuon*GammaMuonInv));
 
  261     G4double del=Mmuon*Mmuon/(2.*Egam*xPM);
 
  262     W=Winfty*(1.+Ds2*del/Mmuon)/(1.+sBZ*del);
 
  265     result=xxp*log(W)*LogWmaxInv;
 
  267       G4cout << 
"G4GammaConversionToMuons::PostStepDoIt WARNING:" 
  268              << 
" in dSigxPlusGen, result=" << result << 
" > 1" << 
G4endl;
 
  278   G4double thetaPlus,thetaMinus,phiHalf; 
 
  288       f1=(1.-2.*xPM+4.*xPM*t*(1.-t)) / (1.+C1/(t*t));
 
  289       if(f1<0 || f1> f1_max) 
 
  291           G4cout << 
"G4GammaConversionToMuons::PostStepDoIt WARNING:" 
  292                  << 
"outside allowed range f1=" << f1 << 
" is set to zero" 
  299     G4double f2_max=1.-2.*xPM*(1.-4.*t*(1.-t));
 
  305       f2=1.-2.*xPM+4.*xPM*t*(1.-t)*(1.+cos(2.*psi));
 
  306       if(f2<0 || f2> f2_max) 
 
  308           G4cout << 
"G4GammaConversionToMuons::PostStepDoIt WARNING:" 
  309                  << 
"outside allowed range f2=" << f2 << 
" is set to zero" 
  317     G4double C2Term1=GammaMuonInv/(2.*xPM*t);
 
  318     G4double C2=4./sqrt(xPM)*pow(C2Term1*C2Term1+C2Term2*C2Term2,2.);
 
  320     G4double beta=log( (C2+pow(rhomax,4.))/C2 );
 
  326     phiHalf=0.5*rho/u*sin(psi);
 
  328     thetaPlus =GammaMuonInv*(u+xiHalf)/xPlus;
 
  329     thetaMinus=GammaMuonInv*(u-xiHalf)/xMinus;
 
  331   } 
while ( std::abs(thetaPlus)>
pi || std::abs(thetaMinus) >
pi);
 
  340   G4ThreeVector MuPlusDirection  ( sin(thetaPlus) *cos(phi0+phiHalf),
 
  341                    sin(thetaPlus)  *sin(phi0+phiHalf), cos(thetaPlus) );
 
  342   G4ThreeVector MuMinusDirection (-sin(thetaMinus)*cos(phi0-phiHalf),
 
  343                   -sin(thetaMinus) *sin(phi0-phiHalf), cos(thetaMinus) );
 
  345   MuPlusDirection.rotateUz(GammaDirection);
 
  346   MuMinusDirection.rotateUz(GammaDirection);
 
  376   if (NumberOfElements == 1) 
return (*theElementVector)[0];
 
  384   for ( 
G4int i=0 ; i < NumberOfElements ; i++ )
 
  385       { PartialSumSigma += NbOfAtomsPerVolume[i] *
 
  387         if (rval <= PartialSumSigma) 
return ((*theElementVector)[i]);
 
  389   G4cout << 
" WARNING !!! - The Material '"<< aMaterial->
GetName()
 
  390        << 
"' has no elements, NULL pointer returned." << 
G4endl;
 
  398   G4String comments =
"gamma->mu+mu- Bethe Heitler process, SubType= ";
 
  401   G4cout << 
"        good cross section parametrization from " 
static G4MuonPlus * MuonPlus()
 
G4bool IsApplicable(const G4ParticleDefinition &)
 
std::vector< G4Element * > G4ElementVector
 
static const G4double fac
 
G4double GetKineticEnergy() const 
 
CLHEP::Hep3Vector G4ThreeVector
 
const G4DynamicParticle * GetDynamicParticle() const 
 
const G4String & GetName() const 
 
~G4GammaConversionToMuons()
 
G4double ComputeMeanFreePath(G4double GammaEnergy, G4Material *aMaterial)
 
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1 
 
const G4ElementVector * GetElementVector() const 
 
void BuildPhysicsTable(const G4ParticleDefinition &)
 
const G4double * GetVecNbOfAtomsPerVolume() const 
 
G4GLOB_DLL std::ostream G4cout
 
const G4ThreeVector & GetMomentumDirection() const 
 
G4VParticleChange * PostStepDoIt(const G4Track &aTrack, const G4Step &aStep)
 
void SetCrossSecFactor(G4double fac)
 
virtual G4double ComputeCrossSectionPerAtom(G4double GammaEnergy, G4double AtomicZ, G4double AtomicA)
 
void SetProcessSubType(G4int)
 
G4double GetCrossSectionPerAtom(const G4DynamicParticle *aDynamicGamma, G4Element *anElement)
 
static const G4double A[nN]
 
const G4String & GetProcessName() const 
 
G4Material * GetMaterial() const 
 
virtual void Initialize(const G4Track &)
 
void PrintInfoDefinition()
 
G4double GetPDGMass() const 
 
G4double HighestEnergyLimit
 
void SetNumberOfSecondaries(G4int totSecondaries)
 
G4double LowestEnergyLimit
 
void ProposeEnergy(G4double finalEnergy)
 
G4ParticleChange aParticleChange
 
void AddSecondary(G4Track *aSecondary)
 
static G4MuonMinus * MuonMinus()
 
size_t GetNumberOfElements() const 
 
G4Element * SelectRandomAtom(const G4DynamicParticle *aDynamicGamma, G4Material *aMaterial)
 
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
 
G4GammaConversionToMuons(const G4String &processName="GammaToMuPair", G4ProcessType type=fElectromagnetic)
 
void ProposeTrackStatus(G4TrackStatus status)
 
G4ThreeVector G4ParticleMomentum
 
G4int GetProcessSubType() const 
 
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
 
G4double GetMeanFreePath(const G4Track &aTrack, G4double previousStepSize, G4ForceCondition *condition)