00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059 #include "G4QAOLowEnergyLoss.hh"
00060 #include "G4PhysicalConstants.hh"
00061 #include "G4SystemOfUnits.hh"
00062 #include "G4DynamicParticle.hh"
00063 #include "G4Material.hh"
00064 #include "G4ParticleDefinition.hh"
00065 #include "G4AntiProton.hh"
00066
00067
00068
00069 G4QAOLowEnergyLoss::G4QAOLowEnergyLoss(const G4String& name)
00070 : G4VLowEnergyModel(name)
00071 {
00072 numberOfMaterials = 6;
00073 sizeL0 = 67;
00074 sizeL1 = 22;
00075 sizeL2 = 14;
00076 }
00077
00078
00079 G4QAOLowEnergyLoss::~G4QAOLowEnergyLoss()
00080 {;}
00081
00082
00083 G4double G4QAOLowEnergyLoss::HighEnergyLimit(const G4ParticleDefinition* ,
00084 const G4Material* ) const
00085 {
00086 return 2.0*MeV ;
00087 }
00088
00089
00090 G4double G4QAOLowEnergyLoss::LowEnergyLimit(const G4ParticleDefinition* ,
00091 const G4Material* ) const
00092 {
00093
00094 return 5.0*keV ;
00095 }
00096
00097
00098 G4double G4QAOLowEnergyLoss::HighEnergyLimit(const G4ParticleDefinition* ) const
00099 {
00100 return 2.0*MeV ;
00101 }
00102
00103 G4double G4QAOLowEnergyLoss::LowEnergyLimit(const G4ParticleDefinition* ) const
00104 {
00105
00106 return 5.0*keV ;
00107 }
00108
00109
00110 G4bool G4QAOLowEnergyLoss::IsInCharge(const G4DynamicParticle* particle,
00111 const G4Material* material) const
00112 {
00113 G4bool isInCharge = false;
00114
00115 G4bool hasMaterial = false;
00116
00117 if (material->GetNumberOfElements() == 1) hasMaterial = true;
00118
00119 if ((particle->GetDefinition()) == (G4AntiProton::AntiProtonDefinition())
00120 && hasMaterial) isInCharge = true;
00121
00122 return isInCharge;
00123
00124 }
00125
00126 G4bool G4QAOLowEnergyLoss::IsInCharge(const G4ParticleDefinition* aParticle,
00127 const G4Material* material) const
00128 {
00129
00130 G4bool isInCharge = false;
00131
00132 G4bool hasMaterial = false;
00133
00134 if (material->GetNumberOfElements() == 1) hasMaterial = true;
00135
00136
00137 if (aParticle == (G4AntiProton::AntiProtonDefinition())
00138 && hasMaterial) isInCharge = true;
00139
00140 return isInCharge;
00141
00142 }
00143
00144
00145 G4double G4QAOLowEnergyLoss::TheValue(const G4DynamicParticle* particle,
00146 const G4Material* material)
00147 {
00148 G4double zParticle = (G4int)(particle->GetCharge())/eplus;
00149
00150 G4double energy = particle->GetKineticEnergy() ;
00151 G4double eloss = EnergyLoss(material,energy,zParticle) ;
00152
00153 return eloss ;
00154 }
00155
00156
00157 G4double G4QAOLowEnergyLoss::TheValue(const G4ParticleDefinition* aParticle,
00158 const G4Material* material,
00159 G4double kineticEnergy)
00160 {
00161 G4double zParticle = (aParticle->GetPDGCharge())/eplus;
00162
00163 G4double eloss = EnergyLoss(material,kineticEnergy,zParticle) ;
00164
00165 return eloss ;
00166 }
00167
00168
00169
00170 G4double G4QAOLowEnergyLoss::EnergyLoss(const G4Material* material,
00171 G4double kineticEnergy,
00172 G4double zParticle) const
00173 {
00174 G4int nbOfShell = GetNumberOfShell(material);
00175 if(nbOfShell < 1) nbOfShell = 1;
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189 G4double dedx=0;
00190
00191 G4double v = c_light * std::sqrt( 2.0 * kineticEnergy / proton_mass_c2 );
00192 G4double coeff = twopi * proton_mass_c2 *
00193 (material-> GetTotNbOfElectPerVolume()) /
00194 electron_mass_c2 ;
00195 G4double fBetheVelocity = fine_structure_const * c_light / v;
00196 coeff *= fine_structure_const * fine_structure_const * hbarc_squared /
00197 kineticEnergy ;
00198
00199
00200
00201
00202
00203
00204 G4double l0Term = 0, l1Term = 0, l2Term = 0;
00205
00206 for (G4int nos = 0 ; nos < nbOfShell ; nos++){
00207
00208 G4double l0 = 0, l1 = 0, l2 = 0;
00209 G4double NormalizedEnergy = ( 2.0 * electron_mass_c2 * v * v ) /
00210 ( c_squared * GetShellEnergy(material,nos) );
00211
00212
00213 G4double shStrength = GetShellStrength(material,nos);
00214
00215 l0 = GetL0(NormalizedEnergy);
00216 l0Term += shStrength * l0;
00217
00218 l1 = GetL1(NormalizedEnergy);
00219 l1Term += shStrength * l1;
00220
00221 l2 = GetL2(NormalizedEnergy);
00222 l2Term += shStrength * l2;
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238 }
00239
00240 dedx = coeff * zParticle * zParticle * (l0Term
00241 + zParticle * fBetheVelocity * l1Term
00242 + zParticle * zParticle * fBetheVelocity * fBetheVelocity * l2Term);
00243
00244
00245
00246
00247 return dedx ;
00248
00249 }
00250
00251
00252 G4int G4QAOLowEnergyLoss::GetNumberOfShell(const G4Material* material) const
00253 {
00254
00255 G4int Z = (G4int)(material->GetZ());
00256 G4int nShell = 0;
00257
00258
00259 for(G4int i=0; i<numberOfMaterials; i++) {
00260
00261 if(materialAvailable[i] == Z){
00262 nShell = nbofShellForMaterial[i];
00263 break;
00264 }
00265 else nShell = fNumberOfShells[Z];
00266 }
00267
00268 return nShell;
00269 }
00270
00271
00272
00273 G4double G4QAOLowEnergyLoss::GetShellEnergy(const G4Material* material,
00274 G4int nbOfTheShell) const
00275 {
00276
00277 G4double shellEnergy = alShellEnergy[0];
00278
00279 if(material->GetZ() == 13) shellEnergy = alShellEnergy[nbOfTheShell];
00280 else if(material->GetZ() == 14)shellEnergy = siShellEnergy[nbOfTheShell];
00281 else if(material->GetZ() == 29)shellEnergy = cuShellEnergy[nbOfTheShell];
00282 else if(material->GetZ() == 73)shellEnergy = taShellEnergy[nbOfTheShell];
00283 else if(material->GetZ() == 79)shellEnergy = auShellEnergy[nbOfTheShell];
00284 else if(material->GetZ() == 78)shellEnergy = ptShellEnergy[nbOfTheShell];
00285 else if (material->GetNumberOfElements() == 1)
00286 shellEnergy = GetOscillatorEnergy(material, nbOfTheShell);
00287 else G4cout << "WARNING - G4QAOLowEnergyLoss::GetShellEnergy - "
00288 << "The model is not available for "
00289 << material->GetName()
00290 << G4endl;
00291
00292 return shellEnergy;
00293 }
00294
00295
00296 G4double G4QAOLowEnergyLoss::GetOscillatorEnergy(const G4Material* material,
00297 G4int nbOfTheShell) const
00298 {
00299
00300 const G4Element* element = material->GetElement(0);
00301
00302 G4int Z = (G4int)(element->GetZ());
00303
00304 G4double squaredPlasmonEnergy = 28.816 * 28.816 * 1e-6
00305 * material->GetDensity()/g/cm3
00306 * (Z/element->GetN()) ;
00307
00308
00309
00310
00311 G4double plasmonTerm = 0.66667 * GetOccupationNumber(Z,nbOfTheShell)
00312 * squaredPlasmonEnergy / (Z*Z) ;
00313
00314 G4double ionTerm = std::exp(0.5) * (element->GetAtomicShell(nbOfTheShell)) ;
00315
00316 ionTerm = ionTerm*ionTerm ;
00317
00318 G4double oscShellEnergy = std::sqrt( ionTerm + plasmonTerm );
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330 return oscShellEnergy;
00331 }
00332
00333
00334 G4double G4QAOLowEnergyLoss::GetShellStrength(const G4Material* material,
00335 G4int nbOfTheShell) const
00336 {
00337 G4double shellStrength = alShellStrength[0];
00338
00339 if(material->GetZ() == 13) shellStrength = alShellStrength[nbOfTheShell];
00340 else if(material->GetZ() == 14)shellStrength =siShellStrength[nbOfTheShell];
00341 else if(material->GetZ() == 29)shellStrength =cuShellStrength[nbOfTheShell];
00342 else if(material->GetZ() == 73)shellStrength =taShellStrength[nbOfTheShell];
00343 else if(material->GetZ() == 79)shellStrength =auShellStrength[nbOfTheShell];
00344 else if(material->GetZ() == 78)shellStrength =ptShellStrength[nbOfTheShell];
00345 else if (material->GetNumberOfElements() == 1){
00346 G4int Z = (G4int)(material->GetZ());
00347 shellStrength = GetOccupationNumber(Z,nbOfTheShell) / Z ;}
00348 else G4cout << "WARNING - G4QAOLowEnergyLoss::GetShellEnergy - "
00349 << "The model is not available for "
00350 << material->GetName()
00351 << G4endl;
00352
00353 return shellStrength;
00354 }
00355
00356 G4double G4QAOLowEnergyLoss::GetOccupationNumber(G4int Z, G4int ShellNb) const
00357 {
00358
00359 G4int indice = ShellNb ;
00360 for (G4int z = 1 ; z < Z ; z++) {indice += fNumberOfShells[z];}
00361
00362 return nbOfElectronPerSubShell[indice+1];
00363 }
00364
00365
00366 G4double G4QAOLowEnergyLoss::GetL0(G4double normEnergy) const
00367 {
00368 G4int n;
00369
00370 for(n = 0; n < sizeL0; n++) {
00371 if( normEnergy < L0[n][0] ) break;
00372 }
00373 if(0 == n) n = 1 ;
00374 if(n >= sizeL0) n = sizeL0 - 1 ;
00375
00376 G4double l0 = L0[n][1];
00377 G4double l0p = L0[n-1][1];
00378 G4double bethe = l0p + (l0 - l0p) * ( normEnergy - L0[n-1][0]) /
00379 (L0[n][0] - L0[n-1][0]);
00380 return bethe ;
00381
00382 }
00383
00384 G4double G4QAOLowEnergyLoss::GetL1(G4double normEnergy) const
00385 {
00386 G4int n;
00387
00388 for(n = 0; n < sizeL1; n++) {
00389 if( normEnergy < L1[n][0] ) break;
00390 }
00391 if(0 == n) n = 1 ;
00392 if(n >= sizeL1) n = sizeL1 - 1 ;
00393
00394 G4double l1 = L1[n][1];
00395 G4double l1p = L1[n-1][1];
00396 G4double barkas= l1p + (l1 - l1p) * ( normEnergy - L1[n-1][0]) /
00397 (L1[n][0] - L1[n-1][0]);
00398
00399 return barkas;
00400
00401 }
00402
00403
00404 G4double G4QAOLowEnergyLoss::GetL2(G4double normEnergy) const
00405 {
00406 G4int n;
00407 for(n = 0; n < sizeL2; n++) {
00408 if( normEnergy < L2[n][0] ) break;
00409 }
00410 if(0 == n) n = 1 ;
00411 if(n >= sizeL2) n = sizeL2 - 1 ;
00412
00413 G4double l2 = L2[n][1];
00414 G4double l2p = L2[n-1][1];
00415 G4double bloch = l2p + (l2 - l2p) * ( normEnergy - L2[n-1][0]) /
00416 (L2[n][0] - L2[n-1][0]);
00417
00418 return bloch;
00419 }
00420
00421
00422 const G4int G4QAOLowEnergyLoss::materialAvailable[6] = {13,14,29,73,79,78};
00423
00424
00425
00426
00427
00428
00429
00430
00431 const G4int G4QAOLowEnergyLoss::nbofShellForMaterial[6] = {3,3,4,6,6,6 };
00432
00433 G4double G4QAOLowEnergyLoss::alShellEnergy[3] ={ 2795e-6, 202e-6, 16.9e-6};
00434 G4double G4QAOLowEnergyLoss::alShellStrength[3]={ 0.1349, 0.6387, 0.2264};
00435 G4double G4QAOLowEnergyLoss::siShellEnergy[3] ={ 3179e-6, 249e-6, 20.3e-6 };
00436 G4double G4QAOLowEnergyLoss::siShellStrength[3]={ 0.1222, 0.5972, 0.2806};
00437 G4double G4QAOLowEnergyLoss::cuShellEnergy[4] ={ 16931e-6, 1930e-6, 199e-6, 39.6e-6};
00438 G4double G4QAOLowEnergyLoss::cuShellStrength[4]={ 0.0505, 0.2561, 0.4913, 0.2021};
00439 G4double G4QAOLowEnergyLoss::taShellEnergy[6] ={ 88926e-6, 18012e-6, 3210e-6, 575e-6, 108.7e-6, 30.8e-6};
00440 G4double G4QAOLowEnergyLoss::taShellStrength[6]={ 0.0126, 0.0896, 0.2599, 0.3413, 0.2057, 0.0908};
00441 G4double G4QAOLowEnergyLoss::auShellEnergy[6]={ 96235e-6, 25918e-6, 4116e-6, 599e-6, 87.3e-6, 36.9e-6};
00442 G4double G4QAOLowEnergyLoss::auShellStrength[6]={ 0.0139, 0.0803, 0.2473, 0.423, 0.1124, 0.1231};
00443 G4double G4QAOLowEnergyLoss::ptShellEnergy[6]={ 95017e-6, 25590e-6, 4063e-6, 576e-6, 81.9e-6, 31.4e-6};
00444 G4double G4QAOLowEnergyLoss::ptShellStrength[6]={ 0.0129, 0.0745, 0.2295, 0.4627, 0.1324, 0.0879};
00445
00446
00447 const G4double G4QAOLowEnergyLoss::L0[67][2] =
00448 {
00449 {0.00, 0.000001},
00450 {0.10, 0.000001},
00451 {0.12, 0.00001},
00452 {0.14, 0.00005},
00453 {0.16, 0.00014},
00454 {0.18, 0.00030},
00455 {0.20, 0.00057},
00456 {0.25, 0.00189},
00457 {0.30, 0.00429},
00458 {0.35, 0.00784},
00459 {0.40, 0.01248},
00460 {0.45, 0.01811},
00461 {0.50, 0.02462},
00462 {0.60, 0.03980},
00463 {0.70, 0.05731},
00464 {0.80, 0.07662},
00465 {0.90, 0.09733},
00466 {1.00, 0.11916},
00467 {1.20, 0.16532},
00468 {1.40, 0.21376},
00469 {1.60, 0.26362},
00470 {1.80, 0.31428},
00471 {2.00, 0.36532},
00472 {2.50, 0.49272},
00473 {3.00, 0.61765},
00474 {3.50, 0.73863},
00475 {4.00, 0.85496},
00476 {4.50, 0.96634},
00477 {5.00, 1.07272},
00478 {6.00, 1.27086},
00479 {7.00, 1.45075},
00480 {8.00, 1.61412},
00481 {9.00, 1.76277},
00482 {10.00, 1.89836},
00483 {12.00, 2.13625},
00484 {14.00, 2.33787},
00485 {16.00, 2.51093},
00486 {18.00, 2.66134},
00487 {20.00, 2.79358},
00488 {25.00, 3.06539},
00489 {30.00, 3.27902},
00490 {35.00, 3.45430},
00491 {40.00, 3.60281},
00492 {45.00, 3.73167},
00493 {50.00, 3.84555},
00494 {60.00, 4.04011},
00495 {70.00, 4.20264},
00496 {80.00, 4.34229},
00497 {90.00, 4.46474},
00498 {100.00, 4.57378},
00499 {120.00, 4.76155},
00500 {140.00, 4.91953},
00501 {160.00, 5.05590},
00502 {180.00, 5.17588},
00503 {200.00, 5.28299},
00504 {250.00, 5.50925},
00505 {300.00, 5.69364},
00506 {350.00, 5.84926},
00507 {400.00, 5.98388},
00508 {450.00, 6.10252},
00509 {500.00, 6.20856},
00510 {600.00, 6.39189},
00511 {700.00, 6.54677},
00512 {800.00, 6.68084},
00513 {900.00, 6.79905},
00514 {1000.00, 6.90474}
00515 };
00516
00517
00518 const G4double G4QAOLowEnergyLoss::L1[22][2] =
00519 {
00520 {0.00, -0.000001},
00521 {0.10, -0.00001},
00522 {0.20, -0.00049},
00523 {0.30, -0.00084},
00524 {0.40, 0.00085},
00525 {0.50, 0.00519},
00526 {0.60, 0.01198},
00527 {0.70, 0.02074},
00528 {0.80, 0.03133},
00529 {0.90, 0.04369},
00530 {1.00, 0.06035},
00531 {2.00, 0.24023},
00532 {3.00, 0.44284},
00533 {4.00, 0.62012},
00534 {5.00, 0.77031},
00535 {6.00, 0.90390},
00536 {7.00, 1.02705},
00537 {8.00, 1.10867},
00538 {9.00, 1.17546},
00539 {10.00, 1.21599},
00540 {15.00, 1.24349},
00541 {20.00, 1.16752}
00542 };
00543
00544
00545 const G4double G4QAOLowEnergyLoss::L2[14][2] =
00546 {
00547 {0.00, 0.000001},
00548 {0.10, 0.00001},
00549 {0.20, 0.00000},
00550 {0.40, -0.00120},
00551 {0.60, -0.00036},
00552 {0.80, 0.00372},
00553 {1.00, 0.01298},
00554 {2.00, 0.08296},
00555 {4.00, 0.21953},
00556 {6.00, 0.23903},
00557 {8.00, 0.20893},
00558 {10.00, 0.10879},
00559 {20.00, -0.88409},
00560 {40.00, -1.13902}
00561 };
00562
00563
00564 const G4int G4QAOLowEnergyLoss::nbOfElectronPerSubShell[1540] =
00565 {
00566 0,
00567 1,
00568 2,
00569 2, 1,
00570 2, 2,
00571 2, 2, 1,
00572 2, 2, 2,
00573 2, 2, 2, 1,
00574 2, 2, 2, 2,
00575 2, 2, 5,
00576 2, 2, 2, 4,
00577 2, 2, 2, 4, 1,
00578 2, 2, 2, 4, 2,
00579 2, 2, 2, 4, 2, 1,
00580 2, 2, 2, 4, 2, 2,
00581 2, 2, 2, 4, 2, 3,
00582 2, 2, 2, 4, 2, 4,
00583 2, 2, 2, 4, 2, 5,
00584 2, 2, 2, 4, 2, 2, 4,
00585 2, 2, 2, 4, 2, 2, 4, 1,
00586 2, 2, 2, 4, 2, 2, 4, 2,
00587 2, 2, 2, 4, 2, 2, 4, 1, 2,
00588 2, 2, 2, 4, 2, 2, 4, 2, 2,
00589 2, 2, 2, 4, 2, 2, 4, 3, 2,
00590 2, 2, 2, 4, 2, 2, 4, 4, 2,
00591 2, 2, 2, 4, 2, 2, 4, 5, 2,
00592 2, 2, 2, 4, 2, 2, 4, 6, 2,
00593 2, 2, 2, 4, 2, 2, 4, 7, 2,
00594 2, 2, 2, 4, 2, 2, 4, 4, 4, 2,
00595 2, 2, 2, 4, 2, 2, 4, 4, 5, 2,
00596 2, 2, 2, 4, 2, 2, 4, 4, 6, 2,
00597 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 1,
00598 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2,
00599 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 3,
00600 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 4,
00601 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 5,
00602 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4,
00603 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 1,
00604 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 2,
00605 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 1, 2,
00606 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 2, 2,
00607 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 3, 2,
00608 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 2,
00609 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 5, 2,
00610 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 6, 2,
00611 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 7, 2,
00612 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 4, 2,
00613 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 5, 2,
00614 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2,
00615 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 1,
00616 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2,
00617 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 3,
00618 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 4,
00619 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 5,
00620 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4,
00621 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 1,
00622 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 2,
00623 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 1, 2,
00624 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 2, 4, 2,
00625 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 3, 2, 2, 4, 2,
00626 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 4, 2, 2, 4, 2,
00627 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 5, 2, 2, 4, 2,
00628 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 2, 2, 4, 2,
00629 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 7, 2, 2, 4, 2,
00630 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 7, 2, 2, 4, 1, 2,
00631 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 9, 2, 2, 4, 2,
00632 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 10, 2, 2, 4, 2,
00633 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 11, 2, 2, 4, 2,
00634 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 12, 2, 2, 4, 2,
00635 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 13, 2, 2, 4, 2,
00636 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 2,
00637 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 1, 2,
00638 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 2, 2,
00639 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 3, 2,
00640 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 2,
00641 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 5, 2,
00642 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 6, 2,
00643 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 7, 2,
00644 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 9, 1,
00645 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 1,
00646 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2,
00647 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 1,
00648 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2,
00649 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 3,
00650 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 4,
00651 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 3,
00652 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4,
00653 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,
00654 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,
00655 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,
00656 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,
00657 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,
00658 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,
00659 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,
00660 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,
00661 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,
00662 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,
00663 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,
00664 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,
00665 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,
00666 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
00667 };
00668
00669 const G4int G4QAOLowEnergyLoss::fNumberOfShells[101] =
00670 {
00671 0 ,
00672
00673 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 3 , 4 ,
00674
00675 5 , 5 , 6 , 6 , 6 , 6 , 6 , 7 , 8 , 8 ,
00676
00677 9 , 9 , 9 , 9 , 9 , 9 , 9 , 10 , 10 , 10 ,
00678
00679 11 , 11 , 11 , 11 , 11 , 12 , 13 , 13 , 14 , 14 ,
00680
00681 14 , 14 , 14 , 14 , 14 , 15 , 15 , 15 , 16 , 16 ,
00682
00683
00684
00685 16 , 16 , 16 , 17 , 18 , 18 , 19 , 19 , 19 , 19 ,
00686
00687 19 , 19 , 19 , 20 , 19 , 19 , 19 , 19 , 19 , 20 ,
00688
00689 21 , 21 , 21 , 21 , 21 , 21 , 21 , 21 , 22 , 22 ,
00690
00691 23 , 23 , 23 , 23 , 24 , 24 , 25 , 25 , 26 , 26 ,
00692
00693 27 , 27 , 27 , 26 , 26 , 27 , 27 , 26 , 26 , 26
00694
00695 };
00696
00697