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],
365 fNormalizationCof = 2*
pi*
pi*hbarc*hbarc*fine_structure_const/electron_mass_c2;
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;
438 G4double b = log10(yy1) - a*log10(x1);
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;
570 result *= 2*hbarc/
pi;
585 G4double beta, be2,cof,x1,x2,x3,x4,x5,x6,x7,x8,result;
590 be2 = betaGammaSq/(1 + betaGammaSq);
594 x1 = log(2*electron_mass_c2/fSplineEnergy[i]);
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.0e-8) result = 1.0e-8;
626 result *= fine_structure_const/be2/
pi;
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.0e-8) dNdxC = 1.0e-8;
687 dNdxC *= fine_structure_const/be2/
pi;
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);
719 resonance = log(2*electron_mass_c2*be2/fSplineEnergy[i]);
720 resonance *= fImPartDielectricConst[i]/hbarc;
722 dNdxP = ( resonance + cof*fIntegralTerm[i]/fSplineEnergy[i]/fSplineEnergy[i] );
724 if( dNdxP < 1.0e-8 ) dNdxP = 1.0e-8;
726 dNdxP *= fine_structure_const/be2/
pi;
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,
static c2_factory< G4double > c2
G4long G4Poisson(G4double mean)
G4double SumOverIntervaldEdx(G4int intervalNumber)
std::ostringstream G4ExceptionDescription
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
void CallError(G4int i, const G4String &methodName) const
G4int GetMaxInterval() const
G4double PAIdNdxCerenkov(G4int intervalNumber, G4double betaGammaSq)
G4double GetSandiaMatTablePAI(G4int, G4int) const
void ComputeLowEnergyCof(const G4Material *material)
const G4Element * GetElement(G4int iel) const
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)
G4double GetElectronDensity() const
void Initialize(const G4Material *material, G4double maxEnergyTransfer, G4double betaGammaSq, G4SandiaTable *)
static const G4double betaBohr2
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)
void SplainPAI(G4double betaGammaSq)
static const G4double fError
const G4double x[NPOINTSGL]
G4double SumOverBordCerenkov(G4int intervalNumber, G4double energy)
size_t GetNumberOfElements() const
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)