64const G4double G4PAIySection::fDelta = 0.005;
65const G4double G4PAIySection::fError = 0.005;
67const G4int G4PAIySection::fMaxSplineSize = 500;
78 fDensity = fElectronDensity = fNormalizationCof = fLowEnergyCof = 0.0;
79 fIntervalNumber = fSplineNumber = 0;
82 betaBohr = fine_structure_const;
84 G4double betaBohr2 = fine_structure_const*fine_structure_const;
85 betaBohr4 = betaBohr2*betaBohr2*cofBetaBohr;
88 fRePartDielectricConst =
G4DataVector(fMaxSplineSize,0.0);
89 fImPartDielectricConst =
G4DataVector(fMaxSplineSize,0.0);
99 for(
G4int i = 0; i < 500; ++i )
101 for(
G4int j = 0; j < 112; ++j ) { fPAItable[i][j] = 0.0; }
111 return fLorentzFactor[j];
126 G4cout<<
"G4PAIySection::Initialize(...,G4SandiaTable* sandia)"<<
G4endl;
140 G4cout<<
"fDensity = "<<fDensity<<
"\t"<<fElectronDensity<<
"\t fIntervalNumber = "
141 <<fIntervalNumber<<
" (beta*gamma)^2= " << betaGammaSq <<
G4endl;
149 for( i = 1; i <= fIntervalNumber; ++i )
157 || i >= fIntervalNumber )
159 fEnergyInterval[i] = maxEnergyTransfer;
170 G4cout<<i<<
"\t"<<fEnergyInterval[i]/keV<<
"\t"<<fA1[i]<<
"\t"<<fA2[i]<<
"\t"
171 <<fA3[i]<<
"\t"<<fA4[i]<<
"\t"<<
G4endl;
175 G4cout<<
"last i = "<<i<<
"; "<<
"fIntervalNumber = "
176 <<fIntervalNumber<<
G4endl;
178 if( fEnergyInterval[fIntervalNumber] != maxEnergyTransfer )
181 fEnergyInterval[fIntervalNumber] = maxEnergyTransfer;
185 for( i = 1; i <= fIntervalNumber; ++i )
187 G4cout<<i<<
"\t"<<fEnergyInterval[i]/keV<<
"\t"<<fA1[i]<<
"\t"<<fA2[i]<<
"\t"
188 <<fA3[i]<<
"\t"<<fA4[i]<<
"\t"<<
G4endl;
192 G4cout<<
"Now checking, if two borders are too close together"<<
G4endl;
194 for( i = 1; i < fIntervalNumber; ++i )
196 if( fEnergyInterval[i+1]-fEnergyInterval[i] >
197 1.5*fDelta*(fEnergyInterval[i+1]+fEnergyInterval[i]) )
continue;
200 for( j = i; j < fIntervalNumber; j++ )
202 fEnergyInterval[j] = fEnergyInterval[j+1];
213 for( i = 1; i <= fIntervalNumber; ++i )
215 G4cout<<i<<
"\t"<<fEnergyInterval[i]/keV<<
"\t"<<fA1[i]<<
"\t"<<fA2[i]<<
"\t"
216 <<fA3[i]<<
"\t"<<fA4[i]<<
"\t"<<
G4endl;
224 fLorentzFactor[fRefGammaNumber]*fLorentzFactor[fRefGammaNumber] - 1;
231 for( i = 1; i <= fSplineNumber; ++i )
235 if( fVerbose > 0 )
G4cout<<i<<
"; dNdxPAI = "<<fDifPAIySection[i]<<
G4endl;
250 static const G4double p0 = 1.20923e+00;
251 static const G4double p1 = 3.53256e-01;
252 static const G4double p2 = -1.45052e-03;
257 for( i = 0; i < numberOfElements; ++i )
260 sumZ += thisMaterialZ[i];
261 thisMaterialCof[i] = p0+p1*thisMaterialZ[i]+p2*thisMaterialZ[i]*thisMaterialZ[i];
263 for( i = 0; i < numberOfElements; ++i )
265 sumCof += thisMaterialCof[i]*thisMaterialZ[i]/sumZ;
267 fLowEnergyCof = sumCof;
268 delete [] thisMaterialZ;
269 delete [] thisMaterialCof;
281 G4double betaGammaSq = fLorentzFactor[fRefGammaNumber]*
282 fLorentzFactor[fRefGammaNumber] - 1;
293 for( i = 0; i<= fSplineNumber; ++i)
295 fPAItable[i][fRefGammaNumber] = fIntegralPAIySection[i];
297 if(i != 0) fPAItable[i][0] = fSplineEnergy[i];
299 fPAItable[0][0] = fSplineNumber;
301 for(
G4int j = 1; j < 112; ++j)
303 if( j == fRefGammaNumber )
continue;
305 betaGammaSq = fLorentzFactor[j]*fLorentzFactor[j] - 1;
307 for(i = 1; i <= fSplineNumber; ++i)
317 for(i = 0; i <= fSplineNumber; ++i)
319 fPAItable[i][j] = fIntegralPAIySection[i];
333 for( i = 1; i <= fIntervalNumber-1; ++i)
335 for( j = 1; j <= 2; ++j)
337 fSplineNumber = (i-1)*2 + j;
339 if( j == 1 ) fSplineEnergy[fSplineNumber] = fEnergyInterval[i ]*(1+fDelta);
340 else fSplineEnergy[fSplineNumber] = fEnergyInterval[i+1]*(1-fDelta);
349 for(i=2;i<=fSplineNumber;++i)
351 if(fSplineEnergy[i]<fEnergyInterval[j+1])
353 fIntegralTerm[i] = fIntegralTerm[i-1] +
360 fEnergyInterval[j+1] );
362 fIntegralTerm[i] = fIntegralTerm[i-1] + x +
369 2*pi*pi*hbarc*hbarc*fine_structure_const/electron_mass_c2;
370 fNormalizationCof = nfactor*fElectronDensity/fIntegralTerm[fSplineNumber];
377 for(
G4int k=1; k<=fIntervalNumber-1; ++k)
382 fImPartDielectricConst[i] = fNormalizationCof*
384 fRePartDielectricConst[i] = fNormalizationCof*
386 fIntegralTerm[i] *= fNormalizationCof;
407 while ( (i < fSplineNumber) && (fSplineNumber < fMaxSplineSize-1) )
409 if(fSplineEnergy[i+1] > fEnergyInterval[k+1])
419 for(
G4int j = fSplineNumber; j >= i+2; j-- )
421 fSplineEnergy[j] = fSplineEnergy[j-1];
422 fImPartDielectricConst[j] = fImPartDielectricConst[j-1];
423 fRePartDielectricConst[j] = fRePartDielectricConst[j-1];
424 fIntegralTerm[j] = fIntegralTerm[j-1];
426 fDifPAIySection[j] = fDifPAIySection[j-1];
427 fdNdxCerenkov[j] = fdNdxCerenkov[j-1];
428 fdNdxPlasmon[j] = fdNdxPlasmon[j-1];
436 fSplineEnergy[i+1] = en1;
441 G4double a = log10(y2/yy1)/log10(x2/x1);
442 G4double b = log10(yy1) - a*log10(x1);
448 fImPartDielectricConst[i+1] = fNormalizationCof*
450 fRePartDielectricConst[i+1] = fNormalizationCof*
452 fIntegralTerm[i+1] = fIntegralTerm[i] + fNormalizationCof*
463 G4double x = 2*(fDifPAIySection[i+1] - y)/(fDifPAIySection[i+1] + y);
465 G4double delta = 2.*(fSplineEnergy[i+1]-fSplineEnergy[i])
466 /(fSplineEnergy[i+1]+fSplineEnergy[i]);
472 if( x > fError && fSplineNumber < fMaxSplineSize-1 && delta > 2.*fDelta )
497 c2 = (x2 - x1)*(x2 + x1)/(x12*x12);
498 c3 = (x2 - x1)*(x1*x1 + x1*x2 + x2*x2)/(x12*x12*x12);
501 return fA1[k]*log(x2/x1) + fA2[k]*c1 + fA3[k]*c2/2 + fA4[k]*c3/3;
513 G4double energy2,energy3,energy4,result;
515 energy2 = energy1*energy1;
516 energy3 = energy2*energy1;
517 energy4 = energy3*energy1;
519 result = fA1[k]/energy1+fA2[k]/energy2+fA3[k]/energy3+fA4[k]/energy4;
520 result *=hbarc/energy1;
535 G4double x0, x02, x03, x04, x05, x1, x2, xx1 ,xx2 , xx12,
536 c1, c2, c3, cof1, cof2, xln1, xln2, xln3, result;
541 for(
G4int i=1;i<=fIntervalNumber-1;++i)
543 x1 = fEnergyInterval[i];
544 x2 = fEnergyInterval[i+1];
555 xln3 = log((x2 + x0)/(x1 + x0));
562 c2 = (x2 - x1)*(x2 +x1)/(x12*x12);
563 c3 = (x2 -x1)*(x1*x1 + x1*x2 + x2*x2)/(x12*x12*x12);
565 result -= (fA1[i]/x02 + fA3[i]/x04)*xln1;
566 result -= (fA2[i]/x02 + fA4[i]/x04)*c1;
567 result -= fA3[i]*c2/2/x02;
568 result -= fA4[i]*c3/3/x02;
570 cof1 = fA1[i]/x02 + fA3[i]/x04;
571 cof2 = fA2[i]/x03 + fA4[i]/x05;
573 result += 0.5*(cof1 +cof2)*xln2;
574 result += 0.5*(cof1 - cof2)*xln3;
576 result *= 2*hbarc/pi;
591 G4double beta, be2,cof,x1,x2,x3,x4,x5,x6,x7,x8,result;
592 be2 = betaGammaSq/(1 + betaGammaSq);
593 beta = std::sqrt(be2);
595 x1 = log(2*electron_mass_c2/fSplineEnergy[i]);
597 if( betaGammaSq < 0.01 ) x2 = log(be2);
600 x2 = -log( (1/betaGammaSq - fRePartDielectricConst[i])*
601 (1/betaGammaSq - fRePartDielectricConst[i]) +
602 fImPartDielectricConst[i]*fImPartDielectricConst[i] )/2;
604 if( fImPartDielectricConst[i] == 0.0 ||betaGammaSq < 0.01 )
610 x3 = -fRePartDielectricConst[i] + 1/betaGammaSq;
611 x5 = -1 - fRePartDielectricConst[i] +
612 be2*((1 +fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
613 fImPartDielectricConst[i]*fImPartDielectricConst[i]);
615 x7 = std::atan2(fImPartDielectricConst[i],x3);
618 x4 = ((x1 + x2)*fImPartDielectricConst[i] + x6)/hbarc;
619 x8 = (1 + fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
620 fImPartDielectricConst[i]*fImPartDielectricConst[i];
622 result = (x4 + cof*fIntegralTerm[i]/fSplineEnergy[i]/fSplineEnergy[i]);
623 result = std::max(result, 1.0e-8);
624 result *= fine_structure_const/(be2*pi);
629 result *= (1 - std::exp(-beta/(betaBohr*lowCof)));
644 G4double logarithm, x3, x5, argument, modul2, dNdxC;
647 be2 = betaGammaSq/(1 + betaGammaSq);
650 if( betaGammaSq < 0.01 ) logarithm = log(1.0+betaGammaSq);
653 logarithm = -std::log( (1/betaGammaSq - fRePartDielectricConst[i])*
654 (1/betaGammaSq - fRePartDielectricConst[i]) +
655 fImPartDielectricConst[i]*fImPartDielectricConst[i] )*0.5;
656 logarithm += std::log(1+1.0/betaGammaSq);
659 if( fImPartDielectricConst[i] == 0.0 || betaGammaSq < 0.01 )
665 x3 = -fRePartDielectricConst[i] + 1.0/betaGammaSq;
666 x5 = -1.0 - fRePartDielectricConst[i] +
667 be2*((1.0 +fRePartDielectricConst[i])*(1.0 + fRePartDielectricConst[i]) +
668 fImPartDielectricConst[i]*fImPartDielectricConst[i]);
669 if( x3 == 0.0 ) argument = 0.5*pi;
670 else argument = std::atan2(fImPartDielectricConst[i],x3);
673 dNdxC = ( logarithm*fImPartDielectricConst[i] + argument )/hbarc;
675 if(dNdxC < 1.0e-8) dNdxC = 1.0e-8;
677 dNdxC *= fine_structure_const/be2/pi;
679 dNdxC *= (1 - std::exp(-be4/betaBohr4));
681 modul2 = (1.0 + fRePartDielectricConst[i])*(1.0 + fRePartDielectricConst[i]) +
682 fImPartDielectricConst[i]*fImPartDielectricConst[i];
698 G4double cof, resonance, modul2, dNdxP;
703 be2 = betaGammaSq/(1 + betaGammaSq);
706 resonance = std::log(2*electron_mass_c2*be2/fSplineEnergy[i]);
707 resonance *= fImPartDielectricConst[i]/hbarc;
709 dNdxP = ( resonance + cof*fIntegralTerm[i]/fSplineEnergy[i]/fSplineEnergy[i] );
711 dNdxP = std::max(dNdxP, 1.0e-8);
713 dNdxP *= fine_structure_const/be2/pi;
714 dNdxP *= (1 - std::exp(-be4/betaBohr4));
716 modul2 = (1 + fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
717 fImPartDielectricConst[i]*fImPartDielectricConst[i];
734 fIntegralPAIySection[fSplineNumber] = 0;
735 fIntegralPAIdEdx[fSplineNumber] = 0;
736 fIntegralPAIySection[0] = 0;
737 G4int k = fIntervalNumber -1;
739 for(
G4int i = fSplineNumber-1; i >= 1; i--)
741 if(fSplineEnergy[i] >= fEnergyInterval[k])
743 fIntegralPAIySection[i] = fIntegralPAIySection[i+1] +
SumOverInterval(i);
748 fIntegralPAIySection[i] = fIntegralPAIySection[i+1] +
750 fIntegralPAIdEdx[i] = fIntegralPAIdEdx[i+1] +
766 fIntegralCerenkov[fSplineNumber] = 0;
767 fIntegralCerenkov[0] = 0;
768 k = fIntervalNumber -1;
770 for( i = fSplineNumber-1; i >= 1; i-- )
772 if(fSplineEnergy[i] >= fEnergyInterval[k])
779 fIntegralCerenkov[i] = fIntegralCerenkov[i+1] +
796 fIntegralPlasmon[fSplineNumber] = 0;
797 fIntegralPlasmon[0] = 0;
798 G4int k = fIntervalNumber -1;
799 for(
G4int i=fSplineNumber-1;i>=1;i--)
801 if(fSplineEnergy[i] >= fEnergyInterval[k])
807 fIntegralPlasmon[i] = fIntegralPlasmon[i+1] +
824 x0 = fSplineEnergy[i];
825 x1 = fSplineEnergy[i+1];
827 if( std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.e-6)
return 0.;
829 y0 = fDifPAIySection[i];
830 yy1 = fDifPAIySection[i+1];
834 a = log10(yy1/y0)/log10(c);
838 if(a < 20.) b = y0/pow(x0,a);
843 result = b*log(x1/x0);
847 result = y0*(x1*pow(c,a-1) - x0)/a;
852 fIntegralPAIySection[0] += b*log(x1/x0);
856 fIntegralPAIySection[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
868 x0 = fSplineEnergy[i];
869 x1 = fSplineEnergy[i+1];
871 if( std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.e-6)
return 0.;
873 y0 = fDifPAIySection[i];
874 yy1 = fDifPAIySection[i+1];
876 a = log10(yy1/y0)/log10(c);
879 if(a < 20.) b = y0/pow(x0,a);
884 result = b*log(x1/x0);
888 result = y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
904 x0 = fSplineEnergy[i];
905 x1 = fSplineEnergy[i+1];
907 if( std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.e-6)
return 0.;
909 y0 = fdNdxCerenkov[i];
910 yy1 = fdNdxCerenkov[i+1];
915 a = log10(yy1/y0)/log10(c);
917 if(a < 20.) b = y0/pow(x0,a);
920 if(a == 0) result = b*log(c);
921 else result = y0*(x1*pow(c,a-1) - x0)/a;
924 if( a == 0 ) fIntegralCerenkov[0] += b*log(x1/x0);
925 else fIntegralCerenkov[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
941 x0 = fSplineEnergy[i];
942 x1 = fSplineEnergy[i+1];
944 if( std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.e-6)
return 0.;
946 y0 = fdNdxPlasmon[i];
947 yy1 = fdNdxPlasmon[i+1];
949 a = log10(yy1/y0)/log10(c);
952 if(a < 20.) b = y0/pow(x0,a);
955 if(a == 0) result = b*log(x1/x0);
956 else result = y0*(x1*pow(c,a-1) - x0)/a;
959 if( a == 0 ) fIntegralPlasmon[0] += b*log(x1/x0);
960 else fIntegralPlasmon[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
974 G4double x0,x1,y0,yy1,a,d,e0,result;
977 x0 = fSplineEnergy[i];
978 x1 = fSplineEnergy[i+1];
979 y0 = fDifPAIySection[i];
980 yy1 = fDifPAIySection[i+1];
983 a = log10(yy1/y0)/log10(x1/x0);
986 if(a < 20.) b = y0/pow(x0,a);
991 result = b*log(x0/e0);
995 result = y0*(x0 - e0*pow(d,a-1))/a;
1000 fIntegralPAIySection[0] += b*log(x0/e0);
1004 fIntegralPAIySection[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1006 x0 = fSplineEnergy[i - 1];
1007 x1 = fSplineEnergy[i - 2];
1008 y0 = fDifPAIySection[i - 1];
1009 yy1 = fDifPAIySection[i - 2];
1013 a = log10(yy1/y0)/log10(x1/x0);
1016 if(a < 20.) b = y0/pow(x0,a);
1021 result += b*log(e0/x0);
1025 result += y0*(e0*pow(d,a-1) - x0)/a;
1030 fIntegralPAIySection[0] += b*log(e0/x0);
1034 fIntegralPAIySection[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1045 G4double x0,x1,y0,yy1,a,d,e0,result;
1048 x0 = fSplineEnergy[i];
1049 x1 = fSplineEnergy[i+1];
1050 y0 = fDifPAIySection[i];
1051 yy1 = fDifPAIySection[i+1];
1054 a = log10(yy1/y0)/log10(x1/x0);
1057 if(a < 20.) b = y0/pow(x0,a);
1062 result = b*log(x0/e0);
1066 result = y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1068 x0 = fSplineEnergy[i - 1];
1069 x1 = fSplineEnergy[i - 2];
1070 y0 = fDifPAIySection[i - 1];
1071 yy1 = fDifPAIySection[i - 2];
1074 a = log10(yy1/y0)/log10(x1/x0);
1077 if(a < 20.) b = y0/pow(x0,a);
1082 result += b*log(e0/x0);
1086 result += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1099 G4double x0,x1,y0,yy1,a,e0,c,d,result;
1102 x0 = fSplineEnergy[i];
1103 x1 = fSplineEnergy[i+1];
1104 y0 = fdNdxCerenkov[i];
1105 yy1 = fdNdxCerenkov[i+1];
1112 a = log10(yy1/y0)/log10(c);
1115 if(a < 20.) b = y0/pow(x0,a);
1118 if( a == 0 ) result = b*log(x0/e0);
1119 else result = y0*(x0 - e0*pow(d,a-1))/a;
1122 if( a == 0 ) fIntegralCerenkov[0] += b*log(x0/e0);
1123 else fIntegralCerenkov[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1127 x0 = fSplineEnergy[i - 1];
1128 x1 = fSplineEnergy[i - 2];
1129 y0 = fdNdxCerenkov[i - 1];
1130 yy1 = fdNdxCerenkov[i - 2];
1137 a = log10(yy1/y0)/log10(x1/x0);
1140 if(a > 20.0) b = 0.0;
1141 else b = y0/pow(x0,a);
1146 if( a == 0 ) result += b*log(e0/x0);
1147 else result += y0*(e0*pow(d,a-1) - x0 )/a;
1151 if( a == 0 ) fIntegralCerenkov[0] += b*log(e0/x0);
1152 else fIntegralCerenkov[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1167 G4double x0,x1,y0,yy1,a,c,d,e0,result;
1170 x0 = fSplineEnergy[i];
1171 x1 = fSplineEnergy[i+1];
1172 y0 = fdNdxPlasmon[i];
1173 yy1 = fdNdxPlasmon[i+1];
1177 a = log10(yy1/y0)/log10(c);
1180 if(a < 20.) b = y0/pow(x0,a);
1183 if( a == 0 ) result = b*log(x0/e0);
1184 else result = y0*(x0 - e0*pow(d,a-1))/a;
1187 if( a == 0 ) fIntegralPlasmon[0] += b*log(x0/e0);
1188 else fIntegralPlasmon[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1190 x0 = fSplineEnergy[i - 1];
1191 x1 = fSplineEnergy[i - 2];
1192 y0 = fdNdxPlasmon[i - 1];
1193 yy1 = fdNdxPlasmon[i - 2];
1197 a = log10(yy1/y0)/log10(c);
1199 if(a < 20.) b = y0/pow(x0,a);
1202 if( a == 0 ) result += b*log(e0/x0);
1203 else result += y0*(e0*pow(d,a-1) - x0)/a;
1206 if( a == 0 ) fIntegralPlasmon[0] += b*log(e0/x0);
1207 else fIntegralPlasmon[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1228 meanNumber = fIntegralPAIySection[1]*step;
1229 numOfCollisions =
G4Poisson(meanNumber);
1233 while(numOfCollisions)
1237 for( iTransfer=1; iTransfer<=fSplineNumber; iTransfer++ )
1239 if(
position >= fIntegralPAIySection[iTransfer] )
break;
1241 loss += fSplineEnergy[iTransfer] ;
1265 meanNumber = fIntegralCerenkov[1]*step;
1266 numOfCollisions =
G4Poisson(meanNumber);
1270 while(numOfCollisions)
1274 for( iTransfer=1; iTransfer<=fSplineNumber; iTransfer++ )
1276 if(
position >= fIntegralCerenkov[iTransfer] )
break;
1278 loss += fSplineEnergy[iTransfer] ;
1302 meanNumber = fIntegralPlasmon[1]*step;
1303 numOfCollisions =
G4Poisson(meanNumber);
1307 while(numOfCollisions)
1311 for( iTransfer=1; iTransfer<=fSplineNumber; iTransfer++ )
1313 if(
position >= fIntegralPlasmon[iTransfer] )
break;
1315 loss += fSplineEnergy[iTransfer] ;
1327void G4PAIySection::CallError(
G4int i,
const G4String& methodName)
const
1329 G4String head =
"G4PAIySection::" + methodName +
"()";
1331 ed <<
"Wrong index " << i <<
" fSplineNumber= " << fSplineNumber;
1340G4int G4PAIySection::fNumberOfGammas = 111;
1342const G4double G4PAIySection::fLorentzFactor[112] =
13451.094989e+00, 1.107813e+00, 1.122369e+00, 1.138890e+00, 1.157642e+00,
13461.178925e+00, 1.203082e+00, 1.230500e+00, 1.261620e+00, 1.296942e+00,
13471.337032e+00, 1.382535e+00, 1.434181e+00, 1.492800e+00, 1.559334e+00,
13481.634850e+00, 1.720562e+00, 1.817845e+00, 1.928263e+00, 2.053589e+00,
13492.195835e+00, 2.357285e+00, 2.540533e+00, 2.748522e+00, 2.984591e+00,
13503.252533e+00, 3.556649e+00, 3.901824e+00, 4.293602e+00, 4.738274e+00,
13515.242981e+00, 5.815829e+00, 6.466019e+00, 7.203990e+00, 8.041596e+00,
13528.992288e+00, 1.007133e+01, 1.129606e+01, 1.268614e+01, 1.426390e+01,
13531.605467e+01, 1.808721e+01, 2.039417e+01, 2.301259e+01, 2.598453e+01,
13542.935771e+01, 3.318630e+01, 3.753180e+01, 4.246399e+01, 4.806208e+01,
13555.441597e+01, 6.162770e+01, 6.981310e+01, 7.910361e+01, 8.964844e+01,
13561.016169e+02, 1.152013e+02, 1.306197e+02, 1.481198e+02, 1.679826e+02,
13571.905270e+02, 2.161152e+02, 2.451581e+02, 2.781221e+02, 3.155365e+02,
13583.580024e+02, 4.062016e+02, 4.609081e+02, 5.230007e+02, 5.934765e+02,
13596.734672e+02, 7.642575e+02, 8.673056e+02, 9.842662e+02, 1.117018e+03,
13601.267692e+03, 1.438709e+03, 1.632816e+03, 1.853128e+03, 2.103186e+03,
13612.387004e+03, 2.709140e+03, 3.074768e+03, 3.489760e+03, 3.960780e+03,
13624.495394e+03, 5.102185e+03, 5.790900e+03, 6.572600e+03, 7.459837e+03,
13638.466860e+03, 9.609843e+03, 1.090714e+04, 1.237959e+04, 1.405083e+04,
13641.594771e+04, 1.810069e+04, 2.054434e+04, 2.331792e+04, 2.646595e+04,
13653.003901e+04, 3.409446e+04, 3.869745e+04, 4.392189e+04, 4.985168e+04,
13665.658206e+04, 6.422112e+04, 7.289153e+04, 8.273254e+04, 9.390219e+04,
1375const G4int G4PAIySection::fRefGammaNumber = 29;
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
G4long G4Poisson(G4double mean)
G4GLOB_DLL std::ostream G4cout
G4double GetDensity() const
const G4Element * GetElement(G4int iel) const
G4double GetElectronDensity() const
std::size_t GetNumberOfElements() const
G4double GetStepCerenkovLoss(G4double step)
G4double RePartDielectricConst(G4double energy)
G4double ImPartDielectricConst(G4int intervalNumber, G4double energy)
G4double GetStepPlasmonLoss(G4double step)
G4double SumOverBordPlasmon(G4int intervalNumber, G4double energy)
void NormShift(G4double betaGammaSq)
void ComputeLowEnergyCof(const G4Material *material)
G4double SumOverBorderdEdx(G4int intervalNumber, G4double energy)
G4double SumOverInterPlasmon(G4int intervalNumber)
void IntegralPAIySection()
G4double GetStepEnergyLoss(G4double step)
G4double SumOverInterCerenkov(G4int intervalNumber)
G4double SumOverInterval(G4int intervalNumber)
G4double SumOverBorder(G4int intervalNumber, G4double energy)
void Initialize(const G4Material *material, G4double maxEnergyTransfer, G4double betaGammaSq, G4SandiaTable *)
G4double SumOverBordCerenkov(G4int intervalNumber, G4double energy)
G4double RutherfordIntegral(G4int intervalNumber, G4double limitLow, G4double limitHigh)
G4double DifPAIySection(G4int intervalNumber, G4double betaGammaSq)
G4double SumOverIntervaldEdx(G4int intervalNumber)
G4double PAIdNdxCerenkov(G4int intervalNumber, G4double betaGammaSq)
G4double GetLorentzFactor(G4int j) const
G4double PAIdNdxPlasmon(G4int intervalNumber, G4double betaGammaSq)
void SplainPAI(G4double betaGammaSq)
G4int GetMaxInterval() const
G4double GetSandiaMatTablePAI(G4int, G4int) const