ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

#include <TMath.h>
#include <TMatrixF.h>
#include <TStopwatch.h>
#include <TString.h>
#include <TFile.h>
#include <TObjArray.h>
#include <TSystem.h>
#include <THashList.h>
#include <TVector2.h>
#include <TLinearFitter.h>

#include <AliLog.h>
#include <AliTPCROC.h>

#include "AliTPCCorrection.h"

#include "AliTPCCorrectionLookupTable.h"

ClassImp(AliTPCCorrectionLookupTable)

//_________________________________________________________________________________________
AliTPCCorrectionLookupTable::AliTPCCorrectionLookupTable()
: AliTPCCorrection()
, fNR(0)
, fNPhi(0)
, fNZ(0)
, fCorrScaleFactor(-1)
, fFillCorrection(kTRUE)
, fLimitsR()
, fLimitsPhi()
, fLimitsZ()
, fLookUpDxDist(0x0)
, fLookUpDyDist(0x0)
, fLookUpDzDist(0x0)
, fLookUpDxCorr(0x0)
, fLookUpDyCorr(0x0)
, fLookUpDzCorr(0x0)
{
  //
  //
  //
}
//_________________________________________________________________________________________
AliTPCCorrectionLookupTable::~AliTPCCorrectionLookupTable()
{
  //
  // dtor
  //

  ResetTables();
}

//_________________________________________________________________________________________
void AliTPCCorrectionLookupTable::GetDistortion(const Float_t x[],const Short_t roc,Float_t dx[]) {
  //
  // Get interpolated Distortion
  //

  GetInterpolation(x,roc,dx,fLookUpDxDist,fLookUpDyDist,fLookUpDzDist);
}

//_________________________________________________________________________________________
void AliTPCCorrectionLookupTable::GetCorrection(const Float_t x[],const Short_t roc,Float_t dx[]) {
  //
  // Get interplolated correction
  //
  GetInterpolation(x,roc,dx,fLookUpDxCorr,fLookUpDyCorr,fLookUpDzCorr);

  if (fCorrScaleFactor>0) {
    dx[0]*=fCorrScaleFactor;
    dx[1]*=fCorrScaleFactor;
    dx[2]*=fCorrScaleFactor;
  }
}

//_________________________________________________________________________________________
void AliTPCCorrectionLookupTable::GetInterpolation(const Float_t x[],const Short_t roc,Float_t dx[],
                                                   TMatrixF **mDx, TMatrixF **mDy, TMatrixF **mDz)
{
  //
  // Calculates the correction/distotring from a lookup table
  // type: 0 = correction
  //       1 = distortion
  //

//   Float_t typeSign=-1;
//   if (type==1) typeSign=1;
  
  Int_t   order     = 1 ;    // FIXME: hardcoded? Linear interpolation = 1, Quadratic = 2
  
  Double_t r, phi, z ;
  Int_t    sign;
  
  r      =  TMath::Sqrt( x[0]*x[0] + x[1]*x[1] ) ;
  phi    =  TMath::ATan2(x[1],x[0]) ;
  if ( phi < 0 ) phi += TMath::TwoPi() ;                   // Table uses phi from 0 to 2*Pi
  z      =  x[2] ;                                         // Create temporary copy of x[2]
  
  if ( (roc%36) < 18 ) {
    sign =  1;       // (TPC A side)
  } else {
    sign = -1;       // (TPC C side)
  }
  
  if ( sign==1  && z <  fgkZOffSet ) z =  fgkZOffSet;    // Protect against discontinuity at CE
  if ( sign==-1 && z > -fgkZOffSet ) z = -fgkZOffSet;    // Protect against discontinuity at CE


  if ( (sign==1 && z<0) || (sign==-1 && z>0) ) // just a consistency check
    AliError("ROC number does not correspond to z coordinate! Calculation of distortions is most likely wrong!");
  
  // Get the Er and Ephi field integrals plus the integral over Z
    dx[0] = Interpolate3DTable(order, r, z, phi,
                               fNR, fNZ, fNPhi,
                               fLimitsR.GetMatrixArray(),
                               fLimitsZ.GetMatrixArray(),
                               fLimitsPhi.GetMatrixArray(),
                               mDx  );
    dx[1] = Interpolate3DTable(order, r, z, phi,
                               fNR, fNZ, fNPhi,
                               fLimitsR.GetMatrixArray(),
                               fLimitsZ.GetMatrixArray(),
                               fLimitsPhi.GetMatrixArray(),
                               mDy);
    dx[2] = Interpolate3DTable(order, r, z, phi,
                               fNR, fNZ, fNPhi,
                               fLimitsR.GetMatrixArray(),
                               fLimitsZ.GetMatrixArray(),
                               fLimitsPhi.GetMatrixArray(),
                               mDz   );
}

//_________________________________________________________________________________________
void AliTPCCorrectionLookupTable::CreateLookupTable(AliTPCCorrection &tpcCorr, Float_t stepSize/*=5.*/)
{
  //
  // create lookup table for all phi,r,z bins
  //

  if (fNR==0) {
    AliError("Limits are not set yet. Please use one of the Set..Limits functions first");
    return;
  }

  TStopwatch s;
  
  ResetTables();
  InitTables();
  
  for (Int_t iPhi=0; iPhi<fNPhi; ++iPhi){
    CreateLookupTablePhiBin(tpcCorr,iPhi,stepSize);
  }

  s.Stop();
  AliInfo(Form("Required time for lookup table creation: %.2f (%.2f) sec. real (cpu)",s.RealTime(),s.CpuTime()));
}

//_________________________________________________________________________________________
void AliTPCCorrectionLookupTable::CreateLookupTableSinglePhi(AliTPCCorrection &tpcCorr, Int_t iPhi, Float_t stepSize)
{
  //
  // Lookup table for only one phi bin. Can be used for parallel processing
  //
  
  if (fNR==0) {
    AliError("Limits are not set yet. Please use one of the Set..Limits functions first");
    return;
  }

  TStopwatch s;
  
  ResetTables();
  InitTableArrays();
  InitTablesPhiBin(iPhi);
  CreateLookupTablePhiBin(tpcCorr,iPhi,stepSize);

  s.Stop();
  AliInfo(Form("Required time for lookup table creation: %.2f (%.2f) sec. real (cpu)",s.RealTime(),s.CpuTime()));
}

//_________________________________________________________________________________________
void AliTPCCorrectionLookupTable::CreateLookupTablePhiBin(AliTPCCorrection &tpcCorr, Int_t iPhi, Float_t stepSize)
{
  //
  //
  //

  if (iPhi<0||iPhi>=fNPhi) return;
  
  const Float_t delta=stepSize; // 5cm
  Float_t x[3]={0.,0.,0.};
  Float_t dx[3]={0.,0.,0.};

  Double_t phi=fLimitsPhi(iPhi);
  //
  TMatrixF &mDxDist   = *fLookUpDxDist[iPhi];
  TMatrixF &mDyDist   = *fLookUpDyDist[iPhi];
  TMatrixF &mDzDist   = *fLookUpDzDist[iPhi];
  //
  TMatrixF &mDxCorr   = *fLookUpDxCorr[iPhi];
  TMatrixF &mDyCorr   = *fLookUpDyCorr[iPhi];
  TMatrixF &mDzCorr   = *fLookUpDzCorr[iPhi];
  
  for (Int_t ir=0; ir<fNR; ++ir){
    Double_t r=fLimitsR(ir);
    x[0]=r * TMath::Cos(phi);
    x[1]=r * TMath::Sin(phi);
    
    for (Int_t iz=0; iz<fNZ; ++iz){
      Double_t z=fLimitsZ(iz);
      x[2]=z;
      //TODO: change hardcoded value for r>133.?
      Int_t roc=TMath::Nint(phi*TMath::RadToDeg()/20.)%18;
      if (r>133.) roc+=36;
      if (z<0)    roc+=18;
      
      if (delta>0)
        tpcCorr.GetDistortionIntegralDz(x,roc,dx,delta);
      else
        tpcCorr.GetDistortion(x,roc,dx);
      mDxDist(ir,iz)=dx[0];
      mDyDist(ir,iz)=dx[1];
      mDzDist(ir,iz)=dx[2];

      if (fFillCorrection) {
        if (delta>0)
          tpcCorr.GetCorrectionIntegralDz(x,roc,dx,delta);
        else
          tpcCorr.GetCorrection(x,roc,dx);
        mDxCorr(ir,iz)=dx[0];
        mDyCorr(ir,iz)=dx[1];
        mDzCorr(ir,iz)=dx[2];
      }
    }
  }
  
}

//_________________________________________________________________________________________
void AliTPCCorrectionLookupTable::InitTables()
{
  //
  // Init all tables
  //

  InitTableArrays();
  for (Int_t iPhi=0; iPhi<fNPhi; ++iPhi){
    InitTablesPhiBin(iPhi);
  }
}

//_________________________________________________________________________________________
void AliTPCCorrectionLookupTable::CreateLookupTableFromResidualDistortion(THn &resDist)
{
  //
  // create lookup table from residual distortions stored in a 3d histogram
  // assume dimensions are r, phi, z
  //
  if (fNR==0) {
    AliError("Limits are not set yet. Please use one of the Set..Limits functions first");
    return;
  }
  
  ResetTables();
  InitTables();

  Double_t x[3]={0.,0.,0.};
  
  for (Int_t iPhi=0; iPhi<fNPhi; ++iPhi){
    const Double_t phi=fLimitsPhi(iPhi);
    x[1]=phi;
    //
    TMatrixF &mDxDist   = *fLookUpDxDist[iPhi];
    TMatrixF &mDyDist   = *fLookUpDyDist[iPhi];
    TMatrixF &mDzDist   = *fLookUpDzDist[iPhi];
    //
    TMatrixF &mDxCorr   = *fLookUpDxCorr[iPhi];
    TMatrixF &mDyCorr   = *fLookUpDyCorr[iPhi];
    TMatrixF &mDzCorr   = *fLookUpDzCorr[iPhi];
    
    for (Int_t ir=0; ir<fNR; ++ir){
      const Double_t r=fLimitsR(ir);
      x[0]=r;
      
      for (Int_t iz=0; iz<fNZ; ++iz){
        const Double_t z=fLimitsZ(iz);
        x[2]=z;

        const Double_t drphi = resDist.GetBinContent(resDist.GetBin(x));
        Double_t dx[3]={0.,drphi,0.};
        
        // transform rphi distortions (local y, so dy') to a global distortion
        // assume no radial distortion (dx' = 0)
        // assume no residual distortion in z for the moment
        Double_t cs=TMath::Cos(phi), sn=TMath::Sin(phi), lx=dx[0];
        dx[0]=lx*cs - dx[1]*sn; dx[1]=lx*sn + dx[1]*cs;

        mDxDist(ir,iz)=dx[0];
        mDyDist(ir,iz)=dx[1];
        mDzDist(ir,iz)=dx[2];

        mDxCorr(ir,iz)=-dx[0];
        mDyCorr(ir,iz)=-dx[1];
        mDzCorr(ir,iz)=-dx[2];
      }
    }
  }
}

//_________________________________________________________________________________________
void AliTPCCorrectionLookupTable::CreateResidual(AliTPCCorrection *distortion, AliTPCCorrection* correction)
{
  //
  // create lookup table from residual distortions calculated from distorted - correction
  //
  
  ResetTables();
  InitTables();
  
  Float_t x[3]={0.,0.,0.};
  
  for (Int_t iPhi=0; iPhi<fNPhi; ++iPhi){
    const Double_t phi=fLimitsPhi(iPhi);
    //
    TMatrixF &mDxDist   = *fLookUpDxDist[iPhi];
    TMatrixF &mDyDist   = *fLookUpDyDist[iPhi];
    TMatrixF &mDzDist   = *fLookUpDzDist[iPhi];
    //
    TMatrixF &mDxCorr   = *fLookUpDxCorr[iPhi];
    TMatrixF &mDyCorr   = *fLookUpDyCorr[iPhi];
    TMatrixF &mDzCorr   = *fLookUpDzCorr[iPhi];
    
    for (Int_t ir=0; ir<fNR; ++ir){
      const Double_t r=fLimitsR(ir);
      x[0]=r * TMath::Cos(phi);
      x[1]=r * TMath::Sin(phi);
      
      for (Int_t iz=0; iz<fNZ; ++iz){
        const Double_t z=fLimitsZ(iz);
        x[2]=z;

        //original point
        Float_t xdc[3]={x[0], x[1], x[2]};
        
        Int_t roc=TMath::Nint(phi*TMath::RadToDeg()/20.)%18;
        if (r>133.) roc+=36;
        if (z<0)    roc+=18;

        //get residual distortion
        distortion->DistortPoint(xdc, roc);
        correction->CorrectPoint(xdc, roc);
        Float_t dx[3]={xdc[0]-x[0], xdc[1]-x[1], xdc[2]-x[2]};
        
        mDxDist(ir,iz)=dx[0];
        mDyDist(ir,iz)=dx[1];
        mDzDist(ir,iz)=dx[2];
        
        mDxCorr(ir,iz)=-dx[0];
        mDyCorr(ir,iz)=-dx[1];
        mDzCorr(ir,iz)=-dx[2];
      }
    }
  }
}

//_________________________________________________________________________________________
void AliTPCCorrectionLookupTable::InitTablesPhiBin(Int_t iPhi)
{
  //
  //
  //

  // check if already initialised
  if (iPhi<0||iPhi>=fNPhi) return;
  if (fLookUpDxCorr[iPhi]) return;
  
  fLookUpDxCorr[iPhi] = new TMatrixF(fNR,fNZ);
  fLookUpDyCorr[iPhi] = new TMatrixF(fNR,fNZ);
  fLookUpDzCorr[iPhi] = new TMatrixF(fNR,fNZ);
  
  fLookUpDxDist[iPhi] = new TMatrixF(fNR,fNZ);
  fLookUpDyDist[iPhi] = new TMatrixF(fNR,fNZ);
  fLookUpDzDist[iPhi] = new TMatrixF(fNR,fNZ);
  
}
//_________________________________________________________________________________________
void AliTPCCorrectionLookupTable::InitTableArrays()
{
  //
  //
  //

  // needs to be before the table creation to set the limits
  SetupDefaultLimits();
  
  fLookUpDxCorr = new TMatrixF*[fNPhi];
  fLookUpDyCorr = new TMatrixF*[fNPhi];
  fLookUpDzCorr = new TMatrixF*[fNPhi];
  
  fLookUpDxDist = new TMatrixF*[fNPhi];
  fLookUpDyDist = new TMatrixF*[fNPhi];
  fLookUpDzDist = new TMatrixF*[fNPhi];

  for (Int_t iPhi=0; iPhi<fNPhi; ++iPhi){
    fLookUpDxCorr[iPhi] = 0x0;
    fLookUpDyCorr[iPhi] = 0x0;
    fLookUpDzCorr[iPhi] = 0x0;
    
    fLookUpDxDist[iPhi] = 0x0;
    fLookUpDyDist[iPhi] = 0x0;
    fLookUpDzDist[iPhi] = 0x0;
  }
}

//_________________________________________________________________________________________
void AliTPCCorrectionLookupTable::ResetTables()
{
  //
  // Reset the lookup tables
  //

  if (!fLookUpDxCorr) return;
  
  for (Int_t iPhi=0; iPhi<fNPhi; ++iPhi){
    delete fLookUpDxCorr[iPhi];
    delete fLookUpDyCorr[iPhi];
    delete fLookUpDzCorr[iPhi];

    delete fLookUpDxDist[iPhi];
    delete fLookUpDyDist[iPhi];
    delete fLookUpDzDist[iPhi];
  }

  delete [] fLookUpDxCorr;
  delete [] fLookUpDyCorr;
  delete [] fLookUpDzCorr;
  
  delete [] fLookUpDxDist;
  delete [] fLookUpDyDist;
  delete [] fLookUpDzDist;
  
  fLookUpDxCorr   = 0x0;
  fLookUpDyCorr = 0x0;
  fLookUpDzCorr    = 0x0;
  
  fLookUpDxDist   = 0x0;
  fLookUpDyDist = 0x0;
  fLookUpDzDist    = 0x0;
}

//_________________________________________________________________________________________
void AliTPCCorrectionLookupTable::SetupDefaultLimits()
{
  //
  // Set default limits for tables
  //

  fNR   = kNR;
  fNPhi = kNPhi;
  fNZ   = kNZ;
  fLimitsR.  ResizeTo(fNR);
  fLimitsPhi.ResizeTo(fNPhi);
  fLimitsZ.  ResizeTo(fNZ);
  fLimitsR.  SetElements(fgkRList);
  fLimitsPhi.SetElements(fgkPhiList);
  fLimitsZ.  SetElements(fgkZList);
}

//_________________________________________________________________________________________
void AliTPCCorrectionLookupTable::ResetLimits()
{
  fNR   = 0;
  fNPhi = 0;
  fNZ   = 0;

  fLimitsR.  ResizeTo(1);
  fLimitsPhi.ResizeTo(1);
  fLimitsZ.  ResizeTo(1);
}

//_________________________________________________________________________________________
void AliTPCCorrectionLookupTable::MergePhiTables(const char* files)
{
  //
  // merge all lookup tables stored in 'files' with this one
  // assume that each lookup table in each file has only one phi bin
  //

  ResetTables();
  ResetLimits(); // use limits from the first file assuming they are all the same
  
  TString sfiles=gSystem->GetFromPipe(Form("ls %s",files));
  TObjArray *arrFiles=sfiles.Tokenize("\n");

  for (Int_t i=0; i<arrFiles->GetEntriesFast();++i){
    TFile f(arrFiles->At(i)->GetName());
    if (!f.IsOpen() || f.IsZombie()) continue;
    AliTPCCorrectionLookupTable *lt=dynamic_cast<AliTPCCorrectionLookupTable*>(f.Get(f.GetListOfKeys()->First()->GetName()));
    if (!lt) {
      AliError(Form("first object in file '%s' is not of type AliTPCCorrectionLookupTable!",f.GetName()));
      continue;
    }

    if (!fNR) {
      fNR        = lt->fNR;
      fNPhi      = lt->fNPhi;
      fNZ        = lt->fNZ;
      fLimitsR   = lt->fLimitsR;
      fLimitsZ   = lt->fLimitsZ;
      fLimitsPhi = lt->fLimitsPhi;
      InitTableArrays();
    } else {
      if (fNR!=lt->fNR || fNPhi!=lt->fNPhi || fNZ!=lt->fNZ ){
        AliError(Form("Current limits don't macht the ones in file '%s'",f.GetName()));
        continue;
      }
    }

    for (Int_t iPhi=0; iPhi<fNPhi; ++iPhi) {
      if (!lt->fLookUpDxCorr[iPhi]) continue;

      AliInfo(Form("Adding phi bin '%d' from file '%s'",iPhi,f.GetName()));

      InitTablesPhiBin(iPhi);

      *fLookUpDxDist[iPhi] = *lt->fLookUpDxDist[iPhi];
      *fLookUpDyDist[iPhi] = *lt->fLookUpDyDist[iPhi];
      *fLookUpDzDist[iPhi] = *lt->fLookUpDzDist[iPhi];
      //
      *fLookUpDxCorr[iPhi] = *lt->fLookUpDxCorr[iPhi];
      *fLookUpDyCorr[iPhi] = *lt->fLookUpDyCorr[iPhi];
      *fLookUpDzCorr[iPhi] = *lt->fLookUpDzCorr[iPhi];
      break;
    }
  }

  //check of all phi bins are initialised
  for (Int_t iPhi=0; iPhi<fNPhi; ++iPhi) {
    if (!fLookUpDxCorr[iPhi]) {
      AliFatal(Form("Phi bin '%d' not initialised from files!",iPhi));
    }
  }
  
  delete arrFiles;
}

//_________________________________________________________________________________________
void AliTPCCorrectionLookupTable::BuildExactInverse()
{
  //
  // this method build the exact inverse of the standard distortion map
  // for the the distortion man first needs to be calculated
  // then the correction map will be overwritten
  //

  Float_t x[3]    = {0.,0.,0.};
  Float_t x2[3]   = {0.,0.,0.};
  Float_t xref[3] = {0.,0.,0.};
  Float_t xd[3]   = {0.,0.,0.};
  Float_t dx[3]   = {0.,0.,0.};

  // reset correction matrices
  for (Int_t iPhi=0; iPhi<fNPhi; ++iPhi){
    TMatrixF &mDxCorr   = *fLookUpDxCorr[iPhi];
    TMatrixF &mDyCorr   = *fLookUpDyCorr[iPhi];
    TMatrixF &mDzCorr   = *fLookUpDzCorr[iPhi];
    
    for (Int_t ir=0; ir<fNR; ++ir){
      for (Int_t iz=0; iz<fNZ; ++iz){
        mDxCorr(ir,iz) = -1000.;
        mDyCorr(ir,iz) = -1000.;
        mDzCorr(ir,iz) = -1000.;
      }
    }
  }
  
  // get interplolated corrections on standard grid
  for (Int_t iPhi=0; iPhi<fNPhi; ++iPhi){
    Double_t phi=fLimitsPhi(iPhi);
    TMatrixF &mDxDist   = *fLookUpDxDist[iPhi];
    TMatrixF &mDyDist   = *fLookUpDyDist[iPhi];
    TMatrixF &mDzDist   = *fLookUpDzDist[iPhi];
    
    for (Int_t ir=0; ir<fNR; ++ir){
      Double_t r=fLimitsR(ir);
      x[0]=r * TMath::Cos(phi);
      x[1]=r * TMath::Sin(phi);

      for (Int_t iz=0; iz<fNZ; ++iz){
        Double_t z=fLimitsZ(iz);
        x[2]=z;
        
        //TODO: change hardcoded value for r>133.?
        Int_t roc=TMath::Nint(phi*TMath::RadToDeg()/20.)%18;
        if (r>133.) roc+=36;
        if (z<0)    roc+=18;

        dx[0] = mDxDist(ir,iz);
        dx[1] = mDyDist(ir,iz);
        dx[2] = mDzDist(ir,iz);

        xd[0] = x[0]+dx[0];
        xd[1] = x[1]+dx[1];
        xd[2] = x[2]+dx[2];

        const Double_t phid = TVector2::Phi_0_2pi(TMath::ATan2(xd[1],xd[0]));
        const Double_t rd   = TMath::Sqrt(xd[0]*xd[0] + xd[1]*xd[1]);
        const Double_t zd   = xd[2];

        Int_t ilow = 0, jlow = 0, klow = 0 ;
        
        Search( fLimitsR.GetNrows(),   fLimitsR.GetMatrixArray(),   rd,   ilow   ) ;
        Search( fLimitsZ.GetNrows(),   fLimitsZ.GetMatrixArray(),   zd,   jlow   ) ;
        Search( fLimitsPhi.GetNrows(), fLimitsPhi.GetMatrixArray(), phid, klow   ) ;
        
        if ( ilow < 0 ) ilow = 0 ;   // check if out of range
        if ( jlow < 0 ) jlow = 0 ;
        if ( klow < 0 ) klow = 0 ;
        if ( ilow >= fLimitsR.GetNrows())   ilow = fLimitsR.GetNrows() - 1;
        if ( jlow >= fLimitsZ.GetNrows())   jlow = fLimitsZ.GetNrows() - 1;
        if ( klow >= fLimitsPhi.GetNrows()) klow = fLimitsPhi.GetNrows() - 1;

        const Double_t phiRef = fLimitsPhi[klow];
        const Double_t rRef   = fLimitsR[ilow];
        const Double_t zRef   = fLimitsZ[jlow];
        
        TMatrixF &mDxCorr   = *fLookUpDxCorr[klow];
        if ( mDxCorr(ilow, jlow) > -1000. ) continue;
        TMatrixF &mDyCorr   = *fLookUpDyCorr[klow];
        TMatrixF &mDzCorr   = *fLookUpDzCorr[klow];
        
        xref[0]= rRef * TMath::Cos(phiRef);
        xref[1]= rRef * TMath::Sin(phiRef);
        xref[2]= zRef;
        
        FindClosestPosition(ir,iz,iPhi, xref, x2);

        GetDistortion(x2,roc,dx);

        mDxCorr(ilow, jlow) = -dx[0];
        mDyCorr(ilow, jlow) = -dx[1];
        mDzCorr(ilow, jlow) = -dx[2];

//         printf("%3d %3d %3d\n",iPhi, ir, iz);
//         printf("%3d %3d %3d\n",klow, ilow, jlow);
//         printf("x2:   %.5f %.5f %.5f\n", x2[0], x2[1], x2[2]);
//         printf("x2d:  %.5f %.5f %.5f\n", x2[0]+dx[0], x2[1]+dx[1], x2[2]+dx[2]);
//         printf("xref: %.5f %.5f %.5f\n", xref[0], xref[1], xref[2]);
//         printf("xrd:  %.5f %.5f %.5f\n", x2[0]+dx[0]-xref[0], x2[1]+dx[1]-xref[1], x2[2]+dx[2]-xref[2]);
//         printf("phid: %.5f %.5f %.5f\n", phid,rd,zd);
//         printf("phir: %.5f %.5f %.5f\n", phiRef,rRef,zRef);
//         printf("\n");
      }
    }
  }

  // fill remaining empty bins
  // The last ein first phi bin entries must be identical, fill those first
  {
  TMatrixF &mDxCorr   = *fLookUpDxCorr[0];
  TMatrixF &mDyCorr   = *fLookUpDyCorr[0];
  TMatrixF &mDzCorr   = *fLookUpDzCorr[0];
  
  TMatrixF &mDxCorr2  = *fLookUpDxCorr[fNPhi-1];
  TMatrixF &mDyCorr2  = *fLookUpDyCorr[fNPhi-1];
  TMatrixF &mDzCorr2  = *fLookUpDzCorr[fNPhi-1];
  
  for (Int_t ir=0; ir<fNR; ++ir){
    for (Int_t iz=0; iz<fNZ; ++iz){
      mDxCorr2(ir,iz) = mDxCorr(ir,iz);
      mDyCorr2(ir,iz) = mDyCorr(ir,iz);
      mDzCorr2(ir,iz) = mDzCorr(ir,iz);
    }
  }
  }

  for (Int_t iPhi=0; iPhi<fNPhi; ++iPhi){
    TMatrixF &mDxCorr   = *fLookUpDxCorr[iPhi];
    TMatrixF &mDyCorr   = *fLookUpDyCorr[iPhi];
    TMatrixF &mDzCorr   = *fLookUpDzCorr[iPhi];
    
    Double_t phi=fLimitsPhi(iPhi);
    for (Int_t ir=0; ir<fNR; ++ir){
      Double_t r=fLimitsR(ir);
      x[0]=r * TMath::Cos(phi);
      x[1]=r * TMath::Sin(phi);

      for (Int_t iz=0; iz<fNZ; ++iz){
        if (mDxCorr(ir,iz) > -999.) continue;

        Double_t z=fLimitsZ(iz);
        x[2]=z;
        
        //TODO: change hardcoded value for r>133.?
        Int_t roc=TMath::Nint(phi*TMath::RadToDeg()/20.)%18;
        if (r>133.) roc+=36;
        if (z<0)    roc+=18;
        
        // get last point
        dx[0] = mDxCorr(ir,iz-1);
        dx[1] = mDyCorr(ir,iz-1);
        dx[2] = mDzCorr(ir,iz-1);
        
        xd[0] = x[0]+dx[0];
        xd[1] = x[1]+dx[1];
        xd[2] = x[2]+dx[2];

        // get distorted point
        const Double_t phid = TVector2::Phi_0_2pi(TMath::ATan2(xd[1],xd[0]));
        const Double_t rd   = TMath::Sqrt(xd[0]*xd[0] + xd[1]*xd[1]);
        const Double_t zd   = xd[2];
        
        Int_t ilow = 0, jlow = 0, klow = 0 ;
        
        Search( fLimitsR.GetNrows(),   fLimitsR.GetMatrixArray(),   rd,   ilow   ) ;
        Search( fLimitsZ.GetNrows(),   fLimitsZ.GetMatrixArray(),   zd,   jlow   ) ;
        Search( fLimitsPhi.GetNrows(), fLimitsPhi.GetMatrixArray(), phid, klow   ) ;
        
        if ( ilow < 0 ) ilow = 0 ;   // check if out of range
        if ( jlow < 0 ) jlow = 0 ;
        if ( klow < 0 ) klow = 0 ;
        if ( ilow >= fLimitsR.GetNrows())   ilow = fLimitsR.GetNrows() - 1;
        if ( jlow >= fLimitsZ.GetNrows())   jlow = fLimitsZ.GetNrows() - 1;
        if ( klow >= fLimitsPhi.GetNrows()) klow = fLimitsPhi.GetNrows() - 1;
        
        FindClosestPosition(ilow,jlow,klow, x, x2);
        
        GetDistortion(x2,roc,dx);
        
        mDxCorr(ir, iz) = -dx[0];
        mDyCorr(ir, iz) = -dx[1];
        mDzCorr(ir, iz) = -dx[2];
      }
    }
  }
  
}

//_________________________________________________________________________________________
void AliTPCCorrectionLookupTable::FindClosestPosition(const Int_t binR, const Int_t binZ, const Int_t binPhi,
                                                      const Float_t xref[3], Float_t xret[3])
{
  //
  //
  //

//   static TLinearFitter fitx(2,"pol2");
//   static TLinearFitter fity(2,"pol2");
//   static TLinearFitter fitz(2,"pol2");
  static TLinearFitter fitx(4,"hyp3");
  static TLinearFitter fity(4,"hyp3");
  static TLinearFitter fitz(4,"hyp3");
  fitx.ClearPoints();
  fity.ClearPoints();
  fitz.ClearPoints();

  const Int_t nPoints=3;
  Int_t counter=0;
  Int_t rMin=binR;
  Int_t zMin=binZ;
  Int_t phiMin=binPhi;

  counter=nPoints/2;
  while (rMin>0 && counter--) --rMin;
  counter=nPoints/2;
  while (zMin>0 && counter--) --zMin;
  counter=nPoints/2;
  while (phiMin>0 && counter--) --phiMin;

  Int_t rMax   = rMin  +nPoints;
  Int_t zMax   = zMin  +nPoints;
  Int_t phiMax = phiMin+nPoints;

  while (rMax>=fNR) {--rMin; --rMax;}
  while (zMax>=fNZ) {--zMin; --zMax;}
  while (phiMax>=fNPhi) {--phiMin; --phiMax;}
  
  Float_t  x[3]    = {0.,0.,0.};
  Double_t xd[3]   = {0.,0.,0.};
  Float_t  dx[3]   = {0.,0.,0.};
  
  for (Int_t iPhi=phiMin; iPhi<phiMax; ++iPhi) {
    TMatrixF &mDxDist   = *fLookUpDxDist[iPhi];
    TMatrixF &mDyDist   = *fLookUpDyDist[iPhi];
    TMatrixF &mDzDist   = *fLookUpDzDist[iPhi];
    
    Double_t phi=fLimitsPhi(iPhi);
    for (Int_t ir=rMin; ir<rMax; ++ir){
      Double_t r=fLimitsR(ir);
      x[0]=r * TMath::Cos(phi);
      x[1]=r * TMath::Sin(phi);
      
      for (Int_t iz=zMin; iz<zMax; ++iz){
        Double_t z=fLimitsZ(iz);
        x[2]=z;
        
        dx[0] = mDxDist(ir,iz);
        dx[1] = mDyDist(ir,iz);
        dx[2] = mDzDist(ir,iz);
        
        xd[0] = x[0]+dx[0];
        xd[1] = x[1]+dx[1];
        xd[2] = x[2]+dx[2];

        fitx.AddPoint(xd,   x[0]);
        fity.AddPoint(xd, x[1]);
        fitz.AddPoint(xd, x[2]);
      }
    }
  }

  fitx.Eval();
  fity.Eval();
  fitz.Eval();
  xret[0] = fitx.GetParameter(0) + fitx.GetParameter(1)*xref[0]
                                 + fitx.GetParameter(2)*xref[1]
                                 + fitx.GetParameter(3)*xref[2];
  xret[1] = fity.GetParameter(0) + fity.GetParameter(1)*xref[0]
                                 + fity.GetParameter(2)*xref[1]
                                 + fity.GetParameter(3)*xref[2];
  xret[2] = fitz.GetParameter(0) + fitz.GetParameter(1)*xref[0]
                                 + fitz.GetParameter(2)*xref[1]
                                 + fitz.GetParameter(3)*xref[2];
//   xret[0] = fitx.GetParameter(0) + fitx.GetParameter(1)*xref[0] + fitx.GetParameter(2)*xref[0]*xref[0];
//   xret[1] = fity.GetParameter(0) + fity.GetParameter(1)*xref[1] + fity.GetParameter(2)*xref[1]*xref[1];
//   xret[2] = fitz.GetParameter(0) + fitz.GetParameter(1)*xref[2] + fitz.GetParameter(2)*xref[2]*xref[2];
}

 AliTPCCorrectionLookupTable.cxx:1
 AliTPCCorrectionLookupTable.cxx:2
 AliTPCCorrectionLookupTable.cxx:3
 AliTPCCorrectionLookupTable.cxx:4
 AliTPCCorrectionLookupTable.cxx:5
 AliTPCCorrectionLookupTable.cxx:6
 AliTPCCorrectionLookupTable.cxx:7
 AliTPCCorrectionLookupTable.cxx:8
 AliTPCCorrectionLookupTable.cxx:9
 AliTPCCorrectionLookupTable.cxx:10
 AliTPCCorrectionLookupTable.cxx:11
 AliTPCCorrectionLookupTable.cxx:12
 AliTPCCorrectionLookupTable.cxx:13
 AliTPCCorrectionLookupTable.cxx:14
 AliTPCCorrectionLookupTable.cxx:15
 AliTPCCorrectionLookupTable.cxx:16
 AliTPCCorrectionLookupTable.cxx:17
 AliTPCCorrectionLookupTable.cxx:18
 AliTPCCorrectionLookupTable.cxx:19
 AliTPCCorrectionLookupTable.cxx:20
 AliTPCCorrectionLookupTable.cxx:21
 AliTPCCorrectionLookupTable.cxx:22
 AliTPCCorrectionLookupTable.cxx:23
 AliTPCCorrectionLookupTable.cxx:24
 AliTPCCorrectionLookupTable.cxx:25
 AliTPCCorrectionLookupTable.cxx:26
 AliTPCCorrectionLookupTable.cxx:27
 AliTPCCorrectionLookupTable.cxx:28
 AliTPCCorrectionLookupTable.cxx:29
 AliTPCCorrectionLookupTable.cxx:30
 AliTPCCorrectionLookupTable.cxx:31
 AliTPCCorrectionLookupTable.cxx:32
 AliTPCCorrectionLookupTable.cxx:33
 AliTPCCorrectionLookupTable.cxx:34
 AliTPCCorrectionLookupTable.cxx:35
 AliTPCCorrectionLookupTable.cxx:36
 AliTPCCorrectionLookupTable.cxx:37
 AliTPCCorrectionLookupTable.cxx:38
 AliTPCCorrectionLookupTable.cxx:39
 AliTPCCorrectionLookupTable.cxx:40
 AliTPCCorrectionLookupTable.cxx:41
 AliTPCCorrectionLookupTable.cxx:42
 AliTPCCorrectionLookupTable.cxx:43
 AliTPCCorrectionLookupTable.cxx:44
 AliTPCCorrectionLookupTable.cxx:45
 AliTPCCorrectionLookupTable.cxx:46
 AliTPCCorrectionLookupTable.cxx:47
 AliTPCCorrectionLookupTable.cxx:48
 AliTPCCorrectionLookupTable.cxx:49
 AliTPCCorrectionLookupTable.cxx:50
 AliTPCCorrectionLookupTable.cxx:51
 AliTPCCorrectionLookupTable.cxx:52
 AliTPCCorrectionLookupTable.cxx:53
 AliTPCCorrectionLookupTable.cxx:54
 AliTPCCorrectionLookupTable.cxx:55
 AliTPCCorrectionLookupTable.cxx:56
 AliTPCCorrectionLookupTable.cxx:57
 AliTPCCorrectionLookupTable.cxx:58
 AliTPCCorrectionLookupTable.cxx:59
 AliTPCCorrectionLookupTable.cxx:60
 AliTPCCorrectionLookupTable.cxx:61
 AliTPCCorrectionLookupTable.cxx:62
 AliTPCCorrectionLookupTable.cxx:63
 AliTPCCorrectionLookupTable.cxx:64
 AliTPCCorrectionLookupTable.cxx:65
 AliTPCCorrectionLookupTable.cxx:66
 AliTPCCorrectionLookupTable.cxx:67
 AliTPCCorrectionLookupTable.cxx:68
 AliTPCCorrectionLookupTable.cxx:69
 AliTPCCorrectionLookupTable.cxx:70
 AliTPCCorrectionLookupTable.cxx:71
 AliTPCCorrectionLookupTable.cxx:72
 AliTPCCorrectionLookupTable.cxx:73
 AliTPCCorrectionLookupTable.cxx:74
 AliTPCCorrectionLookupTable.cxx:75
 AliTPCCorrectionLookupTable.cxx:76
 AliTPCCorrectionLookupTable.cxx:77
 AliTPCCorrectionLookupTable.cxx:78
 AliTPCCorrectionLookupTable.cxx:79
 AliTPCCorrectionLookupTable.cxx:80
 AliTPCCorrectionLookupTable.cxx:81
 AliTPCCorrectionLookupTable.cxx:82
 AliTPCCorrectionLookupTable.cxx:83
 AliTPCCorrectionLookupTable.cxx:84
 AliTPCCorrectionLookupTable.cxx:85
 AliTPCCorrectionLookupTable.cxx:86
 AliTPCCorrectionLookupTable.cxx:87
 AliTPCCorrectionLookupTable.cxx:88
 AliTPCCorrectionLookupTable.cxx:89
 AliTPCCorrectionLookupTable.cxx:90
 AliTPCCorrectionLookupTable.cxx:91
 AliTPCCorrectionLookupTable.cxx:92
 AliTPCCorrectionLookupTable.cxx:93
 AliTPCCorrectionLookupTable.cxx:94
 AliTPCCorrectionLookupTable.cxx:95
 AliTPCCorrectionLookupTable.cxx:96
 AliTPCCorrectionLookupTable.cxx:97
 AliTPCCorrectionLookupTable.cxx:98
 AliTPCCorrectionLookupTable.cxx:99
 AliTPCCorrectionLookupTable.cxx:100
 AliTPCCorrectionLookupTable.cxx:101
 AliTPCCorrectionLookupTable.cxx:102
 AliTPCCorrectionLookupTable.cxx:103
 AliTPCCorrectionLookupTable.cxx:104
 AliTPCCorrectionLookupTable.cxx:105
 AliTPCCorrectionLookupTable.cxx:106
 AliTPCCorrectionLookupTable.cxx:107
 AliTPCCorrectionLookupTable.cxx:108
 AliTPCCorrectionLookupTable.cxx:109
 AliTPCCorrectionLookupTable.cxx:110
 AliTPCCorrectionLookupTable.cxx:111
 AliTPCCorrectionLookupTable.cxx:112
 AliTPCCorrectionLookupTable.cxx:113
 AliTPCCorrectionLookupTable.cxx:114
 AliTPCCorrectionLookupTable.cxx:115
 AliTPCCorrectionLookupTable.cxx:116
 AliTPCCorrectionLookupTable.cxx:117
 AliTPCCorrectionLookupTable.cxx:118
 AliTPCCorrectionLookupTable.cxx:119
 AliTPCCorrectionLookupTable.cxx:120
 AliTPCCorrectionLookupTable.cxx:121
 AliTPCCorrectionLookupTable.cxx:122
 AliTPCCorrectionLookupTable.cxx:123
 AliTPCCorrectionLookupTable.cxx:124
 AliTPCCorrectionLookupTable.cxx:125
 AliTPCCorrectionLookupTable.cxx:126
 AliTPCCorrectionLookupTable.cxx:127
 AliTPCCorrectionLookupTable.cxx:128
 AliTPCCorrectionLookupTable.cxx:129
 AliTPCCorrectionLookupTable.cxx:130
 AliTPCCorrectionLookupTable.cxx:131
 AliTPCCorrectionLookupTable.cxx:132
 AliTPCCorrectionLookupTable.cxx:133
 AliTPCCorrectionLookupTable.cxx:134
 AliTPCCorrectionLookupTable.cxx:135
 AliTPCCorrectionLookupTable.cxx:136
 AliTPCCorrectionLookupTable.cxx:137
 AliTPCCorrectionLookupTable.cxx:138
 AliTPCCorrectionLookupTable.cxx:139
 AliTPCCorrectionLookupTable.cxx:140
 AliTPCCorrectionLookupTable.cxx:141
 AliTPCCorrectionLookupTable.cxx:142
 AliTPCCorrectionLookupTable.cxx:143
 AliTPCCorrectionLookupTable.cxx:144
 AliTPCCorrectionLookupTable.cxx:145
 AliTPCCorrectionLookupTable.cxx:146
 AliTPCCorrectionLookupTable.cxx:147
 AliTPCCorrectionLookupTable.cxx:148
 AliTPCCorrectionLookupTable.cxx:149
 AliTPCCorrectionLookupTable.cxx:150
 AliTPCCorrectionLookupTable.cxx:151
 AliTPCCorrectionLookupTable.cxx:152
 AliTPCCorrectionLookupTable.cxx:153
 AliTPCCorrectionLookupTable.cxx:154
 AliTPCCorrectionLookupTable.cxx:155
 AliTPCCorrectionLookupTable.cxx:156
 AliTPCCorrectionLookupTable.cxx:157
 AliTPCCorrectionLookupTable.cxx:158
 AliTPCCorrectionLookupTable.cxx:159
 AliTPCCorrectionLookupTable.cxx:160
 AliTPCCorrectionLookupTable.cxx:161
 AliTPCCorrectionLookupTable.cxx:162
 AliTPCCorrectionLookupTable.cxx:163
 AliTPCCorrectionLookupTable.cxx:164
 AliTPCCorrectionLookupTable.cxx:165
 AliTPCCorrectionLookupTable.cxx:166
 AliTPCCorrectionLookupTable.cxx:167
 AliTPCCorrectionLookupTable.cxx:168
 AliTPCCorrectionLookupTable.cxx:169
 AliTPCCorrectionLookupTable.cxx:170
 AliTPCCorrectionLookupTable.cxx:171
 AliTPCCorrectionLookupTable.cxx:172
 AliTPCCorrectionLookupTable.cxx:173
 AliTPCCorrectionLookupTable.cxx:174
 AliTPCCorrectionLookupTable.cxx:175
 AliTPCCorrectionLookupTable.cxx:176
 AliTPCCorrectionLookupTable.cxx:177
 AliTPCCorrectionLookupTable.cxx:178
 AliTPCCorrectionLookupTable.cxx:179
 AliTPCCorrectionLookupTable.cxx:180
 AliTPCCorrectionLookupTable.cxx:181
 AliTPCCorrectionLookupTable.cxx:182
 AliTPCCorrectionLookupTable.cxx:183
 AliTPCCorrectionLookupTable.cxx:184
 AliTPCCorrectionLookupTable.cxx:185
 AliTPCCorrectionLookupTable.cxx:186
 AliTPCCorrectionLookupTable.cxx:187
 AliTPCCorrectionLookupTable.cxx:188
 AliTPCCorrectionLookupTable.cxx:189
 AliTPCCorrectionLookupTable.cxx:190
 AliTPCCorrectionLookupTable.cxx:191
 AliTPCCorrectionLookupTable.cxx:192
 AliTPCCorrectionLookupTable.cxx:193
 AliTPCCorrectionLookupTable.cxx:194
 AliTPCCorrectionLookupTable.cxx:195
 AliTPCCorrectionLookupTable.cxx:196
 AliTPCCorrectionLookupTable.cxx:197
 AliTPCCorrectionLookupTable.cxx:198
 AliTPCCorrectionLookupTable.cxx:199
 AliTPCCorrectionLookupTable.cxx:200
 AliTPCCorrectionLookupTable.cxx:201
 AliTPCCorrectionLookupTable.cxx:202
 AliTPCCorrectionLookupTable.cxx:203
 AliTPCCorrectionLookupTable.cxx:204
 AliTPCCorrectionLookupTable.cxx:205
 AliTPCCorrectionLookupTable.cxx:206
 AliTPCCorrectionLookupTable.cxx:207
 AliTPCCorrectionLookupTable.cxx:208
 AliTPCCorrectionLookupTable.cxx:209
 AliTPCCorrectionLookupTable.cxx:210
 AliTPCCorrectionLookupTable.cxx:211
 AliTPCCorrectionLookupTable.cxx:212
 AliTPCCorrectionLookupTable.cxx:213
 AliTPCCorrectionLookupTable.cxx:214
 AliTPCCorrectionLookupTable.cxx:215
 AliTPCCorrectionLookupTable.cxx:216
 AliTPCCorrectionLookupTable.cxx:217
 AliTPCCorrectionLookupTable.cxx:218
 AliTPCCorrectionLookupTable.cxx:219
 AliTPCCorrectionLookupTable.cxx:220
 AliTPCCorrectionLookupTable.cxx:221
 AliTPCCorrectionLookupTable.cxx:222
 AliTPCCorrectionLookupTable.cxx:223
 AliTPCCorrectionLookupTable.cxx:224
 AliTPCCorrectionLookupTable.cxx:225
 AliTPCCorrectionLookupTable.cxx:226
 AliTPCCorrectionLookupTable.cxx:227
 AliTPCCorrectionLookupTable.cxx:228
 AliTPCCorrectionLookupTable.cxx:229
 AliTPCCorrectionLookupTable.cxx:230
 AliTPCCorrectionLookupTable.cxx:231
 AliTPCCorrectionLookupTable.cxx:232
 AliTPCCorrectionLookupTable.cxx:233
 AliTPCCorrectionLookupTable.cxx:234
 AliTPCCorrectionLookupTable.cxx:235
 AliTPCCorrectionLookupTable.cxx:236
 AliTPCCorrectionLookupTable.cxx:237
 AliTPCCorrectionLookupTable.cxx:238
 AliTPCCorrectionLookupTable.cxx:239
 AliTPCCorrectionLookupTable.cxx:240
 AliTPCCorrectionLookupTable.cxx:241
 AliTPCCorrectionLookupTable.cxx:242
 AliTPCCorrectionLookupTable.cxx:243
 AliTPCCorrectionLookupTable.cxx:244
 AliTPCCorrectionLookupTable.cxx:245
 AliTPCCorrectionLookupTable.cxx:246
 AliTPCCorrectionLookupTable.cxx:247
 AliTPCCorrectionLookupTable.cxx:248
 AliTPCCorrectionLookupTable.cxx:249
 AliTPCCorrectionLookupTable.cxx:250
 AliTPCCorrectionLookupTable.cxx:251
 AliTPCCorrectionLookupTable.cxx:252
 AliTPCCorrectionLookupTable.cxx:253
 AliTPCCorrectionLookupTable.cxx:254
 AliTPCCorrectionLookupTable.cxx:255
 AliTPCCorrectionLookupTable.cxx:256
 AliTPCCorrectionLookupTable.cxx:257
 AliTPCCorrectionLookupTable.cxx:258
 AliTPCCorrectionLookupTable.cxx:259
 AliTPCCorrectionLookupTable.cxx:260
 AliTPCCorrectionLookupTable.cxx:261
 AliTPCCorrectionLookupTable.cxx:262
 AliTPCCorrectionLookupTable.cxx:263
 AliTPCCorrectionLookupTable.cxx:264
 AliTPCCorrectionLookupTable.cxx:265
 AliTPCCorrectionLookupTable.cxx:266
 AliTPCCorrectionLookupTable.cxx:267
 AliTPCCorrectionLookupTable.cxx:268
 AliTPCCorrectionLookupTable.cxx:269
 AliTPCCorrectionLookupTable.cxx:270
 AliTPCCorrectionLookupTable.cxx:271
 AliTPCCorrectionLookupTable.cxx:272
 AliTPCCorrectionLookupTable.cxx:273
 AliTPCCorrectionLookupTable.cxx:274
 AliTPCCorrectionLookupTable.cxx:275
 AliTPCCorrectionLookupTable.cxx:276
 AliTPCCorrectionLookupTable.cxx:277
 AliTPCCorrectionLookupTable.cxx:278
 AliTPCCorrectionLookupTable.cxx:279
 AliTPCCorrectionLookupTable.cxx:280
 AliTPCCorrectionLookupTable.cxx:281
 AliTPCCorrectionLookupTable.cxx:282
 AliTPCCorrectionLookupTable.cxx:283
 AliTPCCorrectionLookupTable.cxx:284
 AliTPCCorrectionLookupTable.cxx:285
 AliTPCCorrectionLookupTable.cxx:286
 AliTPCCorrectionLookupTable.cxx:287
 AliTPCCorrectionLookupTable.cxx:288
 AliTPCCorrectionLookupTable.cxx:289
 AliTPCCorrectionLookupTable.cxx:290
 AliTPCCorrectionLookupTable.cxx:291
 AliTPCCorrectionLookupTable.cxx:292
 AliTPCCorrectionLookupTable.cxx:293
 AliTPCCorrectionLookupTable.cxx:294
 AliTPCCorrectionLookupTable.cxx:295
 AliTPCCorrectionLookupTable.cxx:296
 AliTPCCorrectionLookupTable.cxx:297
 AliTPCCorrectionLookupTable.cxx:298
 AliTPCCorrectionLookupTable.cxx:299
 AliTPCCorrectionLookupTable.cxx:300
 AliTPCCorrectionLookupTable.cxx:301
 AliTPCCorrectionLookupTable.cxx:302
 AliTPCCorrectionLookupTable.cxx:303
 AliTPCCorrectionLookupTable.cxx:304
 AliTPCCorrectionLookupTable.cxx:305
 AliTPCCorrectionLookupTable.cxx:306
 AliTPCCorrectionLookupTable.cxx:307
 AliTPCCorrectionLookupTable.cxx:308
 AliTPCCorrectionLookupTable.cxx:309
 AliTPCCorrectionLookupTable.cxx:310
 AliTPCCorrectionLookupTable.cxx:311
 AliTPCCorrectionLookupTable.cxx:312
 AliTPCCorrectionLookupTable.cxx:313
 AliTPCCorrectionLookupTable.cxx:314
 AliTPCCorrectionLookupTable.cxx:315
 AliTPCCorrectionLookupTable.cxx:316
 AliTPCCorrectionLookupTable.cxx:317
 AliTPCCorrectionLookupTable.cxx:318
 AliTPCCorrectionLookupTable.cxx:319
 AliTPCCorrectionLookupTable.cxx:320
 AliTPCCorrectionLookupTable.cxx:321
 AliTPCCorrectionLookupTable.cxx:322
 AliTPCCorrectionLookupTable.cxx:323
 AliTPCCorrectionLookupTable.cxx:324
 AliTPCCorrectionLookupTable.cxx:325
 AliTPCCorrectionLookupTable.cxx:326
 AliTPCCorrectionLookupTable.cxx:327
 AliTPCCorrectionLookupTable.cxx:328
 AliTPCCorrectionLookupTable.cxx:329
 AliTPCCorrectionLookupTable.cxx:330
 AliTPCCorrectionLookupTable.cxx:331
 AliTPCCorrectionLookupTable.cxx:332
 AliTPCCorrectionLookupTable.cxx:333
 AliTPCCorrectionLookupTable.cxx:334
 AliTPCCorrectionLookupTable.cxx:335
 AliTPCCorrectionLookupTable.cxx:336
 AliTPCCorrectionLookupTable.cxx:337
 AliTPCCorrectionLookupTable.cxx:338
 AliTPCCorrectionLookupTable.cxx:339
 AliTPCCorrectionLookupTable.cxx:340
 AliTPCCorrectionLookupTable.cxx:341
 AliTPCCorrectionLookupTable.cxx:342
 AliTPCCorrectionLookupTable.cxx:343
 AliTPCCorrectionLookupTable.cxx:344
 AliTPCCorrectionLookupTable.cxx:345
 AliTPCCorrectionLookupTable.cxx:346
 AliTPCCorrectionLookupTable.cxx:347
 AliTPCCorrectionLookupTable.cxx:348
 AliTPCCorrectionLookupTable.cxx:349
 AliTPCCorrectionLookupTable.cxx:350
 AliTPCCorrectionLookupTable.cxx:351
 AliTPCCorrectionLookupTable.cxx:352
 AliTPCCorrectionLookupTable.cxx:353
 AliTPCCorrectionLookupTable.cxx:354
 AliTPCCorrectionLookupTable.cxx:355
 AliTPCCorrectionLookupTable.cxx:356
 AliTPCCorrectionLookupTable.cxx:357
 AliTPCCorrectionLookupTable.cxx:358
 AliTPCCorrectionLookupTable.cxx:359
 AliTPCCorrectionLookupTable.cxx:360
 AliTPCCorrectionLookupTable.cxx:361
 AliTPCCorrectionLookupTable.cxx:362
 AliTPCCorrectionLookupTable.cxx:363
 AliTPCCorrectionLookupTable.cxx:364
 AliTPCCorrectionLookupTable.cxx:365
 AliTPCCorrectionLookupTable.cxx:366
 AliTPCCorrectionLookupTable.cxx:367
 AliTPCCorrectionLookupTable.cxx:368
 AliTPCCorrectionLookupTable.cxx:369
 AliTPCCorrectionLookupTable.cxx:370
 AliTPCCorrectionLookupTable.cxx:371
 AliTPCCorrectionLookupTable.cxx:372
 AliTPCCorrectionLookupTable.cxx:373
 AliTPCCorrectionLookupTable.cxx:374
 AliTPCCorrectionLookupTable.cxx:375
 AliTPCCorrectionLookupTable.cxx:376
 AliTPCCorrectionLookupTable.cxx:377
 AliTPCCorrectionLookupTable.cxx:378
 AliTPCCorrectionLookupTable.cxx:379
 AliTPCCorrectionLookupTable.cxx:380
 AliTPCCorrectionLookupTable.cxx:381
 AliTPCCorrectionLookupTable.cxx:382
 AliTPCCorrectionLookupTable.cxx:383
 AliTPCCorrectionLookupTable.cxx:384
 AliTPCCorrectionLookupTable.cxx:385
 AliTPCCorrectionLookupTable.cxx:386
 AliTPCCorrectionLookupTable.cxx:387
 AliTPCCorrectionLookupTable.cxx:388
 AliTPCCorrectionLookupTable.cxx:389
 AliTPCCorrectionLookupTable.cxx:390
 AliTPCCorrectionLookupTable.cxx:391
 AliTPCCorrectionLookupTable.cxx:392
 AliTPCCorrectionLookupTable.cxx:393
 AliTPCCorrectionLookupTable.cxx:394
 AliTPCCorrectionLookupTable.cxx:395
 AliTPCCorrectionLookupTable.cxx:396
 AliTPCCorrectionLookupTable.cxx:397
 AliTPCCorrectionLookupTable.cxx:398
 AliTPCCorrectionLookupTable.cxx:399
 AliTPCCorrectionLookupTable.cxx:400
 AliTPCCorrectionLookupTable.cxx:401
 AliTPCCorrectionLookupTable.cxx:402
 AliTPCCorrectionLookupTable.cxx:403
 AliTPCCorrectionLookupTable.cxx:404
 AliTPCCorrectionLookupTable.cxx:405
 AliTPCCorrectionLookupTable.cxx:406
 AliTPCCorrectionLookupTable.cxx:407
 AliTPCCorrectionLookupTable.cxx:408
 AliTPCCorrectionLookupTable.cxx:409
 AliTPCCorrectionLookupTable.cxx:410
 AliTPCCorrectionLookupTable.cxx:411
 AliTPCCorrectionLookupTable.cxx:412
 AliTPCCorrectionLookupTable.cxx:413
 AliTPCCorrectionLookupTable.cxx:414
 AliTPCCorrectionLookupTable.cxx:415
 AliTPCCorrectionLookupTable.cxx:416
 AliTPCCorrectionLookupTable.cxx:417
 AliTPCCorrectionLookupTable.cxx:418
 AliTPCCorrectionLookupTable.cxx:419
 AliTPCCorrectionLookupTable.cxx:420
 AliTPCCorrectionLookupTable.cxx:421
 AliTPCCorrectionLookupTable.cxx:422
 AliTPCCorrectionLookupTable.cxx:423
 AliTPCCorrectionLookupTable.cxx:424
 AliTPCCorrectionLookupTable.cxx:425
 AliTPCCorrectionLookupTable.cxx:426
 AliTPCCorrectionLookupTable.cxx:427
 AliTPCCorrectionLookupTable.cxx:428
 AliTPCCorrectionLookupTable.cxx:429
 AliTPCCorrectionLookupTable.cxx:430
 AliTPCCorrectionLookupTable.cxx:431
 AliTPCCorrectionLookupTable.cxx:432
 AliTPCCorrectionLookupTable.cxx:433
 AliTPCCorrectionLookupTable.cxx:434
 AliTPCCorrectionLookupTable.cxx:435
 AliTPCCorrectionLookupTable.cxx:436
 AliTPCCorrectionLookupTable.cxx:437
 AliTPCCorrectionLookupTable.cxx:438
 AliTPCCorrectionLookupTable.cxx:439
 AliTPCCorrectionLookupTable.cxx:440
 AliTPCCorrectionLookupTable.cxx:441
 AliTPCCorrectionLookupTable.cxx:442
 AliTPCCorrectionLookupTable.cxx:443
 AliTPCCorrectionLookupTable.cxx:444
 AliTPCCorrectionLookupTable.cxx:445
 AliTPCCorrectionLookupTable.cxx:446
 AliTPCCorrectionLookupTable.cxx:447
 AliTPCCorrectionLookupTable.cxx:448
 AliTPCCorrectionLookupTable.cxx:449
 AliTPCCorrectionLookupTable.cxx:450
 AliTPCCorrectionLookupTable.cxx:451
 AliTPCCorrectionLookupTable.cxx:452
 AliTPCCorrectionLookupTable.cxx:453
 AliTPCCorrectionLookupTable.cxx:454
 AliTPCCorrectionLookupTable.cxx:455
 AliTPCCorrectionLookupTable.cxx:456
 AliTPCCorrectionLookupTable.cxx:457
 AliTPCCorrectionLookupTable.cxx:458
 AliTPCCorrectionLookupTable.cxx:459
 AliTPCCorrectionLookupTable.cxx:460
 AliTPCCorrectionLookupTable.cxx:461
 AliTPCCorrectionLookupTable.cxx:462
 AliTPCCorrectionLookupTable.cxx:463
 AliTPCCorrectionLookupTable.cxx:464
 AliTPCCorrectionLookupTable.cxx:465
 AliTPCCorrectionLookupTable.cxx:466
 AliTPCCorrectionLookupTable.cxx:467
 AliTPCCorrectionLookupTable.cxx:468
 AliTPCCorrectionLookupTable.cxx:469
 AliTPCCorrectionLookupTable.cxx:470
 AliTPCCorrectionLookupTable.cxx:471
 AliTPCCorrectionLookupTable.cxx:472
 AliTPCCorrectionLookupTable.cxx:473
 AliTPCCorrectionLookupTable.cxx:474
 AliTPCCorrectionLookupTable.cxx:475
 AliTPCCorrectionLookupTable.cxx:476
 AliTPCCorrectionLookupTable.cxx:477
 AliTPCCorrectionLookupTable.cxx:478
 AliTPCCorrectionLookupTable.cxx:479
 AliTPCCorrectionLookupTable.cxx:480
 AliTPCCorrectionLookupTable.cxx:481
 AliTPCCorrectionLookupTable.cxx:482
 AliTPCCorrectionLookupTable.cxx:483
 AliTPCCorrectionLookupTable.cxx:484
 AliTPCCorrectionLookupTable.cxx:485
 AliTPCCorrectionLookupTable.cxx:486
 AliTPCCorrectionLookupTable.cxx:487
 AliTPCCorrectionLookupTable.cxx:488
 AliTPCCorrectionLookupTable.cxx:489
 AliTPCCorrectionLookupTable.cxx:490
 AliTPCCorrectionLookupTable.cxx:491
 AliTPCCorrectionLookupTable.cxx:492
 AliTPCCorrectionLookupTable.cxx:493
 AliTPCCorrectionLookupTable.cxx:494
 AliTPCCorrectionLookupTable.cxx:495
 AliTPCCorrectionLookupTable.cxx:496
 AliTPCCorrectionLookupTable.cxx:497
 AliTPCCorrectionLookupTable.cxx:498
 AliTPCCorrectionLookupTable.cxx:499
 AliTPCCorrectionLookupTable.cxx:500
 AliTPCCorrectionLookupTable.cxx:501
 AliTPCCorrectionLookupTable.cxx:502
 AliTPCCorrectionLookupTable.cxx:503
 AliTPCCorrectionLookupTable.cxx:504
 AliTPCCorrectionLookupTable.cxx:505
 AliTPCCorrectionLookupTable.cxx:506
 AliTPCCorrectionLookupTable.cxx:507
 AliTPCCorrectionLookupTable.cxx:508
 AliTPCCorrectionLookupTable.cxx:509
 AliTPCCorrectionLookupTable.cxx:510
 AliTPCCorrectionLookupTable.cxx:511
 AliTPCCorrectionLookupTable.cxx:512
 AliTPCCorrectionLookupTable.cxx:513
 AliTPCCorrectionLookupTable.cxx:514
 AliTPCCorrectionLookupTable.cxx:515
 AliTPCCorrectionLookupTable.cxx:516
 AliTPCCorrectionLookupTable.cxx:517
 AliTPCCorrectionLookupTable.cxx:518
 AliTPCCorrectionLookupTable.cxx:519
 AliTPCCorrectionLookupTable.cxx:520
 AliTPCCorrectionLookupTable.cxx:521
 AliTPCCorrectionLookupTable.cxx:522
 AliTPCCorrectionLookupTable.cxx:523
 AliTPCCorrectionLookupTable.cxx:524
 AliTPCCorrectionLookupTable.cxx:525
 AliTPCCorrectionLookupTable.cxx:526
 AliTPCCorrectionLookupTable.cxx:527
 AliTPCCorrectionLookupTable.cxx:528
 AliTPCCorrectionLookupTable.cxx:529
 AliTPCCorrectionLookupTable.cxx:530
 AliTPCCorrectionLookupTable.cxx:531
 AliTPCCorrectionLookupTable.cxx:532
 AliTPCCorrectionLookupTable.cxx:533
 AliTPCCorrectionLookupTable.cxx:534
 AliTPCCorrectionLookupTable.cxx:535
 AliTPCCorrectionLookupTable.cxx:536
 AliTPCCorrectionLookupTable.cxx:537
 AliTPCCorrectionLookupTable.cxx:538
 AliTPCCorrectionLookupTable.cxx:539
 AliTPCCorrectionLookupTable.cxx:540
 AliTPCCorrectionLookupTable.cxx:541
 AliTPCCorrectionLookupTable.cxx:542
 AliTPCCorrectionLookupTable.cxx:543
 AliTPCCorrectionLookupTable.cxx:544
 AliTPCCorrectionLookupTable.cxx:545
 AliTPCCorrectionLookupTable.cxx:546
 AliTPCCorrectionLookupTable.cxx:547
 AliTPCCorrectionLookupTable.cxx:548
 AliTPCCorrectionLookupTable.cxx:549
 AliTPCCorrectionLookupTable.cxx:550
 AliTPCCorrectionLookupTable.cxx:551
 AliTPCCorrectionLookupTable.cxx:552
 AliTPCCorrectionLookupTable.cxx:553
 AliTPCCorrectionLookupTable.cxx:554
 AliTPCCorrectionLookupTable.cxx:555
 AliTPCCorrectionLookupTable.cxx:556
 AliTPCCorrectionLookupTable.cxx:557
 AliTPCCorrectionLookupTable.cxx:558
 AliTPCCorrectionLookupTable.cxx:559
 AliTPCCorrectionLookupTable.cxx:560
 AliTPCCorrectionLookupTable.cxx:561
 AliTPCCorrectionLookupTable.cxx:562
 AliTPCCorrectionLookupTable.cxx:563
 AliTPCCorrectionLookupTable.cxx:564
 AliTPCCorrectionLookupTable.cxx:565
 AliTPCCorrectionLookupTable.cxx:566
 AliTPCCorrectionLookupTable.cxx:567
 AliTPCCorrectionLookupTable.cxx:568
 AliTPCCorrectionLookupTable.cxx:569
 AliTPCCorrectionLookupTable.cxx:570
 AliTPCCorrectionLookupTable.cxx:571
 AliTPCCorrectionLookupTable.cxx:572
 AliTPCCorrectionLookupTable.cxx:573
 AliTPCCorrectionLookupTable.cxx:574
 AliTPCCorrectionLookupTable.cxx:575
 AliTPCCorrectionLookupTable.cxx:576
 AliTPCCorrectionLookupTable.cxx:577
 AliTPCCorrectionLookupTable.cxx:578
 AliTPCCorrectionLookupTable.cxx:579
 AliTPCCorrectionLookupTable.cxx:580
 AliTPCCorrectionLookupTable.cxx:581
 AliTPCCorrectionLookupTable.cxx:582
 AliTPCCorrectionLookupTable.cxx:583
 AliTPCCorrectionLookupTable.cxx:584
 AliTPCCorrectionLookupTable.cxx:585
 AliTPCCorrectionLookupTable.cxx:586
 AliTPCCorrectionLookupTable.cxx:587
 AliTPCCorrectionLookupTable.cxx:588
 AliTPCCorrectionLookupTable.cxx:589
 AliTPCCorrectionLookupTable.cxx:590
 AliTPCCorrectionLookupTable.cxx:591
 AliTPCCorrectionLookupTable.cxx:592
 AliTPCCorrectionLookupTable.cxx:593
 AliTPCCorrectionLookupTable.cxx:594
 AliTPCCorrectionLookupTable.cxx:595
 AliTPCCorrectionLookupTable.cxx:596
 AliTPCCorrectionLookupTable.cxx:597
 AliTPCCorrectionLookupTable.cxx:598
 AliTPCCorrectionLookupTable.cxx:599
 AliTPCCorrectionLookupTable.cxx:600
 AliTPCCorrectionLookupTable.cxx:601
 AliTPCCorrectionLookupTable.cxx:602
 AliTPCCorrectionLookupTable.cxx:603
 AliTPCCorrectionLookupTable.cxx:604
 AliTPCCorrectionLookupTable.cxx:605
 AliTPCCorrectionLookupTable.cxx:606
 AliTPCCorrectionLookupTable.cxx:607
 AliTPCCorrectionLookupTable.cxx:608
 AliTPCCorrectionLookupTable.cxx:609
 AliTPCCorrectionLookupTable.cxx:610
 AliTPCCorrectionLookupTable.cxx:611
 AliTPCCorrectionLookupTable.cxx:612
 AliTPCCorrectionLookupTable.cxx:613
 AliTPCCorrectionLookupTable.cxx:614
 AliTPCCorrectionLookupTable.cxx:615
 AliTPCCorrectionLookupTable.cxx:616
 AliTPCCorrectionLookupTable.cxx:617
 AliTPCCorrectionLookupTable.cxx:618
 AliTPCCorrectionLookupTable.cxx:619
 AliTPCCorrectionLookupTable.cxx:620
 AliTPCCorrectionLookupTable.cxx:621
 AliTPCCorrectionLookupTable.cxx:622
 AliTPCCorrectionLookupTable.cxx:623
 AliTPCCorrectionLookupTable.cxx:624
 AliTPCCorrectionLookupTable.cxx:625
 AliTPCCorrectionLookupTable.cxx:626
 AliTPCCorrectionLookupTable.cxx:627
 AliTPCCorrectionLookupTable.cxx:628
 AliTPCCorrectionLookupTable.cxx:629
 AliTPCCorrectionLookupTable.cxx:630
 AliTPCCorrectionLookupTable.cxx:631
 AliTPCCorrectionLookupTable.cxx:632
 AliTPCCorrectionLookupTable.cxx:633
 AliTPCCorrectionLookupTable.cxx:634
 AliTPCCorrectionLookupTable.cxx:635
 AliTPCCorrectionLookupTable.cxx:636
 AliTPCCorrectionLookupTable.cxx:637
 AliTPCCorrectionLookupTable.cxx:638
 AliTPCCorrectionLookupTable.cxx:639
 AliTPCCorrectionLookupTable.cxx:640
 AliTPCCorrectionLookupTable.cxx:641
 AliTPCCorrectionLookupTable.cxx:642
 AliTPCCorrectionLookupTable.cxx:643
 AliTPCCorrectionLookupTable.cxx:644
 AliTPCCorrectionLookupTable.cxx:645
 AliTPCCorrectionLookupTable.cxx:646
 AliTPCCorrectionLookupTable.cxx:647
 AliTPCCorrectionLookupTable.cxx:648
 AliTPCCorrectionLookupTable.cxx:649
 AliTPCCorrectionLookupTable.cxx:650
 AliTPCCorrectionLookupTable.cxx:651
 AliTPCCorrectionLookupTable.cxx:652
 AliTPCCorrectionLookupTable.cxx:653
 AliTPCCorrectionLookupTable.cxx:654
 AliTPCCorrectionLookupTable.cxx:655
 AliTPCCorrectionLookupTable.cxx:656
 AliTPCCorrectionLookupTable.cxx:657
 AliTPCCorrectionLookupTable.cxx:658
 AliTPCCorrectionLookupTable.cxx:659
 AliTPCCorrectionLookupTable.cxx:660
 AliTPCCorrectionLookupTable.cxx:661
 AliTPCCorrectionLookupTable.cxx:662
 AliTPCCorrectionLookupTable.cxx:663
 AliTPCCorrectionLookupTable.cxx:664
 AliTPCCorrectionLookupTable.cxx:665
 AliTPCCorrectionLookupTable.cxx:666
 AliTPCCorrectionLookupTable.cxx:667
 AliTPCCorrectionLookupTable.cxx:668
 AliTPCCorrectionLookupTable.cxx:669
 AliTPCCorrectionLookupTable.cxx:670
 AliTPCCorrectionLookupTable.cxx:671
 AliTPCCorrectionLookupTable.cxx:672
 AliTPCCorrectionLookupTable.cxx:673
 AliTPCCorrectionLookupTable.cxx:674
 AliTPCCorrectionLookupTable.cxx:675
 AliTPCCorrectionLookupTable.cxx:676
 AliTPCCorrectionLookupTable.cxx:677
 AliTPCCorrectionLookupTable.cxx:678
 AliTPCCorrectionLookupTable.cxx:679
 AliTPCCorrectionLookupTable.cxx:680
 AliTPCCorrectionLookupTable.cxx:681
 AliTPCCorrectionLookupTable.cxx:682
 AliTPCCorrectionLookupTable.cxx:683
 AliTPCCorrectionLookupTable.cxx:684
 AliTPCCorrectionLookupTable.cxx:685
 AliTPCCorrectionLookupTable.cxx:686
 AliTPCCorrectionLookupTable.cxx:687
 AliTPCCorrectionLookupTable.cxx:688
 AliTPCCorrectionLookupTable.cxx:689
 AliTPCCorrectionLookupTable.cxx:690
 AliTPCCorrectionLookupTable.cxx:691
 AliTPCCorrectionLookupTable.cxx:692
 AliTPCCorrectionLookupTable.cxx:693
 AliTPCCorrectionLookupTable.cxx:694
 AliTPCCorrectionLookupTable.cxx:695
 AliTPCCorrectionLookupTable.cxx:696
 AliTPCCorrectionLookupTable.cxx:697
 AliTPCCorrectionLookupTable.cxx:698
 AliTPCCorrectionLookupTable.cxx:699
 AliTPCCorrectionLookupTable.cxx:700
 AliTPCCorrectionLookupTable.cxx:701
 AliTPCCorrectionLookupTable.cxx:702
 AliTPCCorrectionLookupTable.cxx:703
 AliTPCCorrectionLookupTable.cxx:704
 AliTPCCorrectionLookupTable.cxx:705
 AliTPCCorrectionLookupTable.cxx:706
 AliTPCCorrectionLookupTable.cxx:707
 AliTPCCorrectionLookupTable.cxx:708
 AliTPCCorrectionLookupTable.cxx:709
 AliTPCCorrectionLookupTable.cxx:710
 AliTPCCorrectionLookupTable.cxx:711
 AliTPCCorrectionLookupTable.cxx:712
 AliTPCCorrectionLookupTable.cxx:713
 AliTPCCorrectionLookupTable.cxx:714
 AliTPCCorrectionLookupTable.cxx:715
 AliTPCCorrectionLookupTable.cxx:716
 AliTPCCorrectionLookupTable.cxx:717
 AliTPCCorrectionLookupTable.cxx:718
 AliTPCCorrectionLookupTable.cxx:719
 AliTPCCorrectionLookupTable.cxx:720
 AliTPCCorrectionLookupTable.cxx:721
 AliTPCCorrectionLookupTable.cxx:722
 AliTPCCorrectionLookupTable.cxx:723
 AliTPCCorrectionLookupTable.cxx:724
 AliTPCCorrectionLookupTable.cxx:725
 AliTPCCorrectionLookupTable.cxx:726
 AliTPCCorrectionLookupTable.cxx:727
 AliTPCCorrectionLookupTable.cxx:728
 AliTPCCorrectionLookupTable.cxx:729
 AliTPCCorrectionLookupTable.cxx:730
 AliTPCCorrectionLookupTable.cxx:731
 AliTPCCorrectionLookupTable.cxx:732
 AliTPCCorrectionLookupTable.cxx:733
 AliTPCCorrectionLookupTable.cxx:734
 AliTPCCorrectionLookupTable.cxx:735
 AliTPCCorrectionLookupTable.cxx:736
 AliTPCCorrectionLookupTable.cxx:737
 AliTPCCorrectionLookupTable.cxx:738
 AliTPCCorrectionLookupTable.cxx:739
 AliTPCCorrectionLookupTable.cxx:740
 AliTPCCorrectionLookupTable.cxx:741
 AliTPCCorrectionLookupTable.cxx:742
 AliTPCCorrectionLookupTable.cxx:743
 AliTPCCorrectionLookupTable.cxx:744
 AliTPCCorrectionLookupTable.cxx:745
 AliTPCCorrectionLookupTable.cxx:746
 AliTPCCorrectionLookupTable.cxx:747
 AliTPCCorrectionLookupTable.cxx:748
 AliTPCCorrectionLookupTable.cxx:749
 AliTPCCorrectionLookupTable.cxx:750
 AliTPCCorrectionLookupTable.cxx:751
 AliTPCCorrectionLookupTable.cxx:752
 AliTPCCorrectionLookupTable.cxx:753
 AliTPCCorrectionLookupTable.cxx:754
 AliTPCCorrectionLookupTable.cxx:755
 AliTPCCorrectionLookupTable.cxx:756
 AliTPCCorrectionLookupTable.cxx:757
 AliTPCCorrectionLookupTable.cxx:758
 AliTPCCorrectionLookupTable.cxx:759
 AliTPCCorrectionLookupTable.cxx:760
 AliTPCCorrectionLookupTable.cxx:761
 AliTPCCorrectionLookupTable.cxx:762
 AliTPCCorrectionLookupTable.cxx:763
 AliTPCCorrectionLookupTable.cxx:764
 AliTPCCorrectionLookupTable.cxx:765
 AliTPCCorrectionLookupTable.cxx:766
 AliTPCCorrectionLookupTable.cxx:767
 AliTPCCorrectionLookupTable.cxx:768
 AliTPCCorrectionLookupTable.cxx:769
 AliTPCCorrectionLookupTable.cxx:770
 AliTPCCorrectionLookupTable.cxx:771
 AliTPCCorrectionLookupTable.cxx:772
 AliTPCCorrectionLookupTable.cxx:773
 AliTPCCorrectionLookupTable.cxx:774
 AliTPCCorrectionLookupTable.cxx:775
 AliTPCCorrectionLookupTable.cxx:776
 AliTPCCorrectionLookupTable.cxx:777
 AliTPCCorrectionLookupTable.cxx:778
 AliTPCCorrectionLookupTable.cxx:779
 AliTPCCorrectionLookupTable.cxx:780
 AliTPCCorrectionLookupTable.cxx:781
 AliTPCCorrectionLookupTable.cxx:782
 AliTPCCorrectionLookupTable.cxx:783
 AliTPCCorrectionLookupTable.cxx:784
 AliTPCCorrectionLookupTable.cxx:785
 AliTPCCorrectionLookupTable.cxx:786
 AliTPCCorrectionLookupTable.cxx:787
 AliTPCCorrectionLookupTable.cxx:788
 AliTPCCorrectionLookupTable.cxx:789
 AliTPCCorrectionLookupTable.cxx:790
 AliTPCCorrectionLookupTable.cxx:791
 AliTPCCorrectionLookupTable.cxx:792
 AliTPCCorrectionLookupTable.cxx:793
 AliTPCCorrectionLookupTable.cxx:794
 AliTPCCorrectionLookupTable.cxx:795
 AliTPCCorrectionLookupTable.cxx:796
 AliTPCCorrectionLookupTable.cxx:797
 AliTPCCorrectionLookupTable.cxx:798
 AliTPCCorrectionLookupTable.cxx:799
 AliTPCCorrectionLookupTable.cxx:800
 AliTPCCorrectionLookupTable.cxx:801
 AliTPCCorrectionLookupTable.cxx:802
 AliTPCCorrectionLookupTable.cxx:803
 AliTPCCorrectionLookupTable.cxx:804
 AliTPCCorrectionLookupTable.cxx:805
 AliTPCCorrectionLookupTable.cxx:806
 AliTPCCorrectionLookupTable.cxx:807
 AliTPCCorrectionLookupTable.cxx:808
 AliTPCCorrectionLookupTable.cxx:809
 AliTPCCorrectionLookupTable.cxx:810
 AliTPCCorrectionLookupTable.cxx:811
 AliTPCCorrectionLookupTable.cxx:812
 AliTPCCorrectionLookupTable.cxx:813
 AliTPCCorrectionLookupTable.cxx:814
 AliTPCCorrectionLookupTable.cxx:815
 AliTPCCorrectionLookupTable.cxx:816
 AliTPCCorrectionLookupTable.cxx:817
 AliTPCCorrectionLookupTable.cxx:818
 AliTPCCorrectionLookupTable.cxx:819
 AliTPCCorrectionLookupTable.cxx:820
 AliTPCCorrectionLookupTable.cxx:821
 AliTPCCorrectionLookupTable.cxx:822
 AliTPCCorrectionLookupTable.cxx:823
 AliTPCCorrectionLookupTable.cxx:824
 AliTPCCorrectionLookupTable.cxx:825
 AliTPCCorrectionLookupTable.cxx:826
 AliTPCCorrectionLookupTable.cxx:827
 AliTPCCorrectionLookupTable.cxx:828
 AliTPCCorrectionLookupTable.cxx:829
 AliTPCCorrectionLookupTable.cxx:830
 AliTPCCorrectionLookupTable.cxx:831
 AliTPCCorrectionLookupTable.cxx:832
 AliTPCCorrectionLookupTable.cxx:833
 AliTPCCorrectionLookupTable.cxx:834
 AliTPCCorrectionLookupTable.cxx:835
 AliTPCCorrectionLookupTable.cxx:836
 AliTPCCorrectionLookupTable.cxx:837
 AliTPCCorrectionLookupTable.cxx:838
 AliTPCCorrectionLookupTable.cxx:839
 AliTPCCorrectionLookupTable.cxx:840
 AliTPCCorrectionLookupTable.cxx:841
 AliTPCCorrectionLookupTable.cxx:842
 AliTPCCorrectionLookupTable.cxx:843