73   numberOfMaterials = 6;
 
  114   G4bool isInCharge = 
false;
 
  116   G4bool hasMaterial = 
false;
 
  121                && hasMaterial) isInCharge = 
true;
 
  131   G4bool isInCharge = 
false;
 
  133   G4bool hasMaterial = 
false;
 
  139                 && hasMaterial) isInCharge = 
true;
 
  152   G4double eloss  = EnergyLoss(material,energy,zParticle) ;
 
  164   G4double eloss  = EnergyLoss(material,kineticEnergy,zParticle) ;
 
  175   G4int nbOfShell = GetNumberOfShell(material);
 
  176   if(nbOfShell < 1) nbOfShell = 1;
 
  194                   (material-> GetTotNbOfElectPerVolume()) /
 
  205   G4double l0Term = 0, l1Term = 0, l2Term = 0;
 
  207   for (
G4int nos = 0 ; nos < nbOfShell ; nos++){
 
  211                           ( 
c_squared * GetShellEnergy(material,nos) );
 
  214     G4double shStrength = GetShellStrength(material,nos);
 
  216     l0 = GetL0(NormalizedEnergy);
 
  217     l0Term += shStrength  * l0;
 
  219     l1 = GetL1(NormalizedEnergy);
 
  220     l1Term += shStrength * l1;
 
  222     l2 = GetL2(NormalizedEnergy);
 
  223     l2Term += shStrength * l2;
 
  241   dedx = coeff * zParticle * zParticle * (l0Term
 
  242        + zParticle * fBetheVelocity * l1Term
 
  243        + zParticle * zParticle * fBetheVelocity * fBetheVelocity * l2Term);
 
  253 G4int G4QAOLowEnergyLoss::GetNumberOfShell(
const G4Material* material)
 const 
  260   for(
G4int i=0; i<numberOfMaterials; i++) {
 
  262     if(materialAvailable[i] == Z){
 
  263         nShell = nbofShellForMaterial[i];
 
  266     else nShell = fNumberOfShells[
Z];
 
  275                                             G4int nbOfTheShell)
 const 
  278     G4double shellEnergy = alShellEnergy[0];
 
  280     if(material->
GetZ() == 13) shellEnergy =  alShellEnergy[nbOfTheShell];
 
  281     else if(material->
GetZ() == 14)shellEnergy = siShellEnergy[nbOfTheShell];
 
  282     else if(material->
GetZ() == 29)shellEnergy = cuShellEnergy[nbOfTheShell];
 
  283     else if(material->
GetZ() == 73)shellEnergy =  taShellEnergy[nbOfTheShell];
 
  284     else if(material->
GetZ() == 79)shellEnergy =  auShellEnergy[nbOfTheShell];
 
  285     else if(material->
GetZ() == 78)shellEnergy =  ptShellEnergy[nbOfTheShell];
 
  287       shellEnergy = GetOscillatorEnergy(material, nbOfTheShell);
 
  288     else G4cout << 
"WARNING - G4QAOLowEnergyLoss::GetShellEnergy - " 
  289         << 
"The model is not available for " 
  298                                                  G4int nbOfTheShell)
 const 
  305 G4double squaredPlasmonEnergy = 28.816 * 28.816  * 1e-6
 
  307                 * (Z/element->
GetN()) ;
 
  312   G4double plasmonTerm = 0.66667 * GetOccupationNumber(Z,nbOfTheShell)
 
  313                        * squaredPlasmonEnergy / (Z*
Z) ;
 
  317   ionTerm = ionTerm*ionTerm ;
 
  319   G4double oscShellEnergy = std::sqrt( ionTerm + plasmonTerm );
 
  331   return  oscShellEnergy;
 
  335                                               G4int nbOfTheShell)
 const 
  337   G4double shellStrength = alShellStrength[0];
 
  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];
 
  347     shellStrength = GetOccupationNumber(Z,nbOfTheShell) / 
Z ;}
 
  348   else G4cout << 
"WARNING - G4QAOLowEnergyLoss::GetShellEnergy - " 
  349               << 
"The model is not available for " 
  353   return shellStrength;
 
  359   G4int indice = ShellNb ;
 
  360   for (
G4int z = 1 ; 
z < 
Z ; 
z++) {indice += fNumberOfShells[
z];}
 
  362   return nbOfElectronPerSubShell[indice+1];
 
  370   for(n = 0; n < sizeL0; n++) {
 
  371     if( normEnergy < L0[n][0] ) 
break;
 
  374   if(n >= sizeL0) n = sizeL0 - 1 ;
 
  378   G4double bethe = l0p + (l0 - l0p) * ( normEnergy - L0[n-1][0]) /
 
  379                   (L0[
n][0] - L0[n-1][0]);
 
  388   for(n = 0; n < sizeL1; n++) {
 
  389     if( normEnergy < L1[n][0] ) 
break;
 
  392   if(n >= sizeL1) n = sizeL1 - 1 ;
 
  396   G4double barkas= l1p + (l1 - l1p) * ( normEnergy - L1[n-1][0]) /
 
  397                   (L1[
n][0] - L1[n-1][0]);
 
  407   for(n = 0; n < sizeL2; n++) {
 
  408     if( normEnergy < L2[n][0] ) 
break;
 
  411   if(n >= sizeL2) n = sizeL2 - 1 ;
 
  415   G4double bloch = l2p + (l2 - l2p) * ( normEnergy - L2[n-1][0]) /
 
  416                   (L2[
n][0] - L2[n-1][0]);
 
  422 const G4int G4QAOLowEnergyLoss::materialAvailable[6] = {13,14,29,73,79,78};
 
  431 const G4int G4QAOLowEnergyLoss::nbofShellForMaterial[6] = {3,3,4,6,6,6 };
 
  433 const G4double G4QAOLowEnergyLoss::alShellEnergy[3]  ={ 2795e-6, 202e-6,  16.9e-6};
 
  434 const G4double G4QAOLowEnergyLoss::alShellStrength[3]={ 0.1349, 0.6387, 0.2264};
 
  435 const G4double G4QAOLowEnergyLoss::siShellEnergy[3]  ={ 3179e-6, 249e-6, 20.3e-6 };
 
  436 const G4double G4QAOLowEnergyLoss::siShellStrength[3]={ 0.1222, 0.5972, 0.2806};
 
  437 const G4double G4QAOLowEnergyLoss::cuShellEnergy[4]  ={ 16931e-6, 1930e-6, 199e-6, 39.6e-6};
 
  438 const G4double G4QAOLowEnergyLoss::cuShellStrength[4]={ 0.0505, 0.2561, 0.4913, 0.2021};
 
  439 const G4double G4QAOLowEnergyLoss::taShellEnergy[6]  ={ 88926e-6, 18012e-6, 3210e-6, 575e-6, 108.7e-6, 30.8e-6};
 
  440 const G4double G4QAOLowEnergyLoss::taShellStrength[6]={ 0.0126, 0.0896, 0.2599, 0.3413, 0.2057, 0.0908};
 
  441 const G4double G4QAOLowEnergyLoss::auShellEnergy[6]={ 96235e-6, 25918e-6, 4116e-6, 599e-6, 87.3e-6, 36.9e-6};
 
  442 const G4double G4QAOLowEnergyLoss::auShellStrength[6]={ 0.0139, 0.0803, 0.2473, 0.423, 0.1124, 0.1231};
 
  443 const G4double G4QAOLowEnergyLoss::ptShellEnergy[6]={ 95017e-6, 25590e-6, 4063e-6, 576e-6, 81.9e-6, 31.4e-6};
 
  444 const G4double G4QAOLowEnergyLoss::ptShellStrength[6]={ 0.0129, 0.0745, 0.2295, 0.4627, 0.1324, 0.0879};
 
  447 const G4double G4QAOLowEnergyLoss::L0[67][2] =
 
  517 const G4double G4QAOLowEnergyLoss::L1[22][2] =
 
  543 const G4double G4QAOLowEnergyLoss::L2[14][2] =
 
  561 const G4int G4QAOLowEnergyLoss::nbOfElectronPerSubShell[1540] =
 
  582   2,  2,  2,  4,  2,  2,  4,  1,
 
  583   2,  2,  2,  4,  2,  2,  4,  2,
 
  584   2,  2,  2,  4,  2,  2,  4,  1,  2,
 
  585   2,  2,  2,  4,  2,  2,  4,  2,  2,
 
  586   2,  2,  2,  4,  2,  2,  4,  3,  2,
 
  587   2,  2,  2,  4,  2,  2,  4,  4,  2,
 
  588   2,  2,  2,  4,  2,  2,  4,  5,  2,
 
  589   2,  2,  2,  4,  2,  2,  4,  6,  2,
 
  590   2,  2,  2,  4,  2,  2,  4,  7,  2,
 
  591   2,  2,  2,  4,  2,  2,  4,  4,  4,  2,
 
  592   2,  2,  2,  4,  2,  2,  4,  4,  5,  2,
 
  593   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,
 
  594   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  1,
 
  595   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,
 
  596   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  3,
 
  597   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  4,
 
  598   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  5,
 
  599   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,
 
  600   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  1,
 
  601   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  2,
 
  602   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  1,  2,
 
  603   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  2,  2,
 
  604   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  3,  2,
 
  605   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  2,
 
  606   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  5,  2,
 
  607   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  6,  2,
 
  608   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  7,  2,
 
  609   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  4,  2,
 
  610   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  5,  2,
 
  611   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,
 
  612   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  1,
 
  613   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  2,
 
  614   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  3,
 
  615   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  4,
 
  616   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  5,
 
  617   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  2,  4,
 
  618   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  2,  4,  1,
 
  619   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  2,  4,  2,
 
  620   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  2,  4,  1,  2,
 
  621   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  2,  2,  2,  4,  2,
 
  622   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  3,  2,  2,  4,  2,
 
  623   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  4,  2,  2,  4,  2,
 
  624   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  5,  2,  2,  4,  2,
 
  625   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  2,  2,  4,  2,
 
  626   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  7,  2,  2,  4,  2,
 
  627   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  7,  2,  2,  4,  1,  2,
 
  628   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  9,  2,  2,  4,  2,
 
  629   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6, 10,  2,  2,  4,  2,
 
  630   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6, 11,  2,  2,  4,  2,
 
  631   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6, 12,  2,  2,  4,  2,
 
  632   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6, 13,  2,  2,  4,  2,
 
  633   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  2,
 
  634   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  1,  2,
 
  635   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  2,  2,
 
  636   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  3,  2,
 
  637   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  2,
 
  638   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  5,  2,
 
  639   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  6,  2,
 
  640   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  7,  2,
 
  641   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  9,  1,
 
  642   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  1,
 
  643   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,
 
  644   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,  1,
 
  645   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,  2,
 
  646   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,  3,
 
  647   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,  4,
 
  648   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,  2,  3,
 
  649   2,  2,  2,  4,  2,  2,  4,  4,  6,  2,  2,  4,  4,  6,  6,  8,  2,  2,  4,  4,  6,  2,  2,  4,
 
  650   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,
 
  651   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,
 
  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,  1,  2,
 
  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,  2,  2,
 
  654   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,
 
  655   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,
 
  656   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,
 
  657   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,
 
  658   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,
 
  659   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,
 
  660   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,
 
  661   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,
 
  662   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,
 
  663   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 
 
  666 const G4int G4QAOLowEnergyLoss::fNumberOfShells[101] =
 
  670  1 ,  1 ,  2 ,  2 ,  3 ,    3 ,  4 ,  4 ,  3 ,  4 ,  
 
  672  5 ,  5 ,  6 ,  6 ,  6 ,    6 ,  6 ,  7 ,  8 ,  8 ,  
 
  674  9 ,  9 ,  9 ,  9 ,  9 ,    9 ,  9 , 10 , 10 , 10 ,  
 
  676 11 , 11 , 11 , 11 , 11 ,   12 , 13 , 13 , 14 , 14 ,  
 
  678 14 , 14 , 14 , 14 , 14 ,   15 , 15 , 15 , 16 , 16 ,  
 
  682 16 , 16 , 16 , 17 , 18 ,   18 , 19 , 19 , 19 , 19 ,  
 
  684 19 , 19 , 19 , 20 , 19 ,   19 , 19 , 19 , 19 , 20 ,  
 
  686 21 , 21 , 21 , 21 , 21 ,   21 , 21 , 21 , 22 , 22 ,  
 
  688 23 , 23 , 23 , 23 , 24 ,   24 , 25 , 25 , 26 , 26 ,  
 
  690 27 , 27 , 27 , 26 , 26 ,   27 , 27 , 26 , 26 , 26    
 
G4double GetKineticEnergy() const 
 
G4bool IsInCharge(const G4DynamicParticle *particle, const G4Material *material) const 
 
const G4String & GetName() const 
 
G4double GetDensity() const 
 
G4ParticleDefinition * GetDefinition() const 
 
const G4Element * GetElement(G4int iel) const 
 
static G4AntiProton * AntiProtonDefinition()
 
static constexpr double twopi
 
G4GLOB_DLL std::ostream G4cout
 
G4double LowEnergyLimit(const G4ParticleDefinition *aParticle, const G4Material *material) const 
 
G4double GetCharge() const 
 
static constexpr double eplus
 
static constexpr double cm3
 
G4double G4Exp(G4double initial_x)
Exponential Function double precision. 
 
G4double energy(const ThreeVector &p, const G4double m)
 
G4QAOLowEnergyLoss(const G4String &name)
 
G4double TheValue(const G4DynamicParticle *particle, const G4Material *material)
 
static constexpr double MeV
 
size_t GetNumberOfElements() const 
 
G4double GetAtomicShell(G4int index) const 
 
G4double HighEnergyLimit(const G4ParticleDefinition *aParticle, const G4Material *material) const 
 
G4double GetPDGCharge() const 
 
static constexpr double keV