#include <G4ionIonisation.hh>
Inheritance diagram for G4ionIonisation:
Public Member Functions | |
G4ionIonisation (const G4String &name="ionIoni") | |
virtual | ~G4ionIonisation () |
virtual G4bool | IsApplicable (const G4ParticleDefinition &p) |
virtual void | PrintInfo () |
void | AddStoppingData (G4int Z, G4int A, const G4String &materialName, G4PhysicsVector *dVector) |
void | ActivateStoppingData (G4bool) |
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 78 of file G4ionIonisation.hh.
G4ionIonisation::G4ionIonisation | ( | const G4String & | name = "ionIoni" |
) |
Definition at line 83 of file G4ionIonisation.cc.
References G4Electron::Electron(), G4LossTableManager::EmCorrections(), fIonisation, G4LossTableManager::Instance(), G4VEnergyLossProcess::SetLinearLossLimit(), G4VProcess::SetProcessSubType(), G4VEnergyLossProcess::SetSecondaryParticle(), and G4VEnergyLossProcess::SetStepFunction().
00084 : G4VEnergyLossProcess(name), 00085 theParticle(0), 00086 isInitialised(false), 00087 stopDataActive(true) 00088 { 00089 SetLinearLossLimit(0.02); 00090 SetStepFunction(0.1, 0.01*mm); 00091 SetProcessSubType(fIonisation); 00092 SetSecondaryParticle(G4Electron::Electron()); 00093 corr = G4LossTableManager::Instance()->EmCorrections(); 00094 eth = 2*MeV; 00095 }
G4ionIonisation::~G4ionIonisation | ( | ) | [virtual] |
void G4ionIonisation::ActivateStoppingData | ( | G4bool | ) | [inline] |
void G4ionIonisation::AddStoppingData | ( | G4int | Z, | |
G4int | A, | |||
const G4String & | materialName, | |||
G4PhysicsVector * | dVector | |||
) |
Definition at line 181 of file G4ionIonisation.cc.
References G4EmCorrections::AddStoppingData().
00184 { 00185 corr->AddStoppingData(Z, A, mname, dVector); 00186 }
G4double G4ionIonisation::BetheBlochEnergyThreshold | ( | ) | [inline, protected] |
void G4ionIonisation::InitialiseEnergyLossProcess | ( | const G4ParticleDefinition * | , | |
const G4ParticleDefinition * | ||||
) | [protected, virtual] |
Implements G4VEnergyLossProcess.
Definition at line 122 of file G4ionIonisation.cc.
References G4VEnergyLossProcess::AddEmModel(), G4VEnergyLossProcess::EmModel(), G4VEnergyLossProcess::FluctModel(), G4GenericIon::GenericIon(), G4ParticleDefinition::GetPDGMass(), G4VEmModel::HighEnergyLimit(), G4EmCorrections::InitialiseForNewRun(), G4VEnergyLossProcess::MaxKinEnergy(), G4VEnergyLossProcess::MinKinEnergy(), G4VEnergyLossProcess::SetBaseParticle(), G4VEnergyLossProcess::SetEmModel(), G4VEnergyLossProcess::SetFluctModel(), G4VEmModel::SetHighEnergyLimit(), and G4VEmModel::SetLowEnergyLimit().
00125 { 00126 const G4ParticleDefinition* ion = G4GenericIon::GenericIon(); 00127 00128 if(!isInitialised) { 00129 00130 theParticle = part; 00131 00132 // define base particle 00133 const G4ParticleDefinition* theBaseParticle = 0; 00134 00135 if(part == ion) { theBaseParticle = 0; } 00136 else if(bpart == 0) { theBaseParticle = ion; } 00137 else { theBaseParticle = bpart; } 00138 00139 SetBaseParticle(theBaseParticle); 00140 00141 if (!EmModel(1)) { SetEmModel(new G4BraggIonModel(), 1); } 00142 EmModel(1)->SetLowEnergyLimit(MinKinEnergy()); 00143 00144 // model limit defined for protons 00145 eth = (EmModel(1)->HighEnergyLimit())*part->GetPDGMass()/proton_mass_c2; 00146 EmModel(1)->SetHighEnergyLimit(eth); 00147 00148 if (!FluctModel()) { SetFluctModel(new G4IonFluctuations()); } 00149 AddEmModel(1, EmModel(1), FluctModel()); 00150 00151 if (!EmModel(2)) { SetEmModel(new G4BetheBlochModel(),2); } 00152 EmModel(2)->SetLowEnergyLimit(eth); 00153 EmModel(2)->SetHighEnergyLimit(MaxKinEnergy()); 00154 AddEmModel(2, EmModel(2), FluctModel()); 00155 00156 // Add ion stoping tables for Generic Ion 00157 if(part == ion) { 00158 G4WaterStopping ws(corr); 00159 corr->SetIonisationModels(EmModel(1),EmModel(2)); 00160 } 00161 isInitialised = true; 00162 } 00163 // reinitialisation of corrections for the new run 00164 if(part == ion) { corr->InitialiseForNewRun(); } 00165 }
G4bool G4ionIonisation::IsApplicable | ( | const G4ParticleDefinition & | p | ) | [virtual] |
Implements G4VEnergyLossProcess.
Definition at line 104 of file G4ionIonisation.cc.
References G4ParticleDefinition::GetParticleType(), G4ParticleDefinition::GetPDGCharge(), and G4ParticleDefinition::IsShortLived().
00105 { 00106 return (p.GetPDGCharge() != 0.0 && !p.IsShortLived() && 00107 p.GetParticleType() == "nucleus"); 00108 }
G4double G4ionIonisation::MinPrimaryEnergy | ( | const G4ParticleDefinition * | p, | |
const G4Material * | , | |||
G4double | cut | |||
) | [protected, virtual] |
Reimplemented from G4VEnergyLossProcess.
Definition at line 112 of file G4ionIonisation.cc.
References G4ParticleDefinition::GetPDGMass().
00115 { 00116 return 00117 p->GetPDGMass()*(std::sqrt(1. + 0.5*cut/CLHEP::electron_mass_c2) - 1.0); 00118 }
void G4ionIonisation::PrintInfo | ( | ) | [virtual] |
Implements G4VEnergyLossProcess.
Definition at line 169 of file G4ionIonisation.cc.
References G4cout, G4endl, G4GenericIon::GenericIon(), and G4EmCorrections::GetNumberOfStoppingVectors().
00170 { 00171 if (stopDataActive && G4GenericIon::GenericIon() == theParticle) { 00172 G4cout << " Stopping Power data for " 00173 << corr->GetNumberOfStoppingVectors() 00174 << " ion/material pairs " 00175 << G4endl; 00176 } 00177 }