#include <G4alphaIonisation.hh>
Inheritance diagram for G4alphaIonisation:
Public Member Functions | |
G4alphaIonisation (const G4String &name="alphaIoni") | |
virtual | ~G4alphaIonisation () |
virtual G4bool | IsApplicable (const G4ParticleDefinition &p) |
virtual void | PrintInfo () |
Protected Member Functions | |
virtual void | InitialiseEnergyLossProcess (const G4ParticleDefinition *, const G4ParticleDefinition *) |
virtual G4double | MinPrimaryEnergy (const G4ParticleDefinition *p, const G4Material *, G4double cut) |
G4double | BetheBlochEnergyThreshold () |
Definition at line 59 of file G4alphaIonisation.hh.
G4alphaIonisation::G4alphaIonisation | ( | const G4String & | name = "alphaIoni" |
) |
Definition at line 65 of file G4alphaIonisation.cc.
References fIonisation, G4Exception(), JustWarning, G4VEnergyLossProcess::SetLinearLossLimit(), G4VProcess::SetProcessSubType(), and G4VEnergyLossProcess::SetStepFunction().
00066 : G4VEnergyLossProcess(name), 00067 theParticle(0), 00068 isInitialised(false) 00069 { 00070 G4Exception("G4alphaIonisation::G4alphaIonisation","em0007",JustWarning, 00071 " The process is not ready for use - incorrect results are expected"); 00072 SetLinearLossLimit(0.02); 00073 SetStepFunction(0.2, 0.01*mm); 00074 // SetIntegral(true); 00075 SetProcessSubType(fIonisation); 00076 // SetVerboseLevel(1); 00077 mass = 0.0; 00078 ratio = 0.0; 00079 eth = 8*MeV; 00080 }
G4alphaIonisation::~G4alphaIonisation | ( | ) | [virtual] |
G4double G4alphaIonisation::BetheBlochEnergyThreshold | ( | ) | [inline, protected] |
void G4alphaIonisation::InitialiseEnergyLossProcess | ( | const G4ParticleDefinition * | , | |
const G4ParticleDefinition * | ||||
) | [protected, virtual] |
Implements G4VEnergyLossProcess.
Definition at line 108 of file G4alphaIonisation.cc.
References G4VEnergyLossProcess::AddEmModel(), G4Alpha::Alpha(), G4Electron::Electron(), G4VEnergyLossProcess::EmModel(), G4VEnergyLossProcess::FluctModel(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGMass(), G4VEmModel::HighEnergyLimit(), G4VEnergyLossProcess::MaxKinEnergy(), G4VEnergyLossProcess::MinKinEnergy(), G4VEnergyLossProcess::SetBaseParticle(), G4VEnergyLossProcess::SetEmModel(), G4VEnergyLossProcess::SetFluctModel(), G4VEmModel::SetHighEnergyLimit(), G4VEmModel::SetLowEnergyLimit(), and G4VEnergyLossProcess::SetSecondaryParticle().
00111 { 00112 if(!isInitialised) { 00113 00114 theParticle = part; 00115 G4String pname = part->GetParticleName(); 00116 00117 // define base particle 00118 const G4ParticleDefinition* theBaseParticle = 0; 00119 if(bpart == 0) { 00120 if(pname != "alpha") { theBaseParticle = G4Alpha::Alpha(); } 00121 } else { theBaseParticle = bpart; } 00122 00123 mass = part->GetPDGMass(); 00124 ratio = electron_mass_c2/mass; 00125 00126 SetBaseParticle(theBaseParticle); 00127 SetSecondaryParticle(G4Electron::Electron()); 00128 00129 if (!EmModel(1)) { SetEmModel(new G4BraggIonModel(), 1); } 00130 EmModel(1)->SetLowEnergyLimit(MinKinEnergy()); 00131 00132 // model limit defined for alpha 00133 eth = (EmModel(1)->HighEnergyLimit())*mass/proton_mass_c2; 00134 EmModel(1)->SetHighEnergyLimit(eth); 00135 00136 if (!FluctModel()) { SetFluctModel(new G4UniversalFluctuation()); } 00137 AddEmModel(1, EmModel(1), new G4IonFluctuations()); 00138 00139 if (!EmModel(2)) { SetEmModel(new G4BetheBlochModel(),2); } 00140 EmModel(2)->SetLowEnergyLimit(eth); 00141 EmModel(2)->SetHighEnergyLimit(MaxKinEnergy()); 00142 AddEmModel(2, EmModel(2), FluctModel()); 00143 00144 isInitialised = true; 00145 } 00146 }
G4bool G4alphaIonisation::IsApplicable | ( | const G4ParticleDefinition & | p | ) | [virtual] |
Implements G4VEnergyLossProcess.
Definition at line 89 of file G4alphaIonisation.cc.
References G4ParticleDefinition::GetPDGCharge(), and G4ParticleDefinition::IsShortLived().
00090 { 00091 return (!p.IsShortLived() && 00092 std::fabs(p.GetPDGCharge()/CLHEP::eplus - 2) < 0.01); 00093 }
G4double G4alphaIonisation::MinPrimaryEnergy | ( | const G4ParticleDefinition * | p, | |
const G4Material * | , | |||
G4double | cut | |||
) | [protected, virtual] |
Reimplemented from G4VEnergyLossProcess.
Definition at line 97 of file G4alphaIonisation.cc.
References G4InuclParticleNames::gam.
00100 { 00101 G4double x = 0.5*cut/electron_mass_c2; 00102 G4double gam = x*ratio + std::sqrt((1. + x)*(1. + x*ratio*ratio)); 00103 return mass*(gam - 1.0); 00104 }
void G4alphaIonisation::PrintInfo | ( | ) | [virtual] |