62 const G4double G4PAIySection::fDelta = 0.005;
63 const G4double G4PAIySection::fError = 0.005;
65 const G4int G4PAIySection::fMaxSplineSize = 500;
76 fDensity = fElectronDensity = fNormalizationCof = fLowEnergyCof = 0.0;
77 fIntervalNumber = fSplineNumber = 0;
79 for(
G4int i=0; i<500; ++i) {
80 fSplineEnergy[i] = 0.0;
81 fRePartDielectricConst[i] = 0.0;
82 fImPartDielectricConst[i] = 0.0;
83 fIntegralTerm[i] = 0.0;
84 fDifPAIySection[i] = 0.0;
85 fdNdxCerenkov[i] = 0.0;
86 fdNdxPlasmon[i] = 0.0;
87 fIntegralPAIySection[i] = 0.0;
88 fIntegralPAIdEdx[i] = 0.0;
89 fIntegralCerenkov[i] = 0.0;
90 fIntegralPlasmon[i] = 0.0;
91 for(
G4int j=0; j<112; ++j) { fPAItable[i][j] = 0.0; }
123 for( i = 1; i <= fIntervalNumber; i++ )
125 energy = fSandia->GetSandiaMatTablePAI(i-1,0);
127 if( energy >= maxEnergyTransfer || i > fIntervalNumber )
129 fEnergyInterval[i] = maxEnergyTransfer;
133 fEnergyInterval[i] =
energy;
134 fA1[i] = fSandia->GetSandiaMatTablePAI(i-1,1);
135 fA2[i] = fSandia->GetSandiaMatTablePAI(i-1,2);
136 fA3[i] = fSandia->GetSandiaMatTablePAI(i-1,3);
137 fA4[i] = fSandia->GetSandiaMatTablePAI(i-1,4);
139 if( fVerbose > 0 && std::fabs( betaGammaSq - 8. ) < 0.4 )
141 G4cout<<i<<
"\t"<<fEnergyInterval[i]/
keV<<
" keV \t"<<fA1[i]<<
"\t"<<fA2[i] <<
"\t"<<fA3[i] <<
"\t"<<fA4[i]<<
G4endl;
146 if( fEnergyInterval[fIntervalNumber] != maxEnergyTransfer )
149 fEnergyInterval[fIntervalNumber] = maxEnergyTransfer;
150 fA1[fIntervalNumber] = fA1[fIntervalNumber-1];
151 fA2[fIntervalNumber] = fA2[fIntervalNumber-1];
152 fA3[fIntervalNumber] = fA3[fIntervalNumber-1];
153 fA4[fIntervalNumber] = fA4[fIntervalNumber-1];
157 for( i = 1; i < fIntervalNumber; i++ )
161 if(fEnergyInterval[i+1]-fEnergyInterval[i] <
162 1.5*fDelta*(fEnergyInterval[i+1]+fEnergyInterval[i]))
164 for( j = i; j < fIntervalNumber; j++ )
166 fEnergyInterval[j] = fEnergyInterval[j+1];
176 if( fVerbose > 0 && std::fabs( betaGammaSq - 8. ) < 0.4 )
179 G4cout<<
"for bg2 = "<<betaGammaSq<<
", Tmax = "<< maxEnergyTransfer/
keV<<
" keV"<<
G4endl;
180 G4cout<<
"energy \t"<<
"a1 \t"<<
"a2 \t"<<
"a3 \t"<<
"a4 \t"<<
G4endl;
182 for( j = 1; j < fIntervalNumber; j++ )
184 G4cout<<j<<
"\t"<<fEnergyInterval[j]/
keV<<
" keV \t"<<fA1[j]<<
"\t"<<fA2[j] <<
"\t"<<fA3[j] <<
"\t"<<fA4[j]<<
G4endl;
191 fLorentzFactor[fRefGammaNumber]*fLorentzFactor[fRefGammaNumber] - 1;
193 ComputeLowEnergyCof(material);
194 NormShift(betaGammaSqRef);
195 SplainPAI(betaGammaSqRef);
199 for( i = 1; i <= fSplineNumber; i++ )
201 fDifPAIySection[i] = DifPAIySection(i,betaGammaSq);
202 fdNdxCerenkov[i] = PAIdNdxCerenkov(i,betaGammaSq);
203 fdNdxPlasmon[i] = PAIdNdxPlasmon(i,betaGammaSq);
205 IntegralPAIySection();
227 for( i = 0; i < numberOfElements; i++ )
230 sumZ += thisMaterialZ[i];
231 thisMaterialCof[i] = p0+p1*thisMaterialZ[i]+p2*thisMaterialZ[i]*thisMaterialZ[i];
233 for( i = 0; i < numberOfElements; i++ )
235 sumCof += thisMaterialCof[i]*thisMaterialZ[i]/sumZ;
237 fLowEnergyCof = sumCof;
238 delete [] thisMaterialZ;
239 delete [] thisMaterialCof;
254 G4double betaGammaSq = fLorentzFactor[fRefGammaNumber]*
255 fLorentzFactor[fRefGammaNumber] - 1;
259 NormShift(betaGammaSq);
260 SplainPAI(betaGammaSq);
262 IntegralPAIySection();
266 for(i = 0; i<=fSplineNumber; i++)
268 fPAItable[i][fRefGammaNumber] = fIntegralPAIySection[i];
271 fPAItable[i][0] = fSplineEnergy[i];
274 fPAItable[0][0] = fSplineNumber;
276 for(
G4int j = 1; j < 112; j++)
278 if( j == fRefGammaNumber )
continue;
280 betaGammaSq = fLorentzFactor[j]*fLorentzFactor[j] - 1;
282 for(i = 1; i <= fSplineNumber; i++)
284 fDifPAIySection[i] = DifPAIySection(i,betaGammaSq);
285 fdNdxCerenkov[i] = PAIdNdxCerenkov(i,betaGammaSq);
286 fdNdxPlasmon[i] = PAIdNdxPlasmon(i,betaGammaSq);
288 IntegralPAIySection();
292 for(i = 0; i <= fSplineNumber; i++)
294 fPAItable[i][j] = fIntegralPAIySection[i];
309 for( i = 1; i <= fIntervalNumber-1; i++ )
311 for( j = 1; j <= 2; j++ )
313 fSplineNumber = (i-1)*2 + j;
315 if( j == 1 ) fSplineEnergy[fSplineNumber] = fEnergyInterval[i ]*(1+fDelta);
316 else fSplineEnergy[fSplineNumber] = fEnergyInterval[i+1]*(1-fDelta);
321 fIntegralTerm[1]=RutherfordIntegral(1,fEnergyInterval[1],fSplineEnergy[1]);
325 for(i=2;i<=fSplineNumber;i++)
327 if(fSplineEnergy[i]<fEnergyInterval[j+1])
329 fIntegralTerm[i] = fIntegralTerm[i-1] +
330 RutherfordIntegral(j,fSplineEnergy[i-1],
335 G4double x = RutherfordIntegral(j,fSplineEnergy[i-1],
336 fEnergyInterval[j+1] );
338 fIntegralTerm[i] = fIntegralTerm[i-1] + x +
339 RutherfordIntegral(j,fEnergyInterval[j],
345 fNormalizationCof *= fElectronDensity/fIntegralTerm[fSplineNumber];
352 for(
G4int k=1;k<=fIntervalNumber-1;k++)
357 fImPartDielectricConst[i] = fNormalizationCof*
358 ImPartDielectricConst(k,fSplineEnergy[i]);
359 fRePartDielectricConst[i] = fNormalizationCof*
360 RePartDielectricConst(fSplineEnergy[i]);
361 fIntegralTerm[i] *= fNormalizationCof;
363 fDifPAIySection[i] = DifPAIySection(i,betaGammaSq);
364 fdNdxCerenkov[i] = PAIdNdxCerenkov(i,betaGammaSq);
365 fdNdxPlasmon[i] = PAIdNdxPlasmon(i,betaGammaSq);
382 while ( (i < fSplineNumber) && (fSplineNumber < fMaxSplineSize-1) )
384 if(fSplineEnergy[i+1] > fEnergyInterval[k+1])
394 for(
G4int j = fSplineNumber; j >= i+2; j-- )
396 fSplineEnergy[j] = fSplineEnergy[j-1];
397 fImPartDielectricConst[j] = fImPartDielectricConst[j-1];
398 fRePartDielectricConst[j] = fRePartDielectricConst[j-1];
399 fIntegralTerm[j] = fIntegralTerm[j-1];
401 fDifPAIySection[j] = fDifPAIySection[j-1];
402 fdNdxCerenkov[j] = fdNdxCerenkov[j-1];
403 fdNdxPlasmon[j] = fdNdxPlasmon[j-1];
411 fSplineEnergy[i+1] = en1;
423 fImPartDielectricConst[i+1] = fNormalizationCof*
424 ImPartDielectricConst(k,fSplineEnergy[i+1]);
425 fRePartDielectricConst[i+1] = fNormalizationCof*
426 RePartDielectricConst(fSplineEnergy[i+1]);
427 fIntegralTerm[i+1] = fIntegralTerm[i] + fNormalizationCof*
428 RutherfordIntegral(k,fSplineEnergy[i],
431 fDifPAIySection[i+1] = DifPAIySection(i+1,betaGammaSq);
432 fdNdxCerenkov[i+1] = PAIdNdxCerenkov(i+1,betaGammaSq);
433 fdNdxPlasmon[i+1] = PAIdNdxPlasmon(i+1,betaGammaSq);
438 G4double x = 2*(fDifPAIySection[i+1] -
y)/(fDifPAIySection[i+1] + y);
444 if( x > fError && fSplineNumber < fMaxSplineSize-1 )
466 c1 = (x2 -
x1)/x1/x2;
467 c2 = (x2 -
x1)*(x2 + x1)/x1/x1/x2/
x2;
468 c3 = (x2 -
x1)*(x1*x1 + x1*x2 + x2*x2)/x1/x1/x1/x2/x2/
x2;
471 return fA1[k]*log(x2/x1) + fA2[k]*c1 + fA3[k]*c2/2 + fA4[k]*c3/3;
484 G4double energy2,energy3,energy4,result;
486 energy2 = energy1*energy1;
487 energy3 = energy2*energy1;
488 energy4 = energy3*energy1;
490 result = fA1[k]/energy1+fA2[k]/energy2+fA3[k]/energy3+fA4[k]/energy4;
491 result *=
hbarc/energy1;
506 G4double x0, x02, x03, x04, x05,
x1,
x2, xx1 ,xx2 , xx12,
507 c1, c2, c3, cof1, cof2, xln1, xln2, xln3, result;
512 for(
G4int i=1;i<=fIntervalNumber-1;i++)
514 x1 = fEnergyInterval[i];
515 x2 = fEnergyInterval[i+1];
526 xln3 = log((x2 + x0)/(x1 + x0));
531 c1 = (x2 -
x1)/x1/x2;
532 c2 = (x2 -
x1)*(x2 +x1)/x1/x1/x2/
x2;
533 c3 = (x2 -
x1)*(x1*x1 + x1*x2 + x2*x2)/x1/x1/x1/x2/x2/
x2;
535 result -= (fA1[i]/x02 + fA3[i]/x04)*xln1;
536 result -= (fA2[i]/x02 + fA4[i]/x04)*c1;
537 result -= fA3[i]*c2/2/x02;
538 result -= fA4[i]*c3/3/x02;
540 cof1 = fA1[i]/x02 + fA3[i]/x04;
541 cof2 = fA2[i]/x03 + fA4[i]/x05;
543 result += 0.5*(cof1 +cof2)*xln2;
544 result += 0.5*(cof1 - cof2)*xln3;
561 G4double beta, be2,cof,
x1,
x2,x3,x4,x5,x6,x7,x8,result;
567 be2 = betaGammaSq/(1 + betaGammaSq);
573 if( betaGammaSq < 0.01 ) x2 = log(be2);
576 x2 = -log( (1/betaGammaSq - fRePartDielectricConst[i])*
577 (1/betaGammaSq - fRePartDielectricConst[i]) +
578 fImPartDielectricConst[i]*fImPartDielectricConst[i] )/2;
580 if( fImPartDielectricConst[i] == 0.0 ||betaGammaSq < 0.01 )
586 x3 = -fRePartDielectricConst[i] + 1/betaGammaSq;
587 x5 = -1 - fRePartDielectricConst[i] +
588 be2*((1 +fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
589 fImPartDielectricConst[i]*fImPartDielectricConst[i]);
591 x7 = atan2(fImPartDielectricConst[i],x3);
596 x4 = ((x1 +
x2)*fImPartDielectricConst[i] + x6)/
hbarc;
598 x8 = (1 + fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
599 fImPartDielectricConst[i]*fImPartDielectricConst[i];
601 result = (x4 + cof*fIntegralTerm[i]/fSplineEnergy[i]/fSplineEnergy[i]);
602 if(result < 1.0
e-8) result = 1.0e-8;
608 result *= (1 - exp(-beta/betaBohr/lowCof));
629 G4double logarithm, x3, x5, argument, modul2, dNdxC;
630 G4double be2, be4, betaBohr2,betaBohr4,cofBetaBohr;
635 betaBohr4 = betaBohr2*betaBohr2*cofBetaBohr;
637 be2 = betaGammaSq/(1 + betaGammaSq);
640 if( betaGammaSq < 0.01 ) logarithm = log(1.0+betaGammaSq);
643 logarithm = -log( (1/betaGammaSq - fRePartDielectricConst[i])*
644 (1/betaGammaSq - fRePartDielectricConst[i]) +
645 fImPartDielectricConst[i]*fImPartDielectricConst[i] )*0.5;
646 logarithm += log(1+1.0/betaGammaSq);
649 if( fImPartDielectricConst[i] == 0.0 || betaGammaSq < 0.01 )
655 x3 = -fRePartDielectricConst[i] + 1.0/betaGammaSq;
656 x5 = -1.0 - fRePartDielectricConst[i] +
657 be2*((1.0 +fRePartDielectricConst[i])*(1.0 + fRePartDielectricConst[i]) +
658 fImPartDielectricConst[i]*fImPartDielectricConst[i]);
659 if( x3 == 0.0 ) argument = 0.5*
pi;
660 else argument = atan2(fImPartDielectricConst[i],x3);
663 dNdxC = ( logarithm*fImPartDielectricConst[i] + argument )/
hbarc;
665 if(dNdxC < 1.0
e-8) dNdxC = 1.0e-8;
667 dNdxC *= fine_structure_const/be2/
pi;
669 dNdxC *= (1-exp(-be4/betaBohr4));
673 modul2 = (1.0 + fRePartDielectricConst[i])*(1.0 + fRePartDielectricConst[i]) +
674 fImPartDielectricConst[i]*fImPartDielectricConst[i];
691 G4double cof, resonance, modul2, dNdxP;
692 G4double be2, be4, betaBohr2, betaBohr4, cofBetaBohr;
697 betaBohr4 = betaBohr2*betaBohr2*cofBetaBohr;
699 be2 = betaGammaSq/(1 + betaGammaSq);
703 resonance *= fImPartDielectricConst[i]/
hbarc;
706 dNdxP = ( resonance + cof*fIntegralTerm[i]/fSplineEnergy[i]/fSplineEnergy[i] );
708 if( dNdxP < 1.0
e-8 ) dNdxP = 1.0e-8;
710 dNdxP *= fine_structure_const/be2/
pi;
711 dNdxP *= (1-exp(-be4/betaBohr4));
715 modul2 = (1 + fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
716 fImPartDielectricConst[i]*fImPartDielectricConst[i];
733 fIntegralPAIySection[fSplineNumber] = 0;
734 fIntegralPAIdEdx[fSplineNumber] = 0;
735 fIntegralPAIySection[0] = 0;
736 G4int k = fIntervalNumber -1;
738 for(
G4int i = fSplineNumber-1; i >= 1; i--)
740 if(fSplineEnergy[i] >= fEnergyInterval[k])
742 fIntegralPAIySection[i] = fIntegralPAIySection[i+1] + SumOverInterval(i);
743 fIntegralPAIdEdx[i] = fIntegralPAIdEdx[i+1] + SumOverIntervaldEdx(i);
747 fIntegralPAIySection[i] = fIntegralPAIySection[i+1] +
748 SumOverBorder(i+1,fEnergyInterval[k]);
749 fIntegralPAIdEdx[i] = fIntegralPAIdEdx[i+1] +
750 SumOverBorderdEdx(i+1,fEnergyInterval[k]);
765 fIntegralCerenkov[fSplineNumber] = 0;
766 fIntegralCerenkov[0] = 0;
767 k = fIntervalNumber -1;
769 for( i = fSplineNumber-1; i >= 1; i-- )
771 if(fSplineEnergy[i] >= fEnergyInterval[k])
773 fIntegralCerenkov[i] = fIntegralCerenkov[i+1] + SumOverInterCerenkov(i);
778 fIntegralCerenkov[i] = fIntegralCerenkov[i+1] +
779 SumOverBordCerenkov(i+1,fEnergyInterval[k]);
795 fIntegralPlasmon[fSplineNumber] = 0;
796 fIntegralPlasmon[0] = 0;
797 G4int k = fIntervalNumber -1;
798 for(
G4int i=fSplineNumber-1;i>=1;i--)
800 if(fSplineEnergy[i] >= fEnergyInterval[k])
802 fIntegralPlasmon[i] = fIntegralPlasmon[i+1] + SumOverInterPlasmon(i);
806 fIntegralPlasmon[i] = fIntegralPlasmon[i+1] +
807 SumOverBordPlasmon(i+1,fEnergyInterval[k]);
824 x0 = fSplineEnergy[i];
825 x1 = fSplineEnergy[i+1];
826 y0 = fDifPAIySection[i];
827 yy1 = fDifPAIySection[i+1];
829 a = log10(yy1/y0)/log10(c);
835 result = b*log(x1/x0);
839 result = y0*(x1*pow(c,a-1) - x0)/a;
844 fIntegralPAIySection[0] += b*log(x1/x0);
848 fIntegralPAIySection[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
860 x0 = fSplineEnergy[i];
861 x1 = fSplineEnergy[i+1];
862 y0 = fDifPAIySection[i];
863 yy1 = fDifPAIySection[i+1];
865 a = log10(yy1/y0)/log10(c);
871 result = b*log(x1/x0);
875 result = y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
891 x0 = fSplineEnergy[i];
892 x1 = fSplineEnergy[i+1];
893 y0 = fdNdxCerenkov[i];
894 yy1 = fdNdxCerenkov[i+1];
899 a = log10(yy1/y0)/log10(c);
901 if(a < 20.) b = y0/pow(x0,a);
904 if(a == 0) result = b*log(c);
905 else result = y0*(x1*pow(c,a-1) - x0)/a;
908 if( a == 0 ) fIntegralCerenkov[0] += b*log(x1/x0);
909 else fIntegralCerenkov[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
925 x0 = fSplineEnergy[i];
926 x1 = fSplineEnergy[i+1];
927 y0 = fdNdxPlasmon[i];
928 yy1 = fdNdxPlasmon[i+1];
930 a = log10(yy1/y0)/log10(c);
933 if(a < 20.) b = y0/pow(x0,a);
936 if(a == 0) result = b*log(x1/x0);
937 else result = y0*(x1*pow(c,a-1) - x0)/a;
940 if( a == 0 ) fIntegralPlasmon[0] += b*log(x1/x0);
941 else fIntegralPlasmon[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
958 x0 = fSplineEnergy[i];
959 x1 = fSplineEnergy[i+1];
960 y0 = fDifPAIySection[i];
961 yy1 = fDifPAIySection[i+1];
965 a = log10(yy1/y0)/log10(x1/x0);
968 if(a < 20.) b = y0/pow(x0,a);
973 result = b*log(x0/e0);
977 result = y0*(x0 - e0*pow(d,a-1))/a;
982 fIntegralPAIySection[0] += b*log(x0/e0);
986 fIntegralPAIySection[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
988 x0 = fSplineEnergy[i - 1];
989 x1 = fSplineEnergy[i - 2];
990 y0 = fDifPAIySection[i - 1];
991 yy1 = fDifPAIySection[i - 2];
995 a = log10(yy1/y0)/log10(x1/x0);
1001 result += b*log(e0/x0);
1005 result += y0*(e0*pow(d,a-1) - x0)/a;
1010 fIntegralPAIySection[0] += b*log(e0/x0);
1014 fIntegralPAIySection[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1028 x0 = fSplineEnergy[i];
1029 x1 = fSplineEnergy[i+1];
1030 y0 = fDifPAIySection[i];
1031 yy1 = fDifPAIySection[i+1];
1035 a = log10(yy1/y0)/log10(x1/x0);
1038 if(a < 20.) b = y0/pow(x0,a);
1043 result = b*log(x0/e0);
1047 result = y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1049 x0 = fSplineEnergy[i - 1];
1050 x1 = fSplineEnergy[i - 2];
1051 y0 = fDifPAIySection[i - 1];
1052 yy1 = fDifPAIySection[i - 2];
1056 a = log10(yy1/y0)/log10(x1/x0);
1058 if(a < 20.) b = y0/pow(x0,a);
1063 result += b*log(e0/x0);
1067 result += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1084 x0 = fSplineEnergy[i];
1085 x1 = fSplineEnergy[i+1];
1086 y0 = fdNdxCerenkov[i];
1087 yy1 = fdNdxCerenkov[i+1];
1094 a = log10(yy1/y0)/log10(c);
1097 if(a < 20.) b = y0/pow(x0,a);
1100 if( a == 0 ) result = b*log(x0/e0);
1101 else result = y0*(x0 - e0*pow(d,a-1))/a;
1104 if( a == 0 ) fIntegralCerenkov[0] += b*log(x0/e0);
1105 else fIntegralCerenkov[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1109 x0 = fSplineEnergy[i - 1];
1110 x1 = fSplineEnergy[i - 2];
1111 y0 = fdNdxCerenkov[i - 1];
1112 yy1 = fdNdxCerenkov[i - 2];
1119 a = log10(yy1/y0)/log10(x1/x0);
1122 if(a < 20.) b = y0/pow(x0,a);
1124 if(a > 20.0) b = 0.0;
1125 else b = y0/pow(x0,a);
1130 if( a == 0 ) result += b*log(e0/x0);
1131 else result += y0*(e0*pow(d,a-1) - x0 )/a;
1135 if( a == 0 ) fIntegralCerenkov[0] += b*log(e0/x0);
1136 else fIntegralCerenkov[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1155 x0 = fSplineEnergy[i];
1156 x1 = fSplineEnergy[i+1];
1157 y0 = fdNdxPlasmon[i];
1158 yy1 = fdNdxPlasmon[i+1];
1162 a = log10(yy1/y0)/log10(c);
1165 if(a < 20.) b = y0/pow(x0,a);
1168 if( a == 0 ) result = b*log(x0/e0);
1169 else result = y0*(x0 - e0*pow(d,a-1))/a;
1172 if( a == 0 ) fIntegralPlasmon[0] += b*log(x0/e0);
1173 else fIntegralPlasmon[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1175 x0 = fSplineEnergy[i - 1];
1176 x1 = fSplineEnergy[i - 2];
1177 y0 = fdNdxPlasmon[i - 1];
1178 yy1 = fdNdxPlasmon[i - 2];
1182 a = log10(yy1/y0)/log10(c);
1184 if(a < 20.) b = y0/pow(x0,a);
1187 if( a == 0 ) result += b*log(e0/x0);
1188 else result += y0*(e0*pow(d,a-1) - x0)/a;
1191 if( a == 0 ) fIntegralPlasmon[0] += b*log(e0/x0);
1192 else fIntegralPlasmon[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1213 meanNumber = fIntegralPAIySection[1]*step;
1214 numOfCollisions =
G4Poisson(meanNumber);
1218 while(numOfCollisions)
1222 for( iTransfer=1; iTransfer<=fSplineNumber; iTransfer++ )
1224 if( position >= fIntegralPAIySection[iTransfer] )
break;
1226 loss += fSplineEnergy[iTransfer] ;
1249 meanNumber = fIntegralCerenkov[1]*step;
1250 numOfCollisions =
G4Poisson(meanNumber);
1254 while(numOfCollisions)
1258 for( iTransfer=1; iTransfer<=fSplineNumber; iTransfer++ )
1260 if( position >= fIntegralCerenkov[iTransfer] )
break;
1262 loss += fSplineEnergy[iTransfer] ;
1285 meanNumber = fIntegralPlasmon[1]*step;
1286 numOfCollisions =
G4Poisson(meanNumber);
1290 while(numOfCollisions)
1294 for( iTransfer=1; iTransfer<=fSplineNumber; iTransfer++ )
1296 if( position >= fIntegralPlasmon[iTransfer] )
break;
1298 loss += fSplineEnergy[iTransfer] ;
1309 void G4PAIySection::CallError(
G4int i,
const G4String& methodName)
const
1311 G4String head =
"G4PAIySection::" + methodName +
"()";
1313 ed <<
"Wrong index " << i <<
" fSplineNumber= " << fSplineNumber <<
G4endl;
1322 G4int G4PAIySection::fNumberOfGammas = 111;
1324 const G4double G4PAIySection::fLorentzFactor[112] =
1327 1.094989e+00, 1.107813e+00, 1.122369e+00, 1.138890e+00, 1.157642e+00,
1328 1.178925e+00, 1.203082e+00, 1.230500e+00, 1.261620e+00, 1.296942e+00,
1329 1.337032e+00, 1.382535e+00, 1.434181e+00, 1.492800e+00, 1.559334e+00,
1330 1.634850e+00, 1.720562e+00, 1.817845e+00, 1.928263e+00, 2.053589e+00,
1331 2.195835e+00, 2.357285e+00, 2.540533e+00, 2.748522e+00, 2.984591e+00,
1332 3.252533e+00, 3.556649e+00, 3.901824e+00, 4.293602e+00, 4.738274e+00,
1333 5.242981e+00, 5.815829e+00, 6.466019e+00, 7.203990e+00, 8.041596e+00,
1334 8.992288e+00, 1.007133e+01, 1.129606e+01, 1.268614e+01, 1.426390e+01,
1335 1.605467e+01, 1.808721e+01, 2.039417e+01, 2.301259e+01, 2.598453e+01,
1336 2.935771e+01, 3.318630e+01, 3.753180e+01, 4.246399e+01, 4.806208e+01,
1337 5.441597e+01, 6.162770e+01, 6.981310e+01, 7.910361e+01, 8.964844e+01,
1338 1.016169e+02, 1.152013e+02, 1.306197e+02, 1.481198e+02, 1.679826e+02,
1339 1.905270e+02, 2.161152e+02, 2.451581e+02, 2.781221e+02, 3.155365e+02,
1340 3.580024e+02, 4.062016e+02, 4.609081e+02, 5.230007e+02, 5.934765e+02,
1341 6.734672e+02, 7.642575e+02, 8.673056e+02, 9.842662e+02, 1.117018e+03,
1342 1.267692e+03, 1.438709e+03, 1.632816e+03, 1.853128e+03, 2.103186e+03,
1343 2.387004e+03, 2.709140e+03, 3.074768e+03, 3.489760e+03, 3.960780e+03,
1344 4.495394e+03, 5.102185e+03, 5.790900e+03, 6.572600e+03, 7.459837e+03,
1345 8.466860e+03, 9.609843e+03, 1.090714e+04, 1.237959e+04, 1.405083e+04,
1346 1.594771e+04, 1.810069e+04, 2.054434e+04, 2.331792e+04, 2.646595e+04,
1347 3.003901e+04, 3.409446e+04, 3.869745e+04, 4.392189e+04, 4.985168e+04,
1348 5.658206e+04, 6.422112e+04, 7.289153e+04, 8.273254e+04, 9.390219e+04,
1358 G4int G4PAIySection::fRefGammaNumber = 29;