#include <G4eeToTwoGammaModel.hh>
Inheritance diagram for G4eeToTwoGammaModel:
Public Member Functions | |
G4eeToTwoGammaModel (const G4ParticleDefinition *p=0, const G4String &nam="eplus2gg") | |
virtual | ~G4eeToTwoGammaModel () |
virtual void | Initialise (const G4ParticleDefinition *, const G4DataVector &) |
virtual G4double | ComputeCrossSectionPerElectron (const G4ParticleDefinition *, G4double kinEnergy, G4double cutEnergy=0., G4double maxEnergy=DBL_MAX) |
virtual G4double | ComputeCrossSectionPerAtom (const G4ParticleDefinition *, G4double kinEnergy, G4double Z, G4double A=0., G4double cutEnergy=0., G4double maxEnergy=DBL_MAX) |
virtual G4double | CrossSectionPerVolume (const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy, G4double maxEnergy) |
virtual void | SampleSecondaries (std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy) |
Definition at line 60 of file G4eeToTwoGammaModel.hh.
G4eeToTwoGammaModel::G4eeToTwoGammaModel | ( | const G4ParticleDefinition * | p = 0 , |
|
const G4String & | nam = "eplus2gg" | |||
) |
Definition at line 85 of file G4eeToTwoGammaModel.cc.
References G4Gamma::Gamma().
00087 : G4VEmModel(nam), 00088 pi_rcl2(pi*classic_electr_radius*classic_electr_radius), 00089 isInitialised(false) 00090 { 00091 theGamma = G4Gamma::Gamma(); 00092 fParticleChange = 0; 00093 }
G4eeToTwoGammaModel::~G4eeToTwoGammaModel | ( | ) | [virtual] |
G4double G4eeToTwoGammaModel::ComputeCrossSectionPerAtom | ( | const G4ParticleDefinition * | , | |
G4double | kinEnergy, | |||
G4double | Z, | |||
G4double | A = 0. , |
|||
G4double | cutEnergy = 0. , |
|||
G4double | maxEnergy = DBL_MAX | |||
) | [virtual] |
Reimplemented from G4VEmModel.
Definition at line 135 of file G4eeToTwoGammaModel.cc.
References ComputeCrossSectionPerElectron().
00139 { 00140 // Calculates the cross section per atom of annihilation into two photons 00141 00142 G4double cross = Z*ComputeCrossSectionPerElectron(p,kineticEnergy); 00143 return cross; 00144 }
G4double G4eeToTwoGammaModel::ComputeCrossSectionPerElectron | ( | const G4ParticleDefinition * | , | |
G4double | kinEnergy, | |||
G4double | cutEnergy = 0. , |
|||
G4double | maxEnergy = DBL_MAX | |||
) | [virtual] |
Reimplemented in G4PolarizedAnnihilationModel.
Definition at line 112 of file G4eeToTwoGammaModel.cc.
References G4InuclParticleNames::gam.
Referenced by ComputeCrossSectionPerAtom(), G4PolarizedAnnihilationModel::ComputeCrossSectionPerElectron(), and CrossSectionPerVolume().
00116 { 00117 // Calculates the cross section per electron of annihilation into two photons 00118 // from the Heilter formula. 00119 00120 G4double ekin = std::max(eV,kineticEnergy); 00121 00122 G4double tau = ekin/electron_mass_c2; 00123 G4double gam = tau + 1.0; 00124 G4double gamma2= gam*gam; 00125 G4double bg2 = tau * (tau+2.0); 00126 G4double bg = sqrt(bg2); 00127 00128 G4double cross = pi_rcl2*((gamma2+4*gam+1.)*log(gam+bg) - (gam+3.)*bg) 00129 / (bg2*(gam+1.)); 00130 return cross; 00131 }
G4double G4eeToTwoGammaModel::CrossSectionPerVolume | ( | const G4Material * | , | |
const G4ParticleDefinition * | , | |||
G4double | kineticEnergy, | |||
G4double | cutEnergy, | |||
G4double | maxEnergy | |||
) | [virtual] |
Reimplemented from G4VEmModel.
Definition at line 148 of file G4eeToTwoGammaModel.cc.
References ComputeCrossSectionPerElectron(), and G4Material::GetElectronDensity().
00153 { 00154 // Calculates the cross section per volume of annihilation into two photons 00155 00156 G4double eDensity = material->GetElectronDensity(); 00157 G4double cross = eDensity*ComputeCrossSectionPerElectron(p,kineticEnergy); 00158 return cross; 00159 }
void G4eeToTwoGammaModel::Initialise | ( | const G4ParticleDefinition * | , | |
const G4DataVector & | ||||
) | [virtual] |
Implements G4VEmModel.
Reimplemented in G4PolarizedAnnihilationModel.
Definition at line 102 of file G4eeToTwoGammaModel.cc.
References G4VEmModel::GetParticleChangeForGamma().
00104 { 00105 if(isInitialised) { return; } 00106 fParticleChange = GetParticleChangeForGamma(); 00107 isInitialised = true; 00108 }
virtual void G4eeToTwoGammaModel::SampleSecondaries | ( | std::vector< G4DynamicParticle * > * | , | |
const G4MaterialCutsCouple * | , | |||
const G4DynamicParticle * | , | |||
G4double | tmin, | |||
G4double | maxEnergy | |||
) | [virtual] |