ROOT logo
/*
  
 gSystem->AddIncludePath("-I$ALICE_ROOT/TPC");
 gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
 gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+");

 gROOT->LoadMacro("$ALICE_ROOT/TPC/CalibMacros/CalibAlignKalman.C+");

 AliTPCTransformation::BuildBasicFormulas();

 AliXRDPROOFtoolkit tool;
 chainPoints = tool.MakeChainRandom("align.txt","trackPoints",0,50000);
 chainPoints->Lookup();
 //
 chainMS = tool.MakeChainRandom("kalmanFit.list","kf",0,50000);
 chainMS->Lookup();

 chainFP = tool.MakeChainRandom("kalmanFit.list","filter",0,50000);
 chainFP->Lookup();

// CalibAlignKalmanFit(40000,1);
// kalmanFit0->DumpCorelation(0.8);
// TFile f("kalmanfitTPC.root");
*/


#ifdef __CINT__
#else
#include <fstream>
#include "TSystem.h"
#include "TROOT.h"
#include "TRandom.h"
#include "TMath.h"
#include "TBits.h"
#include "TFormula.h"
#include "TF1.h"
#include "TLinearFitter.h"
#include "TFile.h"
#include "TChain.h"
#include "TCut.h"
#include "TEntryList.h"
#include "TH1F.h"
#include "THnSparse.h"


#include "AliSysInfo.h"
#include "AliExternalTrackParam.h"
#include "TTreeStream.h"
#include "AliTrackPointArray.h"
#include "AliLog.h"
#include "AliTPCTransformation.h"
#include "AliTPCkalmanFit.h"
#include "AliMathBase.h"
#include "AliXRDPROOFtoolkit.h"
#endif


//
//
// track point cuts
//
const Float_t krmsYcut      = 0.2;   // cluster RMS cut in Y - residuals form local  fit
const Float_t krmsZcut      = 0.2;   // cluster RMS cut in Z - residuals from local  fit 
const Float_t krmsYcutGlobal= 0.2;   // cluster RMS cut in Y - residuals form global fit
const Float_t krmsZcutGlobal= 2.0;   // cluster RMS cut in Z - residuals from global fit 
const Float_t kSigmaCut     = 5.;    // clusters to be removed 
const Int_t   knclCut       =  80;   // minimal number of clusters
const Double_t kArmCut      = 50.;   // minimal level arm
const Double_t kNsigma      = 5.;    // cut on track level
//
// mult. scattering cuts    
/*
TCut cutClY("rms09.fElements[0]<0.15");
TCut cuttY("rms09.fElements[1]/rms09.fElements[0]<0.9");
TCut cutkY("rms09.fElements[2]<0.015");
TCut cutClZ("rms09.fElements[3]<0.2");
TCut cuttZ("rms09.fElements[4]/rms09.fElements[3]<0.9");
TCut cutkZ("rms09.fElements[5]<0.015");
TCut cutMS=cutClY+cuttY+cutkY+cutClZ+cuttZ+cutkZ
*/
TMatrixD cutMatrix(4*7,2);
const Double_t rmsCut09[6]={0.15,0.9,0.015, 0.2, 0.9, 0.015};



//
//
Int_t          toSkip       = 2;     // 
Int_t          toSkipOffset = 0;
Int_t          toSkipTrack       = 2;
Int_t          toSkipTrackOffset = 0;
Int_t          isFilterTest = 0;
//
// Track cuts
//
TCut * cSide[4]={0,0,0,0};
TCut *cP3[4]={0,0,0,0};
TCut *cSP3[4]={0,0,0,0};
TCut *cP4[4]={0,0,0,0};
TCut *cM4[4]={0,0,0,0};
TCut *cA[4]={0,0,0,0};

TCut cutAll="";


//
//
//
TChain *chainPoints=0; 
TEntryList *elist=0;
AliTPCkalmanFit * kalmanFitNew=0;
AliTPCkalmanFit * kalmanFitOrig=0;
AliTPCkalmanFit * kalmanFitApply=0;

AliTPCkalmanFit *  CalibAlignKalmanFit(Int_t maxTracks, Int_t trackDump);
void FilterTracks();
AliTPCkalmanFit * SetupFit();
//
void              AddFitFieldCage(AliTPCkalmanFit *kalmanFit);
void              AddPhiScaling(AliTPCkalmanFit *kalmanFit);
void              AddZShift(AliTPCkalmanFit *kalmanFit, Int_t ncos, Int_t nsin );
void              AddZTilting(AliTPCkalmanFit *kalmanFit, Int_t ncos, Int_t nsin);
void              AddLocalXYMisalignment(AliTPCkalmanFit *kalmanFit);
void              AddLocalXYMisalignmentSector(AliTPCkalmanFit *kalmanFit);
void              AddAlignOROCIROCFourier(AliTPCkalmanFit *kalmanFit, Int_t ncos, Int_t nsin);
void              AddAlignSectorFourier(AliTPCkalmanFit *kalmanFit, Int_t ncos, Int_t nsin);
void              AddDrift(AliTPCkalmanFit *kalmanFit);


AliTrackPointArray *FilterPoints(AliTrackPointArray &points, Int_t dir, TTreeSRedirector *pcstream);

TVectorD * EstimateScatteringKalmanLinear(AliTrackPointArray &points, AliExternalTrackParam &p0, AliExternalTrackParam &p1 , TTreeSRedirector *pcstream);
AliTrackPointArray *SkipPoints(AliTrackPointArray &points, Int_t nskip, Int_t nskipOffset);

AliTPCkalmanFit *   FitPointsLinear(Int_t maxTracks, Int_t trackDump);

void CalibAlignKalman(Int_t npoints, Int_t maxFiles, Int_t startFile, Int_t trackDump, Int_t nSkipTrack, Int_t nSkipTrackOffset, Int_t nSkip, Int_t nSkipOffset, Int_t bfilterTest){
  //
  //
  //
  AliTPCTransformation::BuildBasicFormulas();
  toSkip=nSkip;
  toSkipOffset= nSkipOffset;
  toSkipTrack = nSkipTrack;
  toSkipTrackOffset = nSkipTrackOffset;
  isFilterTest = bfilterTest;
  //
  // read the transformation to be applied
  TFile ftrafo("kalmanFitApply.root");
  kalmanFitApply = (AliTPCkalmanFit *)ftrafo.Get("kalmanFitNew");
  if (kalmanFitApply) {
    printf("Loaded transforamtion\n");
    kalmanFitApply->DumpCalib("IROCOROC");
    kalmanFitApply->InitTransformation();
  }else{
    printf("Not trnasformation specified\n");
  }
  //
  //
  //
  gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
  gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+");
  //
  AliXRDPROOFtoolkit tool;
  chainPoints = tool.MakeChainRandom("align.txt","trackPoints",0, maxFiles, startFile);
  CalibAlignKalmanFit(npoints, trackDump);
}




AliTPCkalmanFit *  CalibAlignKalmanFit(Int_t maxTracks, Int_t trackDump){
  //
  // Fitting procedure
  //
  AliTPCTransformation::BuildBasicFormulas();
  FilterTracks();
  kalmanFitNew     = SetupFit();  
  kalmanFitOrig  = SetupFit();
  kalmanFitNew->Init();
  kalmanFitOrig->Init();
  return FitPointsLinear(maxTracks,trackDump);
}



AliTPCkalmanFit * SetupFit(){
  //
  AliTPCkalmanFit *kalmanFit =  new AliTPCkalmanFit;
  AddFitFieldCage(kalmanFit); 
  AddPhiScaling(kalmanFit);
  AddDrift(kalmanFit);
  AddZShift(kalmanFit,3,3); 
  AddZTilting(kalmanFit,3,3); 
  //  AddLocalXYMisalignment(kalmanFit);  
  //  AddLocalXYMisalignmentSector(kalmanFit);  
  AddAlignSectorFourier(kalmanFit,4,4); 
  AddAlignOROCIROCFourier(kalmanFit,5,5);
  kalmanFit->Init();
  return kalmanFit;
}


void FilterTracks(){
  //
  //
  //

  cSide[0] = new TCut("cutAA","p0In.fP[1]>0&&p1In.fP[1]>0");
  cSide[1] = new TCut("cutCC","p0In.fP[1]<0&&p1In.fP[1]<0");
  cSide[2] = new TCut("cutAC","p0In.fP[1]>0&&p1In.fP[1]<0");
  cSide[3] = new TCut("cutCA","p0In.fP[1]<0&&p1In.fP[1]>0");
  //  
  TH1F * phisP3 = new TH1F("hhisP3","hhisP3",100,-0.01,0.01);
  TH1F * phisSP3 = new TH1F("hhisSP3","hhisSP3",100,-0.001,0.001);
  TH1F * phisP4 = new TH1F("hhisP4","hhisP4",100,-0.1,0.1);
  TH1F * phisM4 = new TH1F("hhisM4","hhisM4",100,-0.01,0.01);
  
  //

  TF1 *fg = new TF1("fg","gaus");
  for (Int_t iter=0; iter<2; iter++){
    for (Int_t ic=0;ic<4;ic++){
      if (!cA[ic]){
	cA[ic]=new TCut;
	*cA[ic]= *cSide[ic];
      }
      //
      // cutP3
      //
      chainPoints->Draw("p0In.fP[3]+p1In.fP[3]>>hhisP3",*cA[ic],"goff");
      phisP3->Fit(fg,"QNR","QNR",phisP3->GetBinCenter(phisP3->GetMaximumBin())-0.003,phisP3->GetBinCenter(phisP3->GetMaximumBin())+0.003);
      cP3[ic]=new TCut(Form("abs(p0In.fP[3]+p1In.fP[3]-%f)<%f",fg->GetParameter(1), fg->GetParameter(2)*kNsigma));
      cutMatrix(7*ic+0,0) = fg->GetParameter(1);
      cutMatrix(7*ic+0,1) = fg->GetParameter(2);
      //
      // cutSP3
      //
      chainPoints->Draw("p0Out.fP[3]-p0In.fP[3]>>hhisSP3",*cA[ic],"goff");
      phisSP3->Fit(fg,"QNR","QNR",phisP3->GetBinCenter(phisSP3->GetMaximumBin())-0.0015,phisP3->GetBinCenter(phisSP3->GetMaximumBin())+0.0015);
      cSP3[ic]=new TCut(Form("abs(p0Out.fP[3]-p0In.fP[3]-%f)<%f",fg->GetParameter(1), fg->GetParameter(2)*kNsigma));
      cutMatrix(7*ic+1,0) = fg->GetParameter(1);
      cutMatrix(7*ic+1,1) = fg->GetParameter(2);
      //
      chainPoints->Draw("p1Out.fP[3]-p1In.fP[3]>>hhisSP3",*cA[ic],"goff");
      phisSP3->Fit(fg,"QNR","QNR",phisP3->GetBinCenter(phisSP3->GetMaximumBin())-0.0015,phisP3->GetBinCenter(phisSP3->GetMaximumBin())+0.0015);
      *cSP3[ic]+=Form("abs(p1Out.fP[3]-p1In.fP[3]-%f)<%f",fg->GetParameter(1), fg->GetParameter(2)*kNsigma);  
      cutMatrix(7*ic+2,0) = fg->GetParameter(1);
      cutMatrix(7*ic+2,1) = fg->GetParameter(2);    
      //
      // cutP4
      //
      chainPoints->Draw("p0Out.fP[4]>>hhisP4",*cA[ic],"goff");
      phisP4->Fit(fg,"QNR","QNR",phisP4->GetBinCenter(phisP4->GetMaximumBin())-0.03,phisP4->GetBinCenter(phisP4->GetMaximumBin())+0.03);
      cP4[ic]=new TCut(Form("abs(p0Out.fP[4]-%f)<%f",fg->GetParameter(1), fg->GetParameter(2)*kNsigma));
      cutMatrix(7*ic+3,0) = fg->GetParameter(1);
      cutMatrix(7*ic+3,1) = fg->GetParameter(2);    
      chainPoints->Draw("p1Out.fP[4]>>hhisP4",*cA[ic],"goff");
      phisP4->Fit(fg,"QNR","QNR",phisP4->GetBinCenter(phisP4->GetMaximumBin())-0.03,phisP4->GetBinCenter(phisP4->GetMaximumBin())+0.03);
      *cP4[ic]+=Form("abs(p1Out.fP[4]-%f)<%f",fg->GetParameter(1), fg->GetParameter(2)*kNsigma);
      cutMatrix(7*ic+4,0) = fg->GetParameter(1);
      cutMatrix(7*ic+4,1) = fg->GetParameter(2);    

    //
      // cutM4
      //
      chainPoints->Draw("p0Out.fP[4]-p0In.fP[4]>>hhisM4",*cA[ic],"goff");
      phisM4->Fit(fg,"QNR","QNR",phisM4->GetBinCenter(phisM4->GetMaximumBin())-0.03,phisM4->GetBinCenter(phisM4->GetMaximumBin())+0.03);
      cM4[ic]=new TCut(Form("abs(p0Out.fP[4]-p0In.fP[4]-%f)<%f",fg->GetParameter(1), fg->GetParameter(2)*kNsigma));
      cutMatrix(7*ic+5,0) = fg->GetParameter(1);
      cutMatrix(7*ic+5,1) = fg->GetParameter(2);    

      chainPoints->Draw("p1Out.fP[4]-p1In.fP[4]>>hhisM4",*cA[ic],"goff");
      phisM4->Fit(fg,"QNR","QNR",phisM4->GetBinCenter(phisM4->GetMaximumBin())-0.03,phisM4->GetBinCenter(phisM4->GetMaximumBin())+0.03);
      *cM4[ic]+=Form("abs(p1Out.fP[4]-p1In.fP[4]-%f)<%f",fg->GetParameter(1), fg->GetParameter(2)*kNsigma);
      cutMatrix(7*ic+6,0) = fg->GetParameter(1);
      cutMatrix(7*ic+6,1) = fg->GetParameter(2);    
      //
      //
      //
      cA[ic]=new TCut;
      *cA[ic]= *cSide[ic]+*cP3[ic]+*cSP3[ic]+*cP4[ic]+*cM4[ic];
    }
  }
  cutMatrix.Print();

  cutAll = (*cA[0])||(*cA[1])||(*cA[2])||(*cA[3])+"abs(mag)<0.01&&ncont>0&&p.fNPoints>120";

  delete  phisP3; // = new TH1F("hhisP3","hhisP3",100,-0.01,0.01);
  delete  phisSP3; // = new TH1F("hhisSP3","hhisSP3",100,-0.001,0.001);
  delete  phisP4;// = new TH1F("hhisP4","hhisP4",100,-0.1,0.1);
  delete  phisM4;// = new TH1F("hhisM4","hhisM4",100,-0.01,0.01);



  chainPoints->Draw(">>listEL",cutAll,"entryList");
  elist = (TEntryList*)gDirectory->Get("listEL");
  chainPoints->SetEntryList(elist);
  elist->SetDirectory(0);
}



AliTPCkalmanFit * FitPointsLinear(Int_t maxTracks, Int_t trackDump){
  //
  //
  //
  // create debug streeamers
  TTreeSRedirector *pcstream      = new TTreeSRedirector("kalmanfitTPC.root");  
  TTreeSRedirector *pcstreamOrig = new TTreeSRedirector("kalmanfitTPCOrig.root");  
  pcstream->GetFile()->cd();
  cutMatrix.Write("cutMarix");
  elist->Write("eventList");
  //
  //
  AliTrackPointArray *pointsNS=0;
  Float_t mag=0;
  Int_t   time=0;
  AliExternalTrackParam *param0=0;
  AliExternalTrackParam *param1=0;
  chainPoints->SetBranchAddress("p.",&pointsNS);
  chainPoints->SetBranchAddress("p0In.",&param0);
  chainPoints->SetBranchAddress("p1In.",&param1);
  chainPoints->SetBranchAddress("mag",&mag);
  chainPoints->SetBranchAddress("time",&time);
  Int_t accepted=0;
  printf("\n*\n*\n*Selected entries = %d\n*\n*\n*",Int_t(elist->GetN()));

  //
  for (Int_t itrack=0;itrack<elist->GetN(); itrack++){
    if (itrack%toSkipTrack!=toSkipTrackOffset) continue;   
    Int_t entry=chainPoints->GetEntryNumber(itrack);
    chainPoints->GetEntry(entry);
    if (accepted>maxTracks) break;
    //
    AliTrackPointArray *points = AliTPCkalmanFit::SortPoints(*pointsNS);    
    if (kalmanFitApply)  kalmanFitApply->ApplyCalibration(points,-1.);
    //
    // estimate and filter scattering
    //
    TVectorD *vecRMS09 = EstimateScatteringKalmanLinear(*points,*param0,*param1,pcstream);
    if (!vecRMS09) continue;
    Bool_t isOK=kTRUE;
    if ((*vecRMS09)[0] >rmsCut09[0]) isOK=kFALSE;
    if ((*vecRMS09)[1]/(*vecRMS09)[0] >rmsCut09[1]) isOK=kFALSE;;
    if ((*vecRMS09)[2] >rmsCut09[2]) isOK=kFALSE;
    if ((*vecRMS09)[3] >rmsCut09[3]) isOK=kFALSE;
    if ((*vecRMS09)[4]/(*vecRMS09)[0] >rmsCut09[4]) isOK=kFALSE;
    if ((*vecRMS09)[5] >rmsCut09[5]) isOK=kFALSE;
    if (!isOK || isFilterTest) {
      delete points;
      continue;
    }
    kalmanFitNew->PropagateTime(time);
    //
    //
    for (Int_t idir=-1; idir<=1; idir++){
      AliTrackPointArray *pointsF = FilterPoints(*points,idir, pcstream);      
      if (!pointsF) continue;
      AliTrackPointArray *spointsF = 0;     
      // we skip points for alignemnt  but not for QA
      if (idir==0)  spointsF = SkipPoints(*pointsF, toSkip*2, toSkipOffset);
      if (idir!=0)  spointsF = SkipPoints(*pointsF, toSkip,   toSkipOffset);
      if (idir==0)  accepted++;
      //
      if (accepted%50==0) {
	kalmanFitNew->FitTrackLinear(*pointsF, pcstream);
      }else{
	if (idir==0) kalmanFitNew->FitTrackLinear(*spointsF, 0);
	if (idir!=0) kalmanFitNew->FitTrackLinear(*spointsF, 0);
      }    
      if (idir==0) kalmanFitNew->DumpTrackLinear(*pointsF,pcstream);
      if (idir==0) kalmanFitOrig->DumpTrackLinear(*pointsF,pcstreamOrig);
      if (accepted%trackDump==0) {
	printf("%d\n", accepted);
      }
      AliSysInfo::AddStamp("trackFit", accepted,itrack);
      delete pointsF;
      delete spointsF;
    }
    delete points;
  }
  pcstream->GetFile()->cd();
  kalmanFitNew->Write("kalmanFit");
  pcstreamOrig->GetFile()->cd();
  kalmanFitOrig->Write("kalmanFitOrig");
  pcstreamOrig->GetFile()->cd();
  if (kalmanFitApply) kalmanFitApply->Write("kalmanFitApply");
  
  delete pcstream;  
  delete pcstreamOrig;  
  return kalmanFitNew;   
}

void  QAPointsLinear(Int_t maxTracks, Int_t trackDump){
  //
  // check  the consistency of kalman fit
  // Apply transformation
  //
  // create debug streeamers
  TTreeSRedirector *pcstreamNonCalib      = new TTreeSRedirector("kalmanfitTPCQANonCalib.root");
  TTreeSRedirector *pcstreamCalib         = new TTreeSRedirector("kalmanfitTPCQACalib.root");
  TTreeSRedirector *pcstream=0;
  AliTPCkalmanFit  *kalmanFitters[6]={0,0,0,0,0,0};
  for (Int_t i=0;i<6;i++){
    kalmanFitters[i]=SetupFit();
  }
  //
  //
  AliTrackPointArray *points=0;
  AliExternalTrackParam *param0=0;
  AliExternalTrackParam *param1=0;
  Float_t mag=0;
  Int_t   time=0;
  chainPoints->SetBranchAddress("p.",&points);
  chainPoints->SetBranchAddress("mag",&mag);
  chainPoints->SetBranchAddress("time",&time);
  chainPoints->SetBranchAddress("p0In.",&param0);
  chainPoints->SetBranchAddress("p1In.",&param1);

  Int_t accepted=0;
  //


  for (Int_t itrack=0;itrack<elist->GetN(); itrack++){
    if (itrack%toSkipTrack!=toSkipTrackOffset) continue;   
    Int_t entry=chainPoints->GetEntryNumber(itrack);
    chainPoints->GetEntry(entry);
    if (accepted>maxTracks) break;
    //

    AliTrackPointArray pointsCalib(*points); 
    for (Int_t iscalib=0; iscalib<1;iscalib++){
      if (iscalib>0)  kalmanFitNew->ApplyCalibration(&pointsCalib,-1.);
      if (iscalib==0) pcstream=pcstreamNonCalib;
      if (iscalib>0)  pcstream=pcstreamCalib;
      for (Int_t idir=-1; idir<=1; idir++){
	AliTrackPointArray *pointsF = FilterPoints(pointsCalib,idir, pcstream);
	if (!pointsF) continue;
	//
	if (idir==0) accepted++;
	kalmanFitters[iscalib*3+idir+1]->DumpTrackLinear(*pointsF,0);
	EstimateScatteringKalmanLinear(*pointsF,*param0,*param1,pcstream);
	delete pointsF;
      }
    }
    if (accepted%trackDump==0) {
      printf("%d\n", accepted);
    }
  }
  pcstreamCalib->GetFile()->cd();
  kalmanFitters[0]->Write("fitUpNonCalib");
  kalmanFitters[1]->Write("fitUpDownNonCalib");
  kalmanFitters[2]->Write("fitDownNonCalib");
  kalmanFitters[3]->Write("fitUpCalib");
  kalmanFitters[4]->Write("fitUpDownCalib");
  kalmanFitters[5]->Write("fitDownCalib");
  delete pcstreamCalib;  
  delete pcstreamNonCalib;  
}


void  TestScattering(Int_t maxTracks, Int_t trackDump){
  //
  // test Multiple scattering algorithm
  // Apply transformation
  //
  // create debug streeamers
  TTreeSRedirector *pcstream      = new TTreeSRedirector("kalmanfitTPCMS.root");
  //
  //
  AliTrackPointArray *points=0;
  AliExternalTrackParam *param0=0;
  AliExternalTrackParam *param1=0;
  Float_t mag=0;
  Int_t   time=0;
  chainPoints->SetBranchAddress("p.",&points);
  chainPoints->SetBranchAddress("mag",&mag);
  chainPoints->SetBranchAddress("time",&time);
  chainPoints->SetBranchAddress("p0In.",&param0);
  chainPoints->SetBranchAddress("p1In.",&param1);
  Int_t accepted=0;
  //
  for (Int_t itrack=0;itrack<elist->GetN(); itrack++){
    Int_t entry=chainPoints->GetEntryNumber(itrack);
    chainPoints->GetEntry(entry);
    if (accepted>maxTracks) break;
    //
    AliTrackPointArray *pointsSorted = AliTPCkalmanFit::SortPoints(*points);
    EstimateScatteringKalmanLinear(*pointsSorted,*param0,*param1,pcstream);
    accepted++;
    if (accepted%trackDump==0) {
      printf("%d\n", accepted);
    }
    delete pointsSorted;
  }
  delete pcstream;  
}





AliTrackPointArray *SkipPoints(AliTrackPointArray &points, Int_t nskip, Int_t nskipOffset){
  //
  // create new array with skipped points
  //
  Int_t npoints = points.GetNPoints();
  Int_t npointsF = (npoints-nskipOffset-1)/nskip;
  AliTrackPoint point;
  AliTrackPointArray *pointsF= new AliTrackPointArray(npointsF);
  Int_t used=0;
  for (Int_t ipoint=nskipOffset; ipoint<npoints; ipoint+=nskip){
    //
    if (!points.GetPoint(point,ipoint)) continue;
    pointsF->AddPoint(used,&point);
    used++;
    if (used==npointsF) break;
  }
  return pointsF;
}



AliTrackPointArray *FilterPoints(AliTrackPointArray &points, Int_t dir, TTreeSRedirector *pcstream){
  //
  //  Filter points - input points for KalmanFilter
  //                
  //
  TLinearFitter lfitY(2,"pol1");
  TLinearFitter lfitZ(2,"pol1");
  TVectorD vecZ(2);
  TVectorD vecY(2);
  //
  lfitY.StoreData(kTRUE);
  lfitZ.StoreData(kTRUE);
  Int_t npoints = points.GetNPoints();
  if (npoints<2) return 0;
  Double_t currentAlpha = TMath::ATan2(points.GetY()[npoints-1]-points.GetY()[0], points.GetX()[npoints-1]-points.GetX()[0]);  
  Double_t ca = TMath::Cos(currentAlpha);
  Double_t sa = TMath::Sin(currentAlpha);
  //
  // 1.b Fit the track in the rotated frame - MakeSeed 
  //
  Double_t maxX =-10000, minX=10000;
  for (Int_t ipoint=0; ipoint<npoints-1; ipoint++){
    Double_t rx =   ca*points.GetX()[ipoint]+sa*points.GetY()[ipoint];
    Double_t ry =  -sa*points.GetX()[ipoint]+ca*points.GetY()[ipoint];
    Double_t rz =  points.GetZ()[ipoint];
    if (dir== 1 && rx<0) continue;
    if (dir==-1 && rx>0) continue;
    if (maxX<rx) maxX=rx;
    if (minX>rx) minX=rx;
    lfitY.AddPoint(&rx,ry,1);
    lfitZ.AddPoint(&rx,rz,1);
  }
  if (TMath::Abs(maxX-minX)<kArmCut) return 0;
  if (lfitY.GetNpoints()<knclCut) return 0;
  //
  lfitY.Eval();
  lfitZ.Eval();
  lfitY.GetParameters(vecY);
  lfitZ.GetParameters(vecZ);
  //
  Double_t chi2Y = lfitY.GetChisquare()/lfitY.GetNpoints();
  Double_t chi2Z = lfitZ.GetChisquare()/lfitZ.GetNpoints();
  if (TMath::Sqrt(chi2Y)>krmsYcutGlobal) return 0;
  if (TMath::Sqrt(chi2Y)>krmsYcutGlobal) return 0;
  //
  //
  Int_t accepted=0;
  Int_t toBeUsed    =0;
  AliTrackPoint point;
  AliTrackPointArray *pointsF=0;
  for (Int_t iter=0; iter<2;iter++){
    for (Int_t ipoint=0; ipoint<npoints-1; ipoint++){
      //
      if (!points.GetPoint(point,ipoint)) continue;
      Double_t rx =   ca*points.GetX()[ipoint]+sa*points.GetY()[ipoint];
      Double_t ry =  -sa*points.GetX()[ipoint]+ca*points.GetY()[ipoint];
      Double_t rz =  points.GetZ()[ipoint];
      if (dir== 1 && rx<0) continue;
      if (dir==-1 && rx>0) continue;
      Double_t erry = TMath::Sqrt(chi2Y);
      Double_t errz = TMath::Sqrt(chi2Z);
      Double_t fy = vecY[0]+vecY[1]*rx;
      Double_t fz = vecZ[0]+vecZ[1]*rx;
      if (TMath::Abs(fy-ry)>erry*kSigmaCut) continue;
      if (TMath::Abs(fz-rz)>errz*kSigmaCut) continue;
      accepted++;
      if (pointsF) pointsF->AddPoint(toBeUsed,&point);
      toBeUsed++;
    }
    if (pcstream){
      (*pcstream)<<"filter"<<
	"iter="<<iter<<
	"accepted="<<accepted<<
	"minX="<<minX<<
	"maxX="<<maxX<<
	"vY.="<<&vecY<<
	"vZ.="<<&vecZ<<
	"chi2Y="<<chi2Y<<
	"chi2Z="<<chi2Z<<
	"\n";
    }
    if (accepted<knclCut) break;
    if (iter==0) pointsF = new AliTrackPointArray(toBeUsed);
    accepted=0;
    toBeUsed=0;
  }
  return pointsF;
}


AliTrackPointArray * SortPoints(AliTrackPointArray &points){
  //
  //Creates the array  - points sorted according radius - neccessay for kalman fit
  // 
  //
  // 0. choose the frame - rotation angle
  //
  Int_t npoints = points.GetNPoints();
  if (npoints<1) return 0;
  Double_t currentAlpha = TMath::ATan2(points.GetY()[npoints-1]-points.GetY()[0], points.GetX()[npoints-1]-points.GetX()[0]);  
  Double_t ca = TMath::Cos(currentAlpha);
  Double_t sa = TMath::Sin(currentAlpha);
  //
  // 1. sort the points
  //
  Double_t *rxvector = new Double_t[npoints];
  Int_t    *indexes  = new Int_t[npoints];
  for (Int_t ipoint=0; ipoint<npoints-1; ipoint++){
    rxvector[ipoint]=ca*points.GetX()[ipoint]+sa*points.GetY()[ipoint];
  }
  TMath::Sort(npoints, rxvector,indexes,kFALSE);
  AliTrackPoint point;
  AliTrackPointArray *pointsSorted= new AliTrackPointArray(npoints);
  for (Int_t ipoint=0; ipoint<npoints; ipoint++){
    if (!points.GetPoint(point,indexes[ipoint])) continue;
    pointsSorted->AddPoint(ipoint,&point);
  }
  delete [] rxvector;
  delete [] indexes;
  return pointsSorted;
}

TVectorD *  EstimateScatteringKalmanLinear(AliTrackPointArray &points, AliExternalTrackParam &p0, AliExternalTrackParam &p1 , TTreeSRedirector *pcstream){
  //
  // Algorithm - 0. Fit the track forward and backward
  //           - 1. Store the current parameters in each point

  const Int_t kMinPoints= 70;
  const Double_t kResY  = 0.1;
  const Double_t kResZ  = 0.1;
  const Double_t kMisY  = 0.02;
  const Double_t kMisZ  = 0.02;
  const Double_t kLArm  = 120.;
  const Double_t kACsideFac = 10.;
  const Double_t kMS0   = kResY/20.;
    
  Int_t npoints = points.GetNPoints();
  if (npoints<kMinPoints) return 0;

  TVectorD *vecPos[11]={0,0,0,0,0,0,0,0,0,0,0};
  for (Int_t i=0;i<11;i++){
    vecPos[i]=new TVectorD(npoints);
  }

  //
  Double_t currentAlpha = TMath::ATan2(points.GetY()[npoints-1]-points.GetY()[0], points.GetX()[npoints-1]-points.GetX()[0]);  
  Double_t ca  = TMath::Cos(currentAlpha);
  Double_t sa  = TMath::Sin(currentAlpha);
  //
  //
  TMatrixD trParamY(2,1),trCovarY(2,2);
  TMatrixD trParamZ(2,1),trCovarZ(2,2);
  Int_t kNmeas  = 1; 
  Int_t nelem   = 2;
  //
  TMatrixD matHk(kNmeas,nelem);     // vector to mesurement
  TMatrixD matHkT(nelem,kNmeas);    // helper matrix Hk transpose
  TMatrixD matFk(nelem,nelem);      
  TMatrixD matFkT(nelem,nelem);      
  TMatrixD vecYk(kNmeas,1);         // Innovation or measurement residual
  TMatrixD vecZk(kNmeas,1);         // Innovation or measurement residual
  TMatrixD measR(kNmeas,kNmeas);
  TMatrixD matSk(kNmeas,kNmeas);    // Innovation (or residual) covariance
  TMatrixD matKk(nelem,kNmeas);     // Optimal Kalman gain
  TMatrixD covXk2(nelem,nelem);     // helper matrix
  TMatrixD covXk3(nelem,nelem);     // helper matrix
  TMatrixD mat1(nelem,nelem);
  mat1(0,0)=1.; mat1(0,1)=0.;
  mat1(1,0)=0.; mat1(1,1)=1.;
  matHk(0,0)=1;
  matHk(0,1)=0;

  Double_t lastX    = 0;
  Int_t lastVolId=-1;
  for (Int_t idir=0; idir<2;idir++){
    // fit direction
    //
    for (Int_t ip=0; ip<npoints; ip++){
      Int_t ipoint= ip;
      if (idir>0) ipoint = npoints-ip-1;
      Double_t rx =   ca*points.GetX()[ipoint]+sa*points.GetY()[ipoint];
      Double_t ry =  -sa*points.GetX()[ipoint]+ca*points.GetY()[ipoint];
      Double_t rz =  points.GetZ()[ipoint];
      Int_t  volId= points.GetVolumeID()[ipoint];
      //
      if (ip==0){
	// set initital parameters and covariance - use first and middle point
	Double_t rxm =   ca*points.GetX()[npoints/2]+sa*points.GetY()[npoints/2];
	Double_t rym =  -sa*points.GetX()[npoints/2]+ca*points.GetY()[npoints/2];
	Double_t rzm =  points.GetZ()[npoints/2];
	trParamY(0,0) = ry; 
	trParamY(1,0) = (rym-ry)/(rxm-rx);
	trParamZ(0,0) = rz;
	trParamZ(1,0) = (rzm-rz)/(rxm-rx);
	//
	trCovarY(0,0) = kResY*kResY;
	trCovarY(1,1) = (kResY*kResY)/((rxm-rx)*(rxm-rx));
	trCovarZ(0,0) = kResZ*kResZ;
	trCovarZ(1,1) = (kResZ*kResZ)/((rxm-rx)*(rxm-rx));
	lastX     = rx;
	lastVolId = volId;
      }
      //
      // Propagate
      //
      if ((volId%36)<18 && (lastVolId%36)>=18){
	// A - C side cross
	trCovarY(0,0)+=kMisY*kMisY*kACsideFac;
	trCovarZ(0,0)+=kMisZ*kMisZ*kACsideFac;
	trCovarY(1,1)+=kACsideFac*(kMisY*kMisY)/(kLArm*kLArm);;
	trCovarZ(1,1)+=kACsideFac*(kMisZ*kMisZ)/(kLArm*kLArm);
	lastVolId=volId;
      }
      if (volId!=lastVolId){
	// volumeID change
	trCovarY(0,0)+=kMisY*kMisY;
	trCovarZ(0,0)+=kMisZ*kMisZ;
	trCovarY(1,1)+=(kMisY*kMisY)/(kLArm*kLArm);;
	trCovarZ(1,1)+=(kMisZ*kMisZ)/(kLArm*kLArm);
	lastVolId=volId;
      }
      //
      // Propagate
      //
      Double_t deltaX=rx-lastX;
      trParamY(0,0)+=deltaX*trParamY(1,0);
      trParamZ(0,0)+=deltaX*trParamZ(1,0);
      matFk(0,0)=1; matFk(0,1)=deltaX;
      matFk(1,0)=0; matFk(1,1)=1;
      matFkT=matFk.T(); matFk.T();
      covXk2=matFk*trCovarY*matFkT;
      trCovarY=covXk2;
      covXk2=matFk*trCovarZ*matFkT;
      trCovarZ=covXk2;

      // multiple scattering
      trCovarY(1,1)+=TMath::Abs(deltaX)*kMS0*kMS0;
      trCovarZ(1,1)+=TMath::Abs(deltaX)*kMS0*kMS0;
      lastX=rx;
      //
      // Update
      //
      for (Int_t coord=0; coord<2;coord++){
	TMatrixD* pvecXk = (coord==0)? &trParamY: &trParamZ;
	TMatrixD* pcovXk = (coord==0)? &trCovarY: &trCovarZ;
	//
	TMatrixD& vecXk = *pvecXk;
	TMatrixD& covXk = *pcovXk;
	measR(0,0) = (coord==0) ? kResY:kResZ;
	vecZk(0,0) = (coord==0) ? ry:rz;
	//
	vecYk = vecZk-matHk*vecXk;               // Innovation or measurement residual
	matHkT=matHk.T(); matHk.T();
	matSk = (matHk*(covXk*matHkT))+measR;    // Innovation (or residual) covariance
	matSk.Invert();
	matKk = (covXk*matHkT)*matSk;            //  Optimal Kalman gain
	//
	covXk2= (mat1-(matKk*matHk));
	covXk3 =  covXk2*covXk;          
	vecXk += matKk*vecYk;                    //  updated vector 
	covXk = covXk3; 
      }
      //
      // store parameters
      //
      (*vecPos[0])[ipoint]=rx;
      (*vecPos[1])[ipoint]=ry;
      (*vecPos[2])[ipoint]=rz;

      (*vecPos[4*idir+0+3])[ipoint]=trParamY(0,0);
      (*vecPos[4*idir+1+3])[ipoint]=trParamY(1,0);
      //
      (*vecPos[4*idir+2+3])[ipoint]=trParamZ(0,0);
      (*vecPos[4*idir+3+3])[ipoint]=trParamZ(1,0);
    }
  }
  //
  //
  //
  TVectorD vec(npoints);
  TVectorD rms(6);
  TVectorD rms09(6); // robust RMS - fraction 0.9
  TVectorD mean09(6); // robust RMS - fraction 0.9
  Double_t meanR,rmsR;
  Int_t npoints09 = Int_t(npoints*0.9);
  //
  vec=(*(vecPos[3])-*(vecPos[1]));
  rms[0]=TMath::RMS(npoints, vec.GetMatrixArray());   // rms cluster y
  AliMathBase::EvaluateUni(npoints, vec.GetMatrixArray(),meanR,rmsR,npoints09);
  rms09[0]=rmsR;
  mean09[0]=meanR;
  vec=(*(vecPos[7])-*(vecPos[3]));
  rms[1]=TMath::RMS(npoints, vec.GetMatrixArray());   // rms track y
  AliMathBase::EvaluateUni(npoints, vec.GetMatrixArray(),meanR,rmsR,npoints09);
  rms09[1]=rmsR;
  mean09[1]=meanR;
  vec=(*(vecPos[8])-*(vecPos[4]));
  rms[2]=TMath::RMS(npoints, vec.GetMatrixArray());   // rms track ky
  AliMathBase::EvaluateUni(npoints, vec.GetMatrixArray(),meanR,rmsR,npoints09);
  rms09[2]=rmsR;
  mean09[2]=meanR;
  //
  vec=(*(vecPos[5])-*(vecPos[2]));
  rms[3]=TMath::RMS(npoints, vec.GetMatrixArray());   // rms cluster z
  AliMathBase::EvaluateUni(npoints, vec.GetMatrixArray(),meanR,rmsR,npoints09);
  rms09[3]=rmsR;
  mean09[3]=meanR;
  vec=(*(vecPos[9])-*(vecPos[5]));
  rms[4]=TMath::RMS(npoints, vec.GetMatrixArray());   // rms track z
  AliMathBase::EvaluateUni(npoints, vec.GetMatrixArray(),meanR,rmsR,npoints09);
  rms09[4]=rmsR;
  mean09[4]=meanR;
  vec=(*(vecPos[10])-*(vecPos[6]));
  rms[5]=TMath::RMS(npoints, vec.GetMatrixArray());   // rms track kz
  AliMathBase::EvaluateUni(npoints, vec.GetMatrixArray(),meanR,rmsR,npoints09);
  rms09[5]=rmsR;
  mean09[5]=meanR;


  (*pcstream)<<"kf"<<
    "p.="<<&points<<    
    "p0.="<<&p0<<
    "p1.="<<&p1<<
    "rms.="<<&rms<<
    "rms09.="<<&rms09<<
    "mean09.="<<&mean09<<
    "py.="<<&trParamY<<
    "pz.="<<&trParamZ<<
    "cy.="<<&trCovarY<<
    "cz.="<<&trCovarY<<
    "\n";
  for (Int_t i=0;i<11;i++){
    delete vecPos[i];
  }
  return new TVectorD(rms09);
}









void  AddFitFieldCage(AliTPCkalmanFit *kalmanFit){
  //
  // Add radial scaling due field cage
  //
  TVectorD fpar(10);
  AliTPCTransformation * transformation=0;
  char tname[100];
  //
  // linear R scaling and shift
  //  
  for (Int_t iside=0; iside<=1; iside++)
    for (Int_t ipolR=0; ipolR<2; ipolR++){
      for (Int_t ipolZ=0; ipolZ<3; ipolZ++){
	fpar[0]=ipolR;
	fpar[1]=ipolZ;
	if (ipolR+ipolZ==0) continue;
	sprintf(tname,"tTPCscalingRPolR%dDr%dSide%d",ipolR,ipolZ,iside);
	transformation = new AliTPCTransformation(tname,AliTPCTransformation::BitsSide(iside),"TPCscalingRPol",0,0,  1);
	transformation->SetParams(0,0.2,0,&fpar);
	kalmanFit->AddCalibration(transformation);      
	//      
      }
    }
  //
  //
  //Inner field cage  
  for (Int_t iside=0; iside<=1; iside++)
    for (Int_t ipol=0; ipol<3; ipol++){
      fpar[0]=ipol; 
      sprintf(tname,"tTPCscalingRIFC%dSide%d",ipol,iside);
      transformation = new AliTPCTransformation(tname,AliTPCTransformation::BitsSide(iside),"TPCscalingRIFC",0,0,   1);
      transformation->SetParams(0,0.2,0,&fpar);
      kalmanFit->AddCalibration(transformation);
    }
  //
  //
  //Outer field cage  
  for (Int_t iside=0; iside<=1; iside++)
    for (Int_t ipol=0; ipol<3; ipol++){
      fpar[0]=ipol;
      //Outer field cage
      sprintf(tname,"tTPCscalingROFC%dSide%d",ipol,iside);
      transformation = new AliTPCTransformation(tname,AliTPCTransformation::BitsSide(iside),"TPCscalingROFC",0,0,  1);
      transformation->SetParams(0,0.2,0,&fpar);
      kalmanFit->AddCalibration(transformation);
    }
}


void AddPhiScaling(AliTPCkalmanFit *kalmanFit){
  //
  // Add linear local phi scaling - 
  // separate IROC/OROC  - A side/C side
  //    "tscalingLocalPhiIROC"                     
  //    "tscalingLocalPhiOROC"                     

  TBits maskInner(72);
  TBits maskOuter(72);
  for (Int_t i=0;i<72;i++){
    if (i<36){
      maskInner[i]=kTRUE;
    }
    if (i>=36){
      maskOuter[i]=kTRUE;
    }
  }
  TVectorD fpar(10);
  AliTPCTransformation * transformation=0;
  fpar[0]=1; 
  transformation = new AliTPCTransformation("tscalingLocalPhiIROC", new TBits(maskInner), 0,"TPCscalingPhiLocal",0,  1);
  transformation->SetParams(0,0.02,0,&fpar);
  kalmanFit->AddCalibration(transformation);  
  transformation = new AliTPCTransformation("tscalingLocalPhiOROC", new TBits(maskOuter), 0,"TPCscalingPhiLocal",0,  1);
  transformation->SetParams(0,0.02,0,&fpar);
  kalmanFit->AddCalibration(transformation);  
  //
}

void AddDrift(AliTPCkalmanFit *kalmanFit){
  //
  // Add drift velocity transformation
  //
  TVectorD fpar(10);
  AliTPCTransformation * transformation=0;
  fpar[0]=1;
  transformation = new AliTPCTransformation("tTPCscalingZDrift", AliTPCTransformation::BitsAll(), 0,0,"TPCscalingZDr",  0);
  transformation->SetParams(0,4.,1.,&fpar);
  kalmanFit->AddCalibration(transformation);  
  //
  transformation = new AliTPCTransformation("tTPCscalingZDriftGy", AliTPCTransformation::BitsAll(), 0,0,"TPCscalingZDrGy",  0);
  transformation->SetParams(0,0.2,0.0,&fpar);
  kalmanFit->AddCalibration(transformation);  
}




void  AddZShift(AliTPCkalmanFit *kalmanFit, Int_t ncos, Int_t nsin){
  //
  //
  // 
  TVectorD fpar(10);
  fpar[0]=0; fpar[1]=0; fpar[2]=0;
  char tname[1000];
  AliTPCTransformation * transformation=0;
  //
  //
  //
  for (Int_t i=0; i<=ncos;i++){
    fpar[0]=i;  // cos frequency
    fpar[1]=0;  // no sinus
    fpar[2]=1;  // relative misalignment
    //
    sprintf(tname,"tTPCDeltaZIROCOROCSideA_Cos%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), 0,0, "TPCDeltaZ" ,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    sprintf(tname,"tTPCDeltaZIROCOROCSideC_Cos%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), 0,0, "TPCDeltaZ" ,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    //
    //
    fpar[2]=0;  // absolute  misalignment
    sprintf(tname,"tTPCDeltaZSectorSideA_Cos%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), 0,0, "TPCDeltaZ" ,  0);
    transformation->SetParams(0,0.1,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    sprintf(tname,"tTPCDeltaZSectorSideC_Cos%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), 0,0, "TPCDeltaZ" ,  0);
    transformation->SetParams(0,0.1,0,&fpar);
    kalmanFit->AddCalibration(transformation);
  }

  for (Int_t i=1; i<=nsin;i++){
    fpar[0]=0;  // cos frequency
    fpar[1]=i;  // sinus frequncy
    fpar[2]=1;  // relative misalignment
    //
    sprintf(tname,"tTPCDeltaZIROCOROCSideA_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), 0,0, "TPCDeltaZ" ,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    sprintf(tname,"tTPCDeltaZIROCOROCSideC_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), 0,0, "TPCDeltaZ" ,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    //
    //
    fpar[2]=0;  // absolute  misalignment
    sprintf(tname,"tTPCDeltaZSectorSideA_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), 0,0, "TPCDeltaZ" ,  0);
    transformation->SetParams(0,0.1,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    sprintf(tname,"tTPCDeltaZSectorSideC_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), 0,0, "TPCDeltaZ" ,  0);
    transformation->SetParams(0,0.1,0,&fpar);
    kalmanFit->AddCalibration(transformation);
  }

}




void AddZTilting(AliTPCkalmanFit *kalmanFit, Int_t ncos, Int_t nsin){
  //
  // z tilting absolute (sector) and relative (IROC-OROC)
  //
  //
  TVectorD fpar(10);
  fpar[0]=0; fpar[1]=0; fpar[2]=0;
  char tname[1000];
  AliTPCTransformation * transformation=0;
  //
  //
  //
  for (Int_t i=0; i<=ncos;i++){
    fpar[0]=i;  // cos frequency
    fpar[1]=0;  // sinus frequency
    fpar[2]=1;  // relative misalignment
    //
    sprintf(tname,"tTPCTiltingZIROCOROCSideA_Cos%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), 0,0, "TPCTiltingZ" ,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    sprintf(tname,"tTPCTiltingZIROCOROCSideC_Cos%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), 0,0, "TPCTiltingZ" ,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    //
    //
    fpar[2]=0;  // absolute  misalignment
    sprintf(tname,"tTPCTiltingZSectorSideA_Cos%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), 0,0, "TPCTiltingZ" ,  0);
    transformation->SetParams(0,0.1,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    sprintf(tname,"tTPCTiltingZSectorSideC_Cos%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), 0,0, "TPCTiltingZ" ,  0);
    transformation->SetParams(0,0.1,0,&fpar);
    kalmanFit->AddCalibration(transformation);
  }

  for (Int_t i=1; i<=nsin;i++){
    fpar[0]=0;  // cos frequency
    fpar[1]=i;  // sinus frequncy
    fpar[2]=1;  // relative misalignment
    //
    sprintf(tname,"tTPCTiltingZIROCOROCSideA_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), 0,0, "TPCTiltingZ" ,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    sprintf(tname,"tTPCTiltingZIROCOROCSideC_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), 0,0, "TPCTiltingZ" ,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    //
    //
    fpar[2]=0;  // absolute  misalignment
    sprintf(tname,"tTPCTiltingZSectorSideA_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), 0,0, "TPCTiltingZ" ,  0);
    transformation->SetParams(0,0.1,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    sprintf(tname,"tTPCTiltingZSectorSideC_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), 0,0, "TPCTiltingZ" ,  0);
    transformation->SetParams(0,0.1,0,&fpar);
    kalmanFit->AddCalibration(transformation);
  }
}



void  AddLocalXYMisalignment(AliTPCkalmanFit *kalmanFit){
  //
  //
  //
  TVectorD fpar(10);
  AliTPCTransformation * transformation=0;
  TBits maskInnerA(72);
  TBits maskInnerC(72);
  for (Int_t i=0;i<72;i++){
    if (i<36){
      if (i%36<18)  maskInnerA[i]=kTRUE;
      if (i%36>=18) maskInnerC[i]=kTRUE;
    }
  }
  //
  //
  transformation = new AliTPCTransformation("tTPCDeltaLxIROCA", new TBits(maskInnerA), "TPClocaldLxdGX","TPClocaldLxdGY",0,  0);
  transformation->SetParams(0,0.2,0,&fpar);
  kalmanFit->AddCalibration(transformation);
  transformation = new AliTPCTransformation("tTPCDeltaLxIROCC", new TBits(maskInnerC), "TPClocaldLxdGX","TPClocaldLxdGY",0,  0);
  transformation->SetParams(0,0.2,0,&fpar);
  kalmanFit->AddCalibration(transformation);
  //
  transformation = new AliTPCTransformation("tTPCDeltaLyIROCA", new TBits(maskInnerA), "TPClocaldLydGX","TPClocaldLydGY",0,  0);
  transformation->SetParams(0,0.2,0,&fpar);
  kalmanFit->AddCalibration(transformation);
  transformation = new AliTPCTransformation("tTPCDeltaLyIROCC", new TBits(maskInnerC), "TPClocaldLydGX","TPClocaldLydGY",0,  0);
  transformation->SetParams(0,0.2,0,&fpar);
  kalmanFit->AddCalibration(transformation);
}

void  AddLocalXYMisalignmentSector(AliTPCkalmanFit *kalmanFit){
  //
  //
  //
  TVectorD fpar(10);
  AliTPCTransformation * transformation=0;
  Int_t fixSector =4;
  //
  for (Int_t isec=0; isec<36;isec++){
    TBits mask(72);
    mask[isec]=kTRUE;
    char tname[1000];
    //
    sprintf(tname,"tTPClocalLxIROC%d",isec);
    transformation = new AliTPCTransformation(tname, new TBits(mask), "TPClocaldLydGX","TPClocaldLydGY",0,  0);
    transformation->SetParams(0,0.2,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    sprintf(tname,"tTPClocalLyIROC%d",isec);
    transformation = new AliTPCTransformation(tname, new TBits(mask), "TPClocaldLydGX","TPClocaldLydGY",0,  0);
    transformation->SetParams(0,0.2,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    
    sprintf(tname,"tTPClocalRzIROC%d",isec);
    transformation = new AliTPCTransformation(tname, new TBits(mask), "TPClocaldLydGX","TPClocaldRzdGY",0,  0);
    transformation->SetParams(0,0.2,0,&fpar);
    kalmanFit->AddCalibration(transformation);

  }
  //
  for (Int_t isec=0; isec<36;isec++){
    if (isec%18==fixSector) continue;
    TBits mask(72);
    mask[isec]   =kTRUE;
    mask[isec+36]=kTRUE;    
    char tname[1000];
    //
    sprintf(tname,"tTPClocalLxSector%d",isec);
    transformation = new AliTPCTransformation(tname, new TBits(mask), "TPClocaldLydGX","TPClocaldLydGY",0,  0);
    transformation->SetParams(0,0.2,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    sprintf(tname,"tTPClocalLySector%d",isec);
    transformation = new AliTPCTransformation(tname, new TBits(mask), "TPClocaldLydGX","TPClocaldLydGY",0,  0);
    transformation->SetParams(0,0.2,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    
    sprintf(tname,"tTPClocalRzSector%d",isec);
    transformation = new AliTPCTransformation(tname, new TBits(mask), "TPClocaldLydGX","TPClocaldRzdGY",0,  0);
    transformation->SetParams(0,0.2,0,&fpar);
    kalmanFit->AddCalibration(transformation);
  }
  

}


void  AddAlignOROCIROCFourier(AliTPCkalmanFit *kalmanFit, Int_t ncos, Int_t nsin){
  //
  //
  //
  TVectorD fpar(10);
  AliTPCTransformation * transformation=0;

  for (Int_t i=0; i<=ncos;i++){
    char tname[1000];
    fpar[0]=i;  // cos frequency
    fpar[1]=0;  // no sinus
    fpar[2]=1;  // relative misalignment
    //
    // Local X shift
    //
    sprintf(tname,"tTPClocalLxIROCOROCSideA_Cos%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), "TPClocaldLxdGX","TPClocaldLxdGY",0,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    sprintf(tname,"tTPClocalLxIROCOROCSideC_Cos%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), "TPClocaldLxdGX","TPClocaldLxdGY",0,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    //
    // Local Y shift
    //
    sprintf(tname,"tTPClocalLyIROCOROCSideA_Cos%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), "TPClocaldLydGX","TPClocaldLydGY",0,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    sprintf(tname,"tTPClocalLyIROCOROCSideC_Cos%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), "TPClocaldLydGX","TPClocaldLydGY",0,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    //
    //
    // Z rotation
    //
    sprintf(tname,"tTPClocalRzIROCOROCSideA_Cos%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), "TPClocaldRzdGX","TPClocaldRzdGY",0,  0);
    transformation->SetParams(0,0.3,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    sprintf(tname,"tTPClocalRzIROCOROCSideC_Cos%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), "TPClocaldRzdGX","TPClocaldRzdGY",0,  0);
    transformation->SetParams(0,0.3,0,&fpar);
    kalmanFit->AddCalibration(transformation);
  }
  //
  for (Int_t i=1; i<=nsin;i++){
    char tname[1000];
    fpar[0]=0;  // cos frequency
    fpar[1]=i;  // sinus frequency
    fpar[2]=1;  // relative misalignment
    //
    // Local X shift
    //
    sprintf(tname,"tTPClocalLxIROCOROCSideA_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), "TPClocaldLxdGX","TPClocaldLxdGY",0,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    sprintf(tname,"tTPClocalLxIROCOROCSideC_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), "TPClocaldLxdGX","TPClocaldLxdGY",0,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    //
    // Local Y shift
    //
    sprintf(tname,"tTPClocalLyIROCOROCSideA_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), "TPClocaldLydGX","TPClocaldLydGY",0,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    sprintf(tname,"tTPClocalLyIROCOROCSideC_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), "TPClocaldLydGX","TPClocaldLydGY",0,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    //
    //
    // Z rotation
    //
    sprintf(tname,"tTPClocalRzIROCOROCSideA_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), "TPClocaldRzdGX","TPClocaldRzdGY",0,  0);
    transformation->SetParams(0,0.3,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    sprintf(tname,"tTPClocalRzIROCOROCSideC_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), "TPClocaldRzdGX","TPClocaldRzdGY",0,  0);
    transformation->SetParams(0,0.3,0,&fpar);
    kalmanFit->AddCalibration(transformation);
  }
}

void  AddAlignSectorFourier(AliTPCkalmanFit *kalmanFit, Int_t ncos, Int_t nsin){
  //
  //
  //
  TVectorD fpar(10);
  AliTPCTransformation * transformation=0;

  for (Int_t i=0; i<=ncos;i++){
    char tname[1000];
    fpar[0]=i;  // cos frequency
    fpar[1]=0;  // no sinus
    fpar[2]=0;  // absolute misalignment
    if (i>0){
      //
      // A side is reference
      // local x 
      sprintf(tname,"tTPClocalLxSectorSideA_Cos%d",i);
      transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), "TPClocaldLxdGX","TPClocaldLxdGY",0,  0);
      transformation->SetParams(0,0.03,0,&fpar);
      kalmanFit->AddCalibration(transformation);
      if (i>1){
	//
	// Local Y shift
	//
	sprintf(tname,"tTPClocalLySectorSideA_Cos%d",i);
	transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), "TPClocaldLydGX","TPClocaldLydGY",0,  0);
	transformation->SetParams(0,0.03,0,&fpar);
	kalmanFit->AddCalibration(transformation);
      }
      //
      //
    }
    //
    // C side to vary
    // local x 
    sprintf(tname,"tTPClocalLxSectorSideC_Cos%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), "TPClocaldLxdGX","TPClocaldLxdGY",0,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    // Local Y shift
    //
    sprintf(tname,"tTPClocalLySectorSideC_Cos%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), "TPClocaldLydGX","TPClocaldLydGY",0,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //    
    //
    // Z rotation - independent
    //
    sprintf(tname,"tTPClocalRzSectorSideA_Cos%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), "TPClocaldRzdGX","TPClocaldRzdGY",0,  0);
    transformation->SetParams(0,0.3,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    sprintf(tname,"tTPClocalRzSectorSideC_Cos%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), "TPClocaldRzdGX","TPClocaldRzdGY",0,  0);
    transformation->SetParams(0,0.3,0,&fpar);
    kalmanFit->AddCalibration(transformation);
  }




  //
  //
  //
  for (Int_t i=1; i<=nsin;i++){
    char tname[1000];
    fpar[0]=0;  // non cos frequency
    fpar[1]=i;  // sinus frequency
    fpar[2]=0;  // absolute misalignment
    //
    // Local X shift
    //
    sprintf(tname,"tTPClocalLxSectorSideA_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), "TPClocaldLxdGX","TPClocaldLxdGY",0,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    sprintf(tname,"tTPClocalLxSectorSideC_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), "TPClocaldLxdGX","TPClocaldLxdGY",0,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    //
    // Local Y shift
    //
    sprintf(tname,"tTPClocalLySectorSideA_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), "TPClocaldLydGX","TPClocaldLydGY",0,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    sprintf(tname,"tTPClocalLySectorSideC_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), "TPClocaldLydGX","TPClocaldLydGY",0,  0);
    transformation->SetParams(0,0.03,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    //
    //
    //
    // Z rotation
    //
    sprintf(tname,"tTPClocalRzSectorSideA_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(0), "TPClocaldRzdGX","TPClocaldRzdGY",0,  0);
    transformation->SetParams(0,0.3,0,&fpar);
    kalmanFit->AddCalibration(transformation);
    sprintf(tname,"tTPClocalRzSectorSideC_Sin%d",i);
    transformation = new AliTPCTransformation(tname, AliTPCTransformation::BitsSide(1), "TPClocaldRzdGX","TPClocaldRzdGY",0,  0);
    transformation->SetParams(0,0.3,0,&fpar);
    kalmanFit->AddCalibration(transformation);
  }
}

void SelectPixel(){
  for (Int_t i=0;i<8;i++){
    kalmanFitNew->fLinearTrackDelta[i]->GetAxis(2)->SetRangeUser(-10,10);
    kalmanFitOrig->fLinearTrackDelta[i]->GetAxis(2)->SetRangeUser(-10,10);
    kalmanFitNew->fLinearTrackDelta[i]->GetAxis(3)->SetRangeUser(-15,15);
    kalmanFitOrig->fLinearTrackDelta[i]->GetAxis(3)->SetRangeUser(-15,15);
  }
}

void SelectNonPixelA(){
  for (Int_t i=0;i<8;i++){
    kalmanFitNew->fLinearTrackDelta[i]->GetAxis(2)->SetRangeUser(10,250);
    kalmanFitOrig->fLinearTrackDelta[i]->GetAxis(2)->SetRangeUser(10,250);
    kalmanFitNew->fLinearTrackDelta[i]->GetAxis(3)->SetRangeUser(0,250);
    kalmanFitOrig->fLinearTrackDelta[i]->GetAxis(3)->SetRangeUser(0,250);
  }
}

void SelectNonPixelC(){
  for (Int_t i=0;i<8;i++){
    kalmanFitNew->fLinearTrackDelta[i]->GetAxis(2)->SetRangeUser(10,250);
    kalmanFitOrig->fLinearTrackDelta[i]->GetAxis(2)->SetRangeUser(10,250);
    kalmanFitNew->fLinearTrackDelta[i]->GetAxis(3)->SetRangeUser(-250,0);
    kalmanFitOrig->fLinearTrackDelta[i]->GetAxis(3)->SetRangeUser(-250,0);
  }
}


void DumpQA1D(  TObjArray &arrayOut){
  //
  // 
  // 
  TF1 fg("fg","gaus");
  TMatrixD sideARMS(8,2);
  TMatrixD sideCRMS(8,2);
  TMatrixD sideACRMS(8,2);
  TH1 *his=0;
  //
  // A side
  //
  SelectNonPixelA();
  for (Int_t i=0; i<8;i++){
    his = kalmanFitOrig->fLinearTrackDelta[i]->Projection(0);
    his->Fit(&fg,"","", -0.15,0.15);
    sideARMS(i,0) = fg.GetParameter(2);
    his->SetDirectory(0);
    his->SetName(Form("Original SideA_%s",his->GetName()));
    his->SetTitle(Form("Original SideA_%s",his->GetTitle()));
    arrayOut.AddLast(his);
    his = kalmanFitNew->fLinearTrackDelta[i]->Projection(0);
    his->Fit(&fg,"","", -0.15,0.15);
    sideARMS(i,1) = fg.GetParameter(2);
    his->SetDirectory(0);
    his->SetName(Form("Aligned SideA_%s",his->GetName()));
    his->SetTitle(Form("Aligned SideA_%s",his->GetTitle()));
    arrayOut.AddLast(his);
  }
  //
  // C side
  //
  SelectNonPixelC();
  for (Int_t i=0; i<8;i++){
    his = kalmanFitOrig->fLinearTrackDelta[i]->Projection(0);
    his->Fit(&fg,"","", -0.15,0.15);
    sideCRMS(i,0) = fg.GetParameter(2);
    his->SetDirectory(0);
    his->SetName(Form("Original SideC_%s",his->GetName()));
    his->SetTitle(Form("Original SideC_%s",his->GetTitle()));
    arrayOut.AddLast(his);
    his = kalmanFitNew->fLinearTrackDelta[i]->Projection(0);
    his->Fit(&fg,"","", -0.15,0.15);
    sideCRMS(i,1) = fg.GetParameter(2);
    his->SetDirectory(0);
    his->SetName(Form("Aligned SideC_%s",his->GetName()));
    his->SetTitle(Form("Aligned SideC_%s",his->GetTitle()));
    arrayOut.AddLast(his);
  }
  //
  // AC side
  //
  SelectPixel();
  for (Int_t i=0; i<8;i++){
    his = kalmanFitOrig->fLinearTrackDelta[i]->Projection(0);
    his->Fit(&fg,"","", -0.15,0.15);
    sideACRMS(i,0) = fg.GetParameter(2);
    his->SetDirectory(0);
    his->SetName(Form("Original SideAC_%s",his->GetName()));
    his->SetTitle(Form("Original SideAC_%s",his->GetTitle()));
    arrayOut.AddLast(his);
    his = kalmanFitNew->fLinearTrackDelta[i]->Projection(0);
    his->Fit(&fg,"","", -0.15,0.15);
    sideACRMS(i,1) = fg.GetParameter(2);
    his->SetDirectory(0);
    his->SetName(Form("Aligned SideC_%s",his->GetName()));
    his->SetTitle(Form("Aligned SideC_%s",his->GetTitle()));
    arrayOut.AddLast(his);
  }
  printf("DumQA\n");
  sideARMS.Print();
  sideCRMS.Print();
  sideACRMS.Print();
}

void MakeFolders(TObjArray * arrayOut){
  //
  //
  //
  TFolder *folderBase = new TFolder("TPC align","TPC align");
  //
  //
  TString maskDelta[8];
  TString maskAlign[2]={"Orig","Alig");
  for (Int_t i=0; i<8;i++){
    maskDelta[i] = kalmanFitNew->fLinearTrackDelta[i]->GetName();
  }
  
  Int_t entries = arrayOut->GetEntries();
  //
}




void MergeKalman(const char * list = "kalmanFit.list"){
  //
  //
  //
  ifstream in;
  in.open(list);
  TString currentFile;
  kalmanFitNew= 0;
  Int_t counter=0;
  while(in.good()) {
    //
    // calibrated
    //
    in >> currentFile;    
    printf("%d\t%d\t%s\n", counter,currentFile.Length(),currentFile.Data());
    if (currentFile.Length()==0) continue;
    TFile * ffit = TFile::Open(currentFile.Data());
    TEntryList * tlist = (TEntryList*) ffit->Get("eventList");
    TMatrixD * cMatrix = (TMatrixD*) ffit->Get("cutMarix");
    if (tlist&&cMatrix){
      printf("Track entries=%d\n",tlist->GetN());
      if (cMatrix->Sum()<=0.00000001) {
	printf("Problem with track selection\n");
	continue;
      }
    }else{
      printf("Problem with track selection\n");
      continue;
    }
    //

    AliTPCkalmanFit * fit = ( AliTPCkalmanFit *)ffit->Get("kalmanFit");
    if (!fit) continue;
    if (!kalmanFitNew) {kalmanFitNew= fit; continue;};
    kalmanFitNew->Add(fit);
    printf("Selected entries=%f\n",fit->fLinearTrackDelta[0]->GetEntries());
    //delete tlist;
    //delete cMatrix;
    delete fit;
    delete ffit;
    //
    // original
    //
    currentFile.ReplaceAll("TPC","TPCOrig");
    printf("%d\t%d\t%s\n", counter,currentFile.Length(),currentFile.Data());
    if (currentFile.Length()==0) continue;
    ffit = TFile::Open(currentFile.Data());
    fit = ( AliTPCkalmanFit *)ffit->Get("kalmanFitOrig");
    if (!fit) continue;
    if (!kalmanFitOrig) {kalmanFitOrig= fit; continue;};
    kalmanFitOrig->Add(fit);
    delete fit;
    delete ffit;
    counter++;
  }
  //
  // save merged results
  //
  TFile f("mergeKalmanFit.root","recreate");
  kalmanFitNew->Write("kalmanFitNew");
  kalmanFitOrig->Write("kalmanFitOrig");
  f.Close();
}



/*
  Example - submit alignment as batch jobs
  ifile=0; 
  ntracksSkip=200
  ntracksSkipOffset=0
  nclustersSkip=2
  nclustersSkipOffset=0
  ntracks=1000000
  ndump=5
  isTest=0
  bDir=`pwd`
  ver=aaa;

  while [ $ntracksSkipOffset -lt $ntracksSkip ] ; do
    nclustersSkipOffset=0;
    while [ $nclustersSkipOffset -lt $nclustersSkip ] ; do
      echo Tr $ntracksSkipOffset  Cl $nclustersSkipOffset;     
      ver=kalmanDirTrack$ntracksSkipOffset$nclustersSkipOffset
      echo New Directory $ver
      mkdir $ver; 
      cd $ver; 
      cp $bDir/align.txt . ;  
      ln -sf $bDir/kalmanFitApply.root . ;
      echo  aliroot  -q -b  "$ALICE_ROOT/TPC/CalibMacros/CalibAlignKalman.C($ntracks,10000,0,$ndump,$ntracksSkip,$ntracksSkipOffset, $nclustersSkip,$nclustersSkipOffset,$isTest)" ; 
      bsub -q alice-t3_8h -o `pwd`/output.log command aliroot  -q -b  "$ALICE_ROOT/TPC/CalibMacros/CalibAlignKalman.C($ntracks,10000,0,$ndump,$ntracksSkip,$ntracksSkipOffset, $nclustersSkip,$nclustersSkipOffset,$isTest)"  ; 
      nclustersSkipOffset=$(( $nclustersSkipOffset + 1 ))
      cd $bDir; 
      echo $bDir; 
    done;
    cd $bDir; 
    echo $bDir; 
    ntracksSkipOffset=$(( $ntracksSkipOffset + 1 ))
    echo Tr $ntracksSkipOffset;   
done



*/











 CalibAlignKalman.C:1
 CalibAlignKalman.C:2
 CalibAlignKalman.C:3
 CalibAlignKalman.C:4
 CalibAlignKalman.C:5
 CalibAlignKalman.C:6
 CalibAlignKalman.C:7
 CalibAlignKalman.C:8
 CalibAlignKalman.C:9
 CalibAlignKalman.C:10
 CalibAlignKalman.C:11
 CalibAlignKalman.C:12
 CalibAlignKalman.C:13
 CalibAlignKalman.C:14
 CalibAlignKalman.C:15
 CalibAlignKalman.C:16
 CalibAlignKalman.C:17
 CalibAlignKalman.C:18
 CalibAlignKalman.C:19
 CalibAlignKalman.C:20
 CalibAlignKalman.C:21
 CalibAlignKalman.C:22
 CalibAlignKalman.C:23
 CalibAlignKalman.C:24
 CalibAlignKalman.C:25
 CalibAlignKalman.C:26
 CalibAlignKalman.C:27
 CalibAlignKalman.C:28
 CalibAlignKalman.C:29
 CalibAlignKalman.C:30
 CalibAlignKalman.C:31
 CalibAlignKalman.C:32
 CalibAlignKalman.C:33
 CalibAlignKalman.C:34
 CalibAlignKalman.C:35
 CalibAlignKalman.C:36
 CalibAlignKalman.C:37
 CalibAlignKalman.C:38
 CalibAlignKalman.C:39
 CalibAlignKalman.C:40
 CalibAlignKalman.C:41
 CalibAlignKalman.C:42
 CalibAlignKalman.C:43
 CalibAlignKalman.C:44
 CalibAlignKalman.C:45
 CalibAlignKalman.C:46
 CalibAlignKalman.C:47
 CalibAlignKalman.C:48
 CalibAlignKalman.C:49
 CalibAlignKalman.C:50
 CalibAlignKalman.C:51
 CalibAlignKalman.C:52
 CalibAlignKalman.C:53
 CalibAlignKalman.C:54
 CalibAlignKalman.C:55
 CalibAlignKalman.C:56
 CalibAlignKalman.C:57
 CalibAlignKalman.C:58
 CalibAlignKalman.C:59
 CalibAlignKalman.C:60
 CalibAlignKalman.C:61
 CalibAlignKalman.C:62
 CalibAlignKalman.C:63
 CalibAlignKalman.C:64
 CalibAlignKalman.C:65
 CalibAlignKalman.C:66
 CalibAlignKalman.C:67
 CalibAlignKalman.C:68
 CalibAlignKalman.C:69
 CalibAlignKalman.C:70
 CalibAlignKalman.C:71
 CalibAlignKalman.C:72
 CalibAlignKalman.C:73
 CalibAlignKalman.C:74
 CalibAlignKalman.C:75
 CalibAlignKalman.C:76
 CalibAlignKalman.C:77
 CalibAlignKalman.C:78
 CalibAlignKalman.C:79
 CalibAlignKalman.C:80
 CalibAlignKalman.C:81
 CalibAlignKalman.C:82
 CalibAlignKalman.C:83
 CalibAlignKalman.C:84
 CalibAlignKalman.C:85
 CalibAlignKalman.C:86
 CalibAlignKalman.C:87
 CalibAlignKalman.C:88
 CalibAlignKalman.C:89
 CalibAlignKalman.C:90
 CalibAlignKalman.C:91
 CalibAlignKalman.C:92
 CalibAlignKalman.C:93
 CalibAlignKalman.C:94
 CalibAlignKalman.C:95
 CalibAlignKalman.C:96
 CalibAlignKalman.C:97
 CalibAlignKalman.C:98
 CalibAlignKalman.C:99
 CalibAlignKalman.C:100
 CalibAlignKalman.C:101
 CalibAlignKalman.C:102
 CalibAlignKalman.C:103
 CalibAlignKalman.C:104
 CalibAlignKalman.C:105
 CalibAlignKalman.C:106
 CalibAlignKalman.C:107
 CalibAlignKalman.C:108
 CalibAlignKalman.C:109
 CalibAlignKalman.C:110
 CalibAlignKalman.C:111
 CalibAlignKalman.C:112
 CalibAlignKalman.C:113
 CalibAlignKalman.C:114
 CalibAlignKalman.C:115
 CalibAlignKalman.C:116
 CalibAlignKalman.C:117
 CalibAlignKalman.C:118
 CalibAlignKalman.C:119
 CalibAlignKalman.C:120
 CalibAlignKalman.C:121
 CalibAlignKalman.C:122
 CalibAlignKalman.C:123
 CalibAlignKalman.C:124
 CalibAlignKalman.C:125
 CalibAlignKalman.C:126
 CalibAlignKalman.C:127
 CalibAlignKalman.C:128
 CalibAlignKalman.C:129
 CalibAlignKalman.C:130
 CalibAlignKalman.C:131
 CalibAlignKalman.C:132
 CalibAlignKalman.C:133
 CalibAlignKalman.C:134
 CalibAlignKalman.C:135
 CalibAlignKalman.C:136
 CalibAlignKalman.C:137
 CalibAlignKalman.C:138
 CalibAlignKalman.C:139
 CalibAlignKalman.C:140
 CalibAlignKalman.C:141
 CalibAlignKalman.C:142
 CalibAlignKalman.C:143
 CalibAlignKalman.C:144
 CalibAlignKalman.C:145
 CalibAlignKalman.C:146
 CalibAlignKalman.C:147
 CalibAlignKalman.C:148
 CalibAlignKalman.C:149
 CalibAlignKalman.C:150
 CalibAlignKalman.C:151
 CalibAlignKalman.C:152
 CalibAlignKalman.C:153
 CalibAlignKalman.C:154
 CalibAlignKalman.C:155
 CalibAlignKalman.C:156
 CalibAlignKalman.C:157
 CalibAlignKalman.C:158
 CalibAlignKalman.C:159
 CalibAlignKalman.C:160
 CalibAlignKalman.C:161
 CalibAlignKalman.C:162
 CalibAlignKalman.C:163
 CalibAlignKalman.C:164
 CalibAlignKalman.C:165
 CalibAlignKalman.C:166
 CalibAlignKalman.C:167
 CalibAlignKalman.C:168
 CalibAlignKalman.C:169
 CalibAlignKalman.C:170
 CalibAlignKalman.C:171
 CalibAlignKalman.C:172
 CalibAlignKalman.C:173
 CalibAlignKalman.C:174
 CalibAlignKalman.C:175
 CalibAlignKalman.C:176
 CalibAlignKalman.C:177
 CalibAlignKalman.C:178
 CalibAlignKalman.C:179
 CalibAlignKalman.C:180
 CalibAlignKalman.C:181
 CalibAlignKalman.C:182
 CalibAlignKalman.C:183
 CalibAlignKalman.C:184
 CalibAlignKalman.C:185
 CalibAlignKalman.C:186
 CalibAlignKalman.C:187
 CalibAlignKalman.C:188
 CalibAlignKalman.C:189
 CalibAlignKalman.C:190
 CalibAlignKalman.C:191
 CalibAlignKalman.C:192
 CalibAlignKalman.C:193
 CalibAlignKalman.C:194
 CalibAlignKalman.C:195
 CalibAlignKalman.C:196
 CalibAlignKalman.C:197
 CalibAlignKalman.C:198
 CalibAlignKalman.C:199
 CalibAlignKalman.C:200
 CalibAlignKalman.C:201
 CalibAlignKalman.C:202
 CalibAlignKalman.C:203
 CalibAlignKalman.C:204
 CalibAlignKalman.C:205
 CalibAlignKalman.C:206
 CalibAlignKalman.C:207
 CalibAlignKalman.C:208
 CalibAlignKalman.C:209
 CalibAlignKalman.C:210
 CalibAlignKalman.C:211
 CalibAlignKalman.C:212
 CalibAlignKalman.C:213
 CalibAlignKalman.C:214
 CalibAlignKalman.C:215
 CalibAlignKalman.C:216
 CalibAlignKalman.C:217
 CalibAlignKalman.C:218
 CalibAlignKalman.C:219
 CalibAlignKalman.C:220
 CalibAlignKalman.C:221
 CalibAlignKalman.C:222
 CalibAlignKalman.C:223
 CalibAlignKalman.C:224
 CalibAlignKalman.C:225
 CalibAlignKalman.C:226
 CalibAlignKalman.C:227
 CalibAlignKalman.C:228
 CalibAlignKalman.C:229
 CalibAlignKalman.C:230
 CalibAlignKalman.C:231
 CalibAlignKalman.C:232
 CalibAlignKalman.C:233
 CalibAlignKalman.C:234
 CalibAlignKalman.C:235
 CalibAlignKalman.C:236
 CalibAlignKalman.C:237
 CalibAlignKalman.C:238
 CalibAlignKalman.C:239
 CalibAlignKalman.C:240
 CalibAlignKalman.C:241
 CalibAlignKalman.C:242
 CalibAlignKalman.C:243
 CalibAlignKalman.C:244
 CalibAlignKalman.C:245
 CalibAlignKalman.C:246
 CalibAlignKalman.C:247
 CalibAlignKalman.C:248
 CalibAlignKalman.C:249
 CalibAlignKalman.C:250
 CalibAlignKalman.C:251
 CalibAlignKalman.C:252
 CalibAlignKalman.C:253
 CalibAlignKalman.C:254
 CalibAlignKalman.C:255
 CalibAlignKalman.C:256
 CalibAlignKalman.C:257
 CalibAlignKalman.C:258
 CalibAlignKalman.C:259
 CalibAlignKalman.C:260
 CalibAlignKalman.C:261
 CalibAlignKalman.C:262
 CalibAlignKalman.C:263
 CalibAlignKalman.C:264
 CalibAlignKalman.C:265
 CalibAlignKalman.C:266
 CalibAlignKalman.C:267
 CalibAlignKalman.C:268
 CalibAlignKalman.C:269
 CalibAlignKalman.C:270
 CalibAlignKalman.C:271
 CalibAlignKalman.C:272
 CalibAlignKalman.C:273
 CalibAlignKalman.C:274
 CalibAlignKalman.C:275
 CalibAlignKalman.C:276
 CalibAlignKalman.C:277
 CalibAlignKalman.C:278
 CalibAlignKalman.C:279
 CalibAlignKalman.C:280
 CalibAlignKalman.C:281
 CalibAlignKalman.C:282
 CalibAlignKalman.C:283
 CalibAlignKalman.C:284
 CalibAlignKalman.C:285
 CalibAlignKalman.C:286
 CalibAlignKalman.C:287
 CalibAlignKalman.C:288
 CalibAlignKalman.C:289
 CalibAlignKalman.C:290
 CalibAlignKalman.C:291
 CalibAlignKalman.C:292
 CalibAlignKalman.C:293
 CalibAlignKalman.C:294
 CalibAlignKalman.C:295
 CalibAlignKalman.C:296
 CalibAlignKalman.C:297
 CalibAlignKalman.C:298
 CalibAlignKalman.C:299
 CalibAlignKalman.C:300
 CalibAlignKalman.C:301
 CalibAlignKalman.C:302
 CalibAlignKalman.C:303
 CalibAlignKalman.C:304
 CalibAlignKalman.C:305
 CalibAlignKalman.C:306
 CalibAlignKalman.C:307
 CalibAlignKalman.C:308
 CalibAlignKalman.C:309
 CalibAlignKalman.C:310
 CalibAlignKalman.C:311
 CalibAlignKalman.C:312
 CalibAlignKalman.C:313
 CalibAlignKalman.C:314
 CalibAlignKalman.C:315
 CalibAlignKalman.C:316
 CalibAlignKalman.C:317
 CalibAlignKalman.C:318
 CalibAlignKalman.C:319
 CalibAlignKalman.C:320
 CalibAlignKalman.C:321
 CalibAlignKalman.C:322
 CalibAlignKalman.C:323
 CalibAlignKalman.C:324
 CalibAlignKalman.C:325
 CalibAlignKalman.C:326
 CalibAlignKalman.C:327
 CalibAlignKalman.C:328
 CalibAlignKalman.C:329
 CalibAlignKalman.C:330
 CalibAlignKalman.C:331
 CalibAlignKalman.C:332
 CalibAlignKalman.C:333
 CalibAlignKalman.C:334
 CalibAlignKalman.C:335
 CalibAlignKalman.C:336
 CalibAlignKalman.C:337
 CalibAlignKalman.C:338
 CalibAlignKalman.C:339
 CalibAlignKalman.C:340
 CalibAlignKalman.C:341
 CalibAlignKalman.C:342
 CalibAlignKalman.C:343
 CalibAlignKalman.C:344
 CalibAlignKalman.C:345
 CalibAlignKalman.C:346
 CalibAlignKalman.C:347
 CalibAlignKalman.C:348
 CalibAlignKalman.C:349
 CalibAlignKalman.C:350
 CalibAlignKalman.C:351
 CalibAlignKalman.C:352
 CalibAlignKalman.C:353
 CalibAlignKalman.C:354
 CalibAlignKalman.C:355
 CalibAlignKalman.C:356
 CalibAlignKalman.C:357
 CalibAlignKalman.C:358
 CalibAlignKalman.C:359
 CalibAlignKalman.C:360
 CalibAlignKalman.C:361
 CalibAlignKalman.C:362
 CalibAlignKalman.C:363
 CalibAlignKalman.C:364
 CalibAlignKalman.C:365
 CalibAlignKalman.C:366
 CalibAlignKalman.C:367
 CalibAlignKalman.C:368
 CalibAlignKalman.C:369
 CalibAlignKalman.C:370
 CalibAlignKalman.C:371
 CalibAlignKalman.C:372
 CalibAlignKalman.C:373
 CalibAlignKalman.C:374
 CalibAlignKalman.C:375
 CalibAlignKalman.C:376
 CalibAlignKalman.C:377
 CalibAlignKalman.C:378
 CalibAlignKalman.C:379
 CalibAlignKalman.C:380
 CalibAlignKalman.C:381
 CalibAlignKalman.C:382
 CalibAlignKalman.C:383
 CalibAlignKalman.C:384
 CalibAlignKalman.C:385
 CalibAlignKalman.C:386
 CalibAlignKalman.C:387
 CalibAlignKalman.C:388
 CalibAlignKalman.C:389
 CalibAlignKalman.C:390
 CalibAlignKalman.C:391
 CalibAlignKalman.C:392
 CalibAlignKalman.C:393
 CalibAlignKalman.C:394
 CalibAlignKalman.C:395
 CalibAlignKalman.C:396
 CalibAlignKalman.C:397
 CalibAlignKalman.C:398
 CalibAlignKalman.C:399
 CalibAlignKalman.C:400
 CalibAlignKalman.C:401
 CalibAlignKalman.C:402
 CalibAlignKalman.C:403
 CalibAlignKalman.C:404
 CalibAlignKalman.C:405
 CalibAlignKalman.C:406
 CalibAlignKalman.C:407
 CalibAlignKalman.C:408
 CalibAlignKalman.C:409
 CalibAlignKalman.C:410
 CalibAlignKalman.C:411
 CalibAlignKalman.C:412
 CalibAlignKalman.C:413
 CalibAlignKalman.C:414
 CalibAlignKalman.C:415
 CalibAlignKalman.C:416
 CalibAlignKalman.C:417
 CalibAlignKalman.C:418
 CalibAlignKalman.C:419
 CalibAlignKalman.C:420
 CalibAlignKalman.C:421
 CalibAlignKalman.C:422
 CalibAlignKalman.C:423
 CalibAlignKalman.C:424
 CalibAlignKalman.C:425
 CalibAlignKalman.C:426
 CalibAlignKalman.C:427
 CalibAlignKalman.C:428
 CalibAlignKalman.C:429
 CalibAlignKalman.C:430
 CalibAlignKalman.C:431
 CalibAlignKalman.C:432
 CalibAlignKalman.C:433
 CalibAlignKalman.C:434
 CalibAlignKalman.C:435
 CalibAlignKalman.C:436
 CalibAlignKalman.C:437
 CalibAlignKalman.C:438
 CalibAlignKalman.C:439
 CalibAlignKalman.C:440
 CalibAlignKalman.C:441
 CalibAlignKalman.C:442
 CalibAlignKalman.C:443
 CalibAlignKalman.C:444
 CalibAlignKalman.C:445
 CalibAlignKalman.C:446
 CalibAlignKalman.C:447
 CalibAlignKalman.C:448
 CalibAlignKalman.C:449
 CalibAlignKalman.C:450
 CalibAlignKalman.C:451
 CalibAlignKalman.C:452
 CalibAlignKalman.C:453
 CalibAlignKalman.C:454
 CalibAlignKalman.C:455
 CalibAlignKalman.C:456
 CalibAlignKalman.C:457
 CalibAlignKalman.C:458
 CalibAlignKalman.C:459
 CalibAlignKalman.C:460
 CalibAlignKalman.C:461
 CalibAlignKalman.C:462
 CalibAlignKalman.C:463
 CalibAlignKalman.C:464
 CalibAlignKalman.C:465
 CalibAlignKalman.C:466
 CalibAlignKalman.C:467
 CalibAlignKalman.C:468
 CalibAlignKalman.C:469
 CalibAlignKalman.C:470
 CalibAlignKalman.C:471
 CalibAlignKalman.C:472
 CalibAlignKalman.C:473
 CalibAlignKalman.C:474
 CalibAlignKalman.C:475
 CalibAlignKalman.C:476
 CalibAlignKalman.C:477
 CalibAlignKalman.C:478
 CalibAlignKalman.C:479
 CalibAlignKalman.C:480
 CalibAlignKalman.C:481
 CalibAlignKalman.C:482
 CalibAlignKalman.C:483
 CalibAlignKalman.C:484
 CalibAlignKalman.C:485
 CalibAlignKalman.C:486
 CalibAlignKalman.C:487
 CalibAlignKalman.C:488
 CalibAlignKalman.C:489
 CalibAlignKalman.C:490
 CalibAlignKalman.C:491
 CalibAlignKalman.C:492
 CalibAlignKalman.C:493
 CalibAlignKalman.C:494
 CalibAlignKalman.C:495
 CalibAlignKalman.C:496
 CalibAlignKalman.C:497
 CalibAlignKalman.C:498
 CalibAlignKalman.C:499
 CalibAlignKalman.C:500
 CalibAlignKalman.C:501
 CalibAlignKalman.C:502
 CalibAlignKalman.C:503
 CalibAlignKalman.C:504
 CalibAlignKalman.C:505
 CalibAlignKalman.C:506
 CalibAlignKalman.C:507
 CalibAlignKalman.C:508
 CalibAlignKalman.C:509
 CalibAlignKalman.C:510
 CalibAlignKalman.C:511
 CalibAlignKalman.C:512
 CalibAlignKalman.C:513
 CalibAlignKalman.C:514
 CalibAlignKalman.C:515
 CalibAlignKalman.C:516
 CalibAlignKalman.C:517
 CalibAlignKalman.C:518
 CalibAlignKalman.C:519
 CalibAlignKalman.C:520
 CalibAlignKalman.C:521
 CalibAlignKalman.C:522
 CalibAlignKalman.C:523
 CalibAlignKalman.C:524
 CalibAlignKalman.C:525
 CalibAlignKalman.C:526
 CalibAlignKalman.C:527
 CalibAlignKalman.C:528
 CalibAlignKalman.C:529
 CalibAlignKalman.C:530
 CalibAlignKalman.C:531
 CalibAlignKalman.C:532
 CalibAlignKalman.C:533
 CalibAlignKalman.C:534
 CalibAlignKalman.C:535
 CalibAlignKalman.C:536
 CalibAlignKalman.C:537
 CalibAlignKalman.C:538
 CalibAlignKalman.C:539
 CalibAlignKalman.C:540
 CalibAlignKalman.C:541
 CalibAlignKalman.C:542
 CalibAlignKalman.C:543
 CalibAlignKalman.C:544
 CalibAlignKalman.C:545
 CalibAlignKalman.C:546
 CalibAlignKalman.C:547
 CalibAlignKalman.C:548
 CalibAlignKalman.C:549
 CalibAlignKalman.C:550
 CalibAlignKalman.C:551
 CalibAlignKalman.C:552
 CalibAlignKalman.C:553
 CalibAlignKalman.C:554
 CalibAlignKalman.C:555
 CalibAlignKalman.C:556
 CalibAlignKalman.C:557
 CalibAlignKalman.C:558
 CalibAlignKalman.C:559
 CalibAlignKalman.C:560
 CalibAlignKalman.C:561
 CalibAlignKalman.C:562
 CalibAlignKalman.C:563
 CalibAlignKalman.C:564
 CalibAlignKalman.C:565
 CalibAlignKalman.C:566
 CalibAlignKalman.C:567
 CalibAlignKalman.C:568
 CalibAlignKalman.C:569
 CalibAlignKalman.C:570
 CalibAlignKalman.C:571
 CalibAlignKalman.C:572
 CalibAlignKalman.C:573
 CalibAlignKalman.C:574
 CalibAlignKalman.C:575
 CalibAlignKalman.C:576
 CalibAlignKalman.C:577
 CalibAlignKalman.C:578
 CalibAlignKalman.C:579
 CalibAlignKalman.C:580
 CalibAlignKalman.C:581
 CalibAlignKalman.C:582
 CalibAlignKalman.C:583
 CalibAlignKalman.C:584
 CalibAlignKalman.C:585
 CalibAlignKalman.C:586
 CalibAlignKalman.C:587
 CalibAlignKalman.C:588
 CalibAlignKalman.C:589
 CalibAlignKalman.C:590
 CalibAlignKalman.C:591
 CalibAlignKalman.C:592
 CalibAlignKalman.C:593
 CalibAlignKalman.C:594
 CalibAlignKalman.C:595
 CalibAlignKalman.C:596
 CalibAlignKalman.C:597
 CalibAlignKalman.C:598
 CalibAlignKalman.C:599
 CalibAlignKalman.C:600
 CalibAlignKalman.C:601
 CalibAlignKalman.C:602
 CalibAlignKalman.C:603
 CalibAlignKalman.C:604
 CalibAlignKalman.C:605
 CalibAlignKalman.C:606
 CalibAlignKalman.C:607
 CalibAlignKalman.C:608
 CalibAlignKalman.C:609
 CalibAlignKalman.C:610
 CalibAlignKalman.C:611
 CalibAlignKalman.C:612
 CalibAlignKalman.C:613
 CalibAlignKalman.C:614
 CalibAlignKalman.C:615
 CalibAlignKalman.C:616
 CalibAlignKalman.C:617
 CalibAlignKalman.C:618
 CalibAlignKalman.C:619
 CalibAlignKalman.C:620
 CalibAlignKalman.C:621
 CalibAlignKalman.C:622
 CalibAlignKalman.C:623
 CalibAlignKalman.C:624
 CalibAlignKalman.C:625
 CalibAlignKalman.C:626
 CalibAlignKalman.C:627
 CalibAlignKalman.C:628
 CalibAlignKalman.C:629
 CalibAlignKalman.C:630
 CalibAlignKalman.C:631
 CalibAlignKalman.C:632
 CalibAlignKalman.C:633
 CalibAlignKalman.C:634
 CalibAlignKalman.C:635
 CalibAlignKalman.C:636
 CalibAlignKalman.C:637
 CalibAlignKalman.C:638
 CalibAlignKalman.C:639
 CalibAlignKalman.C:640
 CalibAlignKalman.C:641
 CalibAlignKalman.C:642
 CalibAlignKalman.C:643
 CalibAlignKalman.C:644
 CalibAlignKalman.C:645
 CalibAlignKalman.C:646
 CalibAlignKalman.C:647
 CalibAlignKalman.C:648
 CalibAlignKalman.C:649
 CalibAlignKalman.C:650
 CalibAlignKalman.C:651
 CalibAlignKalman.C:652
 CalibAlignKalman.C:653
 CalibAlignKalman.C:654
 CalibAlignKalman.C:655
 CalibAlignKalman.C:656
 CalibAlignKalman.C:657
 CalibAlignKalman.C:658
 CalibAlignKalman.C:659
 CalibAlignKalman.C:660
 CalibAlignKalman.C:661
 CalibAlignKalman.C:662
 CalibAlignKalman.C:663
 CalibAlignKalman.C:664
 CalibAlignKalman.C:665
 CalibAlignKalman.C:666
 CalibAlignKalman.C:667
 CalibAlignKalman.C:668
 CalibAlignKalman.C:669
 CalibAlignKalman.C:670
 CalibAlignKalman.C:671
 CalibAlignKalman.C:672
 CalibAlignKalman.C:673
 CalibAlignKalman.C:674
 CalibAlignKalman.C:675
 CalibAlignKalman.C:676
 CalibAlignKalman.C:677
 CalibAlignKalman.C:678
 CalibAlignKalman.C:679
 CalibAlignKalman.C:680
 CalibAlignKalman.C:681
 CalibAlignKalman.C:682
 CalibAlignKalman.C:683
 CalibAlignKalman.C:684
 CalibAlignKalman.C:685
 CalibAlignKalman.C:686
 CalibAlignKalman.C:687
 CalibAlignKalman.C:688
 CalibAlignKalman.C:689
 CalibAlignKalman.C:690
 CalibAlignKalman.C:691
 CalibAlignKalman.C:692
 CalibAlignKalman.C:693
 CalibAlignKalman.C:694
 CalibAlignKalman.C:695
 CalibAlignKalman.C:696
 CalibAlignKalman.C:697
 CalibAlignKalman.C:698
 CalibAlignKalman.C:699
 CalibAlignKalman.C:700
 CalibAlignKalman.C:701
 CalibAlignKalman.C:702
 CalibAlignKalman.C:703
 CalibAlignKalman.C:704
 CalibAlignKalman.C:705
 CalibAlignKalman.C:706
 CalibAlignKalman.C:707
 CalibAlignKalman.C:708
 CalibAlignKalman.C:709
 CalibAlignKalman.C:710
 CalibAlignKalman.C:711
 CalibAlignKalman.C:712
 CalibAlignKalman.C:713
 CalibAlignKalman.C:714
 CalibAlignKalman.C:715
 CalibAlignKalman.C:716
 CalibAlignKalman.C:717
 CalibAlignKalman.C:718
 CalibAlignKalman.C:719
 CalibAlignKalman.C:720
 CalibAlignKalman.C:721
 CalibAlignKalman.C:722
 CalibAlignKalman.C:723
 CalibAlignKalman.C:724
 CalibAlignKalman.C:725
 CalibAlignKalman.C:726
 CalibAlignKalman.C:727
 CalibAlignKalman.C:728
 CalibAlignKalman.C:729
 CalibAlignKalman.C:730
 CalibAlignKalman.C:731
 CalibAlignKalman.C:732
 CalibAlignKalman.C:733
 CalibAlignKalman.C:734
 CalibAlignKalman.C:735
 CalibAlignKalman.C:736
 CalibAlignKalman.C:737
 CalibAlignKalman.C:738
 CalibAlignKalman.C:739
 CalibAlignKalman.C:740
 CalibAlignKalman.C:741
 CalibAlignKalman.C:742
 CalibAlignKalman.C:743
 CalibAlignKalman.C:744
 CalibAlignKalman.C:745
 CalibAlignKalman.C:746
 CalibAlignKalman.C:747
 CalibAlignKalman.C:748
 CalibAlignKalman.C:749
 CalibAlignKalman.C:750
 CalibAlignKalman.C:751
 CalibAlignKalman.C:752
 CalibAlignKalman.C:753
 CalibAlignKalman.C:754
 CalibAlignKalman.C:755
 CalibAlignKalman.C:756
 CalibAlignKalman.C:757
 CalibAlignKalman.C:758
 CalibAlignKalman.C:759
 CalibAlignKalman.C:760
 CalibAlignKalman.C:761
 CalibAlignKalman.C:762
 CalibAlignKalman.C:763
 CalibAlignKalman.C:764
 CalibAlignKalman.C:765
 CalibAlignKalman.C:766
 CalibAlignKalman.C:767
 CalibAlignKalman.C:768
 CalibAlignKalman.C:769
 CalibAlignKalman.C:770
 CalibAlignKalman.C:771
 CalibAlignKalman.C:772
 CalibAlignKalman.C:773
 CalibAlignKalman.C:774
 CalibAlignKalman.C:775
 CalibAlignKalman.C:776
 CalibAlignKalman.C:777
 CalibAlignKalman.C:778
 CalibAlignKalman.C:779
 CalibAlignKalman.C:780
 CalibAlignKalman.C:781
 CalibAlignKalman.C:782
 CalibAlignKalman.C:783
 CalibAlignKalman.C:784
 CalibAlignKalman.C:785
 CalibAlignKalman.C:786
 CalibAlignKalman.C:787
 CalibAlignKalman.C:788
 CalibAlignKalman.C:789
 CalibAlignKalman.C:790
 CalibAlignKalman.C:791
 CalibAlignKalman.C:792
 CalibAlignKalman.C:793
 CalibAlignKalman.C:794
 CalibAlignKalman.C:795
 CalibAlignKalman.C:796
 CalibAlignKalman.C:797
 CalibAlignKalman.C:798
 CalibAlignKalman.C:799
 CalibAlignKalman.C:800
 CalibAlignKalman.C:801
 CalibAlignKalman.C:802
 CalibAlignKalman.C:803
 CalibAlignKalman.C:804
 CalibAlignKalman.C:805
 CalibAlignKalman.C:806
 CalibAlignKalman.C:807
 CalibAlignKalman.C:808
 CalibAlignKalman.C:809
 CalibAlignKalman.C:810
 CalibAlignKalman.C:811
 CalibAlignKalman.C:812
 CalibAlignKalman.C:813
 CalibAlignKalman.C:814
 CalibAlignKalman.C:815
 CalibAlignKalman.C:816
 CalibAlignKalman.C:817
 CalibAlignKalman.C:818
 CalibAlignKalman.C:819
 CalibAlignKalman.C:820
 CalibAlignKalman.C:821
 CalibAlignKalman.C:822
 CalibAlignKalman.C:823
 CalibAlignKalman.C:824
 CalibAlignKalman.C:825
 CalibAlignKalman.C:826
 CalibAlignKalman.C:827
 CalibAlignKalman.C:828
 CalibAlignKalman.C:829
 CalibAlignKalman.C:830
 CalibAlignKalman.C:831
 CalibAlignKalman.C:832
 CalibAlignKalman.C:833
 CalibAlignKalman.C:834
 CalibAlignKalman.C:835
 CalibAlignKalman.C:836
 CalibAlignKalman.C:837
 CalibAlignKalman.C:838
 CalibAlignKalman.C:839
 CalibAlignKalman.C:840
 CalibAlignKalman.C:841
 CalibAlignKalman.C:842
 CalibAlignKalman.C:843
 CalibAlignKalman.C:844
 CalibAlignKalman.C:845
 CalibAlignKalman.C:846
 CalibAlignKalman.C:847
 CalibAlignKalman.C:848
 CalibAlignKalman.C:849
 CalibAlignKalman.C:850
 CalibAlignKalman.C:851
 CalibAlignKalman.C:852
 CalibAlignKalman.C:853
 CalibAlignKalman.C:854
 CalibAlignKalman.C:855
 CalibAlignKalman.C:856
 CalibAlignKalman.C:857
 CalibAlignKalman.C:858
 CalibAlignKalman.C:859
 CalibAlignKalman.C:860
 CalibAlignKalman.C:861
 CalibAlignKalman.C:862
 CalibAlignKalman.C:863
 CalibAlignKalman.C:864
 CalibAlignKalman.C:865
 CalibAlignKalman.C:866
 CalibAlignKalman.C:867
 CalibAlignKalman.C:868
 CalibAlignKalman.C:869
 CalibAlignKalman.C:870
 CalibAlignKalman.C:871
 CalibAlignKalman.C:872
 CalibAlignKalman.C:873
 CalibAlignKalman.C:874
 CalibAlignKalman.C:875
 CalibAlignKalman.C:876
 CalibAlignKalman.C:877
 CalibAlignKalman.C:878
 CalibAlignKalman.C:879
 CalibAlignKalman.C:880
 CalibAlignKalman.C:881
 CalibAlignKalman.C:882
 CalibAlignKalman.C:883
 CalibAlignKalman.C:884
 CalibAlignKalman.C:885
 CalibAlignKalman.C:886
 CalibAlignKalman.C:887
 CalibAlignKalman.C:888
 CalibAlignKalman.C:889
 CalibAlignKalman.C:890
 CalibAlignKalman.C:891
 CalibAlignKalman.C:892
 CalibAlignKalman.C:893
 CalibAlignKalman.C:894
 CalibAlignKalman.C:895
 CalibAlignKalman.C:896
 CalibAlignKalman.C:897
 CalibAlignKalman.C:898
 CalibAlignKalman.C:899
 CalibAlignKalman.C:900
 CalibAlignKalman.C:901
 CalibAlignKalman.C:902
 CalibAlignKalman.C:903
 CalibAlignKalman.C:904
 CalibAlignKalman.C:905
 CalibAlignKalman.C:906
 CalibAlignKalman.C:907
 CalibAlignKalman.C:908
 CalibAlignKalman.C:909
 CalibAlignKalman.C:910
 CalibAlignKalman.C:911
 CalibAlignKalman.C:912
 CalibAlignKalman.C:913
 CalibAlignKalman.C:914
 CalibAlignKalman.C:915
 CalibAlignKalman.C:916
 CalibAlignKalman.C:917
 CalibAlignKalman.C:918
 CalibAlignKalman.C:919
 CalibAlignKalman.C:920
 CalibAlignKalman.C:921
 CalibAlignKalman.C:922
 CalibAlignKalman.C:923
 CalibAlignKalman.C:924
 CalibAlignKalman.C:925
 CalibAlignKalman.C:926
 CalibAlignKalman.C:927
 CalibAlignKalman.C:928
 CalibAlignKalman.C:929
 CalibAlignKalman.C:930
 CalibAlignKalman.C:931
 CalibAlignKalman.C:932
 CalibAlignKalman.C:933
 CalibAlignKalman.C:934
 CalibAlignKalman.C:935
 CalibAlignKalman.C:936
 CalibAlignKalman.C:937
 CalibAlignKalman.C:938
 CalibAlignKalman.C:939
 CalibAlignKalman.C:940
 CalibAlignKalman.C:941
 CalibAlignKalman.C:942
 CalibAlignKalman.C:943
 CalibAlignKalman.C:944
 CalibAlignKalman.C:945
 CalibAlignKalman.C:946
 CalibAlignKalman.C:947
 CalibAlignKalman.C:948
 CalibAlignKalman.C:949
 CalibAlignKalman.C:950
 CalibAlignKalman.C:951
 CalibAlignKalman.C:952
 CalibAlignKalman.C:953
 CalibAlignKalman.C:954
 CalibAlignKalman.C:955
 CalibAlignKalman.C:956
 CalibAlignKalman.C:957
 CalibAlignKalman.C:958
 CalibAlignKalman.C:959
 CalibAlignKalman.C:960
 CalibAlignKalman.C:961
 CalibAlignKalman.C:962
 CalibAlignKalman.C:963
 CalibAlignKalman.C:964
 CalibAlignKalman.C:965
 CalibAlignKalman.C:966
 CalibAlignKalman.C:967
 CalibAlignKalman.C:968
 CalibAlignKalman.C:969
 CalibAlignKalman.C:970
 CalibAlignKalman.C:971
 CalibAlignKalman.C:972
 CalibAlignKalman.C:973
 CalibAlignKalman.C:974
 CalibAlignKalman.C:975
 CalibAlignKalman.C:976
 CalibAlignKalman.C:977
 CalibAlignKalman.C:978
 CalibAlignKalman.C:979
 CalibAlignKalman.C:980
 CalibAlignKalman.C:981
 CalibAlignKalman.C:982
 CalibAlignKalman.C:983
 CalibAlignKalman.C:984
 CalibAlignKalman.C:985
 CalibAlignKalman.C:986
 CalibAlignKalman.C:987
 CalibAlignKalman.C:988
 CalibAlignKalman.C:989
 CalibAlignKalman.C:990
 CalibAlignKalman.C:991
 CalibAlignKalman.C:992
 CalibAlignKalman.C:993
 CalibAlignKalman.C:994
 CalibAlignKalman.C:995
 CalibAlignKalman.C:996
 CalibAlignKalman.C:997
 CalibAlignKalman.C:998
 CalibAlignKalman.C:999
 CalibAlignKalman.C:1000
 CalibAlignKalman.C:1001
 CalibAlignKalman.C:1002
 CalibAlignKalman.C:1003
 CalibAlignKalman.C:1004
 CalibAlignKalman.C:1005
 CalibAlignKalman.C:1006
 CalibAlignKalman.C:1007
 CalibAlignKalman.C:1008
 CalibAlignKalman.C:1009
 CalibAlignKalman.C:1010
 CalibAlignKalman.C:1011
 CalibAlignKalman.C:1012
 CalibAlignKalman.C:1013
 CalibAlignKalman.C:1014
 CalibAlignKalman.C:1015
 CalibAlignKalman.C:1016
 CalibAlignKalman.C:1017
 CalibAlignKalman.C:1018
 CalibAlignKalman.C:1019
 CalibAlignKalman.C:1020
 CalibAlignKalman.C:1021
 CalibAlignKalman.C:1022
 CalibAlignKalman.C:1023
 CalibAlignKalman.C:1024
 CalibAlignKalman.C:1025
 CalibAlignKalman.C:1026
 CalibAlignKalman.C:1027
 CalibAlignKalman.C:1028
 CalibAlignKalman.C:1029
 CalibAlignKalman.C:1030
 CalibAlignKalman.C:1031
 CalibAlignKalman.C:1032
 CalibAlignKalman.C:1033
 CalibAlignKalman.C:1034
 CalibAlignKalman.C:1035
 CalibAlignKalman.C:1036
 CalibAlignKalman.C:1037
 CalibAlignKalman.C:1038
 CalibAlignKalman.C:1039
 CalibAlignKalman.C:1040
 CalibAlignKalman.C:1041
 CalibAlignKalman.C:1042
 CalibAlignKalman.C:1043
 CalibAlignKalman.C:1044
 CalibAlignKalman.C:1045
 CalibAlignKalman.C:1046
 CalibAlignKalman.C:1047
 CalibAlignKalman.C:1048
 CalibAlignKalman.C:1049
 CalibAlignKalman.C:1050
 CalibAlignKalman.C:1051
 CalibAlignKalman.C:1052
 CalibAlignKalman.C:1053
 CalibAlignKalman.C:1054
 CalibAlignKalman.C:1055
 CalibAlignKalman.C:1056
 CalibAlignKalman.C:1057
 CalibAlignKalman.C:1058
 CalibAlignKalman.C:1059
 CalibAlignKalman.C:1060
 CalibAlignKalman.C:1061
 CalibAlignKalman.C:1062
 CalibAlignKalman.C:1063
 CalibAlignKalman.C:1064
 CalibAlignKalman.C:1065
 CalibAlignKalman.C:1066
 CalibAlignKalman.C:1067
 CalibAlignKalman.C:1068
 CalibAlignKalman.C:1069
 CalibAlignKalman.C:1070
 CalibAlignKalman.C:1071
 CalibAlignKalman.C:1072
 CalibAlignKalman.C:1073
 CalibAlignKalman.C:1074
 CalibAlignKalman.C:1075
 CalibAlignKalman.C:1076
 CalibAlignKalman.C:1077
 CalibAlignKalman.C:1078
 CalibAlignKalman.C:1079
 CalibAlignKalman.C:1080
 CalibAlignKalman.C:1081
 CalibAlignKalman.C:1082
 CalibAlignKalman.C:1083
 CalibAlignKalman.C:1084
 CalibAlignKalman.C:1085
 CalibAlignKalman.C:1086
 CalibAlignKalman.C:1087
 CalibAlignKalman.C:1088
 CalibAlignKalman.C:1089
 CalibAlignKalman.C:1090
 CalibAlignKalman.C:1091
 CalibAlignKalman.C:1092
 CalibAlignKalman.C:1093
 CalibAlignKalman.C:1094
 CalibAlignKalman.C:1095
 CalibAlignKalman.C:1096
 CalibAlignKalman.C:1097
 CalibAlignKalman.C:1098
 CalibAlignKalman.C:1099
 CalibAlignKalman.C:1100
 CalibAlignKalman.C:1101
 CalibAlignKalman.C:1102
 CalibAlignKalman.C:1103
 CalibAlignKalman.C:1104
 CalibAlignKalman.C:1105
 CalibAlignKalman.C:1106
 CalibAlignKalman.C:1107
 CalibAlignKalman.C:1108
 CalibAlignKalman.C:1109
 CalibAlignKalman.C:1110
 CalibAlignKalman.C:1111
 CalibAlignKalman.C:1112
 CalibAlignKalman.C:1113
 CalibAlignKalman.C:1114
 CalibAlignKalman.C:1115
 CalibAlignKalman.C:1116
 CalibAlignKalman.C:1117
 CalibAlignKalman.C:1118
 CalibAlignKalman.C:1119
 CalibAlignKalman.C:1120
 CalibAlignKalman.C:1121
 CalibAlignKalman.C:1122
 CalibAlignKalman.C:1123
 CalibAlignKalman.C:1124
 CalibAlignKalman.C:1125
 CalibAlignKalman.C:1126
 CalibAlignKalman.C:1127
 CalibAlignKalman.C:1128
 CalibAlignKalman.C:1129
 CalibAlignKalman.C:1130
 CalibAlignKalman.C:1131
 CalibAlignKalman.C:1132
 CalibAlignKalman.C:1133
 CalibAlignKalman.C:1134
 CalibAlignKalman.C:1135
 CalibAlignKalman.C:1136
 CalibAlignKalman.C:1137
 CalibAlignKalman.C:1138
 CalibAlignKalman.C:1139
 CalibAlignKalman.C:1140
 CalibAlignKalman.C:1141
 CalibAlignKalman.C:1142
 CalibAlignKalman.C:1143
 CalibAlignKalman.C:1144
 CalibAlignKalman.C:1145
 CalibAlignKalman.C:1146
 CalibAlignKalman.C:1147
 CalibAlignKalman.C:1148
 CalibAlignKalman.C:1149
 CalibAlignKalman.C:1150
 CalibAlignKalman.C:1151
 CalibAlignKalman.C:1152
 CalibAlignKalman.C:1153
 CalibAlignKalman.C:1154
 CalibAlignKalman.C:1155
 CalibAlignKalman.C:1156
 CalibAlignKalman.C:1157
 CalibAlignKalman.C:1158
 CalibAlignKalman.C:1159
 CalibAlignKalman.C:1160
 CalibAlignKalman.C:1161
 CalibAlignKalman.C:1162
 CalibAlignKalman.C:1163
 CalibAlignKalman.C:1164
 CalibAlignKalman.C:1165
 CalibAlignKalman.C:1166
 CalibAlignKalman.C:1167
 CalibAlignKalman.C:1168
 CalibAlignKalman.C:1169
 CalibAlignKalman.C:1170
 CalibAlignKalman.C:1171
 CalibAlignKalman.C:1172
 CalibAlignKalman.C:1173
 CalibAlignKalman.C:1174
 CalibAlignKalman.C:1175
 CalibAlignKalman.C:1176
 CalibAlignKalman.C:1177
 CalibAlignKalman.C:1178
 CalibAlignKalman.C:1179
 CalibAlignKalman.C:1180
 CalibAlignKalman.C:1181
 CalibAlignKalman.C:1182
 CalibAlignKalman.C:1183
 CalibAlignKalman.C:1184
 CalibAlignKalman.C:1185
 CalibAlignKalman.C:1186
 CalibAlignKalman.C:1187
 CalibAlignKalman.C:1188
 CalibAlignKalman.C:1189
 CalibAlignKalman.C:1190
 CalibAlignKalman.C:1191
 CalibAlignKalman.C:1192
 CalibAlignKalman.C:1193
 CalibAlignKalman.C:1194
 CalibAlignKalman.C:1195
 CalibAlignKalman.C:1196
 CalibAlignKalman.C:1197
 CalibAlignKalman.C:1198
 CalibAlignKalman.C:1199
 CalibAlignKalman.C:1200
 CalibAlignKalman.C:1201
 CalibAlignKalman.C:1202
 CalibAlignKalman.C:1203
 CalibAlignKalman.C:1204
 CalibAlignKalman.C:1205
 CalibAlignKalman.C:1206
 CalibAlignKalman.C:1207
 CalibAlignKalman.C:1208
 CalibAlignKalman.C:1209
 CalibAlignKalman.C:1210
 CalibAlignKalman.C:1211
 CalibAlignKalman.C:1212
 CalibAlignKalman.C:1213
 CalibAlignKalman.C:1214
 CalibAlignKalman.C:1215
 CalibAlignKalman.C:1216
 CalibAlignKalman.C:1217
 CalibAlignKalman.C:1218
 CalibAlignKalman.C:1219
 CalibAlignKalman.C:1220
 CalibAlignKalman.C:1221
 CalibAlignKalman.C:1222
 CalibAlignKalman.C:1223
 CalibAlignKalman.C:1224
 CalibAlignKalman.C:1225
 CalibAlignKalman.C:1226
 CalibAlignKalman.C:1227
 CalibAlignKalman.C:1228
 CalibAlignKalman.C:1229
 CalibAlignKalman.C:1230
 CalibAlignKalman.C:1231
 CalibAlignKalman.C:1232
 CalibAlignKalman.C:1233
 CalibAlignKalman.C:1234
 CalibAlignKalman.C:1235
 CalibAlignKalman.C:1236
 CalibAlignKalman.C:1237
 CalibAlignKalman.C:1238
 CalibAlignKalman.C:1239
 CalibAlignKalman.C:1240
 CalibAlignKalman.C:1241
 CalibAlignKalman.C:1242
 CalibAlignKalman.C:1243
 CalibAlignKalman.C:1244
 CalibAlignKalman.C:1245
 CalibAlignKalman.C:1246
 CalibAlignKalman.C:1247
 CalibAlignKalman.C:1248
 CalibAlignKalman.C:1249
 CalibAlignKalman.C:1250
 CalibAlignKalman.C:1251
 CalibAlignKalman.C:1252
 CalibAlignKalman.C:1253
 CalibAlignKalman.C:1254
 CalibAlignKalman.C:1255
 CalibAlignKalman.C:1256
 CalibAlignKalman.C:1257
 CalibAlignKalman.C:1258
 CalibAlignKalman.C:1259
 CalibAlignKalman.C:1260
 CalibAlignKalman.C:1261
 CalibAlignKalman.C:1262
 CalibAlignKalman.C:1263
 CalibAlignKalman.C:1264
 CalibAlignKalman.C:1265
 CalibAlignKalman.C:1266
 CalibAlignKalman.C:1267
 CalibAlignKalman.C:1268
 CalibAlignKalman.C:1269
 CalibAlignKalman.C:1270
 CalibAlignKalman.C:1271
 CalibAlignKalman.C:1272
 CalibAlignKalman.C:1273
 CalibAlignKalman.C:1274
 CalibAlignKalman.C:1275
 CalibAlignKalman.C:1276
 CalibAlignKalman.C:1277
 CalibAlignKalman.C:1278
 CalibAlignKalman.C:1279
 CalibAlignKalman.C:1280
 CalibAlignKalman.C:1281
 CalibAlignKalman.C:1282
 CalibAlignKalman.C:1283
 CalibAlignKalman.C:1284
 CalibAlignKalman.C:1285
 CalibAlignKalman.C:1286
 CalibAlignKalman.C:1287
 CalibAlignKalman.C:1288
 CalibAlignKalman.C:1289
 CalibAlignKalman.C:1290
 CalibAlignKalman.C:1291
 CalibAlignKalman.C:1292
 CalibAlignKalman.C:1293
 CalibAlignKalman.C:1294
 CalibAlignKalman.C:1295
 CalibAlignKalman.C:1296
 CalibAlignKalman.C:1297
 CalibAlignKalman.C:1298
 CalibAlignKalman.C:1299
 CalibAlignKalman.C:1300
 CalibAlignKalman.C:1301
 CalibAlignKalman.C:1302
 CalibAlignKalman.C:1303
 CalibAlignKalman.C:1304
 CalibAlignKalman.C:1305
 CalibAlignKalman.C:1306
 CalibAlignKalman.C:1307
 CalibAlignKalman.C:1308
 CalibAlignKalman.C:1309
 CalibAlignKalman.C:1310
 CalibAlignKalman.C:1311
 CalibAlignKalman.C:1312
 CalibAlignKalman.C:1313
 CalibAlignKalman.C:1314
 CalibAlignKalman.C:1315
 CalibAlignKalman.C:1316
 CalibAlignKalman.C:1317
 CalibAlignKalman.C:1318
 CalibAlignKalman.C:1319
 CalibAlignKalman.C:1320
 CalibAlignKalman.C:1321
 CalibAlignKalman.C:1322
 CalibAlignKalman.C:1323
 CalibAlignKalman.C:1324
 CalibAlignKalman.C:1325
 CalibAlignKalman.C:1326
 CalibAlignKalman.C:1327
 CalibAlignKalman.C:1328
 CalibAlignKalman.C:1329
 CalibAlignKalman.C:1330
 CalibAlignKalman.C:1331
 CalibAlignKalman.C:1332
 CalibAlignKalman.C:1333
 CalibAlignKalman.C:1334
 CalibAlignKalman.C:1335
 CalibAlignKalman.C:1336
 CalibAlignKalman.C:1337
 CalibAlignKalman.C:1338
 CalibAlignKalman.C:1339
 CalibAlignKalman.C:1340
 CalibAlignKalman.C:1341
 CalibAlignKalman.C:1342
 CalibAlignKalman.C:1343
 CalibAlignKalman.C:1344
 CalibAlignKalman.C:1345
 CalibAlignKalman.C:1346
 CalibAlignKalman.C:1347
 CalibAlignKalman.C:1348
 CalibAlignKalman.C:1349
 CalibAlignKalman.C:1350
 CalibAlignKalman.C:1351
 CalibAlignKalman.C:1352
 CalibAlignKalman.C:1353
 CalibAlignKalman.C:1354
 CalibAlignKalman.C:1355
 CalibAlignKalman.C:1356
 CalibAlignKalman.C:1357
 CalibAlignKalman.C:1358
 CalibAlignKalman.C:1359
 CalibAlignKalman.C:1360
 CalibAlignKalman.C:1361
 CalibAlignKalman.C:1362
 CalibAlignKalman.C:1363
 CalibAlignKalman.C:1364
 CalibAlignKalman.C:1365
 CalibAlignKalman.C:1366
 CalibAlignKalman.C:1367
 CalibAlignKalman.C:1368
 CalibAlignKalman.C:1369
 CalibAlignKalman.C:1370
 CalibAlignKalman.C:1371
 CalibAlignKalman.C:1372
 CalibAlignKalman.C:1373
 CalibAlignKalman.C:1374
 CalibAlignKalman.C:1375
 CalibAlignKalman.C:1376
 CalibAlignKalman.C:1377
 CalibAlignKalman.C:1378
 CalibAlignKalman.C:1379
 CalibAlignKalman.C:1380
 CalibAlignKalman.C:1381
 CalibAlignKalman.C:1382
 CalibAlignKalman.C:1383
 CalibAlignKalman.C:1384
 CalibAlignKalman.C:1385
 CalibAlignKalman.C:1386
 CalibAlignKalman.C:1387
 CalibAlignKalman.C:1388
 CalibAlignKalman.C:1389
 CalibAlignKalman.C:1390
 CalibAlignKalman.C:1391
 CalibAlignKalman.C:1392
 CalibAlignKalman.C:1393
 CalibAlignKalman.C:1394
 CalibAlignKalman.C:1395
 CalibAlignKalman.C:1396
 CalibAlignKalman.C:1397
 CalibAlignKalman.C:1398
 CalibAlignKalman.C:1399
 CalibAlignKalman.C:1400
 CalibAlignKalman.C:1401
 CalibAlignKalman.C:1402
 CalibAlignKalman.C:1403
 CalibAlignKalman.C:1404
 CalibAlignKalman.C:1405
 CalibAlignKalman.C:1406
 CalibAlignKalman.C:1407
 CalibAlignKalman.C:1408
 CalibAlignKalman.C:1409
 CalibAlignKalman.C:1410
 CalibAlignKalman.C:1411
 CalibAlignKalman.C:1412
 CalibAlignKalman.C:1413
 CalibAlignKalman.C:1414
 CalibAlignKalman.C:1415
 CalibAlignKalman.C:1416
 CalibAlignKalman.C:1417
 CalibAlignKalman.C:1418
 CalibAlignKalman.C:1419
 CalibAlignKalman.C:1420
 CalibAlignKalman.C:1421
 CalibAlignKalman.C:1422
 CalibAlignKalman.C:1423
 CalibAlignKalman.C:1424
 CalibAlignKalman.C:1425
 CalibAlignKalman.C:1426
 CalibAlignKalman.C:1427
 CalibAlignKalman.C:1428
 CalibAlignKalman.C:1429
 CalibAlignKalman.C:1430
 CalibAlignKalman.C:1431
 CalibAlignKalman.C:1432
 CalibAlignKalman.C:1433
 CalibAlignKalman.C:1434
 CalibAlignKalman.C:1435
 CalibAlignKalman.C:1436
 CalibAlignKalman.C:1437
 CalibAlignKalman.C:1438
 CalibAlignKalman.C:1439
 CalibAlignKalman.C:1440
 CalibAlignKalman.C:1441
 CalibAlignKalman.C:1442
 CalibAlignKalman.C:1443
 CalibAlignKalman.C:1444
 CalibAlignKalman.C:1445
 CalibAlignKalman.C:1446
 CalibAlignKalman.C:1447
 CalibAlignKalman.C:1448
 CalibAlignKalman.C:1449
 CalibAlignKalman.C:1450
 CalibAlignKalman.C:1451
 CalibAlignKalman.C:1452
 CalibAlignKalman.C:1453
 CalibAlignKalman.C:1454
 CalibAlignKalman.C:1455
 CalibAlignKalman.C:1456
 CalibAlignKalman.C:1457
 CalibAlignKalman.C:1458
 CalibAlignKalman.C:1459
 CalibAlignKalman.C:1460
 CalibAlignKalman.C:1461
 CalibAlignKalman.C:1462
 CalibAlignKalman.C:1463
 CalibAlignKalman.C:1464
 CalibAlignKalman.C:1465
 CalibAlignKalman.C:1466
 CalibAlignKalman.C:1467
 CalibAlignKalman.C:1468
 CalibAlignKalman.C:1469
 CalibAlignKalman.C:1470
 CalibAlignKalman.C:1471
 CalibAlignKalman.C:1472
 CalibAlignKalman.C:1473
 CalibAlignKalman.C:1474
 CalibAlignKalman.C:1475
 CalibAlignKalman.C:1476
 CalibAlignKalman.C:1477
 CalibAlignKalman.C:1478
 CalibAlignKalman.C:1479
 CalibAlignKalman.C:1480
 CalibAlignKalman.C:1481
 CalibAlignKalman.C:1482
 CalibAlignKalman.C:1483
 CalibAlignKalman.C:1484
 CalibAlignKalman.C:1485
 CalibAlignKalman.C:1486
 CalibAlignKalman.C:1487
 CalibAlignKalman.C:1488
 CalibAlignKalman.C:1489
 CalibAlignKalman.C:1490
 CalibAlignKalman.C:1491
 CalibAlignKalman.C:1492
 CalibAlignKalman.C:1493
 CalibAlignKalman.C:1494
 CalibAlignKalman.C:1495
 CalibAlignKalman.C:1496
 CalibAlignKalman.C:1497
 CalibAlignKalman.C:1498
 CalibAlignKalman.C:1499
 CalibAlignKalman.C:1500
 CalibAlignKalman.C:1501
 CalibAlignKalman.C:1502
 CalibAlignKalman.C:1503
 CalibAlignKalman.C:1504
 CalibAlignKalman.C:1505
 CalibAlignKalman.C:1506
 CalibAlignKalman.C:1507
 CalibAlignKalman.C:1508
 CalibAlignKalman.C:1509
 CalibAlignKalman.C:1510
 CalibAlignKalman.C:1511
 CalibAlignKalman.C:1512
 CalibAlignKalman.C:1513
 CalibAlignKalman.C:1514
 CalibAlignKalman.C:1515
 CalibAlignKalman.C:1516
 CalibAlignKalman.C:1517
 CalibAlignKalman.C:1518
 CalibAlignKalman.C:1519
 CalibAlignKalman.C:1520
 CalibAlignKalman.C:1521
 CalibAlignKalman.C:1522
 CalibAlignKalman.C:1523
 CalibAlignKalman.C:1524
 CalibAlignKalman.C:1525
 CalibAlignKalman.C:1526
 CalibAlignKalman.C:1527
 CalibAlignKalman.C:1528
 CalibAlignKalman.C:1529
 CalibAlignKalman.C:1530
 CalibAlignKalman.C:1531
 CalibAlignKalman.C:1532
 CalibAlignKalman.C:1533
 CalibAlignKalman.C:1534
 CalibAlignKalman.C:1535
 CalibAlignKalman.C:1536
 CalibAlignKalman.C:1537
 CalibAlignKalman.C:1538
 CalibAlignKalman.C:1539
 CalibAlignKalman.C:1540
 CalibAlignKalman.C:1541
 CalibAlignKalman.C:1542
 CalibAlignKalman.C:1543
 CalibAlignKalman.C:1544
 CalibAlignKalman.C:1545
 CalibAlignKalman.C:1546
 CalibAlignKalman.C:1547
 CalibAlignKalman.C:1548
 CalibAlignKalman.C:1549
 CalibAlignKalman.C:1550
 CalibAlignKalman.C:1551
 CalibAlignKalman.C:1552
 CalibAlignKalman.C:1553
 CalibAlignKalman.C:1554
 CalibAlignKalman.C:1555
 CalibAlignKalman.C:1556
 CalibAlignKalman.C:1557
 CalibAlignKalman.C:1558
 CalibAlignKalman.C:1559
 CalibAlignKalman.C:1560
 CalibAlignKalman.C:1561
 CalibAlignKalman.C:1562
 CalibAlignKalman.C:1563
 CalibAlignKalman.C:1564
 CalibAlignKalman.C:1565
 CalibAlignKalman.C:1566
 CalibAlignKalman.C:1567
 CalibAlignKalman.C:1568
 CalibAlignKalman.C:1569
 CalibAlignKalman.C:1570
 CalibAlignKalman.C:1571
 CalibAlignKalman.C:1572
 CalibAlignKalman.C:1573
 CalibAlignKalman.C:1574
 CalibAlignKalman.C:1575
 CalibAlignKalman.C:1576
 CalibAlignKalman.C:1577
 CalibAlignKalman.C:1578
 CalibAlignKalman.C:1579
 CalibAlignKalman.C:1580
 CalibAlignKalman.C:1581
 CalibAlignKalman.C:1582
 CalibAlignKalman.C:1583
 CalibAlignKalman.C:1584
 CalibAlignKalman.C:1585
 CalibAlignKalman.C:1586
 CalibAlignKalman.C:1587
 CalibAlignKalman.C:1588
 CalibAlignKalman.C:1589
 CalibAlignKalman.C:1590
 CalibAlignKalman.C:1591
 CalibAlignKalman.C:1592
 CalibAlignKalman.C:1593
 CalibAlignKalman.C:1594
 CalibAlignKalman.C:1595
 CalibAlignKalman.C:1596
 CalibAlignKalman.C:1597
 CalibAlignKalman.C:1598
 CalibAlignKalman.C:1599
 CalibAlignKalman.C:1600
 CalibAlignKalman.C:1601
 CalibAlignKalman.C:1602
 CalibAlignKalman.C:1603
 CalibAlignKalman.C:1604
 CalibAlignKalman.C:1605
 CalibAlignKalman.C:1606
 CalibAlignKalman.C:1607
 CalibAlignKalman.C:1608
 CalibAlignKalman.C:1609
 CalibAlignKalman.C:1610
 CalibAlignKalman.C:1611
 CalibAlignKalman.C:1612
 CalibAlignKalman.C:1613
 CalibAlignKalman.C:1614
 CalibAlignKalman.C:1615
 CalibAlignKalman.C:1616
 CalibAlignKalman.C:1617
 CalibAlignKalman.C:1618
 CalibAlignKalman.C:1619
 CalibAlignKalman.C:1620
 CalibAlignKalman.C:1621
 CalibAlignKalman.C:1622
 CalibAlignKalman.C:1623
 CalibAlignKalman.C:1624
 CalibAlignKalman.C:1625
 CalibAlignKalman.C:1626
 CalibAlignKalman.C:1627
 CalibAlignKalman.C:1628
 CalibAlignKalman.C:1629
 CalibAlignKalman.C:1630
 CalibAlignKalman.C:1631
 CalibAlignKalman.C:1632
 CalibAlignKalman.C:1633
 CalibAlignKalman.C:1634
 CalibAlignKalman.C:1635
 CalibAlignKalman.C:1636
 CalibAlignKalman.C:1637
 CalibAlignKalman.C:1638
 CalibAlignKalman.C:1639
 CalibAlignKalman.C:1640
 CalibAlignKalman.C:1641
 CalibAlignKalman.C:1642
 CalibAlignKalman.C:1643
 CalibAlignKalman.C:1644