#include <ExtMuIonisation.h>
Public Member Functions | |
ExtMuIonisation (const G4String &name="ExtmuIoni") | |
ExtMuIonisation (const G4String &name="ExtmuIoni") | |
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) |
void | PrintInfo () |
void | PrintInfo () |
std::vector< G4DynamicParticle * > * | SecondariesPostStep (G4VEmModel *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double &tcut) |
std::vector< G4DynamicParticle * > * | SecondariesPostStep (G4VEmModel *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double &tcut) |
virtual | ~ExtMuIonisation () |
virtual | ~ExtMuIonisation () |
Protected Member Functions | |
virtual void | InitialiseEnergyLossProcess (const G4ParticleDefinition *, const G4ParticleDefinition *) |
virtual void | InitialiseEnergyLossProcess (const G4ParticleDefinition *, const G4ParticleDefinition *) |
Private Member Functions | |
ExtMuIonisation (const ExtMuIonisation &) | |
ExtMuIonisation (const ExtMuIonisation &) | |
ExtMuIonisation & | operator= (const ExtMuIonisation &right) |
ExtMuIonisation & | operator= (const ExtMuIonisation &right) |
Private Attributes | |
G4VEmFluctuationModel * | flucModel |
G4VEmFluctuationModel * | flucModel |
G4ParticleChangeForLoss * | fParticleChange |
G4ParticleChangeForLoss * | fParticleChange |
G4bool | isInitialised |
G4double | mass |
G4double | ratio |
const G4ParticleDefinition * | theBaseParticle |
const G4ParticleDefinition * | theBaseParticle |
const G4ParticleDefinition * | theParticle |
const G4ParticleDefinition * | theParticle |
|
00092 : G4VEnergyLossProcess(name), 00093 theParticle(0), 00094 theBaseParticle(0), 00095 isInitialised(false) 00096 { 00097 SetDEDXBinning(120); 00098 SetLambdaBinning(120); 00099 SetMinKinEnergy(0.1*keV); 00100 SetMaxKinEnergy(100.0*TeV); 00101 SetLossFluctuations(false); 00102 }
|
|
00107 {}
|
|
|
|
|
|
|
|
|
|
|
|
00113 { 00114 if(!isInitialised) 00115 { 00116 theParticle = part; 00117 theBaseParticle = bpart; 00118 00119 mass = theParticle->GetPDGMass(); 00120 SetSecondaryParticle(G4Electron::Electron()); 00121 00122 flucModel = new G4UniversalFluctuation(); 00123 00124 G4VEmModel* em = new G4BraggModel(); 00125 em->SetLowEnergyLimit(0.1*keV); 00126 em->SetHighEnergyLimit(0.2*MeV); 00127 AddEmModel(1, em, flucModel); 00128 G4VEmModel* em1 = new G4BetheBlochModel(); 00129 em1->SetLowEnergyLimit(0.2*MeV); 00130 em1->SetHighEnergyLimit(1.0*GeV); 00131 AddEmModel(2, em1, flucModel); 00132 G4VEmModel* em2 = new G4MuBetheBlochModel(); 00133 em2->SetLowEnergyLimit(1.0*GeV); 00134 em2->SetHighEnergyLimit(100.0*TeV); 00135 AddEmModel(3, em2, flucModel); 00136 SetStepFunction(0.2, 1.0*mm); 00137 ratio = electron_mass_c2/mass; 00138 isInitialised = true; 00139 } 00140 }
|
|
00099 {return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV);};
|
|
00099 {return (p.GetPDGCharge() != 0.0 && p.GetPDGMass() > 10.0*MeV);};
|
|
|
|
00151 { 00152 G4double x = 0.5*cut/electron_mass_c2; 00153 G4double g = x*ratio + sqrt((1. + x)*(1. + x*ratio*ratio)); 00154 return mass*(g - 1.0); 00155 }
|
|
|
|
|
|
|
|
00145 { 00146 G4cout << " Bether-Bloch model for E > 0.2 MeV, " 00147 << "parametrisation of Bragg peak below, " 00148 << G4endl; 00149 G4cout << " radiative corrections for E > 1 GeV" << G4endl; 00150 }
|
|
|
|
00200 { 00201 // return model->SampleSecondaries(couple, dp, tcut); 00202 return NULL;//No secondaries, for Track Extrapolation.(Wang L.L.) 00203 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|