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

//-------------------------------------------------------------------
// Base class to test the extrapolation performance from TPC to outer 
// detectors. Several member functions AddTracks() with different
// arguments can be called to execute extrapolation and several 
// THnSparse are filled with residuls and basic track information
//
// Anthor: R.Ma, M.Ivanov 02/04/2011
//--------------------------------------------------------------------
/* $Id:$ */

#include "AliTrackComparison.h"
#include "AliExternalTrackParam.h"
#include "AliTrackReference.h"
#include "AliTracker.h"
#include "AliTrackPointArray.h"
#include "THnSparse.h"
#include "TParticle.h"
#include "TMatrix.h"
#include "TParticlePDG.h"
#include "TParticle.h"
#include "TTreeStream.h"
#include "TAxis.h"
#include "TH1D.h"
#include "TTreeStream.h"

ClassImp(AliTrackComparison)

//________________________________________________________________________
AliTrackComparison::AliTrackComparison() 
  :TNamed()
  , fStep(1)
  , fLowBinDY(-10)
  , fUpBinDY(10)
  , fLowBinDZ(-10)
  , fUpBinDZ(10)
  , fLowBinDSnp(-0.5)
  , fUpBinDSnp(0.5)
  , fLowBinDTheta(-0.5)
  , fUpBinDTheta(0.5)
  , fLowBin1Pt(-3)
  , fUpBin1Pt(3)
  , fLowBin1PtLoss(-2)
  , fUpBin1PtLoss(2)
  , fNBinsDY(50)
  , fNBinsDZ(50)
  , fNBinsDSnp(50)
  , fNBinsDTheta(50)
  , fNBins1Pt(50)
  , fNBins1PtLoss(100)
  , fLayerID(-1)
  , fFillAll(kTRUE)
  , fNCombineBin(1)
{  
  //
  // Default constructor
  //
  for (Int_t i=0;i<6; i++) fResolHisto[i]=0;
}


//________________________________________________________________________
AliTrackComparison::AliTrackComparison(const Text_t *name, const Text_t *title)
  :TNamed(name,title)
  , fStep(1)
  , fLowBinDY(-10)
  , fUpBinDY(10)
  , fLowBinDZ(-10)
  , fUpBinDZ(10)
  , fLowBinDSnp(-0.5)
  , fUpBinDSnp(0.5)
  , fLowBinDTheta(-0.5)
  , fUpBinDTheta(0.5)
  , fLowBin1Pt(-3)
  , fUpBin1Pt(3)
  , fLowBin1PtLoss(-2)
  , fUpBin1PtLoss(2)
  , fNBinsDY(50)
  , fNBinsDZ(50)
  , fNBinsDSnp(50)
  , fNBinsDTheta(50)
  , fNBins1Pt(50)
  , fNBins1PtLoss(100)
  , fLayerID(-1)
  , fFillAll(kTRUE)
  , fNCombineBin(1)
{
  //
  // Non default cosntructor
  //
  for (Int_t i=0;i<6; i++) fResolHisto[i]=0;
}

//________________________________________________________________________
AliTrackComparison::AliTrackComparison(const AliTrackComparison& comp)
  :TNamed(comp)
  , fStep(comp.fStep)
  , fLowBinDY(comp.fLowBinDY)
  , fUpBinDY(comp.fUpBinDY)
  , fLowBinDZ(comp.fLowBinDZ)
  , fUpBinDZ(comp.fUpBinDZ)
  , fLowBinDSnp(comp.fLowBinDSnp)
  , fUpBinDSnp(comp.fUpBinDSnp)
  , fLowBinDTheta(comp.fLowBinDTheta)
  , fUpBinDTheta(comp.fUpBinDTheta)
  , fLowBin1Pt(comp.fLowBin1Pt)
  , fUpBin1Pt(comp.fUpBin1Pt)
  , fLowBin1PtLoss(comp.fLowBin1PtLoss)
  , fUpBin1PtLoss(comp.fUpBin1PtLoss)
  , fNBinsDY(comp.fNBinsDY)
  , fNBinsDZ(comp.fNBinsDZ)
  , fNBinsDSnp(comp.fNBinsDSnp)
  , fNBinsDTheta(comp.fNBinsDTheta)
  , fNBins1Pt(comp.fNBins1Pt)
  , fNBins1PtLoss(comp.fNBins1PtLoss)
  , fLayerID(comp.fLayerID)
  , fFillAll(comp.fFillAll)
  , fNCombineBin(comp.fNCombineBin)
{
  //
  // copy constructor
  //

  for (Int_t i=0;i<6; i++) fResolHisto[i]=comp.fResolHisto[i];
}

//________________________________________________________________________
AliTrackComparison& AliTrackComparison::operator=(const AliTrackComparison& comp)
{
  //
  //
  //
  if(this != &comp) {
    TNamed::operator=(comp);
  }
  return *this;
}

//________________________________________________________________________
void AliTrackComparison::Init(){
  //
  //Initilized the output histograms
  //
  MakeHistos();

}

//________________________________________________________________________
AliTrackComparison::~AliTrackComparison(){
  //
  //
  //
}
 
//________________________________________________________________________
void AliTrackComparison::Analyze() {
  //
  //
  //
}

//________________________________________________________________________
Int_t AliTrackComparison::AddTracks(AliTrackReference *ref0,  AliTrackReference *ref1, Double_t mass, Int_t charge)
{
  // Make track param out of track reference
  // Test propagation from ref0 to ref1
  // Fill the THnSparse with ref0 and ref1

  AliExternalTrackParam *param0 = 0;
  AliExternalTrackParam *param1 = 0;
   
  param0=MakeTrack(ref0,charge);
  param1=MakeTrack(ref1,charge);

  if (!param0 || !param1) return 0;
  
  Double_t tr1Pt = param0->GetSigned1Pt();

  if(!PropagateToPoint(param0,param1,mass)) return 0;

  FillHistos(param0,param1,tr1Pt);
  return 1;
}

//________________________________________________________________________
Int_t AliTrackComparison::AddTracks(AliExternalTrackParam *param0,  AliExternalTrackParam *param1, Double_t mass)
{
  //Test propagation from param0 to param1
  //Fill the THnSparse with param0 and param1
  //
  Double_t tr1Pt=param0->GetSigned1Pt();
  if( !PropagateToPoint(param0,param1,mass)) return 0;
  FillHistos(param0,param1,tr1Pt);
  return 1;
}

//________________________________________________________________________
Int_t AliTrackComparison::AddTracks(AliExternalTrackParam *param0,  AliTrackPoint *point1, Double_t mass, Double_t energy, Double_t *vxyz)
{
  //Test propagation from param0 to point1
  //This function is usually called in real data analysis when only the
  //position of the track point is known. In this case, the angles 
  //in the track param are not the angles of the track momentum, but position.
  //Only the first two and last two THnSparse are meaninglful and should be 
  //filled. Set this via SetFillAll(kFALSE)

  Double_t gPos[3]= {point1->GetX(),point1->GetY(),point1->GetZ()};

  Double_t pos[3], pxyz[3];
  for(Int_t i=0; i<3; i++) 
    pos[i] = gPos[i]-vxyz[i];
  Double_t R = TMath::Sqrt(pos[0]*pos[0]+pos[1]*pos[1]+pos[2]*pos[2]);
  for(Int_t i=0; i<3; i++) pxyz[i]= energy*pos[i]/R;

  Double_t cv[21];
  for (Int_t i=0; i<21;i++) cv[i]=0;
  AliExternalTrackParam * param1 = new AliExternalTrackParam(gPos,pxyz,cv,param0->Charge());

  if(!param1) return 0;
  Double_t tr1Pt = param0->GetSigned1Pt();
  if(!PropagateToPoint(param0,param1,mass)) return 0;

  FillHistos(param0,param1,tr1Pt);
  return 1;
}

//________________________________________________________________________
Bool_t AliTrackComparison::PropagateToPoint(AliExternalTrackParam *param0, AliExternalTrackParam *param1,  Double_t mass)
{
  //
  //Extrapolate is performed 
  //
  Double_t radius = param1->GetX();
  param0->Rotate(param1->GetAlpha());
  AliTracker::PropagateTrackToBxByBz(param0, radius+fStep, mass, fStep, kFALSE,0.99,-1);
  Bool_t isOK = param0->PropagateTo(radius,AliTracker::GetBz());
  return isOK;
}

//________________________________________________________________________
AliExternalTrackParam * AliTrackComparison::MakeTrack(const AliTrackReference* ref, Int_t charge)
{
  //
  // Make track out of the track ref
  // the covariance matrix - equal 0 - starting from ideal MC position
  Double_t xyz[3]={ref->X(),ref->Y(),ref->Z()};
  Double_t pxyz[3]={ref->Px(),ref->Py(),ref->Pz()};
  Double_t cv[21];
  for (Int_t i=0; i<21;i++) cv[i]=0;
  AliExternalTrackParam * param = new AliExternalTrackParam(xyz,pxyz,cv,charge);
  return param;
}

//________________________________________________________________________
Long64_t AliTrackComparison::Merge(TCollection *const li) {
  //
  //Merge the comparison objects
  //   
  TIterator* iter = li->MakeIterator();
  AliTrackComparison* comp = 0;
  TString strName(GetName());
  while ((comp = (AliTrackComparison*)iter->Next())) {
    if (!comp->InheritsFrom(AliTrackComparison::Class())) {
      return -1;
    }
    if (strName.CompareTo(comp->GetName())!=0) return -1;
    // add histograms here...
    Add(comp);
  }
  return 0;  
}

//________________________________________________________________________
void  AliTrackComparison::Add(AliTrackComparison *const comp){
  //
  // Add THnSparse
  //
  for (Int_t i=0;i<6;i++){
    if (!fResolHisto[i]) 
      continue;
    THnSparse * h0 = (THnSparse*)fResolHisto[i];
    THnSparse * h1 = (THnSparse*)comp->GetHnSparse(i);
    if (h0&&h1) h0->Add(h1);
  }
}


//________________________________________________________________________
void AliTrackComparison::MakeHistos()
{
  //
  //Called in Init() to initialize histograms
  // 
  Double_t xminTrack[5], xmaxTrack[5];
  Int_t   binsTrack[5];
  TString axisName[5];
  TString axisTitle[5];
  TString hisNames[6]={"DeltaY","DeltaZ","DeltaSnp","DeltaTheta","Delta1Pt","1PtLoss"};
  Double_t lowBins[6]={fLowBinDY, fLowBinDZ, fLowBinDSnp, fLowBinDTheta, fLowBin1Pt, fLowBin1PtLoss};
  Double_t upBins[6]={fUpBinDY, fUpBinDZ, fUpBinDSnp, fUpBinDTheta, fUpBin1Pt, fUpBin1PtLoss};
  Int_t nBins[6] = {fNBinsDY, fNBinsDZ, fNBinsDSnp, fNBinsDTheta, fNBins1Pt, fNBins1PtLoss};
  //
  axisName[0]   ="#Delta";
  axisTitle[0]  ="#Delta";
  //
  binsTrack[1] =40;
  xminTrack[1] =-1.0; xmaxTrack[1]=1.0;
  axisName[1]  ="tanTheta";
  axisTitle[1]  ="tan(#Theta)";
  //
  binsTrack[2] =180;
  xminTrack[2] =-TMath::Pi(); xmaxTrack[2]=TMath::Pi(); 
  axisName[2]  ="phi";
  axisTitle[2]  ="#phi";
  //
  binsTrack[3] =120;
  xminTrack[3] =-3.; xmaxTrack[3]=3.;   // 0.33 GeV cut 
  axisName[3]  ="1pt";
  axisTitle[3]  ="1/pt";
  //
  binsTrack[4] =22;
  xminTrack[4] =0; xmaxTrack[4]=22;  
  axisName[4]  ="LayerID";
  axisTitle[4] ="LayerID";

  for (Int_t ihis=0; ihis<6; ihis++){
    // modify ranges for bin 0
    //
    binsTrack[0]=nBins[ihis];
    xminTrack[0]=lowBins[ihis];
    xmaxTrack[0]=upBins[ihis];
    fResolHisto[ihis] = new THnSparseF(hisNames[ihis],hisNames[ihis],  5, binsTrack,xminTrack, xmaxTrack);
    for (Int_t ivar=0;ivar<5;ivar++){
      fResolHisto[ihis]->GetAxis(ivar)->SetName(axisName[ivar].Data());
      fResolHisto[ihis]->GetAxis(ivar)->SetTitle(axisTitle[ivar].Data());
    }
  }
}

//________________________________________________________________________
void AliTrackComparison::FillHistos(AliExternalTrackParam *param0, AliExternalTrackParam *param1, Double_t tr1Pt)
{
  //Fill the THnSparse. 
  //In case of not filling all, only the 4 out of 6 THnSparse are filed
  //
  Double_t dY     = param1->GetY()-param0->GetY();        //Residual in Y
  Double_t dZ     = param1->GetZ()-param0->GetZ();        //Residual in Z
  Double_t dSnp   = param1->GetSnp()-param0->GetSnp();    //Residual in sin(phi)
  Double_t dTheta = param1->Theta()-param0->Theta();      //Residual in Theta
  Double_t d1Pt   = param1->GetSigned1Pt()-param0->GetSigned1Pt(); //Residual in 1/pT
  Double_t d1PtLoss = param0->GetSigned1Pt()-tr1Pt;       //Corrected energy loss

  Double_t globalPos[3];
  param1->GetXYZ(globalPos);
  //printf("param1: Atan(y,x)=%5.3f | phi=%5.3f\n",TMath::ATan2(globalPos[1],globalPos[0]),param1->Phi());
  //printf("trkP=%5.3f | param0=%5.3f | param1=%5.3f\n",trP,param0->GetP(),param1->GetP());

  Double_t residual[6] = {dY,dZ,dSnp,dTheta,d1Pt,d1PtLoss};
  Double_t argu[6][5];
  for(Int_t j=0; j<6; j++)
    {
      if(!fFillAll && j<4 && j>1) continue;
      argu[j][0] = residual[j];
      argu[j][1] = param1->GetTgl();
      argu[j][2] = TMath::ATan2(globalPos[1],globalPos[0]);
      argu[j][3] = param1->GetSigned1Pt();
      argu[j][4] = fLayerID;
      fResolHisto[j]->Fill(argu[j]);
    } 
}

//________________________________________________________________________
void   AliTrackComparison::MakeDistortionMap(Double_t refX, Int_t type){
  //
  // make a distortion map out of the residual histogram
  // Results are written to the debug streamer - pcstream
  // Parameters:
  //   pcstream   - file to write the tree
  //   run        - run number
  //   refX       - track matching reference X
  //   type       - 0- y 1-z,2 -snp, 3-theta, 4-1/pt, 5-corrected 1/pT
  // THnSparse axes:
  // OBJ: TAxis     #Delta  #Delta
  // OBJ: TAxis     tanTheta        tan(#Theta)
  // OBJ: TAxis     phi     #phi
  // OBJ: TAxis     1/pt    1/pt
  // OBJ: TAxis     LayerID LayerID  
  // marian.ivanov@cern.ch
  
  //Double_t refX=365;   //temporary
  Int_t    run=0;   //temporary
  TString hname = Form("%s_%d",GetName(),type);
  THnSparse * his0= GetHnSparse(type);
  
  TString dsName;
  dsName=GetName();
  dsName+=Form("Debug_%d.root",type);
  printf(" Create debug streamer \n");
  dsName.ReplaceAll(" ","");
  TTreeSRedirector *pcstream = new TTreeSRedirector(dsName.Data());


  const Int_t kMinEntries=10;
  Double_t bz=AliTrackerBase::GetBz();
  Int_t idim[4]={0,1,2,3};
  //
  //
  //
  Int_t nbins3=his0->GetAxis(3)->GetNbins();
  Int_t first3=his0->GetAxis(3)->GetFirst();
  Int_t last3 =his0->GetAxis(3)->GetLast();
  //
  for (Int_t ibin3=first3; ibin3<last3; ibin3+=1){   // axis 3 - 1/pt
    his0->GetAxis(3)->SetRange(TMath::Max(ibin3-fNCombineBin,1),TMath::Min(ibin3+fNCombineBin,nbins3));
    Double_t      x3= his0->GetAxis(3)->GetBinCenter(ibin3);
    THnSparse * his3= his0->Projection(3,idim);         //projected histogram according selection 3
    //
    Int_t nbins2    = his3->GetAxis(2)->GetNbins();
    Int_t first2    = his3->GetAxis(2)->GetFirst();
    Int_t last2     = his3->GetAxis(2)->GetLast();
    //
    for (Int_t ibin2=first2; ibin2<last2; ibin2+=1){   // axis 2 - phi
      his3->GetAxis(2)->SetRange(TMath::Max(ibin2-fNCombineBin,1),TMath::Min(ibin2+fNCombineBin,nbins2));
      Double_t      x2= his3->GetAxis(2)->GetBinCenter(ibin2);
      THnSparse * his2= his3->Projection(2,idim);         //projected histogram according selection 2
      Int_t nbins1     = his2->GetAxis(1)->GetNbins();
      Int_t first1     = his2->GetAxis(1)->GetFirst();
      Int_t last1      = his2->GetAxis(1)->GetLast();
      for (Int_t ibin1=first1; ibin1<last1; ibin1++){   //axis 1 - tan(theta)
	//
	Double_t       x1= his2->GetAxis(1)->GetBinCenter(ibin1);
	Double_t binWidth= his2->GetAxis(1)->GetBinWidth(ibin1);

	his2->GetAxis(1)->SetRange(TMath::Max(ibin1-fNCombineBin,1),TMath::Min(ibin1+fNCombineBin,nbins1));
	if (TMath::Abs(x1)<(fNCombineBin+0.5)*binWidth){
	  if (x1<0) his2->GetAxis(1)->SetRange(TMath::Max(ibin1-fNCombineBin,1),TMath::Min(ibin1,nbins1));
	  if (x1>0) his2->GetAxis(1)->SetRange(TMath::Max(ibin1,1),TMath::Min(ibin1+fNCombineBin,nbins1));
	}
	TH1 * hisDelta = his2->Projection(0);
	//
	Double_t entries = hisDelta->GetEntries();
	Double_t mean=0, rms=0;
	if (entries>kMinEntries){
	  mean    = hisDelta->GetMean(); 
	  rms = hisDelta->GetRMS(); 
	}
	Double_t sector = 9.*x2/TMath::Pi();
	if (sector<0) sector+=18;
	Double_t dsec = sector-Int_t(sector)-0.5;
	Double_t quantiles[5]={0};
	Double_t mean75=0, rms75=0;
	Double_t prob[5]={0, 0.25,0.5,0.75,1};
	if (entries>kMinEntries){
	  hisDelta->GetQuantiles(5,quantiles,prob);
	  if(x3>0)hisDelta->GetXaxis()->SetRangeUser(quantiles[0], quantiles[3]);
	  else hisDelta->GetXaxis()->SetRangeUser(quantiles[1], quantiles[4]);
	  rms75=hisDelta->GetRMS();
	  mean75=hisDelta->GetMean();
	}
	
	Double_t pt = TMath::Abs(x3);
	Double_t z=refX*x1;
	(*pcstream)<<"distortion"<<
	  "run="<<run<<
	  "bz="<<bz<<
	  "theta="<<x1<<          // tan(theta)
	  "phi="<<x2<<            // phi
	  "z="<<z<<               // dummy z
	  "mpt="<<x3<<            // signed 1/pt
	  "1Pt="<<pt<<
	  "entries="<<entries<<   // entries
	  "mean="<<mean<<         // normal mean
	  //
	  "q25="<<quantiles[1]<<  // quantiles of distribution - importnat for asymetric distibutions
	  "q50="<<quantiles[2]<<  // quantiles of distribution - importnat for asymetric distibutions
	  "q75="<<quantiles[3]<<  // quantiles of distribution - importnat for asymetric distibutions
	  "mean75="<<mean75<<     // mean of the truncated distribution 0-75%
	  "rms75="<<rms75<<       // rms of the truncated distibution up to 0-75%
	  //
	  "rms="<<rms<<           // normal rms
	  "refX="<<refX<<         // track matching refernce plane
	  "type="<<type<<         // tpye of residuals
	  "sector="<<sector<<     // sector number according to TPC standard
	  "dsec="<<dsec<<
	  "\n";
	delete hisDelta;
	//printf("%f\t%f\t%f\t%f\t%f\n",x3,x2,x1, entries,mean);
      }
      delete his2;
    }
    delete his3;
  }

  printf(" Finished! Close debug streamer \n");
  delete pcstream;
}

/*
  .x ~/rootlogon.C
   //TFile f("outFile.root");
   //TList * list = f.Get("jthaeder_OutterTracking");
  TFile f("/u/alice-st/marr/EnergyCorrection/TrainAnalysis/trunk/marr_TrackingTest.root");
  TList * list = f.Get("marr_TrackingTest");

  AliTrackComparison * compTOF = list->FindObject("TPCOutToTOFIn");
  AliTrackComparison * compEMCAL = list->FindObject("TPCOutToEMCalInPion");
  AliTrackComparison * compEMCALEl = list->FindObject("TPCOutToEMCalInElec");
  AliTrackComparison * compHMPID = list->FindObject("TPCOutToHMPIDIn");
  Double_t refX=438;

  compEMCAL-> MakeDistortionMap(refX,0);
  compEMCAL-> MakeDistortionMap(refX,1);
  compEMCAL-> MakeDistortionMap(refX,4);
  compEMCALEl-> MakeDistortionMap(refX,0);
  compEMCALEl-> MakeDistortionMap(refX,1);
  compEMCALEl-> MakeDistortionMap(refX,4);
  
  compTOF->SetNCombineBin(3)
  compTOF->MakeDistortionMap(365,4);
  compTOF->MakeDistortionMap(365,0);
  
  TFile f("emcalDistortion.root");
  

  // ideal case - no mislaignment dy only due energy loss correction
  TPCOutToEMCalInElec_0->Draw("mean:mpt","entries>10");
  //
  TPCOutToEMCalInElec_4->Draw("mean/abs(mpt):mpt","entries>10");
  // delta 1/pt
  TPCOutToEMCalInPion_4->Draw("mean:mpt","entries>10");
  // (delta pt)/pt
  TPCOutToEMCalInPion_4->Draw("mean/abs(mpt):mpt","entries>10");  // pions  - bias +-1 %
  //
  TPCOutToEMCalInElec_4->Draw("mean/abs(mpt):mpt","entries>10");  // electrons  - bias +-20 %
  //




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