#include <G4MuIonisation.hh>
Inheritance diagram for G4MuIonisation:
Public Member Functions | |
G4MuIonisation (const G4String &name="muIoni") | |
virtual | ~G4MuIonisation () |
virtual G4bool | IsApplicable (const G4ParticleDefinition &p) |
virtual G4double | MinPrimaryEnergy (const G4ParticleDefinition *p, const G4Material *, G4double cut) |
virtual void | PrintInfo () |
Protected Member Functions | |
virtual void | InitialiseEnergyLossProcess (const G4ParticleDefinition *, const G4ParticleDefinition *) |
Definition at line 85 of file G4MuIonisation.hh.
G4MuIonisation::G4MuIonisation | ( | const G4String & | name = "muIoni" |
) |
Definition at line 98 of file G4MuIonisation.cc.
References G4Electron::Electron(), fIonisation, G4VProcess::SetProcessSubType(), and G4VEnergyLossProcess::SetSecondaryParticle().
00099 : G4VEnergyLossProcess(name), 00100 theParticle(0), 00101 theBaseParticle(0), 00102 isInitialised(false) 00103 { 00104 mass = ratio = 0; 00105 // SetStepFunction(0.2, 1*mm); 00106 //SetIntegral(true); 00107 //SetVerboseLevel(1); 00108 SetProcessSubType(fIonisation); 00109 SetSecondaryParticle(G4Electron::Electron()); 00110 }
G4MuIonisation::~G4MuIonisation | ( | ) | [virtual] |
void G4MuIonisation::InitialiseEnergyLossProcess | ( | const G4ParticleDefinition * | , | |
const G4ParticleDefinition * | ||||
) | [protected, virtual] |
Implements G4VEnergyLossProcess.
Definition at line 137 of file G4MuIonisation.cc.
References G4VEnergyLossProcess::AddEmModel(), G4VEnergyLossProcess::EmModel(), G4VEnergyLossProcess::FluctModel(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), G4VEnergyLossProcess::MaxKinEnergy(), G4VEnergyLossProcess::MinKinEnergy(), G4VEnergyLossProcess::SetEmModel(), G4VEnergyLossProcess::SetFluctModel(), G4VEmModel::SetHighEnergyLimit(), and G4VEmModel::SetLowEnergyLimit().
00139 { 00140 if(!isInitialised) { 00141 00142 theParticle = part; 00143 theBaseParticle = bpart; 00144 00145 mass = theParticle->GetPDGMass(); 00146 G4double q = theParticle->GetPDGCharge(); 00147 G4double elow = 0.2*MeV; 00148 00149 // Bragg peak model 00150 if (!EmModel(1)) { 00151 if(q > 0.0) { SetEmModel(new G4BraggModel(),1); } 00152 else { SetEmModel(new G4ICRU73QOModel(),1); } 00153 } 00154 EmModel(1)->SetLowEnergyLimit(MinKinEnergy()); 00155 EmModel(1)->SetHighEnergyLimit(elow); 00156 AddEmModel(1, EmModel(1), new G4IonFluctuations()); 00157 00158 // high energy fluctuation model 00159 if (!FluctModel()) { SetFluctModel(new G4UniversalFluctuation()); } 00160 00161 // moderate energy model 00162 if (!EmModel(2)) { SetEmModel(new G4BetheBlochModel(),2); } 00163 EmModel(2)->SetLowEnergyLimit(elow); 00164 EmModel(2)->SetHighEnergyLimit(1.0*GeV); 00165 AddEmModel(2, EmModel(2), FluctModel()); 00166 00167 // high energy model 00168 if (!EmModel(3)) { SetEmModel(new G4MuBetheBlochModel(),3); } 00169 EmModel(3)->SetLowEnergyLimit(1.0*GeV); 00170 EmModel(3)->SetHighEnergyLimit(MaxKinEnergy()); 00171 AddEmModel(3, EmModel(3), FluctModel()); 00172 00173 ratio = electron_mass_c2/mass; 00174 isInitialised = true; 00175 } 00176 }
G4bool G4MuIonisation::IsApplicable | ( | const G4ParticleDefinition & | p | ) | [virtual] |
Implements G4VEnergyLossProcess.
Definition at line 119 of file G4MuIonisation.cc.
References G4ParticleDefinition::GetPDGCharge(), and G4ParticleDefinition::GetPDGMass().
00120 { 00121 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV); 00122 }
G4double G4MuIonisation::MinPrimaryEnergy | ( | const G4ParticleDefinition * | p, | |
const G4Material * | , | |||
G4double | cut | |||
) | [virtual] |
Reimplemented from G4VEnergyLossProcess.
Definition at line 126 of file G4MuIonisation.cc.
References G4InuclParticleNames::gam.
00129 { 00130 G4double x = 0.5*cut/electron_mass_c2; 00131 G4double gam = x*ratio + std::sqrt((1. + x)*(1. + x*ratio*ratio)); 00132 return mass*(gam - 1.0); 00133 }
void G4MuIonisation::PrintInfo | ( | ) | [virtual] |