Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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
67//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
68
70 : G4VLowEnergyModel(name)
71{
72 numberOfMaterials = 6;
73 sizeL0 = 67;
74 sizeL1 = 22;
75 sizeL2 = 14;
76}
77
78
80{;}
81
82
84 const G4Material* ) const
85{
86 return 2.0*MeV ;
87}
88
89
91 const G4Material* ) const
92{
93 // return 50.0*keV ;
94 return 5.0*keV ;
95}
96
97
99{
100 return 2.0*MeV ;
101}
102
104{
105 // return 50.0*keV ;
106 return 5.0*keV ;
107}
108
109
111 const G4Material* material) const
112{
113 G4bool isInCharge = false;
114
115 G4bool hasMaterial = false;
116
117 if (material->GetNumberOfElements() == 1) hasMaterial = true;
118
120 && hasMaterial) isInCharge = true;
121
122 return isInCharge;
123
124}
125
127 const G4Material* material) const
128{
129
130 G4bool isInCharge = false;
131
132 G4bool hasMaterial = false;
133
134 if (material->GetNumberOfElements() == 1) hasMaterial = true;
135
136
137 if (aParticle == (G4AntiProton::AntiProtonDefinition())
138 && hasMaterial) isInCharge = true;
139
140 return isInCharge;
141
142}
143
144
146 const G4Material* material)
147{
148 G4double zParticle = (G4int)(particle->GetCharge())/eplus;
149
150 G4double energy = particle->GetKineticEnergy() ;
151 G4double eloss = EnergyLoss(material,energy,zParticle) ;
152
153 return eloss ;
154}
155
156
158 const G4Material* material,
159 G4double kineticEnergy)
160{
161 G4double zParticle = (aParticle->GetPDGCharge())/eplus;
162
163 G4double eloss = EnergyLoss(material,kineticEnergy,zParticle) ;
164
165 return eloss ;
166}
167
168
169
170G4double G4QAOLowEnergyLoss::EnergyLoss(const G4Material* material,
171 G4double kineticEnergy,
172 G4double zParticle) const
173{
174 G4int nbOfShell = GetNumberOfShell(material);
175 if(nbOfShell < 1) nbOfShell = 1;
176
177 //G4int iz = (G4int)(material->GetZ());
178 //if(iz < 1) iz = 1;
179 //else if(iz > 100) iz = 100;
180 //G4int nbOfShell = fNumberOfShells[iz];
181
182 /*
183 if(material->GetName()=="Graphite"){
184 G4cout << " E(MeV)= " << kineticEnergy/MeV << " n= "
185 << nbOfShell
186 << " for " << material->GetZ() << G4endl;
187 }
188 */
189 G4double dedx=0;
190
191 G4double v = c_light * std::sqrt( 2.0 * kineticEnergy / proton_mass_c2 );
192 G4double coeff = twopi * proton_mass_c2 *
193 (material-> GetTotNbOfElectPerVolume()) /
194 electron_mass_c2 ;
195 G4double fBetheVelocity = fine_structure_const * c_light / v;
196 coeff *= fine_structure_const * fine_structure_const * hbarc_squared /
197 kineticEnergy ;
198
199 //G4double beta = std::sqrt( 2.0 * kineticEnergy / proton_mass_c2 );
200 //G4double fBetheVelocity = std::sqrt( 2.0 * 25.0 * keV / proton_mass_c2 )/beta;
201 //G4double coeff= twopi_mc2_rcl2*(material->GetElectronDensity())/(beta*beta);
202
203
204 G4double l0Term = 0, l1Term = 0, l2Term = 0;
205
206 for (G4int nos = 0 ; nos < nbOfShell ; nos++){
207
208 G4double l0 = 0, l1 = 0, l2 = 0;
209 G4double NormalizedEnergy = ( 2.0 * electron_mass_c2 * v * v ) /
210 ( c_squared * GetShellEnergy(material,nos) );
211 //G4double NormalizedEnergy = ( 2.0 * electron_mass_c2 * beta * beta ) /
212 // GetShellEnergy(material,nos);
213 G4double shStrength = GetShellStrength(material,nos);
214
215 l0 = GetL0(NormalizedEnergy);
216 l0Term += shStrength * l0;
217
218 l1 = GetL1(NormalizedEnergy);
219 l1Term += shStrength * l1;
220
221 l2 = GetL2(NormalizedEnergy);
222 l2Term += shStrength * l2;
223
224 /*
225 if(material->GetName()=="Graphite"){
226 G4cout << nos << ". "
227 << " E(MeV)= " << kineticEnergy/MeV
228 << " normE= " << NormalizedEnergy
229 << " sh en= " << GetShellEnergy(material,nos)
230 << " str= " << shStrength
231 << " v0/v= " << fBetheVelocity
232 << " l0= " << l0Term
233 << " l1= " << l1Term
234 << " l2= " << l2Term
235 << G4endl;
236 }
237 */
238 }
239
240 dedx = coeff * zParticle * zParticle * (l0Term
241 + zParticle * fBetheVelocity * l1Term
242 + zParticle * zParticle * fBetheVelocity * fBetheVelocity * l2Term);
243
244 // G4cout << " E(MeV)= " << kineticEnergy/MeV
245 // << " dedx(Mev/mm)= " << dedx*mm/MeV << G4endl;
246
247 return dedx ;
248
249}
250
251
252G4int G4QAOLowEnergyLoss::GetNumberOfShell(const G4Material* material) const
253{
254 // Set return value from table
255 G4int Z = (G4int)(material->GetZ());
256 G4int nShell = 0;
257
258 // Set return value if in material available from Aahrus
259 for(G4int i=0; i<numberOfMaterials; i++) {
260
261 if(materialAvailable[i] == Z){
262 nShell = nbofShellForMaterial[i];
263 break;
264 }
265 else nShell = fNumberOfShells[Z];
266 }
267
268 return nShell;
269}
270
271
272
273G4double G4QAOLowEnergyLoss::GetShellEnergy(const G4Material* material,
274 G4int nbOfTheShell) const
275{
276 //
277 G4double shellEnergy = alShellEnergy[0];
278
279 if(material->GetZ() == 13) shellEnergy = alShellEnergy[nbOfTheShell];
280 else if(material->GetZ() == 14)shellEnergy = siShellEnergy[nbOfTheShell];
281 else if(material->GetZ() == 29)shellEnergy = cuShellEnergy[nbOfTheShell];
282 else if(material->GetZ() == 73)shellEnergy = taShellEnergy[nbOfTheShell];
283 else if(material->GetZ() == 79)shellEnergy = auShellEnergy[nbOfTheShell];
284 else if(material->GetZ() == 78)shellEnergy = ptShellEnergy[nbOfTheShell];
285 else if (material->GetNumberOfElements() == 1)
286 shellEnergy = GetOscillatorEnergy(material, nbOfTheShell);
287 else G4cout << "WARNING - G4QAOLowEnergyLoss::GetShellEnergy - "
288 << "The model is not available for "
289 << material->GetName()
290 << G4endl;
291
292 return shellEnergy;
293}
294
295
296G4double G4QAOLowEnergyLoss::GetOscillatorEnergy(const G4Material* material,
297 G4int nbOfTheShell) const
298{
299
300 const G4Element* element = material->GetElement(0);
301
302 G4int Z = (G4int)(element->GetZ());
303
304G4double squaredPlasmonEnergy = 28.816 * 28.816 * 1e-6
305 * material->GetDensity()/g/cm3
306 * (Z/element->GetN()) ;
307//G4double squaredPlasmonEnergy = 28.16 * 28.16 * 1e-6
308// * (material->GetDensity()) * (cm3/g)
309// * Z / (element->GetN()) ;
310
311 G4double plasmonTerm = 0.66667 * GetOccupationNumber(Z,nbOfTheShell)
312 * squaredPlasmonEnergy / (Z*Z) ;
313
314 G4double ionTerm = std::exp(0.5) * (element->GetAtomicShell(nbOfTheShell)) ;
315
316 ionTerm = ionTerm*ionTerm ;
317
318 G4double oscShellEnergy = std::sqrt( ionTerm + plasmonTerm );
319
320/* if(material->GetName()=="Graphite"){
321 G4cout << "\t" << Z
322 << "\t" << nbOfTheShell
323 << "\t" << squaredPlasmonEnergy
324 << "\t" << plasmonTerm
325 << "\t" << ionTerm
326 << "\t" << GetOccupationNumber(Z,nbOfTheShell)
327 << "\t" << element->GetAtomicShell(nbOfTheShell)
328 << "\t" << oscShellEnergy << G4endl;}
329*/
330 return oscShellEnergy;
331}
332
333
334G4double G4QAOLowEnergyLoss::GetShellStrength(const G4Material* material,
335 G4int nbOfTheShell) const
336{
337 G4double shellStrength = alShellStrength[0];
338
339 if(material->GetZ() == 13) shellStrength = alShellStrength[nbOfTheShell];
340 else if(material->GetZ() == 14)shellStrength =siShellStrength[nbOfTheShell];
341 else if(material->GetZ() == 29)shellStrength =cuShellStrength[nbOfTheShell];
342 else if(material->GetZ() == 73)shellStrength =taShellStrength[nbOfTheShell];
343 else if(material->GetZ() == 79)shellStrength =auShellStrength[nbOfTheShell];
344 else if(material->GetZ() == 78)shellStrength =ptShellStrength[nbOfTheShell];
345 else if (material->GetNumberOfElements() == 1){
346 G4int Z = (G4int)(material->GetZ());
347 shellStrength = GetOccupationNumber(Z,nbOfTheShell) / Z ;}
348 else G4cout << "WARNING - G4QAOLowEnergyLoss::GetShellEnergy - "
349 << "The model is not available for "
350 << material->GetName()
351 << G4endl;
352
353 return shellStrength;
354}
355
356G4double G4QAOLowEnergyLoss::GetOccupationNumber(G4int Z, G4int ShellNb) const
357{
358
359 G4int indice = ShellNb ;
360 for (G4int z = 1 ; z < Z ; z++) {indice += fNumberOfShells[z];}
361
362 return nbOfElectronPerSubShell[indice+1];
363}
364
365
366G4double G4QAOLowEnergyLoss::GetL0(G4double normEnergy) const
367{
368 G4int n;
369
370 for(n = 0; n < sizeL0; n++) {
371 if( normEnergy < L0[n][0] ) break;
372 }
373 if(0 == n) n = 1 ;
374 if(n >= sizeL0) n = sizeL0 - 1 ;
375
376 G4double l0 = L0[n][1];
377 G4double l0p = L0[n-1][1];
378 G4double bethe = l0p + (l0 - l0p) * ( normEnergy - L0[n-1][0]) /
379 (L0[n][0] - L0[n-1][0]);
380 return bethe ;
381
382}
383
384G4double G4QAOLowEnergyLoss::GetL1(G4double normEnergy) const
385{
386 G4int n;
387
388 for(n = 0; n < sizeL1; n++) {
389 if( normEnergy < L1[n][0] ) break;
390 }
391 if(0 == n) n = 1 ;
392 if(n >= sizeL1) n = sizeL1 - 1 ;
393
394 G4double l1 = L1[n][1];
395 G4double l1p = L1[n-1][1];
396 G4double barkas= l1p + (l1 - l1p) * ( normEnergy - L1[n-1][0]) /
397 (L1[n][0] - L1[n-1][0]);
398
399 return barkas;
400
401}
402
403
404G4double G4QAOLowEnergyLoss::GetL2(G4double normEnergy) const
405{
406 G4int n;
407 for(n = 0; n < sizeL2; n++) {
408 if( normEnergy < L2[n][0] ) break;
409 }
410 if(0 == n) n = 1 ;
411 if(n >= sizeL2) n = sizeL2 - 1 ;
412
413 G4double l2 = L2[n][1];
414 G4double l2p = L2[n-1][1];
415 G4double bloch = l2p + (l2 - l2p) * ( normEnergy - L2[n-1][0]) /
416 (L2[n][0] - L2[n-1][0]);
417
418 return bloch;
419}
420
421
422const G4int G4QAOLowEnergyLoss::materialAvailable[6] = {13,14,29,73,79,78};
423 /*
424 "Aluminum",
425 "Silicon",
426 "Copper",
427 "Tantalum",
428 "Gold",
429 "Platinum"};
430 */
431const G4int G4QAOLowEnergyLoss::nbofShellForMaterial[6] = {3,3,4,6,6,6 };
432
433G4double G4QAOLowEnergyLoss::alShellEnergy[3] ={ 2795e-6, 202e-6, 16.9e-6};
434G4double G4QAOLowEnergyLoss::alShellStrength[3]={ 0.1349, 0.6387, 0.2264};
435G4double G4QAOLowEnergyLoss::siShellEnergy[3] ={ 3179e-6, 249e-6, 20.3e-6 };
436G4double G4QAOLowEnergyLoss::siShellStrength[3]={ 0.1222, 0.5972, 0.2806};
437G4double G4QAOLowEnergyLoss::cuShellEnergy[4] ={ 16931e-6, 1930e-6, 199e-6, 39.6e-6};
438G4double G4QAOLowEnergyLoss::cuShellStrength[4]={ 0.0505, 0.2561, 0.4913, 0.2021};
439G4double G4QAOLowEnergyLoss::taShellEnergy[6] ={ 88926e-6, 18012e-6, 3210e-6, 575e-6, 108.7e-6, 30.8e-6};
440G4double G4QAOLowEnergyLoss::taShellStrength[6]={ 0.0126, 0.0896, 0.2599, 0.3413, 0.2057, 0.0908};
441G4double G4QAOLowEnergyLoss::auShellEnergy[6]={ 96235e-6, 25918e-6, 4116e-6, 599e-6, 87.3e-6, 36.9e-6};
442G4double G4QAOLowEnergyLoss::auShellStrength[6]={ 0.0139, 0.0803, 0.2473, 0.423, 0.1124, 0.1231};
443G4double G4QAOLowEnergyLoss::ptShellEnergy[6]={ 95017e-6, 25590e-6, 4063e-6, 576e-6, 81.9e-6, 31.4e-6};
444G4double G4QAOLowEnergyLoss::ptShellStrength[6]={ 0.0129, 0.0745, 0.2295, 0.4627, 0.1324, 0.0879};
445
446
447const G4double G4QAOLowEnergyLoss::L0[67][2] =
448{
449 {0.00, 0.000001},
450 {0.10, 0.000001},
451 {0.12, 0.00001},
452 {0.14, 0.00005},
453 {0.16, 0.00014},
454 {0.18, 0.00030},
455 {0.20, 0.00057},
456 {0.25, 0.00189},
457 {0.30, 0.00429},
458 {0.35, 0.00784},
459 {0.40, 0.01248},
460 {0.45, 0.01811},
461 {0.50, 0.02462},
462 {0.60, 0.03980},
463 {0.70, 0.05731},
464 {0.80, 0.07662},
465 {0.90, 0.09733},
466 {1.00, 0.11916},
467 {1.20, 0.16532},
468 {1.40, 0.21376},
469 {1.60, 0.26362},
470 {1.80, 0.31428},
471 {2.00, 0.36532},
472 {2.50, 0.49272},
473 {3.00, 0.61765},
474 {3.50, 0.73863},
475 {4.00, 0.85496},
476 {4.50, 0.96634},
477 {5.00, 1.07272},
478 {6.00, 1.27086},
479 {7.00, 1.45075},
480 {8.00, 1.61412},
481 {9.00, 1.76277},
482 {10.00, 1.89836},
483 {12.00, 2.13625},
484 {14.00, 2.33787},
485 {16.00, 2.51093},
486 {18.00, 2.66134},
487 {20.00, 2.79358},
488 {25.00, 3.06539},
489 {30.00, 3.27902},
490 {35.00, 3.45430},
491 {40.00, 3.60281},
492 {45.00, 3.73167},
493 {50.00, 3.84555},
494 {60.00, 4.04011},
495 {70.00, 4.20264},
496 {80.00, 4.34229},
497 {90.00, 4.46474},
498 {100.00, 4.57378},
499 {120.00, 4.76155},
500 {140.00, 4.91953},
501 {160.00, 5.05590},
502 {180.00, 5.17588},
503 {200.00, 5.28299},
504 {250.00, 5.50925},
505 {300.00, 5.69364},
506 {350.00, 5.84926},
507 {400.00, 5.98388},
508 {450.00, 6.10252},
509 {500.00, 6.20856},
510 {600.00, 6.39189},
511 {700.00, 6.54677},
512 {800.00, 6.68084},
513 {900.00, 6.79905},
514 {1000.00, 6.90474}
515};
516
517
518const G4double G4QAOLowEnergyLoss::L1[22][2] =
519{
520 {0.00, -0.000001},
521 {0.10, -0.00001},
522 {0.20, -0.00049},
523 {0.30, -0.00084},
524 {0.40, 0.00085},
525 {0.50, 0.00519},
526 {0.60, 0.01198},
527 {0.70, 0.02074},
528 {0.80, 0.03133},
529 {0.90, 0.04369},
530 {1.00, 0.06035},
531 {2.00, 0.24023},
532 {3.00, 0.44284},
533 {4.00, 0.62012},
534 {5.00, 0.77031},
535 {6.00, 0.90390},
536 {7.00, 1.02705},
537 {8.00, 1.10867},
538 {9.00, 1.17546},
539 {10.00, 1.21599},
540 {15.00, 1.24349},
541 {20.00, 1.16752}
542};
543
544
545const G4double G4QAOLowEnergyLoss::L2[14][2] =
546{
547 {0.00, 0.000001},
548 {0.10, 0.00001},
549 {0.20, 0.00000},
550 {0.40, -0.00120},
551 {0.60, -0.00036},
552 {0.80, 0.00372},
553 {1.00, 0.01298},
554 {2.00, 0.08296},
555 {4.00, 0.21953},
556 {6.00, 0.23903},
557 {8.00, 0.20893},
558 {10.00, 0.10879},
559 {20.00, -0.88409},
560 {40.00, -1.13902}
561};
562
563
564const G4int G4QAOLowEnergyLoss::nbOfElectronPerSubShell[1540] =
565{
566 0, // consistency with G4AtomicShells
567 1,//------ H
568 2,//------ He
569 2, 1,//------ Li
570 2, 2,//------ Be
571 2, 2, 1,//------ B
572 2, 2, 2,//------ C
573 2, 2, 2, 1,//------ N
574 2, 2, 2, 2,//------ O
575 2, 2, 5,//------ F
576 2, 2, 2, 4,//------ Ne
577 2, 2, 2, 4, 1,//------ Na
578 2, 2, 2, 4, 2,//------ Mg
579 2, 2, 2, 4, 2, 1,//------ Al
580 2, 2, 2, 4, 2, 2,//------ Si
581 2, 2, 2, 4, 2, 3,//------ P
582 2, 2, 2, 4, 2, 4,//------
583 2, 2, 2, 4, 2, 5,//------
584 2, 2, 2, 4, 2, 2, 4,//------
585 2, 2, 2, 4, 2, 2, 4, 1,//------
586 2, 2, 2, 4, 2, 2, 4, 2,//------
587 2, 2, 2, 4, 2, 2, 4, 1, 2,//------
588 2, 2, 2, 4, 2, 2, 4, 2, 2,//------
589 2, 2, 2, 4, 2, 2, 4, 3, 2,//------
590 2, 2, 2, 4, 2, 2, 4, 4, 2,//------
591 2, 2, 2, 4, 2, 2, 4, 5, 2,//------
592 2, 2, 2, 4, 2, 2, 4, 6, 2,//------
593 2, 2, 2, 4, 2, 2, 4, 7, 2,//------
594 2, 2, 2, 4, 2, 2, 4, 4, 4, 2,//------
595 2, 2, 2, 4, 2, 2, 4, 4, 5, 2,//------
596 2, 2, 2, 4, 2, 2, 4, 4, 6, 2,//------
597 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 1,//------
598 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2,//------
599 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 3,//------
600 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 4,//------
601 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 5,//------
602 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4,//------
603 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 1,//------
604 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 2,//------
605 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 1, 2,//------
606 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 2, 2,//------
607 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 3, 2,//------
608 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 2,//------
609 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 5, 2,//------
610 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 6, 2,//------
611 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 7, 2,//------
612 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 4, 2,//------
613 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 5, 2,//------
614 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2,//------
615 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 1,//------
616 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2,//------
617 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 3,//------
618 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 4,//------
619 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 5,//------
620 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4,//------
621 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 1,//------
622 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 2,//------
623 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 1, 2,//------
624 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 2, 4, 2,//------
625 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 3, 2, 2, 4, 2,//------
626 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 4, 2, 2, 4, 2,//------
627 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 5, 2, 2, 4, 2,//------
628 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 2, 2, 4, 2,//------
629 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 7, 2, 2, 4, 2,//------
630 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 7, 2, 2, 4, 1, 2,//------
631 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 9, 2, 2, 4, 2,//------
632 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 10, 2, 2, 4, 2,//------
633 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 11, 2, 2, 4, 2,//------
634 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 12, 2, 2, 4, 2,//------
635 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 13, 2, 2, 4, 2,//------
636 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 2,//------
637 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 1, 2,//------
638 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 2, 2,//------
639 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 3, 2,//------
640 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 2,//------
641 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 5, 2,//------
642 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 6, 2,//------
643 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 7, 2,//------
644 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 9, 1,//------
645 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 1,//------
646 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2,//------
647 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 1,//------
648 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2,//------
649 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 3,//------
650 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 4,//------
651 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 3,//------
652 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4,//------
653 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,//------
654 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,//------
655 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,//------
656 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,//------
657 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,//------
658 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,//------
659 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,//------
660 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,//------
661 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,//------
662 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,//------
663 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,//------
664 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,//------
665 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,//------
666 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 //-----
667};
668
669const G4int G4QAOLowEnergyLoss::fNumberOfShells[101] =
670{
671 0 , // nonexisting zero element
672
673 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 3 , 4 , // 1 - 10
674
675 5 , 5 , 6 , 6 , 6 , 6 , 6 , 7 , 8 , 8 , // 11 - 20
676
677 9 , 9 , 9 , 9 , 9 , 9 , 9 , 10 , 10 , 10 , // 21 - 30
678
67911 , 11 , 11 , 11 , 11 , 12 , 13 , 13 , 14 , 14 , // 31 - 40
680
68114 , 14 , 14 , 14 , 14 , 15 , 15 , 15 , 16 , 16 , // 41 - 50
682
683// ----------------------------------------------------------
684
68516 , 16 , 16 , 17 , 18 , 18 , 19 , 19 , 19 , 19 , // 51 - 60
686
68719 , 19 , 19 , 20 , 19 , 19 , 19 , 19 , 19 , 20 , // 61 - 70
688
68921 , 21 , 21 , 21 , 21 , 21 , 21 , 21 , 22 , 22 , // 71 - 80
690
69123 , 23 , 23 , 23 , 24 , 24 , 25 , 25 , 26 , 26 , // 81 - 90
692
69327 , 27 , 27 , 26 , 26 , 27 , 27 , 26 , 26 , 26 // 91 - 100
694
695};
696
697
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
static G4AntiProton * AntiProtonDefinition()
Definition: G4AntiProton.cc:88
G4double GetCharge() const
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
G4double GetZ() const
Definition: G4Element.hh:131
G4double GetN() const
Definition: G4Element.hh:134
G4double GetAtomicShell(G4int index) const
Definition: G4Element.cc:367
G4double GetDensity() const
Definition: G4Material.hh:179
const G4Element * GetElement(G4int iel) const
Definition: G4Material.hh:201
G4double GetZ() const
Definition: G4Material.cc:604
size_t GetNumberOfElements() const
Definition: G4Material.hh:185
const G4String & GetName() const
Definition: G4Material.hh:177
G4double GetPDGCharge() const
G4double TheValue(const G4DynamicParticle *particle, const G4Material *material)
G4bool IsInCharge(const G4DynamicParticle *particle, const G4Material *material) const
G4double LowEnergyLimit(const G4ParticleDefinition *aParticle, const G4Material *material) const
G4QAOLowEnergyLoss(const G4String &name)
G4double HighEnergyLimit(const G4ParticleDefinition *aParticle, const G4Material *material) const