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.                  *
 **************************************************************************/

// _________________________________________________________________
//
// Begin_Html
//   <h2>  AliTPCCorrection class   </h2>    
//  
//   The AliTPCCorrection class provides a general framework to deal with space point distortions. 
//   An correction class which inherits from here is for example AliTPCExBBShape or AliTPCExBTwist. <br> 
//   General virtual functions are (for example) CorrectPoint(x,roc) where x is the vector of initial 
//   positions in cartesian coordinates and roc represents the read-out chamber number according to 
//   the offline numbering convention. The vector x is overwritten with the corrected coordinates. <br> 
//   An alternative usage would be CorrectPoint(x,roc,dx), which leaves the vector x untouched, but 
//   returns the distortions via the vector dx. <br>
//   This class is normally used via the general class AliTPCComposedCorrection.   
//   <p>
//   Furthermore, the class contains basic geometrical descriptions like field cage radii 
//   (fgkIFCRadius, fgkOFCRadius) and length (fgkTPCZ0) plus the voltages. Also, the definitions 
//   of size and widths of the fulcrums building the grid of the final look-up table, which is 
//   then interpolated, is defined in kNX and fgkXList).
//   <p>
//   All physics-model classes below are derived from this class in order to not duplicate code 
//   and to allow a uniform treatment of all physics models.
//   <p>
//   <h3> Poisson solver </h3>    
//   A numerical solver of the Poisson equation (relaxation technique) is implemented for 2-dimensional 
//   geometries (r,z) as well as for 3-dimensional problems (r,$\phi$,z). The corresponding function 
//   names are PoissonRelaxation?D. The relevant function arguments are the arrays of the boundary and 
//   initial conditions (ArrayofArrayV, ArrayofChargeDensities) as well as the grid granularity which 
//   is used during the calculation. These inputs can be chosen according to the needs of the physical 
//   effect which is supposed to be simulated. In the 3D version, different symmetry conditions can be set
//   in order to reduce the calculation time (used in AliTPCFCVoltError3D).
//   <p>
//   <h3> Unified plotting functionality  </h3>    
//   Generic plot functions were implemented. They return a histogram pointer in the chosen plane of 
//   the TPC drift volume with a selectable grid granularity and the magnitude of the correction vector.
//   For example, the function CreateHistoDZinXY(z,nx,ny) returns a 2-dimensional histogram which contains 
//   the longitudinal corrections $dz$ in the (x,y)-plane at the given z position with the granularity of 
//   nx and ny. The magnitude of the corrections is defined by the class from which this function is called.
//   In the same manner, standard plots for the (r,$\phi$)-plane and for the other corrections like $dr$ and $rd\phi$ are available  
//   <p>                                                                      
//   Note: This class is normally used via the class AliTPCComposedCorrection
// End_Html
//
// Begin_Macro(source)
//   {
//   gROOT->SetStyle("Plain"); gStyle->SetPalette(1);
//   TCanvas *c2 = new TCanvas("cAliTPCCorrection","cAliTPCCorrection",700,1050);  c2->Divide(2,3);
//   AliTPCROCVoltError3D roc; // EXAMPLE PLOTS - SEE BELOW
//   roc.SetROCDataFileName("$ALICE_ROOT/TPC/Calib/maps/TPCROCdzSurvey.root");
//   roc.SetOmegaTauT1T2(0,1,1); // B=0
//   Float_t z0 = 1; // at +1 cm -> A side
//   c2->cd(1); roc.CreateHistoDRinXY(1.,300,300)->Draw("cont4z"); 
//   c2->cd(3);roc.CreateHistoDRPhiinXY(1.,300,300)->Draw("cont4z"); 
//   c2->cd(5);roc.CreateHistoDZinXY(1.,300,300)->Draw("cont4z"); 
//   Float_t phi0=0.5;
//   c2->cd(2);roc.CreateHistoDRinZR(phi0)->Draw("surf2"); 
//   c2->cd(4);roc.CreateHistoDRPhiinZR(phi0)->Draw("surf2"); 
//   c2->cd(6);roc.CreateHistoDZinZR(phi0)->Draw("surf2"); 
//   return c2;
//   } 
// End_Macro
//
// Begin_Html
//   <p>
//   Date: 27/04/2010  <br>
//   Authors: Magnus Mager, Stefan Rossegger, Jim Thomas                     
// End_Html 
// _________________________________________________________________


#include "Riostream.h"

#include <TH2F.h>
#include <TMath.h>
#include <TROOT.h>
#include <TTreeStream.h>
#include <TTree.h>
#include <TFile.h>
#include <TTimeStamp.h>
#include <AliCDBStorage.h>
#include <AliCDBId.h>
#include <AliCDBMetaData.h>
#include "TVectorD.h"
#include "AliTPCParamSR.h"

#include "AliTPCCorrection.h"
#include "AliLog.h"

#include "AliExternalTrackParam.h"
#include "AliTrackPointArray.h"
#include "TDatabasePDG.h"
#include "AliTrackerBase.h"
#include "AliTPCROC.h"
#include "THnSparse.h"

#include "AliTPCLaserTrack.h"
#include "AliESDVertex.h"
#include "AliVertexerTracks.h"
#include "TDatabasePDG.h"
#include "TF1.h"
#include "TRandom.h"

#include "TDatabasePDG.h"

#include "AliTPCTransform.h"
#include "AliTPCcalibDB.h"
#include "AliTPCExB.h"

#include "AliTPCRecoParam.h"
#include "TLinearFitter.h"
#include <AliSysInfo.h>

ClassImp(AliTPCCorrection)

 
TObjArray *AliTPCCorrection::fgVisualCorrection=0;
// instance of correction for visualization


// FIXME: the following values should come from the database
const Double_t AliTPCCorrection::fgkTPCZ0    = 249.7;     // nominal gating grid position 
const Double_t AliTPCCorrection::fgkIFCRadius=  83.5;     // radius which renders the "18 rod manifold" best -> compare calc. of Jim Thomas
// compare gkIFCRadius=  83.05: Mean Radius of the Inner Field Cage ( 82.43 min,  83.70 max) (cm)
const Double_t AliTPCCorrection::fgkOFCRadius= 254.5;     // Mean Radius of the Outer Field Cage (252.55 min, 256.45 max) (cm)
const Double_t AliTPCCorrection::fgkZOffSet  =   0.2;     // Offset from CE: calculate all distortions closer to CE as if at this point
const Double_t AliTPCCorrection::fgkCathodeV = -100000.0; // Cathode Voltage (volts)
const Double_t AliTPCCorrection::fgkGG       =     -70.0; // Gating Grid voltage (volts)

const Double_t  AliTPCCorrection::fgkdvdE = 0.0024; // [cm/V] drift velocity dependency on the E field (from Magboltz for NeCO2N2 at standard environment)

const Double_t AliTPCCorrection::fgkEM = -1.602176487e-19/9.10938215e-31; // charge/mass in [C/kg]
const Double_t AliTPCCorrection::fgke0 = 8.854187817e-12;                 // vacuum permittivity [A·s/(V·m)]
 

AliTPCCorrection::AliTPCCorrection() 
  : TNamed("correction_unity","unity"),fILow(0),fJLow(0),fKLow(0), fT1(1), fT2(1), fIsLocal(kFALSE)
{
  //
  // default constructor
  //
  if (!fgVisualCorrection) fgVisualCorrection= new TObjArray;

  InitLookUpfulcrums();

}

AliTPCCorrection::AliTPCCorrection(const char *name,const char *title)
  : TNamed(name,title),fILow(0),fJLow(0),fKLow(0), fT1(1), fT2(1), fIsLocal(kFALSE)
{
  //
  // default constructor, that set the name and title
  //
  if (!fgVisualCorrection) fgVisualCorrection= new TObjArray;

  InitLookUpfulcrums();

}

AliTPCCorrection::~AliTPCCorrection() {
  // 
  // virtual destructor
  //
}

Bool_t AliTPCCorrection::AddCorrectionCompact(AliTPCCorrection* corr, Double_t weight){
  //
  // Add correction  and make them compact
  // Assumptions:
  //  - origin of distortion/correction are additive
  //  - only correction ot the same type supported ()
  if (corr==NULL) {
    AliError("Zerro pointer - correction");
    return kFALSE;
  }  
  AliError(TString::Format("Correction %s not implementend",IsA()->GetName()).Data());
  return kFALSE;
}


void AliTPCCorrection::CorrectPoint(Float_t x[], Short_t roc) {
  //
  // Corrects the initial coordinates x (cartesian coordinates)
  // according to the given effect (inherited classes)
  // roc represents the TPC read out chamber (offline numbering convention)
  //
  Float_t dx[3];
  GetCorrection(x,roc,dx);
  for (Int_t j=0;j<3;++j) x[j]+=dx[j];
}

void AliTPCCorrection::CorrectPoint(const Float_t x[], Short_t roc,Float_t xp[]) {
  //
  // Corrects the initial coordinates x (cartesian coordinates) and stores the new 
  // (distorted) coordinates in xp. The distortion is set according to the given effect (inherited classes)
  // roc represents the TPC read out chamber (offline numbering convention)
  //
  Float_t dx[3];
  GetCorrection(x,roc,dx);
  for (Int_t j=0;j<3;++j) xp[j]=x[j]+dx[j];
}

void AliTPCCorrection::DistortPoint(Float_t x[], Short_t roc) {
  //
  // Distorts the initial coordinates x (cartesian coordinates)
  // according to the given effect (inherited classes)
  // roc represents the TPC read out chamber (offline numbering convention)
  //
  Float_t dx[3];
  GetDistortion(x,roc,dx);
  for (Int_t j=0;j<3;++j) x[j]+=dx[j];
}

void AliTPCCorrection::DistortPointLocal(Float_t x[], Short_t roc) {
  //
  // Distorts the initial coordinates x (cartesian coordinates)
  // according to the given effect (inherited classes)
  // roc represents the TPC read out chamber (offline numbering convention)
  //
  Float_t gxyz[3]={0,0,0};
  Double_t alpha = TMath::TwoPi()*(roc%18+0.5)/18;
  Double_t ca=TMath::Cos(alpha), sa= TMath::Sin(alpha);
  gxyz[0]=  ca*x[0]+sa*x[1];
  gxyz[1]= -sa*x[0]+ca*x[1];
  gxyz[2]= x[2];
  DistortPoint(gxyz,roc);
  x[0]=  ca*gxyz[0]-sa*gxyz[1];
  x[1]= +sa*gxyz[0]+ca*gxyz[1];
  x[2]= gxyz[2];
}
void AliTPCCorrection::CorrectPointLocal(Float_t x[], Short_t roc) {
  //
  // Distorts the initial coordinates x (cartesian coordinates)
  // according to the given effect (inherited classes)
  // roc represents the TPC read out chamber (offline numbering convention)
  //
  Float_t gxyz[3]={0,0,0};
  Double_t alpha = TMath::TwoPi()*(roc%18+0.5)/18;
  Double_t ca=TMath::Cos(alpha), sa= TMath::Sin(alpha);
  gxyz[0]=  ca*x[0]+sa*x[1];
  gxyz[1]= -sa*x[0]+ca*x[1];
  gxyz[2]= x[2];
  CorrectPoint(gxyz,roc);
  x[0]=  ca*gxyz[0]-sa*gxyz[1];
  x[1]=  sa*gxyz[0]+ca*gxyz[1];
  x[2]=  gxyz[2];
}

void AliTPCCorrection::DistortPoint(const Float_t x[], Short_t roc,Float_t xp[]) {
  //
  // Distorts the initial coordinates x (cartesian coordinates) and stores the new 
  // (distorted) coordinates in xp. The distortion is set according to the given effect (inherited classes)
  // roc represents the TPC read out chamber (offline numbering convention)
  //
  Float_t dx[3];
  GetDistortion(x,roc,dx);
  for (Int_t j=0;j<3;++j) xp[j]=x[j]+dx[j];
}

void AliTPCCorrection::GetCorrection(const Float_t /*x*/[], Short_t /*roc*/,Float_t dx[]) {
  //
  // This function delivers the correction values dx in respect to the inital coordinates x
  // roc represents the TPC read out chamber (offline numbering convention)
  // Note: The dx is overwritten by the inherited effectice class ...
  //
  for (Int_t j=0;j<3;++j) { dx[j]=0.; }
}

void AliTPCCorrection::GetDistortion(const Float_t x[], Short_t roc,Float_t dx[]) {
  //
  // This function delivers the distortion values dx in respect to the inital coordinates x
  // roc represents the TPC read out chamber (offline numbering convention)
  //
  GetCorrection(x,roc,dx);
  for (Int_t j=0;j<3;++j) dx[j]=-dx[j];
}

void AliTPCCorrection::GetCorrectionDz(const Float_t x[], Short_t roc,Float_t dx[], Float_t delta) {
  // author: marian.ivanov@cern.ch
  //
  // In this (virtual)function calculates the dx'/dz,  dy'/dz  and dz'/dz at given point (x,y,z)
  // Generic implementation. Better precision can be acchieved knowing the internal structure
  // of underlying trasnformation. Derived classes can reimplement it.
  // To calculate correction is fitted in small neighberhood:
  // (x+-delta,y+-delta,z+-delta) where delta is an argument
  //
  // Input parameters:
  //   x[]   - space point corrdinate
  //   roc   - readout chamber identifier (important e.g to do not miss the side of detector) 
  //   delta - define the size of neighberhood
  // Output parameter:
  //   dx[] - array {dx'/dz,  dy'/dz ,  dz'/dz }

  //   if (fIsLocal){  //standard implemenation provides the correction/distortion integrated over full drift length
  //    
  //
  //     GetCorrection(xyz,roc,dxyz);  
  //   }
  static TLinearFitter fitx(2,"pol1"); 
  static TLinearFitter fity(2,"pol1");
  static TLinearFitter fitz(2,"pol1");
  fitx.ClearPoints();
  fity.ClearPoints();
  fitz.ClearPoints();
  Int_t zmin=-2;
  Int_t zmax=0;
  //adjust limits around CE to stay on one side
  if ((roc%36)<18) {
    //A-Side
    if ((x[2]+zmin*delta)<0){
      zmin=0;
      zmax=2;
      if ((x[2]-delta)>0){
        zmin=-1;
        zmax=1;
      }
    }
  } else {
    //C-Side
    zmin=0;
    zmax=2;
    if ((x[2]+zmax*delta)>0){
      zmin=-2;
      zmax=0;
      if ((x[2]+delta)<0){
        zmin=-1;
        zmax=1;
      }
    }
  }

  for (Int_t xdelta=-1; xdelta<=1; xdelta++)
    for (Int_t ydelta=-1; ydelta<=1; ydelta++){
//       for (Int_t zdelta=-1; zdelta<=1; zdelta++){
//   for (Int_t xdelta=-2; xdelta<=0; xdelta++)
//     for (Int_t ydelta=-2; ydelta<=0; ydelta++){
      for (Int_t zdelta=zmin; zdelta<=zmax; zdelta++){
        //TODO: what happens if x[2] is on the A-Side, but x[2]+zdelta*delta
        //      will be on the C-Side?
	Float_t xyz[3]={x[0]+xdelta*delta, x[1]+ydelta*delta, x[2]+zdelta*delta};
	Float_t dxyz[3];
	GetCorrection(xyz,roc,dxyz);
	Double_t adelta=zdelta*delta;
	fitx.AddPoint(&adelta, dxyz[0]);
	fity.AddPoint(&adelta, dxyz[1]);
 	fitz.AddPoint(&adelta, dxyz[2]);
      }
    }
  fitx.Eval();
  fity.Eval();
  fitz.Eval();
  dx[0] = fitx.GetParameter(1);
  dx[1] = fity.GetParameter(1);
  dx[2] = fitz.GetParameter(1);
}

void AliTPCCorrection::GetDistortionDz(const Float_t x[], Short_t roc,Float_t dx[], Float_t delta) {
  // author: marian.ivanov@cern.ch
  //
  // In this (virtual)function calculates the dx'/dz,  dy'/dz  and dz'/dz at given point (x,y,z)
  // Generic implementation. Better precision can be acchieved knowing the internal structure
  // of underlying trasnformation. Derived classes can reimplement it.
  // To calculate distortion is fitted in small neighberhood:
  // (x+-delta,y+-delta,z+-delta) where delta is an argument
  //
  // Input parameters:
  //   x[]   - space point corrdinate
  //   roc   - readout chamber identifier (important e.g to do not miss the side of detector)
  //   delta - define the size of neighberhood
  // Output parameter:
  //   dx[] - array {dx'/dz,  dy'/dz ,  dz'/dz }
  
  static TLinearFitter fitx(2,"pol1");
  static TLinearFitter fity(2,"pol1");
  static TLinearFitter fitz(2,"pol1");
  fitx.ClearPoints();
  fity.ClearPoints();
  fitz.ClearPoints();

  Int_t zmin=-1;
  Int_t zmax=1;
  //adjust limits around CE to stay on one side
  if ((roc%36)<18) {
    //A-Side
    if ((x[2]+zmin*delta)<0){
      zmin=0;
      zmax=2;
    }
  } else {
    //C-Side
    if ((x[2]+zmax*delta)>0){
      zmin=-2;
      zmax=0;
    }
  }
  
  //TODO: in principle one shuld check that x[2]+zdelta*delta does not get 'out of' bounds,
  //      so close to the CE it doesn't change the sign, since then the corrections will be wrong ...
  for (Int_t xdelta=-1; xdelta<=1; xdelta++)
    for (Int_t ydelta=-1; ydelta<=1; ydelta++){
      for (Int_t zdelta=zmin; zdelta<=zmax; zdelta++){
        //TODO: what happens if x[2] is on the A-Side, but x[2]+zdelta*delta
        //      will be on the C-Side?
        //TODO: For the C-Side, does this have the correct sign?
        Float_t xyz[3]={x[0]+xdelta*delta, x[1]+ydelta*delta, x[2]+zdelta*delta};
        Float_t dxyz[3];
        GetDistortion(xyz,roc,dxyz);
        Double_t adelta=zdelta*delta;
        fitx.AddPoint(&adelta, dxyz[0]);
        fity.AddPoint(&adelta, dxyz[1]);
        fitz.AddPoint(&adelta, dxyz[2]);
      }
    }
    fitx.Eval();
    fity.Eval();
    fitz.Eval();
    dx[0] = fitx.GetParameter(1);
    dx[1] = fity.GetParameter(1);
    dx[2] = fitz.GetParameter(1);
}

void AliTPCCorrection::GetCorrectionIntegralDz(const Float_t x[], Short_t roc,Float_t dx[], Float_t delta){
  //
  // Integrate 3D distortion along drift lines starting from the roc plane
  //   to the expected z position of the point, this assumes that dz is small
  //   and the error propagating to z' instead of the correct z is negligible
  // To define the drift lines virtual function  AliTPCCorrection::GetCorrectionDz is used
  //
  // Input parameters:
  //   x[]   - space point corrdinate
  //   roc   - readout chamber identifier (important e.g to do not miss the side of detector) 
  //   delta - define the size of neighberhood
  // Output parameter:
  //   dx[] - array { integral(dx'/dz),  integral(dy'/dz) ,  integral(dz'/dz) }

  Float_t zroc= ((roc%36)<18) ? fgkTPCZ0:-fgkTPCZ0;
  Double_t zdrift = TMath::Abs(x[2]-zroc);
  Int_t    nsteps = Int_t(zdrift/delta)+1;
  //
  //
  Float_t xyz[3]={x[0],x[1],zroc};
  Float_t dxyz[3]={x[0],x[1],x[2]};
  Short_t side=(roc/18)%2;
  Float_t sign=1-2*side;
  Double_t sumdz=0;
  for (Int_t i=0;i<nsteps; i++){
    //propagate backwards, therefore opposite signs
    Float_t deltaZ=delta*(-sign);
//     if (xyz[2]+deltaZ>fgkTPCZ0) deltaZ=TMath::Abs(xyz[2]-fgkTPCZ0);
//     if (xyz[2]-deltaZ<-fgkTPCZ0) deltaZ=TMath::Abs(xyz[2]-fgkTPCZ0);
    // protect again integrating through the CE
    if (side==0){
      if (xyz[2]+deltaZ<0) deltaZ=-xyz[2]+1e-20;
    } else {
      if (xyz[2]+deltaZ>0) deltaZ=xyz[2]-+1e-20;
    }
    // since at larger drift (smaller z) the corrections are larger (absolute, but negative)
    //  the slopes will be positive.
    // but since we chose deltaZ opposite sign the singn of the corretion should be fine
    
    Float_t xyz2[3]={xyz[0],xyz[1],static_cast<Float_t>(xyz[2]+deltaZ/2.)};
    GetCorrectionDz(xyz2,roc,dxyz,delta/2.);
    xyz[0]+=deltaZ*dxyz[0];
    xyz[1]+=deltaZ*dxyz[1];
    xyz[2]+=deltaZ;           //
    sumdz+=deltaZ*dxyz[2];
  }
  //
  dx[0]=xyz[0]-x[0];
  dx[1]=xyz[1]-x[1];
  dx[2]=      sumdz; //TODO: is sumdz correct?
}

void AliTPCCorrection::GetDistortionIntegralDz(const Float_t x[], Short_t roc,Float_t dx[], Float_t delta){
  //
  // Integrate 3D distortion along drift lines
  // To define the drift lines virtual function  AliTPCCorrection::GetCorrectionDz is used
  //
  // Input parameters:
  //   x[]   - space point corrdinate
  //   roc   - readout chamber identifier (important e.g to do not miss the side of detector)
  //   delta - define the size of neighberhood
  // Output parameter:
  //   dx[] - array { integral(dx'/dz),  integral(dy'/dz) ,  integral(dz'/dz) }
  
  Float_t zroc= ((roc%36)<18) ? fgkTPCZ0:-fgkTPCZ0;
  Double_t zdrift = TMath::Abs(x[2]-zroc);
  Int_t    nsteps = Int_t(zdrift/delta)+1;
  //
  //
  Float_t xyz[3]={x[0],x[1],x[2]};
  Float_t dxyz[3]={x[0],x[1],x[2]};
  Float_t sign=((roc%36)<18) ? 1.:-1.;
  Double_t sumdz=0;
  for (Int_t i=0;i<nsteps; i++){
    Float_t deltaZ=delta;
    if (xyz[2]+deltaZ>fgkTPCZ0) deltaZ=TMath::Abs(xyz[2]-zroc);
    if (xyz[2]-deltaZ<-fgkTPCZ0) deltaZ=TMath::Abs(xyz[2]-zroc);
    // since at larger drift (smaller z) the distortions are larger
    //  the slopes will be negative.
    // and since we are moving towards the read-out plane the deltaZ for
    //   weighting the dK/dz should have the opposite sign
    deltaZ*=sign;
    Float_t xyz2[3]={xyz[0],xyz[1],static_cast<Float_t>(xyz[2]+deltaZ/2.)};
    GetDistortionDz(xyz2,roc,dxyz,delta/2.);
    xyz[0]+=-deltaZ*dxyz[0];
    xyz[1]+=-deltaZ*dxyz[1];
    xyz[2]+=deltaZ;           //TODO: Should this also be corrected for the dxyz[2]
    sumdz+=-deltaZ*dxyz[2];
  }
  //
  dx[0]=xyz[0]-x[0];
  dx[1]=xyz[1]-x[1];
  dx[2]=      sumdz;  //TODO: is sumdz correct?
  
}


void AliTPCCorrection::Init() {
  //
  // Initialization funtion (not used at the moment)
  //
}

void AliTPCCorrection::Update(const TTimeStamp &/*timeStamp*/) {
  //
  // Update function 
  //
}

void AliTPCCorrection::Print(Option_t* /*option*/) const {
  //
  // Print function to check which correction classes are used 
  // option=="d" prints details regarding the setted magnitude 
  // option=="a" prints the C0 and C1 coefficents for calibration purposes
  //
  printf("TPC spacepoint correction: \"%s\"\n",GetTitle());
}

void AliTPCCorrection:: SetOmegaTauT1T2(Float_t /*omegaTau*/,Float_t t1,Float_t t2) {
  //
  // Virtual funtion to pass the wt values (might become event dependent) to the inherited classes
  // t1 and t2 represent the "effective omegaTau" corrections and were measured in a dedicated
  // calibration run
  //
  fT1=t1;
  fT2=t2;
  //SetOmegaTauT1T2(omegaTau, t1, t2);
}

TH2F* AliTPCCorrection::CreateHistoDRinXY(Float_t z,Int_t nx,Int_t ny) {
  //
  // Simple plot functionality.
  // Returns a 2d hisogram which represents the corrections in radial direction (dr)
  // in respect to position z within the XY plane.
  // The histogramm has nx times ny entries. 
  //
  AliTPCParam* tpcparam = new AliTPCParamSR;

  TH2F *h=CreateTH2F("dr_xy",GetTitle(),"x [cm]","y [cm]","dr [cm]",
		     nx,-250.,250.,ny,-250.,250.);
  Float_t x[3],dx[3];
  x[2]=z;
  Int_t roc=z>0.?0:18; // FIXME
  for (Int_t iy=1;iy<=ny;++iy) {
    x[1]=h->GetYaxis()->GetBinCenter(iy);
    for (Int_t ix=1;ix<=nx;++ix) {
      x[0]=h->GetXaxis()->GetBinCenter(ix);
      GetCorrection(x,roc,dx);
      Float_t r0=TMath::Sqrt((x[0]      )*(x[0]      )+(x[1]      )*(x[1]      ));
      if (tpcparam->GetPadRowRadii(0,0)<=r0 && r0<=tpcparam->GetPadRowRadii(36,95)) {
	Float_t r1=TMath::Sqrt((x[0]+dx[0])*(x[0]+dx[0])+(x[1]+dx[1])*(x[1]+dx[1]));
	h->SetBinContent(ix,iy,r1-r0);
      }
      else
	h->SetBinContent(ix,iy,0.);
    }
  }
  delete tpcparam;
  return h;
}

TH2F* AliTPCCorrection::CreateHistoDRPhiinXY(Float_t z,Int_t nx,Int_t ny) {
  //
  // Simple plot functionality.
  // Returns a 2d hisogram which represents the corrections in rphi direction (drphi) 
  // in respect to position z within the XY plane.
  // The histogramm has nx times ny entries. 
  //

  AliTPCParam* tpcparam = new AliTPCParamSR;

  TH2F *h=CreateTH2F("drphi_xy",GetTitle(),"x [cm]","y [cm]","drphi [cm]",
		     nx,-250.,250.,ny,-250.,250.);
  Float_t x[3],dx[3];
  x[2]=z;
  Int_t roc=z>0.?0:18; // FIXME
  for (Int_t iy=1;iy<=ny;++iy) {
    x[1]=h->GetYaxis()->GetBinCenter(iy);
    for (Int_t ix=1;ix<=nx;++ix) {
      x[0]=h->GetXaxis()->GetBinCenter(ix);
      GetCorrection(x,roc,dx);
      Float_t r0=TMath::Sqrt((x[0]      )*(x[0]      )+(x[1]      )*(x[1]      ));
      if (tpcparam->GetPadRowRadii(0,0)<=r0 && r0<=tpcparam->GetPadRowRadii(36,95)) {
 	Float_t phi0=TMath::ATan2(x[1]      ,x[0]      );
	Float_t phi1=TMath::ATan2(x[1]+dx[1],x[0]+dx[0]);

	Float_t dphi=phi1-phi0;
	if (dphi<TMath::Pi()) dphi+=TMath::TwoPi();
	if (dphi>TMath::Pi()) dphi-=TMath::TwoPi();
      
	h->SetBinContent(ix,iy,r0*dphi);
      }
      else
	h->SetBinContent(ix,iy,0.);
    }
  }
  delete tpcparam;
  return h;
}

TH2F* AliTPCCorrection::CreateHistoDZinXY(Float_t z,Int_t nx,Int_t ny) {
  //
  // Simple plot functionality.
  // Returns a 2d hisogram which represents the corrections in longitudinal direction (dz)
  // in respect to position z within the XY plane.
  // The histogramm has nx times ny entries. 
  //

  AliTPCParam* tpcparam = new AliTPCParamSR;
 
  TH2F *h=CreateTH2F("dz_xy",GetTitle(),"x [cm]","y [cm]","dz [cm]",
		     nx,-250.,250.,ny,-250.,250.);
  Float_t x[3],dx[3];
  x[2]=z;
  Int_t roc=z>0.?0:18; // FIXME
  for (Int_t iy=1;iy<=ny;++iy) {
    x[1]=h->GetYaxis()->GetBinCenter(iy);
    for (Int_t ix=1;ix<=nx;++ix) {
      x[0]=h->GetXaxis()->GetBinCenter(ix);
      GetCorrection(x,roc,dx);
      Float_t r0=TMath::Sqrt((x[0]      )*(x[0]      )+(x[1]      )*(x[1]      ));
      if (tpcparam->GetPadRowRadii(0,0)<=r0 && r0<=tpcparam->GetPadRowRadii(36,95)) {
	h->SetBinContent(ix,iy,dx[2]);
      }
      else
	h->SetBinContent(ix,iy,0.);
    }
  }
  delete tpcparam;
  return h;
}

TH2F* AliTPCCorrection::CreateHistoDRinZR(Float_t phi,Int_t nz,Int_t nr) {
  //
  // Simple plot functionality.
  // Returns a 2d hisogram which represents the corrections in r direction (dr) 
  // in respect to angle phi within the ZR plane.
  // The histogramm has nx times ny entries. 
  //
  TH2F *h=CreateTH2F("dr_zr",GetTitle(),"z [cm]","r [cm]","dr [cm]",
		     nz,-250.,250.,nr,85.,250.);
  Float_t x[3],dx[3];
  for (Int_t ir=1;ir<=nr;++ir) {
    Float_t radius=h->GetYaxis()->GetBinCenter(ir);
    x[0]=radius*TMath::Cos(phi);
    x[1]=radius*TMath::Sin(phi);
    for (Int_t iz=1;iz<=nz;++iz) {
      x[2]=h->GetXaxis()->GetBinCenter(iz);
      Int_t roc=x[2]>0.?0:18; // FIXME
      GetCorrection(x,roc,dx);
      Float_t r0=TMath::Sqrt((x[0]      )*(x[0]      )+(x[1]      )*(x[1]      ));
      Float_t r1=TMath::Sqrt((x[0]+dx[0])*(x[0]+dx[0])+(x[1]+dx[1])*(x[1]+dx[1]));
      h->SetBinContent(iz,ir,r1-r0);
    }
  }
  return h;

}

TH2F* AliTPCCorrection::CreateHistoDRPhiinZR(Float_t phi,Int_t nz,Int_t nr) {
  //
  // Simple plot functionality.
  // Returns a 2d hisogram which represents the corrections in rphi direction (drphi) 
  // in respect to angle phi within the ZR plane.
  // The histogramm has nx times ny entries. 
  //
  TH2F *h=CreateTH2F("drphi_zr",GetTitle(),"z [cm]","r [cm]","drphi [cm]",
		     nz,-250.,250.,nr,85.,250.);
  Float_t x[3],dx[3];
  for (Int_t iz=1;iz<=nz;++iz) {
    x[2]=h->GetXaxis()->GetBinCenter(iz);
    Int_t roc=x[2]>0.?0:18; // FIXME
    for (Int_t ir=1;ir<=nr;++ir) {
      Float_t radius=h->GetYaxis()->GetBinCenter(ir);
      x[0]=radius*TMath::Cos(phi);
      x[1]=radius*TMath::Sin(phi);
      GetCorrection(x,roc,dx);
      Float_t r0=TMath::Sqrt((x[0]      )*(x[0]      )+(x[1]      )*(x[1]      ));
      Float_t phi0=TMath::ATan2(x[1]      ,x[0]      );
      Float_t phi1=TMath::ATan2(x[1]+dx[1],x[0]+dx[0]);
      
      Float_t dphi=phi1-phi0;
      if (dphi<TMath::Pi()) dphi+=TMath::TwoPi();
      if (dphi>TMath::Pi()) dphi-=TMath::TwoPi();
      
      h->SetBinContent(iz,ir,r0*dphi);
    }
  }
  return h;
}

TH2F* AliTPCCorrection::CreateHistoDZinZR(Float_t phi,Int_t nz,Int_t nr) {
  //
  // Simple plot functionality.
  // Returns a 2d hisogram which represents the corrections in longitudinal direction (dz) 
  // in respect to angle phi within the ZR plane.
  // The histogramm has nx times ny entries. 
  //
  TH2F *h=CreateTH2F("dz_zr",GetTitle(),"z [cm]","r [cm]","dz [cm]",
		     nz,-250.,250.,nr,85.,250.);
  Float_t x[3],dx[3];
  for (Int_t ir=1;ir<=nr;++ir) {
    Float_t radius=h->GetYaxis()->GetBinCenter(ir);
    x[0]=radius*TMath::Cos(phi);
    x[1]=radius*TMath::Sin(phi);
    for (Int_t iz=1;iz<=nz;++iz) {
      x[2]=h->GetXaxis()->GetBinCenter(iz);
      Int_t roc=x[2]>0.?0:18; // FIXME
      GetCorrection(x,roc,dx);
      h->SetBinContent(iz,ir,dx[2]);
    }
  }
  return h;

}


TH2F* AliTPCCorrection::CreateTH2F(const char *name,const char *title,
				   const char *xlabel,const char *ylabel,const char *zlabel,
				  Int_t nbinsx,Double_t xlow,Double_t xup,
				  Int_t nbinsy,Double_t ylow,Double_t yup) {
  //
  // Helper function to create a 2d histogramm of given size
  //
  
  TString hname=name;
  Int_t i=0;
  if (gDirectory) {
    while (gDirectory->FindObject(hname.Data())) {
      hname =name;
      hname+="_";
      hname+=i;
      ++i;
    }
  }
  TH2F *h=new TH2F(hname.Data(),title,
		   nbinsx,xlow,xup,
		   nbinsy,ylow,yup);
  h->GetXaxis()->SetTitle(xlabel);
  h->GetYaxis()->SetTitle(ylabel);
  h->GetZaxis()->SetTitle(zlabel);
  h->SetStats(0);
  return h;
}

// Simple Interpolation functions: e.g. with bi(tri)cubic interpolations (not yet in TH2 and TH3)

void AliTPCCorrection::Interpolate2DEdistortion( Int_t order, Double_t r, Double_t z, 
						  const Double_t er[kNZ][kNR], Double_t &erValue ) {
  //
  // Interpolate table - 2D interpolation
  //
  Double_t saveEr[5] = {0,0,0,0,0};

  Search( kNZ,   fgkZList,  z,   fJLow   ) ;
  Search( kNR,   fgkRList,  r,   fKLow   ) ;
  if ( fJLow < 0 ) fJLow = 0 ;   // check if out of range
  if ( fKLow < 0 ) fKLow = 0 ;
  if ( fJLow + order  >=    kNZ - 1 ) fJLow =   kNZ - 1 - order ;
  if ( fKLow + order  >=    kNR - 1 ) fKLow =   kNR - 1 - order ;

  for ( Int_t j = fJLow ; j < fJLow + order + 1 ; j++ ) {
      saveEr[j-fJLow]     = Interpolate( &fgkRList[fKLow], &er[j][fKLow], order, r )   ;
  }
  erValue = Interpolate( &fgkZList[fJLow], saveEr, order, z )   ;

}

void AliTPCCorrection::Interpolate3DEdistortion( Int_t order, Double_t r, Float_t phi, Double_t z, 
						 const Double_t er[kNZ][kNPhi][kNR], const Double_t ephi[kNZ][kNPhi][kNR], const Double_t ez[kNZ][kNPhi][kNR],
						 Double_t &erValue, Double_t &ephiValue, Double_t &ezValue) {
  //
  // Interpolate table - 3D interpolation
  //
  
  Double_t saveEr[5]= {0,0,0,0,0};
  Double_t savedEr[5]= {0,0,0,0,0} ;

  Double_t saveEphi[5]= {0,0,0,0,0};
  Double_t savedEphi[5]= {0,0,0,0,0} ;

  Double_t saveEz[5]= {0,0,0,0,0};
  Double_t savedEz[5]= {0,0,0,0,0} ;

  Search( kNZ,   fgkZList,   z,   fILow   ) ;
  Search( kNPhi, fgkPhiList, z,   fJLow   ) ;
  Search( kNR,   fgkRList,   r,   fKLow   ) ;

  if ( fILow < 0 ) fILow = 0 ;   // check if out of range
  if ( fJLow < 0 ) fJLow = 0 ;
  if ( fKLow < 0 ) fKLow = 0 ;

  if ( fILow + order  >=    kNZ - 1 ) fILow =   kNZ - 1 - order ;
  if ( fJLow + order  >=  kNPhi - 1 ) fJLow = kNPhi - 1 - order ;
  if ( fKLow + order  >=    kNR - 1 ) fKLow =   kNR - 1 - order ;

  for ( Int_t i = fILow ; i < fILow + order + 1 ; i++ ) {
    for ( Int_t j = fJLow ; j < fJLow + order + 1 ; j++ ) {
      saveEr[j-fJLow]     = Interpolate( &fgkRList[fKLow], &er[i][j][fKLow], order, r )   ;
      saveEphi[j-fJLow]   = Interpolate( &fgkRList[fKLow], &ephi[i][j][fKLow], order, r ) ;
      saveEz[j-fJLow]     = Interpolate( &fgkRList[fKLow], &ez[i][j][fKLow], order, r )   ;
    }
    savedEr[i-fILow]     = Interpolate( &fgkPhiList[fJLow], saveEr, order, phi )   ; 
    savedEphi[i-fILow]   = Interpolate( &fgkPhiList[fJLow], saveEphi, order, phi ) ; 
    savedEz[i-fILow]     = Interpolate( &fgkPhiList[fJLow], saveEz, order, phi )   ; 
  }
  erValue     = Interpolate( &fgkZList[fILow], savedEr, order, z )    ;
  ephiValue   = Interpolate( &fgkZList[fILow], savedEphi, order, z )  ;
  ezValue     = Interpolate( &fgkZList[fILow], savedEz, order, z )    ;

}

Double_t AliTPCCorrection::Interpolate2DTable( Int_t order, Double_t x, Double_t y, 
					      Int_t nx,  Int_t ny, const Double_t xv[], const Double_t yv[], 
					      const TMatrixD &array ) {
  //
  // Interpolate table (TMatrix format) - 2D interpolation
  //

  static  Int_t jlow = 0, klow = 0 ;
  Double_t saveArray[5] = {0,0,0,0,0} ;

  Search( nx,  xv,  x,   jlow  ) ;
  Search( ny,  yv,  y,   klow  ) ;
  if ( jlow < 0 ) jlow = 0 ;   // check if out of range
  if ( klow < 0 ) klow = 0 ;
  if ( jlow + order  >=    nx - 1 ) jlow =   nx - 1 - order ;
  if ( klow + order  >=    ny - 1 ) klow =   ny - 1 - order ;

  for ( Int_t j = jlow ; j < jlow + order + 1 ; j++ )
    {
      Double_t *ajkl = &((TMatrixD&)array)(j,klow);
      saveArray[j-jlow]  = Interpolate( &yv[klow], ajkl , order, y )   ;
    }

  return( Interpolate( &xv[jlow], saveArray, order, x ) )   ;

}

Double_t AliTPCCorrection::Interpolate3DTable( Int_t order, Double_t x,   Double_t y,   Double_t z,
					      Int_t  nx,    Int_t  ny,    Int_t  nz,
					      const Double_t xv[], const Double_t yv[], const Double_t zv[],
					      TMatrixD **arrayofArrays ) {
  //
  // Interpolate table (TMatrix format) - 3D interpolation
  //

  static  Int_t ilow = 0, jlow = 0, klow = 0 ;
  Double_t saveArray[5]= {0,0,0,0,0};
  Double_t savedArray[5]= {0,0,0,0,0} ;

  Search( nx, xv, x, ilow   ) ;
  Search( ny, yv, y, jlow   ) ;
  Search( nz, zv, z, klow   ) ;  

  if ( ilow < 0 ) ilow = 0 ;   // check if out of range
  if ( jlow < 0 ) jlow = 0 ;
  if ( klow < 0 ) klow = 0 ;

  if ( ilow + order  >=    nx - 1 ) ilow =   nx - 1 - order ;
  if ( jlow + order  >=    ny - 1 ) jlow =   ny - 1 - order ;
  if ( klow + order  >=    nz - 1 ) klow =   nz - 1 - order ;

  for ( Int_t k = klow ; k < klow + order + 1 ; k++ )
    {
      TMatrixD &table = *arrayofArrays[k] ;
      for ( Int_t i = ilow ; i < ilow + order + 1 ; i++ )
	{
	  saveArray[i-ilow] = Interpolate( &yv[jlow], &table(i,jlow), order, y )   ;
	}
      savedArray[k-klow] = Interpolate( &xv[ilow], saveArray, order, x )   ; 
    }
  return( Interpolate( &zv[klow], savedArray, order, z ) )   ;

}

Double_t AliTPCCorrection::Interpolate( const Double_t xArray[], const Double_t yArray[], 
				       Int_t order, Double_t x ) {
  //
  // Interpolate function Y(x) using linear (order=1) or quadratic (order=2) interpolation.
  //

  Double_t y ;
  if ( order == 2 ) {                // Quadratic Interpolation = 2 
    y  = (x-xArray[1]) * (x-xArray[2]) * yArray[0] / ( (xArray[0]-xArray[1]) * (xArray[0]-xArray[2]) ) ; 
    y += (x-xArray[2]) * (x-xArray[0]) * yArray[1] / ( (xArray[1]-xArray[2]) * (xArray[1]-xArray[0]) ) ; 
    y += (x-xArray[0]) * (x-xArray[1]) * yArray[2] / ( (xArray[2]-xArray[0]) * (xArray[2]-xArray[1]) ) ; 
  } else {                           // Linear Interpolation = 1
    y  = yArray[0] + ( yArray[1]-yArray[0] ) * ( x-xArray[0] ) / ( xArray[1] - xArray[0] ) ;
  }

  return (y);

}

Float_t AliTPCCorrection::Interpolate2DTable( Int_t order, Double_t x, Double_t y, 
					      Int_t nx,  Int_t ny, const Double_t xv[], const Double_t yv[], 
					      const TMatrixF &array ) {
  //
  // Interpolate table (TMatrix format) - 2D interpolation
  // Float version (in order to decrease the OCDB size)
  //

  static  Int_t jlow = 0, klow = 0 ;
  Float_t saveArray[5] = {0.,0.,0.,0.,0.} ;

  Search( nx,  xv,  x,   jlow  ) ;
  Search( ny,  yv,  y,   klow  ) ;
  if ( jlow < 0 ) jlow = 0 ;   // check if out of range
  if ( klow < 0 ) klow = 0 ;
  if ( jlow + order  >=    nx - 1 ) jlow =   nx - 1 - order ;
  if ( klow + order  >=    ny - 1 ) klow =   ny - 1 - order ;

  for ( Int_t j = jlow ; j < jlow + order + 1 ; j++ )
    {
      Float_t *ajkl = &((TMatrixF&)array)(j,klow);
      saveArray[j-jlow]  = Interpolate( &yv[klow], ajkl , order, y )   ;
    }

  return( Interpolate( &xv[jlow], saveArray, order, x ) )   ;

}

Float_t AliTPCCorrection::Interpolate3DTable( Int_t order, Double_t x,   Double_t y,   Double_t z,
					      Int_t  nx,    Int_t  ny,    Int_t  nz,
					      const Double_t xv[], const Double_t yv[], const Double_t zv[],
					      TMatrixF **arrayofArrays ) {
  //
  // Interpolate table (TMatrix format) - 3D interpolation 
  // Float version (in order to decrease the OCDB size)
  //

  static  Int_t ilow = 0, jlow = 0, klow = 0 ;
  Float_t saveArray[5]= {0.,0.,0.,0.,0.};
  Float_t savedArray[5]= {0.,0.,0.,0.,0.} ;

  Search( nx, xv, x, ilow   ) ;
  Search( ny, yv, y, jlow   ) ;
  Search( nz, zv, z, klow   ) ;  

  if ( ilow < 0 ) ilow = 0 ;   // check if out of range
  if ( jlow < 0 ) jlow = 0 ;
  if ( klow < 0 ) klow = 0 ;

  if ( ilow + order  >=    nx - 1 ) ilow =   nx - 1 - order ;
  if ( jlow + order  >=    ny - 1 ) jlow =   ny - 1 - order ;
  if ( klow + order  >=    nz - 1 ) klow =   nz - 1 - order ;

  for ( Int_t k = klow ; k < klow + order + 1 ; k++ )
    {
      TMatrixF &table = *arrayofArrays[k] ;
      for ( Int_t i = ilow ; i < ilow + order + 1 ; i++ )
	{
	  saveArray[i-ilow] = Interpolate( &yv[jlow], &table(i,jlow), order, y )   ;
	}
      savedArray[k-klow] = Interpolate( &xv[ilow], saveArray, order, x )   ; 
    }
  return( Interpolate( &zv[klow], savedArray, order, z ) )   ;

}
Float_t AliTPCCorrection::Interpolate( const Double_t xArray[], const Float_t yArray[], 
				       Int_t order, Double_t x ) {
  //
  // Interpolate function Y(x) using linear (order=1) or quadratic (order=2) interpolation.
  // Float version (in order to decrease the OCDB size)
  //

  Float_t y ;
  if ( order == 2 ) {                // Quadratic Interpolation = 2 
    y  = (x-xArray[1]) * (x-xArray[2]) * yArray[0] / ( (xArray[0]-xArray[1]) * (xArray[0]-xArray[2]) ) ; 
    y += (x-xArray[2]) * (x-xArray[0]) * yArray[1] / ( (xArray[1]-xArray[2]) * (xArray[1]-xArray[0]) ) ; 
    y += (x-xArray[0]) * (x-xArray[1]) * yArray[2] / ( (xArray[2]-xArray[0]) * (xArray[2]-xArray[1]) ) ; 
  } else {                           // Linear Interpolation = 1
    y  = yArray[0] + ( yArray[1]-yArray[0] ) * ( x-xArray[0] ) / ( xArray[1] - xArray[0] ) ;
  }

  return (y);

}



void AliTPCCorrection::Search( Int_t n, const Double_t xArray[], Double_t x, Int_t &low ) {
  //
  // Search an ordered table by starting at the most recently used point
  //

  Long_t middle, high ;
  Int_t  ascend = 0, increment = 1 ;

  if ( xArray[n-1] >= xArray[0] ) ascend = 1 ;  // Ascending ordered table if true
  
  if ( low < 0 || low > n-1 ) { 
    low = -1 ; high = n ; 
  } else {                                            // Ordered Search phase
    if ( (Int_t)( x >= xArray[low] ) == ascend )  {
      if ( low == n-1 ) return ;          
      high = low + 1 ;
      while ( (Int_t)( x >= xArray[high] ) == ascend ) {
	low = high ;
	increment *= 2 ;
	high = low + increment ;
	if ( high > n-1 )  {  high = n ; break ;  }
      }
    } else {
      if ( low == 0 )  {  low = -1 ;  return ;  }
      high = low - 1 ;
      while ( (Int_t)( x < xArray[low] ) == ascend ) {
	high = low ;
	increment *= 2 ;
	if ( increment >= high )  {  low = -1 ;  break ;  }
	else  low = high - increment ;
      }
    }
  }
  
  while ( (high-low) != 1 ) {                     // Binary Search Phase
    middle = ( high + low ) / 2 ;
    if ( (Int_t)( x >= xArray[middle] ) == ascend )
      low = middle ;
    else
      high = middle ;
  }
  
  if ( x == xArray[n-1] ) low = n-2 ;
  if ( x == xArray[0]   ) low = 0 ;
  
}

void AliTPCCorrection::InitLookUpfulcrums() {
  //
  // Initialization of interpolation points - for main look up table
  //   (course grid in the middle, fine grid on the borders)
  //

  AliTPCROC * roc = AliTPCROC::Instance();
  const Double_t rLow =  TMath::Floor(roc->GetPadRowRadii(0,0))-1; // first padRow plus some margin 

  // fulcrums in R
  fgkRList[0] = rLow;
  for (Int_t i = 1; i<kNR; i++) {
    fgkRList[i] = fgkRList[i-1] + 3.5;     // 3.5 cm spacing    
    if (fgkRList[i]<90 ||fgkRList[i]>245) 
       fgkRList[i] = fgkRList[i-1] + 0.5; // 0.5 cm spacing
    else if (fgkRList[i]<100 || fgkRList[i]>235) 
       fgkRList[i] = fgkRList[i-1] + 1.5;  // 1.5 cm spacing
    else if (fgkRList[i]<120 || fgkRList[i]>225) 
       fgkRList[i] = fgkRList[i-1] + 2.5;  // 2.5 cm spacing
  }

  // fulcrums in Z
  fgkZList[0] = -249.5;
  fgkZList[kNZ-1] = 249.5;
  for (Int_t j = 1; j<kNZ/2; j++) {
    fgkZList[j] = fgkZList[j-1];
    if      (TMath::Abs(fgkZList[j])< 0.15)
      fgkZList[j] = fgkZList[j-1] + 0.09; // 0.09 cm spacing
    else if(TMath::Abs(fgkZList[j])< 0.6)
      fgkZList[j] = fgkZList[j-1] + 0.4; // 0.4 cm spacing
    else if      (TMath::Abs(fgkZList[j])< 2.5 || TMath::Abs(fgkZList[j])>248) 
      fgkZList[j] = fgkZList[j-1] + 0.5; // 0.5 cm spacing
    else if (TMath::Abs(fgkZList[j])<10 || TMath::Abs(fgkZList[j])>235) 
      fgkZList[j] = fgkZList[j-1] + 1.5;  // 1.5 cm spacing
    else if (TMath::Abs(fgkZList[j])<25 || TMath::Abs(fgkZList[j])>225) 
      fgkZList[j] = fgkZList[j-1] + 2.5;  // 2.5 cm spacing
    else 
      fgkZList[j] = fgkZList[j-1] + 4;  // 4 cm spacing

    fgkZList[kNZ-j-1] = -fgkZList[j];
  }
  
  // fulcrums in phi
  for (Int_t k = 0; k<kNPhi; k++) 
    fgkPhiList[k] = TMath::TwoPi()*k/(kNPhi-1);    
  
  
}


void AliTPCCorrection::PoissonRelaxation2D(TMatrixD &arrayV, TMatrixD &chargeDensity, 
					   TMatrixD &arrayErOverEz, TMatrixD &arrayDeltaEz, 
					   Int_t rows, Int_t columns, Int_t iterations,
					   Bool_t rocDisplacement ) {
  //
  // Solve Poisson's Equation by Relaxation Technique in 2D (assuming cylindrical symmetry)
  //
  // Solve Poissons equation in a cylindrical coordinate system. The arrayV matrix must be filled with the 
  // boundary conditions on the first and last rows, and the first and last columns.  The remainder of the 
  // array can be blank or contain a preliminary guess at the solution.  The Charge density matrix contains 
  // the enclosed spacecharge density at each point. The charge density matrix can be full of zero's if 
  // you wish to solve Laplaces equation however it should not contain random numbers or you will get 
  // random numbers back as a solution. 
  // Poisson's equation is solved by iteratively relaxing the matrix to the final solution.  In order to 
  // speed up the convergence to the best solution, this algorithm does a binary expansion of the solution 
  // space.  First it solves the problem on a very sparse grid by skipping rows and columns in the original 
  // matrix.  Then it doubles the number of points and solves the problem again.  Then it doubles the 
  // number of points and solves the problem again.  This happens several times until the maximum number
  // of points has been included in the array.  
  //
  // NOTE: In order for this algorithmto work, the number of rows and columns must be a power of 2 plus one.
  // So rows == 2**M + 1 and columns == 2**N + 1.  The number of rows and columns can be different.
  // 
  // NOTE: rocDisplacement is used to include (or ignore) the ROC misalignment in the dz calculation
  //
  // Original code by Jim Thomas (STAR TPC Collaboration)
  //

  Double_t ezField = (fgkCathodeV-fgkGG)/fgkTPCZ0; // = ALICE Electric Field (V/cm) Magnitude ~ -400 V/cm; 

  const Float_t  gridSizeR   =  (fgkOFCRadius-fgkIFCRadius) / (rows-1) ;
  const Float_t  gridSizeZ   =  fgkTPCZ0 / (columns-1) ;
  const Float_t  ratio       =  gridSizeR*gridSizeR / (gridSizeZ*gridSizeZ) ;

  TMatrixD  arrayEr(rows,columns) ;
  TMatrixD  arrayEz(rows,columns) ;

  //Check that number of rows and columns is suitable for a binary expansion
  
  if ( !IsPowerOfTwo(rows-1) ) {
    AliError("PoissonRelaxation - Error in the number of rows. Must be 2**M - 1");
    return;
  }
  if ( !IsPowerOfTwo(columns-1) ) {
    AliError("PoissonRelaxation - Error in the number of columns. Must be 2**N - 1");
    return;
  }
  
  // Solve Poisson's equation in cylindrical coordinates by relaxation technique
  // Allow for different size grid spacing in R and Z directions
  // Use a binary expansion of the size of the matrix to speed up the solution of the problem
  
  Int_t iOne = (rows-1)/4 ;
  Int_t jOne = (columns-1)/4 ;
  // Solve for N in 2**N, add one.
  Int_t loops = 1 + (int) ( 0.5 + TMath::Log2( (double) TMath::Max(iOne,jOne) ) ) ;  

  for ( Int_t count = 0 ; count < loops ; count++ ) { 
    // Loop while the matrix expands & the resolution increases.

    Float_t tempGridSizeR = gridSizeR * iOne ;
    Float_t tempRatio     = ratio * iOne * iOne / ( jOne * jOne ) ;
    Float_t tempFourth    = 1.0 / (2.0 + 2.0*tempRatio) ;
    
    // Do this the standard C++ way to avoid gcc extensions for Float_t coef1[rows]
    std::vector<float> coef1(rows) ;  
    std::vector<float> coef2(rows) ;  

    for ( Int_t i = iOne ; i < rows-1 ; i+=iOne ) {
       Float_t radius = fgkIFCRadius + i*gridSizeR ;
      coef1[i] = 1.0 + tempGridSizeR/(2*radius);
      coef2[i] = 1.0 - tempGridSizeR/(2*radius);
    }
    
    TMatrixD sumChargeDensity(rows,columns) ;

    for ( Int_t i = iOne ; i < rows-1 ; i += iOne ) {
      Float_t radius = fgkIFCRadius + iOne*gridSizeR ;
      for ( Int_t j = jOne ; j < columns-1 ; j += jOne ) {
	if ( iOne == 1 && jOne == 1 ) sumChargeDensity(i,j) = chargeDensity(i,j) ;
	else {        
	  // Add up all enclosed charge density contributions within 1/2 unit in all directions
	  Float_t weight = 0.0 ;
	  Float_t sum    = 0.0 ;
	  sumChargeDensity(i,j) = 0.0 ;
	  for ( Int_t ii = i-iOne/2 ; ii <= i+iOne/2 ; ii++ ) {
	    for ( Int_t jj = j-jOne/2 ; jj <= j+jOne/2 ; jj++ ) {
	      if ( ii == i-iOne/2 || ii == i+iOne/2 || jj == j-jOne/2 || jj == j+jOne/2 ) weight = 0.5 ;
	      else
		weight = 1.0 ;
	      // Note that this is cylindrical geometry
	      sumChargeDensity(i,j) += chargeDensity(ii,jj)*weight*radius ;  
	      sum += weight*radius ;
	    }
	  }
	  sumChargeDensity(i,j) /= sum ;
	}
        sumChargeDensity(i,j) *= tempGridSizeR*tempGridSizeR; // just saving a step later on
       }
    }

    for ( Int_t k = 1 ; k <= iterations; k++ ) {               
      // Solve Poisson's Equation
      // Over-relaxation index, must be >= 1 but < 2.  Arrange for it to evolve from 2 => 1 
      // as interations increase.
      Float_t overRelax   = 1.0 + TMath::Sqrt( TMath::Cos( (k*TMath::PiOver2())/iterations ) ) ; 
      Float_t overRelaxM1 = overRelax - 1.0 ;
      Float_t overRelaxtempFourth, overRelaxcoef5 ;
      overRelaxtempFourth = overRelax * tempFourth ;
      overRelaxcoef5 = overRelaxM1 / overRelaxtempFourth ; 

      for ( Int_t i = iOne ; i < rows-1 ; i += iOne ) {
	for ( Int_t j = jOne ; j < columns-1 ; j += jOne ) {

	  arrayV(i,j) = (   coef2[i]       *   arrayV(i-iOne,j)
			  + tempRatio      * ( arrayV(i,j-jOne) + arrayV(i,j+jOne) )
			  - overRelaxcoef5 *   arrayV(i,j) 
			  + coef1[i]       *   arrayV(i+iOne,j) 
			  + sumChargeDensity(i,j) 
			) * overRelaxtempFourth;
	}
      }

      if ( k == iterations ) {    
	// After full solution is achieved, copy low resolution solution into higher res array
	for ( Int_t i = iOne ; i < rows-1 ; i += iOne ) {
	  for ( Int_t j = jOne ; j < columns-1 ; j += jOne ) {

	    if ( iOne > 1 ) {              
	      arrayV(i+iOne/2,j)                    =  ( arrayV(i+iOne,j) + arrayV(i,j)     ) / 2 ;
	      if ( i == iOne )  arrayV(i-iOne/2,j) =  ( arrayV(0,j)       + arrayV(iOne,j) ) / 2 ;
	    }
	    if ( jOne > 1 ) {
	      arrayV(i,j+jOne/2)                    =  ( arrayV(i,j+jOne) + arrayV(i,j) )     / 2 ;
	      if ( j == jOne )  arrayV(i,j-jOne/2) =  ( arrayV(i,0)       + arrayV(i,jOne) ) / 2 ;
	    }
	    if ( iOne > 1 && jOne > 1 ) {
	      arrayV(i+iOne/2,j+jOne/2) =  ( arrayV(i+iOne,j+jOne) + arrayV(i,j) ) / 2 ;
	      if ( i == iOne ) arrayV(i-iOne/2,j-jOne/2) =   ( arrayV(0,j-jOne) + arrayV(iOne,j) ) / 2 ;
	      if ( j == jOne ) arrayV(i-iOne/2,j-jOne/2) =   ( arrayV(i-iOne,0) + arrayV(i,jOne) ) / 2 ;
	      // Note that this leaves a point at the upper left and lower right corners uninitialized. 
	      // -> Not a big deal.
	    }

	  }
	}
      }

    }

    iOne = iOne / 2 ; if ( iOne < 1 ) iOne = 1 ;
    jOne = jOne / 2 ; if ( jOne < 1 ) jOne = 1 ;

    sumChargeDensity.Clear();
  }      

  // Differentiate V(r) and solve for E(r) using special equations for the first and last rows
  for ( Int_t j = 0 ; j < columns ; j++ ) {	  
    for ( Int_t i = 1 ; i < rows-1 ; i++ ) arrayEr(i,j) = -1 * ( arrayV(i+1,j) - arrayV(i-1,j) ) / (2*gridSizeR) ;
    arrayEr(0,j)      =  -1 * ( -0.5*arrayV(2,j) + 2.0*arrayV(1,j) - 1.5*arrayV(0,j) ) / gridSizeR ;  
    arrayEr(rows-1,j) =  -1 * ( 1.5*arrayV(rows-1,j) - 2.0*arrayV(rows-2,j) + 0.5*arrayV(rows-3,j) ) / gridSizeR ; 
  }

  // Differentiate V(z) and solve for E(z) using special equations for the first and last columns
  for ( Int_t i = 0 ; i < rows ; i++) {
    for ( Int_t j = 1 ; j < columns-1 ; j++ ) arrayEz(i,j) = -1 * ( arrayV(i,j+1) - arrayV(i,j-1) ) / (2*gridSizeZ) ;
    arrayEz(i,0)         =  -1 * ( -0.5*arrayV(i,2) + 2.0*arrayV(i,1) - 1.5*arrayV(i,0) ) / gridSizeZ ;  
    arrayEz(i,columns-1) =  -1 * ( 1.5*arrayV(i,columns-1) - 2.0*arrayV(i,columns-2) + 0.5*arrayV(i,columns-3) ) / gridSizeZ ; 
  }
  
  for ( Int_t i = 0 ; i < rows ; i++) {
    // Note: go back and compare to old version of this code.  See notes below.
    // JT Test ... attempt to divide by real Ez not Ez to first order
    for ( Int_t j = 0 ; j < columns ; j++ ) {
      arrayEz(i,j) += ezField;
      // This adds back the overall Z gradient of the field (main E field component)
    } 
    // Warning: (-=) assumes you are using an error potetial without the overall Field included
  }                                 
  
  // Integrate Er/Ez from Z to zero
  for ( Int_t j = 0 ; j < columns ; j++ )  {	  
    for ( Int_t i = 0 ; i < rows ; i++ ) {
      
      Int_t index = 1 ;   // Simpsons rule if N=odd.  If N!=odd then add extra point by trapezoidal rule.  
      arrayErOverEz(i,j) = 0.0 ;
      arrayDeltaEz(i,j) = 0.0 ;
      
      for ( Int_t k = j ; k < columns ; k++ ) {
	arrayErOverEz(i,j)  +=  index*(gridSizeZ/3.0)*arrayEr(i,k)/arrayEz(i,k) ;
	arrayDeltaEz(i,j)   +=  index*(gridSizeZ/3.0)*(arrayEz(i,k)-ezField) ;
	if ( index != 4 )  index = 4; else index = 2 ;
      }
      if ( index == 4 ) {
	arrayErOverEz(i,j)  -=  (gridSizeZ/3.0)*arrayEr(i,columns-1)/arrayEz(i,columns-1) ;
	arrayDeltaEz(i,j)   -=  (gridSizeZ/3.0)*(arrayEz(i,columns-1)-ezField) ;
      }
      if ( index == 2 ) {
	arrayErOverEz(i,j)  +=  (gridSizeZ/3.0) * ( 0.5*arrayEr(i,columns-2)/arrayEz(i,columns-2) 
						    -2.5*arrayEr(i,columns-1)/arrayEz(i,columns-1));
	arrayDeltaEz(i,j)   +=  (gridSizeZ/3.0) * ( 0.5*(arrayEz(i,columns-2)-ezField) 
						    -2.5*(arrayEz(i,columns-1)-ezField));
      }
      if ( j == columns-2 ) {
	arrayErOverEz(i,j) =  (gridSizeZ/3.0) * ( 1.5*arrayEr(i,columns-2)/arrayEz(i,columns-2)
						  +1.5*arrayEr(i,columns-1)/arrayEz(i,columns-1) ) ;
	arrayDeltaEz(i,j)  =  (gridSizeZ/3.0) * ( 1.5*(arrayEz(i,columns-2)-ezField)
						  +1.5*(arrayEz(i,columns-1)-ezField) ) ;
      }
      if ( j == columns-1 ) {
	arrayErOverEz(i,j) =  0.0 ;
	arrayDeltaEz(i,j)  =  0.0 ;
      }
    }
  }
  
  // calculate z distortion from the integrated Delta Ez residuals
  // and include the aquivalence (Volt to cm) of the ROC shift !!

  for ( Int_t j = 0 ; j < columns ; j++ )  {	  
    for ( Int_t i = 0 ; i < rows ; i++ ) {

      // Scale the Ez distortions with the drift velocity pertubation -> delivers cm
      arrayDeltaEz(i,j) = arrayDeltaEz(i,j)*fgkdvdE;

      // ROC Potential in cm aquivalent
      Double_t dzROCShift =  arrayV(i, columns -1)/ezField;  
      if ( rocDisplacement ) arrayDeltaEz(i,j) = arrayDeltaEz(i,j) + dzROCShift;  // add the ROC misaligment

    }
  }
 
  arrayEr.Clear();
  arrayEz.Clear();

}

void AliTPCCorrection::PoissonRelaxation3D( TMatrixD**arrayofArrayV, TMatrixD**arrayofChargeDensities, 
		    TMatrixD**arrayofEroverEz, TMatrixD**arrayofEPhioverEz, TMatrixD**arrayofDeltaEz,
		    Int_t rows, Int_t columns,  Int_t phislices, 
		    Float_t deltaphi, Int_t iterations, Int_t symmetry,
		    Bool_t rocDisplacement  ) {
  //
  // 3D - Solve Poisson's Equation in 3D by Relaxation Technique
  //
  //    NOTE: In order for this algorith to work, the number of rows and columns must be a power of 2 plus one.  
  //    The number of rows and COLUMNS can be different.
  //
  //    ROWS       ==  2**M + 1  
  //    COLUMNS    ==  2**N + 1  
  //    PHISLICES  ==  Arbitrary but greater than 3
  //
  //    DeltaPhi in Radians
  //
  //    SYMMETRY = 0 if no phi symmetries, and no phi boundary conditions
  //             = 1 if we have reflection symmetry at the boundaries (eg. sector symmetry or half sector symmetries).
  //
  // NOTE: rocDisplacement is used to include (or ignore) the ROC misalignment in the dz calculation

  const Double_t ezField = (fgkCathodeV-fgkGG)/fgkTPCZ0; // = ALICE Electric Field (V/cm) Magnitude ~ -400 V/cm; 

  const Float_t  gridSizeR   =  (fgkOFCRadius-fgkIFCRadius) / (rows-1) ;
  const Float_t  gridSizePhi =  deltaphi ;
  const Float_t  gridSizeZ   =  fgkTPCZ0 / (columns-1) ;
  const Float_t  ratioPhi    =  gridSizeR*gridSizeR / (gridSizePhi*gridSizePhi) ;
  const Float_t  ratioZ      =  gridSizeR*gridSizeR / (gridSizeZ*gridSizeZ) ;

  TMatrixD arrayE(rows,columns) ;

  // Check that the number of rows and columns is suitable for a binary expansion
  if ( !IsPowerOfTwo((rows-1))    ) {  
    AliError("Poisson3DRelaxation - Error in the number of rows. Must be 2**M - 1"); 
    return; }
  if ( !IsPowerOfTwo((columns-1)) ) { 
    AliError("Poisson3DRelaxation - Error in the number of columns. Must be 2**N - 1");
    return; }
  if ( phislices <= 3   )  { 
    AliError("Poisson3DRelaxation - Error in the number of phislices. Must be larger than 3");
    return; }
  if  ( phislices > 1000 ) { 
    AliError("Poisson3D  phislices > 1000 is not allowed (nor wise) ");  
    return; }  
  
  // Solve Poisson's equation in cylindrical coordinates by relaxation technique
  // Allow for different size grid spacing in R and Z directions
  // Use a binary expansion of the matrix to speed up the solution of the problem

  Int_t loops, mplus, mminus, signplus, signminus  ;
  Int_t ione = (rows-1)/4 ;
  Int_t jone = (columns-1)/4 ;
  loops = TMath::Max(ione, jone) ;      // Calculate the number of loops for the binary expansion
  loops = 1 + (int) ( 0.5 + TMath::Log2((double)loops) ) ;  // Solve for N in 2**N

  TMatrixD* arrayofSumChargeDensities[1000] ;    // Create temporary arrays to store low resolution charge arrays

  for ( Int_t i = 0 ; i < phislices ; i++ ) { arrayofSumChargeDensities[i] = new TMatrixD(rows,columns) ; }
  AliSysInfo::AddStamp("3DInit", 10,0,0);

  for ( Int_t count = 0 ; count < loops ; count++ ) {      // START the master loop and do the binary expansion
    AliSysInfo::AddStamp("3Diter", 20,count,0);
   
    Float_t  tempgridSizeR   =  gridSizeR  * ione ;
    Float_t  tempratioPhi    =  ratioPhi * ione * ione ; // Used tobe divided by ( m_one * m_one ) when m_one was != 1
    Float_t  tempratioZ      =  ratioZ   * ione * ione / ( jone * jone ) ;

    std::vector<float> coef1(rows) ;  // Do this the standard C++ way to avoid gcc extensions for Float_t coef1[rows]
    std::vector<float> coef2(rows) ;  // Do this the standard C++ way to avoid gcc extensions for Float_t coef1[rows]
    std::vector<float> coef3(rows) ;  // Do this the standard C++ way to avoid gcc extensions for Float_t coef1[rows]
    std::vector<float> coef4(rows) ;  // Do this the standard C++ way to avoid gcc extensions for Float_t coef1[rows]

    for ( Int_t i = ione ; i < rows-1 ; i+=ione )  {
      Float_t radius = fgkIFCRadius + i*gridSizeR ;
      coef1[i] = 1.0 + tempgridSizeR/(2*radius);
      coef2[i] = 1.0 - tempgridSizeR/(2*radius);
      coef3[i] = tempratioPhi/(radius*radius);
      coef4[i] = 0.5 / (1.0 + tempratioZ + coef3[i]);
    }

    for ( Int_t m = 0 ; m < phislices ; m++ ) {
      TMatrixD &chargeDensity    = *arrayofChargeDensities[m] ;
      TMatrixD &sumChargeDensity = *arrayofSumChargeDensities[m] ;
      for ( Int_t i = ione ; i < rows-1 ; i += ione ) {
	Float_t radius = fgkIFCRadius + i*gridSizeR ;
	for ( Int_t j = jone ; j < columns-1 ; j += jone ) {
	  if ( ione == 1 && jone == 1 ) sumChargeDensity(i,j) = chargeDensity(i,j) ;
	  else {           // Add up all enclosed charge density contributions within 1/2 unit in all directions
	    Float_t weight = 0.0 ;
	    Float_t sum    = 0.0 ;
	    sumChargeDensity(i,j) = 0.0 ;
	    for ( Int_t ii = i-ione/2 ; ii <= i+ione/2 ; ii++ ) {
	      for ( Int_t jj = j-jone/2 ; jj <= j+jone/2 ; jj++ ) {
		if ( ii == i-ione/2 || ii == i+ione/2 || jj == j-jone/2 || jj == j+jone/2 ) weight = 0.5 ;
		else
		  weight = 1.0 ; 
		sumChargeDensity(i,j) += chargeDensity(ii,jj)*weight*radius ;  
		sum += weight*radius ;
	      }
	    }
	    sumChargeDensity(i,j) /= sum ;
	  }
          sumChargeDensity(i,j) *= tempgridSizeR*tempgridSizeR; // just saving a step later on
	}
      }
    }

    for ( Int_t k = 1 ; k <= iterations; k++ ) {

      // over-relaxation index, >= 1 but < 2
      Float_t overRelax   = 1.0 + TMath::Sqrt( TMath::Cos( (k*TMath::PiOver2())/iterations ) ) ; 
      Float_t overRelaxM1 = overRelax - 1.0 ;

      std::vector<float> overRelaxcoef4(rows) ;  // Do this the standard C++ way to avoid gcc extensions
      std::vector<float> overRelaxcoef5(rows) ;  // Do this the standard C++ way to avoid gcc extensions

      for ( Int_t i = ione ; i < rows-1 ; i+=ione ) { 
	overRelaxcoef4[i] = overRelax * coef4[i] ;
	overRelaxcoef5[i] = overRelaxM1 / overRelaxcoef4[i] ; 
      }

      for ( Int_t m = 0 ; m < phislices ; m++ ) {

	mplus  = m + 1;   signplus  = 1 ; 
	mminus = m - 1 ;  signminus = 1 ;
	if (symmetry==1) {  // Reflection symmetry in phi (e.g. symmetry at sector boundaries, or half sectors, etc.)
	  if ( mplus  > phislices-1 ) mplus  = phislices - 2 ;
	  if ( mminus < 0 )           mminus = 1 ;
	}
	else if (symmetry==-1) {   // Anti-symmetry in phi
	  if ( mplus  > phislices-1 ) { mplus  = phislices - 2 ; signplus  = -1 ; }
	  if ( mminus < 0 )           { mminus = 1 ;	         signminus = -1 ; } 
	}
		else { // No Symmetries in phi, no boundaries, the calculation is continuous across all phi
	  if ( mplus  > phislices-1 ) mplus  = m + 1 - phislices ;
	  if ( mminus < 0 )           mminus = m - 1 + phislices ;
	}
	TMatrixD& arrayV    =  *arrayofArrayV[m] ;
	TMatrixD& arrayVP   =  *arrayofArrayV[mplus] ;
	TMatrixD& arrayVM   =  *arrayofArrayV[mminus] ;
	TMatrixD& sumChargeDensity =  *arrayofSumChargeDensities[m] ;
	Double_t *arrayVfast = arrayV.GetMatrixArray();
	Double_t *arrayVPfast = arrayVP.GetMatrixArray();
	Double_t *arrayVMfast = arrayVM.GetMatrixArray();
	Double_t *sumChargeDensityFast=sumChargeDensity.GetMatrixArray();

	if (0){
	  // slow implementation
	  for ( Int_t i = ione ; i < rows-1 ; i+=ione )  {
	    for ( Int_t j = jone ; j < columns-1 ; j+=jone ) {
	      
	      arrayV(i,j) = (   coef2[i]          *   arrayV(i-ione,j)
				+ tempratioZ        * ( arrayV(i,j-jone)  +  arrayV(i,j+jone) )
				- overRelaxcoef5[i] *   arrayV(i,j) 
				+ coef1[i]          *   arrayV(i+ione,j)  
				+ coef3[i]          * ( signplus*arrayVP(i,j)       +  signminus*arrayVM(i,j) )
				+ sumChargeDensity(i,j) 
				) * overRelaxcoef4[i] ;     
	      // Note: over-relax the solution at each step.  This speeds up the convergance.	      
	    }
	  }
	}else{
	  for ( Int_t i = ione ; i < rows-1 ; i+=ione )  {
	    Double_t *arrayVfastI = &(arrayVfast[i*columns]);
	    Double_t *arrayVPfastI = &(arrayVPfast[i*columns]);
	    Double_t *arrayVMfastI = &(arrayVMfast[i*columns]);
	    Double_t *sumChargeDensityFastI=&(sumChargeDensityFast[i*columns]);
	    for ( Int_t j = jone ; j < columns-1 ; j+=jone ) {
	      Double_t /*resSlow*/resFast;
// 	      resSlow  = (   coef2[i]          *   arrayV(i-ione,j)
// 				+ tempratioZ        * ( arrayV(i,j-jone)  +  arrayV(i,j+jone) )
// 				- overRelaxcoef5[i] *   arrayV(i,j) 
// 				+ coef1[i]          *   arrayV(i+ione,j)  
// 				+ coef3[i]          * ( signplus*arrayVP(i,j)       +  signminus*arrayVM(i,j) )
// 				+ sumChargeDensity(i,j) 
// 				) * overRelaxcoef4[i] ;     
	      resFast   = (   coef2[i]          *   arrayVfastI[j-columns*ione]
			      + tempratioZ        * ( arrayVfastI[j-jone]  +  arrayVfastI[j+jone] )
			      - overRelaxcoef5[i] *   arrayVfastI[j] 
			      + coef1[i]          * arrayVfastI[j+columns*ione]    
			      + coef3[i]          * ( signplus* arrayVPfastI[j]      +  signminus*arrayVMfastI[j])
			      + sumChargeDensityFastI[j] 
			      ) * overRelaxcoef4[i] ;     
// 	      if (resSlow!=resFast){
// 		printf("problem\t%d\t%d\t%f\t%f\t%f\n",i,j,resFast,resSlow,resFast-resSlow);
// 	      }
	      arrayVfastI[j]=resFast;
	      // Note: over-relax the solution at each step.  This speeds up the convergance.	      
	    }
	  }
	}

	if ( k == iterations ) {   // After full solution is achieved, copy low resolution solution into higher res array
	  for ( Int_t i = ione ; i < rows-1 ; i+=ione )  {
	    for ( Int_t j = jone ; j < columns-1 ; j+=jone ) {
	      
	      if ( ione > 1 ) {              
		arrayV(i+ione/2,j)                    =  ( arrayV(i+ione,j) + arrayV(i,j)     ) / 2 ;
		if ( i == ione )  arrayV(i-ione/2,j) =  ( arrayV(0,j)       + arrayV(ione,j) ) / 2 ;
	      }
	      if ( jone > 1 ) {
		arrayV(i,j+jone/2)                    =  ( arrayV(i,j+jone) + arrayV(i,j) )     / 2 ;
		if ( j == jone )  arrayV(i,j-jone/2) =  ( arrayV(i,0)       + arrayV(i,jone) ) / 2 ;
	      }
	      if ( ione > 1 && jone > 1 ) {
		arrayV(i+ione/2,j+jone/2) =  ( arrayV(i+ione,j+jone) + arrayV(i,j) ) / 2 ;
		if ( i == ione ) arrayV(i-ione/2,j-jone/2) =   ( arrayV(0,j-jone) + arrayV(ione,j) ) / 2 ;
		if ( j == jone ) arrayV(i-ione/2,j-jone/2) =   ( arrayV(i-ione,0) + arrayV(i,jone) ) / 2 ;
		// Note that this leaves a point at the upper left and lower right corners uninitialized. Not a big deal.
	      }
	    }	    
	  }
	}

      }
    }      

    ione = ione / 2 ; if ( ione < 1 ) ione = 1 ;
    jone = jone / 2 ; if ( jone < 1 ) jone = 1 ;

  }
  
  //Differentiate V(r) and solve for E(r) using special equations for the first and last row
  //Integrate E(r)/E(z) from point of origin to pad plane
  AliSysInfo::AddStamp("CalcField", 100,0,0);

  for ( Int_t m = 0 ; m < phislices ; m++ ) {
    TMatrixD& arrayV    =  *arrayofArrayV[m] ;
    TMatrixD& eroverEz  =  *arrayofEroverEz[m] ;
    
    for ( Int_t j = columns-1 ; j >= 0 ; j-- ) {  // Count backwards to facilitate integration over Z
      
      // Differentiate in R
      for ( Int_t i = 1 ; i < rows-1 ; i++ )  arrayE(i,j) = -1 * ( arrayV(i+1,j) - arrayV(i-1,j) ) / (2*gridSizeR) ;
      arrayE(0,j)      =  -1 * ( -0.5*arrayV(2,j) + 2.0*arrayV(1,j) - 1.5*arrayV(0,j) ) / gridSizeR ;  
      arrayE(rows-1,j) =  -1 * ( 1.5*arrayV(rows-1,j) - 2.0*arrayV(rows-2,j) + 0.5*arrayV(rows-3,j) ) / gridSizeR ; 
      // Integrate over Z
      for ( Int_t i = 0 ; i < rows ; i++ ) {
	Int_t index = 1 ;   // Simpsons rule if N=odd.  If N!=odd then add extra point by trapezoidal rule.  
	eroverEz(i,j) = 0.0 ;
	for ( Int_t k = j ; k < columns ; k++ ) {
	  
	  eroverEz(i,j)  +=  index*(gridSizeZ/3.0)*arrayE(i,k)/(-1*ezField) ;
	  if ( index != 4 )  index = 4; else index = 2 ;
	}
	if ( index == 4 ) eroverEz(i,j)  -=  (gridSizeZ/3.0)*arrayE(i,columns-1)/ (-1*ezField) ;
	if ( index == 2 ) eroverEz(i,j)  +=  
	  (gridSizeZ/3.0)*(0.5*arrayE(i,columns-2)-2.5*arrayE(i,columns-1))/(-1*ezField) ;
	if ( j == columns-2 ) eroverEz(i,j) =  
	  (gridSizeZ/3.0)*(1.5*arrayE(i,columns-2)+1.5*arrayE(i,columns-1))/(-1*ezField) ;
	if ( j == columns-1 ) eroverEz(i,j) =  0.0 ;
      }
    }
    // if ( m == 0 ) { TCanvas*  c1 =  new TCanvas("erOverEz","erOverEz",50,50,840,600) ;  c1 -> cd() ;
    // eroverEz.Draw("surf") ; } // JT test
  }
  AliSysInfo::AddStamp("IntegrateEr", 120,0,0);
  
  //Differentiate V(r) and solve for E(phi) 
  //Integrate E(phi)/E(z) from point of origin to pad plane

  for ( Int_t m = 0 ; m < phislices ; m++ ) {
    
    mplus  = m + 1;   signplus  = 1 ; 
    mminus = m - 1 ;  signminus = 1 ; 
    if (symmetry==1) { // Reflection symmetry in phi (e.g. symmetry at sector boundaries, or half sectors, etc.)
      if ( mplus  > phislices-1 ) mplus  = phislices - 2 ;
      if ( mminus < 0 )           mminus = 1 ;
    }
    else if (symmetry==-1) {       // Anti-symmetry in phi
      if ( mplus  > phislices-1 ) { mplus  = phislices - 2 ;  signplus  = -1 ; }
      if ( mminus < 0 )           { mminus = 1 ;	            signminus = -1 ; } 
    }
    else { // No Symmetries in phi, no boundaries, the calculations is continuous across all phi
      if ( mplus  > phislices-1 ) mplus  = m + 1 - phislices ;
      if ( mminus < 0 )           mminus = m - 1 + phislices ;
    }
    TMatrixD &arrayVP     =  *arrayofArrayV[mplus] ;
    TMatrixD &arrayVM     =  *arrayofArrayV[mminus] ;
    TMatrixD &ePhioverEz  =  *arrayofEPhioverEz[m] ;
    for ( Int_t j = columns-1 ; j >= 0 ; j-- ) { // Count backwards to facilitate integration over Z
      // Differentiate in Phi
      for ( Int_t i = 0 ; i < rows ; i++ ) {
	Float_t radius = fgkIFCRadius + i*gridSizeR ;
	arrayE(i,j) = -1 * (signplus * arrayVP(i,j) - signminus * arrayVM(i,j) ) / (2*radius*gridSizePhi) ;
      }
      // Integrate over Z
      for ( Int_t i = 0 ; i < rows ; i++ ) {
	Int_t index = 1 ;   // Simpsons rule if N=odd.  If N!=odd then add extra point by trapezoidal rule.  
	ePhioverEz(i,j) = 0.0 ;
	for ( Int_t k = j ; k < columns ; k++ ) {
	  
	  ePhioverEz(i,j)  +=  index*(gridSizeZ/3.0)*arrayE(i,k)/(-1*ezField) ;
	  if ( index != 4 )  index = 4; else index = 2 ;
	}
	if ( index == 4 ) ePhioverEz(i,j)  -=  (gridSizeZ/3.0)*arrayE(i,columns-1)/ (-1*ezField) ;
	if ( index == 2 ) ePhioverEz(i,j)  +=  
	  (gridSizeZ/3.0)*(0.5*arrayE(i,columns-2)-2.5*arrayE(i,columns-1))/(-1*ezField) ;
	if ( j == columns-2 ) ePhioverEz(i,j) =  
	  (gridSizeZ/3.0)*(1.5*arrayE(i,columns-2)+1.5*arrayE(i,columns-1))/(-1*ezField) ;
	if ( j == columns-1 ) ePhioverEz(i,j) =  0.0 ;
      }
    }
    // if ( m == 5 ) { TCanvas* c2 =  new TCanvas("arrayE","arrayE",50,50,840,600) ;  c2 -> cd() ;
    // arrayE.Draw("surf") ; } // JT test
  }
  AliSysInfo::AddStamp("IntegrateEphi", 130,0,0);
  

  // Differentiate V(r) and solve for E(z) using special equations for the first and last row
  // Integrate (E(z)-Ezstd) from point of origin to pad plane
  
  for ( Int_t m = 0 ; m < phislices ; m++ ) {
    TMatrixD& arrayV   =  *arrayofArrayV[m] ;
    TMatrixD& deltaEz  =  *arrayofDeltaEz[m] ;
    
    // Differentiate V(z) and solve for E(z) using special equations for the first and last columns
    for ( Int_t i = 0 ; i < rows ; i++) {
      for ( Int_t j = 1 ; j < columns-1 ; j++ ) arrayE(i,j) = -1 * ( arrayV(i,j+1) - arrayV(i,j-1) ) / (2*gridSizeZ) ;
      arrayE(i,0)         =  -1 * ( -0.5*arrayV(i,2) + 2.0*arrayV(i,1) - 1.5*arrayV(i,0) ) / gridSizeZ ;  
      arrayE(i,columns-1) =  -1 * ( 1.5*arrayV(i,columns-1) - 2.0*arrayV(i,columns-2) + 0.5*arrayV(i,columns-3) ) / gridSizeZ ; 
    }
    
    for ( Int_t j = columns-1 ; j >= 0 ; j-- ) {  // Count backwards to facilitate integration over Z
      // Integrate over Z
      for ( Int_t i = 0 ; i < rows ; i++ ) {
	Int_t index = 1 ;   // Simpsons rule if N=odd.  If N!=odd then add extra point by trapezoidal rule.  
	deltaEz(i,j) = 0.0 ;
	for ( Int_t k = j ; k < columns ; k++ ) {
	  deltaEz(i,j)  +=  index*(gridSizeZ/3.0)*arrayE(i,k) ;
	  if ( index != 4 )  index = 4; else index = 2 ;
	}
	if ( index == 4 ) deltaEz(i,j)  -=  (gridSizeZ/3.0)*arrayE(i,columns-1) ;
	if ( index == 2 ) deltaEz(i,j)  +=  
	  (gridSizeZ/3.0)*(0.5*arrayE(i,columns-2)-2.5*arrayE(i,columns-1)) ;
	if ( j == columns-2 ) deltaEz(i,j) =  
	  (gridSizeZ/3.0)*(1.5*arrayE(i,columns-2)+1.5*arrayE(i,columns-1)) ;
	if ( j == columns-1 ) deltaEz(i,j) =  0.0 ;
      }
    }

    // if ( m == 0 ) { TCanvas*  c1 =  new TCanvas("erOverEz","erOverEz",50,50,840,600) ;  c1 -> cd() ;
    // eroverEz.Draw("surf") ; } // JT test
    
    // calculate z distortion from the integrated Delta Ez residuals
    // and include the aquivalence (Volt to cm) of the ROC shift !!
    
    for ( Int_t j = 0 ; j < columns ; j++ )  {	  
      for ( Int_t i = 0 ; i < rows ; i++ ) {
	
	// Scale the Ez distortions with the drift velocity pertubation -> delivers cm
	deltaEz(i,j) = deltaEz(i,j)*fgkdvdE;
	
	// ROC Potential in cm aquivalent
	Double_t dzROCShift =  arrayV(i, columns -1)/ezField;  
	if ( rocDisplacement ) deltaEz(i,j) = deltaEz(i,j) + dzROCShift;  // add the ROC misaligment
	
      }
    }

  } // end loop over phi  
  AliSysInfo::AddStamp("IntegrateEz", 140,0,0);
 

  for ( Int_t k = 0 ; k < phislices ; k++ )
    {
      arrayofSumChargeDensities[k]->Delete() ;
    }
  


  arrayE.Clear();
}


Int_t AliTPCCorrection::IsPowerOfTwo(Int_t i) const {
  //
  // Helperfunction: Check if integer is a power of 2
  //
  Int_t j = 0;
  while( i > 0 ) { j += (i&1) ; i = (i>>1) ; }
  if ( j == 1 ) return(1) ;  // True
  return(0) ;                // False
}


AliExternalTrackParam * AliTPCCorrection::FitDistortedTrack(AliExternalTrackParam & trackIn, Double_t refX, Int_t dir, TTreeSRedirector * const pcstream){
  //
  // Fit the track parameters - without and with distortion
  // 1. Space points in the TPC are simulated along the trajectory  
  // 2. Space points distorted
  // 3. Fits  the non distorted and distroted track to the reference plane at refX
  // 4. For visualization and debugging  purposes the space points and tracks can be stored  in the tree - using the TTreeSRedirector functionality 
  //
  // trackIn   - input track parameters
  // refX     - reference X to fit the track
  // dir      - direction - out=1 or in=-1
  // pcstream -  debug streamer to check the results
  //
  // see AliExternalTrackParam.h documentation:
  // track1.fP[0] - local y (rphi)
  // track1.fP[1] - z 
  // track1.fP[2] - sinus of local inclination angle
  // track1.fP[3] - tangent of deep angle
  // track1.fP[4] - 1/pt

  AliTPCROC * roc = AliTPCROC::Instance();
  const Int_t    npoints0=roc->GetNRows(0)+roc->GetNRows(36);
  const Double_t kRTPC0  =roc->GetPadRowRadii(0,0);
  const Double_t kRTPC1  =roc->GetPadRowRadii(36,roc->GetNRows(36)-1);
  const Double_t kMaxSnp = 0.85;  
  const Double_t kSigmaY=0.1;
  const Double_t kSigmaZ=0.1;
  const Double_t kMaxR=500;
  const Double_t kMaxZ=500;
  
  const Double_t kMaxZ0=220;
  const Double_t kZcut=3;
  const Double_t kMass = TDatabasePDG::Instance()->GetParticle("pi+")->Mass();
  Int_t npoints1=0;
  Int_t npoints2=0;

  AliExternalTrackParam  track(trackIn); // 
  // generate points
  AliTrackPointArray pointArray0(npoints0);
  AliTrackPointArray pointArray1(npoints0);
  Double_t xyz[3];
  if (!AliTrackerBase::PropagateTrackTo(&track,kRTPC0,kMass,5,kTRUE,kMaxSnp)) return 0;
  //
  // simulate the track
  Int_t npoints=0;
  Float_t covPoint[6]={0,0,0, static_cast<Float_t>(kSigmaY*kSigmaY),0,static_cast<Float_t>(kSigmaZ*kSigmaZ)};  //covariance at the local frame
  for (Double_t radius=kRTPC0; radius<kRTPC1; radius++){
    if (!AliTrackerBase::PropagateTrackTo(&track,radius,kMass,5,kTRUE,kMaxSnp)) return 0;
    track.GetXYZ(xyz);
    xyz[0]+=gRandom->Gaus(0,0.000005);
    xyz[1]+=gRandom->Gaus(0,0.000005);
    xyz[2]+=gRandom->Gaus(0,0.000005);
    if (TMath::Abs(track.GetZ())>kMaxZ0) continue;
    if (TMath::Abs(track.GetX())<kRTPC0) continue;
    if (TMath::Abs(track.GetX())>kRTPC1) continue;
    AliTrackPoint pIn0;                               // space point          
    AliTrackPoint pIn1;
    Int_t sector= (xyz[2]>0)? 0:18;
    pointArray0.GetPoint(pIn0,npoints);
    pointArray1.GetPoint(pIn1,npoints);
    Double_t alpha = TMath::ATan2(xyz[1],xyz[0]);
    Float_t distPoint[3]={static_cast<Float_t>(xyz[0]),static_cast<Float_t>(xyz[1]),static_cast<Float_t>(xyz[2])};
    DistortPoint(distPoint, sector);
    pIn0.SetXYZ(xyz[0], xyz[1],xyz[2]);
    pIn1.SetXYZ(distPoint[0], distPoint[1],distPoint[2]);
    //
    track.Rotate(alpha);
    AliTrackPoint prot0 = pIn0.Rotate(alpha);   // rotate to the local frame - non distoted  point
    AliTrackPoint prot1 = pIn1.Rotate(alpha);   // rotate to the local frame -     distorted point
    prot0.SetXYZ(prot0.GetX(),prot0.GetY(), prot0.GetZ(),covPoint);
    prot1.SetXYZ(prot1.GetX(),prot1.GetY(), prot1.GetZ(),covPoint);
    pIn0=prot0.Rotate(-alpha);                       // rotate back to global frame
    pIn1=prot1.Rotate(-alpha);                       // rotate back to global frame
    pointArray0.AddPoint(npoints, &pIn0);      
    pointArray1.AddPoint(npoints, &pIn1);
    npoints++;
    if (npoints>=npoints0) break;
  }
  if (npoints<npoints0/4.) return 0;
  //
  // refit track
  //
  AliExternalTrackParam *track0=0;
  AliExternalTrackParam *track1=0;
  AliTrackPoint   point1,point2,point3;
  if (dir==1) {  //make seed inner
    pointArray0.GetPoint(point1,1);
    pointArray0.GetPoint(point2,11);
    pointArray0.GetPoint(point3,21);
  }
  if (dir==-1){ //make seed outer
    pointArray0.GetPoint(point1,npoints-21);
    pointArray0.GetPoint(point2,npoints-11);
    pointArray0.GetPoint(point3,npoints-1);
  } 
  if ((TMath::Abs(point1.GetX()-point3.GetX())+TMath::Abs(point1.GetY()-point3.GetY()))<10){
    printf("fit points not properly initialized\n");
    return 0;
  }
  track0 = AliTrackerBase::MakeSeed(point1, point2, point3);
  track1 = AliTrackerBase::MakeSeed(point1, point2, point3);
  track0->ResetCovariance(10);
  track1->ResetCovariance(10);
  if (TMath::Abs(AliTrackerBase::GetBz())<0.01){
    ((Double_t*)track0->GetParameter())[4]=  trackIn.GetParameter()[4];    
    ((Double_t*)track1->GetParameter())[4]=  trackIn.GetParameter()[4];
  }
  for (Int_t jpoint=0; jpoint<npoints; jpoint++){
    Int_t ipoint= (dir>0) ? jpoint: npoints-1-jpoint;
    //
    AliTrackPoint pIn0;
    AliTrackPoint pIn1;
    pointArray0.GetPoint(pIn0,ipoint);
    pointArray1.GetPoint(pIn1,ipoint);
    AliTrackPoint prot0 = pIn0.Rotate(track0->GetAlpha());   // rotate to the local frame - non distoted  point
    AliTrackPoint prot1 = pIn1.Rotate(track1->GetAlpha());   // rotate to the local frame -     distorted point
    if (TMath::Abs(prot0.GetX())<kRTPC0) continue;
    if (TMath::Abs(prot0.GetX())>kRTPC1) continue;
    //
    if (!AliTrackerBase::PropagateTrackTo(track0,prot0.GetX(),kMass,5,kFALSE,kMaxSnp)) break;
    if (!AliTrackerBase::PropagateTrackTo(track1,prot0.GetX(),kMass,5,kFALSE,kMaxSnp)) break;
    if (TMath::Abs(track0->GetZ())>kMaxZ) break;
    if (TMath::Abs(track0->GetX())>kMaxR) break;
    if (TMath::Abs(track1->GetZ())>kMaxZ) break;
    if (TMath::Abs(track1->GetX())>kMaxR) break;
    if (dir>0 && track1->GetX()>refX) continue;
    if (dir<0 && track1->GetX()<refX) continue;
    if (TMath::Abs(track1->GetZ())<kZcut)continue;
    track.GetXYZ(xyz);  // distorted track also propagated to the same reference radius
    //
    Double_t pointPos[2]={0,0};
    Double_t pointCov[3]={0,0,0};
    pointPos[0]=prot0.GetY();//local y
    pointPos[1]=prot0.GetZ();//local z
    pointCov[0]=prot0.GetCov()[3];//simay^2
    pointCov[1]=prot0.GetCov()[4];//sigmayz
    pointCov[2]=prot0.GetCov()[5];//sigmaz^2
    if (!track0->Update(pointPos,pointCov)) break;
    //
    Double_t deltaX=prot1.GetX()-prot0.GetX();   // delta X 
    Double_t deltaYX=deltaX*TMath::Tan(TMath::ASin(track1->GetSnp()));  // deltaY due  delta X
    Double_t deltaZX=deltaX*track1->GetTgl();                           // deltaZ due  delta X

    pointPos[0]=prot1.GetY()-deltaYX;//local y is sign correct? should be minus
    pointPos[1]=prot1.GetZ()-deltaZX;//local z is sign correct? should be minus
    pointCov[0]=prot1.GetCov()[3];//simay^2
    pointCov[1]=prot1.GetCov()[4];//sigmayz
    pointCov[2]=prot1.GetCov()[5];//sigmaz^2
    if (!track1->Update(pointPos,pointCov)) break;
    npoints1++;
    npoints2++;
  }
  if (npoints2<npoints/4.)  return 0;
  AliTrackerBase::PropagateTrackTo(track0,refX,kMass,5.,kTRUE,kMaxSnp);
  AliTrackerBase::PropagateTrackTo(track0,refX,kMass,1.,kTRUE,kMaxSnp);
  track1->Rotate(track0->GetAlpha());
  AliTrackerBase::PropagateTrackTo(track1,track0->GetX(),kMass,5.,kFALSE,kMaxSnp);

  if (pcstream) (*pcstream)<<Form("fitDistort%s",GetName())<<
    "point0.="<<&pointArray0<<   //  points
    "point1.="<<&pointArray1<<   //  distorted points
    "trackIn.="<<&track<<       //  original track
    "track0.="<<track0<<         //  fitted track
    "track1.="<<track1<<         //  fitted distorted track
    "\n";
  new(&trackIn) AliExternalTrackParam(*track0);
  delete track0;
  return track1;
}





TTree* AliTPCCorrection::CreateDistortionTree(Double_t step){
  //
  // create the distortion tree on a mesh with granularity given by step
  // return the tree with distortions at given position 
  // Map is created on the mesh with given step size
  //
  TTreeSRedirector *pcstream = new TTreeSRedirector(Form("correction%s.root",GetName()));
  Float_t xyz[3];
  for (Double_t x= -250; x<250; x+=step){
    for (Double_t y= -250; y<250; y+=step){
      Double_t r    = TMath::Sqrt(x*x+y*y);
      if (r<80) continue;
      if (r>250) continue;      
      for (Double_t z= -250; z<250; z+=step){
	Int_t roc=(z>0)?0:18;
	xyz[0]=x;
	xyz[1]=y;
	xyz[2]=z;
	Double_t phi  = TMath::ATan2(y,x);
	DistortPoint(xyz,roc);
	Double_t r1    = TMath::Sqrt(xyz[0]*xyz[0]+xyz[1]*xyz[1]);
	Double_t phi1  = TMath::ATan2(xyz[1],xyz[0]);
	if ((phi1-phi)>TMath::Pi()) phi1-=TMath::Pi();
	if ((phi1-phi)<-TMath::Pi()) phi1+=TMath::Pi();
	Double_t dx = xyz[0]-x;
	Double_t dy = xyz[1]-y;
	Double_t dz = xyz[2]-z;
	Double_t dr=r1-r;
	Double_t drphi=(phi1-phi)*r;
	(*pcstream)<<"distortion"<<
	  "x="<<x<<           // original position        
	  "y="<<y<<
	  "z="<<z<<
	  "r="<<r<<
	  "phi="<<phi<<	  
	  "x1="<<xyz[0]<<      // distorted position
	  "y1="<<xyz[1]<<
	  "z1="<<xyz[2]<<
	  "r1="<<r1<<
	  "phi1="<<phi1<<
	  //
	  "dx="<<dx<<          // delta position
	  "dy="<<dy<<
	  "dz="<<dz<<
	  "dr="<<dr<<
	  "drphi="<<drphi<<
	  "\n";
      }
    }	
  }
  delete pcstream;
  TFile f(Form("correction%s.root",GetName()));
  TTree * tree = (TTree*)f.Get("distortion");
  TTree * tree2= tree->CopyTree("1");
  tree2->SetName(Form("dist%s",GetName()));
  tree2->SetDirectory(0);
  delete tree;
  return tree2;
}




void AliTPCCorrection::MakeTrackDistortionTree(TTree *tinput, Int_t dtype, Int_t ptype, const TObjArray * corrArray, Int_t step, Int_t offset, Bool_t debug ){
  //
  // Make a fit tree:
  // For each partial correction (specified in array) and given track topology (phi, theta, snp, refX)
  // calculates partial distortions
  // Partial distortion is stored in the resulting tree
  // Output is storred in the file distortion_<dettype>_<partype>.root
  // Partial  distortion is stored with the name given by correction name
  //
  //
  // Parameters of function:
  // input     - input tree
  // dtype     - distortion type 0 - ITSTPC,  1 -TPCTRD, 2 - TPCvertex , 3 - TPC-TOF,  4 - TPCTPC track crossing 
  // ppype     - parameter type
  // corrArray - array with partial corrections
  // step      - skipe entries  - if 1 all entries processed - it is slow
  // debug     0 if debug on also space points dumped - it is slow

  const Double_t kMaxSnp = 0.85;  
  const Double_t kcutSnp=0.25;
  const Double_t kcutTheta=1.;
  const Double_t kRadiusTPC=85;
  //  AliTPCROC *tpcRoc =AliTPCROC::Instance();  
  //
  const Double_t kMass = TDatabasePDG::Instance()->GetParticle("pi+")->Mass();
  //  const Double_t kB2C=-0.299792458e-3;
  const Int_t kMinEntries=20; 
  Double_t phi,theta, snp, mean,rms, entries,sector,dsec;
  Float_t refX;  
  Int_t run;
  tinput->SetBranchAddress("run",&run);
  tinput->SetBranchAddress("theta",&theta);
  tinput->SetBranchAddress("phi", &phi);
  tinput->SetBranchAddress("snp",&snp);
  tinput->SetBranchAddress("mean",&mean);
  tinput->SetBranchAddress("rms",&rms);
  tinput->SetBranchAddress("entries",&entries);
  tinput->SetBranchAddress("sector",&sector);
  tinput->SetBranchAddress("dsec",&dsec);
  tinput->SetBranchAddress("refX",&refX);
  TTreeSRedirector *pcstream = new TTreeSRedirector(Form("distortion%d_%d_%d.root",dtype,ptype,offset));
  //
  Int_t nentries=tinput->GetEntries();
  Int_t ncorr=corrArray->GetEntries();
  Double_t corrections[100]={0}; //
  Double_t tPar[5];
  Double_t cov[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  Int_t dir=0;
  if (dtype==5 || dtype==6) dtype=4;
  if (dtype==0) { dir=-1;}
  if (dtype==1) { dir=1;}
  if (dtype==2) { dir=-1;}
  if (dtype==3) { dir=1;}
  if (dtype==4) { dir=-1;}
  //
  for (Int_t ientry=offset; ientry<nentries; ientry+=step){
    tinput->GetEntry(ientry);
    if (TMath::Abs(snp)>kMaxSnp) continue;
    tPar[0]=0;
    tPar[1]=theta*refX;
    if (dtype==2)  tPar[1]=theta*kRadiusTPC;
    tPar[2]=snp;
    tPar[3]=theta;
    tPar[4]=(gRandom->Rndm()-0.5)*0.02;  // should be calculated - non equal to 0
    if (dtype==4){
      // tracks crossing CE
      tPar[1]=0;   // track at the CE
      //if (TMath::Abs(theta) <0.05) continue;  // deep cross
    }

    if (TMath::Abs(snp) >kcutSnp) continue;
    if (TMath::Abs(theta) >kcutTheta) continue;
    printf("%f\t%f\t%f\t%f\t%f\t%f\n",entries, sector,theta,snp, mean,rms);
    Double_t bz=AliTrackerBase::GetBz();
    if (dtype !=4) { //exclude TPC  - for TPC mainly non primary tracks
      if (dtype!=2 && TMath::Abs(bz)>0.1 )  tPar[4]=snp/(refX*bz*kB2C*2);
      
      if (dtype==2 && TMath::Abs(bz)>0.1 )  {
	tPar[4]=snp/(kRadiusTPC*bz*kB2C*2);//
	// snp at the TPC inner radius in case the vertex match used
      }
    }
    //
    tPar[4]+=(gRandom->Rndm()-0.5)*0.02;
    AliExternalTrackParam track(refX,phi,tPar,cov);
    Double_t xyz[3];
    track.GetXYZ(xyz);
    Int_t id=0;
    Double_t pt=1./tPar[4];
    Double_t dRrec=0; // dummy value - needed for points - e.g for laser
    //if (ptype==4 &&bz<0) mean*=-1;  // interpret as curvature -- COMMENTED out - in lookup signed 1/pt used
    Double_t refXD=refX;
    (*pcstream)<<"fit"<<
      "run="<<run<<       // run number
      "bz="<<bz<<         // magnetic filed used
      "dtype="<<dtype<<   // detector match type
      "ptype="<<ptype<<   // parameter type
      "theta="<<theta<<   // theta
      "phi="<<phi<<       // phi 
      "snp="<<snp<<       // snp
      "mean="<<mean<<     // mean dist value
      "rms="<<rms<<       // rms
      "sector="<<sector<<
      "dsec="<<dsec<<
      "refX="<<refXD<<         // referece X as double
      "gx="<<xyz[0]<<         // global position at reference
      "gy="<<xyz[1]<<         // global position at reference
      "gz="<<xyz[2]<<         // global position at reference	
      "dRrec="<<dRrec<<      // delta Radius in reconstruction
      "pt="<<pt<<            // pt
      "id="<<id<<             // track id
      "entries="<<entries;// number of entries in bin
    //
    Bool_t isOK=kTRUE;
    if (entries<kMinEntries) isOK=kFALSE;
    //
    if (dtype!=4) for (Int_t icorr=0; icorr<ncorr; icorr++) {
      AliTPCCorrection *corr = (AliTPCCorrection*)corrArray->At(icorr);
      corrections[icorr]=0;
      if (entries>kMinEntries){
	AliExternalTrackParam trackIn(refX,phi,tPar,cov);
	AliExternalTrackParam *trackOut = 0;
	if (debug) trackOut=corr->FitDistortedTrack(trackIn, refX, dir,pcstream);
	if (!debug) trackOut=corr->FitDistortedTrack(trackIn, refX, dir,0);
	if (dtype==0) {dir= -1;}
	if (dtype==1) {dir=  1;}
	if (dtype==2) {dir= -1;}
	if (dtype==3) {dir=  1;}
	//
	if (trackOut){
	  if (!AliTrackerBase::PropagateTrackTo(&trackIn,refX,kMass,5,kTRUE,kMaxSnp)) isOK=kFALSE;
	  if (!trackOut->Rotate(trackIn.GetAlpha())) isOK=kFALSE;
	  if (!AliTrackerBase::PropagateTrackTo(trackOut,trackIn.GetX(),kMass,5,kFALSE,kMaxSnp)) isOK=kFALSE;
	  //	  trackOut->PropagateTo(trackIn.GetX(),AliTrackerBase::GetBz());
	  //	  
	  corrections[icorr]= trackOut->GetParameter()[ptype]-trackIn.GetParameter()[ptype];
	  delete trackOut;      
	}else{
	  corrections[icorr]=0;
	  isOK=kFALSE;
	}
	//if (ptype==4 &&bz<0) corrections[icorr]*=-1;  // interpret as curvature - commented out
      }      
      (*pcstream)<<"fit"<<
	Form("%s=",corr->GetName())<<corrections[icorr];   // dump correction value
    }
  
    if (dtype==4) for (Int_t icorr=0; icorr<ncorr; icorr++) {
      //
      // special case of the TPC tracks crossing the CE
      //
      AliTPCCorrection *corr = (AliTPCCorrection*)corrArray->At(icorr);
      corrections[icorr]=0;
      if (entries>kMinEntries){
	AliExternalTrackParam trackIn0(refX,phi,tPar,cov); //Outer - direction to vertex
	AliExternalTrackParam trackIn1(refX,phi,tPar,cov); //Inner - direction magnet 
	AliExternalTrackParam *trackOut0 = 0;
	AliExternalTrackParam *trackOut1 = 0;
	//
	if (debug)  trackOut0=corr->FitDistortedTrack(trackIn0, refX, dir,pcstream);
	if (!debug) trackOut0=corr->FitDistortedTrack(trackIn0, refX, dir,0);
	if (debug)  trackOut1=corr->FitDistortedTrack(trackIn1, refX, -dir,pcstream);
	if (!debug) trackOut1=corr->FitDistortedTrack(trackIn1, refX, -dir,0);
	//
	if (trackOut0 && trackOut1){
	  if (!AliTrackerBase::PropagateTrackTo(&trackIn0,refX,kMass,5,kTRUE,kMaxSnp))  isOK=kFALSE;
	  if (!AliTrackerBase::PropagateTrackTo(&trackIn0,refX,kMass,1,kFALSE,kMaxSnp)) isOK=kFALSE;
	  if (!trackOut0->Rotate(trackIn0.GetAlpha())) isOK=kFALSE;
	  if (!AliTrackerBase::PropagateTrackTo(trackOut0,trackIn0.GetX(),kMass,5,kFALSE,kMaxSnp)) isOK=kFALSE;
	  //
	  if (!AliTrackerBase::PropagateTrackTo(&trackIn1,refX,kMass,5,kTRUE,kMaxSnp)) isOK=kFALSE;
	  if (!trackIn1.Rotate(trackIn0.GetAlpha()))  isOK=kFALSE;
	  if (!AliTrackerBase::PropagateTrackTo(&trackIn1,trackIn0.GetX(),kMass,1,kFALSE,kMaxSnp)) isOK=kFALSE;
	  if (!trackOut1->Rotate(trackIn1.GetAlpha())) isOK=kFALSE;	  
	  if (!AliTrackerBase::PropagateTrackTo(trackOut1,trackIn1.GetX(),kMass,5,kFALSE,kMaxSnp)) isOK=kFALSE;
	  //
	  corrections[icorr] = (trackOut0->GetParameter()[ptype]-trackIn0.GetParameter()[ptype]);
	  corrections[icorr]-= (trackOut1->GetParameter()[ptype]-trackIn1.GetParameter()[ptype]);
	  if (isOK)
	    if ((TMath::Abs(trackOut0->GetX()-trackOut1->GetX())>0.1)||
		(TMath::Abs(trackOut0->GetX()-trackIn1.GetX())>0.1)||
		(TMath::Abs(trackOut0->GetAlpha()-trackOut1->GetAlpha())>0.00001)||
		(TMath::Abs(trackOut0->GetAlpha()-trackIn1.GetAlpha())>0.00001)||
		(TMath::Abs(trackIn0.GetTgl()-trackIn1.GetTgl())>0.0001)||
		(TMath::Abs(trackIn0.GetSnp()-trackIn1.GetSnp())>0.0001)
		){
	      isOK=kFALSE;
	    }	  	  
	  delete trackOut0;      
	  delete trackOut1;    	  
	}else{
	  corrections[icorr]=0;
	  isOK=kFALSE;
	}
	//
	//if (ptype==4 &&bz<0) corrections[icorr]*=-1;  // interpret as curvature - commented out no in lookup
      }      
      (*pcstream)<<"fit"<<
	Form("%s=",corr->GetName())<<corrections[icorr];   // dump correction value
    }
    //
    (*pcstream)<<"fit"<<"isOK="<<isOK<<"\n";
  }


  delete pcstream;
}



void AliTPCCorrection::MakeSectorDistortionTree(TTree *tinput, Int_t dtype, Int_t ptype, const TObjArray * corrArray, Int_t step, Int_t offset, Bool_t debug ){
  //
  // Make a fit tree:
  // For each partial correction (specified in array) and given track topology (phi, theta, snp, refX)
  // calculates partial distortions
  // Partial distortion is stored in the resulting tree
  // Output is storred in the file distortion_<dettype>_<partype>.root
  // Partial  distortion is stored with the name given by correction name
  //
  //
  // Parameters of function:
  // input     - input tree
  // dtype     - distortion type 10 - IROC-OROC 
  // ppype     - parameter type
  // corrArray - array with partial corrections
  // step      - skipe entries  - if 1 all entries processed - it is slow
  // debug     0 if debug on also space points dumped - it is slow

  const Double_t kMaxSnp = 0.8;  
  const Int_t kMinEntries=200; 
  //  AliTPCROC *tpcRoc =AliTPCROC::Instance();  
  //
  const Double_t kMass = TDatabasePDG::Instance()->GetParticle("pi+")->Mass();
  //  const Double_t kB2C=-0.299792458e-3;
  Double_t phi,theta, snp, mean,rms, entries,sector,dsec,globalZ;
  Int_t isec1, isec0;
  Double_t refXD;
  Float_t refX;
  Int_t run;
  tinput->SetBranchAddress("run",&run);
  tinput->SetBranchAddress("theta",&theta);
  tinput->SetBranchAddress("phi", &phi);
  tinput->SetBranchAddress("snp",&snp);
  tinput->SetBranchAddress("mean",&mean);
  tinput->SetBranchAddress("rms",&rms);
  tinput->SetBranchAddress("entries",&entries);
  tinput->SetBranchAddress("sector",&sector);
  tinput->SetBranchAddress("dsec",&dsec);
  tinput->SetBranchAddress("refX",&refXD);
  tinput->SetBranchAddress("z",&globalZ);
  tinput->SetBranchAddress("isec0",&isec0);
  tinput->SetBranchAddress("isec1",&isec1);
  TTreeSRedirector *pcstream = new TTreeSRedirector(Form("distortionSector%d_%d_%d.root",dtype,ptype,offset));
  //
  Int_t nentries=tinput->GetEntries();
  Int_t ncorr=corrArray->GetEntries();
  Double_t corrections[100]={0}; //
  Double_t tPar[5];
  Double_t cov[15]={0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  Int_t dir=0;
  //
  for (Int_t ientry=offset; ientry<nentries; ientry+=step){
    tinput->GetEntry(ientry);
    refX=refXD;
    Int_t id=-1;
    if (TMath::Abs(TMath::Abs(isec0%18)-TMath::Abs(isec1%18))==0) id=1;  // IROC-OROC - opposite side
    if (TMath::Abs(TMath::Abs(isec0%36)-TMath::Abs(isec1%36))==0) id=2;  // IROC-OROC - same side
    if (dtype==10  && id==-1) continue;
    //
    dir=-1;
    tPar[0]=0;
    tPar[1]=globalZ;
    tPar[2]=snp;
    tPar[3]=theta;
    tPar[4]=(gRandom->Rndm()-0.1)*0.2;  //
    Double_t pt=1./tPar[4];
    //
    printf("%f\t%f\t%f\t%f\t%f\t%f\n",entries, sector,theta,snp, mean,rms);
    Double_t bz=AliTrackerBase::GetBz();
    AliExternalTrackParam track(refX,phi,tPar,cov);    
    Double_t xyz[3],xyzIn[3],xyzOut[3];
    track.GetXYZ(xyz);
    track.GetXYZAt(85,bz,xyzIn);    
    track.GetXYZAt(245,bz,xyzOut);    
    Double_t phiIn  = TMath::ATan2(xyzIn[1],xyzIn[0]);
    Double_t phiOut = TMath::ATan2(xyzOut[1],xyzOut[0]);
    Double_t phiRef = TMath::ATan2(xyz[1],xyz[0]);
    Int_t sectorRef = TMath::Nint(9.*phiRef/TMath::Pi()-0.5);
    Int_t sectorIn  = TMath::Nint(9.*phiIn/TMath::Pi()-0.5);
    Int_t sectorOut = TMath::Nint(9.*phiOut/TMath::Pi()-0.5);
    //
    Bool_t isOK=kTRUE; 
    if (sectorIn!=sectorOut) isOK=kFALSE;  // requironment - cluster in the same sector
    if (sectorIn!=sectorRef) isOK=kFALSE;  // requironment - cluster in the same sector
    if (entries<kMinEntries/(1+TMath::Abs(globalZ/100.))) isOK=kFALSE;  // requironment - minimal amount of tracks in bin
    // Do downscale
    if (TMath::Abs(theta)>1) isOK=kFALSE;
    //
    Double_t dRrec=0; // dummy value - needed for points - e.g for laser
    //
    (*pcstream)<<"fit"<<
      "run="<<run<<       //run
      "bz="<<bz<<         // magnetic filed used
      "dtype="<<dtype<<   // detector match type
      "ptype="<<ptype<<   // parameter type
      "theta="<<theta<<   // theta
      "phi="<<phi<<       // phi 
      "snp="<<snp<<       // snp
      "mean="<<mean<<     // mean dist value
      "rms="<<rms<<       // rms
      "sector="<<sector<<
      "dsec="<<dsec<<
      "refX="<<refXD<<         // referece X
      "gx="<<xyz[0]<<         // global position at reference
      "gy="<<xyz[1]<<         // global position at reference
      "gz="<<xyz[2]<<         // global position at reference	
      "dRrec="<<dRrec<<      // delta Radius in reconstruction
      "pt="<<pt<<      //pt
      "id="<<id<<             // track id
      "entries="<<entries;// number of entries in bin
    //
    AliExternalTrackParam *trackOut0 = 0;
    AliExternalTrackParam *trackOut1 = 0;
    AliExternalTrackParam *ptrackIn0 = 0;
    AliExternalTrackParam *ptrackIn1 = 0;

    for (Int_t icorr=0; icorr<ncorr; icorr++) {
      //
      // special case of the TPC tracks crossing the CE
      //
      AliTPCCorrection *corr = (AliTPCCorrection*)corrArray->At(icorr);
      corrections[icorr]=0;
      if (entries>kMinEntries &&isOK){
	AliExternalTrackParam trackIn0(refX,phi,tPar,cov);
	AliExternalTrackParam trackIn1(refX,phi,tPar,cov);
	ptrackIn1=&trackIn0;
	ptrackIn0=&trackIn1;
	//
	if (debug)  trackOut0=corr->FitDistortedTrack(trackIn0, refX, dir,pcstream);
	if (!debug) trackOut0=corr->FitDistortedTrack(trackIn0, refX, dir,0);
	if (debug)  trackOut1=corr->FitDistortedTrack(trackIn1, refX, -dir,pcstream);
	if (!debug) trackOut1=corr->FitDistortedTrack(trackIn1, refX, -dir,0);
	//
	if (trackOut0 && trackOut1){
	  //
	  if (!AliTrackerBase::PropagateTrackTo(&trackIn0,refX,kMass,1,kTRUE,kMaxSnp))  isOK=kFALSE;
	  if (!AliTrackerBase::PropagateTrackTo(&trackIn0,refX,kMass,1,kFALSE,kMaxSnp)) isOK=kFALSE;
	  // rotate all tracks to the same frame
	  if (!trackOut0->Rotate(trackIn0.GetAlpha())) isOK=kFALSE;
	  if (!trackIn1.Rotate(trackIn0.GetAlpha()))  isOK=kFALSE;
	  if (!trackOut1->Rotate(trackIn0.GetAlpha())) isOK=kFALSE;	  
	  //
	  if (!AliTrackerBase::PropagateTrackTo(trackOut0,refX,kMass,1,kFALSE,kMaxSnp)) isOK=kFALSE;
	  if (!AliTrackerBase::PropagateTrackTo(&trackIn1,refX,kMass,1,kFALSE,kMaxSnp)) isOK=kFALSE;
	  if (!AliTrackerBase::PropagateTrackTo(trackOut1,refX,kMass,1,kFALSE,kMaxSnp)) isOK=kFALSE;
	  //
	  corrections[icorr] = (trackOut0->GetParameter()[ptype]-trackIn0.GetParameter()[ptype]);
	  corrections[icorr]-= (trackOut1->GetParameter()[ptype]-trackIn1.GetParameter()[ptype]);
	  (*pcstream)<<"fitDebug"<< // just to debug the correction
	    "mean="<<mean<<
	    "pIn0.="<<ptrackIn0<<
	    "pIn1.="<<ptrackIn1<<
	    "pOut0.="<<trackOut0<<
	    "pOut1.="<<trackOut1<<
	    "refX="<<refXD<<
	    "\n";
	  delete trackOut0;      
	  delete trackOut1;      
	}else{
	  corrections[icorr]=0;
	  isOK=kFALSE;
	}
      }      
      (*pcstream)<<"fit"<<
	Form("%s=",corr->GetName())<<corrections[icorr];   // dump correction value
    }
    //
    (*pcstream)<<"fit"<<"isOK="<<isOK<<"\n";
  }
  delete pcstream;
}



void AliTPCCorrection::MakeLaserDistortionTreeOld(TTree* tree, TObjArray *corrArray, Int_t itype){
  //
  // Make a laser fit tree for global minimization
  //
  const Double_t cutErrY=0.1;
  const Double_t cutErrZ=0.1;
  const Double_t kEpsilon=0.00000001;
  const Double_t kMaxDist=1.;  // max distance - space correction
  const Double_t kMaxRMS=0.05;  // max distance -between point and local mean
  TVectorD *vecdY=0;
  TVectorD *vecdZ=0;
  TVectorD *veceY=0;
  TVectorD *veceZ=0;
  AliTPCLaserTrack *ltr=0;
  AliTPCLaserTrack::LoadTracks();
  tree->SetBranchAddress("dY.",&vecdY);
  tree->SetBranchAddress("dZ.",&vecdZ);
  tree->SetBranchAddress("eY.",&veceY);
  tree->SetBranchAddress("eZ.",&veceZ);
  tree->SetBranchAddress("LTr.",&ltr);
  Int_t entries= tree->GetEntries();
  TTreeSRedirector *pcstream= new TTreeSRedirector("distortionLaser_0.root");
  Double_t bz=AliTrackerBase::GetBz();
  // 

  for (Int_t ientry=0; ientry<entries; ientry++){
    tree->GetEntry(ientry);
    if (!ltr->GetVecGX()){
      ltr->UpdatePoints();
    }
    TVectorD * delta= (itype==0)? vecdY:vecdZ;
    TVectorD * err= (itype==0)? veceY:veceZ;
    TLinearFitter  fitter(2,"pol1");
    for (Int_t iter=0; iter<2; iter++){
      Double_t kfit0=0, kfit1=0;
      Int_t npoints=fitter.GetNpoints();
      if (npoints>80){
	fitter.Eval();
	kfit0=fitter.GetParameter(0);
	kfit1=fitter.GetParameter(1);
      }
      for (Int_t irow=0; irow<159; irow++){
	Bool_t isOK=kTRUE;
	Int_t isOKF=0;
	Int_t nentries = 1000;
	if (veceY->GetMatrixArray()[irow]>cutErrY||veceZ->GetMatrixArray()[irow]>cutErrZ) nentries=0;
	if (veceY->GetMatrixArray()[irow]<kEpsilon||veceZ->GetMatrixArray()[irow]<kEpsilon) nentries=0;
	Int_t dtype=5;
	Double_t array[10];
	Int_t first3=TMath::Max(irow-3,0);
	Int_t last3 =TMath::Min(irow+3,159);
	Int_t counter=0;
	if ((*ltr->GetVecSec())[irow]>=0 && err) {
	  for (Int_t jrow=first3; jrow<=last3; jrow++){
	    if ((*ltr->GetVecSec())[irow]!= (*ltr->GetVecSec())[jrow]) continue;
	    if ((*err)[jrow]<kEpsilon) continue;
	    array[counter]=(*delta)[jrow];
	    counter++;
	  }
	}    
	Double_t rms3  = 0;
	Double_t mean3 = 0;
	if (counter>2){
	  rms3  = TMath::RMS(counter,array);
	  mean3  = TMath::Mean(counter,array);
	}else{
	  isOK=kFALSE;
	}
	Double_t phi   =(*ltr->GetVecPhi())[irow];
	Double_t theta =ltr->GetTgl();
	Double_t mean=delta->GetMatrixArray()[irow];
	Double_t gx=0,gy=0,gz=0;
	Double_t snp = (*ltr->GetVecP2())[irow];
	Double_t dRrec=0;
	//      Double_t rms = err->GetMatrixArray()[irow];
	//
	gx = (*ltr->GetVecGX())[irow];
	gy = (*ltr->GetVecGY())[irow];
	gz = (*ltr->GetVecGZ())[irow];
	//
	// get delta R used in reconstruction
	AliTPCcalibDB*  calib=AliTPCcalibDB::Instance();  
	AliTPCCorrection * correction = calib->GetTPCComposedCorrection(AliTrackerBase::GetBz());
	//      const AliTPCRecoParam * recoParam = calib->GetTransform()->GetCurrentRecoParam();
	//Double_t xyz0[3]={gx,gy,gz};
	Double_t oldR=TMath::Sqrt(gx*gx+gy*gy);
	Double_t fphi = TMath::ATan2(gy,gx);      
	Double_t fsector = 9.*fphi/TMath::Pi();
	if (fsector<0) fsector+=18;
	Double_t dsec = fsector-Int_t(fsector)-0.5;
	Double_t refX=0;
	Int_t id= ltr->GetId();
	Double_t pt=0;
	//
	if (1 && oldR>1) {
	  Float_t xyz1[3]={static_cast<Float_t>(gx),static_cast<Float_t>(gy),static_cast<Float_t>(gz)};
	  Int_t sector=(gz>0)?0:18;
	  correction->CorrectPoint(xyz1, sector);
	  refX=TMath::Sqrt(xyz1[0]*xyz1[0]+xyz1[1]*xyz1[1]);
	  dRrec=oldR-refX;
	} 
	if (TMath::Abs(rms3)>kMaxRMS) isOK=kFALSE;
	if (TMath::Abs(mean-mean3)>kMaxRMS) isOK=kFALSE;
	if (counter<4) isOK=kFALSE;	
	if (npoints<90) isOK=kFALSE;	
	if (isOK){
	  fitter.AddPoint(&refX,mean);
	}
	Double_t deltaF=kfit0+kfit1*refX;
	if (iter==1){
	  (*pcstream)<<"fitFull"<<  // dumpe also intermediate results
	    "bz="<<bz<<         // magnetic filed used
	    "dtype="<<dtype<<   // detector match type
	    "ptype="<<itype<<   // parameter type
	    "theta="<<theta<<   // theta
	    "phi="<<phi<<       // phi 
	    "snp="<<snp<<       // snp
	    "mean="<<mean3<<     // mean dist value
	    "rms="<<rms3<<       // rms
	    "deltaF="<<deltaF<<
	    "npoints="<<npoints<<  //number of points
	    "mean3="<<mean3<<     // mean dist value
	    "rms3="<<rms3<<       // rms
	    "counter="<<counter<<
	    "sector="<<fsector<<
	    "dsec="<<dsec<<
	    //
	    "refX="<<refX<<      // reference radius
	    "gx="<<gx<<         // global position
	    "gy="<<gy<<         // global position
	    "gz="<<gz<<         // global position
	    "dRrec="<<dRrec<<      // delta Radius in reconstruction
	    "id="<<id<<     //bundle	
	    "entries="<<nentries<<// number of entries in bin
	    "\n";
	}
	if (iter==1) (*pcstream)<<"fit"<<  // dump valus for fit
	  "bz="<<bz<<         // magnetic filed used
	  "dtype="<<dtype<<   // detector match type
	  "ptype="<<itype<<   // parameter type
	  "theta="<<theta<<   // theta
	  "phi="<<phi<<       // phi 
	  "snp="<<snp<<       // snp
	  "mean="<<mean3<<     // mean dist value
	  "rms="<<rms3<<       // rms
	  "sector="<<fsector<<
	  "dsec="<<dsec<<
	  //
	  "refX="<<refX<<      // reference radius
	  "gx="<<gx<<         // global position
	  "gy="<<gy<<         // global position
	  "gz="<<gz<<         // global position
	  "dRrec="<<dRrec<<      // delta Radius in reconstruction
	  "pt="<<pt<<           //pt
	  "id="<<id<<     //bundle	
	  "entries="<<nentries;// number of entries in bin
	//
	//    
	Double_t ky = TMath::Tan(TMath::ASin(snp));
	Int_t ncorr = corrArray->GetEntries();
	Double_t r0   = TMath::Sqrt(gx*gx+gy*gy);
	Double_t phi0 = TMath::ATan2(gy,gx);
	Double_t distortions[1000]={0};
	Double_t distortionsR[1000]={0};
	if (iter==1){
	  for (Int_t icorr=0; icorr<ncorr; icorr++) {
	    AliTPCCorrection *corr = (AliTPCCorrection*)corrArray->At(icorr);
	    Float_t distPoint[3]={static_cast<Float_t>(gx),static_cast<Float_t>(gy),static_cast<Float_t>(gz)}; 
	    Int_t sector= (gz>0)? 0:18;
	    if (r0>80){
	      corr->DistortPoint(distPoint, sector);
	    }
	    // Double_t value=distPoint[2]-gz;
	    if (itype==0 && r0>1){
	      Double_t r1   = TMath::Sqrt(distPoint[0]*distPoint[0]+distPoint[1]*distPoint[1]);
	      Double_t phi1 = TMath::ATan2(distPoint[1],distPoint[0]);
	      Double_t drphi= r0*(phi1-phi0);
	      Double_t dr   = r1-r0;
	      distortions[icorr]  = drphi-ky*dr;
	      distortionsR[icorr] = dr;
	    }
	    if (TMath::Abs(distortions[icorr])>kMaxDist) {isOKF=icorr+1; isOK=kFALSE; }
	    if (TMath::Abs(distortionsR[icorr])>kMaxDist) {isOKF=icorr+1; isOK=kFALSE;}
	    (*pcstream)<<"fit"<<
	      Form("%s=",corr->GetName())<<distortions[icorr];    // dump correction value
	  }
	  (*pcstream)<<"fit"<<"isOK="<<isOK<<"\n";
	}
      }
    }
  }
  delete pcstream;
}



void   AliTPCCorrection::MakeDistortionMap(THnSparse * his0, TTreeSRedirector * const pcstream, const char* hname, Int_t run, Float_t refX, Int_t type, Int_t integ){
  //
  // make a distortion map out ou fthe residual histogram
  // Results are written to the debug streamer - pcstream
  // Parameters:
  //   his0       - input (4D) residual histogram
  //   pcstream   - file to write the tree
  //   run        - run number
  //   refX       - track matching reference X
  //   type       - 0- y 1-z,2 -snp, 3-theta, 4=1/pt
  // THnSparse axes:
  // OBJ: TAxis     #Delta  #Delta
  // OBJ: TAxis     tanTheta        tan(#Theta)
  // OBJ: TAxis     phi     #phi
  // OBJ: TAxis     snp     snp

  // marian.ivanov@cern.ch
  const Int_t kMinEntries=10;
  Double_t bz=AliTrackerBase::GetBz();
  Int_t idim[4]={0,1,2,3};
  //
  //
  //
  Int_t nbins3=his0->GetAxis(3)->GetNbins();
  Int_t first3=his0->GetAxis(3)->GetFirst();
  Int_t last3 =his0->GetAxis(3)->GetLast();
  //
  for (Int_t ibin3=first3; ibin3<last3; ibin3+=1){   // axis 3 - local angle
    his0->GetAxis(3)->SetRange(TMath::Max(ibin3-integ,1),TMath::Min(ibin3+integ,nbins3));
    Double_t      x3= his0->GetAxis(3)->GetBinCenter(ibin3);
    THnSparse * his3= his0->Projection(3,idim);         //projected histogram according selection 3
    //
    Int_t nbins2    = his3->GetAxis(2)->GetNbins();
    Int_t first2    = his3->GetAxis(2)->GetFirst();
    Int_t last2     = his3->GetAxis(2)->GetLast();
    //
    for (Int_t ibin2=first2; ibin2<last2; ibin2+=1){   // axis 2 - phi
      his3->GetAxis(2)->SetRange(TMath::Max(ibin2-integ,1),TMath::Min(ibin2+integ,nbins2));
      Double_t      x2= his3->GetAxis(2)->GetBinCenter(ibin2);
      THnSparse * his2= his3->Projection(2,idim);         //projected histogram according selection 2
      Int_t nbins1     = his2->GetAxis(1)->GetNbins();
      Int_t first1     = his2->GetAxis(1)->GetFirst();
      Int_t last1      = his2->GetAxis(1)->GetLast();
      for (Int_t ibin1=first1; ibin1<last1; ibin1++){   //axis 1 - theta
	//
	Double_t       x1= his2->GetAxis(1)->GetBinCenter(ibin1);
	his2->GetAxis(1)->SetRange(TMath::Max(ibin1-1,1),TMath::Min(ibin1+1,nbins1));
	if (TMath::Abs(x1)<0.1){
	  if (x1<0) his2->GetAxis(1)->SetRange(TMath::Max(ibin1-1,1),TMath::Min(ibin1,nbins1));
	  if (x1>0) his2->GetAxis(1)->SetRange(TMath::Max(ibin1,1),TMath::Min(ibin1+1,nbins1));
	}
	if (TMath::Abs(x1)<0.06){
	  his2->GetAxis(1)->SetRange(TMath::Max(ibin1,1),TMath::Min(ibin1,nbins1));
	}
	TH1 * hisDelta = his2->Projection(0);
	//
	Double_t entries = hisDelta->GetEntries();
	Double_t mean=0, rms=0;
	if (entries>kMinEntries){
	  mean    = hisDelta->GetMean(); 
	  rms = hisDelta->GetRMS(); 
	}
	Double_t sector = 9.*x2/TMath::Pi();
	if (sector<0) sector+=18;
	Double_t dsec = sector-Int_t(sector)-0.5;
	Double_t z=refX*x1;
	(*pcstream)<<hname<<
	  "run="<<run<<
	  "bz="<<bz<<
	  "theta="<<x1<<
	  "phi="<<x2<<
	  "z="<<z<<            // dummy z
	  "snp="<<x3<<
	  "entries="<<entries<<
	  "mean="<<mean<<
	  "rms="<<rms<<
	  "refX="<<refX<<   // track matching refernce plane
	  "type="<<type<<   //
	  "sector="<<sector<<
	  "dsec="<<dsec<<
	  "\n";
	delete hisDelta;
	//printf("%f\t%f\t%f\t%f\t%f\n",x3,x2,x1, entries,mean);
      }
      delete his2;
    }
    delete his3;
  }
}




void   AliTPCCorrection::MakeDistortionMapCosmic(THnSparse * hisInput, TTreeSRedirector * const pcstream, const char* hname, Int_t run, Float_t refX, Int_t type){
  //
  // make a distortion map out ou fthe residual histogram
  // Results are written to the debug streamer - pcstream
  // Parameters:
  //   his0       - input (4D) residual histogram
  //   pcstream   - file to write the tree
  //   run        - run number
  //   refX       - track matching reference X
  //   type       - 0- y 1-z,2 -snp, 3-theta, 4=1/pt
  // marian.ivanov@cern.ch
  //
  //  Histo axeses
  //   Collection name='TObjArray', class='TObjArray', size=16
  //  0. OBJ: TAxis     #Delta  #Delta
  //  1. OBJ: TAxis     N_{cl}  N_{cl}
  //  2. OBJ: TAxis     dca_{r} (cm)    dca_{r} (cm)
  //  3. OBJ: TAxis     z (cm)  z (cm)
  //  4. OBJ: TAxis     sin(#phi)       sin(#phi)
  //  5. OBJ: TAxis     tan(#theta)     tan(#theta)
  //  6. OBJ: TAxis     1/pt (1/GeV)    1/pt (1/GeV)
  //  7. OBJ: TAxis     pt (GeV)        pt (GeV)
  //  8. OBJ: TAxis     alpha   alpha
  const Int_t kMinEntries=10;
  //
  //  1. make default selections
  //
  TH1 * hisDelta=0;
  Int_t idim0[4]={0 , 5, 8,  3};   // delta, theta, alpha, z
  hisInput->GetAxis(1)->SetRangeUser(110,190);   //long tracks
  hisInput->GetAxis(2)->SetRangeUser(-10,35);    //tracks close to beam pipe
  hisInput->GetAxis(4)->SetRangeUser(-0.3,0.3); //small snp at TPC entrance
  hisInput->GetAxis(7)->SetRangeUser(3,100); //"high pt tracks"
  hisDelta= hisInput->Projection(0);
  hisInput->GetAxis(0)->SetRangeUser(-6.*hisDelta->GetRMS(), +6.*hisDelta->GetRMS());
  delete hisDelta;
  THnSparse *his0=  hisInput->Projection(4,idim0);
  //
  // 2. Get mean in diferent bins
  //
  Int_t nbins1=his0->GetAxis(1)->GetNbins();
  Int_t first1=his0->GetAxis(1)->GetFirst();
  Int_t last1 =his0->GetAxis(1)->GetLast();
  //
  Double_t bz=AliTrackerBase::GetBz();
  Int_t idim[4]={0,1, 2,  3};  // delta, theta,alpha,z
  //
  for (Int_t ibin1=first1; ibin1<=last1; ibin1++){   //axis 1 - theta
    //
    Double_t       x1= his0->GetAxis(1)->GetBinCenter(ibin1);  
    his0->GetAxis(1)->SetRange(TMath::Max(ibin1-1,1),TMath::Min(ibin1+1,nbins1));
    //
    THnSparse * his1 = his0->Projection(4,idim);  // projected histogram according range1
    Int_t nbins3     = his1->GetAxis(3)->GetNbins();
    Int_t first3     = his1->GetAxis(3)->GetFirst();
    Int_t last3      = his1->GetAxis(3)->GetLast();
    //
    for (Int_t ibin3=first3-1; ibin3<=last3; ibin3+=1){   // axis 3 - z at "vertex"
      his1->GetAxis(3)->SetRange(TMath::Max(ibin3-1,1),TMath::Min(ibin3+1,nbins3));
      Double_t      x3= his1->GetAxis(3)->GetBinCenter(ibin3);
      if (ibin3<first3) {
	his1->GetAxis(3)->SetRangeUser(-1,1);
	x3=0;
      }
      THnSparse * his3= his1->Projection(4,idim);         //projected histogram according selection 3
      Int_t nbins2    = his3->GetAxis(2)->GetNbins();
      Int_t first2    = his3->GetAxis(2)->GetFirst();
      Int_t last2     = his3->GetAxis(2)->GetLast();
      //
      for (Int_t ibin2=first2; ibin2<=last2; ibin2+=1){
	his3->GetAxis(2)->SetRange(TMath::Max(ibin2-1,1),TMath::Min(ibin2+1,nbins2));
	Double_t x2= his3->GetAxis(2)->GetBinCenter(ibin2);
	hisDelta = his3->Projection(0);
	//
	Double_t entries = hisDelta->GetEntries();
	Double_t mean=0, rms=0;
	if (entries>kMinEntries){
	  mean    = hisDelta->GetMean(); 
	  rms = hisDelta->GetRMS(); 
	}
	Double_t sector = 9.*x2/TMath::Pi();
	if (sector<0) sector+=18;
	Double_t dsec = sector-Int_t(sector)-0.5;
	Double_t snp=0;  // dummy snp - equal 0
	(*pcstream)<<hname<<
	  "run="<<run<<
	  "bz="<<bz<<            // magnetic field
	  "theta="<<x1<<         // theta
	  "phi="<<x2<<           // phi (alpha)
	  "z="<<x3<<             // z at "vertex"
	  "snp="<<snp<<          // dummy snp
	  "entries="<<entries<<  // entries in bin
	  "mean="<<mean<<        // mean
	  "rms="<<rms<<
	  "refX="<<refX<<        // track matching refernce plane
	  "type="<<type<<        // parameter type
	  "sector="<<sector<<    // sector
	  "dsec="<<dsec<<        // dummy delta sector
	  "\n";
	delete hisDelta;
	printf("%f\t%f\t%f\t%f\t%f\n",x1,x3,x2, entries,mean);
      }
      delete his3;
    }
    delete his1;
  }
  delete his0;
}



void   AliTPCCorrection::MakeDistortionMapSector(THnSparse * hisInput, TTreeSRedirector * const pcstream, const char* hname, Int_t run, Int_t type){
  //
  // make a distortion map out of the residual histogram
  // Results are written to the debug streamer - pcstream
  // Parameters:
  //   his0       - input (4D) residual histogram
  //   pcstream   - file to write the tree
  //   run        - run number
  //   type       - 0- y 1-z,2 -snp, 3-theta
  // marian.ivanov@cern.ch

  //Collection name='TObjArray', class='TObjArray', size=16
  //0  OBJ: TAxis     delta   delta
  //1  OBJ: TAxis     phi     phi
  //2  OBJ: TAxis     localX  localX
  //3  OBJ: TAxis     kY      kY
  //4  OBJ: TAxis     kZ      kZ
  //5  OBJ: TAxis     is1     is1
  //6  OBJ: TAxis     is0     is0
  //7. OBJ: TAxis     z       z
  //8. OBJ: TAxis     IsPrimary       IsPrimary

  const Int_t kMinEntries=10;
  THnSparse * hisSector0=0;
  TH1 * htemp=0;    // histogram to calculate mean value of parameter
  Double_t bz=AliTrackerBase::GetBz();

  //
  // Loop over pair of sector:
  // isPrim         - 8  ==> 8
  // isec0          - 6  ==> 7
  //   isec1        - 5  ==> 6
  //     refX       - 2  ==> 5
  //
  //     phi        - 1  ==> 4
  //       z        - 7  ==> 3
  //         snp    - 3  ==> 2
  //           theta- 4  ==> 1
  //                  0  ==> 0;           
  for (Int_t isec0=0; isec0<72; isec0++){
    Int_t index0[9]={0, 4, 3, 7, 1, 2, 5, 6,8}; //regroup indeces
    //
    //hisInput->GetAxis(8)->SetRangeUser(-0.1,0.4);  // select secondaries only ? - get out later ?
    hisInput->GetAxis(6)->SetRangeUser(isec0-0.1,isec0+0.1);
    hisSector0=hisInput->Projection(7,index0);
    //
    //
    for (Int_t isec1=isec0+1; isec1<72; isec1++){    
      //if (isec1!=isec0+36) continue;
      if ( TMath::Abs((isec0%18)-(isec1%18))>1.5 && TMath::Abs((isec0%18)-(isec1%18))<16.5) continue;
      printf("Sectors %d\t%d\n",isec1,isec0);
      hisSector0->GetAxis(6)->SetRangeUser(isec1-0.1,isec1+0.1);      
      TH1 * hisX=hisSector0->Projection(5);
      Double_t refX= hisX->GetMean();
      delete hisX;
      TH1 *hisDelta=hisSector0->Projection(0);
      Double_t dmean = hisDelta->GetMean();
      Double_t drms = hisDelta->GetRMS();
      hisSector0->GetAxis(0)->SetRangeUser(dmean-5.*drms, dmean+5.*drms);
      delete hisDelta;
      //
      //  1. make default selections
      //
      Int_t idim0[5]={0 , 1, 2, 3, 4}; // {delta, theta, snp, z, phi }
      THnSparse *hisSector1=  hisSector0->Projection(5,idim0);
      //
      // 2. Get mean in diferent bins
      //
      Int_t idim[5]={0, 1, 2,  3, 4};  // {delta, theta-1,snp-2 ,z-3, phi-4}
      //
      //      Int_t nbinsPhi=hisSector1->GetAxis(4)->GetNbins();
      Int_t firstPhi=hisSector1->GetAxis(4)->GetFirst();
      Int_t lastPhi =hisSector1->GetAxis(4)->GetLast();
      //
      for (Int_t ibinPhi=firstPhi; ibinPhi<=lastPhi; ibinPhi+=1){   //axis 4 - phi
	//
	// Phi loop
	//
	Double_t       xPhi= hisSector1->GetAxis(4)->GetBinCenter(ibinPhi);         
	Double_t psec    = (9*xPhi/TMath::Pi());
	if (psec<0) psec+=18;
	Bool_t isOK0=kFALSE;
	Bool_t isOK1=kFALSE;
	if (TMath::Abs(psec-isec0%18-0.5)<1. || TMath::Abs(psec-isec0%18-17.5)<1.)  isOK0=kTRUE;
	if (TMath::Abs(psec-isec1%18-0.5)<1. || TMath::Abs(psec-isec1%18-17.5)<1.)  isOK1=kTRUE;
	if (!isOK0) continue;
	if (!isOK1) continue;
	//
	hisSector1->GetAxis(4)->SetRange(TMath::Max(ibinPhi-2,firstPhi),TMath::Min(ibinPhi+2,lastPhi));
	if (isec1!=isec0+36) {
	  hisSector1->GetAxis(4)->SetRange(TMath::Max(ibinPhi-3,firstPhi),TMath::Min(ibinPhi+3,lastPhi));
	}
	//
	htemp = hisSector1->Projection(4);
	xPhi=htemp->GetMean();
	delete htemp;
	THnSparse * hisPhi = hisSector1->Projection(4,idim);
	//Int_t nbinsZ     = hisPhi->GetAxis(3)->GetNbins();
	Int_t firstZ     = hisPhi->GetAxis(3)->GetFirst();
	Int_t lastZ      = hisPhi->GetAxis(3)->GetLast();
	//
	for (Int_t ibinZ=firstZ; ibinZ<=lastZ; ibinZ+=1){   // axis 3 - z
	  //
	  // Z loop
	  //
	  hisPhi->GetAxis(3)->SetRange(TMath::Max(ibinZ,firstZ),TMath::Min(ibinZ,lastZ));
	  if (isec1!=isec0+36) {
	    hisPhi->GetAxis(3)->SetRange(TMath::Max(ibinZ-1,firstZ),TMath::Min(ibinZ-1,lastZ));	    
	  }
	  htemp = hisPhi->Projection(3);
	  Double_t      xZ= htemp->GetMean();
	  delete htemp;
	  THnSparse * hisZ= hisPhi->Projection(3,idim);         
	  //projected histogram according selection 3 -z
	  //
	  //
	  //Int_t nbinsSnp    = hisZ->GetAxis(2)->GetNbins();
	  Int_t firstSnp    = hisZ->GetAxis(2)->GetFirst();
	  Int_t lastSnp     = hisZ->GetAxis(2)->GetLast();
	  for (Int_t ibinSnp=firstSnp; ibinSnp<=lastSnp; ibinSnp+=2){   // axis 2 - snp
	    //
	    // Snp loop
	    //
	    hisZ->GetAxis(2)->SetRange(TMath::Max(ibinSnp-1,firstSnp),TMath::Min(ibinSnp+1,lastSnp));
	    if (isec1!=isec0+36) {
	      hisZ->GetAxis(2)->SetRange(TMath::Max(ibinSnp-2,firstSnp),TMath::Min(ibinSnp+2,lastSnp));
	    }
	    htemp = hisZ->Projection(2);
	    Double_t      xSnp= htemp->GetMean();
	    delete htemp;
	    THnSparse * hisSnp= hisZ->Projection(2,idim);         
	    //projected histogram according selection 2 - snp
	    
	    //Int_t nbinsTheta    = hisSnp->GetAxis(1)->GetNbins();
	    Int_t firstTheta    = hisSnp->GetAxis(1)->GetFirst();
	    Int_t lastTheta     = hisSnp->GetAxis(1)->GetLast();
	    //
	    for (Int_t ibinTheta=firstTheta; ibinTheta<=lastTheta; ibinTheta+=2){  // axis1 theta
	      
	      
	      hisSnp->GetAxis(1)->SetRange(TMath::Max(ibinTheta-2,firstTheta),TMath::Min(ibinTheta+2,lastTheta));
	      if (isec1!=isec0+36) {
		 hisSnp->GetAxis(1)->SetRange(TMath::Max(ibinTheta-3,firstTheta),TMath::Min(ibinTheta+3,lastTheta));		 
	      }
	      htemp = hisSnp->Projection(1);	      
	      Double_t xTheta=htemp->GetMean();
	      delete htemp;
	      hisDelta = hisSnp->Projection(0);
	      //
	      Double_t entries = hisDelta->GetEntries();
	      Double_t mean=0, rms=0;
	      if (entries>kMinEntries){
		mean    = hisDelta->GetMean(); 
		rms = hisDelta->GetRMS(); 
	      }
	      Double_t sector = 9.*xPhi/TMath::Pi();
	      if (sector<0) sector+=18;
	      Double_t dsec = sector-Int_t(sector)-0.5;
	      Int_t dtype=1;  // TPC alignment type
	      (*pcstream)<<hname<<
		"run="<<run<<
		"bz="<<bz<<             // magnetic field
		"ptype="<<type<<         // parameter type
		"dtype="<<dtype<<         // parameter type
		"isec0="<<isec0<<       // sector 0 
		"isec1="<<isec1<<       // sector 1		
		"sector="<<sector<<     // sector as float
		"dsec="<<dsec<<         // delta sector
		//
		"theta="<<xTheta<<      // theta
		"phi="<<xPhi<<          // phi (alpha)	      
		"z="<<xZ<<              // z
		"snp="<<xSnp<<          // snp
		//
		"entries="<<entries<<  // entries in bin
		"mean="<<mean<<        // mean
		"rms="<<rms<<          // rms 
		"refX="<<refX<<        // track matching reference plane
		"\n";
	      delete hisDelta;
	      printf("%d\t%d\t%f\t%f\t%f\t%f\t%f\t%f\n",isec0, isec1, xPhi,xZ,xSnp, xTheta, entries,mean);
	      //
	    }//ibinTheta
	    delete hisSnp;
	  } //ibinSnp
	  delete hisZ;
	}//ibinZ
	delete hisPhi;
      }//ibinPhi
      delete hisSector1;      
    }//isec1
    delete hisSector0;
  }//isec0
}







void AliTPCCorrection::StoreInOCDB(Int_t startRun, Int_t endRun, const char *comment){
  //
  // Store object in the OCDB
  // By default the object is stored in the current directory 
  // default comment consit of user name and the date
  //
  TString ocdbStorage="";
  ocdbStorage+="local://"+gSystem->GetFromPipe("pwd")+"/OCDB";
  AliCDBMetaData *metaData= new AliCDBMetaData();
  metaData->SetObjectClassName("AliTPCCorrection");
  metaData->SetResponsible("Marian Ivanov");
  metaData->SetBeamPeriod(1);
  metaData->SetAliRootVersion("05-25-01"); //root version
  TString userName=gSystem->GetFromPipe("echo $USER");
  TString date=gSystem->GetFromPipe("date");

  if (!comment) metaData->SetComment(Form("Space point distortion calibration\n User: %s\n Data%s",userName.Data(),date.Data()));
  if (comment) metaData->SetComment(comment);
  AliCDBId* id1=NULL;
  id1=new AliCDBId("TPC/Calib/Correction", startRun, endRun);
  AliCDBStorage* gStorage = AliCDBManager::Instance()->GetStorage(ocdbStorage);
  gStorage->Put(this, (*id1), metaData);
}


void AliTPCCorrection::FastSimDistortedVertex(Double_t orgVertex[3], Int_t nTracks, AliESDVertex &aV, AliESDVertex &avOrg, AliESDVertex &cV, AliESDVertex &cvOrg, TTreeSRedirector * const pcstream, Double_t etaCuts){
  //
  // Fast method to simulate the influence of the given distortion on the vertex reconstruction
  //

  AliMagF* magF= (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
  if (!magF) AliError("Magneticd field - not initialized");
  Double_t bz = magF->SolenoidField(); //field in kGauss
  printf("bz: %f\n",bz);
  AliVertexerTracks *vertexer = new AliVertexerTracks(bz); // bz in kGauss

  TObjArray   aTrk;              // Original Track array of Aside
  TObjArray   daTrk;             // Distorted Track array of A side
  UShort_t    *aId = new UShort_t[nTracks];      // A side Track ID
  TObjArray   cTrk;               
  TObjArray   dcTrk;
  UShort_t    *cId = new UShort_t [nTracks];
  Int_t id=0; 
  Double_t mass = TDatabasePDG::Instance()->GetParticle("pi+")->Mass();
  TF1 fpt("fpt",Form("x*(1+(sqrt(x*x+%f^2)-%f)/([0]*[1]))^(-[0])",mass,mass),0.4,10);
  fpt.SetParameters(7.24,0.120);
  fpt.SetNpx(10000);
  for(Int_t nt=0; nt<nTracks; nt++){
    Double_t phi = gRandom->Uniform(0.0, 2*TMath::Pi());
    Double_t eta = gRandom->Uniform(-etaCuts, etaCuts);
    Double_t pt = fpt.GetRandom(); // momentum for f1
    //   printf("phi %lf  eta %lf pt %lf\n",phi,eta,pt);
    Short_t sign=1;
    if(gRandom->Rndm() < 0.5){
      sign =1;
    }else{
      sign=-1;
    }

    Double_t theta = 2*TMath::ATan(TMath::Exp(-eta))-TMath::Pi()/2.;
    Double_t pxyz[3];
    pxyz[0]=pt*TMath::Cos(phi);
    pxyz[1]=pt*TMath::Sin(phi);
    pxyz[2]=pt*TMath::Tan(theta);
    Double_t cv[21]={0};
    AliExternalTrackParam *t= new AliExternalTrackParam(orgVertex, pxyz, cv, sign);

    Double_t refX=1.;
    Int_t dir=-1;
    AliExternalTrackParam *td = FitDistortedTrack(*t, refX, dir,  NULL);
    if (!td) continue;
    if (pcstream) (*pcstream)<<"track"<<
      "eta="<<eta<<
      "theta="<<theta<<
      "tOrig.="<<t<<
      "td.="<<td<<
      "\n";
    if(( eta>0.07 )&&( eta<etaCuts )) { // - log(tan(0.5*theta)), theta = 0.5*pi - ATan(5.0/80.0)
      if (td){
	daTrk.AddLast(td);
	aTrk.AddLast(t);
	Int_t nn=aTrk.GetEntriesFast();
	aId[nn]=id;
      }
    }else if(( eta<-0.07 )&&( eta>-etaCuts )){
      if (td){
	dcTrk.AddLast(td);
	cTrk.AddLast(t);
	Int_t nn=cTrk.GetEntriesFast();
	cId[nn]=id;
      }
    }
    id++;  
  }// end of track loop

  vertexer->SetTPCMode();
  vertexer->SetConstraintOff();

  aV = *((AliESDVertex*)vertexer->FindPrimaryVertex(&daTrk,aId));  
  avOrg = *((AliESDVertex*)vertexer->FindPrimaryVertex(&aTrk,aId));
  cV = *((AliESDVertex*)vertexer->FindPrimaryVertex(&dcTrk,cId));  
  cvOrg = *((AliESDVertex*)vertexer->FindPrimaryVertex(&cTrk,cId));
  if (pcstream) (*pcstream)<<"vertex"<<
    "x="<<orgVertex[0]<<
    "y="<<orgVertex[1]<<
    "z="<<orgVertex[2]<<
    "av.="<<&aV<<              // distorted vertex A side
    "cv.="<<&cV<<              // distroted vertex C side
    "avO.="<<&avOrg<<         // original vertex A side
    "cvO.="<<&cvOrg<<
    "\n";
  delete []aId;
  delete []cId;
}

void AliTPCCorrection::AddVisualCorrection(AliTPCCorrection* corr, Int_t position){
  //
  // make correction available for visualization using 
  // TFormula, TFX and TTree::Draw 
  // important in order to check corrections and also compute dervied variables 
  // e.g correction partial derivatives
  //
  // NOTE - class is not owner of correction
  //     
  if (!fgVisualCorrection) fgVisualCorrection=new TObjArray(10000);
  if (position>=fgVisualCorrection->GetEntriesFast())
    fgVisualCorrection->Expand((position+10)*2);
  fgVisualCorrection->AddAt(corr, position);
}

AliTPCCorrection* AliTPCCorrection::GetVisualCorrection(Int_t position) { 
  //
  // Get visula correction registered at index=position
  //
  return fgVisualCorrection? (AliTPCCorrection*)fgVisualCorrection->At(position):0;
}



Double_t AliTPCCorrection::GetCorrSector(Double_t sector, Double_t r, Double_t kZ, Int_t axisType, Int_t corrType){
  //
  // calculate the correction at given position - check the geffCorr
  //
  // corrType return values
  // 0 - delta R
  // 1 - delta RPhi
  // 2 - delta Z
  // 3 - delta RPHI
  //
  if (!fgVisualCorrection) return 0;
  AliTPCCorrection *corr = (AliTPCCorrection*)fgVisualCorrection->At(corrType);
  if (!corr) return 0;

  Double_t phi=sector*TMath::Pi()/9.;
  Double_t gx = r*TMath::Cos(phi);
  Double_t gy = r*TMath::Sin(phi);
  Double_t gz = r*kZ;
  Int_t nsector=(gz>=0) ? 0:18; 
  //
  //
  //
  Float_t distPoint[3]={static_cast<Float_t>(gx),static_cast<Float_t>(gy),static_cast<Float_t>(gz)};
  corr->DistortPoint(distPoint, nsector);
  Double_t r0=TMath::Sqrt(gx*gx+gy*gy);
  Double_t r1=TMath::Sqrt(distPoint[0]*distPoint[0]+distPoint[1]*distPoint[1]);
  Double_t phi0=TMath::ATan2(gy,gx);
  Double_t phi1=TMath::ATan2(distPoint[1],distPoint[0]);
  if (axisType==0) return r1-r0;
  if (axisType==1) return (phi1-phi0)*r0;
  if (axisType==2) return distPoint[2]-gz;
  if (axisType==3) return (TMath::Cos(phi)*(distPoint[0]-gx)+ TMath::Cos(phi)*(distPoint[1]-gy));
  return phi1-phi0;
}

Double_t AliTPCCorrection::GetCorrXYZ(Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType){
  //
  // return correction at given x,y,z
  // 
  if (!fgVisualCorrection) return 0;
  AliTPCCorrection *corr = (AliTPCCorrection*)fgVisualCorrection->At(corrType);
  if (!corr) return 0;
  Double_t phi0= TMath::ATan2(gy,gx);
  Int_t nsector=(gz>=0) ? 0:18; 
  Float_t distPoint[3]={static_cast<Float_t>(gx),static_cast<Float_t>(gy),static_cast<Float_t>(gz)};
  corr->CorrectPoint(distPoint, nsector);
  Double_t r0=TMath::Sqrt(gx*gx+gy*gy);
  Double_t r1=TMath::Sqrt(distPoint[0]*distPoint[0]+distPoint[1]*distPoint[1]);
  Double_t phi1=TMath::ATan2(distPoint[1],distPoint[0]);
  if (axisType==0) return r1-r0;
  if (axisType==1) return (phi1-phi0)*r0;
  if (axisType==2) return distPoint[2]-gz;
  return phi1-phi0;
}

Double_t AliTPCCorrection::GetCorrXYZDz(Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType,Double_t delta){
  //
  // return correction at given x,y,z
  // 
  if (!fgVisualCorrection) return 0;
  AliTPCCorrection *corr = (AliTPCCorrection*)fgVisualCorrection->At(corrType);
  if (!corr) return 0;
  Double_t phi0= TMath::ATan2(gy,gx);
  Int_t nsector=(gz>=0) ? 0:18; 
  Float_t distPoint[3]={static_cast<Float_t>(gx),static_cast<Float_t>(gy),static_cast<Float_t>(gz)};
  Float_t dxyz[3]={static_cast<Float_t>(gx),static_cast<Float_t>(gy),static_cast<Float_t>(gz)};
  //
  corr->GetCorrectionDz(distPoint, nsector,dxyz,delta);
  distPoint[0]+=dxyz[0];
  distPoint[1]+=dxyz[1];
  distPoint[2]+=dxyz[2];
  Double_t r0=TMath::Sqrt(gx*gx+gy*gy);
  Double_t r1=TMath::Sqrt(distPoint[0]*distPoint[0]+distPoint[1]*distPoint[1]);
  Double_t phi1=TMath::ATan2(distPoint[1],distPoint[0]);
  if (axisType==0) return r1-r0;
  if (axisType==1) return (phi1-phi0)*r0;
  if (axisType==2) return distPoint[2]-gz;
  return phi1-phi0;
}

Double_t AliTPCCorrection::GetCorrXYZIntegrateZ(Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType,Double_t delta){
  //
  // return correction at given x,y,z
  // 
  if (!fgVisualCorrection) return 0;
  AliTPCCorrection *corr = (AliTPCCorrection*)fgVisualCorrection->At(corrType);
  if (!corr) return 0;
  Double_t phi0= TMath::ATan2(gy,gx);
  Int_t nsector=(gz>=0) ? 0:18; 
  Float_t distPoint[3]={static_cast<Float_t>(gx),static_cast<Float_t>(gy),static_cast<Float_t>(gz)};
  Float_t dxyz[3]={static_cast<Float_t>(gx),static_cast<Float_t>(gy),static_cast<Float_t>(gz)};
  //
  corr->GetCorrectionIntegralDz(distPoint, nsector,dxyz,delta);
  distPoint[0]+=dxyz[0];
  distPoint[1]+=dxyz[1];
  distPoint[2]+=dxyz[2];
  Double_t r0=TMath::Sqrt(gx*gx+gy*gy);
  Double_t r1=TMath::Sqrt(distPoint[0]*distPoint[0]+distPoint[1]*distPoint[1]);
  Double_t phi1=TMath::ATan2(distPoint[1],distPoint[0]);
  if (axisType==0) return r1-r0;
  if (axisType==1) return (phi1-phi0)*r0;
  if (axisType==2) return distPoint[2]-gz;
  return phi1-phi0;
}


Double_t AliTPCCorrection::GetDistXYZ(Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType){
  //
  // return correction at given x,y,z
  //
  if (!fgVisualCorrection) return 0;
  AliTPCCorrection *corr = (AliTPCCorrection*)fgVisualCorrection->At(corrType);
  if (!corr) return 0;
  Double_t phi0= TMath::ATan2(gy,gx);
  Int_t nsector=(gz>=0) ? 0:18;
  Float_t distPoint[3]={static_cast<Float_t>(gx),static_cast<Float_t>(gy),static_cast<Float_t>(gz)};
  corr->DistortPoint(distPoint, nsector);
  Double_t r0=TMath::Sqrt(gx*gx+gy*gy);
  Double_t r1=TMath::Sqrt(distPoint[0]*distPoint[0]+distPoint[1]*distPoint[1]);
  Double_t phi1=TMath::ATan2(distPoint[1],distPoint[0]);
  if (axisType==0) return r1-r0;
  if (axisType==1) return (phi1-phi0)*r0;
  if (axisType==2) return distPoint[2]-gz;
  return phi1-phi0;
}

Double_t AliTPCCorrection::GetDistXYZDz(Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType,Double_t delta){
  //
  // return correction at given x,y,z
  //
  if (!fgVisualCorrection) return 0;
  AliTPCCorrection *corr = (AliTPCCorrection*)fgVisualCorrection->At(corrType);
  if (!corr) return 0;
  Double_t phi0= TMath::ATan2(gy,gx);
  Int_t nsector=(gz>=0) ? 0:18;
  Float_t distPoint[3]={static_cast<Float_t>(gx),static_cast<Float_t>(gy),static_cast<Float_t>(gz)};
  Float_t dxyz[3]={static_cast<Float_t>(gx),static_cast<Float_t>(gy),static_cast<Float_t>(gz)};
  //
  corr->GetDistortionDz(distPoint, nsector,dxyz,delta);
  distPoint[0]+=dxyz[0];
  distPoint[1]+=dxyz[1];
  distPoint[2]+=dxyz[2];
  Double_t r0=TMath::Sqrt(gx*gx+gy*gy);
  Double_t r1=TMath::Sqrt(distPoint[0]*distPoint[0]+distPoint[1]*distPoint[1]);
  Double_t phi1=TMath::ATan2(distPoint[1],distPoint[0]);
  if (axisType==0) return r1-r0;
  if (axisType==1) return (phi1-phi0)*r0;
  if (axisType==2) return distPoint[2]-gz;
  return phi1-phi0;
}

Double_t AliTPCCorrection::GetDistXYZIntegrateZ(Double_t gx, Double_t gy, Double_t gz, Int_t axisType, Int_t corrType,Double_t delta){
  //
  // return correction at given x,y,z
  //
  if (!fgVisualCorrection) return 0;
  AliTPCCorrection *corr = (AliTPCCorrection*)fgVisualCorrection->At(corrType);
  if (!corr) return 0;
  Double_t phi0= TMath::ATan2(gy,gx);
  Int_t nsector=(gz>=0) ? 0:18;
  Float_t distPoint[3]={static_cast<Float_t>(gx),static_cast<Float_t>(gy),static_cast<Float_t>(gz)};
  Float_t dxyz[3]={static_cast<Float_t>(gx),static_cast<Float_t>(gy),static_cast<Float_t>(gz)};
  //
  corr->GetDistortionIntegralDz(distPoint, nsector,dxyz,delta);
  distPoint[0]+=dxyz[0];
  distPoint[1]+=dxyz[1];
  distPoint[2]+=dxyz[2];
  Double_t r0=TMath::Sqrt(gx*gx+gy*gy);
  Double_t r1=TMath::Sqrt(distPoint[0]*distPoint[0]+distPoint[1]*distPoint[1]);
  Double_t phi1=TMath::ATan2(distPoint[1],distPoint[0]);
  if (axisType==0) return r1-r0;
  if (axisType==1) return (phi1-phi0)*r0;
  if (axisType==2) return distPoint[2]-gz;
  return phi1-phi0;
}



void AliTPCCorrection::MakeLaserDistortionTree(TTree* tree, TObjArray */*corrArray*/, Int_t /*itype*/){
  //
  // Make a laser fit tree for global minimization
  //  
  AliTPCcalibDB*  calib=AliTPCcalibDB::Instance();  
  AliTPCCorrection * correction = calib->GetTPCComposedCorrection();  
  if (!correction) correction = calib->GetTPCComposedCorrection(AliTrackerBase::GetBz());  
  correction->AddVisualCorrection(correction,0);  //register correction

  //  AliTPCTransform *transform = AliTPCcalibDB::Instance()->GetTransform() ;
  //AliTPCParam     *param     = AliTPCcalibDB::Instance()->GetParameters();
  //
  const Double_t cutErrY=0.05;
  const Double_t kSigmaCut=4;
  //  const Double_t cutErrZ=0.03;
  const Double_t kEpsilon=0.00000001;
  //  const Double_t kMaxDist=1.;  // max distance - space correction
  TVectorD *vecdY=0;
  TVectorD *vecdZ=0;
  TVectorD *veceY=0;
  TVectorD *veceZ=0;
  AliTPCLaserTrack *ltr=0;
  AliTPCLaserTrack::LoadTracks();
  tree->SetBranchAddress("dY.",&vecdY);
  tree->SetBranchAddress("dZ.",&vecdZ);
  tree->SetBranchAddress("eY.",&veceY);
  tree->SetBranchAddress("eZ.",&veceZ);
  tree->SetBranchAddress("LTr.",&ltr);
  Int_t entries= tree->GetEntries();
  TTreeSRedirector *pcstream= new TTreeSRedirector("distortionLaser_0.root");
  Double_t bz=AliTrackerBase::GetBz();
  // 
  //  Double_t globalXYZ[3];
  //Double_t globalXYZCorr[3];
  for (Int_t ientry=0; ientry<entries; ientry++){
    tree->GetEntry(ientry);
    if (!ltr->GetVecGX()){
      ltr->UpdatePoints();
    }
    //
    TVectorD fit10(5);
    TVectorD fit5(5);
    printf("Entry\t%d\n",ientry);
    for (Int_t irow0=0; irow0<158; irow0+=1){
      //       
      TLinearFitter fitter10(4,"hyp3");
      TLinearFitter fitter5(2,"hyp1");
      Int_t sector= (Int_t)(*ltr->GetVecSec())[irow0];
      if (sector<0) continue;
      //if (TMath::Abs(vecdY->GetMatrixArray()[irow0])<kEpsilon) continue;

      Double_t refX= (*ltr->GetVecLX())[irow0];
      Int_t firstRow1 = TMath::Max(irow0-10,0);
      Int_t lastRow1  = TMath::Min(irow0+10,158);
      Double_t padWidth=(irow0<64)?0.4:0.6;
      // make long range fit
      for (Int_t irow1=firstRow1; irow1<=lastRow1; irow1++){
	if (TMath::Abs((*ltr->GetVecSec())[irow1]-sector)>kEpsilon) continue;
	if (veceY->GetMatrixArray()[irow1]>cutErrY) continue;
	if (TMath::Abs(vecdY->GetMatrixArray()[irow1])<kEpsilon) continue;
	Double_t idealX= (*ltr->GetVecLX())[irow1];
	Double_t idealY= (*ltr->GetVecLY())[irow1];
	//	Double_t idealZ= (*ltr->GetVecLZ())[irow1];
	Double_t gx= (*ltr->GetVecGX())[irow1];
	Double_t gy= (*ltr->GetVecGY())[irow1];
	Double_t gz= (*ltr->GetVecGZ())[irow1];
	Double_t measY=(*vecdY)[irow1]+idealY;
	Double_t deltaR = GetCorrXYZ(gx, gy, gz, 0,0);
	// deltaR = R distorted -R ideal
	Double_t xxx[4]={idealX+deltaR-refX,TMath::Cos(idealY/padWidth), TMath::Sin(idealY/padWidth)};
	fitter10.AddPoint(xxx,measY,1);
      }
      Bool_t isOK=kTRUE;
      Double_t rms10=0;//TMath::Sqrt(fitter10.GetChisquare()/(fitter10.GetNpoints()-4));
      Double_t mean10  =0;//   fitter10.GetParameter(0);
      Double_t slope10  =0;//   fitter10.GetParameter(0);
      Double_t cosPart10  = 0;//  fitter10.GetParameter(2);
      Double_t sinPart10   =0;//  fitter10.GetParameter(3); 

      if (fitter10.GetNpoints()>10){
	fitter10.Eval();
	rms10=TMath::Sqrt(fitter10.GetChisquare()/(fitter10.GetNpoints()-4));
	mean10      =   fitter10.GetParameter(0);
	slope10     =   fitter10.GetParameter(1);
	cosPart10   =   fitter10.GetParameter(2);
	sinPart10   =  fitter10.GetParameter(3); 
	//
	// make short range fit
	//
	for (Int_t irow1=firstRow1+5; irow1<=lastRow1-5; irow1++){
	  if (TMath::Abs((*ltr->GetVecSec())[irow1]-sector)>kEpsilon) continue;
	  if (veceY->GetMatrixArray()[irow1]>cutErrY) continue;
	  if (TMath::Abs(vecdY->GetMatrixArray()[irow1])<kEpsilon) continue;
	  Double_t idealX= (*ltr->GetVecLX())[irow1];
	  Double_t idealY= (*ltr->GetVecLY())[irow1];
	  //	  Double_t idealZ= (*ltr->GetVecLZ())[irow1];
	  Double_t gx= (*ltr->GetVecGX())[irow1];
	  Double_t gy= (*ltr->GetVecGY())[irow1];
	  Double_t gz= (*ltr->GetVecGZ())[irow1];
	  Double_t measY=(*vecdY)[irow1]+idealY;
	  Double_t deltaR = GetCorrXYZ(gx, gy, gz, 0,0);
	  // deltaR = R distorted -R ideal 
	  Double_t expY= mean10+slope10*(idealX+deltaR-refX);
	  if (TMath::Abs(measY-expY)>kSigmaCut*rms10) continue;
	  //
	  Double_t corr=cosPart10*TMath::Cos(idealY/padWidth)+sinPart10*TMath::Sin(idealY/padWidth);
	  Double_t xxx[4]={idealX+deltaR-refX,TMath::Cos(idealY/padWidth), TMath::Sin(idealY/padWidth)};
	  fitter5.AddPoint(xxx,measY-corr,1);
	}     
      }else{
	isOK=kFALSE;
      }
      if (fitter5.GetNpoints()<8) isOK=kFALSE;

      Double_t rms5=0;//TMath::Sqrt(fitter5.GetChisquare()/(fitter5.GetNpoints()-4));
      Double_t offset5  =0;//  fitter5.GetParameter(0);
      Double_t slope5   =0;//  fitter5.GetParameter(0); 
      if (isOK){
	fitter5.Eval();
	rms5=TMath::Sqrt(fitter5.GetChisquare()/(fitter5.GetNpoints()-4));
	offset5  =  fitter5.GetParameter(0);
	slope5   =  fitter5.GetParameter(0); 
      }
      //
      Double_t dtype=5;
      Double_t ptype=0;
      Double_t phi   =(*ltr->GetVecPhi())[irow0];
      Double_t theta =ltr->GetTgl();
      Double_t mean=(vecdY)->GetMatrixArray()[irow0];
      Double_t gx=0,gy=0,gz=0;
      Double_t snp = (*ltr->GetVecP2())[irow0];
      Int_t bundle= ltr->GetBundle();
      Int_t id= ltr->GetId();
      //      Double_t rms = err->GetMatrixArray()[irow];
      //
      gx = (*ltr->GetVecGX())[irow0];
      gy = (*ltr->GetVecGY())[irow0];
      gz = (*ltr->GetVecGZ())[irow0];
      Double_t dRrec = GetCorrXYZ(gx, gy, gz, 0,0);
      fitter10.GetParameters(fit10);
      fitter5.GetParameters(fit5);      
      Double_t idealY= (*ltr->GetVecLY())[irow0];
      Double_t measY=(*vecdY)[irow0]+idealY;
      Double_t corr=cosPart10*TMath::Cos(idealY/padWidth)+sinPart10*TMath::Sin(idealY/padWidth);
      if (TMath::Max(rms5,rms10)>0.06) isOK=kFALSE;
      //
      (*pcstream)<<"fitFull"<<  // dumpe also intermediate results
	"bz="<<bz<<         // magnetic filed used
	"dtype="<<dtype<<   // detector match type
	"ptype="<<ptype<<   // parameter type
	"theta="<<theta<<   // theta
	"phi="<<phi<<       // phi 
	"snp="<<snp<<       // snp
	"sector="<<sector<<
	"bundle="<<bundle<<
// 	//	"dsec="<<dsec<<
	"refX="<<refX<<      // reference radius
	"gx="<<gx<<         // global position
	"gy="<<gy<<         // global position
	"gz="<<gz<<         // global position
	"dRrec="<<dRrec<<      // delta Radius in reconstruction
 	"id="<<id<<     //bundle
	"rms10="<<rms10<<
	"rms5="<<rms5<<
	"fit10.="<<&fit10<<
	"fit5.="<<&fit5<<
	"measY="<<measY<<
	"mean="<<mean<<
	"idealY="<<idealY<<
	"corr="<<corr<<
	"isOK="<<isOK<<
	"\n";
    }
  }
  delete pcstream;
}
 AliTPCCorrection.cxx:1
 AliTPCCorrection.cxx:2
 AliTPCCorrection.cxx:3
 AliTPCCorrection.cxx:4
 AliTPCCorrection.cxx:5
 AliTPCCorrection.cxx:6
 AliTPCCorrection.cxx:7
 AliTPCCorrection.cxx:8
 AliTPCCorrection.cxx:9
 AliTPCCorrection.cxx:10
 AliTPCCorrection.cxx:11
 AliTPCCorrection.cxx:12
 AliTPCCorrection.cxx:13
 AliTPCCorrection.cxx:14
 AliTPCCorrection.cxx:15
 AliTPCCorrection.cxx:16
 AliTPCCorrection.cxx:17
 AliTPCCorrection.cxx:18
 AliTPCCorrection.cxx:19
 AliTPCCorrection.cxx:20
 AliTPCCorrection.cxx:21
 AliTPCCorrection.cxx:22
 AliTPCCorrection.cxx:23
 AliTPCCorrection.cxx:24
 AliTPCCorrection.cxx:25
 AliTPCCorrection.cxx:26
 AliTPCCorrection.cxx:27
 AliTPCCorrection.cxx:28
 AliTPCCorrection.cxx:29
 AliTPCCorrection.cxx:30
 AliTPCCorrection.cxx:31
 AliTPCCorrection.cxx:32
 AliTPCCorrection.cxx:33
 AliTPCCorrection.cxx:34
 AliTPCCorrection.cxx:35
 AliTPCCorrection.cxx:36
 AliTPCCorrection.cxx:37
 AliTPCCorrection.cxx:38
 AliTPCCorrection.cxx:39
 AliTPCCorrection.cxx:40
 AliTPCCorrection.cxx:41
 AliTPCCorrection.cxx:42
 AliTPCCorrection.cxx:43
 AliTPCCorrection.cxx:44
 AliTPCCorrection.cxx:45
 AliTPCCorrection.cxx:46
 AliTPCCorrection.cxx:47
 AliTPCCorrection.cxx:48
 AliTPCCorrection.cxx:49
 AliTPCCorrection.cxx:50
 AliTPCCorrection.cxx:51
 AliTPCCorrection.cxx:52
 AliTPCCorrection.cxx:53
 AliTPCCorrection.cxx:54
 AliTPCCorrection.cxx:55
 AliTPCCorrection.cxx:56
 AliTPCCorrection.cxx:57
 AliTPCCorrection.cxx:58
 AliTPCCorrection.cxx:59
 AliTPCCorrection.cxx:60
 AliTPCCorrection.cxx:61
 AliTPCCorrection.cxx:62
 AliTPCCorrection.cxx:63
 AliTPCCorrection.cxx:64
 AliTPCCorrection.cxx:65
 AliTPCCorrection.cxx:66
 AliTPCCorrection.cxx:67
 AliTPCCorrection.cxx:68
 AliTPCCorrection.cxx:69
 AliTPCCorrection.cxx:70
 AliTPCCorrection.cxx:71
 AliTPCCorrection.cxx:72
 AliTPCCorrection.cxx:73
 AliTPCCorrection.cxx:74
 AliTPCCorrection.cxx:75
 AliTPCCorrection.cxx:76
 AliTPCCorrection.cxx:77
 AliTPCCorrection.cxx:78
 AliTPCCorrection.cxx:79
 AliTPCCorrection.cxx:80
 AliTPCCorrection.cxx:81
 AliTPCCorrection.cxx:82
 AliTPCCorrection.cxx:83
 AliTPCCorrection.cxx:84
 AliTPCCorrection.cxx:85
 AliTPCCorrection.cxx:86
 AliTPCCorrection.cxx:87
 AliTPCCorrection.cxx:88
 AliTPCCorrection.cxx:89
 AliTPCCorrection.cxx:90
 AliTPCCorrection.cxx:91
 AliTPCCorrection.cxx:92
 AliTPCCorrection.cxx:93
 AliTPCCorrection.cxx:94
 AliTPCCorrection.cxx:95
 AliTPCCorrection.cxx:96
 AliTPCCorrection.cxx:97
 AliTPCCorrection.cxx:98
 AliTPCCorrection.cxx:99
 AliTPCCorrection.cxx:100
 AliTPCCorrection.cxx:101
 AliTPCCorrection.cxx:102
 AliTPCCorrection.cxx:103
 AliTPCCorrection.cxx:104
 AliTPCCorrection.cxx:105
 AliTPCCorrection.cxx:106
 AliTPCCorrection.cxx:107
 AliTPCCorrection.cxx:108
 AliTPCCorrection.cxx:109
 AliTPCCorrection.cxx:110
 AliTPCCorrection.cxx:111
 AliTPCCorrection.cxx:112
 AliTPCCorrection.cxx:113
 AliTPCCorrection.cxx:114
 AliTPCCorrection.cxx:115
 AliTPCCorrection.cxx:116
 AliTPCCorrection.cxx:117
 AliTPCCorrection.cxx:118
 AliTPCCorrection.cxx:119
 AliTPCCorrection.cxx:120
 AliTPCCorrection.cxx:121
 AliTPCCorrection.cxx:122
 AliTPCCorrection.cxx:123
 AliTPCCorrection.cxx:124
 AliTPCCorrection.cxx:125
 AliTPCCorrection.cxx:126
 AliTPCCorrection.cxx:127
 AliTPCCorrection.cxx:128
 AliTPCCorrection.cxx:129
 AliTPCCorrection.cxx:130
 AliTPCCorrection.cxx:131
 AliTPCCorrection.cxx:132
 AliTPCCorrection.cxx:133
 AliTPCCorrection.cxx:134
 AliTPCCorrection.cxx:135
 AliTPCCorrection.cxx:136
 AliTPCCorrection.cxx:137
 AliTPCCorrection.cxx:138
 AliTPCCorrection.cxx:139
 AliTPCCorrection.cxx:140
 AliTPCCorrection.cxx:141
 AliTPCCorrection.cxx:142
 AliTPCCorrection.cxx:143
 AliTPCCorrection.cxx:144
 AliTPCCorrection.cxx:145
 AliTPCCorrection.cxx:146
 AliTPCCorrection.cxx:147
 AliTPCCorrection.cxx:148
 AliTPCCorrection.cxx:149
 AliTPCCorrection.cxx:150
 AliTPCCorrection.cxx:151
 AliTPCCorrection.cxx:152
 AliTPCCorrection.cxx:153
 AliTPCCorrection.cxx:154
 AliTPCCorrection.cxx:155
 AliTPCCorrection.cxx:156
 AliTPCCorrection.cxx:157
 AliTPCCorrection.cxx:158
 AliTPCCorrection.cxx:159
 AliTPCCorrection.cxx:160
 AliTPCCorrection.cxx:161
 AliTPCCorrection.cxx:162
 AliTPCCorrection.cxx:163
 AliTPCCorrection.cxx:164
 AliTPCCorrection.cxx:165
 AliTPCCorrection.cxx:166
 AliTPCCorrection.cxx:167
 AliTPCCorrection.cxx:168
 AliTPCCorrection.cxx:169
 AliTPCCorrection.cxx:170
 AliTPCCorrection.cxx:171
 AliTPCCorrection.cxx:172
 AliTPCCorrection.cxx:173
 AliTPCCorrection.cxx:174
 AliTPCCorrection.cxx:175
 AliTPCCorrection.cxx:176
 AliTPCCorrection.cxx:177
 AliTPCCorrection.cxx:178
 AliTPCCorrection.cxx:179
 AliTPCCorrection.cxx:180
 AliTPCCorrection.cxx:181
 AliTPCCorrection.cxx:182
 AliTPCCorrection.cxx:183
 AliTPCCorrection.cxx:184
 AliTPCCorrection.cxx:185
 AliTPCCorrection.cxx:186
 AliTPCCorrection.cxx:187
 AliTPCCorrection.cxx:188
 AliTPCCorrection.cxx:189
 AliTPCCorrection.cxx:190
 AliTPCCorrection.cxx:191
 AliTPCCorrection.cxx:192
 AliTPCCorrection.cxx:193
 AliTPCCorrection.cxx:194
 AliTPCCorrection.cxx:195
 AliTPCCorrection.cxx:196
 AliTPCCorrection.cxx:197
 AliTPCCorrection.cxx:198
 AliTPCCorrection.cxx:199
 AliTPCCorrection.cxx:200
 AliTPCCorrection.cxx:201
 AliTPCCorrection.cxx:202
 AliTPCCorrection.cxx:203
 AliTPCCorrection.cxx:204
 AliTPCCorrection.cxx:205
 AliTPCCorrection.cxx:206
 AliTPCCorrection.cxx:207
 AliTPCCorrection.cxx:208
 AliTPCCorrection.cxx:209
 AliTPCCorrection.cxx:210
 AliTPCCorrection.cxx:211
 AliTPCCorrection.cxx:212
 AliTPCCorrection.cxx:213
 AliTPCCorrection.cxx:214
 AliTPCCorrection.cxx:215
 AliTPCCorrection.cxx:216
 AliTPCCorrection.cxx:217
 AliTPCCorrection.cxx:218
 AliTPCCorrection.cxx:219
 AliTPCCorrection.cxx:220
 AliTPCCorrection.cxx:221
 AliTPCCorrection.cxx:222
 AliTPCCorrection.cxx:223
 AliTPCCorrection.cxx:224
 AliTPCCorrection.cxx:225
 AliTPCCorrection.cxx:226
 AliTPCCorrection.cxx:227
 AliTPCCorrection.cxx:228
 AliTPCCorrection.cxx:229
 AliTPCCorrection.cxx:230
 AliTPCCorrection.cxx:231
 AliTPCCorrection.cxx:232
 AliTPCCorrection.cxx:233
 AliTPCCorrection.cxx:234
 AliTPCCorrection.cxx:235
 AliTPCCorrection.cxx:236
 AliTPCCorrection.cxx:237
 AliTPCCorrection.cxx:238
 AliTPCCorrection.cxx:239
 AliTPCCorrection.cxx:240
 AliTPCCorrection.cxx:241
 AliTPCCorrection.cxx:242
 AliTPCCorrection.cxx:243
 AliTPCCorrection.cxx:244
 AliTPCCorrection.cxx:245
 AliTPCCorrection.cxx:246
 AliTPCCorrection.cxx:247
 AliTPCCorrection.cxx:248
 AliTPCCorrection.cxx:249
 AliTPCCorrection.cxx:250
 AliTPCCorrection.cxx:251
 AliTPCCorrection.cxx:252
 AliTPCCorrection.cxx:253
 AliTPCCorrection.cxx:254
 AliTPCCorrection.cxx:255
 AliTPCCorrection.cxx:256
 AliTPCCorrection.cxx:257
 AliTPCCorrection.cxx:258
 AliTPCCorrection.cxx:259
 AliTPCCorrection.cxx:260
 AliTPCCorrection.cxx:261
 AliTPCCorrection.cxx:262
 AliTPCCorrection.cxx:263
 AliTPCCorrection.cxx:264
 AliTPCCorrection.cxx:265
 AliTPCCorrection.cxx:266
 AliTPCCorrection.cxx:267
 AliTPCCorrection.cxx:268
 AliTPCCorrection.cxx:269
 AliTPCCorrection.cxx:270
 AliTPCCorrection.cxx:271
 AliTPCCorrection.cxx:272
 AliTPCCorrection.cxx:273
 AliTPCCorrection.cxx:274
 AliTPCCorrection.cxx:275
 AliTPCCorrection.cxx:276
 AliTPCCorrection.cxx:277
 AliTPCCorrection.cxx:278
 AliTPCCorrection.cxx:279
 AliTPCCorrection.cxx:280
 AliTPCCorrection.cxx:281
 AliTPCCorrection.cxx:282
 AliTPCCorrection.cxx:283
 AliTPCCorrection.cxx:284
 AliTPCCorrection.cxx:285
 AliTPCCorrection.cxx:286
 AliTPCCorrection.cxx:287
 AliTPCCorrection.cxx:288
 AliTPCCorrection.cxx:289
 AliTPCCorrection.cxx:290
 AliTPCCorrection.cxx:291
 AliTPCCorrection.cxx:292
 AliTPCCorrection.cxx:293
 AliTPCCorrection.cxx:294
 AliTPCCorrection.cxx:295
 AliTPCCorrection.cxx:296
 AliTPCCorrection.cxx:297
 AliTPCCorrection.cxx:298
 AliTPCCorrection.cxx:299
 AliTPCCorrection.cxx:300
 AliTPCCorrection.cxx:301
 AliTPCCorrection.cxx:302
 AliTPCCorrection.cxx:303
 AliTPCCorrection.cxx:304
 AliTPCCorrection.cxx:305
 AliTPCCorrection.cxx:306
 AliTPCCorrection.cxx:307
 AliTPCCorrection.cxx:308
 AliTPCCorrection.cxx:309
 AliTPCCorrection.cxx:310
 AliTPCCorrection.cxx:311
 AliTPCCorrection.cxx:312
 AliTPCCorrection.cxx:313
 AliTPCCorrection.cxx:314
 AliTPCCorrection.cxx:315
 AliTPCCorrection.cxx:316
 AliTPCCorrection.cxx:317
 AliTPCCorrection.cxx:318
 AliTPCCorrection.cxx:319
 AliTPCCorrection.cxx:320
 AliTPCCorrection.cxx:321
 AliTPCCorrection.cxx:322
 AliTPCCorrection.cxx:323
 AliTPCCorrection.cxx:324
 AliTPCCorrection.cxx:325
 AliTPCCorrection.cxx:326
 AliTPCCorrection.cxx:327
 AliTPCCorrection.cxx:328
 AliTPCCorrection.cxx:329
 AliTPCCorrection.cxx:330
 AliTPCCorrection.cxx:331
 AliTPCCorrection.cxx:332
 AliTPCCorrection.cxx:333
 AliTPCCorrection.cxx:334
 AliTPCCorrection.cxx:335
 AliTPCCorrection.cxx:336
 AliTPCCorrection.cxx:337
 AliTPCCorrection.cxx:338
 AliTPCCorrection.cxx:339
 AliTPCCorrection.cxx:340
 AliTPCCorrection.cxx:341
 AliTPCCorrection.cxx:342
 AliTPCCorrection.cxx:343
 AliTPCCorrection.cxx:344
 AliTPCCorrection.cxx:345
 AliTPCCorrection.cxx:346
 AliTPCCorrection.cxx:347
 AliTPCCorrection.cxx:348
 AliTPCCorrection.cxx:349
 AliTPCCorrection.cxx:350
 AliTPCCorrection.cxx:351
 AliTPCCorrection.cxx:352
 AliTPCCorrection.cxx:353
 AliTPCCorrection.cxx:354
 AliTPCCorrection.cxx:355
 AliTPCCorrection.cxx:356
 AliTPCCorrection.cxx:357
 AliTPCCorrection.cxx:358
 AliTPCCorrection.cxx:359
 AliTPCCorrection.cxx:360
 AliTPCCorrection.cxx:361
 AliTPCCorrection.cxx:362
 AliTPCCorrection.cxx:363
 AliTPCCorrection.cxx:364
 AliTPCCorrection.cxx:365
 AliTPCCorrection.cxx:366
 AliTPCCorrection.cxx:367
 AliTPCCorrection.cxx:368
 AliTPCCorrection.cxx:369
 AliTPCCorrection.cxx:370
 AliTPCCorrection.cxx:371
 AliTPCCorrection.cxx:372
 AliTPCCorrection.cxx:373
 AliTPCCorrection.cxx:374
 AliTPCCorrection.cxx:375
 AliTPCCorrection.cxx:376
 AliTPCCorrection.cxx:377
 AliTPCCorrection.cxx:378
 AliTPCCorrection.cxx:379
 AliTPCCorrection.cxx:380
 AliTPCCorrection.cxx:381
 AliTPCCorrection.cxx:382
 AliTPCCorrection.cxx:383
 AliTPCCorrection.cxx:384
 AliTPCCorrection.cxx:385
 AliTPCCorrection.cxx:386
 AliTPCCorrection.cxx:387
 AliTPCCorrection.cxx:388
 AliTPCCorrection.cxx:389
 AliTPCCorrection.cxx:390
 AliTPCCorrection.cxx:391
 AliTPCCorrection.cxx:392
 AliTPCCorrection.cxx:393
 AliTPCCorrection.cxx:394
 AliTPCCorrection.cxx:395
 AliTPCCorrection.cxx:396
 AliTPCCorrection.cxx:397
 AliTPCCorrection.cxx:398
 AliTPCCorrection.cxx:399
 AliTPCCorrection.cxx:400
 AliTPCCorrection.cxx:401
 AliTPCCorrection.cxx:402
 AliTPCCorrection.cxx:403
 AliTPCCorrection.cxx:404
 AliTPCCorrection.cxx:405
 AliTPCCorrection.cxx:406
 AliTPCCorrection.cxx:407
 AliTPCCorrection.cxx:408
 AliTPCCorrection.cxx:409
 AliTPCCorrection.cxx:410
 AliTPCCorrection.cxx:411
 AliTPCCorrection.cxx:412
 AliTPCCorrection.cxx:413
 AliTPCCorrection.cxx:414
 AliTPCCorrection.cxx:415
 AliTPCCorrection.cxx:416
 AliTPCCorrection.cxx:417
 AliTPCCorrection.cxx:418
 AliTPCCorrection.cxx:419
 AliTPCCorrection.cxx:420
 AliTPCCorrection.cxx:421
 AliTPCCorrection.cxx:422
 AliTPCCorrection.cxx:423
 AliTPCCorrection.cxx:424
 AliTPCCorrection.cxx:425
 AliTPCCorrection.cxx:426
 AliTPCCorrection.cxx:427
 AliTPCCorrection.cxx:428
 AliTPCCorrection.cxx:429
 AliTPCCorrection.cxx:430
 AliTPCCorrection.cxx:431
 AliTPCCorrection.cxx:432
 AliTPCCorrection.cxx:433
 AliTPCCorrection.cxx:434
 AliTPCCorrection.cxx:435
 AliTPCCorrection.cxx:436
 AliTPCCorrection.cxx:437
 AliTPCCorrection.cxx:438
 AliTPCCorrection.cxx:439
 AliTPCCorrection.cxx:440
 AliTPCCorrection.cxx:441
 AliTPCCorrection.cxx:442
 AliTPCCorrection.cxx:443
 AliTPCCorrection.cxx:444
 AliTPCCorrection.cxx:445
 AliTPCCorrection.cxx:446
 AliTPCCorrection.cxx:447
 AliTPCCorrection.cxx:448
 AliTPCCorrection.cxx:449
 AliTPCCorrection.cxx:450
 AliTPCCorrection.cxx:451
 AliTPCCorrection.cxx:452
 AliTPCCorrection.cxx:453
 AliTPCCorrection.cxx:454
 AliTPCCorrection.cxx:455
 AliTPCCorrection.cxx:456
 AliTPCCorrection.cxx:457
 AliTPCCorrection.cxx:458
 AliTPCCorrection.cxx:459
 AliTPCCorrection.cxx:460
 AliTPCCorrection.cxx:461
 AliTPCCorrection.cxx:462
 AliTPCCorrection.cxx:463
 AliTPCCorrection.cxx:464
 AliTPCCorrection.cxx:465
 AliTPCCorrection.cxx:466
 AliTPCCorrection.cxx:467
 AliTPCCorrection.cxx:468
 AliTPCCorrection.cxx:469
 AliTPCCorrection.cxx:470
 AliTPCCorrection.cxx:471
 AliTPCCorrection.cxx:472
 AliTPCCorrection.cxx:473
 AliTPCCorrection.cxx:474
 AliTPCCorrection.cxx:475
 AliTPCCorrection.cxx:476
 AliTPCCorrection.cxx:477
 AliTPCCorrection.cxx:478
 AliTPCCorrection.cxx:479
 AliTPCCorrection.cxx:480
 AliTPCCorrection.cxx:481
 AliTPCCorrection.cxx:482
 AliTPCCorrection.cxx:483
 AliTPCCorrection.cxx:484
 AliTPCCorrection.cxx:485
 AliTPCCorrection.cxx:486
 AliTPCCorrection.cxx:487
 AliTPCCorrection.cxx:488
 AliTPCCorrection.cxx:489
 AliTPCCorrection.cxx:490
 AliTPCCorrection.cxx:491
 AliTPCCorrection.cxx:492
 AliTPCCorrection.cxx:493
 AliTPCCorrection.cxx:494
 AliTPCCorrection.cxx:495
 AliTPCCorrection.cxx:496
 AliTPCCorrection.cxx:497
 AliTPCCorrection.cxx:498
 AliTPCCorrection.cxx:499
 AliTPCCorrection.cxx:500
 AliTPCCorrection.cxx:501
 AliTPCCorrection.cxx:502
 AliTPCCorrection.cxx:503
 AliTPCCorrection.cxx:504
 AliTPCCorrection.cxx:505
 AliTPCCorrection.cxx:506
 AliTPCCorrection.cxx:507
 AliTPCCorrection.cxx:508
 AliTPCCorrection.cxx:509
 AliTPCCorrection.cxx:510
 AliTPCCorrection.cxx:511
 AliTPCCorrection.cxx:512
 AliTPCCorrection.cxx:513
 AliTPCCorrection.cxx:514
 AliTPCCorrection.cxx:515
 AliTPCCorrection.cxx:516
 AliTPCCorrection.cxx:517
 AliTPCCorrection.cxx:518
 AliTPCCorrection.cxx:519
 AliTPCCorrection.cxx:520
 AliTPCCorrection.cxx:521
 AliTPCCorrection.cxx:522
 AliTPCCorrection.cxx:523
 AliTPCCorrection.cxx:524
 AliTPCCorrection.cxx:525
 AliTPCCorrection.cxx:526
 AliTPCCorrection.cxx:527
 AliTPCCorrection.cxx:528
 AliTPCCorrection.cxx:529
 AliTPCCorrection.cxx:530
 AliTPCCorrection.cxx:531
 AliTPCCorrection.cxx:532
 AliTPCCorrection.cxx:533
 AliTPCCorrection.cxx:534
 AliTPCCorrection.cxx:535
 AliTPCCorrection.cxx:536
 AliTPCCorrection.cxx:537
 AliTPCCorrection.cxx:538
 AliTPCCorrection.cxx:539
 AliTPCCorrection.cxx:540
 AliTPCCorrection.cxx:541
 AliTPCCorrection.cxx:542
 AliTPCCorrection.cxx:543
 AliTPCCorrection.cxx:544
 AliTPCCorrection.cxx:545
 AliTPCCorrection.cxx:546
 AliTPCCorrection.cxx:547
 AliTPCCorrection.cxx:548
 AliTPCCorrection.cxx:549
 AliTPCCorrection.cxx:550
 AliTPCCorrection.cxx:551
 AliTPCCorrection.cxx:552
 AliTPCCorrection.cxx:553
 AliTPCCorrection.cxx:554
 AliTPCCorrection.cxx:555
 AliTPCCorrection.cxx:556
 AliTPCCorrection.cxx:557
 AliTPCCorrection.cxx:558
 AliTPCCorrection.cxx:559
 AliTPCCorrection.cxx:560
 AliTPCCorrection.cxx:561
 AliTPCCorrection.cxx:562
 AliTPCCorrection.cxx:563
 AliTPCCorrection.cxx:564
 AliTPCCorrection.cxx:565
 AliTPCCorrection.cxx:566
 AliTPCCorrection.cxx:567
 AliTPCCorrection.cxx:568
 AliTPCCorrection.cxx:569
 AliTPCCorrection.cxx:570
 AliTPCCorrection.cxx:571
 AliTPCCorrection.cxx:572
 AliTPCCorrection.cxx:573
 AliTPCCorrection.cxx:574
 AliTPCCorrection.cxx:575
 AliTPCCorrection.cxx:576
 AliTPCCorrection.cxx:577
 AliTPCCorrection.cxx:578
 AliTPCCorrection.cxx:579
 AliTPCCorrection.cxx:580
 AliTPCCorrection.cxx:581
 AliTPCCorrection.cxx:582
 AliTPCCorrection.cxx:583
 AliTPCCorrection.cxx:584
 AliTPCCorrection.cxx:585
 AliTPCCorrection.cxx:586
 AliTPCCorrection.cxx:587
 AliTPCCorrection.cxx:588
 AliTPCCorrection.cxx:589
 AliTPCCorrection.cxx:590
 AliTPCCorrection.cxx:591
 AliTPCCorrection.cxx:592
 AliTPCCorrection.cxx:593
 AliTPCCorrection.cxx:594
 AliTPCCorrection.cxx:595
 AliTPCCorrection.cxx:596
 AliTPCCorrection.cxx:597
 AliTPCCorrection.cxx:598
 AliTPCCorrection.cxx:599
 AliTPCCorrection.cxx:600
 AliTPCCorrection.cxx:601
 AliTPCCorrection.cxx:602
 AliTPCCorrection.cxx:603
 AliTPCCorrection.cxx:604
 AliTPCCorrection.cxx:605
 AliTPCCorrection.cxx:606
 AliTPCCorrection.cxx:607
 AliTPCCorrection.cxx:608
 AliTPCCorrection.cxx:609
 AliTPCCorrection.cxx:610
 AliTPCCorrection.cxx:611
 AliTPCCorrection.cxx:612
 AliTPCCorrection.cxx:613
 AliTPCCorrection.cxx:614
 AliTPCCorrection.cxx:615
 AliTPCCorrection.cxx:616
 AliTPCCorrection.cxx:617
 AliTPCCorrection.cxx:618
 AliTPCCorrection.cxx:619
 AliTPCCorrection.cxx:620
 AliTPCCorrection.cxx:621
 AliTPCCorrection.cxx:622
 AliTPCCorrection.cxx:623
 AliTPCCorrection.cxx:624
 AliTPCCorrection.cxx:625
 AliTPCCorrection.cxx:626
 AliTPCCorrection.cxx:627
 AliTPCCorrection.cxx:628
 AliTPCCorrection.cxx:629
 AliTPCCorrection.cxx:630
 AliTPCCorrection.cxx:631
 AliTPCCorrection.cxx:632
 AliTPCCorrection.cxx:633
 AliTPCCorrection.cxx:634
 AliTPCCorrection.cxx:635
 AliTPCCorrection.cxx:636
 AliTPCCorrection.cxx:637
 AliTPCCorrection.cxx:638
 AliTPCCorrection.cxx:639
 AliTPCCorrection.cxx:640
 AliTPCCorrection.cxx:641
 AliTPCCorrection.cxx:642
 AliTPCCorrection.cxx:643
 AliTPCCorrection.cxx:644
 AliTPCCorrection.cxx:645
 AliTPCCorrection.cxx:646
 AliTPCCorrection.cxx:647
 AliTPCCorrection.cxx:648
 AliTPCCorrection.cxx:649
 AliTPCCorrection.cxx:650
 AliTPCCorrection.cxx:651
 AliTPCCorrection.cxx:652
 AliTPCCorrection.cxx:653
 AliTPCCorrection.cxx:654
 AliTPCCorrection.cxx:655
 AliTPCCorrection.cxx:656
 AliTPCCorrection.cxx:657
 AliTPCCorrection.cxx:658
 AliTPCCorrection.cxx:659
 AliTPCCorrection.cxx:660
 AliTPCCorrection.cxx:661
 AliTPCCorrection.cxx:662
 AliTPCCorrection.cxx:663
 AliTPCCorrection.cxx:664
 AliTPCCorrection.cxx:665
 AliTPCCorrection.cxx:666
 AliTPCCorrection.cxx:667
 AliTPCCorrection.cxx:668
 AliTPCCorrection.cxx:669
 AliTPCCorrection.cxx:670
 AliTPCCorrection.cxx:671
 AliTPCCorrection.cxx:672
 AliTPCCorrection.cxx:673
 AliTPCCorrection.cxx:674
 AliTPCCorrection.cxx:675
 AliTPCCorrection.cxx:676
 AliTPCCorrection.cxx:677
 AliTPCCorrection.cxx:678
 AliTPCCorrection.cxx:679
 AliTPCCorrection.cxx:680
 AliTPCCorrection.cxx:681
 AliTPCCorrection.cxx:682
 AliTPCCorrection.cxx:683
 AliTPCCorrection.cxx:684
 AliTPCCorrection.cxx:685
 AliTPCCorrection.cxx:686
 AliTPCCorrection.cxx:687
 AliTPCCorrection.cxx:688
 AliTPCCorrection.cxx:689
 AliTPCCorrection.cxx:690
 AliTPCCorrection.cxx:691
 AliTPCCorrection.cxx:692
 AliTPCCorrection.cxx:693
 AliTPCCorrection.cxx:694
 AliTPCCorrection.cxx:695
 AliTPCCorrection.cxx:696
 AliTPCCorrection.cxx:697
 AliTPCCorrection.cxx:698
 AliTPCCorrection.cxx:699
 AliTPCCorrection.cxx:700
 AliTPCCorrection.cxx:701
 AliTPCCorrection.cxx:702
 AliTPCCorrection.cxx:703
 AliTPCCorrection.cxx:704
 AliTPCCorrection.cxx:705
 AliTPCCorrection.cxx:706
 AliTPCCorrection.cxx:707
 AliTPCCorrection.cxx:708
 AliTPCCorrection.cxx:709
 AliTPCCorrection.cxx:710
 AliTPCCorrection.cxx:711
 AliTPCCorrection.cxx:712
 AliTPCCorrection.cxx:713
 AliTPCCorrection.cxx:714
 AliTPCCorrection.cxx:715
 AliTPCCorrection.cxx:716
 AliTPCCorrection.cxx:717
 AliTPCCorrection.cxx:718
 AliTPCCorrection.cxx:719
 AliTPCCorrection.cxx:720
 AliTPCCorrection.cxx:721
 AliTPCCorrection.cxx:722
 AliTPCCorrection.cxx:723
 AliTPCCorrection.cxx:724
 AliTPCCorrection.cxx:725
 AliTPCCorrection.cxx:726
 AliTPCCorrection.cxx:727
 AliTPCCorrection.cxx:728
 AliTPCCorrection.cxx:729
 AliTPCCorrection.cxx:730
 AliTPCCorrection.cxx:731
 AliTPCCorrection.cxx:732
 AliTPCCorrection.cxx:733
 AliTPCCorrection.cxx:734
 AliTPCCorrection.cxx:735
 AliTPCCorrection.cxx:736
 AliTPCCorrection.cxx:737
 AliTPCCorrection.cxx:738
 AliTPCCorrection.cxx:739
 AliTPCCorrection.cxx:740
 AliTPCCorrection.cxx:741
 AliTPCCorrection.cxx:742
 AliTPCCorrection.cxx:743
 AliTPCCorrection.cxx:744
 AliTPCCorrection.cxx:745
 AliTPCCorrection.cxx:746
 AliTPCCorrection.cxx:747
 AliTPCCorrection.cxx:748
 AliTPCCorrection.cxx:749
 AliTPCCorrection.cxx:750
 AliTPCCorrection.cxx:751
 AliTPCCorrection.cxx:752
 AliTPCCorrection.cxx:753
 AliTPCCorrection.cxx:754
 AliTPCCorrection.cxx:755
 AliTPCCorrection.cxx:756
 AliTPCCorrection.cxx:757
 AliTPCCorrection.cxx:758
 AliTPCCorrection.cxx:759
 AliTPCCorrection.cxx:760
 AliTPCCorrection.cxx:761
 AliTPCCorrection.cxx:762
 AliTPCCorrection.cxx:763
 AliTPCCorrection.cxx:764
 AliTPCCorrection.cxx:765
 AliTPCCorrection.cxx:766
 AliTPCCorrection.cxx:767
 AliTPCCorrection.cxx:768
 AliTPCCorrection.cxx:769
 AliTPCCorrection.cxx:770
 AliTPCCorrection.cxx:771
 AliTPCCorrection.cxx:772
 AliTPCCorrection.cxx:773
 AliTPCCorrection.cxx:774
 AliTPCCorrection.cxx:775
 AliTPCCorrection.cxx:776
 AliTPCCorrection.cxx:777
 AliTPCCorrection.cxx:778
 AliTPCCorrection.cxx:779
 AliTPCCorrection.cxx:780
 AliTPCCorrection.cxx:781
 AliTPCCorrection.cxx:782
 AliTPCCorrection.cxx:783
 AliTPCCorrection.cxx:784
 AliTPCCorrection.cxx:785
 AliTPCCorrection.cxx:786
 AliTPCCorrection.cxx:787
 AliTPCCorrection.cxx:788
 AliTPCCorrection.cxx:789
 AliTPCCorrection.cxx:790
 AliTPCCorrection.cxx:791
 AliTPCCorrection.cxx:792
 AliTPCCorrection.cxx:793
 AliTPCCorrection.cxx:794
 AliTPCCorrection.cxx:795
 AliTPCCorrection.cxx:796
 AliTPCCorrection.cxx:797
 AliTPCCorrection.cxx:798
 AliTPCCorrection.cxx:799
 AliTPCCorrection.cxx:800
 AliTPCCorrection.cxx:801
 AliTPCCorrection.cxx:802
 AliTPCCorrection.cxx:803
 AliTPCCorrection.cxx:804
 AliTPCCorrection.cxx:805
 AliTPCCorrection.cxx:806
 AliTPCCorrection.cxx:807
 AliTPCCorrection.cxx:808
 AliTPCCorrection.cxx:809
 AliTPCCorrection.cxx:810
 AliTPCCorrection.cxx:811
 AliTPCCorrection.cxx:812
 AliTPCCorrection.cxx:813
 AliTPCCorrection.cxx:814
 AliTPCCorrection.cxx:815
 AliTPCCorrection.cxx:816
 AliTPCCorrection.cxx:817
 AliTPCCorrection.cxx:818
 AliTPCCorrection.cxx:819
 AliTPCCorrection.cxx:820
 AliTPCCorrection.cxx:821
 AliTPCCorrection.cxx:822
 AliTPCCorrection.cxx:823
 AliTPCCorrection.cxx:824
 AliTPCCorrection.cxx:825
 AliTPCCorrection.cxx:826
 AliTPCCorrection.cxx:827
 AliTPCCorrection.cxx:828
 AliTPCCorrection.cxx:829
 AliTPCCorrection.cxx:830
 AliTPCCorrection.cxx:831
 AliTPCCorrection.cxx:832
 AliTPCCorrection.cxx:833
 AliTPCCorrection.cxx:834
 AliTPCCorrection.cxx:835
 AliTPCCorrection.cxx:836
 AliTPCCorrection.cxx:837
 AliTPCCorrection.cxx:838
 AliTPCCorrection.cxx:839
 AliTPCCorrection.cxx:840
 AliTPCCorrection.cxx:841
 AliTPCCorrection.cxx:842
 AliTPCCorrection.cxx:843
 AliTPCCorrection.cxx:844
 AliTPCCorrection.cxx:845
 AliTPCCorrection.cxx:846
 AliTPCCorrection.cxx:847
 AliTPCCorrection.cxx:848
 AliTPCCorrection.cxx:849
 AliTPCCorrection.cxx:850
 AliTPCCorrection.cxx:851
 AliTPCCorrection.cxx:852
 AliTPCCorrection.cxx:853
 AliTPCCorrection.cxx:854
 AliTPCCorrection.cxx:855
 AliTPCCorrection.cxx:856
 AliTPCCorrection.cxx:857
 AliTPCCorrection.cxx:858
 AliTPCCorrection.cxx:859
 AliTPCCorrection.cxx:860
 AliTPCCorrection.cxx:861
 AliTPCCorrection.cxx:862
 AliTPCCorrection.cxx:863
 AliTPCCorrection.cxx:864
 AliTPCCorrection.cxx:865
 AliTPCCorrection.cxx:866
 AliTPCCorrection.cxx:867
 AliTPCCorrection.cxx:868
 AliTPCCorrection.cxx:869
 AliTPCCorrection.cxx:870
 AliTPCCorrection.cxx:871
 AliTPCCorrection.cxx:872
 AliTPCCorrection.cxx:873
 AliTPCCorrection.cxx:874
 AliTPCCorrection.cxx:875
 AliTPCCorrection.cxx:876
 AliTPCCorrection.cxx:877
 AliTPCCorrection.cxx:878
 AliTPCCorrection.cxx:879
 AliTPCCorrection.cxx:880
 AliTPCCorrection.cxx:881
 AliTPCCorrection.cxx:882
 AliTPCCorrection.cxx:883
 AliTPCCorrection.cxx:884
 AliTPCCorrection.cxx:885
 AliTPCCorrection.cxx:886
 AliTPCCorrection.cxx:887
 AliTPCCorrection.cxx:888
 AliTPCCorrection.cxx:889
 AliTPCCorrection.cxx:890
 AliTPCCorrection.cxx:891
 AliTPCCorrection.cxx:892
 AliTPCCorrection.cxx:893
 AliTPCCorrection.cxx:894
 AliTPCCorrection.cxx:895
 AliTPCCorrection.cxx:896
 AliTPCCorrection.cxx:897
 AliTPCCorrection.cxx:898
 AliTPCCorrection.cxx:899
 AliTPCCorrection.cxx:900
 AliTPCCorrection.cxx:901
 AliTPCCorrection.cxx:902
 AliTPCCorrection.cxx:903
 AliTPCCorrection.cxx:904
 AliTPCCorrection.cxx:905
 AliTPCCorrection.cxx:906
 AliTPCCorrection.cxx:907
 AliTPCCorrection.cxx:908
 AliTPCCorrection.cxx:909
 AliTPCCorrection.cxx:910
 AliTPCCorrection.cxx:911
 AliTPCCorrection.cxx:912
 AliTPCCorrection.cxx:913
 AliTPCCorrection.cxx:914
 AliTPCCorrection.cxx:915
 AliTPCCorrection.cxx:916
 AliTPCCorrection.cxx:917
 AliTPCCorrection.cxx:918
 AliTPCCorrection.cxx:919
 AliTPCCorrection.cxx:920
 AliTPCCorrection.cxx:921
 AliTPCCorrection.cxx:922
 AliTPCCorrection.cxx:923
 AliTPCCorrection.cxx:924
 AliTPCCorrection.cxx:925
 AliTPCCorrection.cxx:926
 AliTPCCorrection.cxx:927
 AliTPCCorrection.cxx:928
 AliTPCCorrection.cxx:929
 AliTPCCorrection.cxx:930
 AliTPCCorrection.cxx:931
 AliTPCCorrection.cxx:932
 AliTPCCorrection.cxx:933
 AliTPCCorrection.cxx:934
 AliTPCCorrection.cxx:935
 AliTPCCorrection.cxx:936
 AliTPCCorrection.cxx:937
 AliTPCCorrection.cxx:938
 AliTPCCorrection.cxx:939
 AliTPCCorrection.cxx:940
 AliTPCCorrection.cxx:941
 AliTPCCorrection.cxx:942
 AliTPCCorrection.cxx:943
 AliTPCCorrection.cxx:944
 AliTPCCorrection.cxx:945
 AliTPCCorrection.cxx:946
 AliTPCCorrection.cxx:947
 AliTPCCorrection.cxx:948
 AliTPCCorrection.cxx:949
 AliTPCCorrection.cxx:950
 AliTPCCorrection.cxx:951
 AliTPCCorrection.cxx:952
 AliTPCCorrection.cxx:953
 AliTPCCorrection.cxx:954
 AliTPCCorrection.cxx:955
 AliTPCCorrection.cxx:956
 AliTPCCorrection.cxx:957
 AliTPCCorrection.cxx:958
 AliTPCCorrection.cxx:959
 AliTPCCorrection.cxx:960
 AliTPCCorrection.cxx:961
 AliTPCCorrection.cxx:962
 AliTPCCorrection.cxx:963
 AliTPCCorrection.cxx:964
 AliTPCCorrection.cxx:965
 AliTPCCorrection.cxx:966
 AliTPCCorrection.cxx:967
 AliTPCCorrection.cxx:968
 AliTPCCorrection.cxx:969
 AliTPCCorrection.cxx:970
 AliTPCCorrection.cxx:971
 AliTPCCorrection.cxx:972
 AliTPCCorrection.cxx:973
 AliTPCCorrection.cxx:974
 AliTPCCorrection.cxx:975
 AliTPCCorrection.cxx:976
 AliTPCCorrection.cxx:977
 AliTPCCorrection.cxx:978
 AliTPCCorrection.cxx:979
 AliTPCCorrection.cxx:980
 AliTPCCorrection.cxx:981
 AliTPCCorrection.cxx:982
 AliTPCCorrection.cxx:983
 AliTPCCorrection.cxx:984
 AliTPCCorrection.cxx:985
 AliTPCCorrection.cxx:986
 AliTPCCorrection.cxx:987
 AliTPCCorrection.cxx:988
 AliTPCCorrection.cxx:989
 AliTPCCorrection.cxx:990
 AliTPCCorrection.cxx:991
 AliTPCCorrection.cxx:992
 AliTPCCorrection.cxx:993
 AliTPCCorrection.cxx:994
 AliTPCCorrection.cxx:995
 AliTPCCorrection.cxx:996
 AliTPCCorrection.cxx:997
 AliTPCCorrection.cxx:998
 AliTPCCorrection.cxx:999
 AliTPCCorrection.cxx:1000
 AliTPCCorrection.cxx:1001
 AliTPCCorrection.cxx:1002
 AliTPCCorrection.cxx:1003
 AliTPCCorrection.cxx:1004
 AliTPCCorrection.cxx:1005
 AliTPCCorrection.cxx:1006
 AliTPCCorrection.cxx:1007
 AliTPCCorrection.cxx:1008
 AliTPCCorrection.cxx:1009
 AliTPCCorrection.cxx:1010
 AliTPCCorrection.cxx:1011
 AliTPCCorrection.cxx:1012
 AliTPCCorrection.cxx:1013
 AliTPCCorrection.cxx:1014
 AliTPCCorrection.cxx:1015
 AliTPCCorrection.cxx:1016
 AliTPCCorrection.cxx:1017
 AliTPCCorrection.cxx:1018
 AliTPCCorrection.cxx:1019
 AliTPCCorrection.cxx:1020
 AliTPCCorrection.cxx:1021
 AliTPCCorrection.cxx:1022
 AliTPCCorrection.cxx:1023
 AliTPCCorrection.cxx:1024
 AliTPCCorrection.cxx:1025
 AliTPCCorrection.cxx:1026
 AliTPCCorrection.cxx:1027
 AliTPCCorrection.cxx:1028
 AliTPCCorrection.cxx:1029
 AliTPCCorrection.cxx:1030
 AliTPCCorrection.cxx:1031
 AliTPCCorrection.cxx:1032
 AliTPCCorrection.cxx:1033
 AliTPCCorrection.cxx:1034
 AliTPCCorrection.cxx:1035
 AliTPCCorrection.cxx:1036
 AliTPCCorrection.cxx:1037
 AliTPCCorrection.cxx:1038
 AliTPCCorrection.cxx:1039
 AliTPCCorrection.cxx:1040
 AliTPCCorrection.cxx:1041
 AliTPCCorrection.cxx:1042
 AliTPCCorrection.cxx:1043
 AliTPCCorrection.cxx:1044
 AliTPCCorrection.cxx:1045
 AliTPCCorrection.cxx:1046
 AliTPCCorrection.cxx:1047
 AliTPCCorrection.cxx:1048
 AliTPCCorrection.cxx:1049
 AliTPCCorrection.cxx:1050
 AliTPCCorrection.cxx:1051
 AliTPCCorrection.cxx:1052
 AliTPCCorrection.cxx:1053
 AliTPCCorrection.cxx:1054
 AliTPCCorrection.cxx:1055
 AliTPCCorrection.cxx:1056
 AliTPCCorrection.cxx:1057
 AliTPCCorrection.cxx:1058
 AliTPCCorrection.cxx:1059
 AliTPCCorrection.cxx:1060
 AliTPCCorrection.cxx:1061
 AliTPCCorrection.cxx:1062
 AliTPCCorrection.cxx:1063
 AliTPCCorrection.cxx:1064
 AliTPCCorrection.cxx:1065
 AliTPCCorrection.cxx:1066
 AliTPCCorrection.cxx:1067
 AliTPCCorrection.cxx:1068
 AliTPCCorrection.cxx:1069
 AliTPCCorrection.cxx:1070
 AliTPCCorrection.cxx:1071
 AliTPCCorrection.cxx:1072
 AliTPCCorrection.cxx:1073
 AliTPCCorrection.cxx:1074
 AliTPCCorrection.cxx:1075
 AliTPCCorrection.cxx:1076
 AliTPCCorrection.cxx:1077
 AliTPCCorrection.cxx:1078
 AliTPCCorrection.cxx:1079
 AliTPCCorrection.cxx:1080
 AliTPCCorrection.cxx:1081
 AliTPCCorrection.cxx:1082
 AliTPCCorrection.cxx:1083
 AliTPCCorrection.cxx:1084
 AliTPCCorrection.cxx:1085
 AliTPCCorrection.cxx:1086
 AliTPCCorrection.cxx:1087
 AliTPCCorrection.cxx:1088
 AliTPCCorrection.cxx:1089
 AliTPCCorrection.cxx:1090
 AliTPCCorrection.cxx:1091
 AliTPCCorrection.cxx:1092
 AliTPCCorrection.cxx:1093
 AliTPCCorrection.cxx:1094
 AliTPCCorrection.cxx:1095
 AliTPCCorrection.cxx:1096
 AliTPCCorrection.cxx:1097
 AliTPCCorrection.cxx:1098
 AliTPCCorrection.cxx:1099
 AliTPCCorrection.cxx:1100
 AliTPCCorrection.cxx:1101
 AliTPCCorrection.cxx:1102
 AliTPCCorrection.cxx:1103
 AliTPCCorrection.cxx:1104
 AliTPCCorrection.cxx:1105
 AliTPCCorrection.cxx:1106
 AliTPCCorrection.cxx:1107
 AliTPCCorrection.cxx:1108
 AliTPCCorrection.cxx:1109
 AliTPCCorrection.cxx:1110
 AliTPCCorrection.cxx:1111
 AliTPCCorrection.cxx:1112
 AliTPCCorrection.cxx:1113
 AliTPCCorrection.cxx:1114
 AliTPCCorrection.cxx:1115
 AliTPCCorrection.cxx:1116
 AliTPCCorrection.cxx:1117
 AliTPCCorrection.cxx:1118
 AliTPCCorrection.cxx:1119
 AliTPCCorrection.cxx:1120
 AliTPCCorrection.cxx:1121
 AliTPCCorrection.cxx:1122
 AliTPCCorrection.cxx:1123
 AliTPCCorrection.cxx:1124
 AliTPCCorrection.cxx:1125
 AliTPCCorrection.cxx:1126
 AliTPCCorrection.cxx:1127
 AliTPCCorrection.cxx:1128
 AliTPCCorrection.cxx:1129
 AliTPCCorrection.cxx:1130
 AliTPCCorrection.cxx:1131
 AliTPCCorrection.cxx:1132
 AliTPCCorrection.cxx:1133
 AliTPCCorrection.cxx:1134
 AliTPCCorrection.cxx:1135
 AliTPCCorrection.cxx:1136
 AliTPCCorrection.cxx:1137
 AliTPCCorrection.cxx:1138
 AliTPCCorrection.cxx:1139
 AliTPCCorrection.cxx:1140
 AliTPCCorrection.cxx:1141
 AliTPCCorrection.cxx:1142
 AliTPCCorrection.cxx:1143
 AliTPCCorrection.cxx:1144
 AliTPCCorrection.cxx:1145
 AliTPCCorrection.cxx:1146
 AliTPCCorrection.cxx:1147
 AliTPCCorrection.cxx:1148
 AliTPCCorrection.cxx:1149
 AliTPCCorrection.cxx:1150
 AliTPCCorrection.cxx:1151
 AliTPCCorrection.cxx:1152
 AliTPCCorrection.cxx:1153
 AliTPCCorrection.cxx:1154
 AliTPCCorrection.cxx:1155
 AliTPCCorrection.cxx:1156
 AliTPCCorrection.cxx:1157
 AliTPCCorrection.cxx:1158
 AliTPCCorrection.cxx:1159
 AliTPCCorrection.cxx:1160
 AliTPCCorrection.cxx:1161
 AliTPCCorrection.cxx:1162
 AliTPCCorrection.cxx:1163
 AliTPCCorrection.cxx:1164
 AliTPCCorrection.cxx:1165
 AliTPCCorrection.cxx:1166
 AliTPCCorrection.cxx:1167
 AliTPCCorrection.cxx:1168
 AliTPCCorrection.cxx:1169
 AliTPCCorrection.cxx:1170
 AliTPCCorrection.cxx:1171
 AliTPCCorrection.cxx:1172
 AliTPCCorrection.cxx:1173
 AliTPCCorrection.cxx:1174
 AliTPCCorrection.cxx:1175
 AliTPCCorrection.cxx:1176
 AliTPCCorrection.cxx:1177
 AliTPCCorrection.cxx:1178
 AliTPCCorrection.cxx:1179
 AliTPCCorrection.cxx:1180
 AliTPCCorrection.cxx:1181
 AliTPCCorrection.cxx:1182
 AliTPCCorrection.cxx:1183
 AliTPCCorrection.cxx:1184
 AliTPCCorrection.cxx:1185
 AliTPCCorrection.cxx:1186
 AliTPCCorrection.cxx:1187
 AliTPCCorrection.cxx:1188
 AliTPCCorrection.cxx:1189
 AliTPCCorrection.cxx:1190
 AliTPCCorrection.cxx:1191
 AliTPCCorrection.cxx:1192
 AliTPCCorrection.cxx:1193
 AliTPCCorrection.cxx:1194
 AliTPCCorrection.cxx:1195
 AliTPCCorrection.cxx:1196
 AliTPCCorrection.cxx:1197
 AliTPCCorrection.cxx:1198
 AliTPCCorrection.cxx:1199
 AliTPCCorrection.cxx:1200
 AliTPCCorrection.cxx:1201
 AliTPCCorrection.cxx:1202
 AliTPCCorrection.cxx:1203
 AliTPCCorrection.cxx:1204
 AliTPCCorrection.cxx:1205
 AliTPCCorrection.cxx:1206
 AliTPCCorrection.cxx:1207
 AliTPCCorrection.cxx:1208
 AliTPCCorrection.cxx:1209
 AliTPCCorrection.cxx:1210
 AliTPCCorrection.cxx:1211
 AliTPCCorrection.cxx:1212
 AliTPCCorrection.cxx:1213
 AliTPCCorrection.cxx:1214
 AliTPCCorrection.cxx:1215
 AliTPCCorrection.cxx:1216
 AliTPCCorrection.cxx:1217
 AliTPCCorrection.cxx:1218
 AliTPCCorrection.cxx:1219
 AliTPCCorrection.cxx:1220
 AliTPCCorrection.cxx:1221
 AliTPCCorrection.cxx:1222
 AliTPCCorrection.cxx:1223
 AliTPCCorrection.cxx:1224
 AliTPCCorrection.cxx:1225
 AliTPCCorrection.cxx:1226
 AliTPCCorrection.cxx:1227
 AliTPCCorrection.cxx:1228
 AliTPCCorrection.cxx:1229
 AliTPCCorrection.cxx:1230
 AliTPCCorrection.cxx:1231
 AliTPCCorrection.cxx:1232
 AliTPCCorrection.cxx:1233
 AliTPCCorrection.cxx:1234
 AliTPCCorrection.cxx:1235
 AliTPCCorrection.cxx:1236
 AliTPCCorrection.cxx:1237
 AliTPCCorrection.cxx:1238
 AliTPCCorrection.cxx:1239
 AliTPCCorrection.cxx:1240
 AliTPCCorrection.cxx:1241
 AliTPCCorrection.cxx:1242
 AliTPCCorrection.cxx:1243
 AliTPCCorrection.cxx:1244
 AliTPCCorrection.cxx:1245
 AliTPCCorrection.cxx:1246
 AliTPCCorrection.cxx:1247
 AliTPCCorrection.cxx:1248
 AliTPCCorrection.cxx:1249
 AliTPCCorrection.cxx:1250
 AliTPCCorrection.cxx:1251
 AliTPCCorrection.cxx:1252
 AliTPCCorrection.cxx:1253
 AliTPCCorrection.cxx:1254
 AliTPCCorrection.cxx:1255
 AliTPCCorrection.cxx:1256
 AliTPCCorrection.cxx:1257
 AliTPCCorrection.cxx:1258
 AliTPCCorrection.cxx:1259
 AliTPCCorrection.cxx:1260
 AliTPCCorrection.cxx:1261
 AliTPCCorrection.cxx:1262
 AliTPCCorrection.cxx:1263
 AliTPCCorrection.cxx:1264
 AliTPCCorrection.cxx:1265
 AliTPCCorrection.cxx:1266
 AliTPCCorrection.cxx:1267
 AliTPCCorrection.cxx:1268
 AliTPCCorrection.cxx:1269
 AliTPCCorrection.cxx:1270
 AliTPCCorrection.cxx:1271
 AliTPCCorrection.cxx:1272
 AliTPCCorrection.cxx:1273
 AliTPCCorrection.cxx:1274
 AliTPCCorrection.cxx:1275
 AliTPCCorrection.cxx:1276
 AliTPCCorrection.cxx:1277
 AliTPCCorrection.cxx:1278
 AliTPCCorrection.cxx:1279
 AliTPCCorrection.cxx:1280
 AliTPCCorrection.cxx:1281
 AliTPCCorrection.cxx:1282
 AliTPCCorrection.cxx:1283
 AliTPCCorrection.cxx:1284
 AliTPCCorrection.cxx:1285
 AliTPCCorrection.cxx:1286
 AliTPCCorrection.cxx:1287
 AliTPCCorrection.cxx:1288
 AliTPCCorrection.cxx:1289
 AliTPCCorrection.cxx:1290
 AliTPCCorrection.cxx:1291
 AliTPCCorrection.cxx:1292
 AliTPCCorrection.cxx:1293
 AliTPCCorrection.cxx:1294
 AliTPCCorrection.cxx:1295
 AliTPCCorrection.cxx:1296
 AliTPCCorrection.cxx:1297
 AliTPCCorrection.cxx:1298
 AliTPCCorrection.cxx:1299
 AliTPCCorrection.cxx:1300
 AliTPCCorrection.cxx:1301
 AliTPCCorrection.cxx:1302
 AliTPCCorrection.cxx:1303
 AliTPCCorrection.cxx:1304
 AliTPCCorrection.cxx:1305
 AliTPCCorrection.cxx:1306
 AliTPCCorrection.cxx:1307
 AliTPCCorrection.cxx:1308
 AliTPCCorrection.cxx:1309
 AliTPCCorrection.cxx:1310
 AliTPCCorrection.cxx:1311
 AliTPCCorrection.cxx:1312
 AliTPCCorrection.cxx:1313
 AliTPCCorrection.cxx:1314
 AliTPCCorrection.cxx:1315
 AliTPCCorrection.cxx:1316
 AliTPCCorrection.cxx:1317
 AliTPCCorrection.cxx:1318
 AliTPCCorrection.cxx:1319
 AliTPCCorrection.cxx:1320
 AliTPCCorrection.cxx:1321
 AliTPCCorrection.cxx:1322
 AliTPCCorrection.cxx:1323
 AliTPCCorrection.cxx:1324
 AliTPCCorrection.cxx:1325
 AliTPCCorrection.cxx:1326
 AliTPCCorrection.cxx:1327
 AliTPCCorrection.cxx:1328
 AliTPCCorrection.cxx:1329
 AliTPCCorrection.cxx:1330
 AliTPCCorrection.cxx:1331
 AliTPCCorrection.cxx:1332
 AliTPCCorrection.cxx:1333
 AliTPCCorrection.cxx:1334
 AliTPCCorrection.cxx:1335
 AliTPCCorrection.cxx:1336
 AliTPCCorrection.cxx:1337
 AliTPCCorrection.cxx:1338
 AliTPCCorrection.cxx:1339
 AliTPCCorrection.cxx:1340
 AliTPCCorrection.cxx:1341
 AliTPCCorrection.cxx:1342
 AliTPCCorrection.cxx:1343
 AliTPCCorrection.cxx:1344
 AliTPCCorrection.cxx:1345
 AliTPCCorrection.cxx:1346
 AliTPCCorrection.cxx:1347
 AliTPCCorrection.cxx:1348
 AliTPCCorrection.cxx:1349
 AliTPCCorrection.cxx:1350
 AliTPCCorrection.cxx:1351
 AliTPCCorrection.cxx:1352
 AliTPCCorrection.cxx:1353
 AliTPCCorrection.cxx:1354
 AliTPCCorrection.cxx:1355
 AliTPCCorrection.cxx:1356
 AliTPCCorrection.cxx:1357
 AliTPCCorrection.cxx:1358
 AliTPCCorrection.cxx:1359
 AliTPCCorrection.cxx:1360
 AliTPCCorrection.cxx:1361
 AliTPCCorrection.cxx:1362
 AliTPCCorrection.cxx:1363
 AliTPCCorrection.cxx:1364
 AliTPCCorrection.cxx:1365
 AliTPCCorrection.cxx:1366
 AliTPCCorrection.cxx:1367
 AliTPCCorrection.cxx:1368
 AliTPCCorrection.cxx:1369
 AliTPCCorrection.cxx:1370
 AliTPCCorrection.cxx:1371
 AliTPCCorrection.cxx:1372
 AliTPCCorrection.cxx:1373
 AliTPCCorrection.cxx:1374
 AliTPCCorrection.cxx:1375
 AliTPCCorrection.cxx:1376
 AliTPCCorrection.cxx:1377
 AliTPCCorrection.cxx:1378
 AliTPCCorrection.cxx:1379
 AliTPCCorrection.cxx:1380
 AliTPCCorrection.cxx:1381
 AliTPCCorrection.cxx:1382
 AliTPCCorrection.cxx:1383
 AliTPCCorrection.cxx:1384
 AliTPCCorrection.cxx:1385
 AliTPCCorrection.cxx:1386
 AliTPCCorrection.cxx:1387
 AliTPCCorrection.cxx:1388
 AliTPCCorrection.cxx:1389
 AliTPCCorrection.cxx:1390
 AliTPCCorrection.cxx:1391
 AliTPCCorrection.cxx:1392
 AliTPCCorrection.cxx:1393
 AliTPCCorrection.cxx:1394
 AliTPCCorrection.cxx:1395
 AliTPCCorrection.cxx:1396
 AliTPCCorrection.cxx:1397
 AliTPCCorrection.cxx:1398
 AliTPCCorrection.cxx:1399
 AliTPCCorrection.cxx:1400
 AliTPCCorrection.cxx:1401
 AliTPCCorrection.cxx:1402
 AliTPCCorrection.cxx:1403
 AliTPCCorrection.cxx:1404
 AliTPCCorrection.cxx:1405
 AliTPCCorrection.cxx:1406
 AliTPCCorrection.cxx:1407
 AliTPCCorrection.cxx:1408
 AliTPCCorrection.cxx:1409
 AliTPCCorrection.cxx:1410
 AliTPCCorrection.cxx:1411
 AliTPCCorrection.cxx:1412
 AliTPCCorrection.cxx:1413
 AliTPCCorrection.cxx:1414
 AliTPCCorrection.cxx:1415
 AliTPCCorrection.cxx:1416
 AliTPCCorrection.cxx:1417
 AliTPCCorrection.cxx:1418
 AliTPCCorrection.cxx:1419
 AliTPCCorrection.cxx:1420
 AliTPCCorrection.cxx:1421
 AliTPCCorrection.cxx:1422
 AliTPCCorrection.cxx:1423
 AliTPCCorrection.cxx:1424
 AliTPCCorrection.cxx:1425
 AliTPCCorrection.cxx:1426
 AliTPCCorrection.cxx:1427
 AliTPCCorrection.cxx:1428
 AliTPCCorrection.cxx:1429
 AliTPCCorrection.cxx:1430
 AliTPCCorrection.cxx:1431
 AliTPCCorrection.cxx:1432
 AliTPCCorrection.cxx:1433
 AliTPCCorrection.cxx:1434
 AliTPCCorrection.cxx:1435
 AliTPCCorrection.cxx:1436
 AliTPCCorrection.cxx:1437
 AliTPCCorrection.cxx:1438
 AliTPCCorrection.cxx:1439
 AliTPCCorrection.cxx:1440
 AliTPCCorrection.cxx:1441
 AliTPCCorrection.cxx:1442
 AliTPCCorrection.cxx:1443
 AliTPCCorrection.cxx:1444
 AliTPCCorrection.cxx:1445
 AliTPCCorrection.cxx:1446
 AliTPCCorrection.cxx:1447
 AliTPCCorrection.cxx:1448
 AliTPCCorrection.cxx:1449
 AliTPCCorrection.cxx:1450
 AliTPCCorrection.cxx:1451
 AliTPCCorrection.cxx:1452
 AliTPCCorrection.cxx:1453
 AliTPCCorrection.cxx:1454
 AliTPCCorrection.cxx:1455
 AliTPCCorrection.cxx:1456
 AliTPCCorrection.cxx:1457
 AliTPCCorrection.cxx:1458
 AliTPCCorrection.cxx:1459
 AliTPCCorrection.cxx:1460
 AliTPCCorrection.cxx:1461
 AliTPCCorrection.cxx:1462
 AliTPCCorrection.cxx:1463
 AliTPCCorrection.cxx:1464
 AliTPCCorrection.cxx:1465
 AliTPCCorrection.cxx:1466
 AliTPCCorrection.cxx:1467
 AliTPCCorrection.cxx:1468
 AliTPCCorrection.cxx:1469
 AliTPCCorrection.cxx:1470
 AliTPCCorrection.cxx:1471
 AliTPCCorrection.cxx:1472
 AliTPCCorrection.cxx:1473
 AliTPCCorrection.cxx:1474
 AliTPCCorrection.cxx:1475
 AliTPCCorrection.cxx:1476
 AliTPCCorrection.cxx:1477
 AliTPCCorrection.cxx:1478
 AliTPCCorrection.cxx:1479
 AliTPCCorrection.cxx:1480
 AliTPCCorrection.cxx:1481
 AliTPCCorrection.cxx:1482
 AliTPCCorrection.cxx:1483
 AliTPCCorrection.cxx:1484
 AliTPCCorrection.cxx:1485
 AliTPCCorrection.cxx:1486
 AliTPCCorrection.cxx:1487
 AliTPCCorrection.cxx:1488
 AliTPCCorrection.cxx:1489
 AliTPCCorrection.cxx:1490
 AliTPCCorrection.cxx:1491
 AliTPCCorrection.cxx:1492
 AliTPCCorrection.cxx:1493
 AliTPCCorrection.cxx:1494
 AliTPCCorrection.cxx:1495
 AliTPCCorrection.cxx:1496
 AliTPCCorrection.cxx:1497
 AliTPCCorrection.cxx:1498
 AliTPCCorrection.cxx:1499
 AliTPCCorrection.cxx:1500
 AliTPCCorrection.cxx:1501
 AliTPCCorrection.cxx:1502
 AliTPCCorrection.cxx:1503
 AliTPCCorrection.cxx:1504
 AliTPCCorrection.cxx:1505
 AliTPCCorrection.cxx:1506
 AliTPCCorrection.cxx:1507
 AliTPCCorrection.cxx:1508
 AliTPCCorrection.cxx:1509
 AliTPCCorrection.cxx:1510
 AliTPCCorrection.cxx:1511
 AliTPCCorrection.cxx:1512
 AliTPCCorrection.cxx:1513
 AliTPCCorrection.cxx:1514
 AliTPCCorrection.cxx:1515
 AliTPCCorrection.cxx:1516
 AliTPCCorrection.cxx:1517
 AliTPCCorrection.cxx:1518
 AliTPCCorrection.cxx:1519
 AliTPCCorrection.cxx:1520
 AliTPCCorrection.cxx:1521
 AliTPCCorrection.cxx:1522
 AliTPCCorrection.cxx:1523
 AliTPCCorrection.cxx:1524
 AliTPCCorrection.cxx:1525
 AliTPCCorrection.cxx:1526
 AliTPCCorrection.cxx:1527
 AliTPCCorrection.cxx:1528
 AliTPCCorrection.cxx:1529
 AliTPCCorrection.cxx:1530
 AliTPCCorrection.cxx:1531
 AliTPCCorrection.cxx:1532
 AliTPCCorrection.cxx:1533
 AliTPCCorrection.cxx:1534
 AliTPCCorrection.cxx:1535
 AliTPCCorrection.cxx:1536
 AliTPCCorrection.cxx:1537
 AliTPCCorrection.cxx:1538
 AliTPCCorrection.cxx:1539
 AliTPCCorrection.cxx:1540
 AliTPCCorrection.cxx:1541
 AliTPCCorrection.cxx:1542
 AliTPCCorrection.cxx:1543
 AliTPCCorrection.cxx:1544
 AliTPCCorrection.cxx:1545
 AliTPCCorrection.cxx:1546
 AliTPCCorrection.cxx:1547
 AliTPCCorrection.cxx:1548
 AliTPCCorrection.cxx:1549
 AliTPCCorrection.cxx:1550
 AliTPCCorrection.cxx:1551
 AliTPCCorrection.cxx:1552
 AliTPCCorrection.cxx:1553
 AliTPCCorrection.cxx:1554
 AliTPCCorrection.cxx:1555
 AliTPCCorrection.cxx:1556
 AliTPCCorrection.cxx:1557
 AliTPCCorrection.cxx:1558
 AliTPCCorrection.cxx:1559
 AliTPCCorrection.cxx:1560
 AliTPCCorrection.cxx:1561
 AliTPCCorrection.cxx:1562
 AliTPCCorrection.cxx:1563
 AliTPCCorrection.cxx:1564
 AliTPCCorrection.cxx:1565
 AliTPCCorrection.cxx:1566
 AliTPCCorrection.cxx:1567
 AliTPCCorrection.cxx:1568
 AliTPCCorrection.cxx:1569
 AliTPCCorrection.cxx:1570
 AliTPCCorrection.cxx:1571
 AliTPCCorrection.cxx:1572
 AliTPCCorrection.cxx:1573
 AliTPCCorrection.cxx:1574
 AliTPCCorrection.cxx:1575
 AliTPCCorrection.cxx:1576
 AliTPCCorrection.cxx:1577
 AliTPCCorrection.cxx:1578
 AliTPCCorrection.cxx:1579
 AliTPCCorrection.cxx:1580
 AliTPCCorrection.cxx:1581
 AliTPCCorrection.cxx:1582
 AliTPCCorrection.cxx:1583
 AliTPCCorrection.cxx:1584
 AliTPCCorrection.cxx:1585
 AliTPCCorrection.cxx:1586
 AliTPCCorrection.cxx:1587
 AliTPCCorrection.cxx:1588
 AliTPCCorrection.cxx:1589
 AliTPCCorrection.cxx:1590
 AliTPCCorrection.cxx:1591
 AliTPCCorrection.cxx:1592
 AliTPCCorrection.cxx:1593
 AliTPCCorrection.cxx:1594
 AliTPCCorrection.cxx:1595
 AliTPCCorrection.cxx:1596
 AliTPCCorrection.cxx:1597
 AliTPCCorrection.cxx:1598
 AliTPCCorrection.cxx:1599
 AliTPCCorrection.cxx:1600
 AliTPCCorrection.cxx:1601
 AliTPCCorrection.cxx:1602
 AliTPCCorrection.cxx:1603
 AliTPCCorrection.cxx:1604
 AliTPCCorrection.cxx:1605
 AliTPCCorrection.cxx:1606
 AliTPCCorrection.cxx:1607
 AliTPCCorrection.cxx:1608
 AliTPCCorrection.cxx:1609
 AliTPCCorrection.cxx:1610
 AliTPCCorrection.cxx:1611
 AliTPCCorrection.cxx:1612
 AliTPCCorrection.cxx:1613
 AliTPCCorrection.cxx:1614
 AliTPCCorrection.cxx:1615
 AliTPCCorrection.cxx:1616
 AliTPCCorrection.cxx:1617
 AliTPCCorrection.cxx:1618
 AliTPCCorrection.cxx:1619
 AliTPCCorrection.cxx:1620
 AliTPCCorrection.cxx:1621
 AliTPCCorrection.cxx:1622
 AliTPCCorrection.cxx:1623
 AliTPCCorrection.cxx:1624
 AliTPCCorrection.cxx:1625
 AliTPCCorrection.cxx:1626
 AliTPCCorrection.cxx:1627
 AliTPCCorrection.cxx:1628
 AliTPCCorrection.cxx:1629
 AliTPCCorrection.cxx:1630
 AliTPCCorrection.cxx:1631
 AliTPCCorrection.cxx:1632
 AliTPCCorrection.cxx:1633
 AliTPCCorrection.cxx:1634
 AliTPCCorrection.cxx:1635
 AliTPCCorrection.cxx:1636
 AliTPCCorrection.cxx:1637
 AliTPCCorrection.cxx:1638
 AliTPCCorrection.cxx:1639
 AliTPCCorrection.cxx:1640
 AliTPCCorrection.cxx:1641
 AliTPCCorrection.cxx:1642
 AliTPCCorrection.cxx:1643
 AliTPCCorrection.cxx:1644
 AliTPCCorrection.cxx:1645
 AliTPCCorrection.cxx:1646
 AliTPCCorrection.cxx:1647
 AliTPCCorrection.cxx:1648
 AliTPCCorrection.cxx:1649
 AliTPCCorrection.cxx:1650
 AliTPCCorrection.cxx:1651
 AliTPCCorrection.cxx:1652
 AliTPCCorrection.cxx:1653
 AliTPCCorrection.cxx:1654
 AliTPCCorrection.cxx:1655
 AliTPCCorrection.cxx:1656
 AliTPCCorrection.cxx:1657
 AliTPCCorrection.cxx:1658
 AliTPCCorrection.cxx:1659
 AliTPCCorrection.cxx:1660
 AliTPCCorrection.cxx:1661
 AliTPCCorrection.cxx:1662
 AliTPCCorrection.cxx:1663
 AliTPCCorrection.cxx:1664
 AliTPCCorrection.cxx:1665
 AliTPCCorrection.cxx:1666
 AliTPCCorrection.cxx:1667
 AliTPCCorrection.cxx:1668
 AliTPCCorrection.cxx:1669
 AliTPCCorrection.cxx:1670
 AliTPCCorrection.cxx:1671
 AliTPCCorrection.cxx:1672
 AliTPCCorrection.cxx:1673
 AliTPCCorrection.cxx:1674
 AliTPCCorrection.cxx:1675
 AliTPCCorrection.cxx:1676
 AliTPCCorrection.cxx:1677
 AliTPCCorrection.cxx:1678
 AliTPCCorrection.cxx:1679
 AliTPCCorrection.cxx:1680
 AliTPCCorrection.cxx:1681
 AliTPCCorrection.cxx:1682
 AliTPCCorrection.cxx:1683
 AliTPCCorrection.cxx:1684
 AliTPCCorrection.cxx:1685
 AliTPCCorrection.cxx:1686
 AliTPCCorrection.cxx:1687
 AliTPCCorrection.cxx:1688
 AliTPCCorrection.cxx:1689
 AliTPCCorrection.cxx:1690
 AliTPCCorrection.cxx:1691
 AliTPCCorrection.cxx:1692
 AliTPCCorrection.cxx:1693
 AliTPCCorrection.cxx:1694
 AliTPCCorrection.cxx:1695
 AliTPCCorrection.cxx:1696
 AliTPCCorrection.cxx:1697
 AliTPCCorrection.cxx:1698
 AliTPCCorrection.cxx:1699
 AliTPCCorrection.cxx:1700
 AliTPCCorrection.cxx:1701
 AliTPCCorrection.cxx:1702
 AliTPCCorrection.cxx:1703
 AliTPCCorrection.cxx:1704
 AliTPCCorrection.cxx:1705
 AliTPCCorrection.cxx:1706
 AliTPCCorrection.cxx:1707
 AliTPCCorrection.cxx:1708
 AliTPCCorrection.cxx:1709
 AliTPCCorrection.cxx:1710
 AliTPCCorrection.cxx:1711
 AliTPCCorrection.cxx:1712
 AliTPCCorrection.cxx:1713
 AliTPCCorrection.cxx:1714
 AliTPCCorrection.cxx:1715
 AliTPCCorrection.cxx:1716
 AliTPCCorrection.cxx:1717
 AliTPCCorrection.cxx:1718
 AliTPCCorrection.cxx:1719
 AliTPCCorrection.cxx:1720
 AliTPCCorrection.cxx:1721
 AliTPCCorrection.cxx:1722
 AliTPCCorrection.cxx:1723
 AliTPCCorrection.cxx:1724
 AliTPCCorrection.cxx:1725
 AliTPCCorrection.cxx:1726
 AliTPCCorrection.cxx:1727
 AliTPCCorrection.cxx:1728
 AliTPCCorrection.cxx:1729
 AliTPCCorrection.cxx:1730
 AliTPCCorrection.cxx:1731
 AliTPCCorrection.cxx:1732
 AliTPCCorrection.cxx:1733
 AliTPCCorrection.cxx:1734
 AliTPCCorrection.cxx:1735
 AliTPCCorrection.cxx:1736
 AliTPCCorrection.cxx:1737
 AliTPCCorrection.cxx:1738
 AliTPCCorrection.cxx:1739
 AliTPCCorrection.cxx:1740
 AliTPCCorrection.cxx:1741
 AliTPCCorrection.cxx:1742
 AliTPCCorrection.cxx:1743
 AliTPCCorrection.cxx:1744
 AliTPCCorrection.cxx:1745
 AliTPCCorrection.cxx:1746
 AliTPCCorrection.cxx:1747
 AliTPCCorrection.cxx:1748
 AliTPCCorrection.cxx:1749
 AliTPCCorrection.cxx:1750
 AliTPCCorrection.cxx:1751
 AliTPCCorrection.cxx:1752
 AliTPCCorrection.cxx:1753
 AliTPCCorrection.cxx:1754
 AliTPCCorrection.cxx:1755
 AliTPCCorrection.cxx:1756
 AliTPCCorrection.cxx:1757
 AliTPCCorrection.cxx:1758
 AliTPCCorrection.cxx:1759
 AliTPCCorrection.cxx:1760
 AliTPCCorrection.cxx:1761
 AliTPCCorrection.cxx:1762
 AliTPCCorrection.cxx:1763
 AliTPCCorrection.cxx:1764
 AliTPCCorrection.cxx:1765
 AliTPCCorrection.cxx:1766
 AliTPCCorrection.cxx:1767
 AliTPCCorrection.cxx:1768
 AliTPCCorrection.cxx:1769
 AliTPCCorrection.cxx:1770
 AliTPCCorrection.cxx:1771
 AliTPCCorrection.cxx:1772
 AliTPCCorrection.cxx:1773
 AliTPCCorrection.cxx:1774
 AliTPCCorrection.cxx:1775
 AliTPCCorrection.cxx:1776
 AliTPCCorrection.cxx:1777
 AliTPCCorrection.cxx:1778
 AliTPCCorrection.cxx:1779
 AliTPCCorrection.cxx:1780
 AliTPCCorrection.cxx:1781
 AliTPCCorrection.cxx:1782
 AliTPCCorrection.cxx:1783
 AliTPCCorrection.cxx:1784
 AliTPCCorrection.cxx:1785
 AliTPCCorrection.cxx:1786
 AliTPCCorrection.cxx:1787
 AliTPCCorrection.cxx:1788
 AliTPCCorrection.cxx:1789
 AliTPCCorrection.cxx:1790
 AliTPCCorrection.cxx:1791
 AliTPCCorrection.cxx:1792
 AliTPCCorrection.cxx:1793
 AliTPCCorrection.cxx:1794
 AliTPCCorrection.cxx:1795
 AliTPCCorrection.cxx:1796
 AliTPCCorrection.cxx:1797
 AliTPCCorrection.cxx:1798
 AliTPCCorrection.cxx:1799
 AliTPCCorrection.cxx:1800
 AliTPCCorrection.cxx:1801
 AliTPCCorrection.cxx:1802
 AliTPCCorrection.cxx:1803
 AliTPCCorrection.cxx:1804
 AliTPCCorrection.cxx:1805
 AliTPCCorrection.cxx:1806
 AliTPCCorrection.cxx:1807
 AliTPCCorrection.cxx:1808
 AliTPCCorrection.cxx:1809
 AliTPCCorrection.cxx:1810
 AliTPCCorrection.cxx:1811
 AliTPCCorrection.cxx:1812
 AliTPCCorrection.cxx:1813
 AliTPCCorrection.cxx:1814
 AliTPCCorrection.cxx:1815
 AliTPCCorrection.cxx:1816
 AliTPCCorrection.cxx:1817
 AliTPCCorrection.cxx:1818
 AliTPCCorrection.cxx:1819
 AliTPCCorrection.cxx:1820
 AliTPCCorrection.cxx:1821
 AliTPCCorrection.cxx:1822
 AliTPCCorrection.cxx:1823
 AliTPCCorrection.cxx:1824
 AliTPCCorrection.cxx:1825
 AliTPCCorrection.cxx:1826
 AliTPCCorrection.cxx:1827
 AliTPCCorrection.cxx:1828
 AliTPCCorrection.cxx:1829
 AliTPCCorrection.cxx:1830
 AliTPCCorrection.cxx:1831
 AliTPCCorrection.cxx:1832
 AliTPCCorrection.cxx:1833
 AliTPCCorrection.cxx:1834
 AliTPCCorrection.cxx:1835
 AliTPCCorrection.cxx:1836
 AliTPCCorrection.cxx:1837
 AliTPCCorrection.cxx:1838
 AliTPCCorrection.cxx:1839
 AliTPCCorrection.cxx:1840
 AliTPCCorrection.cxx:1841
 AliTPCCorrection.cxx:1842
 AliTPCCorrection.cxx:1843
 AliTPCCorrection.cxx:1844
 AliTPCCorrection.cxx:1845
 AliTPCCorrection.cxx:1846
 AliTPCCorrection.cxx:1847
 AliTPCCorrection.cxx:1848
 AliTPCCorrection.cxx:1849
 AliTPCCorrection.cxx:1850
 AliTPCCorrection.cxx:1851
 AliTPCCorrection.cxx:1852
 AliTPCCorrection.cxx:1853
 AliTPCCorrection.cxx:1854
 AliTPCCorrection.cxx:1855
 AliTPCCorrection.cxx:1856
 AliTPCCorrection.cxx:1857
 AliTPCCorrection.cxx:1858
 AliTPCCorrection.cxx:1859
 AliTPCCorrection.cxx:1860
 AliTPCCorrection.cxx:1861
 AliTPCCorrection.cxx:1862
 AliTPCCorrection.cxx:1863
 AliTPCCorrection.cxx:1864
 AliTPCCorrection.cxx:1865
 AliTPCCorrection.cxx:1866
 AliTPCCorrection.cxx:1867
 AliTPCCorrection.cxx:1868
 AliTPCCorrection.cxx:1869
 AliTPCCorrection.cxx:1870
 AliTPCCorrection.cxx:1871
 AliTPCCorrection.cxx:1872
 AliTPCCorrection.cxx:1873
 AliTPCCorrection.cxx:1874
 AliTPCCorrection.cxx:1875
 AliTPCCorrection.cxx:1876
 AliTPCCorrection.cxx:1877
 AliTPCCorrection.cxx:1878
 AliTPCCorrection.cxx:1879
 AliTPCCorrection.cxx:1880
 AliTPCCorrection.cxx:1881
 AliTPCCorrection.cxx:1882
 AliTPCCorrection.cxx:1883
 AliTPCCorrection.cxx:1884
 AliTPCCorrection.cxx:1885
 AliTPCCorrection.cxx:1886
 AliTPCCorrection.cxx:1887
 AliTPCCorrection.cxx:1888
 AliTPCCorrection.cxx:1889
 AliTPCCorrection.cxx:1890
 AliTPCCorrection.cxx:1891
 AliTPCCorrection.cxx:1892
 AliTPCCorrection.cxx:1893
 AliTPCCorrection.cxx:1894
 AliTPCCorrection.cxx:1895
 AliTPCCorrection.cxx:1896
 AliTPCCorrection.cxx:1897
 AliTPCCorrection.cxx:1898
 AliTPCCorrection.cxx:1899
 AliTPCCorrection.cxx:1900
 AliTPCCorrection.cxx:1901
 AliTPCCorrection.cxx:1902
 AliTPCCorrection.cxx:1903
 AliTPCCorrection.cxx:1904
 AliTPCCorrection.cxx:1905
 AliTPCCorrection.cxx:1906
 AliTPCCorrection.cxx:1907
 AliTPCCorrection.cxx:1908
 AliTPCCorrection.cxx:1909
 AliTPCCorrection.cxx:1910
 AliTPCCorrection.cxx:1911
 AliTPCCorrection.cxx:1912
 AliTPCCorrection.cxx:1913
 AliTPCCorrection.cxx:1914
 AliTPCCorrection.cxx:1915
 AliTPCCorrection.cxx:1916
 AliTPCCorrection.cxx:1917
 AliTPCCorrection.cxx:1918
 AliTPCCorrection.cxx:1919
 AliTPCCorrection.cxx:1920
 AliTPCCorrection.cxx:1921
 AliTPCCorrection.cxx:1922
 AliTPCCorrection.cxx:1923
 AliTPCCorrection.cxx:1924
 AliTPCCorrection.cxx:1925
 AliTPCCorrection.cxx:1926
 AliTPCCorrection.cxx:1927
 AliTPCCorrection.cxx:1928
 AliTPCCorrection.cxx:1929
 AliTPCCorrection.cxx:1930
 AliTPCCorrection.cxx:1931
 AliTPCCorrection.cxx:1932
 AliTPCCorrection.cxx:1933
 AliTPCCorrection.cxx:1934
 AliTPCCorrection.cxx:1935
 AliTPCCorrection.cxx:1936
 AliTPCCorrection.cxx:1937
 AliTPCCorrection.cxx:1938
 AliTPCCorrection.cxx:1939
 AliTPCCorrection.cxx:1940
 AliTPCCorrection.cxx:1941
 AliTPCCorrection.cxx:1942
 AliTPCCorrection.cxx:1943
 AliTPCCorrection.cxx:1944
 AliTPCCorrection.cxx:1945
 AliTPCCorrection.cxx:1946
 AliTPCCorrection.cxx:1947
 AliTPCCorrection.cxx:1948
 AliTPCCorrection.cxx:1949
 AliTPCCorrection.cxx:1950
 AliTPCCorrection.cxx:1951
 AliTPCCorrection.cxx:1952
 AliTPCCorrection.cxx:1953
 AliTPCCorrection.cxx:1954
 AliTPCCorrection.cxx:1955
 AliTPCCorrection.cxx:1956
 AliTPCCorrection.cxx:1957
 AliTPCCorrection.cxx:1958
 AliTPCCorrection.cxx:1959
 AliTPCCorrection.cxx:1960
 AliTPCCorrection.cxx:1961
 AliTPCCorrection.cxx:1962
 AliTPCCorrection.cxx:1963
 AliTPCCorrection.cxx:1964
 AliTPCCorrection.cxx:1965
 AliTPCCorrection.cxx:1966
 AliTPCCorrection.cxx:1967
 AliTPCCorrection.cxx:1968
 AliTPCCorrection.cxx:1969
 AliTPCCorrection.cxx:1970
 AliTPCCorrection.cxx:1971
 AliTPCCorrection.cxx:1972
 AliTPCCorrection.cxx:1973
 AliTPCCorrection.cxx:1974
 AliTPCCorrection.cxx:1975
 AliTPCCorrection.cxx:1976
 AliTPCCorrection.cxx:1977
 AliTPCCorrection.cxx:1978
 AliTPCCorrection.cxx:1979
 AliTPCCorrection.cxx:1980
 AliTPCCorrection.cxx:1981
 AliTPCCorrection.cxx:1982
 AliTPCCorrection.cxx:1983
 AliTPCCorrection.cxx:1984
 AliTPCCorrection.cxx:1985
 AliTPCCorrection.cxx:1986
 AliTPCCorrection.cxx:1987
 AliTPCCorrection.cxx:1988
 AliTPCCorrection.cxx:1989
 AliTPCCorrection.cxx:1990
 AliTPCCorrection.cxx:1991
 AliTPCCorrection.cxx:1992
 AliTPCCorrection.cxx:1993
 AliTPCCorrection.cxx:1994
 AliTPCCorrection.cxx:1995
 AliTPCCorrection.cxx:1996
 AliTPCCorrection.cxx:1997
 AliTPCCorrection.cxx:1998
 AliTPCCorrection.cxx:1999
 AliTPCCorrection.cxx:2000
 AliTPCCorrection.cxx:2001
 AliTPCCorrection.cxx:2002
 AliTPCCorrection.cxx:2003
 AliTPCCorrection.cxx:2004
 AliTPCCorrection.cxx:2005
 AliTPCCorrection.cxx:2006
 AliTPCCorrection.cxx:2007
 AliTPCCorrection.cxx:2008
 AliTPCCorrection.cxx:2009
 AliTPCCorrection.cxx:2010
 AliTPCCorrection.cxx:2011
 AliTPCCorrection.cxx:2012
 AliTPCCorrection.cxx:2013
 AliTPCCorrection.cxx:2014
 AliTPCCorrection.cxx:2015
 AliTPCCorrection.cxx:2016
 AliTPCCorrection.cxx:2017
 AliTPCCorrection.cxx:2018
 AliTPCCorrection.cxx:2019
 AliTPCCorrection.cxx:2020
 AliTPCCorrection.cxx:2021
 AliTPCCorrection.cxx:2022
 AliTPCCorrection.cxx:2023
 AliTPCCorrection.cxx:2024
 AliTPCCorrection.cxx:2025
 AliTPCCorrection.cxx:2026
 AliTPCCorrection.cxx:2027
 AliTPCCorrection.cxx:2028
 AliTPCCorrection.cxx:2029
 AliTPCCorrection.cxx:2030
 AliTPCCorrection.cxx:2031
 AliTPCCorrection.cxx:2032
 AliTPCCorrection.cxx:2033
 AliTPCCorrection.cxx:2034
 AliTPCCorrection.cxx:2035
 AliTPCCorrection.cxx:2036
 AliTPCCorrection.cxx:2037
 AliTPCCorrection.cxx:2038
 AliTPCCorrection.cxx:2039
 AliTPCCorrection.cxx:2040
 AliTPCCorrection.cxx:2041
 AliTPCCorrection.cxx:2042
 AliTPCCorrection.cxx:2043
 AliTPCCorrection.cxx:2044
 AliTPCCorrection.cxx:2045
 AliTPCCorrection.cxx:2046
 AliTPCCorrection.cxx:2047
 AliTPCCorrection.cxx:2048
 AliTPCCorrection.cxx:2049
 AliTPCCorrection.cxx:2050
 AliTPCCorrection.cxx:2051
 AliTPCCorrection.cxx:2052
 AliTPCCorrection.cxx:2053
 AliTPCCorrection.cxx:2054
 AliTPCCorrection.cxx:2055
 AliTPCCorrection.cxx:2056
 AliTPCCorrection.cxx:2057
 AliTPCCorrection.cxx:2058
 AliTPCCorrection.cxx:2059
 AliTPCCorrection.cxx:2060
 AliTPCCorrection.cxx:2061
 AliTPCCorrection.cxx:2062
 AliTPCCorrection.cxx:2063
 AliTPCCorrection.cxx:2064
 AliTPCCorrection.cxx:2065
 AliTPCCorrection.cxx:2066
 AliTPCCorrection.cxx:2067
 AliTPCCorrection.cxx:2068
 AliTPCCorrection.cxx:2069
 AliTPCCorrection.cxx:2070
 AliTPCCorrection.cxx:2071
 AliTPCCorrection.cxx:2072
 AliTPCCorrection.cxx:2073
 AliTPCCorrection.cxx:2074
 AliTPCCorrection.cxx:2075
 AliTPCCorrection.cxx:2076
 AliTPCCorrection.cxx:2077
 AliTPCCorrection.cxx:2078
 AliTPCCorrection.cxx:2079
 AliTPCCorrection.cxx:2080
 AliTPCCorrection.cxx:2081
 AliTPCCorrection.cxx:2082
 AliTPCCorrection.cxx:2083
 AliTPCCorrection.cxx:2084
 AliTPCCorrection.cxx:2085
 AliTPCCorrection.cxx:2086
 AliTPCCorrection.cxx:2087
 AliTPCCorrection.cxx:2088
 AliTPCCorrection.cxx:2089
 AliTPCCorrection.cxx:2090
 AliTPCCorrection.cxx:2091
 AliTPCCorrection.cxx:2092
 AliTPCCorrection.cxx:2093
 AliTPCCorrection.cxx:2094
 AliTPCCorrection.cxx:2095
 AliTPCCorrection.cxx:2096
 AliTPCCorrection.cxx:2097
 AliTPCCorrection.cxx:2098
 AliTPCCorrection.cxx:2099
 AliTPCCorrection.cxx:2100
 AliTPCCorrection.cxx:2101
 AliTPCCorrection.cxx:2102
 AliTPCCorrection.cxx:2103
 AliTPCCorrection.cxx:2104
 AliTPCCorrection.cxx:2105
 AliTPCCorrection.cxx:2106
 AliTPCCorrection.cxx:2107
 AliTPCCorrection.cxx:2108
 AliTPCCorrection.cxx:2109
 AliTPCCorrection.cxx:2110
 AliTPCCorrection.cxx:2111
 AliTPCCorrection.cxx:2112
 AliTPCCorrection.cxx:2113
 AliTPCCorrection.cxx:2114
 AliTPCCorrection.cxx:2115
 AliTPCCorrection.cxx:2116
 AliTPCCorrection.cxx:2117
 AliTPCCorrection.cxx:2118
 AliTPCCorrection.cxx:2119
 AliTPCCorrection.cxx:2120
 AliTPCCorrection.cxx:2121
 AliTPCCorrection.cxx:2122
 AliTPCCorrection.cxx:2123
 AliTPCCorrection.cxx:2124
 AliTPCCorrection.cxx:2125
 AliTPCCorrection.cxx:2126
 AliTPCCorrection.cxx:2127
 AliTPCCorrection.cxx:2128
 AliTPCCorrection.cxx:2129
 AliTPCCorrection.cxx:2130
 AliTPCCorrection.cxx:2131
 AliTPCCorrection.cxx:2132
 AliTPCCorrection.cxx:2133
 AliTPCCorrection.cxx:2134
 AliTPCCorrection.cxx:2135
 AliTPCCorrection.cxx:2136
 AliTPCCorrection.cxx:2137
 AliTPCCorrection.cxx:2138
 AliTPCCorrection.cxx:2139
 AliTPCCorrection.cxx:2140
 AliTPCCorrection.cxx:2141
 AliTPCCorrection.cxx:2142
 AliTPCCorrection.cxx:2143
 AliTPCCorrection.cxx:2144
 AliTPCCorrection.cxx:2145
 AliTPCCorrection.cxx:2146
 AliTPCCorrection.cxx:2147
 AliTPCCorrection.cxx:2148
 AliTPCCorrection.cxx:2149
 AliTPCCorrection.cxx:2150
 AliTPCCorrection.cxx:2151
 AliTPCCorrection.cxx:2152
 AliTPCCorrection.cxx:2153
 AliTPCCorrection.cxx:2154
 AliTPCCorrection.cxx:2155
 AliTPCCorrection.cxx:2156
 AliTPCCorrection.cxx:2157
 AliTPCCorrection.cxx:2158
 AliTPCCorrection.cxx:2159
 AliTPCCorrection.cxx:2160
 AliTPCCorrection.cxx:2161
 AliTPCCorrection.cxx:2162
 AliTPCCorrection.cxx:2163
 AliTPCCorrection.cxx:2164
 AliTPCCorrection.cxx:2165
 AliTPCCorrection.cxx:2166
 AliTPCCorrection.cxx:2167
 AliTPCCorrection.cxx:2168
 AliTPCCorrection.cxx:2169
 AliTPCCorrection.cxx:2170
 AliTPCCorrection.cxx:2171
 AliTPCCorrection.cxx:2172
 AliTPCCorrection.cxx:2173
 AliTPCCorrection.cxx:2174
 AliTPCCorrection.cxx:2175
 AliTPCCorrection.cxx:2176
 AliTPCCorrection.cxx:2177
 AliTPCCorrection.cxx:2178
 AliTPCCorrection.cxx:2179
 AliTPCCorrection.cxx:2180
 AliTPCCorrection.cxx:2181
 AliTPCCorrection.cxx:2182
 AliTPCCorrection.cxx:2183
 AliTPCCorrection.cxx:2184
 AliTPCCorrection.cxx:2185
 AliTPCCorrection.cxx:2186
 AliTPCCorrection.cxx:2187
 AliTPCCorrection.cxx:2188
 AliTPCCorrection.cxx:2189
 AliTPCCorrection.cxx:2190
 AliTPCCorrection.cxx:2191
 AliTPCCorrection.cxx:2192
 AliTPCCorrection.cxx:2193
 AliTPCCorrection.cxx:2194
 AliTPCCorrection.cxx:2195
 AliTPCCorrection.cxx:2196
 AliTPCCorrection.cxx:2197
 AliTPCCorrection.cxx:2198
 AliTPCCorrection.cxx:2199
 AliTPCCorrection.cxx:2200
 AliTPCCorrection.cxx:2201
 AliTPCCorrection.cxx:2202
 AliTPCCorrection.cxx:2203
 AliTPCCorrection.cxx:2204
 AliTPCCorrection.cxx:2205
 AliTPCCorrection.cxx:2206
 AliTPCCorrection.cxx:2207
 AliTPCCorrection.cxx:2208
 AliTPCCorrection.cxx:2209
 AliTPCCorrection.cxx:2210
 AliTPCCorrection.cxx:2211
 AliTPCCorrection.cxx:2212
 AliTPCCorrection.cxx:2213
 AliTPCCorrection.cxx:2214
 AliTPCCorrection.cxx:2215
 AliTPCCorrection.cxx:2216
 AliTPCCorrection.cxx:2217
 AliTPCCorrection.cxx:2218
 AliTPCCorrection.cxx:2219
 AliTPCCorrection.cxx:2220
 AliTPCCorrection.cxx:2221
 AliTPCCorrection.cxx:2222
 AliTPCCorrection.cxx:2223
 AliTPCCorrection.cxx:2224
 AliTPCCorrection.cxx:2225
 AliTPCCorrection.cxx:2226
 AliTPCCorrection.cxx:2227
 AliTPCCorrection.cxx:2228
 AliTPCCorrection.cxx:2229
 AliTPCCorrection.cxx:2230
 AliTPCCorrection.cxx:2231
 AliTPCCorrection.cxx:2232
 AliTPCCorrection.cxx:2233
 AliTPCCorrection.cxx:2234
 AliTPCCorrection.cxx:2235
 AliTPCCorrection.cxx:2236
 AliTPCCorrection.cxx:2237
 AliTPCCorrection.cxx:2238
 AliTPCCorrection.cxx:2239
 AliTPCCorrection.cxx:2240
 AliTPCCorrection.cxx:2241
 AliTPCCorrection.cxx:2242
 AliTPCCorrection.cxx:2243
 AliTPCCorrection.cxx:2244
 AliTPCCorrection.cxx:2245
 AliTPCCorrection.cxx:2246
 AliTPCCorrection.cxx:2247
 AliTPCCorrection.cxx:2248
 AliTPCCorrection.cxx:2249
 AliTPCCorrection.cxx:2250
 AliTPCCorrection.cxx:2251
 AliTPCCorrection.cxx:2252
 AliTPCCorrection.cxx:2253
 AliTPCCorrection.cxx:2254
 AliTPCCorrection.cxx:2255
 AliTPCCorrection.cxx:2256
 AliTPCCorrection.cxx:2257
 AliTPCCorrection.cxx:2258
 AliTPCCorrection.cxx:2259
 AliTPCCorrection.cxx:2260
 AliTPCCorrection.cxx:2261
 AliTPCCorrection.cxx:2262
 AliTPCCorrection.cxx:2263
 AliTPCCorrection.cxx:2264
 AliTPCCorrection.cxx:2265
 AliTPCCorrection.cxx:2266
 AliTPCCorrection.cxx:2267
 AliTPCCorrection.cxx:2268
 AliTPCCorrection.cxx:2269
 AliTPCCorrection.cxx:2270
 AliTPCCorrection.cxx:2271
 AliTPCCorrection.cxx:2272
 AliTPCCorrection.cxx:2273
 AliTPCCorrection.cxx:2274
 AliTPCCorrection.cxx:2275
 AliTPCCorrection.cxx:2276
 AliTPCCorrection.cxx:2277
 AliTPCCorrection.cxx:2278
 AliTPCCorrection.cxx:2279
 AliTPCCorrection.cxx:2280
 AliTPCCorrection.cxx:2281
 AliTPCCorrection.cxx:2282
 AliTPCCorrection.cxx:2283
 AliTPCCorrection.cxx:2284
 AliTPCCorrection.cxx:2285
 AliTPCCorrection.cxx:2286
 AliTPCCorrection.cxx:2287
 AliTPCCorrection.cxx:2288
 AliTPCCorrection.cxx:2289
 AliTPCCorrection.cxx:2290
 AliTPCCorrection.cxx:2291
 AliTPCCorrection.cxx:2292
 AliTPCCorrection.cxx:2293
 AliTPCCorrection.cxx:2294
 AliTPCCorrection.cxx:2295
 AliTPCCorrection.cxx:2296
 AliTPCCorrection.cxx:2297
 AliTPCCorrection.cxx:2298
 AliTPCCorrection.cxx:2299
 AliTPCCorrection.cxx:2300
 AliTPCCorrection.cxx:2301
 AliTPCCorrection.cxx:2302
 AliTPCCorrection.cxx:2303
 AliTPCCorrection.cxx:2304
 AliTPCCorrection.cxx:2305
 AliTPCCorrection.cxx:2306
 AliTPCCorrection.cxx:2307
 AliTPCCorrection.cxx:2308
 AliTPCCorrection.cxx:2309
 AliTPCCorrection.cxx:2310
 AliTPCCorrection.cxx:2311
 AliTPCCorrection.cxx:2312
 AliTPCCorrection.cxx:2313
 AliTPCCorrection.cxx:2314
 AliTPCCorrection.cxx:2315
 AliTPCCorrection.cxx:2316
 AliTPCCorrection.cxx:2317
 AliTPCCorrection.cxx:2318
 AliTPCCorrection.cxx:2319
 AliTPCCorrection.cxx:2320
 AliTPCCorrection.cxx:2321
 AliTPCCorrection.cxx:2322
 AliTPCCorrection.cxx:2323
 AliTPCCorrection.cxx:2324
 AliTPCCorrection.cxx:2325
 AliTPCCorrection.cxx:2326
 AliTPCCorrection.cxx:2327
 AliTPCCorrection.cxx:2328
 AliTPCCorrection.cxx:2329
 AliTPCCorrection.cxx:2330
 AliTPCCorrection.cxx:2331
 AliTPCCorrection.cxx:2332
 AliTPCCorrection.cxx:2333
 AliTPCCorrection.cxx:2334
 AliTPCCorrection.cxx:2335
 AliTPCCorrection.cxx:2336
 AliTPCCorrection.cxx:2337
 AliTPCCorrection.cxx:2338
 AliTPCCorrection.cxx:2339
 AliTPCCorrection.cxx:2340
 AliTPCCorrection.cxx:2341
 AliTPCCorrection.cxx:2342
 AliTPCCorrection.cxx:2343
 AliTPCCorrection.cxx:2344
 AliTPCCorrection.cxx:2345
 AliTPCCorrection.cxx:2346
 AliTPCCorrection.cxx:2347
 AliTPCCorrection.cxx:2348
 AliTPCCorrection.cxx:2349
 AliTPCCorrection.cxx:2350
 AliTPCCorrection.cxx:2351
 AliTPCCorrection.cxx:2352
 AliTPCCorrection.cxx:2353
 AliTPCCorrection.cxx:2354
 AliTPCCorrection.cxx:2355
 AliTPCCorrection.cxx:2356
 AliTPCCorrection.cxx:2357
 AliTPCCorrection.cxx:2358
 AliTPCCorrection.cxx:2359
 AliTPCCorrection.cxx:2360
 AliTPCCorrection.cxx:2361
 AliTPCCorrection.cxx:2362
 AliTPCCorrection.cxx:2363
 AliTPCCorrection.cxx:2364
 AliTPCCorrection.cxx:2365
 AliTPCCorrection.cxx:2366
 AliTPCCorrection.cxx:2367
 AliTPCCorrection.cxx:2368
 AliTPCCorrection.cxx:2369
 AliTPCCorrection.cxx:2370
 AliTPCCorrection.cxx:2371
 AliTPCCorrection.cxx:2372
 AliTPCCorrection.cxx:2373
 AliTPCCorrection.cxx:2374
 AliTPCCorrection.cxx:2375
 AliTPCCorrection.cxx:2376
 AliTPCCorrection.cxx:2377
 AliTPCCorrection.cxx:2378
 AliTPCCorrection.cxx:2379
 AliTPCCorrection.cxx:2380
 AliTPCCorrection.cxx:2381
 AliTPCCorrection.cxx:2382
 AliTPCCorrection.cxx:2383
 AliTPCCorrection.cxx:2384
 AliTPCCorrection.cxx:2385
 AliTPCCorrection.cxx:2386
 AliTPCCorrection.cxx:2387
 AliTPCCorrection.cxx:2388
 AliTPCCorrection.cxx:2389
 AliTPCCorrection.cxx:2390
 AliTPCCorrection.cxx:2391
 AliTPCCorrection.cxx:2392
 AliTPCCorrection.cxx:2393
 AliTPCCorrection.cxx:2394
 AliTPCCorrection.cxx:2395
 AliTPCCorrection.cxx:2396
 AliTPCCorrection.cxx:2397
 AliTPCCorrection.cxx:2398
 AliTPCCorrection.cxx:2399
 AliTPCCorrection.cxx:2400
 AliTPCCorrection.cxx:2401
 AliTPCCorrection.cxx:2402
 AliTPCCorrection.cxx:2403
 AliTPCCorrection.cxx:2404
 AliTPCCorrection.cxx:2405
 AliTPCCorrection.cxx:2406
 AliTPCCorrection.cxx:2407
 AliTPCCorrection.cxx:2408
 AliTPCCorrection.cxx:2409
 AliTPCCorrection.cxx:2410
 AliTPCCorrection.cxx:2411
 AliTPCCorrection.cxx:2412
 AliTPCCorrection.cxx:2413
 AliTPCCorrection.cxx:2414
 AliTPCCorrection.cxx:2415
 AliTPCCorrection.cxx:2416
 AliTPCCorrection.cxx:2417
 AliTPCCorrection.cxx:2418
 AliTPCCorrection.cxx:2419
 AliTPCCorrection.cxx:2420
 AliTPCCorrection.cxx:2421
 AliTPCCorrection.cxx:2422
 AliTPCCorrection.cxx:2423
 AliTPCCorrection.cxx:2424
 AliTPCCorrection.cxx:2425
 AliTPCCorrection.cxx:2426
 AliTPCCorrection.cxx:2427
 AliTPCCorrection.cxx:2428
 AliTPCCorrection.cxx:2429
 AliTPCCorrection.cxx:2430
 AliTPCCorrection.cxx:2431
 AliTPCCorrection.cxx:2432
 AliTPCCorrection.cxx:2433
 AliTPCCorrection.cxx:2434
 AliTPCCorrection.cxx:2435
 AliTPCCorrection.cxx:2436
 AliTPCCorrection.cxx:2437
 AliTPCCorrection.cxx:2438
 AliTPCCorrection.cxx:2439
 AliTPCCorrection.cxx:2440
 AliTPCCorrection.cxx:2441
 AliTPCCorrection.cxx:2442
 AliTPCCorrection.cxx:2443
 AliTPCCorrection.cxx:2444
 AliTPCCorrection.cxx:2445
 AliTPCCorrection.cxx:2446
 AliTPCCorrection.cxx:2447
 AliTPCCorrection.cxx:2448
 AliTPCCorrection.cxx:2449
 AliTPCCorrection.cxx:2450
 AliTPCCorrection.cxx:2451
 AliTPCCorrection.cxx:2452
 AliTPCCorrection.cxx:2453
 AliTPCCorrection.cxx:2454
 AliTPCCorrection.cxx:2455
 AliTPCCorrection.cxx:2456
 AliTPCCorrection.cxx:2457
 AliTPCCorrection.cxx:2458
 AliTPCCorrection.cxx:2459
 AliTPCCorrection.cxx:2460
 AliTPCCorrection.cxx:2461
 AliTPCCorrection.cxx:2462
 AliTPCCorrection.cxx:2463
 AliTPCCorrection.cxx:2464
 AliTPCCorrection.cxx:2465
 AliTPCCorrection.cxx:2466
 AliTPCCorrection.cxx:2467
 AliTPCCorrection.cxx:2468
 AliTPCCorrection.cxx:2469
 AliTPCCorrection.cxx:2470
 AliTPCCorrection.cxx:2471
 AliTPCCorrection.cxx:2472
 AliTPCCorrection.cxx:2473
 AliTPCCorrection.cxx:2474
 AliTPCCorrection.cxx:2475
 AliTPCCorrection.cxx:2476
 AliTPCCorrection.cxx:2477
 AliTPCCorrection.cxx:2478
 AliTPCCorrection.cxx:2479
 AliTPCCorrection.cxx:2480
 AliTPCCorrection.cxx:2481
 AliTPCCorrection.cxx:2482
 AliTPCCorrection.cxx:2483
 AliTPCCorrection.cxx:2484
 AliTPCCorrection.cxx:2485
 AliTPCCorrection.cxx:2486
 AliTPCCorrection.cxx:2487
 AliTPCCorrection.cxx:2488
 AliTPCCorrection.cxx:2489
 AliTPCCorrection.cxx:2490
 AliTPCCorrection.cxx:2491
 AliTPCCorrection.cxx:2492
 AliTPCCorrection.cxx:2493
 AliTPCCorrection.cxx:2494
 AliTPCCorrection.cxx:2495
 AliTPCCorrection.cxx:2496
 AliTPCCorrection.cxx:2497
 AliTPCCorrection.cxx:2498
 AliTPCCorrection.cxx:2499
 AliTPCCorrection.cxx:2500
 AliTPCCorrection.cxx:2501
 AliTPCCorrection.cxx:2502
 AliTPCCorrection.cxx:2503
 AliTPCCorrection.cxx:2504
 AliTPCCorrection.cxx:2505
 AliTPCCorrection.cxx:2506
 AliTPCCorrection.cxx:2507
 AliTPCCorrection.cxx:2508
 AliTPCCorrection.cxx:2509
 AliTPCCorrection.cxx:2510
 AliTPCCorrection.cxx:2511
 AliTPCCorrection.cxx:2512
 AliTPCCorrection.cxx:2513
 AliTPCCorrection.cxx:2514
 AliTPCCorrection.cxx:2515
 AliTPCCorrection.cxx:2516
 AliTPCCorrection.cxx:2517
 AliTPCCorrection.cxx:2518
 AliTPCCorrection.cxx:2519
 AliTPCCorrection.cxx:2520
 AliTPCCorrection.cxx:2521
 AliTPCCorrection.cxx:2522
 AliTPCCorrection.cxx:2523
 AliTPCCorrection.cxx:2524
 AliTPCCorrection.cxx:2525
 AliTPCCorrection.cxx:2526
 AliTPCCorrection.cxx:2527
 AliTPCCorrection.cxx:2528
 AliTPCCorrection.cxx:2529
 AliTPCCorrection.cxx:2530
 AliTPCCorrection.cxx:2531
 AliTPCCorrection.cxx:2532
 AliTPCCorrection.cxx:2533
 AliTPCCorrection.cxx:2534
 AliTPCCorrection.cxx:2535
 AliTPCCorrection.cxx:2536
 AliTPCCorrection.cxx:2537
 AliTPCCorrection.cxx:2538
 AliTPCCorrection.cxx:2539
 AliTPCCorrection.cxx:2540
 AliTPCCorrection.cxx:2541
 AliTPCCorrection.cxx:2542
 AliTPCCorrection.cxx:2543
 AliTPCCorrection.cxx:2544
 AliTPCCorrection.cxx:2545
 AliTPCCorrection.cxx:2546
 AliTPCCorrection.cxx:2547
 AliTPCCorrection.cxx:2548
 AliTPCCorrection.cxx:2549
 AliTPCCorrection.cxx:2550
 AliTPCCorrection.cxx:2551
 AliTPCCorrection.cxx:2552
 AliTPCCorrection.cxx:2553
 AliTPCCorrection.cxx:2554
 AliTPCCorrection.cxx:2555
 AliTPCCorrection.cxx:2556
 AliTPCCorrection.cxx:2557
 AliTPCCorrection.cxx:2558
 AliTPCCorrection.cxx:2559
 AliTPCCorrection.cxx:2560
 AliTPCCorrection.cxx:2561
 AliTPCCorrection.cxx:2562
 AliTPCCorrection.cxx:2563
 AliTPCCorrection.cxx:2564
 AliTPCCorrection.cxx:2565
 AliTPCCorrection.cxx:2566
 AliTPCCorrection.cxx:2567
 AliTPCCorrection.cxx:2568
 AliTPCCorrection.cxx:2569
 AliTPCCorrection.cxx:2570
 AliTPCCorrection.cxx:2571
 AliTPCCorrection.cxx:2572
 AliTPCCorrection.cxx:2573
 AliTPCCorrection.cxx:2574
 AliTPCCorrection.cxx:2575
 AliTPCCorrection.cxx:2576
 AliTPCCorrection.cxx:2577
 AliTPCCorrection.cxx:2578
 AliTPCCorrection.cxx:2579
 AliTPCCorrection.cxx:2580
 AliTPCCorrection.cxx:2581
 AliTPCCorrection.cxx:2582
 AliTPCCorrection.cxx:2583
 AliTPCCorrection.cxx:2584
 AliTPCCorrection.cxx:2585
 AliTPCCorrection.cxx:2586
 AliTPCCorrection.cxx:2587
 AliTPCCorrection.cxx:2588
 AliTPCCorrection.cxx:2589
 AliTPCCorrection.cxx:2590
 AliTPCCorrection.cxx:2591
 AliTPCCorrection.cxx:2592
 AliTPCCorrection.cxx:2593
 AliTPCCorrection.cxx:2594
 AliTPCCorrection.cxx:2595
 AliTPCCorrection.cxx:2596
 AliTPCCorrection.cxx:2597
 AliTPCCorrection.cxx:2598
 AliTPCCorrection.cxx:2599
 AliTPCCorrection.cxx:2600
 AliTPCCorrection.cxx:2601
 AliTPCCorrection.cxx:2602
 AliTPCCorrection.cxx:2603
 AliTPCCorrection.cxx:2604
 AliTPCCorrection.cxx:2605
 AliTPCCorrection.cxx:2606
 AliTPCCorrection.cxx:2607
 AliTPCCorrection.cxx:2608
 AliTPCCorrection.cxx:2609
 AliTPCCorrection.cxx:2610
 AliTPCCorrection.cxx:2611
 AliTPCCorrection.cxx:2612
 AliTPCCorrection.cxx:2613
 AliTPCCorrection.cxx:2614
 AliTPCCorrection.cxx:2615
 AliTPCCorrection.cxx:2616
 AliTPCCorrection.cxx:2617
 AliTPCCorrection.cxx:2618
 AliTPCCorrection.cxx:2619
 AliTPCCorrection.cxx:2620
 AliTPCCorrection.cxx:2621
 AliTPCCorrection.cxx:2622
 AliTPCCorrection.cxx:2623
 AliTPCCorrection.cxx:2624
 AliTPCCorrection.cxx:2625
 AliTPCCorrection.cxx:2626
 AliTPCCorrection.cxx:2627
 AliTPCCorrection.cxx:2628
 AliTPCCorrection.cxx:2629
 AliTPCCorrection.cxx:2630
 AliTPCCorrection.cxx:2631
 AliTPCCorrection.cxx:2632
 AliTPCCorrection.cxx:2633
 AliTPCCorrection.cxx:2634
 AliTPCCorrection.cxx:2635
 AliTPCCorrection.cxx:2636
 AliTPCCorrection.cxx:2637
 AliTPCCorrection.cxx:2638
 AliTPCCorrection.cxx:2639
 AliTPCCorrection.cxx:2640
 AliTPCCorrection.cxx:2641
 AliTPCCorrection.cxx:2642
 AliTPCCorrection.cxx:2643
 AliTPCCorrection.cxx:2644
 AliTPCCorrection.cxx:2645
 AliTPCCorrection.cxx:2646
 AliTPCCorrection.cxx:2647
 AliTPCCorrection.cxx:2648
 AliTPCCorrection.cxx:2649
 AliTPCCorrection.cxx:2650
 AliTPCCorrection.cxx:2651
 AliTPCCorrection.cxx:2652
 AliTPCCorrection.cxx:2653
 AliTPCCorrection.cxx:2654
 AliTPCCorrection.cxx:2655
 AliTPCCorrection.cxx:2656
 AliTPCCorrection.cxx:2657
 AliTPCCorrection.cxx:2658
 AliTPCCorrection.cxx:2659
 AliTPCCorrection.cxx:2660
 AliTPCCorrection.cxx:2661
 AliTPCCorrection.cxx:2662
 AliTPCCorrection.cxx:2663
 AliTPCCorrection.cxx:2664
 AliTPCCorrection.cxx:2665
 AliTPCCorrection.cxx:2666
 AliTPCCorrection.cxx:2667
 AliTPCCorrection.cxx:2668
 AliTPCCorrection.cxx:2669
 AliTPCCorrection.cxx:2670
 AliTPCCorrection.cxx:2671
 AliTPCCorrection.cxx:2672
 AliTPCCorrection.cxx:2673
 AliTPCCorrection.cxx:2674
 AliTPCCorrection.cxx:2675
 AliTPCCorrection.cxx:2676
 AliTPCCorrection.cxx:2677
 AliTPCCorrection.cxx:2678
 AliTPCCorrection.cxx:2679
 AliTPCCorrection.cxx:2680
 AliTPCCorrection.cxx:2681
 AliTPCCorrection.cxx:2682
 AliTPCCorrection.cxx:2683
 AliTPCCorrection.cxx:2684
 AliTPCCorrection.cxx:2685
 AliTPCCorrection.cxx:2686
 AliTPCCorrection.cxx:2687
 AliTPCCorrection.cxx:2688
 AliTPCCorrection.cxx:2689
 AliTPCCorrection.cxx:2690
 AliTPCCorrection.cxx:2691
 AliTPCCorrection.cxx:2692
 AliTPCCorrection.cxx:2693
 AliTPCCorrection.cxx:2694
 AliTPCCorrection.cxx:2695
 AliTPCCorrection.cxx:2696
 AliTPCCorrection.cxx:2697
 AliTPCCorrection.cxx:2698
 AliTPCCorrection.cxx:2699
 AliTPCCorrection.cxx:2700
 AliTPCCorrection.cxx:2701
 AliTPCCorrection.cxx:2702
 AliTPCCorrection.cxx:2703
 AliTPCCorrection.cxx:2704
 AliTPCCorrection.cxx:2705
 AliTPCCorrection.cxx:2706
 AliTPCCorrection.cxx:2707
 AliTPCCorrection.cxx:2708
 AliTPCCorrection.cxx:2709
 AliTPCCorrection.cxx:2710
 AliTPCCorrection.cxx:2711
 AliTPCCorrection.cxx:2712
 AliTPCCorrection.cxx:2713
 AliTPCCorrection.cxx:2714
 AliTPCCorrection.cxx:2715
 AliTPCCorrection.cxx:2716
 AliTPCCorrection.cxx:2717
 AliTPCCorrection.cxx:2718
 AliTPCCorrection.cxx:2719
 AliTPCCorrection.cxx:2720
 AliTPCCorrection.cxx:2721
 AliTPCCorrection.cxx:2722
 AliTPCCorrection.cxx:2723
 AliTPCCorrection.cxx:2724
 AliTPCCorrection.cxx:2725
 AliTPCCorrection.cxx:2726
 AliTPCCorrection.cxx:2727
 AliTPCCorrection.cxx:2728
 AliTPCCorrection.cxx:2729
 AliTPCCorrection.cxx:2730
 AliTPCCorrection.cxx:2731
 AliTPCCorrection.cxx:2732
 AliTPCCorrection.cxx:2733
 AliTPCCorrection.cxx:2734
 AliTPCCorrection.cxx:2735
 AliTPCCorrection.cxx:2736
 AliTPCCorrection.cxx:2737
 AliTPCCorrection.cxx:2738
 AliTPCCorrection.cxx:2739
 AliTPCCorrection.cxx:2740
 AliTPCCorrection.cxx:2741
 AliTPCCorrection.cxx:2742
 AliTPCCorrection.cxx:2743
 AliTPCCorrection.cxx:2744
 AliTPCCorrection.cxx:2745
 AliTPCCorrection.cxx:2746
 AliTPCCorrection.cxx:2747
 AliTPCCorrection.cxx:2748
 AliTPCCorrection.cxx:2749
 AliTPCCorrection.cxx:2750
 AliTPCCorrection.cxx:2751
 AliTPCCorrection.cxx:2752
 AliTPCCorrection.cxx:2753
 AliTPCCorrection.cxx:2754
 AliTPCCorrection.cxx:2755
 AliTPCCorrection.cxx:2756
 AliTPCCorrection.cxx:2757
 AliTPCCorrection.cxx:2758
 AliTPCCorrection.cxx:2759
 AliTPCCorrection.cxx:2760
 AliTPCCorrection.cxx:2761
 AliTPCCorrection.cxx:2762
 AliTPCCorrection.cxx:2763
 AliTPCCorrection.cxx:2764
 AliTPCCorrection.cxx:2765
 AliTPCCorrection.cxx:2766
 AliTPCCorrection.cxx:2767
 AliTPCCorrection.cxx:2768
 AliTPCCorrection.cxx:2769
 AliTPCCorrection.cxx:2770
 AliTPCCorrection.cxx:2771
 AliTPCCorrection.cxx:2772
 AliTPCCorrection.cxx:2773
 AliTPCCorrection.cxx:2774
 AliTPCCorrection.cxx:2775
 AliTPCCorrection.cxx:2776
 AliTPCCorrection.cxx:2777
 AliTPCCorrection.cxx:2778
 AliTPCCorrection.cxx:2779
 AliTPCCorrection.cxx:2780
 AliTPCCorrection.cxx:2781
 AliTPCCorrection.cxx:2782
 AliTPCCorrection.cxx:2783
 AliTPCCorrection.cxx:2784
 AliTPCCorrection.cxx:2785
 AliTPCCorrection.cxx:2786
 AliTPCCorrection.cxx:2787
 AliTPCCorrection.cxx:2788
 AliTPCCorrection.cxx:2789
 AliTPCCorrection.cxx:2790
 AliTPCCorrection.cxx:2791
 AliTPCCorrection.cxx:2792
 AliTPCCorrection.cxx:2793
 AliTPCCorrection.cxx:2794
 AliTPCCorrection.cxx:2795
 AliTPCCorrection.cxx:2796
 AliTPCCorrection.cxx:2797
 AliTPCCorrection.cxx:2798
 AliTPCCorrection.cxx:2799
 AliTPCCorrection.cxx:2800
 AliTPCCorrection.cxx:2801
 AliTPCCorrection.cxx:2802
 AliTPCCorrection.cxx:2803
 AliTPCCorrection.cxx:2804
 AliTPCCorrection.cxx:2805
 AliTPCCorrection.cxx:2806
 AliTPCCorrection.cxx:2807
 AliTPCCorrection.cxx:2808
 AliTPCCorrection.cxx:2809
 AliTPCCorrection.cxx:2810
 AliTPCCorrection.cxx:2811
 AliTPCCorrection.cxx:2812
 AliTPCCorrection.cxx:2813
 AliTPCCorrection.cxx:2814
 AliTPCCorrection.cxx:2815
 AliTPCCorrection.cxx:2816
 AliTPCCorrection.cxx:2817
 AliTPCCorrection.cxx:2818
 AliTPCCorrection.cxx:2819
 AliTPCCorrection.cxx:2820
 AliTPCCorrection.cxx:2821
 AliTPCCorrection.cxx:2822
 AliTPCCorrection.cxx:2823
 AliTPCCorrection.cxx:2824
 AliTPCCorrection.cxx:2825
 AliTPCCorrection.cxx:2826
 AliTPCCorrection.cxx:2827
 AliTPCCorrection.cxx:2828
 AliTPCCorrection.cxx:2829
 AliTPCCorrection.cxx:2830
 AliTPCCorrection.cxx:2831
 AliTPCCorrection.cxx:2832
 AliTPCCorrection.cxx:2833
 AliTPCCorrection.cxx:2834
 AliTPCCorrection.cxx:2835
 AliTPCCorrection.cxx:2836
 AliTPCCorrection.cxx:2837
 AliTPCCorrection.cxx:2838
 AliTPCCorrection.cxx:2839
 AliTPCCorrection.cxx:2840
 AliTPCCorrection.cxx:2841
 AliTPCCorrection.cxx:2842
 AliTPCCorrection.cxx:2843
 AliTPCCorrection.cxx:2844
 AliTPCCorrection.cxx:2845
 AliTPCCorrection.cxx:2846
 AliTPCCorrection.cxx:2847
 AliTPCCorrection.cxx:2848
 AliTPCCorrection.cxx:2849
 AliTPCCorrection.cxx:2850
 AliTPCCorrection.cxx:2851
 AliTPCCorrection.cxx:2852
 AliTPCCorrection.cxx:2853
 AliTPCCorrection.cxx:2854
 AliTPCCorrection.cxx:2855
 AliTPCCorrection.cxx:2856
 AliTPCCorrection.cxx:2857
 AliTPCCorrection.cxx:2858
 AliTPCCorrection.cxx:2859
 AliTPCCorrection.cxx:2860
 AliTPCCorrection.cxx:2861
 AliTPCCorrection.cxx:2862
 AliTPCCorrection.cxx:2863
 AliTPCCorrection.cxx:2864
 AliTPCCorrection.cxx:2865
 AliTPCCorrection.cxx:2866
 AliTPCCorrection.cxx:2867
 AliTPCCorrection.cxx:2868
 AliTPCCorrection.cxx:2869
 AliTPCCorrection.cxx:2870
 AliTPCCorrection.cxx:2871
 AliTPCCorrection.cxx:2872
 AliTPCCorrection.cxx:2873
 AliTPCCorrection.cxx:2874
 AliTPCCorrection.cxx:2875
 AliTPCCorrection.cxx:2876
 AliTPCCorrection.cxx:2877
 AliTPCCorrection.cxx:2878
 AliTPCCorrection.cxx:2879
 AliTPCCorrection.cxx:2880
 AliTPCCorrection.cxx:2881
 AliTPCCorrection.cxx:2882
 AliTPCCorrection.cxx:2883
 AliTPCCorrection.cxx:2884
 AliTPCCorrection.cxx:2885
 AliTPCCorrection.cxx:2886
 AliTPCCorrection.cxx:2887
 AliTPCCorrection.cxx:2888
 AliTPCCorrection.cxx:2889
 AliTPCCorrection.cxx:2890
 AliTPCCorrection.cxx:2891
 AliTPCCorrection.cxx:2892
 AliTPCCorrection.cxx:2893
 AliTPCCorrection.cxx:2894
 AliTPCCorrection.cxx:2895
 AliTPCCorrection.cxx:2896
 AliTPCCorrection.cxx:2897
 AliTPCCorrection.cxx:2898
 AliTPCCorrection.cxx:2899
 AliTPCCorrection.cxx:2900
 AliTPCCorrection.cxx:2901
 AliTPCCorrection.cxx:2902
 AliTPCCorrection.cxx:2903
 AliTPCCorrection.cxx:2904
 AliTPCCorrection.cxx:2905
 AliTPCCorrection.cxx:2906
 AliTPCCorrection.cxx:2907
 AliTPCCorrection.cxx:2908
 AliTPCCorrection.cxx:2909
 AliTPCCorrection.cxx:2910
 AliTPCCorrection.cxx:2911
 AliTPCCorrection.cxx:2912
 AliTPCCorrection.cxx:2913
 AliTPCCorrection.cxx:2914
 AliTPCCorrection.cxx:2915
 AliTPCCorrection.cxx:2916
 AliTPCCorrection.cxx:2917
 AliTPCCorrection.cxx:2918
 AliTPCCorrection.cxx:2919
 AliTPCCorrection.cxx:2920
 AliTPCCorrection.cxx:2921
 AliTPCCorrection.cxx:2922
 AliTPCCorrection.cxx:2923
 AliTPCCorrection.cxx:2924
 AliTPCCorrection.cxx:2925
 AliTPCCorrection.cxx:2926
 AliTPCCorrection.cxx:2927
 AliTPCCorrection.cxx:2928
 AliTPCCorrection.cxx:2929
 AliTPCCorrection.cxx:2930
 AliTPCCorrection.cxx:2931
 AliTPCCorrection.cxx:2932
 AliTPCCorrection.cxx:2933
 AliTPCCorrection.cxx:2934
 AliTPCCorrection.cxx:2935
 AliTPCCorrection.cxx:2936
 AliTPCCorrection.cxx:2937
 AliTPCCorrection.cxx:2938
 AliTPCCorrection.cxx:2939
 AliTPCCorrection.cxx:2940
 AliTPCCorrection.cxx:2941
 AliTPCCorrection.cxx:2942
 AliTPCCorrection.cxx:2943
 AliTPCCorrection.cxx:2944
 AliTPCCorrection.cxx:2945
 AliTPCCorrection.cxx:2946
 AliTPCCorrection.cxx:2947
 AliTPCCorrection.cxx:2948
 AliTPCCorrection.cxx:2949
 AliTPCCorrection.cxx:2950
 AliTPCCorrection.cxx:2951
 AliTPCCorrection.cxx:2952
 AliTPCCorrection.cxx:2953
 AliTPCCorrection.cxx:2954
 AliTPCCorrection.cxx:2955
 AliTPCCorrection.cxx:2956
 AliTPCCorrection.cxx:2957
 AliTPCCorrection.cxx:2958
 AliTPCCorrection.cxx:2959
 AliTPCCorrection.cxx:2960
 AliTPCCorrection.cxx:2961
 AliTPCCorrection.cxx:2962
 AliTPCCorrection.cxx:2963
 AliTPCCorrection.cxx:2964
 AliTPCCorrection.cxx:2965
 AliTPCCorrection.cxx:2966
 AliTPCCorrection.cxx:2967
 AliTPCCorrection.cxx:2968
 AliTPCCorrection.cxx:2969
 AliTPCCorrection.cxx:2970
 AliTPCCorrection.cxx:2971
 AliTPCCorrection.cxx:2972
 AliTPCCorrection.cxx:2973
 AliTPCCorrection.cxx:2974
 AliTPCCorrection.cxx:2975
 AliTPCCorrection.cxx:2976
 AliTPCCorrection.cxx:2977
 AliTPCCorrection.cxx:2978
 AliTPCCorrection.cxx:2979
 AliTPCCorrection.cxx:2980
 AliTPCCorrection.cxx:2981
 AliTPCCorrection.cxx:2982
 AliTPCCorrection.cxx:2983
 AliTPCCorrection.cxx:2984
 AliTPCCorrection.cxx:2985
 AliTPCCorrection.cxx:2986
 AliTPCCorrection.cxx:2987
 AliTPCCorrection.cxx:2988
 AliTPCCorrection.cxx:2989
 AliTPCCorrection.cxx:2990
 AliTPCCorrection.cxx:2991
 AliTPCCorrection.cxx:2992
 AliTPCCorrection.cxx:2993
 AliTPCCorrection.cxx:2994
 AliTPCCorrection.cxx:2995
 AliTPCCorrection.cxx:2996
 AliTPCCorrection.cxx:2997
 AliTPCCorrection.cxx:2998
 AliTPCCorrection.cxx:2999
 AliTPCCorrection.cxx:3000
 AliTPCCorrection.cxx:3001
 AliTPCCorrection.cxx:3002
 AliTPCCorrection.cxx:3003
 AliTPCCorrection.cxx:3004
 AliTPCCorrection.cxx:3005
 AliTPCCorrection.cxx:3006
 AliTPCCorrection.cxx:3007
 AliTPCCorrection.cxx:3008
 AliTPCCorrection.cxx:3009
 AliTPCCorrection.cxx:3010
 AliTPCCorrection.cxx:3011
 AliTPCCorrection.cxx:3012
 AliTPCCorrection.cxx:3013
 AliTPCCorrection.cxx:3014
 AliTPCCorrection.cxx:3015
 AliTPCCorrection.cxx:3016
 AliTPCCorrection.cxx:3017
 AliTPCCorrection.cxx:3018
 AliTPCCorrection.cxx:3019
 AliTPCCorrection.cxx:3020
 AliTPCCorrection.cxx:3021
 AliTPCCorrection.cxx:3022
 AliTPCCorrection.cxx:3023
 AliTPCCorrection.cxx:3024
 AliTPCCorrection.cxx:3025
 AliTPCCorrection.cxx:3026
 AliTPCCorrection.cxx:3027
 AliTPCCorrection.cxx:3028
 AliTPCCorrection.cxx:3029
 AliTPCCorrection.cxx:3030
 AliTPCCorrection.cxx:3031
 AliTPCCorrection.cxx:3032
 AliTPCCorrection.cxx:3033
 AliTPCCorrection.cxx:3034
 AliTPCCorrection.cxx:3035
 AliTPCCorrection.cxx:3036
 AliTPCCorrection.cxx:3037
 AliTPCCorrection.cxx:3038
 AliTPCCorrection.cxx:3039
 AliTPCCorrection.cxx:3040
 AliTPCCorrection.cxx:3041
 AliTPCCorrection.cxx:3042
 AliTPCCorrection.cxx:3043
 AliTPCCorrection.cxx:3044
 AliTPCCorrection.cxx:3045
 AliTPCCorrection.cxx:3046
 AliTPCCorrection.cxx:3047
 AliTPCCorrection.cxx:3048
 AliTPCCorrection.cxx:3049
 AliTPCCorrection.cxx:3050
 AliTPCCorrection.cxx:3051
 AliTPCCorrection.cxx:3052
 AliTPCCorrection.cxx:3053
 AliTPCCorrection.cxx:3054
 AliTPCCorrection.cxx:3055
 AliTPCCorrection.cxx:3056
 AliTPCCorrection.cxx:3057
 AliTPCCorrection.cxx:3058
 AliTPCCorrection.cxx:3059
 AliTPCCorrection.cxx:3060
 AliTPCCorrection.cxx:3061
 AliTPCCorrection.cxx:3062
 AliTPCCorrection.cxx:3063
 AliTPCCorrection.cxx:3064
 AliTPCCorrection.cxx:3065
 AliTPCCorrection.cxx:3066
 AliTPCCorrection.cxx:3067
 AliTPCCorrection.cxx:3068
 AliTPCCorrection.cxx:3069
 AliTPCCorrection.cxx:3070
 AliTPCCorrection.cxx:3071
 AliTPCCorrection.cxx:3072
 AliTPCCorrection.cxx:3073
 AliTPCCorrection.cxx:3074
 AliTPCCorrection.cxx:3075
 AliTPCCorrection.cxx:3076
 AliTPCCorrection.cxx:3077
 AliTPCCorrection.cxx:3078
 AliTPCCorrection.cxx:3079
 AliTPCCorrection.cxx:3080
 AliTPCCorrection.cxx:3081
 AliTPCCorrection.cxx:3082
 AliTPCCorrection.cxx:3083
 AliTPCCorrection.cxx:3084
 AliTPCCorrection.cxx:3085
 AliTPCCorrection.cxx:3086
 AliTPCCorrection.cxx:3087
 AliTPCCorrection.cxx:3088
 AliTPCCorrection.cxx:3089
 AliTPCCorrection.cxx:3090
 AliTPCCorrection.cxx:3091
 AliTPCCorrection.cxx:3092
 AliTPCCorrection.cxx:3093
 AliTPCCorrection.cxx:3094
 AliTPCCorrection.cxx:3095
 AliTPCCorrection.cxx:3096
 AliTPCCorrection.cxx:3097
 AliTPCCorrection.cxx:3098
 AliTPCCorrection.cxx:3099
 AliTPCCorrection.cxx:3100
 AliTPCCorrection.cxx:3101
 AliTPCCorrection.cxx:3102
 AliTPCCorrection.cxx:3103
 AliTPCCorrection.cxx:3104
 AliTPCCorrection.cxx:3105
 AliTPCCorrection.cxx:3106
 AliTPCCorrection.cxx:3107
 AliTPCCorrection.cxx:3108
 AliTPCCorrection.cxx:3109
 AliTPCCorrection.cxx:3110
 AliTPCCorrection.cxx:3111
 AliTPCCorrection.cxx:3112
 AliTPCCorrection.cxx:3113
 AliTPCCorrection.cxx:3114
 AliTPCCorrection.cxx:3115
 AliTPCCorrection.cxx:3116
 AliTPCCorrection.cxx:3117
 AliTPCCorrection.cxx:3118
 AliTPCCorrection.cxx:3119
 AliTPCCorrection.cxx:3120
 AliTPCCorrection.cxx:3121
 AliTPCCorrection.cxx:3122
 AliTPCCorrection.cxx:3123
 AliTPCCorrection.cxx:3124
 AliTPCCorrection.cxx:3125
 AliTPCCorrection.cxx:3126
 AliTPCCorrection.cxx:3127
 AliTPCCorrection.cxx:3128
 AliTPCCorrection.cxx:3129
 AliTPCCorrection.cxx:3130
 AliTPCCorrection.cxx:3131
 AliTPCCorrection.cxx:3132
 AliTPCCorrection.cxx:3133
 AliTPCCorrection.cxx:3134
 AliTPCCorrection.cxx:3135
 AliTPCCorrection.cxx:3136
 AliTPCCorrection.cxx:3137
 AliTPCCorrection.cxx:3138
 AliTPCCorrection.cxx:3139
 AliTPCCorrection.cxx:3140
 AliTPCCorrection.cxx:3141
 AliTPCCorrection.cxx:3142
 AliTPCCorrection.cxx:3143
 AliTPCCorrection.cxx:3144
 AliTPCCorrection.cxx:3145
 AliTPCCorrection.cxx:3146
 AliTPCCorrection.cxx:3147
 AliTPCCorrection.cxx:3148
 AliTPCCorrection.cxx:3149
 AliTPCCorrection.cxx:3150
 AliTPCCorrection.cxx:3151
 AliTPCCorrection.cxx:3152
 AliTPCCorrection.cxx:3153
 AliTPCCorrection.cxx:3154
 AliTPCCorrection.cxx:3155
 AliTPCCorrection.cxx:3156
 AliTPCCorrection.cxx:3157
 AliTPCCorrection.cxx:3158
 AliTPCCorrection.cxx:3159
 AliTPCCorrection.cxx:3160
 AliTPCCorrection.cxx:3161
 AliTPCCorrection.cxx:3162
 AliTPCCorrection.cxx:3163
 AliTPCCorrection.cxx:3164
 AliTPCCorrection.cxx:3165
 AliTPCCorrection.cxx:3166
 AliTPCCorrection.cxx:3167
 AliTPCCorrection.cxx:3168
 AliTPCCorrection.cxx:3169
 AliTPCCorrection.cxx:3170
 AliTPCCorrection.cxx:3171
 AliTPCCorrection.cxx:3172
 AliTPCCorrection.cxx:3173
 AliTPCCorrection.cxx:3174
 AliTPCCorrection.cxx:3175
 AliTPCCorrection.cxx:3176
 AliTPCCorrection.cxx:3177
 AliTPCCorrection.cxx:3178
 AliTPCCorrection.cxx:3179
 AliTPCCorrection.cxx:3180
 AliTPCCorrection.cxx:3181
 AliTPCCorrection.cxx:3182
 AliTPCCorrection.cxx:3183
 AliTPCCorrection.cxx:3184
 AliTPCCorrection.cxx:3185
 AliTPCCorrection.cxx:3186
 AliTPCCorrection.cxx:3187
 AliTPCCorrection.cxx:3188
 AliTPCCorrection.cxx:3189
 AliTPCCorrection.cxx:3190
 AliTPCCorrection.cxx:3191
 AliTPCCorrection.cxx:3192
 AliTPCCorrection.cxx:3193
 AliTPCCorrection.cxx:3194
 AliTPCCorrection.cxx:3195
 AliTPCCorrection.cxx:3196
 AliTPCCorrection.cxx:3197
 AliTPCCorrection.cxx:3198
 AliTPCCorrection.cxx:3199
 AliTPCCorrection.cxx:3200
 AliTPCCorrection.cxx:3201
 AliTPCCorrection.cxx:3202
 AliTPCCorrection.cxx:3203
 AliTPCCorrection.cxx:3204
 AliTPCCorrection.cxx:3205
 AliTPCCorrection.cxx:3206
 AliTPCCorrection.cxx:3207
 AliTPCCorrection.cxx:3208
 AliTPCCorrection.cxx:3209
 AliTPCCorrection.cxx:3210
 AliTPCCorrection.cxx:3211
 AliTPCCorrection.cxx:3212
 AliTPCCorrection.cxx:3213
 AliTPCCorrection.cxx:3214
 AliTPCCorrection.cxx:3215
 AliTPCCorrection.cxx:3216
 AliTPCCorrection.cxx:3217
 AliTPCCorrection.cxx:3218
 AliTPCCorrection.cxx:3219
 AliTPCCorrection.cxx:3220
 AliTPCCorrection.cxx:3221
 AliTPCCorrection.cxx:3222
 AliTPCCorrection.cxx:3223
 AliTPCCorrection.cxx:3224
 AliTPCCorrection.cxx:3225
 AliTPCCorrection.cxx:3226
 AliTPCCorrection.cxx:3227
 AliTPCCorrection.cxx:3228
 AliTPCCorrection.cxx:3229
 AliTPCCorrection.cxx:3230
 AliTPCCorrection.cxx:3231
 AliTPCCorrection.cxx:3232
 AliTPCCorrection.cxx:3233
 AliTPCCorrection.cxx:3234
 AliTPCCorrection.cxx:3235
 AliTPCCorrection.cxx:3236
 AliTPCCorrection.cxx:3237
 AliTPCCorrection.cxx:3238
 AliTPCCorrection.cxx:3239
 AliTPCCorrection.cxx:3240
 AliTPCCorrection.cxx:3241
 AliTPCCorrection.cxx:3242
 AliTPCCorrection.cxx:3243
 AliTPCCorrection.cxx:3244
 AliTPCCorrection.cxx:3245
 AliTPCCorrection.cxx:3246
 AliTPCCorrection.cxx:3247
 AliTPCCorrection.cxx:3248
 AliTPCCorrection.cxx:3249
 AliTPCCorrection.cxx:3250
 AliTPCCorrection.cxx:3251
 AliTPCCorrection.cxx:3252
 AliTPCCorrection.cxx:3253
 AliTPCCorrection.cxx:3254
 AliTPCCorrection.cxx:3255
 AliTPCCorrection.cxx:3256
 AliTPCCorrection.cxx:3257
 AliTPCCorrection.cxx:3258
 AliTPCCorrection.cxx:3259
 AliTPCCorrection.cxx:3260
 AliTPCCorrection.cxx:3261
 AliTPCCorrection.cxx:3262
 AliTPCCorrection.cxx:3263
 AliTPCCorrection.cxx:3264
 AliTPCCorrection.cxx:3265
 AliTPCCorrection.cxx:3266
 AliTPCCorrection.cxx:3267
 AliTPCCorrection.cxx:3268
 AliTPCCorrection.cxx:3269
 AliTPCCorrection.cxx:3270
 AliTPCCorrection.cxx:3271
 AliTPCCorrection.cxx:3272
 AliTPCCorrection.cxx:3273
 AliTPCCorrection.cxx:3274
 AliTPCCorrection.cxx:3275
 AliTPCCorrection.cxx:3276
 AliTPCCorrection.cxx:3277
 AliTPCCorrection.cxx:3278
 AliTPCCorrection.cxx:3279
 AliTPCCorrection.cxx:3280
 AliTPCCorrection.cxx:3281
 AliTPCCorrection.cxx:3282
 AliTPCCorrection.cxx:3283
 AliTPCCorrection.cxx:3284
 AliTPCCorrection.cxx:3285
 AliTPCCorrection.cxx:3286
 AliTPCCorrection.cxx:3287
 AliTPCCorrection.cxx:3288
 AliTPCCorrection.cxx:3289
 AliTPCCorrection.cxx:3290
 AliTPCCorrection.cxx:3291
 AliTPCCorrection.cxx:3292
 AliTPCCorrection.cxx:3293
 AliTPCCorrection.cxx:3294
 AliTPCCorrection.cxx:3295
 AliTPCCorrection.cxx:3296
 AliTPCCorrection.cxx:3297
 AliTPCCorrection.cxx:3298
 AliTPCCorrection.cxx:3299
 AliTPCCorrection.cxx:3300
 AliTPCCorrection.cxx:3301
 AliTPCCorrection.cxx:3302
 AliTPCCorrection.cxx:3303
 AliTPCCorrection.cxx:3304
 AliTPCCorrection.cxx:3305
 AliTPCCorrection.cxx:3306
 AliTPCCorrection.cxx:3307
 AliTPCCorrection.cxx:3308
 AliTPCCorrection.cxx:3309
 AliTPCCorrection.cxx:3310
 AliTPCCorrection.cxx:3311
 AliTPCCorrection.cxx:3312
 AliTPCCorrection.cxx:3313
 AliTPCCorrection.cxx:3314
 AliTPCCorrection.cxx:3315
 AliTPCCorrection.cxx:3316
 AliTPCCorrection.cxx:3317
 AliTPCCorrection.cxx:3318
 AliTPCCorrection.cxx:3319
 AliTPCCorrection.cxx:3320
 AliTPCCorrection.cxx:3321
 AliTPCCorrection.cxx:3322
 AliTPCCorrection.cxx:3323
 AliTPCCorrection.cxx:3324
 AliTPCCorrection.cxx:3325
 AliTPCCorrection.cxx:3326
 AliTPCCorrection.cxx:3327
 AliTPCCorrection.cxx:3328
 AliTPCCorrection.cxx:3329
 AliTPCCorrection.cxx:3330
 AliTPCCorrection.cxx:3331
 AliTPCCorrection.cxx:3332
 AliTPCCorrection.cxx:3333
 AliTPCCorrection.cxx:3334
 AliTPCCorrection.cxx:3335
 AliTPCCorrection.cxx:3336
 AliTPCCorrection.cxx:3337
 AliTPCCorrection.cxx:3338
 AliTPCCorrection.cxx:3339
 AliTPCCorrection.cxx:3340
 AliTPCCorrection.cxx:3341
 AliTPCCorrection.cxx:3342
 AliTPCCorrection.cxx:3343
 AliTPCCorrection.cxx:3344
 AliTPCCorrection.cxx:3345
 AliTPCCorrection.cxx:3346
 AliTPCCorrection.cxx:3347
 AliTPCCorrection.cxx:3348
 AliTPCCorrection.cxx:3349
 AliTPCCorrection.cxx:3350
 AliTPCCorrection.cxx:3351
 AliTPCCorrection.cxx:3352
 AliTPCCorrection.cxx:3353
 AliTPCCorrection.cxx:3354
 AliTPCCorrection.cxx:3355
 AliTPCCorrection.cxx:3356
 AliTPCCorrection.cxx:3357
 AliTPCCorrection.cxx:3358
 AliTPCCorrection.cxx:3359
 AliTPCCorrection.cxx:3360
 AliTPCCorrection.cxx:3361
 AliTPCCorrection.cxx:3362
 AliTPCCorrection.cxx:3363
 AliTPCCorrection.cxx:3364
 AliTPCCorrection.cxx:3365
 AliTPCCorrection.cxx:3366
 AliTPCCorrection.cxx:3367
 AliTPCCorrection.cxx:3368
 AliTPCCorrection.cxx:3369
 AliTPCCorrection.cxx:3370
 AliTPCCorrection.cxx:3371
 AliTPCCorrection.cxx:3372
 AliTPCCorrection.cxx:3373
 AliTPCCorrection.cxx:3374
 AliTPCCorrection.cxx:3375
 AliTPCCorrection.cxx:3376
 AliTPCCorrection.cxx:3377
 AliTPCCorrection.cxx:3378
 AliTPCCorrection.cxx:3379
 AliTPCCorrection.cxx:3380
 AliTPCCorrection.cxx:3381
 AliTPCCorrection.cxx:3382
 AliTPCCorrection.cxx:3383
 AliTPCCorrection.cxx:3384
 AliTPCCorrection.cxx:3385
 AliTPCCorrection.cxx:3386
 AliTPCCorrection.cxx:3387
 AliTPCCorrection.cxx:3388
 AliTPCCorrection.cxx:3389
 AliTPCCorrection.cxx:3390
 AliTPCCorrection.cxx:3391
 AliTPCCorrection.cxx:3392
 AliTPCCorrection.cxx:3393
 AliTPCCorrection.cxx:3394
 AliTPCCorrection.cxx:3395
 AliTPCCorrection.cxx:3396
 AliTPCCorrection.cxx:3397
 AliTPCCorrection.cxx:3398
 AliTPCCorrection.cxx:3399
 AliTPCCorrection.cxx:3400
 AliTPCCorrection.cxx:3401
 AliTPCCorrection.cxx:3402
 AliTPCCorrection.cxx:3403
 AliTPCCorrection.cxx:3404
 AliTPCCorrection.cxx:3405
 AliTPCCorrection.cxx:3406
 AliTPCCorrection.cxx:3407
 AliTPCCorrection.cxx:3408
 AliTPCCorrection.cxx:3409
 AliTPCCorrection.cxx:3410
 AliTPCCorrection.cxx:3411
 AliTPCCorrection.cxx:3412
 AliTPCCorrection.cxx:3413
 AliTPCCorrection.cxx:3414
 AliTPCCorrection.cxx:3415
 AliTPCCorrection.cxx:3416
 AliTPCCorrection.cxx:3417
 AliTPCCorrection.cxx:3418
 AliTPCCorrection.cxx:3419
 AliTPCCorrection.cxx:3420
 AliTPCCorrection.cxx:3421
 AliTPCCorrection.cxx:3422
 AliTPCCorrection.cxx:3423
 AliTPCCorrection.cxx:3424
 AliTPCCorrection.cxx:3425
 AliTPCCorrection.cxx:3426
 AliTPCCorrection.cxx:3427
 AliTPCCorrection.cxx:3428
 AliTPCCorrection.cxx:3429
 AliTPCCorrection.cxx:3430
 AliTPCCorrection.cxx:3431
 AliTPCCorrection.cxx:3432
 AliTPCCorrection.cxx:3433
 AliTPCCorrection.cxx:3434
 AliTPCCorrection.cxx:3435
 AliTPCCorrection.cxx:3436
 AliTPCCorrection.cxx:3437
 AliTPCCorrection.cxx:3438
 AliTPCCorrection.cxx:3439
 AliTPCCorrection.cxx:3440
 AliTPCCorrection.cxx:3441
 AliTPCCorrection.cxx:3442
 AliTPCCorrection.cxx:3443
 AliTPCCorrection.cxx:3444
 AliTPCCorrection.cxx:3445
 AliTPCCorrection.cxx:3446
 AliTPCCorrection.cxx:3447
 AliTPCCorrection.cxx:3448
 AliTPCCorrection.cxx:3449
 AliTPCCorrection.cxx:3450
 AliTPCCorrection.cxx:3451
 AliTPCCorrection.cxx:3452