ROOT logo
////////////////////////////////////////////////////////////////////////////////
//345678901234567890123456789012345678901234567890123456789012345678901234567890
//       1         2         3         4         5         6         7         8
//
// Tool to study two-track effects in ALICE for femtoscopic analyses
// J. Mercado <mercado@physi.uni-heidelberg.de> Last modified: 20.01.2011
//
////////////////////////////////////////////////////////////////////////////////

#include "AliTwoTrackRes.h"
#include <iostream>
#include <fstream>
#include "TMath.h"
#include "TROOT.h"
#include "TFile.h"
#include "TChain.h"
#include "TLeaf.h"
#include "TNtuple.h"
#include "TRandom2.h"

ClassImp(AliTwoTrackRes)

//______________________________________________________________________________
// Constructor(s)

AliTwoTrackRes::AliTwoTrackRes(const char *name) : 
  AliAnalysisTask(name,""), fChain(0), fESDEvent(0), 
  fOutContainer(0), fTrackCuts(0), fNTuple1(0), 
  fNTuple2(0), fP1(), fP2(), fPb1(), fPb2(), fP(), fQ(), fTpcEnt1(), fTpcEnt2(), 
  fTpcDist(), fOutFilename()
{
  DefineInput(0, TChain::Class());     // Slot input 0 reads from a TChain  
  DefineOutput(0, TObjArray::Class()); // Slot output 0 writes into a TObjArray
}

AliTwoTrackRes::AliTwoTrackRes(const AliTwoTrackRes& aTwoTrackRes) : 
  AliAnalysisTask(aTwoTrackRes), fChain(0), fESDEvent(0), fOutContainer(0), 
  fTrackCuts(0), fNTuple1(0), fNTuple2(0), fP1(), fP2(), fPb1(), fPb2(), fP(), 
  fQ(), fTpcEnt1(), fTpcEnt2(), fTpcDist(), fOutFilename()
{
  //Copy constructor
  fChain = aTwoTrackRes.fChain;
  fESDEvent = aTwoTrackRes.fESDEvent;
  fOutContainer = aTwoTrackRes.fOutContainer;
  fTrackCuts = aTwoTrackRes.fTrackCuts;
  fNTuple1 = aTwoTrackRes.fNTuple1;
  fNTuple2 = aTwoTrackRes.fNTuple2;
  fP1 = aTwoTrackRes.fP1;
  fP2 = aTwoTrackRes.fP2;
  fPb1 = aTwoTrackRes.fPb1;
  fPb2 = aTwoTrackRes.fPb2;
  fP = aTwoTrackRes.fP;
  fQ = aTwoTrackRes.fQ;
  fTpcEnt1 = aTwoTrackRes.fTpcEnt1;
  fTpcEnt2 = aTwoTrackRes.fTpcEnt2;
  fTpcDist = aTwoTrackRes.fTpcDist;
  fOutFilename = aTwoTrackRes.fOutFilename;
}

AliTwoTrackRes& AliTwoTrackRes::operator=(const AliTwoTrackRes& aTwoTrackRes)
{
  // Assignment operator
  if (this == &aTwoTrackRes)
    return *this;
  fChain = aTwoTrackRes.fChain;
  fESDEvent = aTwoTrackRes.fESDEvent;
  fOutContainer = aTwoTrackRes.fOutContainer;
  fTrackCuts = aTwoTrackRes.fTrackCuts;
  fNTuple1 = aTwoTrackRes.fNTuple1;
  fNTuple2 = aTwoTrackRes.fNTuple2;
  fP1 = aTwoTrackRes.fP1;
  fP2 = aTwoTrackRes.fP2;
  fPb1 = aTwoTrackRes.fPb1;
  fPb2 = aTwoTrackRes.fPb2;
  fP = aTwoTrackRes.fP;
  fQ = aTwoTrackRes.fQ;
  fTpcEnt1 = aTwoTrackRes.fTpcEnt1;
  fTpcEnt2 = aTwoTrackRes.fTpcEnt2;
  fTpcDist = aTwoTrackRes.fTpcDist;
  fOutFilename = aTwoTrackRes.fOutFilename;
  return *this;
}

AliTwoTrackRes::~AliTwoTrackRes() {printf("AliTwoTrackRes destroyed\n");}

void AliTwoTrackRes::ConnectInputData(Option_t *) {  
//______________________________________________________________________________
// Connect input data and initialize track cuts

  fChain = (TChain*)GetInputData(0);
  fESDEvent = new AliESDEvent();
  fESDEvent->ReadFromTree(fChain);

  // Cuts to select primary tracks (ITS+TPC)
  fTrackCuts = new AliESDtrackCuts("AliESDtrackCuts");
  Double_t cov1, cov2, cov3, cov4, cov5; // diagonal cov. matrix elements
  Double_t nSigma;                       // max. DCA to primary vertex
  Int_t minNClustersTPC;                 // min. number of clusters per TPC tracks
  Double_t maxChi2PerClusterTPC;         // max. chi2 per cluster per TPC track  
  Int_t cutMode = 1;                     // select cut mode
  if (cutMode == 1) {
  cov1 = 2; cov2 = 2; cov3 = 0.5; cov4 = 0.5; cov5 = 2;
  nSigma = 3; minNClustersTPC = 75; maxChi2PerClusterTPC = 3.5;
  fTrackCuts->SetMaxCovDiagonalElements(cov1, cov2, cov3, cov4, cov5);
  fTrackCuts->SetMaxNsigmaToVertex(nSigma);
  fTrackCuts->SetRequireSigmaToVertex(kTRUE);
  fTrackCuts->SetRequireTPCRefit(kTRUE);
  fTrackCuts->SetAcceptKinkDaughters(kFALSE);
  fTrackCuts->SetMinNClustersTPC(minNClustersTPC);
  fTrackCuts->SetMaxChi2PerClusterTPC(maxChi2PerClusterTPC);  
  TString tag("Global tracking");}
}

void AliTwoTrackRes::CreateOutputObjects() {
//______________________________________________________________________________
// Create output objects 

  fNTuple1 = new TNtuple("nt1","True pairs",
  "pt1:eta1:phi1:nsh1:pt2:eta2:phi2:nsh2:qinv:mindist:dist:corr:qfac");
  fNTuple2 = new TNtuple("nt2","Mixed pairs",
  "pt1:eta1:phi1:nsh1:pt2:eta2:phi2:nsh2:qinv:mindist:dist:corr:qfac");
  Int_t c = 0;
  fOutContainer = new TObjArray(2);
  fOutContainer->AddAt(fNTuple1, c++);
  fOutContainer->AddAt(fNTuple2, c++);
}

void AliTwoTrackRes::Exec(Option_t *) {
//______________________________________________________________________________
// Create true and mixed pairs keeping some track parameters

  double bfield = 5.0;
  static int nr=0;
  if (nr == 0) printf("\tStarting event loop...\n");
  printf("\rProcessing event %8d", nr);
  Double_t mpi = 0.13957; // [GeV/c^2]
  Double_t pidTrk1[AliPID::kSPECIES], pidTrk2[AliPID::kSPECIES];
  Int_t tpcIn = 80;   // [cm]
  Int_t tpcOut = 250; // [cm]
  Double_t tdist[170];
  Double_t tdistrot[170];
  Double_t tpcEnt1[3], tpcEnt2[3], pos1[3];
  TVector3 x1, x2, diff;
  TBits clu1, clu2, sha1, sha2;
  TRandom2 rnd;
  Int_t  ntracks = fESDEvent->GetNumberOfTracks();
  for(Int_t itrack = 0; itrack < ntracks; itrack++) {
    AliESDtrack *track1 = fESDEvent->GetTrack(itrack);
    AliExternalTrackParam *trp1 = const_cast<AliExternalTrackParam*> 
      (track1->GetTPCInnerParam());
    if (!trp1) continue;
    if (!track1->IsOn(AliESDtrack::kTPCpid)) continue;
    track1->GetTPCpid(pidTrk1);
    Int_t q1 = trp1->Charge();
    if (!((fTrackCuts->AcceptTrack(track1)) && (q1 == 1) &&
	  (pidTrk1[AliPID::kPion]+pidTrk1[AliPID::kMuon] > 0.5))) continue;
    if (!track1->GetInnerXYZ(tpcEnt1)) continue;
    clu1 = track1->GetTPCClusterMap();
    sha1 = track1->GetTPCSharedMap();
    SetTr1(track1->Pt(), track1->Eta(), track1->Phi(), mpi);
    SetTpcEnt1(tpcEnt1[0], tpcEnt1[1], tpcEnt1[2]);
    for(Int_t jtrack = 0; jtrack < itrack; jtrack++) {
      AliESDtrack *track2 = fESDEvent->GetTrack(jtrack);
      AliExternalTrackParam *trp2 = const_cast<AliExternalTrackParam*> 
	(track2->GetTPCInnerParam());
      if (!trp2) continue;
      if (!track2->IsOn(AliESDtrack::kTPCpid)) continue;
      track2->GetTPCpid(pidTrk2);
      Int_t q2 = trp2->Charge();
      if (!((fTrackCuts->AcceptTrack(track2)) && (q2 == 1) &&
	    (pidTrk2[AliPID::kPion]+pidTrk2[AliPID::kMuon] > 0.5))) continue;
      if (!track2->GetInnerXYZ(tpcEnt2)) continue;
      clu2 = track2->GetTPCClusterMap();
      sha2 = track2->GetTPCSharedMap();
      SetTr2(track2->Pt(), track2->Eta(), track2->Phi(), mpi);
      SetTpcEnt2(tpcEnt2[0], tpcEnt2[1], tpcEnt2[2]);
      for (Int_t i = tpcIn; i < tpcOut; i++) { // Minimum distance 
	trp1->GetDistance(trp2, (double) i, pos1, bfield);
	x1.SetXYZ(pos1[0], pos1[1], pos1[2]);
	tdist[i-tpcIn] = x1.Mag();
	x1.SetXYZ(-pos1[0], -pos1[1], pos1[2]);
	tdistrot[i-tpcIn] = x1.Mag();
      }
      Double_t mindist = 100000;
      Int_t jmin=0;
      for (Int_t j = 0; j < tpcOut-tpcIn; j++) {
	if (tdist[j] < mindist) {jmin=j;  mindist = tdist[j]; }
      }
      //      Double_t mindist = MinDist(track1, track2);
      Double_t dist = Dist();
      Double_t dphi = DPhi();
      Double_t deta = DEta();
      Int_t    nsh1 = GetNSha(clu1, sha1);
      Int_t    nsh2 = GetNSha(clu2, sha2);
      Double_t corr = Corr(clu1, clu2, sha1, sha2);
      Double_t qfac = Qfac(clu1, clu2, sha1, sha2);
      if ((TMath::Abs(track1->Eta())>0.8)&&(TMath::Abs(track2->Eta())>0.8)) continue;
      if ((TMath::Abs(dphi)<0.35)&&(deta<0.35)) {
      FillNTuple1(mindist,dist,corr,qfac,nsh1,nsh2);}    // True
      Double_t tr2rot = RotTr2Phi();                // Rotate trck2
      SetTr2(track2->Pt(), track2->Eta(), tr2rot, mpi);
      tpcEnt2[0] = -tpcEnt2[0];
      tpcEnt2[1] = -tpcEnt2[1];
      Double_t distrot = Dist();
      Double_t dphirot = DPhi();
      Double_t mindistrot = 100000;
      jmin=0;
      for (Int_t j = 0; j < tpcOut-tpcIn; j++) {
	if (tdistrot[j] < mindistrot) {jmin=j;  mindistrot = tdistrot[j]; }
      }
      if ((TMath::Abs(dphirot)<0.35)&&(deta<0.35)) {
	if (rnd.Rndm() < 0.5) NoSwap();
	else Swap(); 
	FillNTuple2(mindistrot,distrot,corr,qfac,nsh1,nsh2);} // Mixed
    }
  }
  PostData(0, fOutContainer);
  nr++;
}

void AliTwoTrackRes::Terminate(Option_t *) {
//______________________________________________________________________________
// Write output and clean up

  fOutContainer = (TObjArray*)GetOutputData(0);
  TFile *f1  = new TFile( fOutFilename, "RECREATE" );
  fOutContainer->Write();
  f1->Flush();
  f1->Close();
  delete f1;
  delete fChain;
  delete fNTuple1;
  delete fNTuple2;
  printf("\n");
}

//______________________________________________________________________________
// Miscellaneous methods

// Set tracks 
void AliTwoTrackRes::SetTr1(double pt1, double eta1, double phi1, double m) {
  fP1.SetPtEtaPhiM(pt1, eta1, phi1, m);}
void AliTwoTrackRes::SetTr2(double pt2, double eta2, double phi2, double m) {
  fP2.SetPtEtaPhiM(pt2, eta2, phi2, m);}

// Set nominal TPC entrance coordinates
void AliTwoTrackRes::SetTpcEnt1(double x1, double y1, double z1) {
  fTpcEnt1.SetX(x1); fTpcEnt1.SetY(y1); fTpcEnt1.SetZ(z1);}
void AliTwoTrackRes::SetTpcEnt2(double x2, double y2, double z2) {
  fTpcEnt2.SetX(x2); fTpcEnt2.SetY(y2); fTpcEnt2.SetZ(z2);}

double AliTwoTrackRes::MinDist(AliExternalTrackParam *trk1,
			       AliExternalTrackParam *trk2) {
// Calculate minimum track separation within the TPC

  int tpcIn = 0;   // [cm]
  int tpcOut = 170; // [cm]
  double tdist[170], pos[3];
  TVector3 x;
  for (int i = tpcIn; i < tpcOut; i++) {
    trk1->GetDistance(trk2, i, pos, 5000);
    x.SetXYZ(pos[0], pos[1], pos[2]);
    tdist[i-tpcIn] = x.Mag();
  }
  double maxdist = 0.0;
  for (int j = 0; j < tpcOut-tpcIn; j++) {
    if (tdist[j] > maxdist) { maxdist = tdist[j]; }
  }
  double mindist = maxdist;
  for (int j = 0; j < tpcOut-tpcIn; j++) {
    if (tdist[j] < mindist) { mindist = tdist[j]; }
  }
  return mindist;}

int AliTwoTrackRes::GetNSha(TBits cl, TBits sh) {
// Get number of shared clusters

  int ncl = cl.GetNbits();
  int sum = 0; 
  for(int i = 0; i < ncl; i++) {
    if (!cl.TestBitNumber(i)) continue;
    int n = sh.TestBitNumber(i);
    sum += n;}
  return sum;}

double AliTwoTrackRes::Corr(TBits cl1,  TBits cl2, TBits sh1, TBits sh2) {
// Calculate correlation coefficient

  int ncl1 = cl1.GetNbits();
  int ncl2 = cl2.GetNbits();
  double sumN = 0;  double sumX = 0;  double sumY = 0;
  double sumXX = 0; double sumYY = 0; double sumXY = 0; double corr = -2.0;
  for(int i = 0; i < ncl1 && i < ncl2; i++) {
    if (!(cl1.TestBitNumber(i)&&cl2.TestBitNumber(i))) continue;
    int x = sh1.TestBitNumber(i);
    int y = sh2.TestBitNumber(i);
    sumN += 1.0;
    sumX += x;
    sumY += y;
    sumXX += x*x;
    sumYY += y*y;
    sumXY += x*y;
  }
  double meanX = sumX/sumN;
  double meanY = sumY/sumN;
  double meanXX = sumXX/sumN;
  double meanYY = sumYY/sumN;
  double meanXY = sumXY/sumN;
  double sX = TMath::Sqrt(TMath::Abs(meanXX-meanX*meanX));
  double sY = TMath::Sqrt(TMath::Abs(meanYY-meanY*meanY));
  if (sX*sY!=0) corr = (meanXY-meanX*meanY)/(sX*sY);
  return corr;}

double AliTwoTrackRes::Qfac(TBits cl1,  TBits cl2, TBits sh1, TBits sh2) {
// Quality factor from AliFemto 

  int ncl1 = cl1.GetNbits();
  int ncl2 = cl2.GetNbits();
  int sumCls = 0; int sumSha = 0; int sumQ = 0;
  double shfrac = 0; double qfactor = 0;
  for(int i = 0; i < ncl1 && i < ncl2; i++) {
    if (cl1.TestBitNumber(i) && cl2.TestBitNumber(i)) { // Both clusters
      if (sh1.TestBitNumber(i) && sh2.TestBitNumber(i)) { // Shared
	sumQ++;
	sumCls+=2;
	sumSha+=2;}
      else {sumQ--; sumCls+=2;}
    }
    else if (cl1.TestBitNumber(i) || cl2.TestBitNumber(i)) { // Non shared
      sumQ++;
      sumCls++;}
  }
  if (sumCls>0) {
    qfactor = sumQ*1.0/sumCls;
    shfrac = sumSha*1.0/sumCls;
  }
  return qfactor;
}

// Rotate second track for mixed pairs
double AliTwoTrackRes::RotTr2Phi() {
  double rot = TVector2::Phi_mpi_pi(fP2.Phi()+TMath::Pi());
  fTpcEnt2.SetPhi(TVector2::Phi_mpi_pi(fTpcEnt2.Phi()+TMath::Pi())); 
  return rot;}

// Fill NTuples
void AliTwoTrackRes::FillNTuple1(double minsep, double sep, double corr, 
				 double qf, int ns1, int ns2) {
  fNTuple1->Fill(fP1.Pt(),fP1.Eta(),fP1.Phi(),ns1,fP2.Pt(),fP2.Eta(),
		 fP2.Phi(),ns2,Qinv(),minsep,sep,corr,qf);}
void AliTwoTrackRes::FillNTuple2(double minsep, double sep, double corr, 
				 double qf, int ns1, int ns2) {
  fNTuple2->Fill(fPb1.Pt(),fPb1.Eta(),fPb1.Phi(),ns1,fPb2.Pt(),fPb2.Eta(),
		 fPb2.Phi(),ns2,Qinv(),minsep,sep,corr,qf);}

//______________________________________________________________________________
// EOF


 AliTwoTrackRes.cxx:1
 AliTwoTrackRes.cxx:2
 AliTwoTrackRes.cxx:3
 AliTwoTrackRes.cxx:4
 AliTwoTrackRes.cxx:5
 AliTwoTrackRes.cxx:6
 AliTwoTrackRes.cxx:7
 AliTwoTrackRes.cxx:8
 AliTwoTrackRes.cxx:9
 AliTwoTrackRes.cxx:10
 AliTwoTrackRes.cxx:11
 AliTwoTrackRes.cxx:12
 AliTwoTrackRes.cxx:13
 AliTwoTrackRes.cxx:14
 AliTwoTrackRes.cxx:15
 AliTwoTrackRes.cxx:16
 AliTwoTrackRes.cxx:17
 AliTwoTrackRes.cxx:18
 AliTwoTrackRes.cxx:19
 AliTwoTrackRes.cxx:20
 AliTwoTrackRes.cxx:21
 AliTwoTrackRes.cxx:22
 AliTwoTrackRes.cxx:23
 AliTwoTrackRes.cxx:24
 AliTwoTrackRes.cxx:25
 AliTwoTrackRes.cxx:26
 AliTwoTrackRes.cxx:27
 AliTwoTrackRes.cxx:28
 AliTwoTrackRes.cxx:29
 AliTwoTrackRes.cxx:30
 AliTwoTrackRes.cxx:31
 AliTwoTrackRes.cxx:32
 AliTwoTrackRes.cxx:33
 AliTwoTrackRes.cxx:34
 AliTwoTrackRes.cxx:35
 AliTwoTrackRes.cxx:36
 AliTwoTrackRes.cxx:37
 AliTwoTrackRes.cxx:38
 AliTwoTrackRes.cxx:39
 AliTwoTrackRes.cxx:40
 AliTwoTrackRes.cxx:41
 AliTwoTrackRes.cxx:42
 AliTwoTrackRes.cxx:43
 AliTwoTrackRes.cxx:44
 AliTwoTrackRes.cxx:45
 AliTwoTrackRes.cxx:46
 AliTwoTrackRes.cxx:47
 AliTwoTrackRes.cxx:48
 AliTwoTrackRes.cxx:49
 AliTwoTrackRes.cxx:50
 AliTwoTrackRes.cxx:51
 AliTwoTrackRes.cxx:52
 AliTwoTrackRes.cxx:53
 AliTwoTrackRes.cxx:54
 AliTwoTrackRes.cxx:55
 AliTwoTrackRes.cxx:56
 AliTwoTrackRes.cxx:57
 AliTwoTrackRes.cxx:58
 AliTwoTrackRes.cxx:59
 AliTwoTrackRes.cxx:60
 AliTwoTrackRes.cxx:61
 AliTwoTrackRes.cxx:62
 AliTwoTrackRes.cxx:63
 AliTwoTrackRes.cxx:64
 AliTwoTrackRes.cxx:65
 AliTwoTrackRes.cxx:66
 AliTwoTrackRes.cxx:67
 AliTwoTrackRes.cxx:68
 AliTwoTrackRes.cxx:69
 AliTwoTrackRes.cxx:70
 AliTwoTrackRes.cxx:71
 AliTwoTrackRes.cxx:72
 AliTwoTrackRes.cxx:73
 AliTwoTrackRes.cxx:74
 AliTwoTrackRes.cxx:75
 AliTwoTrackRes.cxx:76
 AliTwoTrackRes.cxx:77
 AliTwoTrackRes.cxx:78
 AliTwoTrackRes.cxx:79
 AliTwoTrackRes.cxx:80
 AliTwoTrackRes.cxx:81
 AliTwoTrackRes.cxx:82
 AliTwoTrackRes.cxx:83
 AliTwoTrackRes.cxx:84
 AliTwoTrackRes.cxx:85
 AliTwoTrackRes.cxx:86
 AliTwoTrackRes.cxx:87
 AliTwoTrackRes.cxx:88
 AliTwoTrackRes.cxx:89
 AliTwoTrackRes.cxx:90
 AliTwoTrackRes.cxx:91
 AliTwoTrackRes.cxx:92
 AliTwoTrackRes.cxx:93
 AliTwoTrackRes.cxx:94
 AliTwoTrackRes.cxx:95
 AliTwoTrackRes.cxx:96
 AliTwoTrackRes.cxx:97
 AliTwoTrackRes.cxx:98
 AliTwoTrackRes.cxx:99
 AliTwoTrackRes.cxx:100
 AliTwoTrackRes.cxx:101
 AliTwoTrackRes.cxx:102
 AliTwoTrackRes.cxx:103
 AliTwoTrackRes.cxx:104
 AliTwoTrackRes.cxx:105
 AliTwoTrackRes.cxx:106
 AliTwoTrackRes.cxx:107
 AliTwoTrackRes.cxx:108
 AliTwoTrackRes.cxx:109
 AliTwoTrackRes.cxx:110
 AliTwoTrackRes.cxx:111
 AliTwoTrackRes.cxx:112
 AliTwoTrackRes.cxx:113
 AliTwoTrackRes.cxx:114
 AliTwoTrackRes.cxx:115
 AliTwoTrackRes.cxx:116
 AliTwoTrackRes.cxx:117
 AliTwoTrackRes.cxx:118
 AliTwoTrackRes.cxx:119
 AliTwoTrackRes.cxx:120
 AliTwoTrackRes.cxx:121
 AliTwoTrackRes.cxx:122
 AliTwoTrackRes.cxx:123
 AliTwoTrackRes.cxx:124
 AliTwoTrackRes.cxx:125
 AliTwoTrackRes.cxx:126
 AliTwoTrackRes.cxx:127
 AliTwoTrackRes.cxx:128
 AliTwoTrackRes.cxx:129
 AliTwoTrackRes.cxx:130
 AliTwoTrackRes.cxx:131
 AliTwoTrackRes.cxx:132
 AliTwoTrackRes.cxx:133
 AliTwoTrackRes.cxx:134
 AliTwoTrackRes.cxx:135
 AliTwoTrackRes.cxx:136
 AliTwoTrackRes.cxx:137
 AliTwoTrackRes.cxx:138
 AliTwoTrackRes.cxx:139
 AliTwoTrackRes.cxx:140
 AliTwoTrackRes.cxx:141
 AliTwoTrackRes.cxx:142
 AliTwoTrackRes.cxx:143
 AliTwoTrackRes.cxx:144
 AliTwoTrackRes.cxx:145
 AliTwoTrackRes.cxx:146
 AliTwoTrackRes.cxx:147
 AliTwoTrackRes.cxx:148
 AliTwoTrackRes.cxx:149
 AliTwoTrackRes.cxx:150
 AliTwoTrackRes.cxx:151
 AliTwoTrackRes.cxx:152
 AliTwoTrackRes.cxx:153
 AliTwoTrackRes.cxx:154
 AliTwoTrackRes.cxx:155
 AliTwoTrackRes.cxx:156
 AliTwoTrackRes.cxx:157
 AliTwoTrackRes.cxx:158
 AliTwoTrackRes.cxx:159
 AliTwoTrackRes.cxx:160
 AliTwoTrackRes.cxx:161
 AliTwoTrackRes.cxx:162
 AliTwoTrackRes.cxx:163
 AliTwoTrackRes.cxx:164
 AliTwoTrackRes.cxx:165
 AliTwoTrackRes.cxx:166
 AliTwoTrackRes.cxx:167
 AliTwoTrackRes.cxx:168
 AliTwoTrackRes.cxx:169
 AliTwoTrackRes.cxx:170
 AliTwoTrackRes.cxx:171
 AliTwoTrackRes.cxx:172
 AliTwoTrackRes.cxx:173
 AliTwoTrackRes.cxx:174
 AliTwoTrackRes.cxx:175
 AliTwoTrackRes.cxx:176
 AliTwoTrackRes.cxx:177
 AliTwoTrackRes.cxx:178
 AliTwoTrackRes.cxx:179
 AliTwoTrackRes.cxx:180
 AliTwoTrackRes.cxx:181
 AliTwoTrackRes.cxx:182
 AliTwoTrackRes.cxx:183
 AliTwoTrackRes.cxx:184
 AliTwoTrackRes.cxx:185
 AliTwoTrackRes.cxx:186
 AliTwoTrackRes.cxx:187
 AliTwoTrackRes.cxx:188
 AliTwoTrackRes.cxx:189
 AliTwoTrackRes.cxx:190
 AliTwoTrackRes.cxx:191
 AliTwoTrackRes.cxx:192
 AliTwoTrackRes.cxx:193
 AliTwoTrackRes.cxx:194
 AliTwoTrackRes.cxx:195
 AliTwoTrackRes.cxx:196
 AliTwoTrackRes.cxx:197
 AliTwoTrackRes.cxx:198
 AliTwoTrackRes.cxx:199
 AliTwoTrackRes.cxx:200
 AliTwoTrackRes.cxx:201
 AliTwoTrackRes.cxx:202
 AliTwoTrackRes.cxx:203
 AliTwoTrackRes.cxx:204
 AliTwoTrackRes.cxx:205
 AliTwoTrackRes.cxx:206
 AliTwoTrackRes.cxx:207
 AliTwoTrackRes.cxx:208
 AliTwoTrackRes.cxx:209
 AliTwoTrackRes.cxx:210
 AliTwoTrackRes.cxx:211
 AliTwoTrackRes.cxx:212
 AliTwoTrackRes.cxx:213
 AliTwoTrackRes.cxx:214
 AliTwoTrackRes.cxx:215
 AliTwoTrackRes.cxx:216
 AliTwoTrackRes.cxx:217
 AliTwoTrackRes.cxx:218
 AliTwoTrackRes.cxx:219
 AliTwoTrackRes.cxx:220
 AliTwoTrackRes.cxx:221
 AliTwoTrackRes.cxx:222
 AliTwoTrackRes.cxx:223
 AliTwoTrackRes.cxx:224
 AliTwoTrackRes.cxx:225
 AliTwoTrackRes.cxx:226
 AliTwoTrackRes.cxx:227
 AliTwoTrackRes.cxx:228
 AliTwoTrackRes.cxx:229
 AliTwoTrackRes.cxx:230
 AliTwoTrackRes.cxx:231
 AliTwoTrackRes.cxx:232
 AliTwoTrackRes.cxx:233
 AliTwoTrackRes.cxx:234
 AliTwoTrackRes.cxx:235
 AliTwoTrackRes.cxx:236
 AliTwoTrackRes.cxx:237
 AliTwoTrackRes.cxx:238
 AliTwoTrackRes.cxx:239
 AliTwoTrackRes.cxx:240
 AliTwoTrackRes.cxx:241
 AliTwoTrackRes.cxx:242
 AliTwoTrackRes.cxx:243
 AliTwoTrackRes.cxx:244
 AliTwoTrackRes.cxx:245
 AliTwoTrackRes.cxx:246
 AliTwoTrackRes.cxx:247
 AliTwoTrackRes.cxx:248
 AliTwoTrackRes.cxx:249
 AliTwoTrackRes.cxx:250
 AliTwoTrackRes.cxx:251
 AliTwoTrackRes.cxx:252
 AliTwoTrackRes.cxx:253
 AliTwoTrackRes.cxx:254
 AliTwoTrackRes.cxx:255
 AliTwoTrackRes.cxx:256
 AliTwoTrackRes.cxx:257
 AliTwoTrackRes.cxx:258
 AliTwoTrackRes.cxx:259
 AliTwoTrackRes.cxx:260
 AliTwoTrackRes.cxx:261
 AliTwoTrackRes.cxx:262
 AliTwoTrackRes.cxx:263
 AliTwoTrackRes.cxx:264
 AliTwoTrackRes.cxx:265
 AliTwoTrackRes.cxx:266
 AliTwoTrackRes.cxx:267
 AliTwoTrackRes.cxx:268
 AliTwoTrackRes.cxx:269
 AliTwoTrackRes.cxx:270
 AliTwoTrackRes.cxx:271
 AliTwoTrackRes.cxx:272
 AliTwoTrackRes.cxx:273
 AliTwoTrackRes.cxx:274
 AliTwoTrackRes.cxx:275
 AliTwoTrackRes.cxx:276
 AliTwoTrackRes.cxx:277
 AliTwoTrackRes.cxx:278
 AliTwoTrackRes.cxx:279
 AliTwoTrackRes.cxx:280
 AliTwoTrackRes.cxx:281
 AliTwoTrackRes.cxx:282
 AliTwoTrackRes.cxx:283
 AliTwoTrackRes.cxx:284
 AliTwoTrackRes.cxx:285
 AliTwoTrackRes.cxx:286
 AliTwoTrackRes.cxx:287
 AliTwoTrackRes.cxx:288
 AliTwoTrackRes.cxx:289
 AliTwoTrackRes.cxx:290
 AliTwoTrackRes.cxx:291
 AliTwoTrackRes.cxx:292
 AliTwoTrackRes.cxx:293
 AliTwoTrackRes.cxx:294
 AliTwoTrackRes.cxx:295
 AliTwoTrackRes.cxx:296
 AliTwoTrackRes.cxx:297
 AliTwoTrackRes.cxx:298
 AliTwoTrackRes.cxx:299
 AliTwoTrackRes.cxx:300
 AliTwoTrackRes.cxx:301
 AliTwoTrackRes.cxx:302
 AliTwoTrackRes.cxx:303
 AliTwoTrackRes.cxx:304
 AliTwoTrackRes.cxx:305
 AliTwoTrackRes.cxx:306
 AliTwoTrackRes.cxx:307
 AliTwoTrackRes.cxx:308
 AliTwoTrackRes.cxx:309
 AliTwoTrackRes.cxx:310
 AliTwoTrackRes.cxx:311
 AliTwoTrackRes.cxx:312
 AliTwoTrackRes.cxx:313
 AliTwoTrackRes.cxx:314
 AliTwoTrackRes.cxx:315
 AliTwoTrackRes.cxx:316
 AliTwoTrackRes.cxx:317
 AliTwoTrackRes.cxx:318
 AliTwoTrackRes.cxx:319
 AliTwoTrackRes.cxx:320
 AliTwoTrackRes.cxx:321
 AliTwoTrackRes.cxx:322
 AliTwoTrackRes.cxx:323
 AliTwoTrackRes.cxx:324
 AliTwoTrackRes.cxx:325
 AliTwoTrackRes.cxx:326
 AliTwoTrackRes.cxx:327
 AliTwoTrackRes.cxx:328
 AliTwoTrackRes.cxx:329
 AliTwoTrackRes.cxx:330
 AliTwoTrackRes.cxx:331
 AliTwoTrackRes.cxx:332
 AliTwoTrackRes.cxx:333
 AliTwoTrackRes.cxx:334
 AliTwoTrackRes.cxx:335
 AliTwoTrackRes.cxx:336
 AliTwoTrackRes.cxx:337
 AliTwoTrackRes.cxx:338
 AliTwoTrackRes.cxx:339
 AliTwoTrackRes.cxx:340
 AliTwoTrackRes.cxx:341
 AliTwoTrackRes.cxx:342
 AliTwoTrackRes.cxx:343
 AliTwoTrackRes.cxx:344
 AliTwoTrackRes.cxx:345
 AliTwoTrackRes.cxx:346
 AliTwoTrackRes.cxx:347
 AliTwoTrackRes.cxx:348
 AliTwoTrackRes.cxx:349
 AliTwoTrackRes.cxx:350
 AliTwoTrackRes.cxx:351
 AliTwoTrackRes.cxx:352
 AliTwoTrackRes.cxx:353
 AliTwoTrackRes.cxx:354
 AliTwoTrackRes.cxx:355
 AliTwoTrackRes.cxx:356
 AliTwoTrackRes.cxx:357
 AliTwoTrackRes.cxx:358
 AliTwoTrackRes.cxx:359