94 fDensity = fElectronDensity = fNormalizationCof = fLowEnergyCof = 0.0;
95 fIntervalNumber = fSplineNumber = 0;
99 fRePartDielectricConst =
G4DataVector(fMaxSplineSize,0.0);
100 fImPartDielectricConst =
G4DataVector(fMaxSplineSize,0.0);
107 fIntegralPAIxSection =
G4DataVector(fMaxSplineSize,0.0);
116 for(
G4int i = 0; i < 500; ++i )
118 for(
G4int j = 0; j < 112; ++j ) fPAItable[i][j] = 0.0;
131 fMaterialIndex = matIndex;
134 fSandia = (*theMaterialTable)[matIndex]->GetSandiaTable();
141 for (i = 0; i < fSandia->GetMaxInterval()-1; i++)
145 for (i = 0; i < fSandia->GetMaxInterval()-1; i++)
147 (*(*fMatSandiaMatrix)[i])[0] = fSandia->GetSandiaMatTable(i,0);
149 for(j = 1; j < 5; j++)
151 (*(*fMatSandiaMatrix)[i])[j] = fSandia->GetSandiaMatTable(i,j)*fDensity;
154 ComputeLowEnergyCof();
164 fMatSandiaMatrix = 0;
169 fMaterialIndex = materialIndex;
170 fDensity = (*theMaterialTable)[materialIndex]->GetDensity();
171 fElectronDensity = (*theMaterialTable)[materialIndex]->
172 GetElectronDensity();
173 fIntervalNumber = (*theMaterialTable)[materialIndex]->
174 GetSandiaTable()->GetMatNbOfIntervals();
184 for(i = 1; i <= fIntervalNumber; i++ )
186 if(((*theMaterialTable)[materialIndex]->
187 GetSandiaTable()->GetSandiaCofForMaterial(i-1,0) >= maxEnergyTransfer) ||
188 i > fIntervalNumber )
190 fEnergyInterval[i] = maxEnergyTransfer;
194 fEnergyInterval[i] = (*theMaterialTable)[materialIndex]->
195 GetSandiaTable()->GetSandiaCofForMaterial(i-1,0);
196 fA1[i] = (*theMaterialTable)[materialIndex]->
197 GetSandiaTable()->GetSandiaCofForMaterial(i-1,1);
198 fA2[i] = (*theMaterialTable)[materialIndex]->
199 GetSandiaTable()->GetSandiaCofForMaterial(i-1,2);
200 fA3[i] = (*theMaterialTable)[materialIndex]->
201 GetSandiaTable()->GetSandiaCofForMaterial(i-1,3);
202 fA4[i] = (*theMaterialTable)[materialIndex]->
203 GetSandiaTable()->GetSandiaCofForMaterial(i-1,4);
207 if(fEnergyInterval[fIntervalNumber] != maxEnergyTransfer)
210 fEnergyInterval[fIntervalNumber] = maxEnergyTransfer;
215 for(i=1;i<fIntervalNumber;i++)
217 if(fEnergyInterval[i+1]-fEnergyInterval[i] >
218 1.5*fDelta*(fEnergyInterval[i+1]+fEnergyInterval[i]))
224 for(j=i;j<fIntervalNumber;j++)
226 fEnergyInterval[j] = fEnergyInterval[j+1];
257 ComputeLowEnergyCof();
279 fDensity = fElectronDensity = fNormalizationCof = fLowEnergyCof = 0.0;
280 fIntervalNumber = fSplineNumber = 0;
299 for(
G4int i = 0; i < 500; ++i )
301 for(
G4int j = 0; j < 112; ++j ) fPAItable[i][j] = 0.0;
305 fMatSandiaMatrix = 0;
309 fMaterialIndex = materialIndex;
310 fDensity = (*theMaterialTable)[materialIndex]->GetDensity();
311 fElectronDensity = (*theMaterialTable)[materialIndex]->GetElectronDensity();
313 fIntervalNumber = intNumber;
331 for( i = 1; i <= fIntervalNumber; i++ )
333 if( ( photoAbsCof[i-1][0] >= maxEnergyTransfer ) ||
334 i > fIntervalNumber )
336 fEnergyInterval[i] = maxEnergyTransfer;
340 fEnergyInterval[i] = photoAbsCof[i-1][0];
341 fA1[i] = photoAbsCof[i-1][1];
342 fA2[i] = photoAbsCof[i-1][2];
343 fA3[i] = photoAbsCof[i-1][3];
344 fA4[i] = photoAbsCof[i-1][4];
350 if(fEnergyInterval[fIntervalNumber] != maxEnergyTransfer)
353 fEnergyInterval[fIntervalNumber] = maxEnergyTransfer;
357 for( i = 1; i <= fIntervalNumber; i++ )
364 for( i = 1; i < fIntervalNumber; i++ )
366 if(fEnergyInterval[i+1]-fEnergyInterval[i] >
367 1.5*fDelta*(fEnergyInterval[i+1]+fEnergyInterval[i]))
373 for(j=i;j<fIntervalNumber;j++)
375 fEnergyInterval[j] = fEnergyInterval[j+1];
387 for( i = 1; i <= fIntervalNumber; i++ )
395 ComputeLowEnergyCof();
397 fLorentzFactor[fRefGammaNumber]*fLorentzFactor[fRefGammaNumber] - 1;
399 NormShift(betaGammaSqRef);
400 SplainPAI(betaGammaSqRef);
404 for(i = 1; i <= fSplineNumber; i++)
406 fdNdxCerenkov[i] = PAIdNdxCerenkov(i,betaGammaSq);
407 fdNdxMM[i] = PAIdNdxMM(i,betaGammaSq);
408 fdNdxPlasmon[i] = PAIdNdxPlasmon(i,betaGammaSq);
409 fdNdxResonance[i] = PAIdNdxResonance(i,betaGammaSq);
410 fDifPAIxSection[i] = DifPAIxSection(i,betaGammaSq);
419 IntegralPAIxSection();
438 fMatSandiaMatrix = 0;
442 G4int i, j, numberOfElements;
444 fMaterialIndex = materialIndex;
445 fDensity = (*theMaterialTable)[materialIndex]->GetDensity();
446 fElectronDensity = (*theMaterialTable)[materialIndex]->GetElectronDensity();
447 numberOfElements = (*theMaterialTable)[materialIndex]->GetNumberOfElements();
449 G4int* thisMaterialZ =
new G4int[numberOfElements];
451 for( i = 0; i < numberOfElements; i++ )
453 thisMaterialZ[i] = (
G4int)(*theMaterialTable)[materialIndex]->
454 GetElement(i)->GetZ();
457 fSandia = (*theMaterialTable)[materialIndex]->GetSandiaTable();
459 fIntervalNumber = thisMaterialSandiaTable.
SandiaIntervals(thisMaterialZ,
463 (*theMaterialTable)[materialIndex]->GetFractionVector() ,
464 numberOfElements,fIntervalNumber);
481 for( i = 1; i <= fIntervalNumber; i++ )
486 fEnergyInterval[i] = maxEnergyTransfer;
497 if(fEnergyInterval[fIntervalNumber] != maxEnergyTransfer)
500 fEnergyInterval[fIntervalNumber] = maxEnergyTransfer;
501 fA1[fIntervalNumber] = fA1[fIntervalNumber-1];
502 fA2[fIntervalNumber] = fA2[fIntervalNumber-1];
503 fA3[fIntervalNumber] = fA3[fIntervalNumber-1];
504 fA4[fIntervalNumber] = fA4[fIntervalNumber-1];
506 for(i=1;i<=fIntervalNumber;i++)
513 for( i = 1; i < fIntervalNumber; i++ )
515 if(fEnergyInterval[i+1]-fEnergyInterval[i] >
516 1.5*fDelta*(fEnergyInterval[i+1]+fEnergyInterval[i]))
522 for( j = i; j < fIntervalNumber; j++ )
524 fEnergyInterval[j] = fEnergyInterval[j+1];
556 ComputeLowEnergyCof();
558 fLorentzFactor[fRefGammaNumber]*fLorentzFactor[fRefGammaNumber] - 1;
560 NormShift(betaGammaSqRef);
561 SplainPAI(betaGammaSqRef);
565 for(i = 1; i <= fSplineNumber; i++)
567 fDifPAIxSection[i] = DifPAIxSection(i,betaGammaSq);
568 fdNdxCerenkov[i] = PAIdNdxCerenkov(i,betaGammaSq);
569 fdNdxMM[i] = PAIdNdxMM(i,betaGammaSq);
570 fdNdxPlasmon[i] = PAIdNdxPlasmon(i,betaGammaSq);
571 fdNdxResonance[i] = PAIdNdxResonance(i,betaGammaSq);
573 IntegralPAIxSection();
594 delete fMatSandiaMatrix;
599 return fLorentzFactor[j];
614 G4cout<<
"G4PAIxSection::Initialize(...,G4SandiaTable* sandia)"<<
G4endl;
628 G4cout<<
"fDensity = "<<fDensity<<
"\t"<<fElectronDensity<<
"\t fIntervalNumber = "<<fIntervalNumber<<
G4endl;
636 for( i = 1; i <= fIntervalNumber; i++ )
645 fEnergyInterval[i] = maxEnergyTransfer;
657 G4cout<<i<<
"\t"<<fEnergyInterval[i]/
keV<<
"\t"<<fA1[i]<<
"\t"<<fA2[i]<<
"\t"
658 <<fA3[i]<<
"\t"<<fA4[i]<<
"\t"<<
G4endl;
661 if( fVerbose > 0 )
G4cout<<
"last i = "<<i<<
"; "<<
"fIntervalNumber = "<<fIntervalNumber<<
G4endl;
663 if( fEnergyInterval[fIntervalNumber] != maxEnergyTransfer )
666 fEnergyInterval[fIntervalNumber] = maxEnergyTransfer;
670 for( i = 1; i <= fIntervalNumber; i++ )
672 G4cout<<i<<
"\t"<<fEnergyInterval[i]/
keV<<
"\t"<<fA1[i]<<
"\t"<<fA2[i]<<
"\t"
673 <<fA3[i]<<
"\t"<<fA4[i]<<
"\t"<<
G4endl;
676 if( fVerbose > 0 )
G4cout<<
"Now checking, if two borders are too close together"<<
G4endl;
678 for( i = 1; i < fIntervalNumber; i++ )
680 if( fEnergyInterval[i+1]-fEnergyInterval[i] >
681 1.5*fDelta*(fEnergyInterval[i+1]+fEnergyInterval[i]) && fEnergyInterval[i] > 0.)
continue;
684 if( fVerbose > 0 )
G4cout<<i<<
"\t"<<fEnergyInterval[i]/
keV<<
"\t"<<fEnergyInterval[i+1]/
keV;
686 for( j = i; j < fIntervalNumber; j++ )
688 fEnergyInterval[j] = fEnergyInterval[j+1];
700 for( i = 1; i <= fIntervalNumber; i++ )
702 G4cout<<i<<
"\t"<<fEnergyInterval[i]/
keV<<
"\t"<<fA1[i]<<
"\t"<<fA2[i]<<
"\t"
703 <<fA3[i]<<
"\t"<<fA4[i]<<
"\t"<<
G4endl;
708 ComputeLowEnergyCof(material);
711 fLorentzFactor[fRefGammaNumber]*fLorentzFactor[fRefGammaNumber] - 1;
713 NormShift(betaGammaSqRef);
714 SplainPAI(betaGammaSqRef);
718 for( i = 1; i <= fSplineNumber; i++ )
720 fDifPAIxSection[i] = DifPAIxSection(i,betaGammaSq);
723 fdNdxCerenkov[i] = PAIdNdxCerenkov(i,betaGammaSq);
724 fdNdxMM[i] = PAIdNdxMM(i,betaGammaSq);
725 fdNdxPlasmon[i] = PAIdNdxPlasmon(i,betaGammaSq);
726 fdNdxResonance[i] = PAIdNdxResonance(i,betaGammaSq);
728 IntegralPAIxSection();
734 for( i = 1; i <= fSplineNumber; i++ )
736 if(fVerbose>0)
G4cout<<i<<
"; w = "<<fSplineEnergy[i]/
keV<<
" keV; dN/dx_>w = "<<fIntegralPAIxSection[i]<<
" 1/mm"<<
G4endl;
751 static const G4double p0 = 1.20923e+00;
752 static const G4double p1 = 3.53256e-01;
753 static const G4double p2 = -1.45052e-03;
758 for( i = 0; i < numberOfElements; i++ )
761 sumZ += thisMaterialZ[i];
762 thisMaterialCof[i] = p0+p1*thisMaterialZ[i]+p2*thisMaterialZ[i]*thisMaterialZ[i];
764 for( i = 0; i < numberOfElements; i++ )
766 sumCof += thisMaterialCof[i]*thisMaterialZ[i]/sumZ;
768 fLowEnergyCof = sumCof;
769 delete [] thisMaterialZ;
770 delete [] thisMaterialCof;
782 G4int i, numberOfElements = (*theMaterialTable)[fMaterialIndex]->GetNumberOfElements();
792 for( i = 0; i < numberOfElements; i++ )
794 thisMaterialZ[i] = (*theMaterialTable)[fMaterialIndex]->GetElement(i)->GetZ();
795 sumZ += thisMaterialZ[i];
796 thisMaterialCof[i] = p0+p1*thisMaterialZ[i]+p2*thisMaterialZ[i]*thisMaterialZ[i];
798 for( i = 0; i < numberOfElements; i++ )
800 sumCof += thisMaterialCof[i]*thisMaterialZ[i]/sumZ;
802 fLowEnergyCof = sumCof;
804 delete [] thisMaterialZ;
805 delete [] thisMaterialCof;
816 G4double betaGammaSq = fLorentzFactor[fRefGammaNumber]*
817 fLorentzFactor[fRefGammaNumber] - 1;
821 NormShift(betaGammaSq);
822 SplainPAI(betaGammaSq);
824 IntegralPAIxSection();
830 for(i = 0; i<= fSplineNumber; i++)
832 fPAItable[i][fRefGammaNumber] = fIntegralPAIxSection[i];
835 fPAItable[i][0] = fSplineEnergy[i];
838 fPAItable[0][0] = fSplineNumber;
840 for(
G4int j = 1; j < 112; j++)
842 if( j == fRefGammaNumber )
continue;
844 betaGammaSq = fLorentzFactor[j]*fLorentzFactor[j] - 1;
846 for(i = 1; i <= fSplineNumber; i++)
848 fDifPAIxSection[i] = DifPAIxSection(i,betaGammaSq);
849 fdNdxCerenkov[i] = PAIdNdxCerenkov(i,betaGammaSq);
850 fdNdxMM[i] = PAIdNdxMM(i,betaGammaSq);
851 fdNdxPlasmon[i] = PAIdNdxPlasmon(i,betaGammaSq);
852 fdNdxResonance[i] = PAIdNdxResonance(i,betaGammaSq);
854 IntegralPAIxSection();
860 for(i = 0; i <= fSplineNumber; i++)
862 fPAItable[i][j] = fIntegralPAIxSection[i];
877 if(fVerbose>0)
G4cout<<
" G4PAIxSection::NormShift call "<<
G4endl;
880 for( i = 1; i <= fIntervalNumber-1; i++ )
882 for( j = 1; j <= 2; j++ )
884 fSplineNumber = (i-1)*2 + j;
886 if( j == 1 ) fSplineEnergy[fSplineNumber] = fEnergyInterval[i ]*(1+fDelta);
887 else fSplineEnergy[fSplineNumber] = fEnergyInterval[i+1]*(1-fDelta);
888 if(fVerbose>0)
G4cout<<
"cn = "<<fSplineNumber<<
"; "<<
"w = "<<fSplineEnergy[fSplineNumber]/
keV<<
" keV"<<
G4endl;
891 fIntegralTerm[1]=RutherfordIntegral(1,fEnergyInterval[1],fSplineEnergy[1]);
895 for( i = 2; i <= fSplineNumber; i++ )
897 if( fSplineEnergy[i]<fEnergyInterval[j+1] )
899 fIntegralTerm[i] = fIntegralTerm[i-1] +
900 RutherfordIntegral(j,fSplineEnergy[i-1],
905 G4double x = RutherfordIntegral(j,fSplineEnergy[i-1],
906 fEnergyInterval[j+1] );
908 fIntegralTerm[i] = fIntegralTerm[i-1] + x +
909 RutherfordIntegral(j,fEnergyInterval[j],
912 if(fVerbose>0)
G4cout<<i<<
" Shift: w = "<<fSplineEnergy[i]/
keV<<
" keV \t"<<fIntegralTerm[i]<<
"\n"<<
G4endl;
915 fNormalizationCof *= fElectronDensity/fIntegralTerm[fSplineNumber];
922 for(
G4int k = 1;
k <= fIntervalNumber-1;
k++ )
924 for( j = 1; j <= 2; j++ )
927 fImPartDielectricConst[i] = fNormalizationCof*
928 ImPartDielectricConst(
k,fSplineEnergy[i]);
929 fRePartDielectricConst[i] = fNormalizationCof*
930 RePartDielectricConst(fSplineEnergy[i]);
931 fIntegralTerm[i] *= fNormalizationCof;
933 fDifPAIxSection[i] = DifPAIxSection(i,betaGammaSq);
934 fdNdxCerenkov[i] = PAIdNdxCerenkov(i,betaGammaSq);
935 fdNdxMM[i] = PAIdNdxMM(i,betaGammaSq);
936 fdNdxPlasmon[i] = PAIdNdxPlasmon(i,betaGammaSq);
937 fdNdxResonance[i] = PAIdNdxResonance(i,betaGammaSq);
938 if(fVerbose>0)
G4cout<<i<<
" Shift: w = "<<fSplineEnergy[i]/
keV<<
" keV, xsc = "<<fDifPAIxSection[i]<<
"\n"<<
G4endl;
954 if(fVerbose>0)
G4cout<<
" G4PAIxSection::SplainPAI call "<<
G4endl;
956 while ( (i < fSplineNumber) && (fSplineNumber < fMaxSplineSize-1) )
959 if( fSplineEnergy[i+1] > fEnergyInterval[k+1] )
963 if(fVerbose>0)
G4cout<<
" in if: i = "<<i<<
"; k = "<<k<<
G4endl;
966 if(fVerbose>0)
G4cout<<
" out if: i = "<<i<<
"; k = "<<k<<
G4endl;
972 for( j = fSplineNumber; j >= i+2; j-- )
974 fSplineEnergy[j] = fSplineEnergy[j-1];
975 fImPartDielectricConst[j] = fImPartDielectricConst[j-1];
976 fRePartDielectricConst[j] = fRePartDielectricConst[j-1];
977 fIntegralTerm[j] = fIntegralTerm[j-1];
979 fDifPAIxSection[j] = fDifPAIxSection[j-1];
980 fdNdxCerenkov[j] = fdNdxCerenkov[j-1];
981 fdNdxMM[j] = fdNdxMM[j-1];
982 fdNdxPlasmon[j] = fdNdxPlasmon[j-1];
983 fdNdxResonance[j] = fdNdxResonance[j-1];
990 if(fVerbose>0)
G4cout<<
"Spline: x1 = "<<x1<<
"; x2 = "<<x2<<
", yy1 = "<<yy1<<
"; y2 = "<<y2<<
G4endl;
997 fSplineEnergy[i+1] = en1;
1002 G4double a = log10(y2/yy1)/log10(x2/x1);
1010 fImPartDielectricConst[i+1] = fNormalizationCof*
1011 ImPartDielectricConst(k,fSplineEnergy[i+1]);
1012 fRePartDielectricConst[i+1] = fNormalizationCof*
1013 RePartDielectricConst(fSplineEnergy[i+1]);
1014 fIntegralTerm[i+1] = fIntegralTerm[i] + fNormalizationCof*
1015 RutherfordIntegral(k,fSplineEnergy[i],
1016 fSplineEnergy[i+1]);
1018 fDifPAIxSection[i+1] = DifPAIxSection(i+1,betaGammaSq);
1019 fdNdxCerenkov[i+1] = PAIdNdxCerenkov(i+1,betaGammaSq);
1020 fdNdxMM[i+1] = PAIdNdxMM(i+1,betaGammaSq);
1021 fdNdxPlasmon[i+1] = PAIdNdxPlasmon(i+1,betaGammaSq);
1022 fdNdxResonance[i+1] = PAIdNdxResonance(i+1,betaGammaSq);
1026 if(fVerbose>0)
G4cout<<
"Spline, a = "<<a<<
"; b = "<<b<<
"; new xsc = "<<y<<
"; compxsc = "<<fDifPAIxSection[i+1]<<
G4endl;
1030 G4double x = 2*(fDifPAIxSection[i+1] -
y)/(fDifPAIxSection[i+1] + y);
1032 G4double delta = 2.*(fSplineEnergy[i+1]-fSplineEnergy[i])/(fSplineEnergy[i+1]+fSplineEnergy[i]);
1038 if( x > fError && fSplineNumber < fMaxSplineSize-1 && delta > 2.*fDelta )
1061 c1 = (x2 -
x1)/x1/x2;
1062 c2 = (x2 -
x1)*(x2 + x1)/x1/x1/x2/
x2;
1063 c3 = (x2 -
x1)*(x1*x1 + x1*x2 + x2*x2)/x1/x1/x1/x2/x2/
x2;
1066 return fA1[
k]*log(x2/x1) + fA2[
k]*c1 + fA3[
k]*c2/2 + fA4[
k]*c3/3;
1079 G4double energy2,energy3,energy4,result;
1081 energy2 = energy1*energy1;
1082 energy3 = energy2*energy1;
1083 energy4 = energy3*energy1;
1085 result = fA1[
k]/energy1+fA2[
k]/energy2+fA3[
k]/energy3+fA4[
k]/energy4;
1086 result *=
hbarc/energy1;
1101 energy2 = energy1*energy1;
1102 energy3 = energy2*energy1;
1103 energy4 = energy3*energy1;
1109 for( i = 1; i <= fIntervalNumber; i++ )
1111 if( energy1 < fEnergyInterval[i])
break;
1116 result = fA1[i]/energy1+fA2[i]/energy2+fA3[i]/energy3+fA4[i]/energy4;
1118 if( result >
DBL_MIN ) lambda = 1./result;
1157 range = cofA*energy*( 1 - cofB/(1 + cofC*
energy) );
1173 G4double x0, x02, x03, x04, x05,
x1,
x2, xx1 ,xx2 , xx12,
1174 c1,
c2, c3, cof1, cof2, xln1, xln2, xln3, result;
1179 for(
G4int i=1;i<=fIntervalNumber-1;i++)
1181 x1 = fEnergyInterval[i];
1182 x2 = fEnergyInterval[i+1];
1193 xln3 = log((x2 + x0)/(x1 + x0));
1198 c1 = (x2 -
x1)/x1/x2;
1199 c2 = (x2 -
x1)*(x2 +x1)/x1/x1/x2/
x2;
1200 c3 = (x2 -
x1)*(x1*x1 + x1*x2 + x2*x2)/x1/x1/x1/x2/x2/
x2;
1202 result -= (fA1[i]/x02 + fA3[i]/x04)*xln1;
1203 result -= (fA2[i]/x02 + fA4[i]/x04)*c1;
1204 result -= fA3[i]*c2/2/x02;
1205 result -= fA4[i]*c3/3/x02;
1207 cof1 = fA1[i]/x02 + fA3[i]/x04;
1208 cof2 = fA2[i]/x03 + fA4[i]/x05;
1210 result += 0.5*(cof1 +cof2)*xln2;
1211 result += 0.5*(cof1 - cof2)*xln3;
1234 G4double be2 = betaGammaSq/(1 + betaGammaSq);
1241 if( betaGammaSq < 0.01 ) x2 = log(be2);
1244 x2 = -log( (1/betaGammaSq - fRePartDielectricConst[i])*
1245 (1/betaGammaSq - fRePartDielectricConst[i]) +
1246 fImPartDielectricConst[i]*fImPartDielectricConst[i] )/2;
1248 if( fImPartDielectricConst[i] == 0.0 ||betaGammaSq < 0.01 )
1254 x3 = -fRePartDielectricConst[i] + 1/betaGammaSq;
1255 x5 = -1 - fRePartDielectricConst[i] +
1256 be2*((1 +fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
1257 fImPartDielectricConst[i]*fImPartDielectricConst[i]);
1259 x7 = atan2(fImPartDielectricConst[i],x3);
1264 x4 = ((x1 +
x2)*fImPartDielectricConst[i] + x6)/
hbarc;
1268 x8 = (1 + fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
1269 fImPartDielectricConst[i]*fImPartDielectricConst[i];
1271 result = (x4 + cof*fIntegralTerm[i]/fSplineEnergy[i]/fSplineEnergy[i]);
1273 if( result < 1.0
e-8 ) result = 1.0e-8;
1281 result *= (1 - exp(-beta/betaBohr/lowCof));
1306 G4double be2, betaBohr2, cofBetaBohr;
1310 G4double betaBohr4 = betaBohr2*betaBohr2*cofBetaBohr;
1312 be2 = betaGammaSq/(1 + betaGammaSq);
1315 if( betaGammaSq < 0.01 ) logarithm = log(1.0+betaGammaSq);
1318 logarithm = -log( (1/betaGammaSq - fRePartDielectricConst[i])*
1319 (1/betaGammaSq - fRePartDielectricConst[i]) +
1320 fImPartDielectricConst[i]*fImPartDielectricConst[i] )*0.5;
1321 logarithm += log(1+1.0/betaGammaSq);
1324 if( fImPartDielectricConst[i] == 0.0 || betaGammaSq < 0.01 )
1330 x3 = -fRePartDielectricConst[i] + 1.0/betaGammaSq;
1331 x5 = -1.0 - fRePartDielectricConst[i] +
1332 be2*((1.0 +fRePartDielectricConst[i])*(1.0 + fRePartDielectricConst[i]) +
1333 fImPartDielectricConst[i]*fImPartDielectricConst[i]);
1334 if( x3 == 0.0 ) argument = 0.5*
pi;
1335 else argument = atan2(fImPartDielectricConst[i],x3);
1338 dNdxC = ( logarithm*fImPartDielectricConst[i] + argument )/
hbarc;
1340 if(dNdxC < 1.0
e-8) dNdxC = 1.0e-8;
1342 dNdxC *= fine_structure_const/be2/
pi;
1344 dNdxC *= (1-exp(-be4/betaBohr4));
1348 modul2 = (1.0 + fRePartDielectricConst[i])*(1.0 + fRePartDielectricConst[i]) +
1349 fImPartDielectricConst[i]*fImPartDielectricConst[i];
1364 G4double be2, be4, betaBohr2,betaBohr4,cofBetaBohr;
1368 betaBohr4 = betaBohr2*betaBohr2*cofBetaBohr;
1370 be2 = betaGammaSq/(1 + betaGammaSq);
1373 if( betaGammaSq < 0.01 ) logarithm = log(1.0+betaGammaSq);
1376 logarithm = -log( (1/betaGammaSq - fRePartDielectricConst[i])*
1377 (1/betaGammaSq - fRePartDielectricConst[i]) +
1378 fImPartDielectricConst[i]*fImPartDielectricConst[i] )*0.5;
1379 logarithm += log(1+1.0/betaGammaSq);
1382 if( fImPartDielectricConst[i] == 0.0 || betaGammaSq < 0.01 )
1388 x3 = -fRePartDielectricConst[i] + 1.0/betaGammaSq;
1389 x5 = be2*( 1.0 + fRePartDielectricConst[i] ) - 1.0;
1390 if( x3 == 0.0 ) argument = 0.5*
pi;
1391 else argument = atan2(fImPartDielectricConst[i],x3);
1394 dNdxC = ( logarithm*fImPartDielectricConst[i]*be2 + argument )/
hbarc;
1396 if(dNdxC < 1.0
e-8) dNdxC = 1.0e-8;
1398 dNdxC *= fine_structure_const/be2/
pi;
1400 dNdxC *= (1-exp(-be4/betaBohr4));
1413 G4double resonance, modul2, dNdxP, cof = 1.;
1417 be2 = betaGammaSq/(1 + betaGammaSq);
1422 resonance *= fImPartDielectricConst[i]/
hbarc;
1425 dNdxP = ( resonance + cof*fIntegralTerm[i]/fSplineEnergy[i]/fSplineEnergy[i] );
1427 if( dNdxP < 1.0
e-8 ) dNdxP = 1.0e-8;
1431 dNdxP *= (1 - exp(-beta/betaBohr/fLowEnergyCof));
1435 if( fDensity >= 0.1 )
1437 modul2 = (1 + fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
1438 fImPartDielectricConst[i]*fImPartDielectricConst[i];
1454 G4double be2, be4, betaBohr2, betaBohr4, cofBetaBohr;
1458 betaBohr4 = betaBohr2*betaBohr2*cofBetaBohr;
1460 be2 = betaGammaSq/(1 + betaGammaSq);
1464 resonance *= fImPartDielectricConst[i]/
hbarc;
1469 if( dNdxP < 1.0
e-8 ) dNdxP = 1.0e-8;
1471 dNdxP *= fine_structure_const/be2/
pi;
1472 dNdxP *= (1-exp(-be4/betaBohr4));
1474 if( fDensity >= 0.1 )
1476 modul2 = (1 + fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
1477 fImPartDielectricConst[i]*fImPartDielectricConst[i];
1492 fIntegralPAIxSection[fSplineNumber] = 0;
1493 fIntegralPAIdEdx[fSplineNumber] = 0;
1494 fIntegralPAIxSection[0] = 0;
1495 G4int i,
k = fIntervalNumber -1;
1497 for( i = fSplineNumber-1; i >= 1; i--)
1499 if(fSplineEnergy[i] >= fEnergyInterval[k])
1501 fIntegralPAIxSection[i] = fIntegralPAIxSection[i+1] + SumOverInterval(i);
1502 fIntegralPAIdEdx[i] = fIntegralPAIdEdx[i+1] + SumOverIntervaldEdx(i);
1506 fIntegralPAIxSection[i] = fIntegralPAIxSection[i+1] +
1507 SumOverBorder(i+1,fEnergyInterval[k]);
1508 fIntegralPAIdEdx[i] = fIntegralPAIdEdx[i+1] +
1509 SumOverBorderdEdx(i+1,fEnergyInterval[k]);
1512 if(fVerbose>0)
G4cout<<
"i = "<<i<<
"; k = "<<k<<
"; intPAIxsc[i] = "<<fIntegralPAIxSection[i]<<
G4endl;
1525 fIntegralCerenkov[fSplineNumber] = 0;
1526 fIntegralCerenkov[0] = 0;
1527 k = fIntervalNumber -1;
1529 for( i = fSplineNumber-1; i >= 1; i-- )
1531 if(fSplineEnergy[i] >= fEnergyInterval[k])
1533 fIntegralCerenkov[i] = fIntegralCerenkov[i+1] + SumOverInterCerenkov(i);
1538 fIntegralCerenkov[i] = fIntegralCerenkov[i+1] +
1539 SumOverBordCerenkov(i+1,fEnergyInterval[k]);
1556 fIntegralMM[fSplineNumber] = 0;
1558 k = fIntervalNumber -1;
1560 for( i = fSplineNumber-1; i >= 1; i-- )
1562 if(fSplineEnergy[i] >= fEnergyInterval[k])
1564 fIntegralMM[i] = fIntegralMM[i+1] + SumOverInterMM(i);
1569 fIntegralMM[i] = fIntegralMM[i+1] +
1570 SumOverBordMM(i+1,fEnergyInterval[k]);
1586 fIntegralPlasmon[fSplineNumber] = 0;
1587 fIntegralPlasmon[0] = 0;
1588 G4int k = fIntervalNumber -1;
1589 for(
G4int i=fSplineNumber-1;i>=1;i--)
1591 if(fSplineEnergy[i] >= fEnergyInterval[k])
1593 fIntegralPlasmon[i] = fIntegralPlasmon[i+1] + SumOverInterPlasmon(i);
1597 fIntegralPlasmon[i] = fIntegralPlasmon[i+1] +
1598 SumOverBordPlasmon(i+1,fEnergyInterval[k]);
1613 fIntegralResonance[fSplineNumber] = 0;
1614 fIntegralResonance[0] = 0;
1615 G4int k = fIntervalNumber -1;
1616 for(
G4int i=fSplineNumber-1;i>=1;i--)
1618 if(fSplineEnergy[i] >= fEnergyInterval[k])
1620 fIntegralResonance[i] = fIntegralResonance[i+1] + SumOverInterResonance(i);
1624 fIntegralResonance[i] = fIntegralResonance[i+1] +
1625 SumOverBordResonance(i+1,fEnergyInterval[k]);
1642 x0 = fSplineEnergy[i];
1643 x1 = fSplineEnergy[i+1];
1644 if(fVerbose>0)
G4cout<<
"SumOverInterval i= " << i <<
" x0 = "<<x0<<
"; x1 = "<<x1<<
G4endl;
1646 if( x1+x0 <= 0.0 ||
std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.
e-6)
return 0.;
1648 y0 = fDifPAIxSection[i];
1649 yy1 = fDifPAIxSection[i+1];
1651 if(fVerbose>0)
G4cout<<
"x0 = "<<x0<<
"; x1 = "<<x1<<
", y0 = "<<y0<<
"; yy1 = "<<yy1<<
G4endl;
1654 a = log10(yy1/y0)/log10(c);
1656 if(fVerbose>0)
G4cout<<
"SumOverInterval, a = "<<a<<
"; c = "<<c<<
G4endl;
1663 result = b*log(x1/x0);
1667 result = y0*(x1*pow(c,a-1) - x0)/a;
1672 fIntegralPAIxSection[0] += b*log(x1/x0);
1676 fIntegralPAIxSection[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
1678 if(fVerbose>0)
G4cout<<
"SumOverInterval, result = "<<result<<
G4endl;
1689 x0 = fSplineEnergy[i];
1690 x1 = fSplineEnergy[i+1];
1692 if(x1+x0 <= 0.0 ||
std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.
e-6)
return 0.;
1694 y0 = fDifPAIxSection[i];
1695 yy1 = fDifPAIxSection[i+1];
1697 a = log10(yy1/y0)/log10(c);
1703 result = b*log(x1/x0);
1707 result = y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
1723 x0 = fSplineEnergy[i];
1724 x1 = fSplineEnergy[i+1];
1726 if(x1+x0 <= 0.0 ||
std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.
e-6)
return 0.;
1728 y0 = fdNdxCerenkov[i];
1729 yy1 = fdNdxCerenkov[i+1];
1734 a = log10(yy1/y0)/log10(c);
1738 if(a == 0) result = b*log(c);
1739 else result = y0*(x1*pow(c,a-1) - x0)/a;
1742 if( a == 0 ) fIntegralCerenkov[0] += b*log(x1/x0);
1743 else fIntegralCerenkov[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
1759 x0 = fSplineEnergy[i];
1760 x1 = fSplineEnergy[i+1];
1762 if(x1+x0 <= 0.0 ||
std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.
e-6)
return 0.;
1771 a = log10(yy1/y0)/log10(c);
1772 if(a > 10.0)
return 0.;
1776 if(a == 0) result = b*log(c);
1777 else result = y0*(x1*pow(c,a-1) - x0)/a;
1780 if( a == 0 ) fIntegralMM[0] += b*log(c);
1781 else fIntegralMM[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
1797 x0 = fSplineEnergy[i];
1798 x1 = fSplineEnergy[i+1];
1800 if(x1+x0 <= 0.0 ||
std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.
e-6)
return 0.;
1802 y0 = fdNdxPlasmon[i];
1803 yy1 = fdNdxPlasmon[i+1];
1805 a = log10(yy1/y0)/log10(c);
1806 if(a > 10.0)
return 0.;
1811 if(a == 0) result = b*log(x1/x0);
1812 else result = y0*(x1*pow(c,a-1) - x0)/a;
1815 if( a == 0 ) fIntegralPlasmon[0] += b*log(x1/x0);
1816 else fIntegralPlasmon[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
1832 x0 = fSplineEnergy[i];
1833 x1 = fSplineEnergy[i+1];
1835 if(x1+x0 <= 0.0 ||
std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.
e-6)
return 0.;
1837 y0 = fdNdxResonance[i];
1838 yy1 = fdNdxResonance[i+1];
1840 a = log10(yy1/y0)/log10(c);
1841 if(a > 10.0)
return 0.;
1846 if(a == 0) result = b*log(x1/x0);
1847 else result = y0*(x1*pow(c,a-1) - x0)/a;
1850 if( a == 0 ) fIntegralResonance[0] += b*log(x1/x0);
1851 else fIntegralResonance[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
1868 x0 = fSplineEnergy[i];
1869 x1 = fSplineEnergy[i+1];
1870 y0 = fDifPAIxSection[i];
1871 yy1 = fDifPAIxSection[i+1];
1875 a = log10(yy1/y0)/log10(x1/x0);
1876 if(a > 10.0)
return 0.;
1878 if(fVerbose>0)
G4cout<<
"SumOverBorder, a = "<<a<<
G4endl;
1886 result = b*log(x0/e0);
1890 result = y0*(x0 - e0*pow(d,a-1))/a;
1895 fIntegralPAIxSection[0] += b*log(x0/e0);
1899 fIntegralPAIxSection[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1901 x0 = fSplineEnergy[i - 1];
1902 x1 = fSplineEnergy[i - 2];
1903 y0 = fDifPAIxSection[i - 1];
1904 yy1 = fDifPAIxSection[i - 2];
1908 a = log10(yy1/y0)/log10(x1/x0);
1914 result += b*log(e0/x0);
1918 result += y0*(e0*pow(d,a-1) - x0)/a;
1923 fIntegralPAIxSection[0] += b*log(e0/x0);
1927 fIntegralPAIxSection[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1941 x0 = fSplineEnergy[i];
1942 x1 = fSplineEnergy[i+1];
1943 y0 = fDifPAIxSection[i];
1944 yy1 = fDifPAIxSection[i+1];
1948 a = log10(yy1/y0)/log10(x1/x0);
1949 if(a > 10.0)
return 0.;
1956 result = b*log(x0/e0);
1960 result = y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1962 x0 = fSplineEnergy[i - 1];
1963 x1 = fSplineEnergy[i - 2];
1964 y0 = fDifPAIxSection[i - 1];
1965 yy1 = fDifPAIxSection[i - 2];
1969 a = log10(yy1/y0)/log10(x1/x0);
1975 result += b*log(e0/x0);
1979 result += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1996 x0 = fSplineEnergy[i];
1997 x1 = fSplineEnergy[i+1];
1998 y0 = fdNdxCerenkov[i];
1999 yy1 = fdNdxCerenkov[i+1];
2006 a = log10(yy1/y0)/log10(c);
2007 if(a > 10.0)
return 0.;
2012 if( a == 0 ) result = b*log(x0/e0);
2013 else result = y0*(x0 - e0*pow(d,a-1))/a;
2016 if( a == 0 ) fIntegralCerenkov[0] += b*log(x0/e0);
2017 else fIntegralCerenkov[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
2021 x0 = fSplineEnergy[i - 1];
2022 x1 = fSplineEnergy[i - 2];
2023 y0 = fdNdxCerenkov[i - 1];
2024 yy1 = fdNdxCerenkov[i - 2];
2031 a = log10(yy1/y0)/log10(x1/x0);
2036 if( a == 0 ) result += b*log(e0/x0);
2037 else result += y0*(e0*pow(d,a-1) - x0 )/a;
2040 if( a == 0 ) fIntegralCerenkov[0] += b*log(e0/x0);
2041 else fIntegralCerenkov[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
2061 x0 = fSplineEnergy[i];
2062 x1 = fSplineEnergy[i+1];
2071 a = log10(yy1/y0)/log10(c);
2072 if(a > 10.0)
return 0.;
2077 if( a == 0 ) result = b*log(x0/e0);
2078 else result = y0*(x0 - e0*pow(d,a-1))/a;
2081 if( a == 0 ) fIntegralMM[0] += b*log(x0/e0);
2082 else fIntegralMM[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
2086 x0 = fSplineEnergy[i - 1];
2087 x1 = fSplineEnergy[i - 2];
2088 y0 = fdNdxMM[i - 1];
2089 yy1 = fdNdxMM[i - 2];
2096 a = log10(yy1/y0)/log10(x1/x0);
2101 if( a == 0 ) result += b*log(e0/x0);
2102 else result += y0*(e0*pow(d,a-1) - x0 )/a;
2105 if( a == 0 ) fIntegralMM[0] += b*log(e0/x0);
2106 else fIntegralMM[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
2126 x0 = fSplineEnergy[i];
2127 x1 = fSplineEnergy[i+1];
2128 y0 = fdNdxPlasmon[i];
2129 yy1 = fdNdxPlasmon[i+1];
2133 a = log10(yy1/y0)/log10(c);
2134 if(a > 10.0)
return 0.;
2139 if( a == 0 ) result = b*log(x0/e0);
2140 else result = y0*(x0 - e0*pow(d,a-1))/a;
2143 if( a == 0 ) fIntegralPlasmon[0] += b*log(x0/e0);
2144 else fIntegralPlasmon[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
2146 x0 = fSplineEnergy[i - 1];
2147 x1 = fSplineEnergy[i - 2];
2148 y0 = fdNdxPlasmon[i - 1];
2149 yy1 = fdNdxPlasmon[i - 2];
2153 a = log10(yy1/y0)/log10(c);
2158 if( a == 0 ) result += b*log(e0/x0);
2159 else result += y0*(e0*pow(d,a-1) - x0)/a;
2162 if( a == 0 ) fIntegralPlasmon[0] += b*log(e0/x0);
2163 else fIntegralPlasmon[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
2180 x0 = fSplineEnergy[i];
2181 x1 = fSplineEnergy[i+1];
2182 y0 = fdNdxResonance[i];
2183 yy1 = fdNdxResonance[i+1];
2187 a = log10(yy1/y0)/log10(c);
2188 if(a > 10.0)
return 0.;
2193 if( a == 0 ) result = b*log(x0/e0);
2194 else result = y0*(x0 - e0*pow(d,a-1))/a;
2197 if( a == 0 ) fIntegralResonance[0] += b*log(x0/e0);
2198 else fIntegralResonance[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
2200 x0 = fSplineEnergy[i - 1];
2201 x1 = fSplineEnergy[i - 2];
2202 y0 = fdNdxResonance[i - 1];
2203 yy1 = fdNdxResonance[i - 2];
2207 a = log10(yy1/y0)/log10(c);
2212 if( a == 0 ) result += b*log(e0/x0);
2213 else result += y0*(e0*pow(d,a-1) - x0)/a;
2216 if( a == 0 ) fIntegralResonance[0] += b*log(e0/x0);
2217 else fIntegralResonance[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
2234 meanNumber = fIntegralPAIxSection[1]*
step;
2235 numOfCollisions =
G4Poisson(meanNumber);
2239 while(numOfCollisions)
2241 loss += GetEnergyTransfer();
2262 for( iTransfer = 1; iTransfer <= fSplineNumber; iTransfer++ )
2264 if( position >= fIntegralPAIxSection[iTransfer] )
break;
2266 if(iTransfer > fSplineNumber) iTransfer--;
2268 energyTransfer = fSplineEnergy[iTransfer];
2272 energyTransfer -= (fSplineEnergy[iTransfer]-fSplineEnergy[iTransfer-1])*
G4UniformRand();
2274 return energyTransfer;
2288 meanNumber = fIntegralCerenkov[1]*
step;
2289 numOfCollisions =
G4Poisson(meanNumber);
2293 while(numOfCollisions)
2295 loss += GetCerenkovEnergyTransfer();
2315 meanNumber = fIntegralMM[1]*
step;
2316 numOfCollisions =
G4Poisson(meanNumber);
2320 while(numOfCollisions)
2322 loss += GetMMEnergyTransfer();
2343 for( iTransfer = 1; iTransfer <= fSplineNumber; iTransfer++ )
2345 if( position >= fIntegralCerenkov[iTransfer] )
break;
2347 if(iTransfer > fSplineNumber) iTransfer--;
2349 energyTransfer = fSplineEnergy[iTransfer];
2353 energyTransfer -= (fSplineEnergy[iTransfer]-fSplineEnergy[iTransfer-1])*
G4UniformRand();
2355 return energyTransfer;
2370 for( iTransfer = 1; iTransfer <= fSplineNumber; iTransfer++ )
2372 if( position >= fIntegralMM[iTransfer] )
break;
2374 if(iTransfer > fSplineNumber) iTransfer--;
2376 energyTransfer = fSplineEnergy[iTransfer];
2380 energyTransfer -= (fSplineEnergy[iTransfer]-fSplineEnergy[iTransfer-1])*
G4UniformRand();
2382 return energyTransfer;
2396 meanNumber = fIntegralPlasmon[1]*
step;
2397 numOfCollisions =
G4Poisson(meanNumber);
2401 while(numOfCollisions)
2403 loss += GetPlasmonEnergyTransfer();
2424 for( iTransfer = 1; iTransfer <= fSplineNumber; iTransfer++ )
2426 if( position >= fIntegralPlasmon[iTransfer] )
break;
2428 if(iTransfer > fSplineNumber) iTransfer--;
2430 energyTransfer = fSplineEnergy[iTransfer];
2434 energyTransfer -= (fSplineEnergy[iTransfer]-fSplineEnergy[iTransfer-1])*
G4UniformRand();
2436 return energyTransfer;
2450 meanNumber = fIntegralResonance[1]*
step;
2451 numOfCollisions =
G4Poisson(meanNumber);
2455 while(numOfCollisions)
2457 loss += GetResonanceEnergyTransfer();
2479 for( iTransfer = 1; iTransfer <= fSplineNumber; iTransfer++ )
2481 if( position >= fIntegralResonance[iTransfer] )
break;
2483 if(iTransfer > fSplineNumber) iTransfer--;
2485 energyTransfer = fSplineEnergy[iTransfer];
2489 energyTransfer -= (fSplineEnergy[iTransfer]-fSplineEnergy[iTransfer-1])*
G4UniformRand();
2491 return energyTransfer;
2505 position = (fIntegralPlasmon[1]-fIntegralResonance[1])*
G4UniformRand();
2507 for( iTransfer = 1; iTransfer <= fSplineNumber; iTransfer++ )
2509 if( position >= (fIntegralPlasmon[iTransfer]-fIntegralResonance[iTransfer]) )
break;
2511 if(iTransfer > fSplineNumber) iTransfer--;
2513 energyTransfer = fSplineEnergy[iTransfer];
2517 energyTransfer -= (fSplineEnergy[iTransfer]-fSplineEnergy[iTransfer-1])*
G4UniformRand();
2519 return energyTransfer;
2527 G4String head =
"G4PAIxSection::" + methodName +
"()";
2529 ed <<
"Wrong index " << i <<
" fSplineNumber= " << fSplineNumber;
2543 1.094989e+00, 1.107813e+00, 1.122369e+00, 1.138890e+00, 1.157642e+00,
2544 1.178925e+00, 1.203082e+00, 1.230500e+00, 1.261620e+00, 1.296942e+00,
2545 1.337032e+00, 1.382535e+00, 1.434181e+00, 1.492800e+00, 1.559334e+00,
2546 1.634850e+00, 1.720562e+00, 1.817845e+00, 1.928263e+00, 2.053589e+00,
2547 2.195835e+00, 2.357285e+00, 2.540533e+00, 2.748522e+00, 2.984591e+00,
2548 3.252533e+00, 3.556649e+00, 3.901824e+00, 4.293602e+00, 4.738274e+00,
2549 5.242981e+00, 5.815829e+00, 6.466019e+00, 7.203990e+00, 8.041596e+00,
2550 8.992288e+00, 1.007133e+01, 1.129606e+01, 1.268614e+01, 1.426390e+01,
2551 1.605467e+01, 1.808721e+01, 2.039417e+01, 2.301259e+01, 2.598453e+01,
2552 2.935771e+01, 3.318630e+01, 3.753180e+01, 4.246399e+01, 4.806208e+01,
2553 5.441597e+01, 6.162770e+01, 6.981310e+01, 7.910361e+01, 8.964844e+01,
2554 1.016169e+02, 1.152013e+02, 1.306197e+02, 1.481198e+02, 1.679826e+02,
2555 1.905270e+02, 2.161152e+02, 2.451581e+02, 2.781221e+02, 3.155365e+02,
2556 3.580024e+02, 4.062016e+02, 4.609081e+02, 5.230007e+02, 5.934765e+02,
2557 6.734672e+02, 7.642575e+02, 8.673056e+02, 9.842662e+02, 1.117018e+03,
2558 1.267692e+03, 1.438709e+03, 1.632816e+03, 1.853128e+03, 2.103186e+03,
2559 2.387004e+03, 2.709140e+03, 3.074768e+03, 3.489760e+03, 3.960780e+03,
2560 4.495394e+03, 5.102185e+03, 5.790900e+03, 6.572600e+03, 7.459837e+03,
2561 8.466860e+03, 9.609843e+03, 1.090714e+04, 1.237959e+04, 1.405083e+04,
2562 1.594771e+04, 1.810069e+04, 2.054434e+04, 2.331792e+04, 2.646595e+04,
2563 3.003901e+04, 3.409446e+04, 3.869745e+04, 4.392189e+04, 4.985168e+04,
2564 5.658206e+04, 6.422112e+04, 7.289153e+04, 8.273254e+04, 9.390219e+04,