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;
514 G4double energy2,energy3,energy4,result;
516 energy2 = energy1*energy1;
517 energy3 = energy2*energy1;
518 energy4 = energy3*energy1;
520 result = fA1[k]/energy1+fA2[k]/energy2+fA3[k]/energy3+fA4[k]/energy4;
521 result *=hbarc/energy1;
536 G4double x0, x02, x03, x04, x05, x1, x2, xx1 ,xx2 , xx12,
537 c1, c2, c3, cof1, cof2, xln1, xln2, xln3, result;
542 for(
G4int i=1;i<=fIntervalNumber-1;++i)
544 x1 = fEnergyInterval[i];
545 x2 = fEnergyInterval[i+1];
556 xln3 = log((x2 + x0)/(x1 + x0));
563 c2 = (x2 - x1)*(x2 +x1)/(x12*x12);
564 c3 = (x2 -x1)*(x1*x1 + x1*x2 + x2*x2)/(x12*x12*x12);
566 result -= (fA1[i]/x02 + fA3[i]/x04)*xln1;
567 result -= (fA2[i]/x02 + fA4[i]/x04)*c1;
568 result -= fA3[i]*c2/2/x02;
569 result -= fA4[i]*c3/3/x02;
571 cof1 = fA1[i]/x02 + fA3[i]/x04;
572 cof2 = fA2[i]/x03 + fA4[i]/x05;
574 result += 0.5*(cof1 +cof2)*xln2;
575 result += 0.5*(cof1 - cof2)*xln3;
577 result *= 2*hbarc/pi;
592 G4double beta, be2,cof,x1,x2,x3,x4,x5,x6,x7,x8,result;
597 be2 = betaGammaSq/(1 + betaGammaSq);
601 x1 = log(2*electron_mass_c2/fSplineEnergy[i]);
603 if( betaGammaSq < 0.01 ) x2 = log(be2);
606 x2 = -log( (1/betaGammaSq - fRePartDielectricConst[i])*
607 (1/betaGammaSq - fRePartDielectricConst[i]) +
608 fImPartDielectricConst[i]*fImPartDielectricConst[i] )/2;
610 if( fImPartDielectricConst[i] == 0.0 ||betaGammaSq < 0.01 )
616 x3 = -fRePartDielectricConst[i] + 1/betaGammaSq;
617 x5 = -1 - fRePartDielectricConst[i] +
618 be2*((1 +fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
619 fImPartDielectricConst[i]*fImPartDielectricConst[i]);
621 x7 = atan2(fImPartDielectricConst[i],x3);
626 x4 = ((x1 + x2)*fImPartDielectricConst[i] + x6)/hbarc;
628 x8 = (1 + fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
629 fImPartDielectricConst[i]*fImPartDielectricConst[i];
631 result = (x4 + cof*fIntegralTerm[i]/fSplineEnergy[i]/fSplineEnergy[i]);
632 result = std::max(result, 1.0e-8);
633 result *= fine_structure_const/be2/pi;
638 result *= (1 - exp(-beta/betaBohr/lowCof));
659 G4double logarithm, x3, x5, argument, modul2, dNdxC;
664 be2 = betaGammaSq/(1 + betaGammaSq);
667 if( betaGammaSq < 0.01 ) logarithm = log(1.0+betaGammaSq);
670 logarithm = -log( (1/betaGammaSq - fRePartDielectricConst[i])*
671 (1/betaGammaSq - fRePartDielectricConst[i]) +
672 fImPartDielectricConst[i]*fImPartDielectricConst[i] )*0.5;
673 logarithm += log(1+1.0/betaGammaSq);
676 if( fImPartDielectricConst[i] == 0.0 || betaGammaSq < 0.01 )
682 x3 = -fRePartDielectricConst[i] + 1.0/betaGammaSq;
683 x5 = -1.0 - fRePartDielectricConst[i] +
684 be2*((1.0 +fRePartDielectricConst[i])*(1.0 + fRePartDielectricConst[i]) +
685 fImPartDielectricConst[i]*fImPartDielectricConst[i]);
686 if( x3 == 0.0 ) argument = 0.5*pi;
687 else argument = atan2(fImPartDielectricConst[i],x3);
690 dNdxC = ( logarithm*fImPartDielectricConst[i] + argument )/hbarc;
692 if(dNdxC < 1.0e-8) dNdxC = 1.0e-8;
694 dNdxC *= fine_structure_const/be2/pi;
696 dNdxC *= (1-exp(-be4/betaBohr4));
700 modul2 = (1.0 + fRePartDielectricConst[i])*(1.0 + fRePartDielectricConst[i]) +
701 fImPartDielectricConst[i]*fImPartDielectricConst[i];
718 G4double cof, resonance, modul2, dNdxP;
723 be2 = betaGammaSq/(1 + betaGammaSq);
726 resonance = log(2*electron_mass_c2*be2/fSplineEnergy[i]);
727 resonance *= fImPartDielectricConst[i]/hbarc;
729 dNdxP = ( resonance + cof*fIntegralTerm[i]/fSplineEnergy[i]/fSplineEnergy[i] );
731 dNdxP = std::max(dNdxP, 1.0e-8);
733 dNdxP *= fine_structure_const/be2/pi;
734 dNdxP *= (1-exp(-be4/betaBohr4));
738 modul2 = (1 + fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
739 fImPartDielectricConst[i]*fImPartDielectricConst[i];
756 fIntegralPAIySection[fSplineNumber] = 0;
757 fIntegralPAIdEdx[fSplineNumber] = 0;
758 fIntegralPAIySection[0] = 0;
759 G4int k = fIntervalNumber -1;
761 for(
G4int i = fSplineNumber-1; i >= 1; i--)
763 if(fSplineEnergy[i] >= fEnergyInterval[k])
765 fIntegralPAIySection[i] = fIntegralPAIySection[i+1] +
SumOverInterval(i);
770 fIntegralPAIySection[i] = fIntegralPAIySection[i+1] +
772 fIntegralPAIdEdx[i] = fIntegralPAIdEdx[i+1] +
788 fIntegralCerenkov[fSplineNumber] = 0;
789 fIntegralCerenkov[0] = 0;
790 k = fIntervalNumber -1;
792 for( i = fSplineNumber-1; i >= 1; i-- )
794 if(fSplineEnergy[i] >= fEnergyInterval[k])
801 fIntegralCerenkov[i] = fIntegralCerenkov[i+1] +
818 fIntegralPlasmon[fSplineNumber] = 0;
819 fIntegralPlasmon[0] = 0;
820 G4int k = fIntervalNumber -1;
821 for(
G4int i=fSplineNumber-1;i>=1;i--)
823 if(fSplineEnergy[i] >= fEnergyInterval[k])
829 fIntegralPlasmon[i] = fIntegralPlasmon[i+1] +
847 x0 = fSplineEnergy[i];
848 x1 = fSplineEnergy[i+1];
850 if( std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.e-6)
return 0.;
852 y0 = fDifPAIySection[i];
853 yy1 = fDifPAIySection[i+1];
857 a = log10(yy1/y0)/log10(c);
864 result = b*log(x1/x0);
868 result = y0*(x1*pow(c,a-1) - x0)/a;
873 fIntegralPAIySection[0] += b*log(x1/x0);
877 fIntegralPAIySection[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
889 x0 = fSplineEnergy[i];
890 x1 = fSplineEnergy[i+1];
892 if( std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.e-6)
return 0.;
894 y0 = fDifPAIySection[i];
895 yy1 = fDifPAIySection[i+1];
897 a = log10(yy1/y0)/log10(c);
903 result = b*log(x1/x0);
907 result = y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
923 x0 = fSplineEnergy[i];
924 x1 = fSplineEnergy[i+1];
926 if( std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.e-6)
return 0.;
928 y0 = fdNdxCerenkov[i];
929 yy1 = fdNdxCerenkov[i+1];
934 a = log10(yy1/y0)/log10(c);
936 if(a < 20.) b = y0/pow(x0,a);
939 if(a == 0) result = b*log(c);
940 else result = y0*(x1*pow(c,a-1) - x0)/a;
943 if( a == 0 ) fIntegralCerenkov[0] += b*log(x1/x0);
944 else fIntegralCerenkov[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
960 x0 = fSplineEnergy[i];
961 x1 = fSplineEnergy[i+1];
963 if( std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.e-6)
return 0.;
965 y0 = fdNdxPlasmon[i];
966 yy1 = fdNdxPlasmon[i+1];
968 a = log10(yy1/y0)/log10(c);
971 if(a < 20.) b = y0/pow(x0,a);
974 if(a == 0) result = b*log(x1/x0);
975 else result = y0*(x1*pow(c,a-1) - x0)/a;
978 if( a == 0 ) fIntegralPlasmon[0] += b*log(x1/x0);
979 else fIntegralPlasmon[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
993 G4double x0,x1,y0,yy1,a,d,e0,result;
996 x0 = fSplineEnergy[i];
997 x1 = fSplineEnergy[i+1];
998 y0 = fDifPAIySection[i];
999 yy1 = fDifPAIySection[i+1];
1003 a = log10(yy1/y0)/log10(x1/x0);
1006 if(a < 20.) b = y0/pow(x0,a);
1011 result = b*log(x0/e0);
1015 result = y0*(x0 - e0*pow(d,a-1))/a;
1020 fIntegralPAIySection[0] += b*log(x0/e0);
1024 fIntegralPAIySection[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1026 x0 = fSplineEnergy[i - 1];
1027 x1 = fSplineEnergy[i - 2];
1028 y0 = fDifPAIySection[i - 1];
1029 yy1 = fDifPAIySection[i - 2];
1033 a = log10(yy1/y0)/log10(x1/x0);
1039 result += b*log(e0/x0);
1043 result += y0*(e0*pow(d,a-1) - x0)/a;
1048 fIntegralPAIySection[0] += b*log(e0/x0);
1052 fIntegralPAIySection[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1063 G4double x0,x1,y0,yy1,a,d,e0,result;
1066 x0 = fSplineEnergy[i];
1067 x1 = fSplineEnergy[i+1];
1068 y0 = fDifPAIySection[i];
1069 yy1 = fDifPAIySection[i+1];
1073 a = log10(yy1/y0)/log10(x1/x0);
1076 if(a < 20.) b = y0/pow(x0,a);
1081 result = b*log(x0/e0);
1085 result = y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1087 x0 = fSplineEnergy[i - 1];
1088 x1 = fSplineEnergy[i - 2];
1089 y0 = fDifPAIySection[i - 1];
1090 yy1 = fDifPAIySection[i - 2];
1094 a = log10(yy1/y0)/log10(x1/x0);
1096 if(a < 20.) b = y0/pow(x0,a);
1101 result += b*log(e0/x0);
1105 result += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1119 G4double x0,x1,y0,yy1,a,e0,c,d,result;
1122 x0 = fSplineEnergy[i];
1123 x1 = fSplineEnergy[i+1];
1124 y0 = fdNdxCerenkov[i];
1125 yy1 = fdNdxCerenkov[i+1];
1132 a = log10(yy1/y0)/log10(c);
1135 if(a < 20.) b = y0/pow(x0,a);
1138 if( a == 0 ) result = b*log(x0/e0);
1139 else result = y0*(x0 - e0*pow(d,a-1))/a;
1142 if( a == 0 ) fIntegralCerenkov[0] += b*log(x0/e0);
1143 else fIntegralCerenkov[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1147 x0 = fSplineEnergy[i - 1];
1148 x1 = fSplineEnergy[i - 2];
1149 y0 = fdNdxCerenkov[i - 1];
1150 yy1 = fdNdxCerenkov[i - 2];
1157 a = log10(yy1/y0)/log10(x1/x0);
1160 if(a > 20.0) b = 0.0;
1161 else b = y0/pow(x0,a);
1166 if( a == 0 ) result += b*log(e0/x0);
1167 else result += y0*(e0*pow(d,a-1) - x0 )/a;
1171 if( a == 0 ) fIntegralCerenkov[0] += b*log(e0/x0);
1172 else fIntegralCerenkov[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1188 G4double x0,x1,y0,yy1,a,c,d,e0,result;
1191 x0 = fSplineEnergy[i];
1192 x1 = fSplineEnergy[i+1];
1193 y0 = fdNdxPlasmon[i];
1194 yy1 = fdNdxPlasmon[i+1];
1198 a = log10(yy1/y0)/log10(c);
1201 if(a < 20.) b = y0/pow(x0,a);
1204 if( a == 0 ) result = b*log(x0/e0);
1205 else result = y0*(x0 - e0*pow(d,a-1))/a;
1208 if( a == 0 ) fIntegralPlasmon[0] += b*log(x0/e0);
1209 else fIntegralPlasmon[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1211 x0 = fSplineEnergy[i - 1];
1212 x1 = fSplineEnergy[i - 2];
1213 y0 = fdNdxPlasmon[i - 1];
1214 yy1 = fdNdxPlasmon[i - 2];
1218 a = log10(yy1/y0)/log10(c);
1220 if(a < 20.) b = y0/pow(x0,a);
1223 if( a == 0 ) result += b*log(e0/x0);
1224 else result += y0*(e0*pow(d,a-1) - x0)/a;
1227 if( a == 0 ) fIntegralPlasmon[0] += b*log(e0/x0);
1228 else fIntegralPlasmon[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1249 meanNumber = fIntegralPAIySection[1]*step;
1250 numOfCollisions =
G4Poisson(meanNumber);
1254 while(numOfCollisions)
1258 for( iTransfer=1; iTransfer<=fSplineNumber; iTransfer++ )
1260 if(
position >= fIntegralPAIySection[iTransfer] )
break;
1262 loss += fSplineEnergy[iTransfer] ;
1286 meanNumber = fIntegralCerenkov[1]*step;
1287 numOfCollisions =
G4Poisson(meanNumber);
1291 while(numOfCollisions)
1295 for( iTransfer=1; iTransfer<=fSplineNumber; iTransfer++ )
1297 if(
position >= fIntegralCerenkov[iTransfer] )
break;
1299 loss += fSplineEnergy[iTransfer] ;
1323 meanNumber = fIntegralPlasmon[1]*step;
1324 numOfCollisions =
G4Poisson(meanNumber);
1328 while(numOfCollisions)
1332 for( iTransfer=1; iTransfer<=fSplineNumber; iTransfer++ )
1334 if(
position >= fIntegralPlasmon[iTransfer] )
break;
1336 loss += fSplineEnergy[iTransfer] ;
1348void G4PAIySection::CallError(
G4int i,
const G4String& methodName)
const
1350 G4String head =
"G4PAIySection::" + methodName +
"()";
1352 ed <<
"Wrong index " << i <<
" fSplineNumber= " << fSplineNumber;
1361G4int G4PAIySection::fNumberOfGammas = 111;
1363const G4double G4PAIySection::fLorentzFactor[112] =
13661.094989e+00, 1.107813e+00, 1.122369e+00, 1.138890e+00, 1.157642e+00,
13671.178925e+00, 1.203082e+00, 1.230500e+00, 1.261620e+00, 1.296942e+00,
13681.337032e+00, 1.382535e+00, 1.434181e+00, 1.492800e+00, 1.559334e+00,
13691.634850e+00, 1.720562e+00, 1.817845e+00, 1.928263e+00, 2.053589e+00,
13702.195835e+00, 2.357285e+00, 2.540533e+00, 2.748522e+00, 2.984591e+00,
13713.252533e+00, 3.556649e+00, 3.901824e+00, 4.293602e+00, 4.738274e+00,
13725.242981e+00, 5.815829e+00, 6.466019e+00, 7.203990e+00, 8.041596e+00,
13738.992288e+00, 1.007133e+01, 1.129606e+01, 1.268614e+01, 1.426390e+01,
13741.605467e+01, 1.808721e+01, 2.039417e+01, 2.301259e+01, 2.598453e+01,
13752.935771e+01, 3.318630e+01, 3.753180e+01, 4.246399e+01, 4.806208e+01,
13765.441597e+01, 6.162770e+01, 6.981310e+01, 7.910361e+01, 8.964844e+01,
13771.016169e+02, 1.152013e+02, 1.306197e+02, 1.481198e+02, 1.679826e+02,
13781.905270e+02, 2.161152e+02, 2.451581e+02, 2.781221e+02, 3.155365e+02,
13793.580024e+02, 4.062016e+02, 4.609081e+02, 5.230007e+02, 5.934765e+02,
13806.734672e+02, 7.642575e+02, 8.673056e+02, 9.842662e+02, 1.117018e+03,
13811.267692e+03, 1.438709e+03, 1.632816e+03, 1.853128e+03, 2.103186e+03,
13822.387004e+03, 2.709140e+03, 3.074768e+03, 3.489760e+03, 3.960780e+03,
13834.495394e+03, 5.102185e+03, 5.790900e+03, 6.572600e+03, 7.459837e+03,
13848.466860e+03, 9.609843e+03, 1.090714e+04, 1.237959e+04, 1.405083e+04,
13851.594771e+04, 1.810069e+04, 2.054434e+04, 2.331792e+04, 2.646595e+04,
13863.003901e+04, 3.409446e+04, 3.869745e+04, 4.392189e+04, 4.985168e+04,
13875.658206e+04, 6.422112e+04, 7.289153e+04, 8.273254e+04, 9.390219e+04,
1396const 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
size_t GetNumberOfElements() const
G4double GetElectronDensity() 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