ROOT logo
/****************************************************************************
 *          Legacy comparison macro, adapted to the upgraded ITS.           *
 *                                                                          *
 *               Creates list of "trackable" tracks,                        *
 *             calculates efficiency, resolutions etc.                      *
 *  The ESD tracks must be in an appropriate state (kITSin or kITSrefit)    *
 *                                                                          *
 * Before running, load the ITSU libraries:                                 *
 *  gSystem->Load("libITSUpgradeBase");gSystem->Load("libITSUpgradeRec");   *
 *                                                                          *
 *           Origin: I.Belikov, IPHC, Iouri.Belikov@iphc.cnrs.fr            *
 ****************************************************************************/

#if !defined(__CINT__) || defined(__MAKECINT__)
  #include <TMath.h>
  #include <TError.h>
  #include <Riostream.h>
  #include <TH1F.h>
  #include <TH2F.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 "UPGRADE/AliITSUClusterPix.h"
  #include "UPGRADE/AliITSULoader.h"
#endif

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

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

static Int_t allgood=0;
static Int_t allselected=0;
static Int_t allfound=0;

Int_t AliITSUComparison
(Float_t ptcutl=0., Float_t ptcuth=2., const Char_t *dir=".") {
   gBenchmark->Start("AliITSUComparison");

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

   TH1F *hp=(TH1F*)gROOT->FindObject("hp");
   if (!hp) hp=new TH1F("hp","PHI resolution",50,-20.,20.); 
   hp->SetFillColor(4);

   TH1F *hl=(TH1F*)gROOT->FindObject("hl");
   if (!hl) hl=new TH1F("hl","LAMBDA resolution",50,-20,20);
   hl->SetFillColor(4);

   TH1F *hpt=(TH1F*)gROOT->FindObject("hpt");
   if (!hpt) hpt=new TH1F("hpt","Relative Pt resolution",30,-10.,10.); 
   hpt->SetFillColor(2);
 
   TH1F *hmpt=(TH1F*)gROOT->FindObject("hmpt");
   if (!hmpt) 
      hmpt=new TH1F("hmpt","Transverse impact parameter",30,-777,777); 
   hmpt->SetFillColor(6);

   TH1F *hz=(TH1F*)gROOT->FindObject("hz");
   if (!hz) hz=new TH1F("hz","Longitudinal impact parameter",30,-777,777); 


   Int_t nb=100;
   TH1F *hgood=(TH1F*)gROOT->FindObject("hgood");
   if (!hgood) hgood=new TH1F("hgood","Good tracks",nb,ptcutl,ptcuth);
    
   TH1F *hfound=(TH1F*)gROOT->FindObject("hfound");
   if (!hfound) hfound=new TH1F("hfound","Found tracks",nb,ptcutl,ptcuth);

   TH1F *hfake=(TH1F*)gROOT->FindObject("hfake");
   if (!hfake) hfake=new TH1F("hfake","Fake tracks",nb,ptcutl,ptcuth);

   TH1F *hg=(TH1F*)gROOT->FindObject("hg");
   if (!hg) hg=new TH1F("hg","Efficiency for good tracks",nb,ptcutl,ptcuth);
   hg->SetLineColor(4); hg->SetLineWidth(2);

   TH1F *hf=(TH1F*)gROOT->FindObject("hf");
   if (!hf) hf=new TH1F("hf","Efficiency for fake tracks",nb,ptcutl,ptcuth);
   hf->SetFillColor(1); hf->SetFillStyle(3013); hf->SetLineWidth(2);


   TH1F *he=(TH1F*)gROOT->FindObject("he");
   if (!he) 
      he =new TH1F("he","dE/dX for pions with 0.4<p<0.5 GeV/c",50,0.,200.);

   TH2F *hep=(TH2F*)gROOT->FindObject("hep");
   if (!hep) hep=new TH2F("hep","dE/dX vs momentum",50,0.,2.,50,0.,400.);
   hep->SetMarkerStyle(8);
   hep->SetMarkerSize(0.4);


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

   TFile *refFile=TFile::Open(fname,"old");
   if (!refFile || !refFile->IsOpen()) {
   ::Info("AliITSUComparison.C","Marking good tracks (will take a while)...");
     if (GoodTracksITS(dir)) {
        ::Error("AliITSUComparison.C","Can't generate the reference file !");
        return 1;
     }
   }
   refFile=TFile::Open(fname,"old");
   if (!refFile || !refFile->IsOpen()) {
     ::Error("AliITSUComparison.C","Can't open the reference file !");
     return 1;
   }   
  
   TTree *itsTree=(TTree*)refFile->Get("itsTree");
   if (!itsTree) {
     ::Error("AliITSUComparison.C","Can't get the reference tree !");
     return 2;
   }
   TBranch *branch=itsTree->GetBranch("ITS");
   if (!branch) {
     ::Error("AliITSUComparison.C","Can't get the ITS branch !");
     return 3;
   }
   TClonesArray dummy("AliTrackReference",1000), *refs=&dummy;
   branch->SetAddress(&refs);


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


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

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

     Int_t ngood=refs->GetEntriesFast(); 
     allgood+=ngood;

     const Int_t MAX=15000;
     Int_t notf[MAX], nnotf=0;
     Int_t fake[MAX], nfake=0;
     Int_t mult[MAX], numb[MAX], nmult=0;
     Int_t k;
     for (k=0; k<ngood; k++) {
	AliTrackReference *ref=(AliTrackReference*)refs->UncheckedAt(k); 
        Int_t lab=ref->Label(), tlab=-1;
        Float_t ptg=TMath::Sqrt(ref->Px()*ref->Px() + ref->Py()*ref->Py());

        if (ptg<ptcutl) continue;
        if (ptg>ptcuth) continue;

        allselected++;

        hgood->Fill(ptg);

        AliESDtrack *esd=0;
        Int_t cnt=0;
        for (Int_t i=0; i<nentr; i++) {
           AliESDtrack *t=event->GetTrack(i);
	   UInt_t status=t->GetStatus();

           if ((status&AliESDtrack::kITSrefit)==0) continue;

           Int_t lbl=t->GetLabel();
           if (lab==TMath::Abs(lbl)) {
	      if (cnt==0) {esd=t; tlab=lbl;}
              if (lbl> 0) {esd=t; tlab=lbl;}  
              cnt++;
           }
        }
        if (cnt==0) {
           notf[nnotf++]=lab;
           continue;
        } else if (cnt>1){
           mult[nmult]=lab;
           numb[nmult]=cnt; nmult++;        
        }

        if (lab==tlab) hfound->Fill(ptg);
        else {
          fake[nfake++]=lab;
          hfake->Fill(ptg); 
        }

        Double_t alpha=esd->GetAlpha(),xv,par[5]; 
        esd->GetExternalParameters(xv,par);
        Float_t phi=TMath::ASin(par[2]) + alpha;
        if (phi<-TMath::Pi()) phi+=2*TMath::Pi();
        if (phi>=TMath::Pi()) phi-=2*TMath::Pi();
        Float_t lam=TMath::ATan(par[3]); 
        Float_t pt_1=TMath::Abs(par[4]);

        Float_t phig=TMath::ATan2(ref->Py(),ref->Px());
        hp->Fill((phi - phig)*1000.);

        Float_t lamg=TMath::ATan2(ref->Pz(),ptg);
        hl->Fill((lam - lamg)*1000.);

        Float_t d,z; esd->GetImpactParameters(d,z);
        hmpt->Fill(10000*d);
        hz->Fill(10000*z);

        hpt->Fill((pt_1 - 1/ptg)/(1/ptg)*100.);

        Float_t mom=(TMath::Abs(pt_1)>1e-5) ? 1./(pt_1*TMath::Cos(lam)) : 1e+5;
        Float_t dedx=esd->GetITSsignal();
        hep->Fill(mom,dedx,1.);

        Int_t pdg=(Int_t)ref->GetLength();  //this is particle's PDG !

        if (TMath::Abs(pdg)==211) //pions
           if (mom>0.4 && mom<0.5) he->Fill(dedx,1.);

     }

     cout<<"\nList of Not found tracks :\n";
     for (k=0; k<nnotf; k++){
       cout<<notf[k]<<"\t";
       if ((k%9)==8) cout<<"\n";
     }
     cout<<"\n\nList of fake  tracks :\n";
     for (k=0; k<nfake; k++){
       cout<<fake[k]<<"\t";
       if ((k%9)==8) cout<<"\n";
     }
     cout<<"\n\nList of multiple found tracks :\n";
     for (k=0; k<nmult; k++) {
         cout<<"id.   "<<mult[k]
             <<"     found - "<<numb[k]<<"times\n";
     }
     cout<<endl;

     cout<<"Number of found tracks : "<<nentr<<endl;
     cout<<"Number of \"good\" tracks : "<<ngood<<endl;

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

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

   Stat_t ng=hgood->GetEntries(), nf=hfound->GetEntries();
   if (ng!=0) cout<<"\n\nIntegral efficiency is about "<<nf/ng*100.<<" %\n";
   cout<<"Total number selected of \"good\" tracks ="<<allselected<<endl<<endl;
   cout<<"Total number of found tracks ="<<allfound<<endl;
   cout<<"Total number of \"good\" tracks ="<<allgood<<endl;
   cout<<endl;

   gStyle->SetOptStat(111110);
   gStyle->SetOptFit(1);

   TCanvas *c1=new TCanvas("c1","",0,0,700,850);

   Int_t minc=33; 

   TPad *p1=new TPad("p1","",0,0.3,.5,.6); p1->Draw();
   p1->cd(); p1->SetFillColor(42); p1->SetFrameFillColor(10); 
   hp->SetFillColor(4);  hp->SetXTitle("(mrad)"); 
   if (hp->GetEntries()<minc) hp->Draw(); else hp->Fit("gaus"); c1->cd();

   TPad *p2=new TPad("p2","",0.5,.3,1,.6); p2->Draw(); 
   p2->cd(); p2->SetFillColor(42); p2->SetFrameFillColor(10);
   hl->SetXTitle("(mrad)");
   if (hl->GetEntries()<minc) hl->Draw(); else hl->Fit("gaus"); c1->cd();

   TPad *p3=new TPad("p3","",0,0,0.5,0.3); p3->Draw();
   p3->cd(); p3->SetFillColor(42); p3->SetFrameFillColor(10); 
   hpt->SetXTitle("(%)");
   if (hpt->GetEntries()<minc) hpt->Draw(); else hpt->Fit("gaus"); c1->cd();

   TPad *p4=new TPad("p4","",0.5,0,1,0.3); p4->Draw();
   p4->cd(); p4->SetFillColor(42); p4->SetFrameFillColor(10);
   hmpt->SetXTitle("(micron)");
   if (hmpt->GetEntries()<minc) hmpt->Draw(); else hmpt->Fit("gaus"); 
   hz->Draw("same"); c1->cd();
   

   TPad *p5=new TPad("p5","",0,0.6,1,1); p5->Draw(); p5->cd(); 
   p5->SetFillColor(41); p5->SetFrameFillColor(10);
   hfound->Sumw2(); hgood->Sumw2(); hfake->Sumw2();
   hg->Divide(hfound,hgood,1,1.,"b");
   hf->Divide(hfake,hgood,1,1.,"b");
   hg->SetMaximum(1.4);
   hg->SetYTitle("Tracking efficiency");
   hg->SetXTitle("Pt (GeV/c)");
   hg->Draw();

   TLine *line1 = new TLine(ptcutl,1.0,ptcuth,1.0); line1->SetLineStyle(4);
   line1->Draw("same");
   TLine *line2 = new TLine(ptcutl,0.9,ptcuth,0.9); line2->SetLineStyle(4);
   line2->Draw("same");

   hf->SetFillColor(1);
   hf->SetFillStyle(3013);
   hf->SetLineColor(2);
   hf->SetLineWidth(2);
   hf->Draw("histsame");
   TText *text = new TText(0.461176,0.248448,"Fake tracks");
   text->SetTextSize(0.05);
   text->Draw();
   text = new TText(0.453919,1.11408,"Good tracks");
   text->SetTextSize(0.05);
   text->Draw();

   TCanvas *c2=new TCanvas("c2","",320,32,530,590);
   TPad *p6=new TPad("p6","",0.,0.,1.,.5); p6->Draw();
   p6->cd(); p6->SetFillColor(42); p6->SetFrameFillColor(10); 
   he->SetFillColor(2); he->SetFillStyle(3005);  
   he->SetXTitle("Arbitrary Units"); 
   if (he->GetEntries()<minc) he->Draw(); else he->Fit("gaus"); c2->cd();

   TPad *p7=new TPad("p7","",0.,0.5,1.,1.); p7->Draw(); 
   p7->cd(); p7->SetFillColor(42); p7->SetFrameFillColor(10);
   hep->SetXTitle("p (Gev/c)"); hep->SetYTitle("dE/dX (Arb. Units)"); 
   hep->Draw(); c1->cd();

   TFile fc("AliITSUComparison.root","RECREATE");
   c1->Write();
   c2->Write();
   fc.Close();

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

   return 0;
}



Int_t GoodTracksITS(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("GoodTracksITS","Can't start session !");
      return 1;
   }

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

   AliITSULoader* itsl = (AliITSULoader*)rl->GetLoader("ITSLoader");
   if (itsl == 0x0) {
       ::Error("GoodTracksITS","Can not find the ITSLoader");
       delete rl;
       return 4;
   }
   itsl->LoadRecPoints();
  

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

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

   sprintf(fname,"%s/GoodTracksITS.root",dir);
   TFile *itsFile=TFile::Open(fname,"recreate");
   TClonesArray dummy2("AliTrackReference",1000), *itsRefs=&dummy2;
   TTree itsTree("itsTree","Tree with info about the reconstructable ITS tracks");
   itsTree.Branch("ITS",&itsRefs);

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

     rl->GetEvent(e);  itsFile->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]; for (k=0; k<np; k++) good[k]=0;

     TTree *cTree=itsl->TreeR();
     if (!cTree) {
        ::Error("GoodTracksITS","Can't get the cluster tree !"); 
        delete rl;
        return 8;
     }

     const Int_t nLayers=7;
     TBranch *branch[nLayers];
     TClonesArray clusters[nLayers];
     for (Int_t layer=0; layer<nLayers; layer++) {
       TClonesArray *ptr = 
       new(clusters+layer) TClonesArray("AliITSUClusterPix",1000);
       Char_t bname[33];
       sprintf(bname,"ITSRecPoints%d\0",layer);
       branch[layer]=cTree->GetBranch(bname);
       if (!branch[layer]) {
          ::Error("GoodTracksITS","Can't get the clusters branch !"); 
          delete rl;
          return 9;
       }
       branch[layer]->SetAddress(&ptr);
     }

     Int_t entr=(Int_t)cTree->GetEntries();
     for (k=0; k<entr; k++) {
         cTree->GetEvent(k);
         for (Int_t lay=0; lay<nLayers; lay++) {
             Int_t ncl=clusters[lay].GetEntriesFast(); if (ncl==0) continue;
             while (ncl--) {
                AliITSUClusterPix *pnt=
                (AliITSUClusterPix*)clusters[lay].UncheckedAt(ncl);
                Int_t l0=pnt->GetLabel(0);
	        if (l0>=np) {
// 		   cerr<<"Wrong label: "<<l0<<endl;
		   continue;
	        }
                Int_t l1=pnt->GetLabel(1);
	        if (l1>=np) {
// 		   cerr<<"Wrong label: "<<l1<<endl;
		   continue;
	        }
                Int_t l2=pnt->GetLabel(2);
	        if (l2>=np) {
// 		   cerr<<"Wrong label: "<<l2<<endl;
		   continue;
	        }
                Int_t mask=1<<lay;
                if (l0>=0) good[l0]|=mask; 
                if (l1>=0) good[l1]|=mask; 
                if (l2>=0) good[l2]|=mask;
	     }
             clusters[lay].Clear();
	 }
     }



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

     tpcTree->GetEvent(e);
     Int_t nk=tpcRefs->GetEntriesFast();
     Int_t nt=0;
     for (k=0; k<nk; k++) {
        AliTrackReference *tpcRef=(AliTrackReference *)tpcRefs->UncheckedAt(k);
        Int_t lab=tpcRef->Label();
        if (good[lab] != 0x7F) continue;
        TParticle *p = (TParticle*)stack->Particle(lab);
        if (p == 0x0) {
           cerr<<"Can not get particle "<<lab<<endl;
           continue;
        }

	AliTrackReference *ref=new((*itsRefs)[nt]) AliTrackReference(*tpcRef);
	ref->SetMomentum(p->Px(),p->Py(),p->Pz());
	ref->SetPosition(p->Vx(),p->Vy(),p->Vz());
        nt++;
     }
     tpcRefs->Clear();

     itsTree.Fill();
     itsRefs->Clear();

     delete[] good;

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

   itsTree.Write();
   itsFile->Close();

   delete tpcTree;
   tpcFile->Close();

   delete rl;
   return 0;
}


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