#include <G4DNAIonisation.hh>
Inheritance diagram for G4DNAIonisation:
Public Member Functions | |
G4DNAIonisation (const G4String &processName="DNAIonisation", G4ProcessType type=fElectromagnetic) | |
virtual | ~G4DNAIonisation () |
virtual G4bool | IsApplicable (const G4ParticleDefinition &) |
virtual void | PrintInfo () |
Protected Member Functions | |
virtual void | InitialiseProcess (const G4ParticleDefinition *) |
Definition at line 45 of file G4DNAIonisation.hh.
G4DNAIonisation::G4DNAIonisation | ( | const G4String & | processName = "DNAIonisation" , |
|
G4ProcessType | type = fElectromagnetic | |||
) |
Definition at line 35 of file G4DNAIonisation.cc.
References G4VProcess::SetProcessSubType().
00036 :G4VEmProcess (processName, type), 00037 isInitialised(false) 00038 { 00039 SetProcessSubType(53); 00040 }
G4DNAIonisation::~G4DNAIonisation | ( | ) | [virtual] |
void G4DNAIonisation::InitialiseProcess | ( | const G4ParticleDefinition * | ) | [protected, virtual] |
Implements G4VEmProcess.
Definition at line 71 of file G4DNAIonisation.cc.
References G4VEmProcess::AddEmModel(), G4VEmProcess::EmModel(), G4ParticleDefinition::GetAtomicMass(), G4ParticleDefinition::GetParticleName(), G4VEmProcess::SetBuildTableFlag(), G4VEmProcess::SetEmModel(), G4VEmModel::SetHighEnergyLimit(), and G4VEmModel::SetLowEnergyLimit().
00072 { 00073 if(!isInitialised) 00074 { 00075 isInitialised = true; 00076 SetBuildTableFlag(false); 00077 00078 G4String name = p->GetParticleName(); 00079 00080 if(name == "e-") 00081 { 00082 if(!EmModel()) SetEmModel(new G4DNABornIonisationModel); 00083 EmModel()->SetLowEnergyLimit(11.*eV); 00084 EmModel()->SetHighEnergyLimit(1.*MeV); 00085 00086 AddEmModel(1, EmModel()); 00087 } 00088 00089 if(name == "proton") 00090 { 00091 if(!EmModel(1)) SetEmModel(new G4DNARuddIonisationModel,1); 00092 EmModel(1)->SetLowEnergyLimit(0*eV); 00093 EmModel(1)->SetHighEnergyLimit(500*keV); 00094 00095 if(!EmModel(2)) SetEmModel(new G4DNABornIonisationModel,2); 00096 EmModel(2)->SetLowEnergyLimit(500*keV); 00097 EmModel(2)->SetHighEnergyLimit(100*MeV); 00098 00099 AddEmModel(1, EmModel(1)); 00100 AddEmModel(2, EmModel(2)); 00101 } 00102 00103 if(name == "hydrogen") 00104 { 00105 if(!EmModel()) SetEmModel(new G4DNARuddIonisationModel); 00106 EmModel()->SetLowEnergyLimit(0*eV); 00107 EmModel()->SetHighEnergyLimit(100*MeV); 00108 00109 AddEmModel(1, EmModel()); 00110 } 00111 00112 if(name == "alpha" || name == "alpha+" || name == "helium" ) 00113 { 00114 if(!EmModel()) SetEmModel(new G4DNARuddIonisationModel); 00115 EmModel()->SetLowEnergyLimit(0*keV); 00116 EmModel()->SetHighEnergyLimit(400*MeV); 00117 00118 AddEmModel(1, EmModel()); 00119 } 00120 00121 // Extension to HZE proposed by Z. Francis 00122 00123 if(name == "carbon" || name == "nitrogen" || name == "oxygen" || name == "iron") 00124 { 00125 if(!EmModel()) SetEmModel(new G4DNARuddIonisationExtendedModel); 00126 EmModel()->SetLowEnergyLimit(0*keV); 00127 EmModel()->SetHighEnergyLimit(p->GetAtomicMass()*1e6*MeV); 00128 00129 AddEmModel(1, EmModel()); 00130 } 00131 00132 } 00133 }
G4bool G4DNAIonisation::IsApplicable | ( | const G4ParticleDefinition & | ) | [virtual] |
Implements G4VEmProcess.
Definition at line 49 of file G4DNAIonisation.cc.
References G4Electron::Electron(), G4DNAGenericIonsManager::GetIon(), G4DNAGenericIonsManager::Instance(), and G4Proton::Proton().
00050 { 00051 G4DNAGenericIonsManager *instance; 00052 instance = G4DNAGenericIonsManager::Instance(); 00053 00054 return 00055 ( 00056 &p == G4Electron::Electron() 00057 || &p == G4Proton::Proton() 00058 || &p == instance->GetIon("hydrogen") 00059 || &p == instance->GetIon("alpha++") 00060 || &p == instance->GetIon("alpha+") 00061 || &p == instance->GetIon("helium") 00062 || &p == instance->GetIon("carbon") 00063 || &p == instance->GetIon("nitrogen") 00064 || &p == instance->GetIon("oxygen") 00065 || &p == instance->GetIon("iron") 00066 ); 00067 }
void G4DNAIonisation::PrintInfo | ( | ) | [virtual] |
Implements G4VEmProcess.
Definition at line 137 of file G4DNAIonisation.cc.
References G4VEmProcess::EmModel(), G4cout, G4endl, and G4VEmModel::GetName().
00138 { 00139 if (EmModel(2)) 00140 { 00141 G4cout 00142 << " Total cross sections computed from " 00143 << EmModel(1)->GetName() 00144 << " and " 00145 << EmModel(2)->GetName() 00146 << " models" 00147 << G4endl; 00148 } 00149 else 00150 { 00151 G4cout 00152 << " Total cross sections computed from " 00153 << EmModel()->GetName() 00154 << G4endl; 00155 } 00156 }