#include <G4DNATransformElectronModel.hh>
Inheritance diagram for G4DNATransformElectronModel:
Public Member Functions | |
G4DNATransformElectronModel (const G4ParticleDefinition *p=0, const G4String &nam="DNATransformElectronModel") | |
virtual | ~G4DNATransformElectronModel () |
virtual void | Initialise (const G4ParticleDefinition *, const G4DataVector &) |
virtual G4double | CrossSectionPerVolume (const G4Material *material, const G4ParticleDefinition *p, G4double ekin, G4double emin, G4double emax) |
virtual void | SampleSecondaries (std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy) |
void | SetVerbose (int) |
void | SetEpsilonEnergy (G4double) |
Protected Attributes | |
G4ParticleChangeForGamma * | fParticleChangeForGamma |
Definition at line 51 of file G4DNATransformElectronModel.hh.
G4DNATransformElectronModel::G4DNATransformElectronModel | ( | const G4ParticleDefinition * | p = 0 , |
|
const G4String & | nam = "DNATransformElectronModel" | |||
) |
Definition at line 36 of file G4DNATransformElectronModel.cc.
References fParticleChangeForGamma, G4VEmModel::SetHighEnergyLimit(), and G4VEmModel::SetLowEnergyLimit().
00037 : 00038 G4VEmModel(nam),fIsInitialised(false) 00039 { 00040 fVerboseLevel = 0 ; 00041 SetLowEnergyLimit(0.*eV); 00042 SetHighEnergyLimit(0.025*eV); 00043 fParticleChangeForGamma = 0; 00044 // fNistWater = G4NistManager::Instance()->FindOrBuildMaterial("G4_WATER"); 00045 fpWaterDensity = 0; 00046 fpWaterDensity = 0; 00047 fEpsilon = 0.0001*eV; 00048 }
G4DNATransformElectronModel::~G4DNATransformElectronModel | ( | ) | [virtual] |
G4double G4DNATransformElectronModel::CrossSectionPerVolume | ( | const G4Material * | material, | |
const G4ParticleDefinition * | p, | |||
G4double | ekin, | |||
G4double | emin, | |||
G4double | emax | |||
) | [virtual] |
Reimplemented from G4VEmModel.
Definition at line 83 of file G4DNATransformElectronModel.cc.
References DBL_MAX, G4cout, G4endl, G4Material::GetIndex(), and G4VEmModel::HighEnergyLimit().
00088 { 00089 #if G4VERBOSE 00090 if (fVerboseLevel > 1) 00091 G4cout << "Calling CrossSectionPerVolume() of G4DNATransformElectronModel" << G4endl; 00092 #endif 00093 00094 if(ekin - fEpsilon > HighEnergyLimit()) 00095 { 00096 return 0.0; 00097 } 00098 00099 G4double waterDensity = (*fpWaterDensity)[material->GetIndex()]; 00100 00101 if(waterDensity!= 0.0) 00102 // if (material == nistwater || material->GetBaseMaterial() == nistwater) 00103 { 00104 if (ekin - fEpsilon <= HighEnergyLimit()) 00105 { 00106 return DBL_MAX; 00107 } 00108 } 00109 00110 return 0.0 ; 00111 }
void G4DNATransformElectronModel::Initialise | ( | const G4ParticleDefinition * | , | |
const G4DataVector & | ||||
) | [virtual] |
Implements G4VEmModel.
Definition at line 55 of file G4DNATransformElectronModel.cc.
References G4Electron::ElectronDefinition(), FatalErrorInArgument, fParticleChangeForGamma, G4cout, G4endl, G4Exception(), G4Material::GetMaterial(), G4DNAMolecularMaterial::GetNumMolPerVolTableFor(), G4VEmModel::GetParticleChangeForGamma(), and G4DNAMolecularMaterial::Instance().
00057 { 00058 #ifdef G4VERBOSE 00059 if (fVerboseLevel) 00060 G4cout << "Calling G4DNATransformElectronModel::Initialise()" << G4endl; 00061 #endif 00062 00063 if (particleDefinition != G4Electron::ElectronDefinition()) 00064 { 00065 G4ExceptionDescription exceptionDescription ; 00066 exceptionDescription << "Attempting to calculate cross section for wrong particle"; 00067 G4Exception("G4DNATransformElectronModel::CrossSectionPerVolume","G4DNATransformElectronModel001", 00068 FatalErrorInArgument,exceptionDescription); 00069 return; 00070 } 00071 00072 // Initialize water density pointer 00073 fpWaterDensity = G4DNAMolecularMaterial::Instance()->GetNumMolPerVolTableFor(G4Material::GetMaterial("G4_WATER")); 00074 00075 if(!fIsInitialised) 00076 { 00077 fIsInitialised = true; 00078 fParticleChangeForGamma = GetParticleChangeForGamma(); 00079 } 00080 }
void G4DNATransformElectronModel::SampleSecondaries | ( | std::vector< G4DynamicParticle * > * | , | |
const G4MaterialCutsCouple * | , | |||
const G4DynamicParticle * | , | |||
G4double | tmin, | |||
G4double | maxEnergy | |||
) | [virtual] |
Implements G4VEmModel.
Definition at line 114 of file G4DNATransformElectronModel.cc.
References G4DNAChemistryManager::CreateSolvatedElectron(), fParticleChangeForGamma, fStopAndKill, G4cout, G4endl, G4ParticleChangeForGamma::GetCurrentTrack(), G4DynamicParticle::GetKineticEnergy(), G4DNAChemistryManager::Instance(), G4VParticleChange::ProposeLocalEnergyDeposit(), and G4VParticleChange::ProposeTrackStatus().
00119 { 00120 #if G4VERBOSE 00121 if (fVerboseLevel) 00122 G4cout << "Calling SampleSecondaries() of G4DNATransformElectronModel" << G4endl; 00123 #endif 00124 00125 G4double k = particle->GetKineticEnergy(); 00126 00127 // if (k - fEpsilon <= HighEnergyLimit()) 00128 // { 00129 const G4Track * track = fParticleChangeForGamma->GetCurrentTrack(); 00130 G4DNAChemistryManager::Instance()->CreateSolvatedElectron(track); 00131 fParticleChangeForGamma->ProposeTrackStatus(fStopAndKill); 00132 fParticleChangeForGamma->ProposeLocalEnergyDeposit(k); 00133 // } 00134 }
void G4DNATransformElectronModel::SetEpsilonEnergy | ( | G4double | ) | [inline] |
void G4DNATransformElectronModel::SetVerbose | ( | int | ) | [inline] |
Definition at line 78 of file G4DNATransformElectronModel.hh.
Referenced by G4DNATransformElectronModel(), Initialise(), and SampleSecondaries().