66  HighestEnergyLimit = 1000.*
TeV;
 
  101   CrossSecFactor = 
fac;
 
  102   G4cout << 
"The cross section for AnnihiToMuPair is artificially " 
  103          << 
"increased by the CrossSecFactor=" << CrossSecFactor << 
G4endl;
 
  114   static const G4double Sig0  = 
pi*Rmuon*Rmuon/3.;  
 
  117   if (Epos < LowestEnergyLimit) 
return CrossSection;
 
  119   G4double xi = LowestEnergyLimit/Epos;
 
  120   G4double SigmaEl = Sig0*xi*(1.+xi/2.)*sqrt(1.-xi); 
 
  121   CrossSection = SigmaEl*
Z;         
 
  137     G4double AtomicZ = (*theElementVector)[i]->GetZ();
 
  138     SIGMA += NbOfAtomsPerVolume[i] *
 
  160   if(CurrentSigma > 
DBL_MIN) mfp = 1.0/(CurrentSigma*CrossSecFactor);
 
  189   if (Epos < LowestEnergyLimit) {
 
  195   G4double xi = LowestEnergyLimit/Epos; 
 
  211   G4double Ecm   = sqrt(0.5*Mele*(Epos+Mele));
 
  212   G4double Pcm   = sqrt(Ecm*Ecm-Mmuon*Mmuon);
 
  213   G4double beta  = sqrt((Epos-Mele)/(Epos+Mele));
 
  219   G4double EmuPlus   = gamma*(     Ecm+cost*beta*Pcm);
 
  220   G4double EmuMinus  = gamma*(     Ecm-cost*beta*Pcm);
 
  221   G4double PmuPlusZ  = gamma*(beta*Ecm+cost*     Pcm);
 
  222   G4double PmuMinusZ = gamma*(beta*Ecm-cost*     Pcm);
 
  228   G4double PmuPlus  = sqrt(Pt*Pt+PmuPlusZ *PmuPlusZ );
 
  229   G4double PmuMinus = sqrt(Pt*Pt+PmuMinusZ*PmuMinusZ);
 
  234     MuPlusDirection ( PmuPlusX/PmuPlus, PmuPlusY/PmuPlus,  PmuPlusZ/PmuPlus  );
 
  236     MuMinusDirection(PmuMinusX/PmuMinus,PmuMinusY/PmuMinus,PmuMinusZ/PmuMinus);
 
  240   MuPlusDirection.
rotateUz(PositronDirection);
 
  241   MuMinusDirection.
rotateUz(PositronDirection);
 
  265   G4String comments =
"e+e->mu+mu- annihilation, atomic e- at rest, SubType=.";
 
  268   G4cout << 
"        threshold at " << LowestEnergyLimit/
GeV << 
" GeV" 
  269          << 
" good description up to " 
  270          << HighestEnergyLimit/
TeV << 
" TeV for all Z." << 
G4endl;
 
void BuildPhysicsTable(const G4ParticleDefinition &) override
 
static G4MuonPlus * MuonPlus()
 
std::vector< G4Element * > G4ElementVector
 
void PrintInfoDefinition()
 
G4double GetKineticEnergy() const 
 
const G4DynamicParticle * GetDynamicParticle() const 
 
G4double ComputeCrossSectionPerAtom(G4double PositronEnergy, G4double AtomicZ)
 
G4AnnihiToMuPair(const G4String &processName="AnnihiToMuPair", G4ProcessType type=fElectromagnetic)
 
const G4ElementVector * GetElementVector() const 
 
G4VParticleChange * PostStepDoIt(const G4Track &aTrack, const G4Step &aStep) override
 
static constexpr double electron_mass_c2
 
static constexpr double TeV
 
const G4double * GetVecNbOfAtomsPerVolume() const 
 
G4GLOB_DLL std::ostream G4cout
 
const G4ThreeVector & GetMomentumDirection() const 
 
Hep3Vector & rotateUz(const Hep3Vector &)
 
void SetProcessSubType(G4int)
 
G4bool IsApplicable(const G4ParticleDefinition &) override
 
const G4String & GetProcessName() const 
 
G4Material * GetMaterial() const 
 
virtual void Initialize(const G4Track &)
 
static G4Positron * Positron()
 
G4double GetPDGMass() const 
 
void SetNumberOfSecondaries(G4int totSecondaries)
 
void ProposeEnergy(G4double finalEnergy)
 
G4ParticleChange aParticleChange
 
static constexpr double GeV
 
void AddSecondary(G4Track *aSecondary)
 
static constexpr double elm_coupling
 
static G4MuonMinus * MuonMinus()
 
static const G4double fac
 
static constexpr double pi
 
size_t GetNumberOfElements() const 
 
G4double GetMeanFreePath(const G4Track &aTrack, G4double previousStepSize, G4ForceCondition *) override
 
G4double CrossSectionPerVolume(G4double PositronEnergy, const G4Material *)
 
void SetCrossSecFactor(G4double fac)
 
void ProposeTrackStatus(G4TrackStatus status)
 
G4int GetProcessSubType() const 
 
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)