67 theZieglerFactor = eV*cm2*1.0e-15;
68 thePlasmonFactor = 28.816 * 28.816 * 1e-6;
85 currentMaterial = material;
88 for (
G4int i=0; i<numberOfElements; i++)
90 currentElement = (*theElementVector)[i] ;
104 G4int nbOfShell = GetNumberOfShell(Z);
105 if(nbOfShell < 1) nbOfShell = 1;
109 G4double v = c_light * std::sqrt( 2.0 * kineticEnergy / proton_mass_c2 );
110 G4double coeff = twopi*proton_mass_c2*z / (electron_mass_c2*theZieglerFactor) ;
111 G4double fBetheVelocity = fine_structure_const * c_light / v;
112 coeff *= fine_structure_const * fine_structure_const * hbarc_squared /
115 G4double l0Term = 0, l1Term = 0, l2Term = 0;
117 for (
G4int nos = 0 ; nos < nbOfShell ; nos++){
120 G4double NormalizedEnergy = ( 2.0 * electron_mass_c2 * v * v ) /
121 ( c_squared * GetShellEnergy(Z, nos) );
122 G4double shStrength = GetShellStrength(Z, nos);
124 l0 = GetL0(NormalizedEnergy);
125 l0Term += shStrength * l0;
127 l1 = GetL1(NormalizedEnergy);
128 l1Term += shStrength * l1;
130 l2 = GetL2(NormalizedEnergy);
131 l2Term += shStrength * l2;
149 dedx = coeff * (l0Term - fBetheVelocity*l1Term + fBetheVelocity*fBetheVelocity*l2Term);
154 if(dedx < 0.0) dedx = 0.0;
159G4int G4hQAOModel::GetNumberOfShell(
G4int Z)
const
165 for(
G4int i=0; i<numberOfMaterials; i++) {
167 if(materialAvailable[i] == Z){
168 nShell = nbofShellForMaterial[i];
171 else nShell = fNumberOfShells[Z];
181 G4double shellEnergy = alShellEnergy[0];
182 if (Z == 13) shellEnergy = alShellEnergy[nbOfTheShell];
183 else if(Z == 14) shellEnergy = siShellEnergy[nbOfTheShell];
184 else if(Z == 29) shellEnergy = cuShellEnergy[nbOfTheShell];
185 else if(Z == 73) shellEnergy = taShellEnergy[nbOfTheShell];
186 else if(Z == 79) shellEnergy = auShellEnergy[nbOfTheShell];
187 else if(Z == 78) shellEnergy = ptShellEnergy[nbOfTheShell];
188 else shellEnergy = GetOscillatorEnergy(Z, nbOfTheShell);
196 G4double squaredPlasmonEnergy = thePlasmonFactor;
199 squaredPlasmonEnergy *= (currentMaterial->
GetDensity()*zeff*cm3)
200 / (g * currentElement->
GetN());
202 G4double occn = GetOccupationNumber(Z,nbOfTheShell);
203 G4double plasmonTerm = 0.66667 * occn * squaredPlasmonEnergy/(zeff*zeff);
207 ionTerm = ionTerm*ionTerm ;
209 G4double oscShellEnergy = std::sqrt( ionTerm + plasmonTerm );
221 return oscShellEnergy;
227 G4double shellStrength = alShellStrength[0];
229 if(Z == 13) shellStrength = alShellStrength[nbOfTheShell];
230 else if(Z == 14) shellStrength = siShellStrength[nbOfTheShell];
231 else if(Z == 29) shellStrength = cuShellStrength[nbOfTheShell];
232 else if(Z == 73) shellStrength = taShellStrength[nbOfTheShell];
233 else if(Z == 79) shellStrength = auShellStrength[nbOfTheShell];
234 else if(Z == 78) shellStrength = ptShellStrength[nbOfTheShell];
235 else shellStrength = GetOccupationNumber(Z,nbOfTheShell) / (
G4double)Z;
237 return shellStrength;
243 G4int indice = ShellNb ;
244 for (
G4int z = 1 ; z < Z ; z++) {indice += fNumberOfShells[z];}
254 for(n = 0;
n < sizeL0;
n++) {
255 if( normEnergy < L0[n][0] )
break;
258 if(n >= sizeL0)
n = sizeL0 - 1 ;
262 G4double bethe = l0p + (l0 - l0p) * ( normEnergy - L0[n-1][0]) /
263 (L0[
n][0] - L0[
n-1][0]);
272 for(n = 0;
n < sizeL1;
n++) {
273 if( normEnergy < L1[n][0] )
break;
276 if(n >= sizeL1)
n = sizeL1 - 1 ;
280 G4double barkas= l1p + (l1 - l1p) * ( normEnergy - L1[n-1][0]) /
281 (L1[
n][0] - L1[
n-1][0]);
291 for(n = 0;
n < sizeL2;
n++) {
292 if( normEnergy < L2[n][0] )
break;
295 if(n >= sizeL2)
n = sizeL2 - 1 ;
299 G4double bloch = l2p + (l2 - l2p) * ( normEnergy - L2[n-1][0]) /
300 (L2[
n][0] - L2[
n-1][0]);
306const G4int G4hQAOModel::materialAvailable[6] = {13,14,29,73,79,78};
315const G4int G4hQAOModel::nbofShellForMaterial[6] = {3,3,4,6,6,6};
317const G4double G4hQAOModel::alShellEnergy[3] ={ 2795e-6, 202e-6, 16.9e-6};
318const G4double G4hQAOModel::alShellStrength[3]={ 0.1349, 0.6387, 0.2264};
319const G4double G4hQAOModel::siShellEnergy[3] ={ 3179e-6, 249e-6, 20.3e-6 };
320const G4double G4hQAOModel::siShellStrength[3]={ 0.1222, 0.5972, 0.2806};
321const G4double G4hQAOModel::cuShellEnergy[4] ={ 16931e-6, 1930e-6, 199e-6, 39.6e-6};
322const G4double G4hQAOModel::cuShellStrength[4]={ 0.0505, 0.2561, 0.4913, 0.2021};
323const G4double G4hQAOModel::taShellEnergy[6] ={ 88926e-6, 18012e-6, 3210e-6, 575e-6, 108.7e-6, 30.8e-6};
324const G4double G4hQAOModel::taShellStrength[6]={ 0.0126, 0.0896, 0.2599, 0.3413, 0.2057, 0.0908};
325const G4double G4hQAOModel::auShellEnergy[6]={ 96235e-6, 25918e-6, 4116e-6, 599e-6, 87.3e-6, 36.9e-6};
326const G4double G4hQAOModel::auShellStrength[6]={ 0.0139, 0.0803, 0.2473, 0.423, 0.1124, 0.1231};
327const G4double G4hQAOModel::ptShellEnergy[6]={ 95017e-6, 25590e-6, 4063e-6, 576e-6, 81.9e-6, 31.4e-6};
328const G4double G4hQAOModel::ptShellStrength[6]={ 0.0129, 0.0745, 0.2295, 0.4627, 0.1324, 0.0879};
331const G4double G4hQAOModel::L0[67][2] =
402const G4double G4hQAOModel::L1[22][2] =
429const G4double G4hQAOModel::L2[14][2] =
448const G4int G4hQAOModel::nbOfElectronPerSubShell[1540] =
469 2, 2, 2, 4, 2, 2, 4, 1,
470 2, 2, 2, 4, 2, 2, 4, 2,
471 2, 2, 2, 4, 2, 2, 4, 1, 2,
472 2, 2, 2, 4, 2, 2, 4, 2, 2,
473 2, 2, 2, 4, 2, 2, 4, 3, 2,
474 2, 2, 2, 4, 2, 2, 4, 4, 2,
475 2, 2, 2, 4, 2, 2, 4, 5, 2,
476 2, 2, 2, 4, 2, 2, 4, 6, 2,
477 2, 2, 2, 4, 2, 2, 4, 7, 2,
478 2, 2, 2, 4, 2, 2, 4, 4, 4, 2,
479 2, 2, 2, 4, 2, 2, 4, 4, 5, 2,
480 2, 2, 2, 4, 2, 2, 4, 4, 6, 2,
481 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 1,
482 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2,
483 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 3,
484 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 4,
485 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 5,
486 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4,
487 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 1,
488 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 2,
489 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 1, 2,
490 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 2, 2,
491 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 3, 2,
492 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 2,
493 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 5, 2,
494 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 6, 2,
495 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 7, 2,
496 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 4, 2,
497 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 5, 2,
498 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2,
499 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 1,
500 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2,
501 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 3,
502 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 4,
503 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 5,
504 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4,
505 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 1,
506 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 2,
507 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 4, 1, 2,
508 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 2, 2, 2, 4, 2,
509 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 3, 2, 2, 4, 2,
510 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 4, 2, 2, 4, 2,
511 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 5, 2, 2, 4, 2,
512 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 2, 2, 4, 2,
513 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 7, 2, 2, 4, 2,
514 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 7, 2, 2, 4, 1, 2,
515 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 9, 2, 2, 4, 2,
516 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 10, 2, 2, 4, 2,
517 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 11, 2, 2, 4, 2,
518 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 12, 2, 2, 4, 2,
519 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 13, 2, 2, 4, 2,
520 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 2,
521 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 1, 2,
522 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 2, 2,
523 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 3, 2,
524 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 2,
525 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 5, 2,
526 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 6, 2,
527 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 7, 2,
528 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 9, 1,
529 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 1,
530 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2,
531 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 1,
532 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2,
533 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 3,
534 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 4,
535 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 3,
536 2, 2, 2, 4, 2, 2, 4, 4, 6, 2, 2, 4, 4, 6, 6, 8, 2, 2, 4, 4, 6, 2, 2, 4,
537 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,
538 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,
539 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,
540 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,
541 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,
542 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,
543 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,
544 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,
545 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,
546 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,
547 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,
548 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,
549 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,
550 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
553const G4int G4hQAOModel::fNumberOfShells[101] =
557 1 , 1 , 2 , 2 , 3 , 3 , 4 , 4 , 3 , 4 ,
559 5 , 5 , 6 , 6 , 6 , 6 , 6 , 7 , 8 , 8 ,
561 9 , 9 , 9 , 9 , 9 , 9 , 9 , 10 , 10 , 10 ,
56311 , 11 , 11 , 11 , 11 , 12 , 13 , 13 , 14 , 14 ,
56514 , 14 , 14 , 14 , 14 , 15 , 15 , 15 , 16 , 16 ,
56916 , 16 , 16 , 17 , 18 , 18 , 19 , 19 , 19 , 19 ,
57119 , 19 , 19 , 20 , 19 , 19 , 19 , 19 , 19 , 20 ,
57321 , 21 , 21 , 21 , 21 , 21 , 21 , 21 , 22 , 22 ,
57523 , 23 , 23 , 23 , 24 , 24 , 25 , 25 , 26 , 26 ,
57727 , 27 , 27 , 26 , 26 , 27 , 27 , 26 , 26 , 26
std::vector< G4Element * > G4ElementVector
G4double GetAtomicShell(G4int index) const
G4double GetDensity() const
const G4ElementVector * GetElementVector() const
size_t GetNumberOfElements() const
const G4double * GetAtomicNumDensityVector() const
G4double ElectronicStoppingPower(G4double z, G4double kineticEnergy) const
G4double StoppingPower(const G4Material *material, G4double kineticEnergy)