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)