96   fDensity = fElectronDensity = fNormalizationCof = fLowEnergyCof = 0.0;
 
   97   fIntervalNumber = fSplineNumber = 0;
 
  101   fRePartDielectricConst = 
G4DataVector(fMaxSplineSize,0.0);
 
  102   fImPartDielectricConst = 
G4DataVector(fMaxSplineSize,0.0);
 
  109   fIntegralPAIxSection   = 
G4DataVector(fMaxSplineSize,0.0);
 
  118   for( 
G4int i = 0; i < 500; ++i ) 
 
  120     for( 
G4int j = 0; j < 112; ++j )  fPAItable[i][j] = 0.0; 
 
  133   fMaterialIndex = matIndex;   
 
  136   fSandia = (*theMaterialTable)[matIndex]->GetSandiaTable();
 
  143   for (i = 0; i < fSandia->GetMaxInterval()-1; i++)
 
  147   for (i = 0; i < fSandia->GetMaxInterval()-1; i++)
 
  149     (*(*fMatSandiaMatrix)[i])[0] = fSandia->GetSandiaMatTable(i,0);
 
  151     for(j = 1; j < 5; j++)
 
  153       (*(*fMatSandiaMatrix)[i])[j] = fSandia->GetSandiaMatTable(i,j)*fDensity;
 
  156   ComputeLowEnergyCof();                               
 
  166   fMatSandiaMatrix = 0;
 
  171   fMaterialIndex   = materialIndex;   
 
  172   fDensity                = (*theMaterialTable)[materialIndex]->GetDensity();
 
  173   fElectronDensity        = (*theMaterialTable)[materialIndex]->
 
  174                              GetElectronDensity();
 
  175   fIntervalNumber         = (*theMaterialTable)[materialIndex]->
 
  176                              GetSandiaTable()->GetMatNbOfIntervals();
 
  186   for(i = 1; i <= fIntervalNumber; i++ )
 
  188       if(((*theMaterialTable)[materialIndex]->
 
  189     GetSandiaTable()->GetSandiaCofForMaterial(i-1,0) >= maxEnergyTransfer) ||
 
  190               i > fIntervalNumber               )
 
  192           fEnergyInterval[i] = maxEnergyTransfer;
 
  196          fEnergyInterval[i] = (*theMaterialTable)[materialIndex]->
 
  197                               GetSandiaTable()->GetSandiaCofForMaterial(i-1,0);
 
  198          fA1[i]             = (*theMaterialTable)[materialIndex]->
 
  199                               GetSandiaTable()->GetSandiaCofForMaterial(i-1,1);
 
  200          fA2[i]             = (*theMaterialTable)[materialIndex]->
 
  201                               GetSandiaTable()->GetSandiaCofForMaterial(i-1,2);
 
  202          fA3[i]             = (*theMaterialTable)[materialIndex]->
 
  203                               GetSandiaTable()->GetSandiaCofForMaterial(i-1,3);
 
  204          fA4[i]             = (*theMaterialTable)[materialIndex]->
 
  205                               GetSandiaTable()->GetSandiaCofForMaterial(i-1,4);
 
  209   if(fEnergyInterval[fIntervalNumber] != maxEnergyTransfer)
 
  212          fEnergyInterval[fIntervalNumber] = maxEnergyTransfer;
 
  217   for(i=1;i<fIntervalNumber;i++)
 
  219         if(fEnergyInterval[i+1]-fEnergyInterval[i] >
 
  220            1.5*fDelta*(fEnergyInterval[i+1]+fEnergyInterval[i]))
 
  226           for(j=i;j<fIntervalNumber;j++)
 
  228             fEnergyInterval[j] = fEnergyInterval[j+1];
 
  259       ComputeLowEnergyCof();      
 
  281   fDensity = fElectronDensity = fNormalizationCof = fLowEnergyCof = 0.0;
 
  282   fIntervalNumber = fSplineNumber = 0;
 
  301   for( 
G4int i = 0; i < 500; ++i ) 
 
  303     for( 
G4int j = 0; j < 112; ++j )  fPAItable[i][j] = 0.0; 
 
  307   fMatSandiaMatrix = 0;
 
  311   fMaterialIndex   = materialIndex;      
 
  312   fDensity         = (*theMaterialTable)[materialIndex]->GetDensity();
 
  313   fElectronDensity = (*theMaterialTable)[materialIndex]->GetElectronDensity();
 
  315   fIntervalNumber         = intNumber;
 
  333   for( i = 1; i <= fIntervalNumber; i++ )
 
  335          if( ( photoAbsCof[i-1][0] >= maxEnergyTransfer ) ||
 
  336              i > fIntervalNumber )
 
  338             fEnergyInterval[i] = maxEnergyTransfer;
 
  342          fEnergyInterval[i] = photoAbsCof[i-1][0];
 
  343          fA1[i]             = photoAbsCof[i-1][1];
 
  344          fA2[i]             = photoAbsCof[i-1][2];
 
  345          fA3[i]             = photoAbsCof[i-1][3];
 
  346          fA4[i]             = photoAbsCof[i-1][4];
 
  352   if(fEnergyInterval[fIntervalNumber] != maxEnergyTransfer)
 
  355          fEnergyInterval[fIntervalNumber] = maxEnergyTransfer;
 
  359   for( i = 1; i <= fIntervalNumber; i++ )
 
  366   for( i = 1; i < fIntervalNumber; i++ )
 
  368         if(fEnergyInterval[i+1]-fEnergyInterval[i] >
 
  369            1.5*fDelta*(fEnergyInterval[i+1]+fEnergyInterval[i]))
 
  375           for(j=i;j<fIntervalNumber;j++)
 
  377             fEnergyInterval[j] = fEnergyInterval[j+1];
 
  389   for( i = 1; i <= fIntervalNumber; i++ )
 
  397   ComputeLowEnergyCof();            
 
  399     fLorentzFactor[fRefGammaNumber]*fLorentzFactor[fRefGammaNumber] - 1;
 
  401   NormShift(betaGammaSqRef);             
 
  402   SplainPAI(betaGammaSqRef);
 
  406   for(i = 1; i <= fSplineNumber; i++)
 
  408          fdNdxCerenkov[i]   = PAIdNdxCerenkov(i,betaGammaSq);
 
  409          fdNdxMM[i]   = PAIdNdxMM(i,betaGammaSq);
 
  410          fdNdxPlasmon[i]    = PAIdNdxPlasmon(i,betaGammaSq);
 
  411          fdNdxResonance[i]  = PAIdNdxResonance(i,betaGammaSq);
 
  412          fDifPAIxSection[i] = DifPAIxSection(i,betaGammaSq);
 
  421   IntegralPAIxSection();
 
  440   fMatSandiaMatrix = 0;
 
  444   G4int i, j, numberOfElements;   
 
  446   fMaterialIndex   = materialIndex;   
 
  447   fDensity         = (*theMaterialTable)[materialIndex]->GetDensity();
 
  448   fElectronDensity = (*theMaterialTable)[materialIndex]->GetElectronDensity();
 
  449   numberOfElements = (*theMaterialTable)[materialIndex]->GetNumberOfElements();
 
  451   G4int* thisMaterialZ = 
new G4int[numberOfElements];
 
  453   for( i = 0; i < numberOfElements; i++ )
 
  455          thisMaterialZ[i] = (
G4int)(*theMaterialTable)[materialIndex]->
 
  456                                       GetElement(i)->GetZ();
 
  459   fSandia = (*theMaterialTable)[materialIndex]->GetSandiaTable();
 
  461   fIntervalNumber = thisMaterialSandiaTable.
SandiaIntervals(thisMaterialZ,
 
  465                       (*theMaterialTable)[materialIndex]->GetFractionVector() ,
 
  466                              numberOfElements,fIntervalNumber);
 
  483   for( i = 1; i <= fIntervalNumber; i++ )
 
  488             fEnergyInterval[i] = maxEnergyTransfer;
 
  499   if(fEnergyInterval[fIntervalNumber] != maxEnergyTransfer)
 
  502          fEnergyInterval[fIntervalNumber] = maxEnergyTransfer;
 
  503          fA1[fIntervalNumber] = fA1[fIntervalNumber-1];
 
  504          fA2[fIntervalNumber] = fA2[fIntervalNumber-1];
 
  505          fA3[fIntervalNumber] = fA3[fIntervalNumber-1];
 
  506          fA4[fIntervalNumber] = fA4[fIntervalNumber-1];
 
  508   for(i=1;i<=fIntervalNumber;i++)
 
  515   for( i = 1; i < fIntervalNumber; i++ )
 
  517         if(fEnergyInterval[i+1]-fEnergyInterval[i] >
 
  518            1.5*fDelta*(fEnergyInterval[i+1]+fEnergyInterval[i]))
 
  524           for( j = i; j < fIntervalNumber; j++ )
 
  526             fEnergyInterval[j] = fEnergyInterval[j+1];
 
  558   ComputeLowEnergyCof();      
 
  560     fLorentzFactor[fRefGammaNumber]*fLorentzFactor[fRefGammaNumber] - 1;
 
  562   NormShift(betaGammaSqRef);             
 
  563   SplainPAI(betaGammaSqRef);
 
  567   for(i = 1; i <= fSplineNumber; i++)
 
  569          fDifPAIxSection[i] = DifPAIxSection(i,betaGammaSq);
 
  570          fdNdxCerenkov[i]   = PAIdNdxCerenkov(i,betaGammaSq);
 
  571          fdNdxMM[i]   = PAIdNdxMM(i,betaGammaSq);
 
  572          fdNdxPlasmon[i]    = PAIdNdxPlasmon(i,betaGammaSq);
 
  573          fdNdxResonance[i]  = PAIdNdxResonance(i,betaGammaSq);
 
  575   IntegralPAIxSection();
 
  596   delete fMatSandiaMatrix;
 
  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;
 
  914   fNormalizationCof = 2*
pi*
pi*hbarc*hbarc*fine_structure_const/electron_mass_c2;
 
  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;
 
  952   G4int j, k = 1, i = 1;
 
  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);
 
 1003       G4double b = log10(yy1) - a*log10(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;
 
 1213    result *= 2*hbarc/
pi;
 
 1228    G4double cof,x1,x2,x3,x4,x5,x6,x7,x8,result;
 
 1234    G4double be2  = betaGammaSq/(1 + betaGammaSq);
 
 1239    x1  = log(2*electron_mass_c2/fSplineEnergy[i]);
 
 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.0e-8 ) result = 1.0e-8;
 
 1275    result *= fine_structure_const/be2/
pi;
 
 1281    result *= (1 - exp(-beta/betaBohr/lowCof));
 
 1305    G4double logarithm, x3, x5, argument, modul2, dNdxC; 
 
 1309    betaBohr2   = fine_structure_const*fine_structure_const;
 
 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.0e-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];
 
 1363    G4double logarithm, x3, x5, argument, dNdxC; 
 
 1367    betaBohr2   = fine_structure_const*fine_structure_const;
 
 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.0e-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.;
 
 1416    betaBohr   = fine_structure_const;
 
 1417    be2 = betaGammaSq/(1 + betaGammaSq);
 
 1421    resonance = log(2*electron_mass_c2*be2/fSplineEnergy[i]);  
 
 1422    resonance *= fImPartDielectricConst[i]/hbarc;
 
 1425    dNdxP = ( resonance + cof*fIntegralTerm[i]/fSplineEnergy[i]/fSplineEnergy[i] );
 
 1427    if( dNdxP < 1.0e-8 ) dNdxP = 1.0e-8;
 
 1429    dNdxP *= fine_structure_const/be2/
pi;
 
 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];
 
 1457    betaBohr2   = fine_structure_const*fine_structure_const;
 
 1460    be2 = betaGammaSq/(1 + betaGammaSq);
 
 1463    resonance = log(2*electron_mass_c2*be2/fSplineEnergy[i]);  
 
 1464    resonance *= fImPartDielectricConst[i]/hbarc;
 
 1469    if( dNdxP < 1.0e-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;
 
 1661    if( std::fabs(a) < 1.e-6 ) 
 
 1663       result = b*log(x1/x0);
 
 1667       result = y0*(x1*pow(c,a-1) - x0)/a;
 
 1670    if( std::fabs(a) < 1.e-6 ) 
 
 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;
 
 1884    if( std::fabs(a) < 1.e-6 )
 
 1886       result = b*log(x0/e0);
 
 1890       result = y0*(x0 - e0*pow(d,a-1))/a;
 
 1893    if( std::fabs(a) < 1.e-6 )
 
 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);
 
 1912    if( std::fabs(a) < 1.e-6 )
 
 1914       result += b*log(e0/x0);
 
 1918       result += y0*(e0*pow(d,a-1) - x0)/a;
 
 1921    if( std::fabs(a) < 1.e-6 ) 
 
 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;
 
 1993    G4double x0,x1,y0,yy1,
a,b,e0,c,d,result;
 
 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;
 
 2058    G4double x0,x1,y0,yy1,
a,b,e0,c,d,result;
 
 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;
 
 2123    G4double x0,x1,y0,yy1,
a,b,c,d,e0,result;
 
 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;
 
 2177    G4double x0,x1,y0,yy1,
a,b,c,d,e0,result;
 
 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, 
 
void IntegralPAIxSection()
 
void SplainPAI(G4double betaGammaSq)
 
G4double GetRutherfordEnergyTransfer()
 
G4double PAIdNdxResonance(G4int intervalNumber, G4double betaGammaSq)
 
static c2_factory< G4double > c2
 
G4long G4Poisson(G4double mean)
 
G4double GetPlasmonEnergyTransfer()
 
std::ostringstream G4ExceptionDescription
 
G4double GetStepResonanceLoss(G4double step)
 
G4double PAIdNdxCerenkov(G4int intervalNumber, G4double betaGammaSq)
 
G4double SumOverBordPlasmon(G4int intervalNumber, G4double energy)
 
G4double SumOverInterMM(G4int intervalNumber)
 
static const G4double betaBohr
 
static G4MaterialTable * GetMaterialTable()
 
std::vector< G4Material * > G4MaterialTable
 
static const G4double cofBetaBohr
 
G4double GetDensity() const 
 
void NormShift(G4double betaGammaSq)
 
G4int GetMaxInterval() const 
 
G4double PAIdNdxPlasmon(G4int intervalNumber, G4double betaGammaSq)
 
G4double SumOverBordResonance(G4int intervalNumber, G4double energy)
 
static G4int fNumberOfGammas
 
G4double GetSandiaMatTablePAI(G4int, G4int) const 
 
G4double SumOverInterPlasmon(G4int intervalNumber)
 
G4double SumOverInterval(G4int intervalNumber)
 
G4double RePartDielectricConst(G4double energy)
 
const G4Element * GetElement(G4int iel) const 
 
void ComputeLowEnergyCof()
 
void CallError(G4int i, const G4String &methodName) const 
 
static const G4int fMaxSplineSize
 
G4int SandiaMixing(G4int Z[], const G4double *fractionW, G4int el, G4int mi)
 
static const G4double betaBohr4
 
G4double GetResonanceEnergyTransfer()
 
G4GLOB_DLL std::ostream G4cout
 
G4double GetElectronDensity() const 
 
G4double ImPartDielectricConst(G4int intervalNumber, G4double energy)
 
G4double GetPhotonRange(G4double energy)
 
G4double SumOverBordMM(G4int intervalNumber, G4double energy)
 
static const G4double betaBohr2
 
G4double GetCerenkovEnergyTransfer()
 
static const G4int fRefGammaNumber
 
static const G4double fError
 
G4double SumOverInterResonance(G4int intervalNumber)
 
G4int SandiaIntervals(G4int Z[], G4int el)
 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
 
G4double GetStepPlasmonLoss(G4double step)
 
G4double PAIdNdxMM(G4int intervalNumber, G4double betaGammaSq)
 
G4double GetStepEnergyLoss(G4double step)
 
G4double SumOverBordCerenkov(G4int intervalNumber, G4double energy)
 
G4double GetMMEnergyTransfer()
 
G4double SumOverBorder(G4int intervalNumber, G4double energy)
 
G4double energy(const ThreeVector &p, const G4double m)
 
static const G4double fDelta
 
void Initialize(const G4Material *material, G4double maxEnergyTransfer, G4double betaGammaSq, G4SandiaTable *)
 
G4double SumOverInterCerenkov(G4int intervalNumber)
 
const G4double x[NPOINTSGL]
 
G4double GetPhotoAbsorpCof(G4int i, G4int j) const 
 
size_t GetNumberOfElements() const 
 
G4double GetEnergyTransfer()
 
G4double GetStepMMLoss(G4double step)
 
G4double SumOverIntervaldEdx(G4int intervalNumber)
 
G4double GetStepCerenkovLoss(G4double step)
 
G4double SumOverBorderdEdx(G4int intervalNumber, G4double energy)
 
G4double DifPAIxSection(G4int intervalNumber, G4double betaGammaSq)
 
static const G4double fLorentzFactor[112]
 
G4double RutherfordIntegral(G4int intervalNumber, G4double limitLow, G4double limitHigh)
 
const G4Material * GetMaterial() const 
 
G4double GetElectronRange(G4double energy)