44    for(
G4int i=0;i<fNumber;i++)
 
   46       fArgument[i] = pX[i] ;
 
   47       fFunction[i] = pY[i] ;
 
   65      fSecondDerivative(new 
G4double[number]),
 
   70    const G4double maxDerivative = 0.99e30 ;
 
   73    for(i=0;i<fNumber;i++)
 
   75       fArgument[i] = pX[i] ;
 
   76       fFunction[i] = pY[i] ;
 
   78    if(pFirstDerStart > maxDerivative)
 
   80       fSecondDerivative[0] = 0.0 ;
 
   85       fSecondDerivative[0] = -0.5 ;
 
   86       u[0] = (3.0/(fArgument[1]-fArgument[0]))
 
   87            * ((fFunction[1]-fFunction[0])/(fArgument[1]-fArgument[0])
 
   94    for(i=1;i<fNumber-1;i++)
 
   96       sig = (fArgument[i]-fArgument[i-1])/(fArgument[i+1]-fArgument[i-1]) ;
 
   97       p = sig*fSecondDerivative[i-1] + 2.0 ;
 
   98       fSecondDerivative[i] = (sig - 1.0)/
p ;
 
   99       u[i] = (fFunction[i+1]-fFunction[i])/(fArgument[i+1]-fArgument[i]) -
 
  100              (fFunction[i]-fFunction[i-1])/(fArgument[i]-fArgument[i-1]) ;
 
  101       u[i] =(6.0*u[i]/(fArgument[i+1]-fArgument[i-1]) - sig*u[i-1])/
p ;
 
  103    if(pFirstDerFinish > maxDerivative)
 
  111       un = (3.0/(fArgument[fNumber-1]-fArgument[fNumber-2]))
 
  112          * (pFirstDerFinish - (fFunction[fNumber-1]-fFunction[fNumber-2])
 
  113          / (fArgument[fNumber-1]-fArgument[fNumber-2])) ;
 
  115    fSecondDerivative[fNumber-1] = (un - qn*u[fNumber-2])/
 
  116                                   (qn*fSecondDerivative[fNumber-2] + 1.0) ;
 
  121    for(
G4int k=fNumber-2;k>=0;k--)
 
  123       fSecondDerivative[k] = fSecondDerivative[k]*fSecondDerivative[k+1] + u[k];
 
  135    delete [] fArgument ;
 
  136    delete [] fFunction ;
 
  137    if(fSecondDerivative)  { 
delete [] fSecondDerivative; }
 
  151    G4int i=0, j=1, k=0 ;
 
  152    G4double mult=0.0, difi=0.0, deltaLow=0.0, deltaUp=0.0, 
cd=0.0, y=0.0 ;
 
  155    G4double diff = std::fabs(pX-fArgument[0]) ;
 
  156    for(i=0;i<fNumber;i++)
 
  158       difi = std::fabs(pX-fArgument[i]) ;
 
  164       c[i] = fFunction[i] ;
 
  165       d[i] = fFunction[i] ;   
 
  168    for(j=1;j<fNumber;j++)
 
  170       for(i=0;i<fNumber-j;i++)
 
  172          deltaLow = fArgument[i] - pX ;
 
  173          deltaUp = fArgument[i+j] - pX ;
 
  175          mult = deltaLow - deltaUp ;
 
  178             G4Exception(
"G4DataInterpolation::PolynomInterpolation()",
 
  182          d[i] = deltaUp*mult ;
 
  183          c[i] = deltaLow*mult ;
 
  185       y += (deltaY = (2*k < (fNumber - j -1) ? c[k+1] : d[k--] )) ;
 
  209    for(i=0;i<fNumber;i++)
 
  211       tempArgument[i] = cof[i] = 0.0 ;
 
  213    tempArgument[fNumber-1] = -fArgument[0] ;
 
  215    for(i=1;i<fNumber;i++)
 
  217       for(j=fNumber-1-i;j<fNumber-1;j++)
 
  219          tempArgument[j] -= fArgument[i]*tempArgument[j+1] ;
 
  221       tempArgument[fNumber-1] -= fArgument[i] ;
 
  223    for(i=0;i<fNumber;i++)
 
  226       for(j=fNumber-1;j>=1;j--)
 
  228          factor = j*tempArgument[j] + factor*fArgument[i] ;
 
  230       reducedY = fFunction[i]/factor ;
 
  232       for(j=fNumber-1;j>=0;j--)
 
  234          cof[j] += mult*reducedY ;
 
  235          mult = tempArgument[j] + mult*fArgument[i] ;
 
  238    delete[] tempArgument ;
 
  252    G4int i=0, j=1, k=0 ;
 
  253    const G4double tolerance = 1.6e-24 ;
 
  254    G4double mult=0.0, difi=0.0, 
cd=0.0, y=0.0, cof=0.0 ;
 
  257    G4double diff = std::fabs(pX-fArgument[0]) ;
 
  258    for(i=0;i<fNumber;i++)
 
  260       difi = std::fabs(pX-fArgument[i]) ;
 
  274       c[i] = fFunction[i] ;
 
  275       d[i] = fFunction[i] + tolerance ;   
 
  278    for(j=1;j<fNumber;j++)
 
  280       for(i=0;i<fNumber-j;i++)
 
  283          difi  = fArgument[i+j] - pX ;
 
  284          cof  = (fArgument[i] - pX)*d[i]/difi ;
 
  285          mult = cof - c[i+1] ;
 
  288             G4Exception(
"G4DataInterpolation::RationalPolInterpolation()",
 
  295       y += (deltaY = (2*k < (fNumber - j - 1) ? c[k+1] : d[k--] )) ;
 
  313    G4int kLow=0, kHigh=fNumber-1, k=0 ;
 
  318    while((kHigh - kLow) > 1)
 
  320       k = (kHigh + kLow) >> 1 ; 
 
  321       if(fArgument[k] > pX)
 
  330    G4double deltaHL = fArgument[kHigh] - fArgument[kLow] ;
 
  331    if (!(deltaHL != 0.0))
 
  333       G4Exception(
"G4DataInterpolation::CubicSplineInterpolation()",
 
  336    G4double a = (fArgument[kHigh] - pX)/deltaHL ;
 
  337    G4double b = (pX - fArgument[kLow])/deltaHL ;
 
  341    return a*fFunction[kLow] + b*fFunction[kHigh] + 
 
  342           ((a*a*a - 
a)*fSecondDerivative[kLow] +
 
  343            (b*b*b - b)*fSecondDerivative[kHigh])*deltaHL*deltaHL/6.0  ;
 
  356    G4double delta = fArgument[index+1] - fArgument[index] ;
 
  359       G4Exception(
"G4DataInterpolation::FastCubicSpline()",
 
  362    G4double a = (fArgument[index+1] - pX)/delta ;
 
  363    G4double b = (pX - fArgument[index])/delta ;
 
  367    return a*fFunction[index] + b*fFunction[index+1] + 
 
  368           ((a*a*a - 
a)*fSecondDerivative[index] +
 
  369            (b*b*b - b)*fSecondDerivative[index+1])*delta*delta/6.0  ;
 
  380    G4int kLow=-1, kHigh=fNumber, k=0 ; 
 
  381    G4bool ascend=(fArgument[fNumber-1] >= fArgument[0]) ;
 
  382    while((kHigh - kLow) > 1)
 
  384       k = (kHigh + kLow) >> 1 ; 
 
  385       if( (pX >= fArgument[k]) == ascend)
 
  394    if (!(pX != fArgument[0]))
 
  398    else if (!(pX != fArgument[fNumber-1]))
 
  417    G4int kHigh=0, k=0, Increment=0 ;
 
  419    G4bool ascend = (fArgument[fNumber-1] >= fArgument[0]) ;
 
  420    if(index < 0 || index > fNumber-1)
 
  428       if((pX >= fArgument[index]) == ascend)
 
  430          if(index == fNumber -1)
 
  436          while((pX >= fArgument[kHigh]) == ascend)
 
  439             Increment += Increment ;      
 
  440             kHigh = index + Increment ;
 
  441             if(kHigh > (fNumber - 1))
 
  456          while((pX < fArgument[index]) == ascend)
 
  460             if(Increment >= kHigh)
 
  467                index = kHigh - Increment ;
 
  474    while((kHigh - index) != 1)
 
  476       k = (kHigh + index) >> 1 ;
 
  477       if((pX >= fArgument[k]) == ascend)
 
  486    if (!(pX != fArgument[fNumber-1]))
 
  488       index = fNumber - 2 ;
 
  490    if (!(pX != fArgument[0]))
 
G4double RationalPolInterpolation(G4double pX, G4double &deltaY) const 
 
G4double FastCubicSpline(G4double pX, G4int index) const 
 
void CorrelatedSearch(G4double pX, G4int &index) const 
 
std::vector< ExP01TrackerHit * > a
 
G4DataInterpolation(G4double pX[], G4double pY[], G4int number)
 
G4int LocateArgument(G4double pX) const 
 
G4double CubicSplineInterpolation(G4double pX) const 
 
void PolIntCoefficient(G4double cof[]) const 
 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
 
G4double PolynomInterpolation(G4double pX, G4double &deltaY) const