Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4QAOLowEnergyLoss.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// -------------------------------------------------------------
28// GEANT 4 class implementation file
29//
30// History: New Implementation
31//
32// ---------- G4QAOLowEnergyLoss physics process -------
33// by Stephane Chauvie, 5 May 2000
34// Modified:
35//
36// 24/05/2000 MGP Modified to remove compilation warnings on Linux and DEC
37// Introduced sizes of L0, L1, L2 arrays
38// 23/05/2000 MGP Made compliant to design
39// 02/08/2000 V.Ivanchenko Clean up according new design
40// 16/09/2000 S. Chauvie Oscillator for all materials
41// 03/10/2000 V.Ivanchenko CodeWizard clean up
42// 05/11/2000 V.Ivanchenko "Aluminum" - correct name, end of cycle
43// over shells, and two bugs from previous edition
44// 10/05/2001 V.Ivanchenko Clean up againist Linux compilation with -Wall
45// 13/05/2001 S. Chauvie corrected bugs
46// 01/06/2001 V.Ivanchenko replace names by Z, change the validity range
47// from 50 keV to 5 KeV and change sign of the
48// Barkas term
49// 4/06/2001 S. Chauvie Corrected small bugs
50//
51// ************************************************************
52// It is the Quantal Harmonic Oscillator Model for energy loss
53// of slow antiproton
54// ************************************************************
55// --------------------------------------------------------------
56
57//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
58
59#include "G4QAOLowEnergyLoss.hh"
61#include "G4SystemOfUnits.hh"
62#include "G4DynamicParticle.hh"
63#include "G4Material.hh"
65#include "G4AntiProton.hh"
66#include "G4Exp.hh"
67
68//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
69
71 : G4VLowEnergyModel(name)
72{
73 numberOfMaterials = 6;
74 sizeL0 = 67;
75 sizeL1 = 22;
76 sizeL2 = 14;
77}
78
79//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
80
82{;}
83
84//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
85
87 const G4Material* ) const
88{
89 return 2.0*MeV ;
90}
91
92//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
93
95 const G4Material* ) const
96{
97 return 5.0*keV ;
98}
99
100//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
101
103{
104 return 2.0*MeV ;
105}
106
107//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
108
110{
111 return 5.0*keV ;
112}
113
114//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
115
117 const G4Material* material) const
118{
119 G4bool isInCharge = false;
120 G4bool hasMaterial = false;
121
122 if (material->GetNumberOfElements() == 1) hasMaterial = true;
123
125 && hasMaterial) isInCharge = true;
126
127 return isInCharge;
128}
129
130//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
131
133 const G4Material* material) const
134{
135
136 G4bool isInCharge = false;
137 G4bool hasMaterial = false;
138
139 if (material->GetNumberOfElements() == 1) hasMaterial = true;
140
141 if (aParticle == (G4AntiProton::AntiProtonDefinition())
142 && hasMaterial) isInCharge = true;
143 return isInCharge;
144}
145
146//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
147
149 const G4Material* material)
150{
151 G4double zParticle = (G4int)(particle->GetCharge())/eplus;
152
153 G4double energy = particle->GetKineticEnergy() ;
154 G4double eloss = EnergyLoss(material,energy,zParticle) ;
155
156 return eloss ;
157}
158
159//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
160
162 const G4Material* material,
163 G4double kineticEnergy)
164{
165 G4double zParticle = (aParticle->GetPDGCharge())/eplus;
166
167 G4double eloss = EnergyLoss(material,kineticEnergy,zParticle) ;
168
169 return eloss ;
170}
171
172//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
173
174G4double G4QAOLowEnergyLoss::EnergyLoss(const G4Material* material,
175 G4double kineticEnergy,
176 G4double zParticle) const
177{
178 G4int nbOfShell = GetNumberOfShell(material);
179 if(nbOfShell < 1) nbOfShell = 1;
180 G4double dedx=0;
181
182 G4double v = c_light * std::sqrt( 2.0 * kineticEnergy / proton_mass_c2 );
183 G4double coeff = twopi * proton_mass_c2 *
184 (material-> GetTotNbOfElectPerVolume()) /
185 electron_mass_c2 ;
186 G4double fBetheVelocity = fine_structure_const * c_light / v;
187 coeff *= fine_structure_const * fine_structure_const * hbarc_squared /
188 kineticEnergy ;
189
190 G4double l0Term = 0, l1Term = 0, l2Term = 0;
191
192 for (G4int nos = 0 ; nos < nbOfShell ; nos++){
193
194 G4double l0 = 0, l1 = 0, l2 = 0;
195 G4double NormalizedEnergy = ( 2.0 * electron_mass_c2 * v * v ) /
196 ( c_squared * GetShellEnergy(material,nos) );
197
198 G4double shStrength = GetShellStrength(material,nos);
199
200 l0 = GetL0(NormalizedEnergy);
201 l0Term += shStrength * l0;
202
203 l1 = GetL1(NormalizedEnergy);
204 l1Term += shStrength * l1;
205
206 l2 = GetL2(NormalizedEnergy);
207 l2Term += shStrength * l2;
208 }
209
210 dedx = coeff * zParticle * zParticle * (l0Term
211 + zParticle * fBetheVelocity * l1Term
212 + zParticle * zParticle * fBetheVelocity * fBetheVelocity * l2Term);
213
214 return dedx ;
215
216}
217
218//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
219
220G4int G4QAOLowEnergyLoss::GetNumberOfShell(const G4Material* material) const
221{
222 // Set return value from table
223 G4int Z = (G4int)(material->GetZ());
224 G4int nShell = 0;
225
226 // Set return value if in material available from Aahrus
227 for(G4int i=0; i<numberOfMaterials; i++) {
228
229 if(materialAvailable[i] == Z){
230 nShell = nbofShellForMaterial[i];
231 break;
232 }
233 else
234 nShell = fNumberOfShells[Z];
235 }
236 return nShell;
237}
238
239//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
240
241G4double G4QAOLowEnergyLoss::GetShellEnergy(const G4Material* material,
242 G4int nbOfTheShell) const
243{
244 //
245 G4double shellEnergy = alShellEnergy[0];
246
247 if(material->GetZ() == 13) shellEnergy = alShellEnergy[nbOfTheShell];
248 else if(material->GetZ() == 14)shellEnergy = siShellEnergy[nbOfTheShell];
249 else if(material->GetZ() == 29)shellEnergy = cuShellEnergy[nbOfTheShell];
250 else if(material->GetZ() == 73)shellEnergy = taShellEnergy[nbOfTheShell];
251 else if(material->GetZ() == 79)shellEnergy = auShellEnergy[nbOfTheShell];
252 else if(material->GetZ() == 78)shellEnergy = ptShellEnergy[nbOfTheShell];
253 else if (material->GetNumberOfElements() == 1)
254 shellEnergy = GetOscillatorEnergy(material, nbOfTheShell);
255 else
256 {
258 ed << "The model is not available for "
259 << material->GetName()
260 << G4endl;
261 G4Exception("G4QAOLowEnergyLoss::GetShellEnergy()",
262 "em2638",JustWarning,ed);
263 }
264
265 return shellEnergy;
266}
267
268//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
269
270G4double G4QAOLowEnergyLoss::GetOscillatorEnergy(const G4Material* material,
271 G4int nbOfTheShell) const
272{
273
274 const G4Element* element = material->GetElement(0);
275
276 G4int Z = (G4int)(element->GetZ());
277
278 G4double squaredPlasmonEnergy = 28.816 * 28.816 * 1e-6
279 * material->GetDensity()/g/cm3
280 * (Z/element->GetN()) ;
281
282 G4double plasmonTerm = 0.66667 * GetOccupationNumber(Z,nbOfTheShell)
283 * squaredPlasmonEnergy / (Z*Z) ;
284
285 G4double ionTerm = G4Exp(0.5) * (element->GetAtomicShell(nbOfTheShell)) ;
286 ionTerm = ionTerm*ionTerm ;
287
288 G4double oscShellEnergy = std::sqrt( ionTerm + plasmonTerm );
289 return oscShellEnergy;
290}
291
292//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
293
294G4double G4QAOLowEnergyLoss::GetShellStrength(const G4Material* material,
295 G4int nbOfTheShell) const
296{
297 G4double shellStrength = alShellStrength[0];
298
299 if(material->GetZ() == 13) shellStrength = alShellStrength[nbOfTheShell];
300 else if(material->GetZ() == 14)shellStrength =siShellStrength[nbOfTheShell];
301 else if(material->GetZ() == 29)shellStrength =cuShellStrength[nbOfTheShell];
302 else if(material->GetZ() == 73)shellStrength =taShellStrength[nbOfTheShell];
303 else if(material->GetZ() == 79)shellStrength =auShellStrength[nbOfTheShell];
304 else if(material->GetZ() == 78)shellStrength =ptShellStrength[nbOfTheShell];
305 else if (material->GetNumberOfElements() == 1){
306 G4int Z = (G4int)(material->GetZ());
307 shellStrength = GetOccupationNumber(Z,nbOfTheShell) / Z ;}
308 else
309 {
311 ed << "The model is not available for "
312 << material->GetName()
313 << G4endl;
314 G4Exception("G4QAOLowEnergyLoss::GetShellStrength()",
315 "em2639",JustWarning,ed);
316 }
317 return shellStrength;
318}
319
320//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
321
322G4double G4QAOLowEnergyLoss::GetOccupationNumber(G4int Z, G4int ShellNb) const
323{
324
325 G4int indice = ShellNb ;
326 for (G4int z = 1 ; z < Z ; z++) {indice += fNumberOfShells[z];}
327
328 return nbOfElectronPerSubShell[indice+1];
329}
330
331//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
332
333G4double G4QAOLowEnergyLoss::GetL0(G4double normEnergy) const
334{
335 G4int n;
336
337 for(n = 0; n < sizeL0; n++) {
338 if( normEnergy < L0[n][0] ) break;
339 }
340 if(0 == n) n = 1 ;
341 if(n >= sizeL0) n = sizeL0 - 1 ;
342
343 G4double l0 = L0[n][1];
344 G4double l0p = L0[n-1][1];
345 G4double bethe = l0p + (l0 - l0p) * ( normEnergy - L0[n-1][0]) /
346 (L0[n][0] - L0[n-1][0]);
347 return bethe ;
348}
349
350//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
351
352G4double G4QAOLowEnergyLoss::GetL1(G4double normEnergy) const
353{
354 G4int n;
355
356 for(n = 0; n < sizeL1; n++) {
357 if( normEnergy < L1[n][0] ) break;
358 }
359 if(0 == n) n = 1 ;
360 if(n >= sizeL1) n = sizeL1 - 1 ;
361
362 G4double l1 = L1[n][1];
363 G4double l1p = L1[n-1][1];
364 G4double barkas= l1p + (l1 - l1p) * ( normEnergy - L1[n-1][0]) /
365 (L1[n][0] - L1[n-1][0]);
366 return barkas;
367}
368
369//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
370
371G4double G4QAOLowEnergyLoss::GetL2(G4double normEnergy) const
372{
373 G4int n;
374 for(n = 0; n < sizeL2; n++) {
375 if( normEnergy < L2[n][0] ) break;
376 }
377 if(0 == n) n = 1 ;
378 if(n >= sizeL2) n = sizeL2 - 1 ;
379
380 G4double l2 = L2[n][1];
381 G4double l2p = L2[n-1][1];
382 G4double bloch = l2p + (l2 - l2p) * ( normEnergy - L2[n-1][0]) /
383 (L2[n][0] - L2[n-1][0]);
384 return bloch;
385}
386
387//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
388
389const G4int G4QAOLowEnergyLoss::materialAvailable[6] = {13,14,29,73,79,78};
390const G4int G4QAOLowEnergyLoss::nbofShellForMaterial[6] = {3,3,4,6,6,6 };
391
392const G4double G4QAOLowEnergyLoss::alShellEnergy[3] ={ 2795e-6, 202e-6, 16.9e-6};
393const G4double G4QAOLowEnergyLoss::alShellStrength[3]={ 0.1349, 0.6387, 0.2264};
394const G4double G4QAOLowEnergyLoss::siShellEnergy[3] ={ 3179e-6, 249e-6, 20.3e-6 };
395const G4double G4QAOLowEnergyLoss::siShellStrength[3]={ 0.1222, 0.5972, 0.2806};
396const G4double G4QAOLowEnergyLoss::cuShellEnergy[4] ={ 16931e-6, 1930e-6, 199e-6, 39.6e-6};
397const G4double G4QAOLowEnergyLoss::cuShellStrength[4]={ 0.0505, 0.2561, 0.4913, 0.2021};
398const G4double G4QAOLowEnergyLoss::taShellEnergy[6] ={ 88926e-6, 18012e-6, 3210e-6, 575e-6, 108.7e-6, 30.8e-6};
399const G4double G4QAOLowEnergyLoss::taShellStrength[6]={ 0.0126, 0.0896, 0.2599, 0.3413, 0.2057, 0.0908};
400const G4double G4QAOLowEnergyLoss::auShellEnergy[6]={ 96235e-6, 25918e-6, 4116e-6, 599e-6, 87.3e-6, 36.9e-6};
401const G4double G4QAOLowEnergyLoss::auShellStrength[6]={ 0.0139, 0.0803, 0.2473, 0.423, 0.1124, 0.1231};
402const G4double G4QAOLowEnergyLoss::ptShellEnergy[6]={ 95017e-6, 25590e-6, 4063e-6, 576e-6, 81.9e-6, 31.4e-6};
403const G4double G4QAOLowEnergyLoss::ptShellStrength[6]={ 0.0129, 0.0745, 0.2295, 0.4627, 0.1324, 0.0879};
404
405
406const G4double G4QAOLowEnergyLoss::L0[67][2] =
407{
408 {0.00, 0.000001},
409 {0.10, 0.000001},
410 {0.12, 0.00001},
411 {0.14, 0.00005},
412 {0.16, 0.00014},
413 {0.18, 0.00030},
414 {0.20, 0.00057},
415 {0.25, 0.00189},
416 {0.30, 0.00429},
417 {0.35, 0.00784},
418 {0.40, 0.01248},
419 {0.45, 0.01811},
420 {0.50, 0.02462},
421 {0.60, 0.03980},
422 {0.70, 0.05731},
423 {0.80, 0.07662},
424 {0.90, 0.09733},
425 {1.00, 0.11916},
426 {1.20, 0.16532},
427 {1.40, 0.21376},
428 {1.60, 0.26362},
429 {1.80, 0.31428},
430 {2.00, 0.36532},
431 {2.50, 0.49272},
432 {3.00, 0.61765},
433 {3.50, 0.73863},
434 {4.00, 0.85496},
435 {4.50, 0.96634},
436 {5.00, 1.07272},
437 {6.00, 1.27086},
438 {7.00, 1.45075},
439 {8.00, 1.61412},
440 {9.00, 1.76277},
441 {10.00, 1.89836},
442 {12.00, 2.13625},
443 {14.00, 2.33787},
444 {16.00, 2.51093},
445 {18.00, 2.66134},
446 {20.00, 2.79358},
447 {25.00, 3.06539},
448 {30.00, 3.27902},
449 {35.00, 3.45430},
450 {40.00, 3.60281},
451 {45.00, 3.73167},
452 {50.00, 3.84555},
453 {60.00, 4.04011},
454 {70.00, 4.20264},
455 {80.00, 4.34229},
456 {90.00, 4.46474},
457 {100.00, 4.57378},
458 {120.00, 4.76155},
459 {140.00, 4.91953},
460 {160.00, 5.05590},
461 {180.00, 5.17588},
462 {200.00, 5.28299},
463 {250.00, 5.50925},
464 {300.00, 5.69364},
465 {350.00, 5.84926},
466 {400.00, 5.98388},
467 {450.00, 6.10252},
468 {500.00, 6.20856},
469 {600.00, 6.39189},
470 {700.00, 6.54677},
471 {800.00, 6.68084},
472 {900.00, 6.79905},
473 {1000.00, 6.90474}
474};
475
476const G4double G4QAOLowEnergyLoss::L1[22][2] =
477{
478 {0.00, -0.000001},
479 {0.10, -0.00001},
480 {0.20, -0.00049},
481 {0.30, -0.00084},
482 {0.40, 0.00085},
483 {0.50, 0.00519},
484 {0.60, 0.01198},
485 {0.70, 0.02074},
486 {0.80, 0.03133},
487 {0.90, 0.04369},
488 {1.00, 0.06035},
489 {2.00, 0.24023},
490 {3.00, 0.44284},
491 {4.00, 0.62012},
492 {5.00, 0.77031},
493 {6.00, 0.90390},
494 {7.00, 1.02705},
495 {8.00, 1.10867},
496 {9.00, 1.17546},
497 {10.00, 1.21599},
498 {15.00, 1.24349},
499 {20.00, 1.16752}
500};
501
502const G4double G4QAOLowEnergyLoss::L2[14][2] =
503{
504 {0.00, 0.000001},
505 {0.10, 0.00001},
506 {0.20, 0.00000},
507 {0.40, -0.00120},
508 {0.60, -0.00036},
509 {0.80, 0.00372},
510 {1.00, 0.01298},
511 {2.00, 0.08296},
512 {4.00, 0.21953},
513 {6.00, 0.23903},
514 {8.00, 0.20893},
515 {10.00, 0.10879},
516 {20.00, -0.88409},
517 {40.00, -1.13902}
518};
519
520const G4int G4QAOLowEnergyLoss::nbOfElectronPerSubShell[1540] =
521{
522 0, // consistency with G4AtomicShells
523 1,//------ H
524 2,//------ He
525 2, 1,//------ Li
526 2, 2,//------ Be
527 2, 2, 1,//------ B
528 2, 2, 2,//------ C
529 2, 2, 2, 1,//------ N
530 2, 2, 2, 2,//------ O
531 2, 2, 5,//------ F
532 2, 2, 2, 4,//------ Ne
533 2, 2, 2, 4, 1,//------ Na
534 2, 2, 2, 4, 2,//------ Mg
535 2, 2, 2, 4, 2, 1,//------ Al
536 2, 2, 2, 4, 2, 2,//------ Si
537 2, 2, 2, 4, 2, 3,//------ P
538 2, 2, 2, 4, 2, 4,//------
539 2, 2, 2, 4, 2, 5,//------
540 2, 2, 2, 4, 2, 2, 4,//------
541 2, 2, 2, 4, 2, 2, 4, 1,//------
542 2, 2, 2, 4, 2, 2, 4, 2,//------
543 2, 2, 2, 4, 2, 2, 4, 1, 2,//------
544 2, 2, 2, 4, 2, 2, 4, 2, 2,//------
545 2, 2, 2, 4, 2, 2, 4, 3, 2,//------
546 2, 2, 2, 4, 2, 2, 4, 4, 2,//------
547 2, 2, 2, 4, 2, 2, 4, 5, 2,//------
548 2, 2, 2, 4, 2, 2, 4, 6, 2,//------
549 2, 2, 2, 4, 2, 2, 4, 7, 2,//------
550 2, 2, 2, 4, 2, 2, 4, 4, 4, 2,//------
551 2, 2, 2, 4, 2, 2, 4, 4, 5, 2,//------
552 2, 2, 2, 4, 2, 2, 4, 4, 6, 2,//------
553 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 1,//------
554 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2,//------
555 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 3,//------
556 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 4,//------
557 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 5,//------
558 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4,//------
559 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 1,//------
560 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 2,//------
561 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 1, 2,//------
562 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 2, 2,//------
563 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 3, 2,//------
564 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 2,//------
565 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 5, 2,//------
566 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 6, 2,//------
567 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 7, 2,//------
568 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 4, 2,//------
569 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 5, 2,//------
570 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2,//------
571 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 1,//------
572 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2,//------
573 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 3,//------
574 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 4,//------
575 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 5,//------
576 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4,//------
577 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 1,//------
578 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 2,//------
579 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 1, 2,//------
580 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 2, 4, 2,//------
581 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 3, 2, 2, 4, 2,//------
582 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 4, 2, 2, 4, 2,//------
583 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 5, 2, 2, 4, 2,//------
584 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 2, 2, 4, 2,//------
585 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 7, 2, 2, 4, 2,//------
586 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 7, 2, 2, 4, 1, 2,//------
587 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 9, 2, 2, 4, 2,//------
588 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 10, 2, 2, 4, 2,//------
589 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 11, 2, 2, 4, 2,//------
590 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 12, 2, 2, 4, 2,//------
591 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 13, 2, 2, 4, 2,//------
592 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 2,//------
593 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 1, 2,//------
594 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 2, 2,//------
595 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 3, 2,//------
596 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 2,//------
597 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 5, 2,//------
598 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 6, 2,//------
599 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 7, 2,//------
600 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 9, 1,//------
601 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 1,//------
602 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2,//------
603 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 1,//------
604 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2,//------
605 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 3,//------
606 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 4,//------
607 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 3,//------
608 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4,//------
609 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4, 1,//------
610 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4, 2,//------
611 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4, 1, 2,//------
612 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4, 2, 2,//------
613 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 2, 4, 1, 2,//------
614 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 3, 2, 2, 4, 1, 2,//------
615 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 4, 2, 2, 4, 1, 2,//------
616 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 6, 2, 2, 4, 2,//------
617 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 7, 2, 2, 4, 2,//------
618 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 7, 2, 2, 4, 1, 2,//------
619 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 8, 2, 2, 4, 1, 2,//------
620 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 10, 2, 2, 4, 2,//------
621 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 11, 2, 2, 4, 2,//------
622 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 12, 2, 2, 4, 2 //-----
623};
624
625const G4int G4QAOLowEnergyLoss::fNumberOfShells[101] =
626{
627 0 , // nonexisting zero element
628
629 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 3 , 4 , // 1 - 10
630
631 5 , 5 , 6 , 6 , 6 , 6 , 6 , 7 , 8 , 8 , // 11 - 20
632
633 9 , 9 , 9 , 9 , 9 , 9 , 9 , 10 , 10 , 10 , // 21 - 30
634
63511 , 11 , 11 , 11 , 11 , 12 , 13 , 13 , 14 , 14 , // 31 - 40
636
63714 , 14 , 14 , 14 , 14 , 15 , 15 , 15 , 16 , 16 , // 41 - 50
638
639// ----------------------------------------------------------
640
64116 , 16 , 16 , 17 , 18 , 18 , 19 , 19 , 19 , 19 , // 51 - 60
642
64319 , 19 , 19 , 20 , 19 , 19 , 19 , 19 , 19 , 20 , // 61 - 70
644
64521 , 21 , 21 , 21 , 21 , 21 , 21 , 21 , 22 , 22 , // 71 - 80
646
64723 , 23 , 23 , 23 , 24 , 24 , 25 , 25 , 26 , 26 , // 81 - 90
648
64927 , 27 , 27 , 26 , 26 , 27 , 27 , 26 , 26 , 26 // 91 - 100
650
651};
@ JustWarning
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:59
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:180
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
#define G4endl
Definition: G4ios.hh:57
static G4AntiProton * AntiProtonDefinition()
Definition: G4AntiProton.cc:87
G4double GetCharge() const
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
G4double GetZ() const
Definition: G4Element.hh:131
G4double GetN() const
Definition: G4Element.hh:135
G4double GetAtomicShell(G4int index) const
Definition: G4Element.cc:372
G4double GetDensity() const
Definition: G4Material.hh:175
const G4Element * GetElement(G4int iel) const
Definition: G4Material.hh:197
G4double GetZ() const
Definition: G4Material.cc:745
size_t GetNumberOfElements() const
Definition: G4Material.hh:181
const G4String & GetName() const
Definition: G4Material.hh:172
G4double GetPDGCharge() const
G4double LowEnergyLimit(const G4ParticleDefinition *aParticle, const G4Material *material) const override
G4double HighEnergyLimit(const G4ParticleDefinition *aParticle, const G4Material *material) const override
G4double TheValue(const G4DynamicParticle *particle, const G4Material *material) override
G4QAOLowEnergyLoss(const G4String &name)
G4bool IsInCharge(const G4DynamicParticle *particle, const G4Material *material) const override