#include <G4hhIonisation.hh>
Inheritance diagram for G4hhIonisation:
Public Member Functions | |
G4hhIonisation (const G4String &name="hhIoni") | |
virtual | ~G4hhIonisation () |
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 61 of file G4hhIonisation.hh.
G4hhIonisation::G4hhIonisation | ( | const G4String & | name = "hhIoni" |
) |
Definition at line 64 of file G4hhIonisation.cc.
References fIonisation, G4VProcess::SetProcessSubType(), G4VEnergyLossProcess::SetStepFunction(), and G4VProcess::SetVerboseLevel().
00065 : G4VEnergyLossProcess(name), 00066 theParticle(0), 00067 theBaseParticle(0), 00068 isInitialised(false) 00069 { 00070 SetStepFunction(0.1, 0.1*mm); 00071 SetVerboseLevel(1); 00072 SetProcessSubType(fIonisation); 00073 mass = 0.0; 00074 ratio = 0.0; 00075 flucModel = 0; 00076 }
G4hhIonisation::~G4hhIonisation | ( | ) | [virtual] |
void G4hhIonisation::InitialiseEnergyLossProcess | ( | const G4ParticleDefinition * | , | |
const G4ParticleDefinition * | ||||
) | [protected, virtual] |
Implements G4VEnergyLossProcess.
Definition at line 105 of file G4hhIonisation.cc.
References G4VEnergyLossProcess::AddEmModel(), G4Electron::Electron(), G4cout, G4endl, G4lrint(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), G4VProcess::GetProcessName(), G4LossTableManager::Instance(), G4VEnergyLossProcess::MaxKinEnergy(), G4VEnergyLossProcess::MinKinEnergy(), G4VEnergyLossProcess::SetBaseParticle(), G4VEnergyLossProcess::SetDEDXBinning(), G4VEmModel::SetHighEnergyLimit(), G4VEmModel::SetLowEnergyLimit(), G4VEnergyLossProcess::SetMaxKinEnergy(), G4VEnergyLossProcess::SetMinKinEnergy(), G4VEnergyLossProcess::SetSecondaryParticle(), and G4VProcess::verboseLevel.
00107 { 00108 if(isInitialised) { return; } 00109 00110 theParticle = part; 00111 if(bpart) { 00112 G4cout << "G4hhIonisation::InitialiseEnergyLossProcess WARNING: no " 00113 << "base particle should be defined for the process " 00114 << GetProcessName() << G4endl; 00115 } 00116 SetBaseParticle(0); 00117 SetSecondaryParticle(G4Electron::Electron()); 00118 mass = theParticle->GetPDGMass(); 00119 ratio = electron_mass_c2/mass; 00120 G4double eth = 2*MeV*mass/proton_mass_c2; 00121 flucModel = new G4IonFluctuations(); 00122 00123 G4double emin = std::min(MinKinEnergy(), 0.1*eth); 00124 G4double emax = std::max(MaxKinEnergy(), 100*eth); 00125 00126 SetMinKinEnergy(emin); 00127 SetMaxKinEnergy(emax); 00128 G4int bin = G4lrint(G4LossTableManager::Instance()->GetNumberOfBinsPerDecade() 00129 *std::log10(emax/emin)); 00130 SetDEDXBinning(bin); 00131 00132 G4VEmModel* em = 0; 00133 if(part->GetPDGCharge() > 0.0) { em = new G4BraggNoDeltaModel(); } 00134 else { em = new G4ICRU73NoDeltaModel(); } 00135 em->SetLowEnergyLimit(emin); 00136 em->SetHighEnergyLimit(eth); 00137 AddEmModel(1, em, flucModel); 00138 00139 em = new G4BetheBlochNoDeltaModel(); 00140 em->SetLowEnergyLimit(eth); 00141 em->SetHighEnergyLimit(emax); 00142 AddEmModel(1, em, flucModel); 00143 00144 if(verboseLevel>1) { 00145 G4cout << "G4hhIonisation is initialised" << G4endl; 00146 } 00147 isInitialised = true; 00148 }
G4bool G4hhIonisation::IsApplicable | ( | const G4ParticleDefinition & | p | ) | [virtual] |
Implements G4VEnergyLossProcess.
Definition at line 85 of file G4hhIonisation.cc.
References G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), and G4ParticleDefinition::IsShortLived().
00086 { 00087 return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 100.0*MeV && 00088 !p.IsShortLived()); 00089 }
G4double G4hhIonisation::MinPrimaryEnergy | ( | const G4ParticleDefinition * | p, | |
const G4Material * | , | |||
G4double | cut | |||
) | [virtual] |
Reimplemented from G4VEnergyLossProcess.
Definition at line 93 of file G4hhIonisation.cc.
References G4InuclParticleNames::gam.
00096 { 00097 G4double x = 0.5*cut/electron_mass_c2; 00098 G4double y = electron_mass_c2/mass; 00099 G4double gam = x*y + std::sqrt((1. + x)*(1. + x*y*y)); 00100 return mass*(gam - 1.0); 00101 }
void G4hhIonisation::PrintInfo | ( | ) | [virtual] |
Implements G4VEnergyLossProcess.
Definition at line 152 of file G4hhIonisation.cc.
References G4cout, and G4endl.