ROOT logo
/****************************************************************************
 *      This macro estimates efficiency of matching with the TOF.           *
 *      TOF "Good" tracks are those originating from the primary vertex,    *
 *      being "good" in the ITS and having at least one digit in the TOF.   * 
 *         (To get the list of "good" tracks one should first run           *
 *          AliTPCComparison.C and AliITSComparisonV2.C macros)             *
 *           Origin: I.Belikov, CERN, Jouri.Belikov@cern.ch                 *
 ****************************************************************************/

#if !defined(__CINT__) || defined(__MAKECINT__)
  #include <TMath.h>
  #include <TError.h>
  #include <Riostream.h>
  #include <TH1F.h>
  #include <TTree.h>
  #include <TParticle.h>
  #include <TCanvas.h>
  #include <TLine.h>
  #include <TText.h>
  #include <TBenchmark.h>
  #include <TStyle.h>
  #include <TFile.h>
  #include <TROOT.h>

  #include "AliStack.h"
  #include "AliHeader.h"
  #include "AliTrackReference.h"
  #include "AliRunLoader.h"
  #include "AliRun.h"
  #include "AliESDEvent.h"
  #include "AliESDtrack.h"

  #include "AliTOFcluster.h"
  #include "AliLoader.h"

  #include "TClonesArray.h"
#endif

Int_t GoodTracksTOF(const Char_t *dir=".");

extern AliRun *gAlice;
extern TBenchmark *gBenchmark;
extern TROOT *gROOT;

static Int_t allgood=0;
static Int_t allmatched=0;
static Int_t allmismatched=0;

Int_t AliTOFComparison(const Char_t *dir=".") {
   gBenchmark->Start("AliTOFComparison");

   ::Info("AliTOFComparison.C","Doing comparison...");
   

   Double_t pmin=0.2;
   Double_t pmax=3.0;

   TH1F *hgood=(TH1F*)gROOT->FindObject("hgood");    
   if (!hgood) hgood=new TH1F("hgood","Good tracks",30,pmin,pmax);
    
   TH1F *hfound=(TH1F*)gROOT->FindObject("hfound");
   if (!hfound) hfound=new TH1F("hfound","Matched tracks",30,pmin,pmax);

   TH1F *hfake=(TH1F*)gROOT->FindObject("hfake");
   if (!hfake) hfake=new TH1F("hfake","Mismatched tracks",30,pmin,pmax);

   TH1F *hgp=(TH1F*)gROOT->FindObject("hgp");
   if (!hgp) hgp=new TH1F("hgp","",30,pmin,pmax);
   hgp->SetLineColor(4); hgp->SetLineWidth(2);

   TH1F *hfp=(TH1F*)gROOT->FindObject("hfp");
   if (!hfp) hfp=new TH1F("hfp","Probability of mismatching",30,pmin,pmax);
   hfp->SetFillColor(1); hfp->SetFillStyle(3013); hfp->SetLineWidth(2);

   TH1F *hgoo=(TH1F*)gROOT->FindObject("hgoo");    
   if (!hgoo) hgoo=new TH1F("hgoo","Good tracks",30,-1,1);
    
   TH1F *hfoun=(TH1F*)gROOT->FindObject("hfoun");
   if (!hfoun) hfoun=new TH1F("hfoun","Matched tracks",30,-1,1);

   TH1F *hfak=(TH1F*)gROOT->FindObject("hfak");
   if (!hfak) hfak=new TH1F("hfak","Mismatched tracks",30,-1,1);

   TH1F *hgl=(TH1F*)gROOT->FindObject("hgl");
   if (!hgl) hgl=new TH1F("hgl","",30,-1,1);
   hgl->SetLineColor(4); hgl->SetLineWidth(2);

   TH1F *hfl=(TH1F*)gROOT->FindObject("hfl");
   if (!hfl) hfl=new TH1F("hfl","Probability of mismatching",30,-1,1);
   hfl->SetFillColor(1); hfl->SetFillStyle(3013); hfl->SetLineWidth(2);



   Char_t fname[100];
   sprintf(fname,"%s/GoodTracksTOF.root",dir);

   TFile *refFile=TFile::Open(fname,"old");
   if (!refFile || !refFile->IsOpen()) {
   ::Info("AliTOFComparison.C","Marking good tracks (will take a while)...");
     if (GoodTracksTOF(dir)) {
        ::Error("AliTOFComparison.C","Can't generate the reference file !");
        return 1;
     }
   }
   refFile=TFile::Open(fname,"old");
   if (!refFile || !refFile->IsOpen()) {
     ::Error("AliTOFComparison.C","Can't open the reference file !");
     return 1;
   }   

   TTree *tofTree=(TTree*)refFile->Get("tofTree");
   if (!tofTree) {
     ::Error("AliTOFComparison.C","Can't get the reference tree !");
     return 2;
   }
   TBranch *branch=tofTree->GetBranch("TOF");
   if (!branch) {
     ::Error("AliTOFComparison.C","Can't get the TOF branch !");
     return 3;
   }
   TClonesArray dummy("AliTrackReference",1000), *refs=&dummy;
   branch->SetAddress(&refs);


   if (gAlice) { 
     delete AliRunLoader::Instance();
     delete gAlice;//if everything was OK here it is already NULL
     gAlice = 0x0;
   }
   sprintf(fname,"%s/galice.root",dir);
   AliRunLoader *rl = AliRunLoader::Open(fname,"COMPARISON");
   if (rl == 0x0) {
      cerr<<"Can not open session"<<endl;
      return 1;
   }
   AliLoader* tofl = rl->GetLoader("TOFLoader");
   if (tofl == 0x0) {
      cerr<<"Can not get the TOF loader"<<endl;
      return 2;
   }
   tofl->LoadRecPoints("read");


   sprintf(fname,"%s/AliESDs.root",dir);
   TFile *ef=TFile::Open(fname);
   if ((!ef)||(!ef->IsOpen())) {
      ::Error("AliTOFComparison.C","Can't open AliESDs.root !");
      delete rl;
      return 4;
   }
   AliESDEvent* event = new AliESDEvent();
   TTree* esdTree = (TTree*) ef->Get("esdTree");
   if (!esdTree) {
      ::Error("AliTOFComparison.C", "no ESD tree found");
      return 5;
   }
   event->ReadFromTree(esdTree);



   //******* Loop over events *********
   Int_t e=0;
   while (esdTree->GetEvent(e)) {
     cout<<endl<<endl<<"********* Processing event number: "<<e<<"*******\n";

     rl->GetEvent(e);

     TTree *clsTree=tofl->TreeR();
     if (!clsTree) {
        cerr<<"Can't get the TOF cluster tree !\n";
        return 3;
     } 
     TBranch *branch=clsTree->GetBranch("TOF");
     if (!branch) { 
        cerr<<"Can't get the branch with the TOF digits !\n";
        return 4;
     }
     TClonesArray dummy("AliTOFcluster",10000), *clusters=&dummy;   
     branch->SetAddress(&clusters);

     clsTree->GetEvent(0);
     Int_t nd=clusters->GetEntriesFast();
     cerr<<"Number of the TOF clusters: "<<nd<<endl;



     Int_t ntrk=event->GetNumberOfTracks();
     cerr<<"Number of ESD tracks : "<<ntrk<<endl; 


     if (tofTree->GetEvent(e++)==0) {
        cerr<<"No reconstructable tracks !\n";
        continue;
     }

     Int_t ngood=refs->GetEntriesFast(); 

     Int_t matched=0;
     Int_t mismatched=0;
     for (Int_t i=0; i<ngood; i++) {
	AliTrackReference *ref=(AliTrackReference*)refs->UncheckedAt(i); 
        Int_t lab=ref->Label();
        Float_t ptg=TMath::Sqrt(ref->Px()*ref->Px() + ref->Py()*ref->Py());

        Double_t tgl=ref->Pz()/ptg; //tan(lambda)

         if (ptg>pmin) { hgood->Fill(ptg); hgoo->Fill(tgl); }

         Int_t j;
	 AliESDtrack *t=0;
         for (j=0; j<ntrk; j++) {
             AliESDtrack *tt=event->GetTrack(j);
             if (lab!=TMath::Abs(tt->GetLabel())) continue;
             t=tt;
             //if ((tt->GetStatus()&AliESDtrack::kTOFpid) == 0) continue;
             if (tt->GetTOFsignal() < 0) continue;
             UInt_t idx=tt->GetTOFcluster();
             if ((Int_t)idx>=nd) {
	       cerr<<"Wrong cluster index ! "<<idx<<endl;
               return 5;
             }
             AliTOFcluster *cls=(AliTOFcluster*)clusters->At(idx);
	     if (cls) {
	       if (cls->GetLabel(0)!=lab)
		 if (cls->GetLabel(1)!=lab)
		   if (cls->GetLabel(2)!=lab) {
		     mismatched++; 
		     if (ptg>pmin) { hfake->Fill(ptg); hfak->Fill(tgl); } 
		     break;
		   }
	       if (ptg>pmin) { hfound->Fill(ptg); hfoun->Fill(tgl); }
	       matched++;
	       break;
	     }
         }
         if (j==ntrk) {
	    cerr<<"Not matched: "<<lab<<"   ";
            if (t) {
               cerr<<(t->GetStatus()&AliESDtrack::kITSout)<<' '
	           <<(t->GetStatus()&AliESDtrack::kTPCout)<<' '
	           <<(t->GetStatus()&AliESDtrack::kTRDout)<<' '
	           <<(t->GetStatus()&AliESDtrack::kTIME);
	    } else cerr<<"No ESD track !";
            cerr<<endl;
         }
     }
     cout<<"Number of good tracks: "<<ngood<<endl;
     cout<<"Number of matched tracks: "<<matched<<endl;
     cout<<"Number of mismatched tracks: "<<mismatched<<endl;

     allgood+=ngood; allmatched+=matched; allmismatched+=mismatched;

     refs->Clear();
   } //***** End of the loop over events

   delete event;
   delete esdTree;
   ef->Close();
   
   delete tofTree;
   refFile->Close();

   if (allgood!=0) cerr<<"\n\nEfficiency: "<<Float_t(allmatched)/allgood<<endl;
   cout<<"Total number of good tracks: "<<allgood<<endl;
   cout<<"Total number of matched tracks: "<<allmatched<<endl;
   cout<<"Total number of mismatched tracks: "<<allmismatched<<endl;

   TCanvas *c1=(TCanvas*)gROOT->FindObject("c1");
   if (!c1) {
      c1=new TCanvas("c1","",0,0,600,900);
      c1->Divide(1,2);
   }
   hfound->Sumw2(); hgood->Sumw2(); hfake->Sumw2();
   hgp->Divide(hfound,hgood,1,1.,"b");
   hfp->Divide(hfake,hgood,1,1.,"b");
   hgp->SetMaximum(1.4);
   hgp->SetYTitle("Matching efficiency");
   hgp->SetXTitle("Pt (GeV/c)");

   hfoun->Sumw2(); hgoo->Sumw2(); hfak->Sumw2();
   hgl->Divide(hfoun,hgoo,1,1.,"b");
   hfl->Divide(hfak,hgoo,1,1.,"b");
   hgl->SetMaximum(1.4);
   hgl->SetYTitle("Matching efficiency");
   hgl->SetXTitle("Tan(lambda)");

   c1->cd(1);

   hgp->Draw();
   hfp->Draw("histsame");
   TLine *line1 = new TLine(pmin,1.0,pmax,1.0); line1->SetLineStyle(4);
   line1->Draw("same");
   TLine *line2 = new TLine(pmin,0.9,pmax,0.9); line2->SetLineStyle(4);
   line2->Draw("same");

   c1->cd(2);

   hgl->Draw();
   hfl->Draw("histsame");
   TLine *line3 = new TLine(-1,1.0,1,1.0); line3->SetLineStyle(4);
   line3->Draw("same");
   TLine *line4 = new TLine(-1,0.9,1,0.9); line4->SetLineStyle(4);
   line4->Draw("same");

   c1->Update();
   
   TFile fc("AliTOFComparison.root","RECREATE");
   c1->Write();
   fc.Close();

   gBenchmark->Stop("AliTOFComparison");
   gBenchmark->Show("AliTOFComparison");

   delete rl;
   return 0;
}

Int_t GoodTracksTOF(const Char_t *dir) {
   if (gAlice) { 
       delete AliRunLoader::Instance();
       delete gAlice;//if everything was OK here it is already NULL
       gAlice = 0x0;
   }

   Char_t fname[100];
   sprintf(fname,"%s/galice.root",dir);

   AliRunLoader *rl = AliRunLoader::Open(fname,"COMPARISON");
   if (!rl) {
      ::Error("GoodTracksTOF","Can't start session !");
      return 1;
   }

   rl->LoadgAlice();
   rl->LoadHeader();
   rl->LoadKinematics();


   AliLoader* tofl = rl->GetLoader("TOFLoader");
   if (tofl == 0x0) {
      ::Error("GoodTracksTOF","Can not get the TOF loader !");
      delete rl;
      return 2;
   }
   tofl->LoadRecPoints("read");

   Int_t nev=rl->GetNumberOfEvents();
   ::Info("GoodTracksTOF","Number of events : %d\n",nev);  

   sprintf(fname,"%s/GoodTracksITS.root",dir);
   TFile *itsFile=TFile::Open(fname);
   if ((!itsFile)||(!itsFile->IsOpen())) {
       ::Error("GoodTracksTOF","Can't open the GoodTracksITS.root !");
       delete rl;
       return 5; 
   }
   TClonesArray dum("AliTrackReference",1000), *itsRefs=&dum;
   TTree *itsTree=(TTree*)itsFile->Get("itsTree");
   if (!itsTree) {
       ::Error("GoodTracksTOF","Can't get the ITS reference tree !");
       delete rl;
       return 6;
   }
   TBranch *itsBranch=itsTree->GetBranch("ITS");
   if (!itsBranch) {
      ::Error("GoodTracksTOF","Can't get the ITS reference branch !");
      delete rl;
      return 7;
   }
   itsBranch->SetAddress(&itsRefs);


   sprintf(fname,"%s/GoodTracksTOF.root",dir);
   TFile *tofFile=TFile::Open(fname,"recreate");
   TClonesArray dummy("AliTrackReference",1000), *tofRefs=&dummy;
   TTree tofTree("tofTree","Tree with info about the reconstructable TOF tracks");
   tofTree.Branch("TOF",&tofRefs);


   //********  Loop over generated events 
   for (Int_t e=0; e<nev; e++) {

     rl->GetEvent(e); tofFile->cd();

     Int_t np = rl->GetHeader()->GetNtrack();
     cout<<"Event "<<e<<" Number of particles: "<<np<<endl;

     //******** Fill the "good" masks
     Int_t *good=new Int_t[np]; Int_t k; for (k=0; k<np; k++) good[k]=0;

     TTree *cTree=tofl->TreeR();
     if (!cTree) {
        ::Error("GoodTracksTOF","Can't get the TOF cluster tree !");
        delete rl;
        return 8;
     } 
     TBranch *branch=cTree->GetBranch("TOF");
     if (!branch) { 
        ::Error("GoodTracksTOF","Can't get the branch with the TOF digits !");
        return 9;
     }
     TClonesArray dummy("AliTOFcluster",10000), *clusters=&dummy;
     branch->SetAddress(&clusters);
   
     cTree->GetEvent(0);
     Int_t nd=clusters->GetEntriesFast();

     for (Int_t i=0; i<nd; i++) {
       AliTOFcluster *c=(AliTOFcluster*)clusters->UncheckedAt(i);
       Int_t l0=c->GetLabel(0);
          if (l0>=np) {cerr<<"Wrong label: "<<l0<<endl; continue;}
       Int_t l1=c->GetLabel(1);
          if (l1>=np) {cerr<<"Wrong label: "<<l1<<endl; continue;}
       Int_t l2=c->GetLabel(2);
          if (l2>=np) {cerr<<"Wrong label: "<<l2<<endl; continue;}
       if (l0>=0) good[l0]++; 
       if (l1>=0) good[l1]++; 
       if (l2>=0) good[l2]++;
     }
     clusters->Clear();


     //****** select tracks which are "good" enough
     AliStack* stack = rl->Stack();

     itsTree->GetEvent(e);
     Int_t nk=itsRefs->GetEntriesFast();

     Int_t nt=0;
     for (k=0; k<nk; k++) {
        AliTrackReference *itsRef=(AliTrackReference *)itsRefs->UncheckedAt(k);
        Int_t lab=itsRef->Label();
        if (good[lab] == 0) continue;
        TParticle *p = (TParticle*)stack->Particle(lab);
        if (p == 0x0) {
           cerr<<"Can not get particle "<<lab<<endl;
           continue;
        }

        if (TMath::Abs(p->Vx())>0.1) continue;
        if (TMath::Abs(p->Vy())>0.1) continue;
        //if (TMath::Abs(p->Vz())>0.1) continue;

        new((*tofRefs)[nt]) AliTrackReference(*itsRef);
        nt++;
     }
     itsRefs->Clear();

     tofTree.Fill();
     tofRefs->Clear();

     delete[] good;

   } //*** end of the loop over generated events

   tofTree.Write();
   tofFile->Close();

   delete itsTree;
   itsFile->Close();

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