82 fDensity = fElectronDensity = fNormalizationCof = fLowEnergyCof = 0.0;
83 fIntervalNumber = fSplineNumber = 0;
87 fRePartDielectricConst =
G4DataVector(fMaxSplineSize,0.0);
88 fImPartDielectricConst =
G4DataVector(fMaxSplineSize,0.0);
98 for(
G4int i = 0; i < 500; ++i )
100 for(
G4int j = 0; j < 112; ++j ) fPAItable[i][j] = 0.0;
123 G4cout<<
"G4PAIySection::Initialize(...,G4SandiaTable* sandia)"<<
G4endl;
137 G4cout<<
"fDensity = "<<fDensity<<
"\t"<<fElectronDensity<<
"\t fIntervalNumber = " 138 <<fIntervalNumber<<
" (beta*gamma)^2= " << betaGammaSq <<
G4endl;
146 for( i = 1; i <= fIntervalNumber; i++ )
154 || i >= fIntervalNumber )
156 fEnergyInterval[i] = maxEnergyTransfer;
167 G4cout<<i<<
"\t"<<fEnergyInterval[i]/
keV<<
"\t"<<fA1[i]<<
"\t"<<fA2[i]<<
"\t" 168 <<fA3[i]<<
"\t"<<fA4[i]<<
"\t"<<
G4endl;
172 G4cout<<
"last i = "<<i<<
"; "<<
"fIntervalNumber = " 173 <<fIntervalNumber<<
G4endl;
175 if( fEnergyInterval[fIntervalNumber] != maxEnergyTransfer )
178 fEnergyInterval[fIntervalNumber] = maxEnergyTransfer;
182 for( i = 1; i <= fIntervalNumber; i++ )
184 G4cout<<i<<
"\t"<<fEnergyInterval[i]/
keV<<
"\t"<<fA1[i]<<
"\t"<<fA2[i]<<
"\t" 185 <<fA3[i]<<
"\t"<<fA4[i]<<
"\t"<<
G4endl;
189 G4cout<<
"Now checking, if two borders are too close together"<<
G4endl;
191 for( i = 1; i < fIntervalNumber; i++ )
193 if( fEnergyInterval[i+1]-fEnergyInterval[i] >
194 1.5*fDelta*(fEnergyInterval[i+1]+fEnergyInterval[i]) )
continue;
197 for( j = i; j < fIntervalNumber; j++ )
199 fEnergyInterval[j] = fEnergyInterval[j+1];
210 for( i = 1; i <= fIntervalNumber; i++ )
212 G4cout<<i<<
"\t"<<fEnergyInterval[i]/
keV<<
"\t"<<fA1[i]<<
"\t"<<fA2[i]<<
"\t" 213 <<fA3[i]<<
"\t"<<fA4[i]<<
"\t"<<
G4endl;
218 ComputeLowEnergyCof(material);
221 fLorentzFactor[fRefGammaNumber]*fLorentzFactor[fRefGammaNumber] - 1;
223 NormShift(betaGammaSqRef);
224 SplainPAI(betaGammaSqRef);
228 for( i = 1; i <= fSplineNumber; i++ )
230 fDifPAIySection[i] = DifPAIySection(i,betaGammaSq);
232 if( fVerbose > 0 )
G4cout<<i<<
"; dNdxPAI = "<<fDifPAIySection[i]<<
G4endl;
234 IntegralPAIySection();
247 static const G4double p0 = 1.20923e+00;
248 static const G4double p1 = 3.53256e-01;
249 static const G4double p2 = -1.45052e-03;
254 for( i = 0; i < numberOfElements; i++ )
257 sumZ += thisMaterialZ[i];
258 thisMaterialCof[i] = p0+p1*thisMaterialZ[i]+p2*thisMaterialZ[i]*thisMaterialZ[i];
260 for( i = 0; i < numberOfElements; i++ )
262 sumCof += thisMaterialCof[i]*thisMaterialZ[i]/sumZ;
264 fLowEnergyCof = sumCof;
265 delete [] thisMaterialZ;
266 delete [] thisMaterialCof;
278 G4double betaGammaSq = fLorentzFactor[fRefGammaNumber]*
279 fLorentzFactor[fRefGammaNumber] - 1;
283 NormShift(betaGammaSq);
284 SplainPAI(betaGammaSq);
286 IntegralPAIySection();
290 for( i = 0; i<= fSplineNumber; i++)
292 fPAItable[i][fRefGammaNumber] = fIntegralPAIySection[i];
294 if(i != 0) fPAItable[i][0] = fSplineEnergy[i];
296 fPAItable[0][0] = fSplineNumber;
298 for(
G4int j = 1; j < 112; j++)
300 if( j == fRefGammaNumber )
continue;
302 betaGammaSq = fLorentzFactor[j]*fLorentzFactor[j] - 1;
304 for(i = 1; i <= fSplineNumber; i++)
306 fDifPAIySection[i] = DifPAIySection(i,betaGammaSq);
307 fdNdxCerenkov[i] = PAIdNdxCerenkov(i,betaGammaSq);
308 fdNdxPlasmon[i] = PAIdNdxPlasmon(i,betaGammaSq);
310 IntegralPAIySection();
314 for(i = 0; i <= fSplineNumber; i++)
316 fPAItable[i][j] = fIntegralPAIySection[i];
330 for( i = 1; i <= fIntervalNumber-1; i++ )
332 for( j = 1; j <= 2; j++ )
334 fSplineNumber = (i-1)*2 + j;
336 if( j == 1 ) fSplineEnergy[fSplineNumber] = fEnergyInterval[i ]*(1+fDelta);
337 else fSplineEnergy[fSplineNumber] = fEnergyInterval[i+1]*(1-fDelta);
342 fIntegralTerm[1]=RutherfordIntegral(1,fEnergyInterval[1],fSplineEnergy[1]);
346 for(i=2;i<=fSplineNumber;i++)
348 if(fSplineEnergy[i]<fEnergyInterval[j+1])
350 fIntegralTerm[i] = fIntegralTerm[i-1] +
351 RutherfordIntegral(j,fSplineEnergy[i-1],
356 G4double x = RutherfordIntegral(j,fSplineEnergy[i-1],
357 fEnergyInterval[j+1] );
359 fIntegralTerm[i] = fIntegralTerm[i-1] + x +
360 RutherfordIntegral(j,fEnergyInterval[j],
366 fNormalizationCof *= fElectronDensity/fIntegralTerm[fSplineNumber];
373 for(
G4int k=1;k<=fIntervalNumber-1;k++)
378 fImPartDielectricConst[i] = fNormalizationCof*
379 ImPartDielectricConst(k,fSplineEnergy[i]);
380 fRePartDielectricConst[i] = fNormalizationCof*
381 RePartDielectricConst(fSplineEnergy[i]);
382 fIntegralTerm[i] *= fNormalizationCof;
384 fDifPAIySection[i] = DifPAIySection(i,betaGammaSq);
385 fdNdxCerenkov[i] = PAIdNdxCerenkov(i,betaGammaSq);
386 fdNdxPlasmon[i] = PAIdNdxPlasmon(i,betaGammaSq);
403 while ( (i < fSplineNumber) && (fSplineNumber < fMaxSplineSize-1) )
405 if(fSplineEnergy[i+1] > fEnergyInterval[k+1])
415 for(
G4int j = fSplineNumber; j >= i+2; j-- )
417 fSplineEnergy[j] = fSplineEnergy[j-1];
418 fImPartDielectricConst[j] = fImPartDielectricConst[j-1];
419 fRePartDielectricConst[j] = fRePartDielectricConst[j-1];
420 fIntegralTerm[j] = fIntegralTerm[j-1];
422 fDifPAIySection[j] = fDifPAIySection[j-1];
423 fdNdxCerenkov[j] = fdNdxCerenkov[j-1];
424 fdNdxPlasmon[j] = fdNdxPlasmon[j-1];
432 fSplineEnergy[i+1] = en1;
444 fImPartDielectricConst[i+1] = fNormalizationCof*
445 ImPartDielectricConst(k,fSplineEnergy[i+1]);
446 fRePartDielectricConst[i+1] = fNormalizationCof*
447 RePartDielectricConst(fSplineEnergy[i+1]);
448 fIntegralTerm[i+1] = fIntegralTerm[i] + fNormalizationCof*
449 RutherfordIntegral(k,fSplineEnergy[i],
452 fDifPAIySection[i+1] = DifPAIySection(i+1,betaGammaSq);
453 fdNdxCerenkov[i+1] = PAIdNdxCerenkov(i+1,betaGammaSq);
454 fdNdxPlasmon[i+1] = PAIdNdxPlasmon(i+1,betaGammaSq);
459 G4double x = 2*(fDifPAIySection[i+1] -
y)/(fDifPAIySection[i+1] + y);
461 G4double delta = 2.*(fSplineEnergy[i+1]-fSplineEnergy[i])/(fSplineEnergy[i+1]+fSplineEnergy[i]);
467 if( x > fError && fSplineNumber < fMaxSplineSize-1 && delta > 2.*fDelta )
490 c1 = (x2 -
x1)/x1/x2;
491 c2 = (x2 -
x1)*(x2 + x1)/x1/x1/x2/
x2;
492 c3 = (x2 -
x1)*(x1*x1 + x1*x2 + x2*x2)/x1/x1/x1/x2/x2/
x2;
495 return fA1[k]*log(x2/x1) + fA2[k]*c1 + fA3[k]*c2/2 + fA4[k]*c3/3;
508 G4double energy2,energy3,energy4,result;
510 energy2 = energy1*energy1;
511 energy3 = energy2*energy1;
512 energy4 = energy3*energy1;
514 result = fA1[k]/energy1+fA2[k]/energy2+fA3[k]/energy3+fA4[k]/energy4;
515 result *=
hbarc/energy1;
530 G4double x0, x02, x03, x04, x05,
x1,
x2, xx1 ,xx2 , xx12,
531 c1,
c2,
c3, cof1, cof2, xln1, xln2, xln3, result;
536 for(
G4int i=1;i<=fIntervalNumber-1;i++)
538 x1 = fEnergyInterval[i];
539 x2 = fEnergyInterval[i+1];
550 xln3 = log((x2 + x0)/(x1 + x0));
555 c1 = (x2 -
x1)/x1/x2;
556 c2 = (x2 -
x1)*(x2 +x1)/x1/x1/x2/
x2;
557 c3 = (x2 -
x1)*(x1*x1 + x1*x2 + x2*x2)/x1/x1/x1/x2/x2/
x2;
559 result -= (fA1[i]/x02 + fA3[i]/x04)*xln1;
560 result -= (fA2[i]/x02 + fA4[i]/x04)*c1;
561 result -= fA3[i]*c2/2/x02;
562 result -= fA4[i]*c3/3/x02;
564 cof1 = fA1[i]/x02 + fA3[i]/x04;
565 cof2 = fA2[i]/x03 + fA4[i]/x05;
567 result += 0.5*(cof1 +cof2)*xln2;
568 result += 0.5*(cof1 - cof2)*xln3;
585 G4double beta, be2,cof,
x1,
x2,x3,x4,x5,x6,x7,x8,result;
590 be2 = betaGammaSq/(1 + betaGammaSq);
596 if( betaGammaSq < 0.01 ) x2 = log(be2);
599 x2 = -log( (1/betaGammaSq - fRePartDielectricConst[i])*
600 (1/betaGammaSq - fRePartDielectricConst[i]) +
601 fImPartDielectricConst[i]*fImPartDielectricConst[i] )/2;
603 if( fImPartDielectricConst[i] == 0.0 ||betaGammaSq < 0.01 )
609 x3 = -fRePartDielectricConst[i] + 1/betaGammaSq;
610 x5 = -1 - fRePartDielectricConst[i] +
611 be2*((1 +fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
612 fImPartDielectricConst[i]*fImPartDielectricConst[i]);
614 x7 = atan2(fImPartDielectricConst[i],x3);
619 x4 = ((x1 +
x2)*fImPartDielectricConst[i] + x6)/
hbarc;
621 x8 = (1 + fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
622 fImPartDielectricConst[i]*fImPartDielectricConst[i];
624 result = (x4 + cof*fIntegralTerm[i]/fSplineEnergy[i]/fSplineEnergy[i]);
625 if(result < 1.0
e-8) result = 1.0e-8;
631 result *= (1 - exp(-beta/
betaBohr/lowCof));
652 G4double logarithm, x3, x5, argument, modul2, dNdxC;
657 be2 = betaGammaSq/(1 + betaGammaSq);
660 if( betaGammaSq < 0.01 ) logarithm = log(1.0+betaGammaSq);
663 logarithm = -log( (1/betaGammaSq - fRePartDielectricConst[i])*
664 (1/betaGammaSq - fRePartDielectricConst[i]) +
665 fImPartDielectricConst[i]*fImPartDielectricConst[i] )*0.5;
666 logarithm += log(1+1.0/betaGammaSq);
669 if( fImPartDielectricConst[i] == 0.0 || betaGammaSq < 0.01 )
675 x3 = -fRePartDielectricConst[i] + 1.0/betaGammaSq;
676 x5 = -1.0 - fRePartDielectricConst[i] +
677 be2*((1.0 +fRePartDielectricConst[i])*(1.0 + fRePartDielectricConst[i]) +
678 fImPartDielectricConst[i]*fImPartDielectricConst[i]);
679 if( x3 == 0.0 ) argument = 0.5*
pi;
680 else argument = atan2(fImPartDielectricConst[i],x3);
683 dNdxC = ( logarithm*fImPartDielectricConst[i] + argument )/
hbarc;
685 if(dNdxC < 1.0
e-8) dNdxC = 1.0e-8;
693 modul2 = (1.0 + fRePartDielectricConst[i])*(1.0 + fRePartDielectricConst[i]) +
694 fImPartDielectricConst[i]*fImPartDielectricConst[i];
711 G4double cof, resonance, modul2, dNdxP;
716 be2 = betaGammaSq/(1 + betaGammaSq);
720 resonance *= fImPartDielectricConst[i]/
hbarc;
722 dNdxP = ( resonance + cof*fIntegralTerm[i]/fSplineEnergy[i]/fSplineEnergy[i] );
724 if( dNdxP < 1.0
e-8 ) dNdxP = 1.0e-8;
731 modul2 = (1 + fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
732 fImPartDielectricConst[i]*fImPartDielectricConst[i];
749 fIntegralPAIySection[fSplineNumber] = 0;
750 fIntegralPAIdEdx[fSplineNumber] = 0;
751 fIntegralPAIySection[0] = 0;
752 G4int k = fIntervalNumber -1;
754 for(
G4int i = fSplineNumber-1; i >= 1; i--)
756 if(fSplineEnergy[i] >= fEnergyInterval[k])
758 fIntegralPAIySection[i] = fIntegralPAIySection[i+1] + SumOverInterval(i);
759 fIntegralPAIdEdx[i] = fIntegralPAIdEdx[i+1] + SumOverIntervaldEdx(i);
763 fIntegralPAIySection[i] = fIntegralPAIySection[i+1] +
764 SumOverBorder(i+1,fEnergyInterval[k]);
765 fIntegralPAIdEdx[i] = fIntegralPAIdEdx[i+1] +
766 SumOverBorderdEdx(i+1,fEnergyInterval[k]);
781 fIntegralCerenkov[fSplineNumber] = 0;
782 fIntegralCerenkov[0] = 0;
783 k = fIntervalNumber -1;
785 for( i = fSplineNumber-1; i >= 1; i-- )
787 if(fSplineEnergy[i] >= fEnergyInterval[k])
789 fIntegralCerenkov[i] = fIntegralCerenkov[i+1] + SumOverInterCerenkov(i);
794 fIntegralCerenkov[i] = fIntegralCerenkov[i+1] +
795 SumOverBordCerenkov(i+1,fEnergyInterval[k]);
811 fIntegralPlasmon[fSplineNumber] = 0;
812 fIntegralPlasmon[0] = 0;
813 G4int k = fIntervalNumber -1;
814 for(
G4int i=fSplineNumber-1;i>=1;i--)
816 if(fSplineEnergy[i] >= fEnergyInterval[k])
818 fIntegralPlasmon[i] = fIntegralPlasmon[i+1] + SumOverInterPlasmon(i);
822 fIntegralPlasmon[i] = fIntegralPlasmon[i+1] +
823 SumOverBordPlasmon(i+1,fEnergyInterval[k]);
840 x0 = fSplineEnergy[i];
841 x1 = fSplineEnergy[i+1];
843 if( std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.
e-6)
return 0.;
845 y0 = fDifPAIySection[i];
846 yy1 = fDifPAIySection[i+1];
850 a = log10(yy1/y0)/log10(c);
857 result = b*log(x1/x0);
861 result = y0*(x1*pow(c,a-1) - x0)/a;
866 fIntegralPAIySection[0] += b*log(x1/x0);
870 fIntegralPAIySection[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
882 x0 = fSplineEnergy[i];
883 x1 = fSplineEnergy[i+1];
885 if( std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.
e-6)
return 0.;
887 y0 = fDifPAIySection[i];
888 yy1 = fDifPAIySection[i+1];
890 a = log10(yy1/y0)/log10(c);
896 result = b*log(x1/x0);
900 result = y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
916 x0 = fSplineEnergy[i];
917 x1 = fSplineEnergy[i+1];
919 if( std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.
e-6)
return 0.;
921 y0 = fdNdxCerenkov[i];
922 yy1 = fdNdxCerenkov[i+1];
927 a = log10(yy1/y0)/log10(c);
929 if(a < 20.) b = y0/pow(x0,a);
932 if(a == 0) result = b*log(c);
933 else result = y0*(x1*pow(c,a-1) - x0)/a;
936 if( a == 0 ) fIntegralCerenkov[0] += b*log(x1/x0);
937 else fIntegralCerenkov[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
953 x0 = fSplineEnergy[i];
954 x1 = fSplineEnergy[i+1];
956 if( std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.
e-6)
return 0.;
958 y0 = fdNdxPlasmon[i];
959 yy1 = fdNdxPlasmon[i+1];
961 a = log10(yy1/y0)/log10(c);
964 if(a < 20.) b = y0/pow(x0,a);
967 if(a == 0) result = b*log(x1/x0);
968 else result = y0*(x1*pow(c,a-1) - x0)/a;
971 if( a == 0 ) fIntegralPlasmon[0] += b*log(x1/x0);
972 else fIntegralPlasmon[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
989 x0 = fSplineEnergy[i];
990 x1 = fSplineEnergy[i+1];
991 y0 = fDifPAIySection[i];
992 yy1 = fDifPAIySection[i+1];
996 a = log10(yy1/y0)/log10(x1/x0);
999 if(a < 20.) b = y0/pow(x0,a);
1004 result = b*log(x0/e0);
1008 result = y0*(x0 - e0*pow(d,a-1))/a;
1013 fIntegralPAIySection[0] += b*log(x0/e0);
1017 fIntegralPAIySection[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1019 x0 = fSplineEnergy[i - 1];
1020 x1 = fSplineEnergy[i - 2];
1021 y0 = fDifPAIySection[i - 1];
1022 yy1 = fDifPAIySection[i - 2];
1026 a = log10(yy1/y0)/log10(x1/x0);
1032 result += b*log(e0/x0);
1036 result += y0*(e0*pow(d,a-1) - x0)/a;
1041 fIntegralPAIySection[0] += b*log(e0/x0);
1045 fIntegralPAIySection[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1059 x0 = fSplineEnergy[i];
1060 x1 = fSplineEnergy[i+1];
1061 y0 = fDifPAIySection[i];
1062 yy1 = fDifPAIySection[i+1];
1066 a = log10(yy1/y0)/log10(x1/x0);
1069 if(a < 20.) b = y0/pow(x0,a);
1074 result = b*log(x0/e0);
1078 result = y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1080 x0 = fSplineEnergy[i - 1];
1081 x1 = fSplineEnergy[i - 2];
1082 y0 = fDifPAIySection[i - 1];
1083 yy1 = fDifPAIySection[i - 2];
1087 a = log10(yy1/y0)/log10(x1/x0);
1089 if(a < 20.) b = y0/pow(x0,a);
1094 result += b*log(e0/x0);
1098 result += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1115 x0 = fSplineEnergy[i];
1116 x1 = fSplineEnergy[i+1];
1117 y0 = fdNdxCerenkov[i];
1118 yy1 = fdNdxCerenkov[i+1];
1125 a = log10(yy1/y0)/log10(c);
1128 if(a < 20.) b = y0/pow(x0,a);
1131 if( a == 0 ) result = b*log(x0/e0);
1132 else result = y0*(x0 - e0*pow(d,a-1))/a;
1135 if( a == 0 ) fIntegralCerenkov[0] += b*log(x0/e0);
1136 else fIntegralCerenkov[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1140 x0 = fSplineEnergy[i - 1];
1141 x1 = fSplineEnergy[i - 2];
1142 y0 = fdNdxCerenkov[i - 1];
1143 yy1 = fdNdxCerenkov[i - 2];
1150 a = log10(yy1/y0)/log10(x1/x0);
1153 if(a < 20.) b = y0/pow(x0,a);
1155 if(a > 20.0) b = 0.0;
1156 else b = y0/pow(x0,a);
1161 if( a == 0 ) result += b*log(e0/x0);
1162 else result += y0*(e0*pow(d,a-1) - x0 )/a;
1166 if( a == 0 ) fIntegralCerenkov[0] += b*log(e0/x0);
1167 else fIntegralCerenkov[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1186 x0 = fSplineEnergy[i];
1187 x1 = fSplineEnergy[i+1];
1188 y0 = fdNdxPlasmon[i];
1189 yy1 = fdNdxPlasmon[i+1];
1193 a = log10(yy1/y0)/log10(c);
1196 if(a < 20.) b = y0/pow(x0,a);
1199 if( a == 0 ) result = b*log(x0/e0);
1200 else result = y0*(x0 - e0*pow(d,a-1))/a;
1203 if( a == 0 ) fIntegralPlasmon[0] += b*log(x0/e0);
1204 else fIntegralPlasmon[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1206 x0 = fSplineEnergy[i - 1];
1207 x1 = fSplineEnergy[i - 2];
1208 y0 = fdNdxPlasmon[i - 1];
1209 yy1 = fdNdxPlasmon[i - 2];
1213 a = log10(yy1/y0)/log10(c);
1215 if(a < 20.) b = y0/pow(x0,a);
1218 if( a == 0 ) result += b*log(e0/x0);
1219 else result += y0*(e0*pow(d,a-1) - x0)/a;
1222 if( a == 0 ) fIntegralPlasmon[0] += b*log(e0/x0);
1223 else fIntegralPlasmon[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1244 meanNumber = fIntegralPAIySection[1]*step;
1245 numOfCollisions =
G4Poisson(meanNumber);
1249 while(numOfCollisions)
1253 for( iTransfer=1; iTransfer<=fSplineNumber; iTransfer++ )
1255 if( position >= fIntegralPAIySection[iTransfer] )
break;
1257 loss += fSplineEnergy[iTransfer] ;
1281 meanNumber = fIntegralCerenkov[1]*step;
1282 numOfCollisions =
G4Poisson(meanNumber);
1286 while(numOfCollisions)
1290 for( iTransfer=1; iTransfer<=fSplineNumber; iTransfer++ )
1292 if( position >= fIntegralCerenkov[iTransfer] )
break;
1294 loss += fSplineEnergy[iTransfer] ;
1318 meanNumber = fIntegralPlasmon[1]*step;
1319 numOfCollisions =
G4Poisson(meanNumber);
1323 while(numOfCollisions)
1327 for( iTransfer=1; iTransfer<=fSplineNumber; iTransfer++ )
1329 if( position >= fIntegralPlasmon[iTransfer] )
break;
1331 loss += fSplineEnergy[iTransfer] ;
1345 G4String head =
"G4PAIySection::" + methodName +
"()";
1347 ed <<
"Wrong index " << i <<
" fSplineNumber= " << fSplineNumber;
1361 1.094989e+00, 1.107813e+00, 1.122369e+00, 1.138890e+00, 1.157642e+00,
1362 1.178925e+00, 1.203082e+00, 1.230500e+00, 1.261620e+00, 1.296942e+00,
1363 1.337032e+00, 1.382535e+00, 1.434181e+00, 1.492800e+00, 1.559334e+00,
1364 1.634850e+00, 1.720562e+00, 1.817845e+00, 1.928263e+00, 2.053589e+00,
1365 2.195835e+00, 2.357285e+00, 2.540533e+00, 2.748522e+00, 2.984591e+00,
1366 3.252533e+00, 3.556649e+00, 3.901824e+00, 4.293602e+00, 4.738274e+00,
1367 5.242981e+00, 5.815829e+00, 6.466019e+00, 7.203990e+00, 8.041596e+00,
1368 8.992288e+00, 1.007133e+01, 1.129606e+01, 1.268614e+01, 1.426390e+01,
1369 1.605467e+01, 1.808721e+01, 2.039417e+01, 2.301259e+01, 2.598453e+01,
1370 2.935771e+01, 3.318630e+01, 3.753180e+01, 4.246399e+01, 4.806208e+01,
1371 5.441597e+01, 6.162770e+01, 6.981310e+01, 7.910361e+01, 8.964844e+01,
1372 1.016169e+02, 1.152013e+02, 1.306197e+02, 1.481198e+02, 1.679826e+02,
1373 1.905270e+02, 2.161152e+02, 2.451581e+02, 2.781221e+02, 3.155365e+02,
1374 3.580024e+02, 4.062016e+02, 4.609081e+02, 5.230007e+02, 5.934765e+02,
1375 6.734672e+02, 7.642575e+02, 8.673056e+02, 9.842662e+02, 1.117018e+03,
1376 1.267692e+03, 1.438709e+03, 1.632816e+03, 1.853128e+03, 2.103186e+03,
1377 2.387004e+03, 2.709140e+03, 3.074768e+03, 3.489760e+03, 3.960780e+03,
1378 4.495394e+03, 5.102185e+03, 5.790900e+03, 6.572600e+03, 7.459837e+03,
1379 8.466860e+03, 9.609843e+03, 1.090714e+04, 1.237959e+04, 1.405083e+04,
1380 1.594771e+04, 1.810069e+04, 2.054434e+04, 2.331792e+04, 2.646595e+04,
1381 3.003901e+04, 3.409446e+04, 3.869745e+04, 4.392189e+04, 4.985168e+04,
1382 5.658206e+04, 6.422112e+04, 7.289153e+04, 8.273254e+04, 9.390219e+04,
G4long G4Poisson(G4double mean)
G4double SumOverIntervaldEdx(G4int intervalNumber)
std::ostringstream G4ExceptionDescription
void CallError(G4int i, const G4String &methodName) const
G4double RutherfordIntegral(G4int intervalNumber, G4double limitLow, G4double limitHigh)
static const G4double fDelta
static const G4int fMaxSplineSize
void NormShift(G4double betaGammaSq)
static const G4double betaBohr
static const G4double fLorentzFactor[112]
G4double ImPartDielectricConst(G4int intervalNumber, G4double energy)
G4double SumOverInterCerenkov(G4int intervalNumber)
static const G4double cofBetaBohr
G4double GetDensity() const
G4double PAIdNdxCerenkov(G4int intervalNumber, G4double betaGammaSq)
void ComputeLowEnergyCof(const G4Material *material)
G4double SumOverBorderdEdx(G4int intervalNumber, G4double energy)
static const G4double betaBohr4
static G4int fNumberOfGammas
G4double SumOverBordPlasmon(G4int intervalNumber, G4double energy)
G4GLOB_DLL std::ostream G4cout
G4double GetStepEnergyLoss(G4double step)
void Initialize(const G4Material *material, G4double maxEnergyTransfer, G4double betaGammaSq, G4SandiaTable *)
static const G4double betaBohr2
const G4Element * GetElement(G4int iel) const
G4double GetSandiaMatTablePAI(G4int, G4int) const
G4double GetStepCerenkovLoss(G4double step)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
static const G4int fRefGammaNumber
G4double SumOverBorder(G4int intervalNumber, G4double energy)
G4double GetElectronDensity() const
G4int GetMaxInterval() const
void SplainPAI(G4double betaGammaSq)
static const G4double fError
size_t GetNumberOfElements() const
G4double SumOverBordCerenkov(G4int intervalNumber, G4double energy)
G4double RePartDielectricConst(G4double energy)
G4double GetStepPlasmonLoss(G4double step)
G4double DifPAIySection(G4int intervalNumber, G4double betaGammaSq)
G4double SumOverInterval(G4int intervalNumber)
G4double PAIdNdxPlasmon(G4int intervalNumber, G4double betaGammaSq)
void IntegralPAIySection()
G4double SumOverInterPlasmon(G4int intervalNumber)