ROOT logo

/*
  This test macro to test AliTracker functionality.
  Additional focus on the tracking of  cosmic tracks .

  Test:
  1. Simulate random tracks  - AliTracker used to propagate track
  2. Missalign and smear space points
  3. Fit the tracks

  4. Visualize results/residual/pulls using tree draw

  The input MC paramters are stored together with reconstructed output in the tree.


  Usage:
  .L AliTrackerTest.C+g
  AliTrackerTest(1000)
  TFile f("fit.root");

  Make a simple plots:
  //Pulls in P3 parameter - tangent lambda
  fit->Draw("(seedF0.fP[3]-mcU.fP[3])/sqrt(seedF0.fC[9])>>hisSP3(100,-5,5)","")
  //Pulls of seeding for seed
  fit->Draw("(seedF0.fP[4]-mcU.fP[4])/sqrt(seedF0.fC[14])>>hisSP4(100,-5,5)","")
  //
  //Pulls in P3 parameter - tangent lambda
  fit->Draw("(trackF0.fP[3]-mcU.fP[3])/sqrt(trackF02.fC[9])>>hisP3(100,-5,5)","")
  //Pulls in P4 parameter
  fit->Draw("(trackF0.fP[4]-mcU.fP[4])/sqrt(trackF02.fC[14])>>hisP4(100,-5,5)","")

  //
  //
  // seeding procedure test (errors scaled 0.01 cm)
  fit->Draw("(seedF0.Pt()-mcD.Pt())/mcD.Pt()^2:mcD.Pt()>>hisSPt(10,0,400,100,-0.005,0.005)","abs(seedF0.fP[4])<3&&abs(pointsU.fNPoints+pointsD.fNPoints)>300","colz");
  //"standart track
  fit->Draw("(trackF0.Pt()-mcU.Pt())/mcU.Pt()^2:mcU.Pt()>>his0Pt(10,0,400,100,-0.005,0.005)","abs(trackF0.fP[4])<3&&abs(pointsU.fNPoints+pointsD.fNPoints)>300","colz");
  // misaligned track - up down
  fit->Draw("(trackF02.Pt()-mcU.Pt())/mcU.Pt()^2:mcU.Pt()>>his2Pt(10,0,400,100,-0.005,0.005)","abs(trackF02.fP[4])<3&&abs(pointsU.fNPoints+pointsD.fNPoints)>300","colz");
  hisSPt->FitSlicesY();
  his0Pt->FitSlicesY();
  his2Pt->FitSlicesY();
  
*/

//ROOT includes
#include <iostream>
#include "TRandom.h"
#include "TRandom3.h"
#include "TNtuple.h" 
#include "TStopwatch.h" 
#include "TDatabasePDG.h" 
#include "TMath.h" 
#include "TGeoManager.h" 
#include "TClonesArray.h" 
#include "TTree.h" 
#include "TFile.h" 
//AliRoot includes   
#include "AliGeomManager.h" 
#include "AliMagF.h" 
#include "AliESDVertex.h" 
#include "AliExternalTrackParam.h" 
#include "TTreeStream.h" 
#include "AliTrackPointArray.h" 
#include "AliTrackerBase.h"
#include "AliTracker.h"
#include "TMatrixD.h"

//
// 
//#include "refitTrack.C" 

void TestRotateMI(AliExternalTrackParam *paramIn, TTreeSRedirector *pcstream);
void AliTrackerBaseUpdateTrack(AliExternalTrackParam &track1, const AliExternalTrackParam &track2);
void TestUpdate(AliExternalTrackParam &param0, const AliExternalTrackParam &param1);


Int_t simulateCosmicTrack(AliExternalTrackParam &paramU, AliExternalTrackParam &paramD,
			  AliTrackPointArray &pointsU, AliTrackPointArray &pointsD,
			  AliTrackPointArray &pointsF){  
  //
  // Toy - Simulate cosmic muon track 
  // space points genearted with the step 1 cm - at given radius
  //
  // Return value    - number of points
  //        paramU   - parameters at the beginning of track
  //        paramD   - parameters at the end of track
  //        pointsU  - points in upper half of 
  //        pointsD  - points in lower part
  //        pointsF  - all points along trajectory
  // 
  Double_t rTPC1=250;
  Double_t rTPC0=80;
  Double_t kMuon = TDatabasePDG::Instance()->GetParticle("mu+")->Mass();
  Double_t kMaxSnp = 0.85;  
  Double_t xyz[3]={0,0,0};
  Double_t xyzdw[3]={0,0,0};
  Double_t pxyzup[3]={0,0,0};
  Double_t pxyzdw[3]={0,0,0};
  Double_t pxyz[3]={0,0,0};
  Double_t cv[21];
  for (Int_t i=0; i<21; i++) cv[i]=0;
  Float_t covPoint[6]={0,0,0,0,0,0};
  UShort_t volid=0;
  //
  static TClonesArray arrup("AliTrackPoint",500);
  static TClonesArray arrdw("AliTrackPoint",500);
  static TClonesArray arr("AliTrackPoint",500);
  if (arrup[0]==0){
    // init point arrays
    for (Int_t i=0;i<500;i++){
      new (arrup[i]) AliTrackPoint;
      new (arrdw[i]) AliTrackPoint;
      new (arr[i])   AliTrackPoint;
    }
  }

  //
  xyz[0]=(gRandom->Rndm()-0.5)*250;
  xyz[1]=250;
  xyz[2]=(gRandom->Rndm()-0.5)*100;
  //
  Double_t pt  = gRandom->Exp(8.);
  if (gRandom->Rndm()>0.3)  pt= gRandom->Exp(50.);
  if (gRandom->Rndm()>0.6)  pt= gRandom->Rndm()*400;
  //  Double_t pt  = gRandom->Exp(60.);
  Double_t pz  = gRandom->Gaus(0,0.3)*pt;
  Double_t phi = gRandom->Gaus(0,0.3);
  pxyz[0] = pt*TMath::Sin(phi);
  pxyz[1] = pt*TMath::Cos(phi);
  pxyz[2] = pz;
  Short_t sign= (gRandom->Rndm()>0.5)? -1:1;
  //
  pxyzup[0]=pxyz[0];
  pxyzup[1]=pxyz[1];
  pxyzup[2]=pxyz[2];
  //  
  AliExternalTrackParam lparamU(xyz, pxyzup,cv,sign);
  Double_t alpha = TMath::ATan2(xyz[1],xyz[0]);
  lparamU.Rotate(alpha);
  paramU=lparamU;
  //
  //
  //
  Double_t txyzup[3]={0,0,0};
  Double_t txyzdw[3]={0,0,0};
  //
  Int_t npointsUp=0;
  AliTrackerBase::PropagateTrackTo(&lparamU,rTPC1,kMuon,3,kTRUE,kMaxSnp);
  paramU=lparamU;
  for (Double_t r=rTPC1; r>0; r-=1){
    Bool_t status =	 AliTrackerBase::PropagateTrackToBxByBz(&lparamU,r,kMuon,3,kTRUE,kMaxSnp);
    if (!status) break;
    if (TMath::Abs(lparamU.GetSnp())>kMaxSnp) break;
    if (r<rTPC0) continue;
    lparamU.GetXYZ(txyzup);
    new (arrup[npointsUp]) AliTrackPoint(txyzup[0],txyzup[1],txyzup[2],covPoint,volid,0.,0.,0.,0);
    npointsUp++;
  }
  //
  lparamU.GetXYZ(txyzup);
  Double_t bz=AliTrackerBase::GetBz(txyzup);
  Double_t maxd=100000;
  Double_t pvtx[3]={0,0,0};
  Double_t sigmavtx[3]={0.01,0.01,3000};
  AliESDVertex *vtx= new AliESDVertex(pvtx,sigmavtx,"vertex");
  Double_t dz[2]={0,0};
  Double_t cvtx[3]={0.0,0.0,0};
  lparamU.PropagateToDCA(vtx,bz,maxd,dz,cvtx); 
  //
  // make step to other side
  lparamU.PropagateTo(-30,bz);  
  lparamU.GetXYZ(xyzdw); 
  lparamU.GetPxPyPz(pxyzdw);
  // invert the sign of the momentum
  pxyzdw[0]=-pxyzdw[0];
  pxyzdw[1]=-pxyzdw[1];
  pxyzdw[2]=-pxyzdw[2];
  Short_t sign2=-sign;
  AliExternalTrackParam lparamD(xyzdw,pxyzdw,cv,sign2);
  lparamU.GetXYZ(xyzdw); 
  lparamU.GetPxPyPz(pxyzdw);
  Double_t alphadw = TMath::ATan2(xyzdw[1],xyzdw[0]);
  lparamD.Rotate(alphadw);//I have to rotate gobal to local coordenate externalparam
  Double_t radius0=TMath::Sqrt(xyzdw[1]*xyzdw[1]+xyzdw[0]*xyzdw[0]);
  Int_t npointsDown=0;
  for (Double_t r=radius0; r<rTPC1; r+=1){ 
    Bool_t status =  AliTrackerBase::PropagateTrackToBxByBz(&lparamD,r,kMuon,3,kTRUE,0.99); 
    if (!status) continue;
    if (TMath::Abs(lparamD.GetSnp())>kMaxSnp) continue;
    if(r>rTPC0){
      lparamD.GetXYZ(txyzdw);
      new (arrdw[npointsDown]) AliTrackPoint(txyzdw[0],txyzdw[1],txyzdw[2],covPoint,volid,0.,0.,0.,0);
      npointsDown++;	
    }
  }
  //
  // Fill MC point arrays
  //  
  Int_t npoints=npointsUp+npointsDown;
  AliTrackPointArray lpointsF(npoints);
  AliTrackPointArray lpointsU(npointsUp);
  AliTrackPointArray lpointsD(npointsDown);
  for (Int_t i=0; i<npointsUp;i++){
    AliTrackPoint *point = (AliTrackPoint*)arrup[i];
    lpointsF.AddPoint(i,point);
    lpointsU.AddPoint(i,point);
  }
  //
  for (Int_t i=0; i<npointsDown;i++){
    AliTrackPoint *point = (AliTrackPoint*)arrdw[i];
    lpointsF.AddPoint(i+npointsUp,point);
    lpointsD.AddPoint(i,point);
  }
  // export points
  AliTrackerBase::PropagateTrackToBxByBz(&lparamD,rTPC1,kMuon,3,kTRUE,kMaxSnp);
  paramD=lparamD;
  //
  pointsU=lpointsU;
  pointsD=lpointsD;
  pointsF=lpointsF;
  return npoints;
}


AliTrackPointArray * SmearPoints(AliTrackPointArray &pointArray, Double_t sigmaY, Double_t sigmaZ, Double_t shiftY,Double_t shiftZ){
  //
  // Smear ideal points form the simulation
  // 1. Smear the input points (in the "local frame")
  // 2. Assing corresponding covariance matrix
  // 3. Add systematic shift - shift y and shift z
  
  Int_t  npoints=pointArray.GetNPoints();
  AliTrackPointArray *outputArray = new  AliTrackPointArray(npoints);
  Double_t xyz[3]={0,0,0}; 
  Float_t covPoint[6]={0,0,0, sigmaY*sigmaY,0,sigmaZ*sigmaZ};  //covaraince at the local frame
  //
  //
  for (Int_t ipoint=0; ipoint<npoints; ipoint++){
    AliTrackPoint pointIn;
    pointArray.GetPoint(pointIn,ipoint);
    Double_t alpha = TMath::ATan2(pointIn.GetY(),pointIn.GetX());
    AliTrackPoint pr = pointIn.Rotate(alpha);
    xyz[0]=pr.GetX();                           //local x
    xyz[1]=pr.GetY()+gRandom->Gaus(0,sigmaY);   //local y
    xyz[2]=pr.GetZ()+gRandom->Gaus(0,sigmaZ);   //local z
    if (pointIn.GetY()>0) xyz[1]+=shiftY;
    if (pointIn.GetY()>0) xyz[2]+=shiftZ;
    //
    pr.SetXYZ(xyz[0],xyz[1],xyz[2],covPoint);  // set covariance matrix
    AliTrackPoint      pg= pr.Rotate(-alpha);
    AliTrackPoint prCheck= pg.Rotate(alpha);
    outputArray->AddPoint(ipoint,&pg);    
  }
  return outputArray;
}



AliExternalTrackParam *  MakeSeed(AliTrackPointArray &pointArray, Int_t seedDelta){
  //
  // Example: creation of seed
  // Make seed for array of track points
  // seedDelta - gap between seeding points
  //
  Int_t  npoints=pointArray.GetNPoints();
  if(npoints<=3) return 0;   //not enough points to make a trac
  if (npoints-2*seedDelta-1<0) return 0;
  AliTrackPoint   point1;
  AliTrackPoint   point2;
  AliTrackPoint   point3;
  pointArray.GetPoint(point1,npoints-1);
  pointArray.GetPoint(point2,npoints-seedDelta-1);
  pointArray.GetPoint(point3,npoints-2*seedDelta-1);
  //
  AliExternalTrackParam * trackParam = AliTrackerBase::MakeSeed(point1, point2, point3);
  return trackParam;
}


void AliTrackerTest(Int_t ntracks) {
  //   
  // 
  //
  TGeoManager::Import("./geometry.root");
  AliGeomManager::LoadGeometry("./geometry.root");
  AliMagF::BMap_t smag = AliMagF::k5kG;
  Double_t        kMuon = TDatabasePDG::Instance()->GetParticle("mu+")->Mass();
  TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1., smag));
  //
  
  TTreeSRedirector *pcstream = new TTreeSRedirector("fit.root"); 
  AliExternalTrackParam paramU;
  AliExternalTrackParam paramD;
  AliTrackPointArray    pointsU; 
  AliTrackPointArray    pointsD;
  AliTrackPointArray    pointsF;  

  for (Int_t i=0;i<ntracks;i++) {
    if (i%10==0) printf("Track\t%d\n",i);
    Int_t npoints = simulateCosmicTrack(paramU, paramD, pointsU, pointsD, pointsF);  
    if (npoints<10) continue;
    //
    // point for test of seeding - with scaled errors
    AliTrackPointArray* pointsFS=SmearPoints(pointsF, 0.01,0.01,0,0);
    AliTrackPointArray* pointsDS=SmearPoints(pointsD, 0.01,0.01,0,0);
    AliTrackPointArray* pointsUS=SmearPoints(pointsU, 0.01,0.01,0,0);
    //test of seeding routines
    AliExternalTrackParam *seedF0  =  MakeSeed(*pointsFS,50);
    AliExternalTrackParam *seedD0  =  MakeSeed(*pointsDS,50);
    AliExternalTrackParam *seedU0  =  MakeSeed(*pointsUS,50);
    // points smeeared according TPC resolution
    AliTrackPointArray* pointsF0=SmearPoints(pointsF, 0.1,0.1,0,0);
    AliTrackPointArray* pointsD0=SmearPoints(pointsD, 0.1,0.1,0,0);
    AliTrackPointArray* pointsU0=SmearPoints(pointsU, 0.1,0.1,0,0);
    // points smeared according TPCresolution - + systematic shift
    AliTrackPointArray* pointsF02=SmearPoints(pointsF, 0.1,0.1,0.2,0.2);
    AliTrackPointArray* pointsD02=SmearPoints(pointsD, 0.1,0.1,0.2,0.2);
    AliTrackPointArray* pointsU02=SmearPoints(pointsU, 0.1,0.1,0.2,0.2);
    //test of tracking    
    AliExternalTrackParam *trackF0  =  MakeSeed(*pointsF0,10);
    AliExternalTrackParam *trackD0  =  MakeSeed(*pointsD0,10);
    AliExternalTrackParam *trackU0  =  MakeSeed(*pointsU0,10);
    AliExternalTrackParam *trackF02 =  MakeSeed(*pointsF02,10);
    AliExternalTrackParam *trackD02 =  MakeSeed(*pointsD02,10);
    AliExternalTrackParam *trackU02 =  MakeSeed(*pointsU02,10);
    //
    //
    if (!trackF0) continue;
    if (!trackD0) continue;
    if (!trackU0) continue;
    if (!seedF0) continue;
    if (!seedD0) continue;
    if (!seedU0) continue;    
    AliTrackerBase::FitTrack(trackF0, pointsF0,kMuon,3);
    AliTrackerBase::FitTrack(trackU0, pointsU0,kMuon,3);
    AliTrackerBase::FitTrack(trackD0, pointsD0,kMuon,3);
    AliTrackerBase::FitTrack(trackF02, pointsF02,kMuon,3);
    AliTrackerBase::FitTrack(trackD02, pointsD02,kMuon,3);
    AliTrackerBase::FitTrack(trackU02, pointsU02,kMuon,3);  
    //
    // test update of 2 track params
    AliExternalTrackParam utrackU0(*trackU0);
    TestUpdate(utrackU0,*trackD0);
    //
    
    //
    TestRotateMI(trackF0, pcstream);
    if (trackF0&&trackD0&&trackU0){
      (*pcstream)<<"fit"<<	
	"pointsD.="<<&pointsD<<
	"pointsD0.="<<pointsD0<<
	"pointsD02.="<<pointsD02<<
	//
	"pointsU.="<<&pointsU<<
	"pointsU0.="<<pointsU0<<
	"pointsU02.="<<pointsU02<<
	//
	"pointsF.="<<&pointsF<<
	"pointsF0.="<<pointsF0<<
	"pointsF02.="<<pointsF02<<
	//
	"mcU.="<<&paramU<<             //MC track down
	"mcD.="<<&paramD<<             //MC track top
	// track fit  - 0 misalignemnt
	"seedF0.="<<seedF0<<       //full track
	"seedD0.="<<seedD0<<       //down track
	"seedU0.="<<seedU0<<       //up track
	//
	"trackF0.="<<trackF0<<       //full track
	"trackD0.="<<trackD0<<       //down track
	"trackU0.="<<trackU0<<       //up track
	"utrackU0.="<<&utrackU0<<       //up track - updated
	// track fit  - 0.2 cm  misalignemnt
	"trackF02.="<<trackF02<<       //full track
	"trackD02.="<<trackD02<<       //down track
	"trackU02.="<<trackU02<<       //up track
	"\n";
    }
  }
  delete pcstream; 
  
}

void TestRotateMI(AliExternalTrackParam *paramIn, TTreeSRedirector *pcstream){
  //
  // test of rotation function
  // rotate by 360 degrees
  // dump the state vector to the tree after each rotation 
  AliExternalTrackParam param(*paramIn);
  AliExternalTrackParam paramMI(*paramIn);
  for (Int_t idiv=0; idiv<=18; idiv++){
    Double_t alphaRot = paramIn->GetAlpha()+2*TMath::Pi()*idiv/18.;
    param.Rotate(alphaRot);
    paramMI.RotateMI(alphaRot);
    (*pcstream)<<"rotateTest"<<
      "pIn.="<<paramIn<<
      "pRot.="<<&param<<
      "pRotMI.="<<&paramMI<<
      "idiv="<<idiv<<
      "\n";
  }
  /*
    to check:
    
   */
}


void TestUpdate(AliExternalTrackParam &param0, const AliExternalTrackParam &param1){
  //
  // Test function of update
  // 
  // fit->Draw("(utrackU0.fP[4]-mcU.fP[4])/sqrt(utrackU0.fC[14])","abs(utrackU0.fP[0]-trackU0.fP[0])<1")
  // fit->Draw("(trackU0.fP[4]-mcU.fP[4])/sqrt(utrackU0.fC[14])","abs(utrackU0.fP[0]-trackU0.fP[0])<1")


  //
  Double_t kMuon = TDatabasePDG::Instance()->GetParticle("mu+")->Mass();
  Double_t kMaxSnp = 0.85;  
  //
  AliExternalTrackParam track1(param1);  // make a local copy of param1
  track1.Rotate(param0.GetAlpha());
  AliTrackerBase::PropagateTrackToBxByBz(&track1,param0.GetX(),kMuon,3,kFALSE,kMaxSnp);
  AliTrackerBaseUpdateTrack(param0,track1);
}




void AliTrackerBaseUpdateTrack(AliExternalTrackParam &track1, const AliExternalTrackParam &track2){
  //
  // Update track 1 with track 2
  //
  //
  //
  TMatrixD vecXk(5,1);    // X vector
  TMatrixD covXk(5,5);    // X covariance 
  TMatrixD matHk(5,5);    // vector to mesurement
  TMatrixD measR(5,5);    // measurement error 
  TMatrixD vecZk(5,1);    // measurement
  //
  TMatrixD vecYk(5,1);    // Innovation or measurement residual
  TMatrixD matHkT(5,5);
  TMatrixD matSk(5,5);    // Innovation (or residual) covariance
  TMatrixD matKk(5,5);    // Optimal Kalman gain
  TMatrixD mat1(5,5);     // update covariance matrix
  TMatrixD covXk2(5,5);   // 
  TMatrixD covOut(5,5);
  //
  Double_t *param1=(Double_t*) track1.GetParameter();
  Double_t *covar1=(Double_t*) track1.GetCovariance();
  Double_t *param2=(Double_t*) track2.GetParameter();
  Double_t *covar2=(Double_t*) track2.GetCovariance();
  //
  // copy data to the matrix
  for (Int_t ipar=0; ipar<5; ipar++){
    for (Int_t jpar=0; jpar<5; jpar++){
      covXk(ipar,jpar) = covar1[track1.GetIndex(ipar, jpar)];
      measR(ipar,jpar) = covar2[track2.GetIndex(ipar, jpar)];
      matHk(ipar,jpar)=0;
      mat1(ipar,jpar)=0;
    }
    vecXk(ipar,0) = param1[ipar];
    vecZk(ipar,0) = param2[ipar];
    matHk(ipar,ipar)=1;
    mat1(ipar,ipar)=1;
  }
  //
  //
  //
  //
  //
  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
  vecXk += matKk*vecYk;                      //  updated vector 
  covXk2 = (mat1-(matKk*matHk));
  covOut =  covXk2*covXk; 
  //
  //
  //
  // copy from matrix to parameters
  if (0) {
    vecXk.Print();
    vecZk.Print();
    //
    measR.Print();
    covXk.Print();
    covOut.Print();
    //
    track1.Print();
    track2.Print();
  }

  for (Int_t ipar=0; ipar<5; ipar++){
    param1[ipar]= vecXk(ipar,0) ;
    for (Int_t jpar=0; jpar<5; jpar++){
      covar1[track1.GetIndex(ipar, jpar)]=covOut(ipar,jpar);
    }
  }
}


 AliTrackerTest.C:1
 AliTrackerTest.C:2
 AliTrackerTest.C:3
 AliTrackerTest.C:4
 AliTrackerTest.C:5
 AliTrackerTest.C:6
 AliTrackerTest.C:7
 AliTrackerTest.C:8
 AliTrackerTest.C:9
 AliTrackerTest.C:10
 AliTrackerTest.C:11
 AliTrackerTest.C:12
 AliTrackerTest.C:13
 AliTrackerTest.C:14
 AliTrackerTest.C:15
 AliTrackerTest.C:16
 AliTrackerTest.C:17
 AliTrackerTest.C:18
 AliTrackerTest.C:19
 AliTrackerTest.C:20
 AliTrackerTest.C:21
 AliTrackerTest.C:22
 AliTrackerTest.C:23
 AliTrackerTest.C:24
 AliTrackerTest.C:25
 AliTrackerTest.C:26
 AliTrackerTest.C:27
 AliTrackerTest.C:28
 AliTrackerTest.C:29
 AliTrackerTest.C:30
 AliTrackerTest.C:31
 AliTrackerTest.C:32
 AliTrackerTest.C:33
 AliTrackerTest.C:34
 AliTrackerTest.C:35
 AliTrackerTest.C:36
 AliTrackerTest.C:37
 AliTrackerTest.C:38
 AliTrackerTest.C:39
 AliTrackerTest.C:40
 AliTrackerTest.C:41
 AliTrackerTest.C:42
 AliTrackerTest.C:43
 AliTrackerTest.C:44
 AliTrackerTest.C:45
 AliTrackerTest.C:46
 AliTrackerTest.C:47
 AliTrackerTest.C:48
 AliTrackerTest.C:49
 AliTrackerTest.C:50
 AliTrackerTest.C:51
 AliTrackerTest.C:52
 AliTrackerTest.C:53
 AliTrackerTest.C:54
 AliTrackerTest.C:55
 AliTrackerTest.C:56
 AliTrackerTest.C:57
 AliTrackerTest.C:58
 AliTrackerTest.C:59
 AliTrackerTest.C:60
 AliTrackerTest.C:61
 AliTrackerTest.C:62
 AliTrackerTest.C:63
 AliTrackerTest.C:64
 AliTrackerTest.C:65
 AliTrackerTest.C:66
 AliTrackerTest.C:67
 AliTrackerTest.C:68
 AliTrackerTest.C:69
 AliTrackerTest.C:70
 AliTrackerTest.C:71
 AliTrackerTest.C:72
 AliTrackerTest.C:73
 AliTrackerTest.C:74
 AliTrackerTest.C:75
 AliTrackerTest.C:76
 AliTrackerTest.C:77
 AliTrackerTest.C:78
 AliTrackerTest.C:79
 AliTrackerTest.C:80
 AliTrackerTest.C:81
 AliTrackerTest.C:82
 AliTrackerTest.C:83
 AliTrackerTest.C:84
 AliTrackerTest.C:85
 AliTrackerTest.C:86
 AliTrackerTest.C:87
 AliTrackerTest.C:88
 AliTrackerTest.C:89
 AliTrackerTest.C:90
 AliTrackerTest.C:91
 AliTrackerTest.C:92
 AliTrackerTest.C:93
 AliTrackerTest.C:94
 AliTrackerTest.C:95
 AliTrackerTest.C:96
 AliTrackerTest.C:97
 AliTrackerTest.C:98
 AliTrackerTest.C:99
 AliTrackerTest.C:100
 AliTrackerTest.C:101
 AliTrackerTest.C:102
 AliTrackerTest.C:103
 AliTrackerTest.C:104
 AliTrackerTest.C:105
 AliTrackerTest.C:106
 AliTrackerTest.C:107
 AliTrackerTest.C:108
 AliTrackerTest.C:109
 AliTrackerTest.C:110
 AliTrackerTest.C:111
 AliTrackerTest.C:112
 AliTrackerTest.C:113
 AliTrackerTest.C:114
 AliTrackerTest.C:115
 AliTrackerTest.C:116
 AliTrackerTest.C:117
 AliTrackerTest.C:118
 AliTrackerTest.C:119
 AliTrackerTest.C:120
 AliTrackerTest.C:121
 AliTrackerTest.C:122
 AliTrackerTest.C:123
 AliTrackerTest.C:124
 AliTrackerTest.C:125
 AliTrackerTest.C:126
 AliTrackerTest.C:127
 AliTrackerTest.C:128
 AliTrackerTest.C:129
 AliTrackerTest.C:130
 AliTrackerTest.C:131
 AliTrackerTest.C:132
 AliTrackerTest.C:133
 AliTrackerTest.C:134
 AliTrackerTest.C:135
 AliTrackerTest.C:136
 AliTrackerTest.C:137
 AliTrackerTest.C:138
 AliTrackerTest.C:139
 AliTrackerTest.C:140
 AliTrackerTest.C:141
 AliTrackerTest.C:142
 AliTrackerTest.C:143
 AliTrackerTest.C:144
 AliTrackerTest.C:145
 AliTrackerTest.C:146
 AliTrackerTest.C:147
 AliTrackerTest.C:148
 AliTrackerTest.C:149
 AliTrackerTest.C:150
 AliTrackerTest.C:151
 AliTrackerTest.C:152
 AliTrackerTest.C:153
 AliTrackerTest.C:154
 AliTrackerTest.C:155
 AliTrackerTest.C:156
 AliTrackerTest.C:157
 AliTrackerTest.C:158
 AliTrackerTest.C:159
 AliTrackerTest.C:160
 AliTrackerTest.C:161
 AliTrackerTest.C:162
 AliTrackerTest.C:163
 AliTrackerTest.C:164
 AliTrackerTest.C:165
 AliTrackerTest.C:166
 AliTrackerTest.C:167
 AliTrackerTest.C:168
 AliTrackerTest.C:169
 AliTrackerTest.C:170
 AliTrackerTest.C:171
 AliTrackerTest.C:172
 AliTrackerTest.C:173
 AliTrackerTest.C:174
 AliTrackerTest.C:175
 AliTrackerTest.C:176
 AliTrackerTest.C:177
 AliTrackerTest.C:178
 AliTrackerTest.C:179
 AliTrackerTest.C:180
 AliTrackerTest.C:181
 AliTrackerTest.C:182
 AliTrackerTest.C:183
 AliTrackerTest.C:184
 AliTrackerTest.C:185
 AliTrackerTest.C:186
 AliTrackerTest.C:187
 AliTrackerTest.C:188
 AliTrackerTest.C:189
 AliTrackerTest.C:190
 AliTrackerTest.C:191
 AliTrackerTest.C:192
 AliTrackerTest.C:193
 AliTrackerTest.C:194
 AliTrackerTest.C:195
 AliTrackerTest.C:196
 AliTrackerTest.C:197
 AliTrackerTest.C:198
 AliTrackerTest.C:199
 AliTrackerTest.C:200
 AliTrackerTest.C:201
 AliTrackerTest.C:202
 AliTrackerTest.C:203
 AliTrackerTest.C:204
 AliTrackerTest.C:205
 AliTrackerTest.C:206
 AliTrackerTest.C:207
 AliTrackerTest.C:208
 AliTrackerTest.C:209
 AliTrackerTest.C:210
 AliTrackerTest.C:211
 AliTrackerTest.C:212
 AliTrackerTest.C:213
 AliTrackerTest.C:214
 AliTrackerTest.C:215
 AliTrackerTest.C:216
 AliTrackerTest.C:217
 AliTrackerTest.C:218
 AliTrackerTest.C:219
 AliTrackerTest.C:220
 AliTrackerTest.C:221
 AliTrackerTest.C:222
 AliTrackerTest.C:223
 AliTrackerTest.C:224
 AliTrackerTest.C:225
 AliTrackerTest.C:226
 AliTrackerTest.C:227
 AliTrackerTest.C:228
 AliTrackerTest.C:229
 AliTrackerTest.C:230
 AliTrackerTest.C:231
 AliTrackerTest.C:232
 AliTrackerTest.C:233
 AliTrackerTest.C:234
 AliTrackerTest.C:235
 AliTrackerTest.C:236
 AliTrackerTest.C:237
 AliTrackerTest.C:238
 AliTrackerTest.C:239
 AliTrackerTest.C:240
 AliTrackerTest.C:241
 AliTrackerTest.C:242
 AliTrackerTest.C:243
 AliTrackerTest.C:244
 AliTrackerTest.C:245
 AliTrackerTest.C:246
 AliTrackerTest.C:247
 AliTrackerTest.C:248
 AliTrackerTest.C:249
 AliTrackerTest.C:250
 AliTrackerTest.C:251
 AliTrackerTest.C:252
 AliTrackerTest.C:253
 AliTrackerTest.C:254
 AliTrackerTest.C:255
 AliTrackerTest.C:256
 AliTrackerTest.C:257
 AliTrackerTest.C:258
 AliTrackerTest.C:259
 AliTrackerTest.C:260
 AliTrackerTest.C:261
 AliTrackerTest.C:262
 AliTrackerTest.C:263
 AliTrackerTest.C:264
 AliTrackerTest.C:265
 AliTrackerTest.C:266
 AliTrackerTest.C:267
 AliTrackerTest.C:268
 AliTrackerTest.C:269
 AliTrackerTest.C:270
 AliTrackerTest.C:271
 AliTrackerTest.C:272
 AliTrackerTest.C:273
 AliTrackerTest.C:274
 AliTrackerTest.C:275
 AliTrackerTest.C:276
 AliTrackerTest.C:277
 AliTrackerTest.C:278
 AliTrackerTest.C:279
 AliTrackerTest.C:280
 AliTrackerTest.C:281
 AliTrackerTest.C:282
 AliTrackerTest.C:283
 AliTrackerTest.C:284
 AliTrackerTest.C:285
 AliTrackerTest.C:286
 AliTrackerTest.C:287
 AliTrackerTest.C:288
 AliTrackerTest.C:289
 AliTrackerTest.C:290
 AliTrackerTest.C:291
 AliTrackerTest.C:292
 AliTrackerTest.C:293
 AliTrackerTest.C:294
 AliTrackerTest.C:295
 AliTrackerTest.C:296
 AliTrackerTest.C:297
 AliTrackerTest.C:298
 AliTrackerTest.C:299
 AliTrackerTest.C:300
 AliTrackerTest.C:301
 AliTrackerTest.C:302
 AliTrackerTest.C:303
 AliTrackerTest.C:304
 AliTrackerTest.C:305
 AliTrackerTest.C:306
 AliTrackerTest.C:307
 AliTrackerTest.C:308
 AliTrackerTest.C:309
 AliTrackerTest.C:310
 AliTrackerTest.C:311
 AliTrackerTest.C:312
 AliTrackerTest.C:313
 AliTrackerTest.C:314
 AliTrackerTest.C:315
 AliTrackerTest.C:316
 AliTrackerTest.C:317
 AliTrackerTest.C:318
 AliTrackerTest.C:319
 AliTrackerTest.C:320
 AliTrackerTest.C:321
 AliTrackerTest.C:322
 AliTrackerTest.C:323
 AliTrackerTest.C:324
 AliTrackerTest.C:325
 AliTrackerTest.C:326
 AliTrackerTest.C:327
 AliTrackerTest.C:328
 AliTrackerTest.C:329
 AliTrackerTest.C:330
 AliTrackerTest.C:331
 AliTrackerTest.C:332
 AliTrackerTest.C:333
 AliTrackerTest.C:334
 AliTrackerTest.C:335
 AliTrackerTest.C:336
 AliTrackerTest.C:337
 AliTrackerTest.C:338
 AliTrackerTest.C:339
 AliTrackerTest.C:340
 AliTrackerTest.C:341
 AliTrackerTest.C:342
 AliTrackerTest.C:343
 AliTrackerTest.C:344
 AliTrackerTest.C:345
 AliTrackerTest.C:346
 AliTrackerTest.C:347
 AliTrackerTest.C:348
 AliTrackerTest.C:349
 AliTrackerTest.C:350
 AliTrackerTest.C:351
 AliTrackerTest.C:352
 AliTrackerTest.C:353
 AliTrackerTest.C:354
 AliTrackerTest.C:355
 AliTrackerTest.C:356
 AliTrackerTest.C:357
 AliTrackerTest.C:358
 AliTrackerTest.C:359
 AliTrackerTest.C:360
 AliTrackerTest.C:361
 AliTrackerTest.C:362
 AliTrackerTest.C:363
 AliTrackerTest.C:364
 AliTrackerTest.C:365
 AliTrackerTest.C:366
 AliTrackerTest.C:367
 AliTrackerTest.C:368
 AliTrackerTest.C:369
 AliTrackerTest.C:370
 AliTrackerTest.C:371
 AliTrackerTest.C:372
 AliTrackerTest.C:373
 AliTrackerTest.C:374
 AliTrackerTest.C:375
 AliTrackerTest.C:376
 AliTrackerTest.C:377
 AliTrackerTest.C:378
 AliTrackerTest.C:379
 AliTrackerTest.C:380
 AliTrackerTest.C:381
 AliTrackerTest.C:382
 AliTrackerTest.C:383
 AliTrackerTest.C:384
 AliTrackerTest.C:385
 AliTrackerTest.C:386
 AliTrackerTest.C:387
 AliTrackerTest.C:388
 AliTrackerTest.C:389
 AliTrackerTest.C:390
 AliTrackerTest.C:391
 AliTrackerTest.C:392
 AliTrackerTest.C:393
 AliTrackerTest.C:394
 AliTrackerTest.C:395
 AliTrackerTest.C:396
 AliTrackerTest.C:397
 AliTrackerTest.C:398
 AliTrackerTest.C:399
 AliTrackerTest.C:400
 AliTrackerTest.C:401
 AliTrackerTest.C:402
 AliTrackerTest.C:403
 AliTrackerTest.C:404
 AliTrackerTest.C:405
 AliTrackerTest.C:406
 AliTrackerTest.C:407
 AliTrackerTest.C:408
 AliTrackerTest.C:409
 AliTrackerTest.C:410
 AliTrackerTest.C:411
 AliTrackerTest.C:412
 AliTrackerTest.C:413
 AliTrackerTest.C:414
 AliTrackerTest.C:415
 AliTrackerTest.C:416
 AliTrackerTest.C:417
 AliTrackerTest.C:418
 AliTrackerTest.C:419
 AliTrackerTest.C:420
 AliTrackerTest.C:421
 AliTrackerTest.C:422
 AliTrackerTest.C:423
 AliTrackerTest.C:424
 AliTrackerTest.C:425
 AliTrackerTest.C:426
 AliTrackerTest.C:427
 AliTrackerTest.C:428
 AliTrackerTest.C:429
 AliTrackerTest.C:430
 AliTrackerTest.C:431
 AliTrackerTest.C:432
 AliTrackerTest.C:433
 AliTrackerTest.C:434
 AliTrackerTest.C:435
 AliTrackerTest.C:436
 AliTrackerTest.C:437
 AliTrackerTest.C:438
 AliTrackerTest.C:439
 AliTrackerTest.C:440
 AliTrackerTest.C:441
 AliTrackerTest.C:442
 AliTrackerTest.C:443
 AliTrackerTest.C:444
 AliTrackerTest.C:445
 AliTrackerTest.C:446
 AliTrackerTest.C:447
 AliTrackerTest.C:448
 AliTrackerTest.C:449
 AliTrackerTest.C:450
 AliTrackerTest.C:451
 AliTrackerTest.C:452
 AliTrackerTest.C:453
 AliTrackerTest.C:454
 AliTrackerTest.C:455
 AliTrackerTest.C:456
 AliTrackerTest.C:457
 AliTrackerTest.C:458
 AliTrackerTest.C:459
 AliTrackerTest.C:460
 AliTrackerTest.C:461
 AliTrackerTest.C:462
 AliTrackerTest.C:463
 AliTrackerTest.C:464
 AliTrackerTest.C:465
 AliTrackerTest.C:466
 AliTrackerTest.C:467
 AliTrackerTest.C:468
 AliTrackerTest.C:469
 AliTrackerTest.C:470
 AliTrackerTest.C:471
 AliTrackerTest.C:472
 AliTrackerTest.C:473
 AliTrackerTest.C:474
 AliTrackerTest.C:475
 AliTrackerTest.C:476
 AliTrackerTest.C:477
 AliTrackerTest.C:478
 AliTrackerTest.C:479
 AliTrackerTest.C:480
 AliTrackerTest.C:481
 AliTrackerTest.C:482
 AliTrackerTest.C:483
 AliTrackerTest.C:484
 AliTrackerTest.C:485
 AliTrackerTest.C:486
 AliTrackerTest.C:487
 AliTrackerTest.C:488
 AliTrackerTest.C:489
 AliTrackerTest.C:490
 AliTrackerTest.C:491
 AliTrackerTest.C:492
 AliTrackerTest.C:493
 AliTrackerTest.C:494
 AliTrackerTest.C:495
 AliTrackerTest.C:496
 AliTrackerTest.C:497
 AliTrackerTest.C:498
 AliTrackerTest.C:499
 AliTrackerTest.C:500
 AliTrackerTest.C:501
 AliTrackerTest.C:502
 AliTrackerTest.C:503
 AliTrackerTest.C:504
 AliTrackerTest.C:505
 AliTrackerTest.C:506
 AliTrackerTest.C:507