120{
121 if (isInitialised) { return; }
122 if (verboseLevel > 3)
123 G4cout <<
"Calling G4DNARuddIonisationExtendedModel::Initialise()" <<
G4endl;
124
125
126 G4String fileProton(
"dna/sigma_ionisation_p_rudd");
127 G4String fileHydrogen(
"dna/sigma_ionisation_h_rudd");
128 G4String fileAlphaPlusPlus(
"dna/sigma_ionisation_alphaplusplus_rudd");
129 G4String fileAlphaPlus(
"dna/sigma_ionisation_alphaplus_rudd");
130 G4String fileHelium(
"dna/sigma_ionisation_he_rudd");
131 G4String fileCarbon(
"dna/sigma_ionisation_c_rudd");
132 G4String fileNitrogen(
"dna/sigma_ionisation_n_rudd");
133 G4String fileOxygen(
"dna/sigma_ionisation_o_rudd");
134 G4String fileSilicon(
"dna/sigma_ionisation_si_rudd");
135 G4String fileIron(
"dna/sigma_ionisation_fe_rudd");
136
138
142 hydrogenDef = instance->
GetIon(
"hydrogen");
144 alphaPlusDef = instance->
GetIon(
"alpha+");
145 heliumDef = instance->
GetIon(
"helium");
146
147 carbonDef = instance->
GetIon(
"carbon");
148 nitrogenDef = instance->
GetIon(
"nitrogen");
149 oxygenDef = instance->
GetIon(
"oxygen");
150 siliconDef = instance->
GetIon(
"silicon");
151 ironDef = instance->
GetIon(
"iron");
152
158
161
162
163
164
165
166 if(pname == "proton") {
167 localMinEnergy = lowEnergyLimitForA[1];
168
169
172
173
174
175 } else if(pname == "hydrogen") {
176
177 localMinEnergy = lowEnergyLimitForA[1];
178
179
182
183
184
185 } else if(pname == "alpha") {
186
187 localMinEnergy = lowEnergyLimitForA[4];
188
189
191 mainTable->
LoadData(fileAlphaPlusPlus);
192
193
194
195 } else if(pname == "alpha+") {
196
197 localMinEnergy = lowEnergyLimitForA[4];
198
199
202
203
204
205 } else if(pname == "helium") {
206
207 localMinEnergy = lowEnergyLimitForA[4];
208
209
212
213
214
215 } else if(pname == "GenericIon") {
216
217 isIon = true;
219 localMinEnergy = lowEnergyLimitForA[5]*massC12/proton_mass_c2;
220
221
224
225 tableData[carbon] = mainTable;
226
227
228
230 tableFile[oxygen] = fileOxygen;
231
232
234 eV, scaleFactor );
236 tableData[oxygen] = tableOxygen;
237
238
239
241 tableFile[nitrogen] = fileNitrogen;
242
243
245 eV, scaleFactor );
246 tableNitrogen->
LoadData(fileNitrogen);
247 tableData[nitrogen] = tableNitrogen;
248
249
250
252 tableFile[silicon] = fileSilicon;
253
254
256 eV, scaleFactor );
257 tableSilicon->
LoadData(fileSilicon);
258 tableData[silicon] = tableSilicon;
259
260
261
263 tableFile[iron] = fileIron;
264
265
266
268 eV, scaleFactor );
270 tableData[iron] = tableIron;
271 }
272
273
274 if( verboseLevel>0 )
275 {
276 G4cout <<
"Rudd ionisation model is initialized " <<
G4endl
277 << "Energy range for model: "
280 << pname
281 << " internal low energy limit E(keV)=" << localMinEnergy / keV
283 }
284
285
287
288
290
292 isInitialised = true;
293}
virtual G4bool LoadData(const G4String &argFileName)
static G4DNAGenericIonsManager * Instance(void)
G4ParticleDefinition * GetIon(const G4String &name)
const std::vector< G4double > * GetNumMolPerVolTableFor(const G4Material *) const
Retrieve a table of molecular densities (number of molecules per unit volume) in the G4 unit system f...
static G4DNAMolecularMaterial * Instance()
G4ParticleChangeForGamma * fParticleChangeForGamma
static G4LossTableManager * Instance()
G4VAtomDeexcitation * AtomDeexcitation()
static G4Material * GetMaterial(const G4String &name, G4bool warning=true)
G4double GetPDGMass() const
static G4Proton * ProtonDefinition()
G4ParticleChangeForGamma * GetParticleChangeForGamma()
G4double LowEnergyLimit() const
G4double HighEnergyLimit() const