#include <ExthIonisation.h>
Public Member Functions | |
ExthIonisation (const G4String &name="ExthIoni") | |
ExthIonisation (const G4String &name="ExthIoni") | |
G4bool | IsApplicable (const G4ParticleDefinition &p) |
G4bool | IsApplicable (const G4ParticleDefinition &p) |
G4double | MinPrimaryEnergy (const G4ParticleDefinition *p, const G4Material *, G4double cut) |
G4double | MinPrimaryEnergy (const G4ParticleDefinition *p, const G4Material *, G4double cut) |
virtual void | PrintInfo () |
virtual void | PrintInfo () |
~ExthIonisation () | |
~ExthIonisation () | |
Protected Member Functions | |
virtual void | InitialiseEnergyLossProcess (const G4ParticleDefinition *, const G4ParticleDefinition *) |
virtual void | InitialiseEnergyLossProcess (const G4ParticleDefinition *, const G4ParticleDefinition *) |
std::vector< G4DynamicParticle * > * | SecondariesPostStep (G4VEmModel *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double &) |
std::vector< G4DynamicParticle * > * | SecondariesPostStep (G4VEmModel *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double &) |
Private Member Functions | |
ExthIonisation (const ExthIonisation &) | |
ExthIonisation (const ExthIonisation &) | |
ExthIonisation & | operator= (const ExthIonisation &right) |
ExthIonisation & | operator= (const ExthIonisation &right) |
Private Attributes | |
G4double | eth |
G4VEmFluctuationModel * | flucModel |
G4VEmFluctuationModel * | flucModel |
G4bool | isInitialised |
G4double | mass |
G4double | ratio |
const G4ParticleDefinition * | theBaseParticle |
const G4ParticleDefinition * | theBaseParticle |
const G4ParticleDefinition * | theParticle |
const G4ParticleDefinition * | theParticle |
|
00094 : G4VEnergyLossProcess(name), 00095 theParticle(0), 00096 theBaseParticle(0), 00097 isInitialised(false) 00098 { 00099 SetDEDXBinning(120); 00100 SetLambdaBinning(120); 00101 SetMinKinEnergy(0.1*keV); 00102 SetMaxKinEnergy(100.0*TeV); 00103 SetVerboseLevel(0); 00104 SetLossFluctuations(false); 00105 mass = 0.0; 00106 ratio = 0.0; 00107 }
|
|
00112 {}
|
|
|
|
|
|
|
|
|
|
|
|
00118 { 00119 if(isInitialised) return; 00120 00121 theParticle = part; 00122 00123 if(part == bpart || part == G4Proton::Proton()) theBaseParticle = 0; 00124 else if(bpart == 0) theBaseParticle = G4Proton::Proton(); 00125 else theBaseParticle = bpart; 00126 00127 SetBaseParticle(theBaseParticle); 00128 SetSecondaryParticle(G4Electron::Electron()); 00129 mass = theParticle->GetPDGMass(); 00130 ratio = electron_mass_c2/mass; 00131 00132 G4VEmModel* em = new G4BraggModel(); 00133 em->SetLowEnergyLimit(0.1*keV); 00134 eth = 2.0*MeV*mass/proton_mass_c2; 00135 em->SetHighEnergyLimit(eth); 00136 00137 flucModel = new G4UniversalFluctuation(); 00138 00139 AddEmModel(1, em, flucModel); 00140 G4VEmModel* em1 = new G4BetheBlochModel(); 00141 em1->SetLowEnergyLimit(eth); 00142 em1->SetHighEnergyLimit(100.0*TeV); 00143 AddEmModel(2, em1, flucModel); 00144 00145 SetStepFunction(0.2, 1.0*mm); 00146 00147 isInitialised = true; 00148 }
|
|
|
|
00137 {
00138 return (p.GetPDGCharge() != 0.0 &&
00139 p.GetPDGMass() > 10.0*MeV &&
00140 !p.IsShortLived());
00141 }
|
|
|
|
00148 { 00149 G4double x = 0.5*cut/electron_mass_c2; 00150 G4double y = electron_mass_c2/mass; 00151 G4double g = x*y + sqrt((1. + x)*(1. + x*y*y)); 00152 return mass*(g - 1.0); 00153 }
|
|
|
|
|
|
|
|
00153 { 00154 G4cout << " Bether-Bloch model for Escaled > 2 MeV, " 00155 << "parametrisation of Bragg peak below, " 00156 << "Integral mode " << IsIntegral() 00157 << G4endl; 00158 }
|
|
|
|
00161 { 00162 // return model->SampleSecondaries(couple, dp, tcut); 00163 return NULL; 00164 }//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|