ROOT logo
/*

//load mag field
AliRunLoader *loader = AliRunLoader::Open("galice.root");
loader->LoadgAlice();
gAlice = loader->GetAliRun();
AliMagF * field = gAlice->Field();
AliTracker::SetFieldMap(gAlice->Field(),1);
TFile fg("geometry.root");
gGeoManager = (TGeoManager*)fg.Get("Geo");
if (!gGeoManager) TGeoManager::Import("geometry.root");
.L AliGenInfo.C+
.L AliESDComparisonMI.C+
.L AliTRDComparison.C+g
//.L AliESDComparisonPIC.C+
.x TDR_style.C

MakeCompTr();
MakeTree();

 
 
MakeComp();
MakeAlias();
TFile fff("TRDdebug.root");
TTree * tree =(TTree*)fff.Get("tracklet");
TTree * tree2 =(TTree*)fff.Get("Tracks");
TTree * treefind =(TTree*)fff.Get("Find");
TTree * treebug =(TTree*)fff.Get("Bug");
TTree * treetofs =(TTree*)fff.Get("tofseed");
AliComparisonDraw compfind;
compfind.fTree = treefind;
AliComparisonDraw comptr;
comptr.fTree = tree;

TFile fff2("TOFdebug.root");
TTree * treetof =(TTree*)fff2.Get("Info");
TTree * treetoftrd =(TTree*)fff2.Get("TRD");

AliComparisonDraw comp2;
comp2->fTree =tree;
AliComparisonDraw comptof;
comptof->fTree =treetof;


*/

//ROOT includes
#include "Rtypes.h"
#include "TFile.h"
#include "TTree.h"
#include "TChain.h"
#include "TCut.h"
#include "TString.h"
#include "TBenchmark.h"
#include "TStopwatch.h"
#include "TParticle.h"
#include "TSystem.h"
#include "TTimer.h"
#include "TVector3.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TCanvas.h"
#include "TPad.h"
#include "TF1.h"
#include "TView.h"
#include "TGeometry.h"
#include "TPolyLine3D.h"
#include "TLegend.h"
#include "TGraph.h"
//ALIROOT includes
#include "AliRun.h"
#include "AliStack.h"
#include "AliSimDigits.h"
#include "AliTPCParam.h"
#include "AliTPC.h"
#include "AliTPCLoader.h"
#include "AliDetector.h"
#include "AliTrackReference.h"
#include "AliTPCParamSR.h"
#include "AliTracker.h"
#include "AliMagF.h"
#include "AliHelix.h"
#include "AliESDtrack.h"
#include "AliTRDtrack.h"
#include "AliITStrackMI.h"
#include "AliESDV0MI.h"
#include "AliESDkink.h"
//#include "AliTRDparameter.h"
#include "AliTRDgeometryFull.h"
#include "AliTRDcluster.h"
#include "AliTRDtracker.h"
#include "AliTOFtrack.h"
#include "../TOF/AliTOFtrackerMI.h"
// COMPARISON includes
#include "../STEER/AliGenInfo.h"
#include "../STEER/AliESDComparisonMI.h"



AliComparisonDraw comp;
AliComparisonDraw comptr;
//AliTRDparameter   par("pica","vyjebana");
AliTRDgeometryFull    geom;
AliRunLoader  *fLoader=0; //= AliRunLoader::Open(fnGalice);

TCut cnesd("cnesd","abs(RC.fLabel)!=MC.fLabel");
TCut cprim("cprim","TMath::Sqrt(MC.fVDist[0]**2+MC.fVDist[1]**2)<0.01&&abs(MC.fVDist[2])<0.01");
TCut citsin("cprim","TMath::Sqrt(MC.fVDist[0]**2+MC.fVDist[1]**2)<0.01&&abs(MC.fVDist[2])<5");
TCut clength("clength","abs(TRD0.fIntegratedLength-MC.fTOFReferences[0].fLength)<30");
TCut c1("c1","TRD1.fStopped==0");    // track propagated to refernce
TCut c0("c0","TRD0.fStopped==0");    // track propagated to reference
TCut c2("c2","MC.fNTOFRef>0");       //track in tof
TCut c3("c3","MC.fNTOFRef>0&&MC.fNTRDRef>5");       //track in tof and TRD
TH1F hpull("hpull","hpull",50,-10,10);
TH1F hpull6("hpull6","hpull6",50,-6,6);


class AliTRDInfoMC: public TObject{
 public:
  void Update(AliMCInfo *info);  // update TRD info
  void Reset();                  // clear TRD info
  Short_t fLayer[6];         //indicates layer is on
  Short_t fLayerA[6];        // indicates layer after is ON
  Short_t fNLayers;          // number of crossed layers
  Short_t fLast;             // last crossed layer
  AliTrackReference fRef[6];    // trd reference
  AliTrackReference fRefLocal[6];    // trd local reference
  ClassDef(AliTRDInfoMC,1)   // TRD MC information 
};


class AliTRDInfoCl: public TObject{
  public:
  AliTRDInfoCl();
  void Update();
  AliTRDcluster fCl[6][25];      // clusters
  Float_t       fCount[6][25];   // number of clusters of given label
  Int_t   fNClusters;             // number of clusters
  Float_t fMeanQ[6];             // mean Q
  Int_t   fMaxBin[6];            // max time bin
  Int_t   fNcl[6];               // number of clusters 
  Float_t fMeanQS[6];             // mean Q
  Int_t   fMaxBinS[6];            // max time bin
  ClassDef(AliTRDInfoCl,1)      // TRD MC information 
};

ClassImp(AliTRDInfoCl)



class AliTRDInfoSeed: public TObject{
  public:
  AliTRDInfoSeed(){fLabel=-1; fLabel1=-1;fLabel2=-1;}
  void              Update(AliTRDseed *seeds);
  AliTRDseed        fSeeds[6];  // seeds from seeding
  Float_t           fFakeRatio; //
  Int_t             fLabel;     // seed label
  Int_t             fLabel1;    // full track label
  Int_t             fLabel2;    // second full track label
  Int_t             fNLayers;   //   
  Int_t             fNUsed;     //
  ClassDef(AliTRDInfoSeed,1)    // TRD MC information 
};


ClassImp(AliTRDInfoMC)
ClassImp(AliTRDInfoCl)
ClassImp(AliTRDInfoSeed)

void AliTRDInfoSeed::Update(AliTRDseed *seeds){
  //
  //
  //
  fNLayers=0;
  for (Int_t i=0;i<6;i++){
    fSeeds[i] = seeds[i];
    if (seeds[i].fN2>10) fNLayers++;
  }
}

void AliTRDInfoMC::Reset(){
  //
  //
  fNLayers=0;
  fLast =0;
  for (Int_t ilayer = 0; ilayer<6; ilayer++){
    fLayer[ilayer]=0;
    fLayerA[ilayer]=0;
  }
}
void  AliTRDInfoMC::Update(AliMCInfo *info)
{
  // 
  //
  Reset();
  for (Int_t i=0;i<info->fNTRDRef;i++){
    AliTrackReference * ref = (AliTrackReference*)info->fTRDReferences->At(i);
    Float_t localX = ref->LocalX();
    for (Int_t jplane = 0; jplane<6; jplane++){
      if (TMath::Abs(localX - (300+jplane*14.))<6){
	fLayer[jplane]++;
	for (Int_t kplane=jplane;kplane>=0;kplane--){
	  fLayerA[kplane]++;
	  fRef[jplane]=*ref;
	  //
	  fRefLocal[jplane].SetTrack(ref->GetTrack());
	  fRefLocal[jplane].SetPosition(ref->LocalX(), ref->LocalY(),ref->Z());
	  Float_t alpha  = ref->Alpha();
	  Float_t dir[3] = {ref->Px(), ref->Py(), ref->Pz()};
	  Float_t dirR[3];
	  dirR[0] = dir[0]*TMath::Cos(-alpha) - dir[1]*TMath::Sin(-alpha);
	  dirR[1] = dir[0]*TMath::Sin(-alpha) + dir[1]*TMath::Cos(-alpha);
	  fRefLocal[jplane].SetMomentum(1, dirR[1]/dirR[0],dir[2]/dir[0]);
	}
      }
    }
  }
  for (Int_t jplane = 0; jplane<6; jplane++){
    if (fLayer[jplane]>0) fNLayers++;
    if (fLayer[jplane]>0) fLast = jplane;
  }
}

AliTRDInfoCl::AliTRDInfoCl(){
  //
  //
  fNClusters =0;
  for (Int_t ilayer=0;ilayer<6;ilayer++){
    fMeanQ[ilayer]=0;
    fMaxBin[ilayer]=0;
    fNcl[ilayer]=0;
    fMeanQS[ilayer]=0;
    fMaxBinS[ilayer]=0;
    for (Int_t itime=0;itime<25;itime++){
      fCount[ilayer][itime]=0;
    }
  }
}


void  AliTRDInfoCl::Update(){
  fNClusters = 0;
  for (Int_t iplane=0;iplane<6;iplane++){
    fMeanQ[iplane]=-1;
    fNcl[iplane]  = 0;
    fMaxBin[iplane]=-1;
    //
    fMeanQS[iplane]=-1;
    fMaxBinS[iplane]=-1;

    Float_t maxQ  =-10;
    Float_t maxQS =-10;
    Int_t sums =0;
    for (Int_t itime=0;itime<25;itime++){
      if (fCl[iplane][itime].GetQ()>2){
	fNcl[iplane]++;
	fMeanQ[iplane]+=fCl[iplane][itime].GetQ();
	if (fCl[iplane][itime].GetQ()>=maxQ){
	  fMaxBin[iplane]= itime;
	  maxQ = fCl[iplane][itime].GetQ();
	}
      }
      if (fCl[iplane][itime].GetSumS()>2){
	sums++;
	fMeanQS[iplane]+=fCl[iplane][itime].GetSumS();
	if (fCl[iplane][itime].GetSumS()>=maxQS){
	  fMaxBinS[iplane]= itime;
	  maxQS = fCl[iplane][itime].GetSumS();
	}	
      }
    }
    if (fNcl[iplane]>0) fMeanQ[iplane]/=Float_t(fNcl[iplane]);    
    if (sums>0) fMeanQS[iplane]/=Float_t(sums);    
    fNClusters+=fNcl[iplane];
  }
}




void  MaxBinNorm(const char * expr = "TRD0.fTimBinPlane"){
  //
  // max time bin probability distribution
  //
  char  var[100];
  sprintf(var,"%s>>hispi",expr);
  TH1F * hispi= new TH1F("hispi","hispi",20,1,22);
  comp.fTree->Draw(var,"abs(MC.fPdg)==211&&TRD0.fN>90&&MC.fParticle.P()>3");
  hispi->Scale(1./(hispi->GetEntries()));
  hispi->Draw();
  sprintf(var,"%s>>hisel",expr);
  TH1F *hisel = new TH1F("hisel","hisel",20,1,22);
  comp.fTree->Draw(var,"abs(MC.fPdg)==11&&TRD0.fN>90&&MC.fParticle.P()>3");
  hisel->Scale(1./(hisel->GetEntries()));
  hispi->SetMarkerStyle(25); hispi->SetLineStyle(2);
  hisel->SetMarkerStyle(26); hisel->SetLineStyle(1);
  hisel->SetXTitle("Maximal Time Bin");
  hisel->SetYTitle("Probability");
  hisel->Draw();
  hispi->Draw("same");
  TLegend *legend = new TLegend(0.55,0.12,0.85,0.35, "Maximal Time Bin position");
  legend->SetBorderSize(1);
  legend->AddEntry(hispi ,"Pions");
  legend->AddEntry(hisel ,"Electrons");
  legend->Draw();

}


void  dedxNorm(const char * expr = "TRD0.fdEdxPlane/20"){
  //
  // max time bin probability distribution
  //
  char  var[100];
  sprintf(var,"%s>>hispi",expr);
  TH1F * hispi= new TH1F("hispi","hispi",100,1,120);
  comp.fTree->Draw(var,"abs(MC.fPdg)==211&&TRD0.fN>90&&MC.fParticle.P()>3");
  hispi->Scale(1./(hispi->GetEntries()));
  hispi->Draw();
  sprintf(var,"%s>>hisel",expr);
  TH1F *hisel = new TH1F("hisel","hisel",100,1,120);
  comp.fTree->Draw(var,"abs(MC.fPdg)==11&&TRD0.fN>90&&MC.fParticle.P()>3");
  hisel->Scale(1./(hisel->GetEntries()));
  hispi->SetMarkerStyle(25); hispi->SetLineStyle(2);
  hisel->SetMarkerStyle(26); hisel->SetLineStyle(1);
  hispi->SetXTitle("Normalized dEdx");
  hispi->SetYTitle("Probability");
  hispi->Draw();
  hisel->Draw("same");
  TLegend *legend = new TLegend(0.55,0.12,0.85,0.35, "Normalized dEdx");
  legend->SetBorderSize(1);
  legend->AddEntry(hispi ,"Pions");
  legend->AddEntry(hisel ,"Electrons");
  legend->Draw();
}


void EfficiencyPt()
{
  //
  //
  //
  comp.Eff("TR.Pt()","InfoMC.fNLayers>3&&abs(MC.fPdg)!=11"+c2+cprim,"TRD0.fN/InfoMC.fNLayers>10&&TRD0.fLab>0",10,0.3,2);
  TH1F * his = (TH1F*)comp.fRes->Clone();
  comp.Eff("TR.Pt()","InfoMC.fNLayers>3&&abs(MC.fPdg)!=11"+c2+cprim,"TRD0.fN/InfoMC.fNLayers>10&&TRD0.fLab<0",10,0.3,2);
  TH1F * hisf = (TH1F*)comp.fRes->Clone();
  his->SetMarkerStyle(25); his->SetLineStyle(2);
  hisf->SetMarkerStyle(26); hisf->SetLineStyle(1);
  his->SetXTitle("P_{t}(GeV/c)");
  his->SetYTitle("Tracking efficiency (%)");
  his->Draw();
  hisf->Draw("same");
  TLegend *legend = new TLegend(0.55,0.16,0.85,0.4, "TRD efficciency");
  legend->SetBorderSize(1);
  legend->AddEntry(his ,"Efficiency");
  legend->AddEntry(hisf ,"Fake tracks");
  legend->Draw();

}

void EfficiencyDip()
{
  //
  //
  //
  comp.Eff("atan(TR.fPz/TR.Pt())","InfoMC.fNLayers>3&&abs(MC.fPdg)!=11&&TR.Pt()>0.4"+c2+cprim,"TRD0.fN/InfoMC.fNLayers>10&&TRD0.fLab>0",10,-0.9,0.9);
  TH1F * his = (TH1F*)comp.fRes->Clone();
  comp.Eff("atan(TR.fPz/TR.Pt())","InfoMC.fNLayers>3&&abs(MC.fPdg)!=11&&TR.Pt()>0.4"+c2+cprim,"TRD0.fN/InfoMC.fNLayers>10&&TRD0.fLab<0",10,-0.9,0.9);
  TH1F * hisf = (TH1F*)comp.fRes->Clone();
  his->SetMarkerStyle(25); his->SetLineStyle(2);
  hisf->SetMarkerStyle(26); hisf->SetLineStyle(1);
  his->SetXTitle("#lambda(rad)");
  his->SetYTitle("Tracking efficiency (%)");
  his->Draw();
  hisf->Draw("same");
  TLegend *legend = new TLegend(0.55,0.16,0.85,0.4, "TRD efficciency");
  legend->SetBorderSize(1);
  legend->AddEntry(his ,"Efficiency");
  legend->AddEntry(hisf ,"Fake tracks");
  legend->Draw();
}

void ClusterRatio()
{
  TH1F *hisr = new TH1F("hisr","Percentage of found clusters",80,0,120);
  comp.fTree->Draw("100*TRD0.fN/(20*InfoMC.fNLayers)>>hisr","InfoMC.fNLayers>3&&TRD0.fLab>0&&abs(MC.fPdg)!=11&&TR.Pt()>0.4"+cprim+c2);
  hisr->SetXTitle("(%)");
  hisr->Draw();

}

void DEestimate(){
  TH1F * hderel = new TH1F("hderel","hderel",100,-150,150);
  comp.fTree->Draw("100*derel>>hderel",""+c0+c2+cprim);
  hderel->Fit("gaus");
  hderel->SetXTitle("Energy loss correction resolution (%)");
  hderel->Draw();
}

void DEestimate2(){
  //
  TH1F * hderel0 = new TH1F("hderel0","hderel0",100,-0,30);
  TH1F * hderel1 = new TH1F("hderel1","hderel1",100,-0,30);
  TH1F * hderela = new TH1F("hderela","hderela",100,-0,30);
  comp.fTree->Draw("100*(TPCE-TOFE)/TPCE>>hderela","Pt<1"+c0+c2+cprim);
  comp.fTree->Draw("100*(TPCE-TOFE)/TPCE>>hderel0","Pt<1&&TRD0.fBudget[0]<10"+c0+c2+cprim);
  comp.fTree->Draw("100*(TPCE-TOFE)/TPCE>>hderel1","Pt<1&&TRD0.fBudget[0]>10"+c0+c2+cprim);
  hderela->SetXTitle("(E_{TPC}-E_{TOF})/E_{TPC}(%)");
  hderela->SetLineStyle(1);
  hderel0->SetLineStyle(2);
  hderel1->SetLineStyle(3);
  hderela->Draw("");
  hderel0->Draw("same");
  hderel1->Draw("same");
  TLegend *legend = new TLegend(0.55,0.12,0.85,0.35, "Relative Energy Loss Between TPC and TOF");
  legend->SetBorderSize(1);
  legend->AddEntry(hderela ,"All tracks");
  legend->AddEntry(hderela ,"Non crossing of boundary");
  legend->AddEntry(hderela ,"Crossing boundary");
  legend->Draw();
}


void EffBudget(){
  //
  //
  //
  TF1 f1("f1","100*exp(-[0]*x)",0,100);
  comp.Eff("TRD.fBudget[0]","abs(ThetaM)<1&&abs(MC.fPdg)==211"+cprim,c2,10,1,100);
  TH1F * heffb = (TH1F*)comp.fRes->Clone();
  heffb->SetXTitle("Material budget (g/cm^{2})");
  heffb->SetYTitle("Efficiency to reach TOF (%)");
  heffb->Fit(&f1);
  heffb->Draw();

  
}

void TOFbackround(){
  TH1F * his = new TH1F("his","his",100,-100,10000);
  TCut cut = "InfoTOF.fNCluster>1&&tofm0";
  comp.fTree->Draw("InfoTOF.fTime1-33*sqrt(InfoTOF.fCl1.fZ**2+InfoTOF.fCl1.fR**2)>>his","InfoTOF.fTime1<100000"+cut);
  his->SetXTitle("TOF Time (ns)");
}

void TOFsignal(){
  TCut cut = "InfoTOF.fNCluster>0&&abs(MC.fPdg)==2212&&P<2";
  //
  TH1F * his0 = new TH1F("his0","his0",100,-1000,1000);
  comp.fTree->Draw("InfoTOF.fTime0-InfoTOF.fTimes0[4]>>his0","tofm0"+cut);
  TH1F * hisf = new TH1F("hisf","hisf",100,-1000,1000);
  comp.fTree->Draw("InfoTOF.fTime0-InfoTOF.fTimes0[4]>>hisf","!(tofm0||tofm0s)"+cut);
  his0->Draw();
  hisf->Draw("same");
  his0->SetXTitle("TOF Time (ns)");
}




void EffPIDK(Float_t xmin=0.4, Float_t xmax=2){
  //
  //
  //Float_t xmin=0.4; Float_t xmax=2;
 //  TCut cut= "1";
//   // TCut cut = c2;
//   // TCut cut = "tofm"
//   AliTOFtrackInfo::SetPIDMatchCuts();
//   comp.Eff("P","TRD0.fIntegratedLength>360&&abs(MC.fPdg)==321"+cut,"InfoTOF.GetCombPID(-1,0.1,0)==3",6,xmin,xmax);
//   TH1F *his0 = (TH1F*)comp.fRes->Clone();
//   comp.Eff("P","TRD0.fIntegratedLength>360&&abs(MC.fPdg)==321"+cut,"InfoTOF.GetCombPID(-1,0.1,1)==3",6,xmin,xmax);
//   TH1F *his1 = (TH1F*)comp.fRes->Clone();
//   //AliTOFtrackInfo::SetPIDMatchCuts(-1,-1,-1,100);  // disable pid match cuts  
//   //comp.Eff("P","TRD0.fIntegratedLength>360&&abs(MC.fPdg)==321"+cut,"InfoTOF.GetCombPID(-1,0.0,0)==3",6,xmin,xmax);
//   //TH1F *hisno = (TH1F*)comp.fRes->Clone();
//   //AliTOFtrackInfo::SetPIDMatchCuts(); //enable again
//   //
//   comp.Eff("P","TRD0.fIntegratedLength>360&&abs(MC.fPdg)==321"+cut,"InfoTOF.GetCombPID(-1,0.1,2)==3",6,xmin,xmax);
//   TH1F *hisold = (TH1F*)comp.fRes->Clone();
//   comp.Eff("P","TRD0.fIntegratedLength>360&&abs(MC.fPdg)==321"+cut,"InfoTOF.GetCombPID(-1,0.0,-1)==3",6,xmin,xmax);
//   TH1F *histpc = (TH1F*)comp.fRes->Clone();
//   his0->SetMarkerStyle(21);
//   his1->SetMarkerStyle(24);
//   //  hisno->SetMarkerStyle(26);
//   hisold->SetMarkerStyle(25);
//   histpc->SetMarkerStyle(23);
//   //
//   his0->Draw();
//   his1->Draw("same");
//   //hisno->Draw("same");
//   hisold->Draw("same");
//   histpc->Draw("same");
//   TLegend *legend = new TLegend(0.55,0.12,0.85,0.35, "PID efficiency ");
//   legend->SetBorderSize(1);
//   legend->AddEntry(his0 ,"TPC+New TOF v0");
//   legend->AddEntry(his1 ,"TPC+New TOF v1");
//   //legend->AddEntry(hisno ,"TPC+New TOF v0 - no PID match cuts");
//   legend->AddEntry(hisold ,"TPC+Old TOF");
//   legend->AddEntry(histpc ,"TPC only");
//   legend->Draw();
  //
}

void EffPIDP(Float_t xmin=0.4, Float_t xmax=2){
  //
  //
  //Float_t xmin=0.4; Float_t xmax=4;
  TCut cut= "1";
  // TCut cut= c2;
  //TCut cut = "tofm0"
  //AliTOFtrackInfo::SetPIDMatchCuts(-1,-1,-1,1000);   // default cuts
//   AliTOFtrackInfo::SetPIDMatchCuts();   // default cuts
//   comp.Eff("P","TRD0.fIntegratedLength>360&&abs(MC.fPdg)==2212"+cut,"InfoTOF.GetCombPID(-1,0.1,0)==4",6,xmin,xmax);
//   TH1F *his0 = (TH1F*)comp.fRes->Clone();
//   comp.Eff("P","TRD0.fIntegratedLength>360&&abs(MC.fPdg)==2212"+cut,"InfoTOF.GetCombPID(-1,0.1,1)==4",6,xmin,xmax);
//   TH1F *his1 = (TH1F*)comp.fRes->Clone();
//   comp.Eff("P","TRD0.fIntegratedLength>360&&abs(MC.fPdg)==2212"+cut,"InfoTOF.GetCombPID(-1,0.1,2)==4",6,xmin,xmax);
//   TH1F *hisold = (TH1F*)comp.fRes->Clone();
//   comp.Eff("P","TRD0.fIntegratedLength>360&&abs(MC.fPdg)==2212"+cut,"InfoTOF.GetCombPID(-1,0.1,-1)==4",6,xmin,xmax);
//   TH1F *histpc = (TH1F*)comp.fRes->Clone();
//   his0->SetMarkerStyle(21);
//   his1->SetMarkerStyle(24);
//   hisold->SetMarkerStyle(25);
//   histpc->SetMarkerStyle(23);
//   his0->Draw();
//   his1->Draw("same");
//   hisold->Draw("same");
//   histpc->Draw("same");
//   TLegend *legend = new TLegend(0.55,0.12,0.85,0.35, "PID efficiency ");
//   legend->SetBorderSize(1);
//   legend->AddEntry(his0 ,"TPC+New TOF v0");
//   legend->AddEntry(his1 ,"TPC+New TOF v1");
//   legend->AddEntry(hisold ,"TPC+Old TOF");
//   legend->AddEntry(histpc ,"TPC only");
//   legend->Draw();

  //
}





void PtRes(){
  
  
}


TH1F * MakeCumul(TH1F *his,Bool_t norm = kTRUE)
{
  TH1F *hcumul = (TH1F*)his->Clone();
  char name[1000];
  sprintf(name,"N%f",gRandom->Rndm());
  hcumul->SetName(name);
  hcumul->SetTitle(name);
  //
  Float_t all = (Float_t)his->GetSum();
  if (!norm) all =1;
  for (Int_t i=0;i<=his->GetNbinsX();i++){
    hcumul->SetBinContent(i,his->Integral(0,i)/all);
  } 
  hcumul->SetFillColor(0);
  return hcumul;
}

TGraph* His01(TH1F *his0,TH1F *his1){
  Int_t nbins = his0->GetNbinsX();
  Double_t *x = new Double_t[nbins];
  Double_t *y = new Double_t[nbins];
  for (Int_t i=0;i<nbins;i++) {
    x[i] = his0->GetBinContent(i+1);
    y[i] = his1->GetBinContent(i+1);
  }
  return new TGraph(nbins,x,y);
}


TH1F * PullCumul(const char *var, TCut cut, Int_t div=200, Float_t max=20){
  TH1F * hpullb = new TH1F("hpullb","hpullb",div,0,max);
  char v2[1000];
  sprintf(v2,"%s>>hpullb",var);
  comp.fTree->Draw(v2, cut);
  TH1F * res = MakeCumul(hpullb);
  delete hpullb;
  return res;
}



void MakeComp(){
  //
  // Set tree and set aliases
  //
  TFile *f = new TFile("trdComp1.root");
  TTree * tree= (TTree*)f->Get("Comparison");
  comp.fTree =tree;  
}

void MakeAlias(){

  comp.fTree->SetAlias("Pt","sqrt(MC.fParticle.fPx**2+MC.fParticle.fPy**2)");
  comp.fTree->SetAlias("P","sqrt(MC.fParticle.fPx**2+MC.fParticle.fPy**2+MC.fParticle.fPz**2)");
  comp.fTree->SetAlias("Ptpc","sqrt(fTrackRef.fPx**2+fTrackRef.fPy**2+fTrackRef.fPz**2)");
  comp.fTree->SetAlias("VRadius","sqrt(MC.fParticle.fVx**2+MC.fParticle.fVy**2)");
  comp.fTree->SetAlias("DRadius","sqrt(MC.fTRdecay.fX**2+MC.fTRdecay.fY**2)");
  comp.fTree->SetAlias("ThetaM","MC.fParticle.fPz/Pt");
  comp.fTree->SetAlias("rel0","(MC.fTOFReferences[0].P()-MC.fTPCReferences[0].P())/MC.fTOFReferences[0].P()");  //relative en. loss
  comp.fTree->SetAlias("rel1","(TR.P()-MC.fTPCReferences[0].P())/MC.fTPCReferences[0].P()");  //relative en. loss - in the last TRD
  comp.fTree->SetAlias("pt_tof","MC.fTOFReferences[0].Pt()");
  comp.fTree->SetAlias("dpt_tof","(abs(1/RC.fRp[4])-MC.fTOFReferences[0].Pt())/MC.fTOFReferences[0].Pt()");


  comp.fTree->SetAlias("d1pt_tof","(abs(RC.fRp[4])-1/MC.fTOFReferences[0].Pt())");
  comp.fTree->SetAlias("d1ptp_tof","(abs(RC.fRp[4])-1/MC.fTOFReferences[0].Pt())/sqrt(RC.fRc[14])");

  comp.fTree->SetAlias("dpt_trd","(abs(1/RC.fRp[4])-TR.Pt())/TR.Pt()");

  comp.fTree->SetAlias("tofth","(MC.fTOFReferences[0].fPz/MC.fTOFReferences[0].Pt())");
  comp.fTree->SetAlias("dth_tof","TRD0.fT[3]-tofth");
  comp.fTree->SetAlias("pullth0","(TRD0.fT[3]-tofth)/sqrt(TRD0.fCtt)");
  comp.fTree->SetAlias("phi_tof","atan2(MC.fTOFReferences[0].fPy,MC.fTOFReferences[0].fPx)");
  comp.fTree->SetAlias("phi_trd","asin(TRD0.GetSnp())+TRD0.fAlpha");
  comp.fTree->SetAlias("pullphi0","(sin(asin(TRD0.GetSnp())+TRD0.fAlpha)-sin(atan2(MC.fTOFReferences[0].fPy,MC.fTOFReferences[0].fPx)))/sqrt(TRD0.fCee)");
  comp.fTree->SetAlias("dphir0","(asin(TRD0.GetSnp())+TRD0.fAlpha-atan2(MC.fTOFReferences[0].fPy,MC.fTOFReferences[0].fPx))");
  comp.fTree->SetAlias("dz0","(TRD0.fZ-MC.fTOFReferences[0].fZ)");
  comp.fTree->SetAlias("pully0","TRD0.fY/sqrt(TRD0.fCyy)");
  comp.fTree->SetAlias("pullz0","(TRD0.fZ-MC.fTOFReferences[0].fZ)/sqrt(TRD0.fCzz)");
  //
  comp.fTree->SetAlias("sigmay","sqrt(TRD0.fCyy)*(1+1/(1+abs(4./(RC.fRp[4]))))");
  comp.fTree->SetAlias("pully3","TRD0.fY/sigmay");  
  comp.fTree->SetAlias("deltaz0","(TRD0.fZ-MC.fTOFReferences[0].fZ)");
  //
  comp.fTree->SetAlias("pullc1","(abs(RC.fRp[4])-1/TR.Pt())/sqrt(RC.fRc[14])");
  comp.fTree->SetAlias("deltac1","(abs(RC.fRp[4])-1/TR.Pt())*TR.Pt()");
  comp.fTree->SetAlias("dist","sqrt(deltaz0**2+TRD0.fY**2)");
  comp.fTree->SetAlias("pull0","pully0**2+pullz0**2");
  comp.fTree->SetAlias("pullc0","(abs(TRD0.fC)-(1/(TRD0.fLocalConvConst*MC.fTOFReferences[0].Pt())))/sqrt(TRD0.fCcc)");
  //
  comp.fTree->SetAlias("prob5","exp(-(TRD1.fTracklets[5].fChi2)/16.)*max((TRD1.fTracklets[5].fNFound-6)/9.,0)");
  comp.fTree->SetAlias("prob4","exp(-(TRD1.fTracklets[4].fChi2)/16.)*max((TRD1.fTracklets[4].fNFound-6)/9.,0)");
  //
  comp.fTree->SetAlias("TPCE","sqrt(MC.fTPCReferences[2].P()**2+MC.fMass**2)");
  comp.fTree->SetAlias("TOFE","sqrt(MC.fTOFReferences[0].P()**2+MC.fMass**2)");
  comp.fTree->SetAlias("TRDE","sqrt(TR.P()**2+MC.fMass**2)");
  comp.fTree->SetAlias("dtpi","TRD0.fIntegratedTime[2]-10^12*MC.fTOFReferences.fTime");
  comp.fTree->SetAlias("dtk","TRD0.fIntegratedTime[3]-10^12*MC.fTOFReferences.fTime");
  comp.fTree->SetAlias("dtp","TRD0.fIntegratedTime[4]-10^12*MC.fTOFReferences.fTime");
  comp.fTree->SetAlias("dt","(abs(MC.fPdg)==2212)*dtp+(abs(MC.fPdg)==211)*dtpi+(abs(MC.fPdg)==321)*dtk"); //delta time
  comp.fTree->SetAlias("Beta","sqrt(TR.P()**2/(TR.P()**2+MC.fMass**2))");
  comp.fTree->SetAlias("dtsigma","10+(1-Beta)*280");
  comp.fTree->SetAlias("dptrel","(abs(TRD0.GetSignedPt())-MC.fTOFReferences[0].Pt())/MC.fTOFReferences[0].Pt()");
  //
  comp.fTree->SetAlias("dphi","atan2(TR.fY,TR..fX)-atan2(TR.fPy,TR..fPx)");
  comp.fTree->SetAlias("dphi0","acos((TR.fX*TR.fPx+TR.fY*TR.fPy)/(TR.Pt()*TR.R()))");
  comp.fTree->SetAlias("derel","(TRD0.fDE-(TPCE-TOFE))/(TPCE-TOFE)");
  //
  // TOF stuff
  //
  comp.fTree->SetAlias("tofm0","InfoTOF.fCl0.fLab[0]==abs(MC.fLabel)");
  comp.fTree->SetAlias("tofm1","InfoTOF.fCl1.fLab[0]==abs(MC.fLabel)");
  comp.fTree->SetAlias("tofm0s","InfoTOF.fCl0.fLab[0]>=abs(MC.fParticle.fDaughter[0]) && InfoTOF.fCl0.fLab[0]<=abs(MC.fParticle.fDaughter[1])");
  comp.fTree->SetAlias("tofm1s","InfoTOF.fCl1.fLab[0]>=abs(MC.fParticle.fDaughter[0]) && InfoTOF.fCl1.fLab[0]<=abs(MC.fParticle.fDaughter[1])");
  comp.fTree->SetAlias("tofm","tofm0||tofm1||tofm0s||tofm1s");

  comp.fTree->SetAlias("Yref3","InfoMC.fSeeds[3].fYref[0]+InfoMC.fSeeds[3].fYref[1]*(InfoMC.fRef[3].LocalX()-InfoMC.fSeeds[3].fX0)");
  comp.fTree->SetAlias("dyref3","Yref3-InfoMC.fRef[3].LocalY()");

  comp.fTree->SetAlias("Yref5","InfoMC.fSeeds[5].fYref[0]+InfoMC.fSeeds[5].fYref[1]*(InfoMC.fRef[5].LocalX()-InfoMC.fSeeds[5].fX0)");
  comp.fTree->SetAlias("dyref5","Yref5-InfoMC.fRef[5].LocalY()");

}


void MakeCompTr(){
  //
  // Set tree and set aliases
  //
  TFile *ff = new TFile("TRDdebug.root");
  TTree * treetr= (TTree*)ff->Get("tracklet");
  comptr.fTree =treetr;  
  
}


void DrawDE(TCut cut){
  comp.DrawXY("(TRD0.fDE)","TPCE-TOFE",c2,cut,5,0.01,0.1,0,0.2);
  comp.fRes->Draw();
}




void DrawYResol1(TCut cut){
  comp.fTree->Draw("TRD1.fY","MC.fNTOFRef>0&&MC.fNTRDRef>5"+c1+cut,"");
}

void DrawYResol0(TCut cut){
  comp.fTree->Draw("TRD0.fY","MC.fNTOFRef>0&&MC.fNTRDRef>5"+c0+cut,"");
}


void DrawTOFResY(Int_t ndiv =10,Float_t ptmin=0.5, Float_t ptmax =1.5, Float_t dymin=-0.5, Float_t dymax=0.5){
  //
  //
  //Float_t ptmin=0.5, ptmax =1.5, dymin=-0.5, dymax=0.5;
  //Float_t ptmin=0.5, ptmax =5, dymin=-0.3, dymax=0.3;
  //  Int_t   ndiv =5;
  TCut cl("cl","InfoCl.fNClusters>60");
  comp.DrawXY("TR.Pt()","TRD0.fY",c0+c2+cl,"1",ndiv,ptmin, ptmax,dymin, dymax,60);
  TH1F * histof = (TH1F*)comp.fRes->Clone();
  comp.DrawXY("TR.Pt()","TRD1.fY",c0+c2+cl,"1",ndiv,ptmin, ptmax,dymin, dymax,60);
  TH1F * histrd = (TH1F*)comp.fRes->Clone();
  histof->SetMarkerStyle(24);
  histrd->SetMarkerStyle(25);
  histof->SetXTitle("P_{t}(GeV)");
  histof->SetYTitle("#Delta_{r-#phi}(cm)");
  histof->Draw();
  histrd->Draw("same"); 
  TLegend *legend = new TLegend(0.55,0.12,0.85,0.35, "TRD resolution r-#phi (cm)");
  legend->SetBorderSize(1);
  legend->AddEntry(histof ,"Resolution in TOF plane");
  legend->AddEntry(histrd ,"Resolution in last TRD plane");
  legend->Draw();
}

void DrawTOFResZ(Float_t ptmin=0.5, Float_t ptmax =1.5, Float_t dzmin=-2.5, Float_t dzmax=2.5){
  //
  comp.DrawXY("TR.Pt()","TRD0.fZ-MC.fTOFReferences.fZ",c0+c2,"1",10,ptmin,ptmax,dzmin,dzmax,30);
  TH1F * histof = (TH1F*)comp.fRes->Clone();
  comp.DrawXY("TR.Pt()","TRD1.fZ-TR.fZ",c0+c2,"1",10,ptmin,ptmax,dzmin,dzmax,30);
  TH1F * histrd = (TH1F*)comp.fRes->Clone();
  histof->SetMarkerStyle(24);
  histrd->SetMarkerStyle(25);
  histof->SetXTitle("P_{t}(GeV)");
  histof->SetYTitle("#Delta_{z}(cm)");
  histof->Draw();
  histrd->Draw("same"); 
  TLegend *legend = new TLegend(0.55,0.12,0.85,0.35, "TRD resolution z (cm)");
  legend->SetBorderSize(1);
  legend->AddEntry(histof ,"Resolution in TOF plane");
  legend->AddEntry(histrd ,"Resolution in last TRD plane");
  legend->Draw();
}


void MakeCumul(TCut & cut)
{
  //  TCut cut ="1&&TR.Pt()>0.4";
  TH1F * hisy = PullCumul("abs(pully0)",cut+cprim+c0+c2+c3,1000,20);
  TH1F * hisz = PullCumul("abs(pullz0)",cut+cprim+c0+c2+c3,1000,20);
  TH1F * hisyz = PullCumul("sqrt(pullz0**2+pully0**2)",cut+cprim+c0+c2+c3,1000,20);
  hisz->SetXTitle("Pull (unit)");
  hisz->SetYTitle("Cumulative function");
  hisy->SetLineStyle(1);hisz->SetLineStyle(2);hisyz->SetLineStyle(3);
  hisz->Draw(); hisy->Draw("same");
  //hisyz->Draw("same");  
  TLegend *legend = new TLegend(0.55,0.12,0.85,0.35, "TRD pull (unit)");
  legend->SetBorderSize(1);
  legend->AddEntry(hisy ,"Pull y");
  legend->AddEntry(hisz,"Pull z");
  //  legend->AddEntry(hisyz,"Pull yz");
  legend->Draw();
}

void MakeCumulAbs(TCut & cut)
{
  // TCut cut = "1";
  TH1F * hisy = PullCumul("abs(TRD0.fY)",cut+cprim+c0+c2+c3,1000,6);
  TH1F * hisz = PullCumul("abs(deltaz0)",cut+cprim+c0+c2+c3,1000,6);  
  TH1F * hisyz = PullCumul("sqrt(TRD0.fY**2+deltaz0**2)",cut+cprim+c0+c2+c3,1000,6);
  hisz->SetXTitle("Delta (cm)");
  hisz->SetYTitle("Cumulative function");
  //
  hisy->SetLineStyle(1);hisz->SetLineStyle(2);hisyz->SetLineStyle(3);
  hisz->Draw(); hisy->Draw("same");hisyz->Draw("same");  
  TLegend *legend = new TLegend(0.55,0.12,0.85,0.35, "TRD residulas (cm)");
  legend->SetBorderSize(1);
  legend->AddEntry(hisy ,"Delta y (cm)");
  legend->AddEntry(hisz,"Delta z (cm)");
  legend->AddEntry(hisyz,"Delta  (cm)");
  legend->Draw();
}

void LoadClusters(TObjArray *arr, Int_t event)
{
  //
  //
  // event=0
  printf("Load cluster - event%d\n",event);
  fLoader->SetEventNumber(event);
  AliLoader * trdl = (AliLoader*)fLoader->GetLoader("TRDLoader");
  trdl->LoadRecPoints();

  TTree * ClusterTree = trdl->TreeR();
  if (!ClusterTree) return;
  TBranch * branch = ClusterTree->GetBranch("TRDcluster"); 
  TObjArray *clusterArray = new TObjArray(1000); 
  branch->SetAddress(&clusterArray);
  Int_t nEntries = (Int_t) ClusterTree->GetEntries();
  //
  for (Int_t iEntry = 0; iEntry < nEntries; iEntry++) {    
    ClusterTree->GetEvent(iEntry);  
    for (Int_t icl =0; icl<clusterArray->GetEntriesFast();icl++){
      AliTRDcluster *cl = (AliTRDcluster*)clusterArray->UncheckedAt(icl);
      if (!cl) continue;
      Int_t detector=cl->GetDetector();
      Int_t localTimeBin=cl->GetLocalTimeBin();
      //      Int_t sector=geom.GetSector(detector);
      Int_t plane=geom.GetPlane(detector);
      for (Int_t ilab=0; ilab<3; ilab++){
	Int_t label = cl->GetLabel(ilab);
	Int_t pos = label;      
	if (label<0) continue;
	if (localTimeBin>21||localTimeBin<0) continue;
	if (plane<0||plane>5) continue;
	
	AliTRDInfoCl * info =( AliTRDInfoCl*)arr->At(pos); 
	if (!info) {
	  info = new AliTRDInfoCl;
	  arr->AddAt(info,pos);
	} 
	//
	if (info->fCount[plane][localTimeBin]>0){
	  if (TMath::Abs(info->fCl[plane][localTimeBin].GetY()-cl->GetY())<20 &&
	      TMath::Abs(info->fCl[plane][localTimeBin].GetZ()-cl->GetZ())<20){
	    info->fCount[plane][localTimeBin]++;
	  }
	}else{
	  info->fCl[plane][localTimeBin]=*cl;
	  info->fCount[plane][localTimeBin]++;
	}
      }
    }
  }  
  for (Int_t i=0;i<arr->GetEntriesFast();i++){
    AliTRDInfoCl * info =( AliTRDInfoCl*)arr->At(i); 
    if (info) info->Update();
  }
}



void ReadSeeds(Int_t eventNr, TObjArray *sarray)
{
  //
  // read seeds form the file
  //
  AliTRDseed seeds[6];
  AliTRDseed *pseeds[6]={&seeds[0],&seeds[1],&seeds[2],&seeds[3],&seeds[4],&seeds[5]};
  Int_t label, label1, label2, seventNr, nused;
  Float_t fakeRatio;
  TFile f("TRDdebug.root");
  TTree  *tree =(TTree*)f.Get("Seeds2");
  if (!tree) return;
  TBranch * br0 = tree->GetBranch("S0.");
  TBranch * br1 = tree->GetBranch("S1.");
  TBranch * br2 = tree->GetBranch("S2.");
  TBranch * br3 = tree->GetBranch("S3.");
  TBranch * br4 = tree->GetBranch("S4.");
  TBranch * br5 = tree->GetBranch("S5.");
  TBranch * brL = tree->GetBranch("Label");
  TBranch * brL1 = tree->GetBranch("Label1");
  TBranch * brL2 = tree->GetBranch("Label2");
  TBranch * brE = tree->GetBranch("EventNr");
  TBranch * brU = tree->GetBranch("NUsed");
  TBranch * brFR = tree->GetBranch("FakeRatio");
  brE->SetAddress(&seventNr);
  brL->SetAddress(&label);
  brL1->SetAddress(&label1);
  brL2->SetAddress(&label2);
  brU->SetAddress(&nused);
  brFR->SetAddress(&fakeRatio);
  br0->SetAddress(&pseeds[0]);
  br1->SetAddress(&pseeds[1]);
  br2->SetAddress(&pseeds[2]);
  br3->SetAddress(&pseeds[3]);
  br4->SetAddress(&pseeds[4]);
  br5->SetAddress(&pseeds[5]);
  //
  // delete all seeds
  for (Int_t ip=0;ip<sarray->GetEntriesFast();ip++){
    AliTRDseed * seed = (AliTRDseed*)sarray->UncheckedAt(ip);
    if (seed){
      delete seed;
    }
  }
  sarray->Clear();
  for (Int_t ip=0;ip<tree->GetEntries();ip++){
    tree->GetEntry(ip);
    if (seventNr!=eventNr) continue;    
    //if (nused>15) continue;
    if (!sarray->At(label)){
      AliTRDInfoSeed * seed =  new AliTRDInfoSeed;
      seed->Update(seeds);
      seed->fLabel       = label;
      seed->fLabel1      = label1;
      seed->fLabel2      = label2;
      seed->fFakeRatio = fakeRatio; 
      seed->fNUsed = nused; 
      sarray->AddAt(seed,label);
    }
  } 
}

void ReadTOFs(Int_t eventNr, TObjArray *tofs)
{
  //   
 //  tofs->Clear();
//   AliTOFtrackInfo *infotof = new AliTOFtrackInfo;
//   TFile ftof("TOFdebug.root");
//   TTree *   treetof =(TTree*)ftof.Get("Info");
//   if (!treetof) return;
//   TBranch * br30 = treetof->GetBranch("Info.");
//   br30->SetAddress(&infotof);
//   //
//   // read tof info
//   for (Int_t ip=0;ip<treetof->GetEntries();ip++){
//     treetof->GetEntry(ip);
//     if (eventNr!=infotof->fEventNr) continue;
//     //	if (eventNr>info->fEventNr) continue;
//     //
//     Int_t label = TMath::Abs(infotof->fLab);
//     if (label==0) continue;
//     //    if (label>=kmaxlabel) continue;
//     if (!(tofs->At(label))){
//       tofs->AddAt(new AliTOFtrackInfo(*infotof),label);	  
//     }
//     else{
//       if (infotof->fLength0>100)
// 	tofs->AddAt(new AliTOFtrackInfo(*infotof),label);
//     }
//   }
}

void ReadTracks(Int_t eventNr, TObjArray *esds, TObjArray *trds)
{
  //
  //  read debug tracks
  //
  AliESDtrack * esdp     = new AliESDtrack;
  AliTRDtrack * trdp     = new AliTRDtrack;
  Int_t teventNr;
  TFile f2("TRDdebug.root");
  TTree * tree2 =(TTree*)f2.Get("Tracks");
  if (!tree2) return;
  TBranch * br20 = tree2->GetBranch("ESD.");
  TBranch * br21 = tree2->GetBranch("trd.");
  TBranch * br22 = tree2->GetBranch("EventNr");
  br20->SetAddress(&esdp);
  br21->SetAddress(&trdp);  
  br22->SetAddress(&teventNr);
  //
  // delete all event
  for (Int_t ip=0;ip<esds->GetEntriesFast();ip++){
    if (esds->At(ip)){
      delete esds->At(ip);
      delete trds->At(ip);
    }
  }
  esds->Clear();
  trds->Clear(); 
  for (Int_t ip=0;ip<tree2->GetEntries();ip++){
    tree2->GetEntry(ip);
    if (eventNr!=teventNr) continue;
    //
    Int_t label = TMath::Abs(esdp->GetLabel());
    if (label==0) continue;
    if (!(esds->At(label))){
      esds->AddAt(new AliESDtrack(*esdp),label);
      trds->AddAt(new AliTRDtrack(*trdp),label);
    } else{
      AliTRDtrack * track =(AliTRDtrack*)trds->At(label);
      if (track->GetNumberOfClusters() <trdp->GetNumberOfClusters()){
	esds->AddAt(new AliESDtrack(*esdp),label);
	trds->AddAt(new AliTRDtrack(*trdp),label);
      }
    }
  }  
}



void MakeTree()
{
  fLoader = AliRunLoader::Open("galice.root");
  AliESDtrack * esd     = new AliESDtrack;
  AliTRDtrack * ptrd     = new AliTRDtrack;
  AliTRDtrack * ptrd0    = new AliTRDtrack;
  AliTRDtrack * ptrd1    = new AliTRDtrack;
  AliTRDtrack * ptrdb    = new AliTRDtrack;
  //
  AliTRDtrack * trd     = ptrd;
  AliTRDtrack * trd0    = ptrd0;
  AliTRDtrack * trd1    = ptrd1;
  AliTRDtrack * trdb    = ptrdb;
  //
  AliMCInfo* info       = new AliMCInfo;
  AliTRDInfoMC *trdinfo = new AliTRDInfoMC;
  AliTRDInfoCl *infocl  = new AliTRDInfoCl;
  AliTRDInfoSeed *infoSeed = new AliTRDInfoSeed;
  //  AliTOFtrackInfo *infotof = new AliTOFtrackInfo;
  // AliTOFtrackInfo dummytof;
  //  dummytof.fLab=-1;
  AliTRDInfoSeed  dummySeed;
  AliTRDtrack dummytrd;
  AliTRDtrack dummytrd0;
  AliTRDtrack dummytrd1;
  AliTRDtrack dummytrdb;
  AliESDtrack dummyesd;
  dummySeed.fLabel =-1;
  AliTrackReference *ref = new AliTrackReference;
  TObjArray         * clarray  = new TObjArray(6*1000000);
  const Int_t kmaxlabel=1500000;
  //
  // MC part
  //
  TFile f("cmpESDTracks.root");
  TTree * tree1 = (TTree*) f.Get("ESDcmpTracks");
  TBranch * brmc  = tree1->GetBranch("MC");
  brmc->SetAddress(&info);
  //
  // 
  TObjArray *esds  = new TObjArray(kmaxlabel);
  TObjArray *trds  = new TObjArray(kmaxlabel);
  TObjArray *tofs  = new TObjArray(kmaxlabel);  
  TObjArray *seeds = new TObjArray(kmaxlabel);
  //
  //
  //
  //
  // comparison part
  //
  TFile f3("trdComp1.root","new");
  TTree   * tree3   = new TTree("Comparison","Comparison");
  tree3->Branch("MC.","AliMCInfo",&info);
  tree3->Branch("RC.","AliESDtrack",&esd);
  tree3->Branch("TRD.","AliTRDtrack",&trd);
  tree3->Branch("TRD0.","AliTRDtrack",&trd0);  // track at tof ref
  tree3->Branch("TRD1.","AliTRDtrack",&trd1);  // track at last TRD ref
  tree3->Branch("TRDb.","AliTRDtrack",&trdb);  // track at tof ref
  tree3->Branch("TR.","AliTrackReference",&ref);  // track at last TRD ref
  tree3->Branch("InfoMC.","AliTRDInfoMC",&trdinfo);  // info about TRD track MC
  tree3->Branch("InfoCl.","AliTRDInfoCl",&infocl);  // info about TRD track MC
  tree3->Branch("InfoSeed.","AliTRDInfoSeed",&infoSeed);  // info about TRD track MC
  //  tree3->Branch("InfoTOF.","AliTOFtrackInfo",&infotof);  // info about TOF
  //
  //
  Int_t lastevent=-1;

  for (Int_t i=0;i<tree1->GetEntries();i++){
    brmc->GetEntry(i);
    //    if (info->fEventNr>5) break;
    if (lastevent!=info->fEventNr){
      printf("Read Event\t%d\n", info->fEventNr);
      ReadSeeds(info->fEventNr, seeds);
      ReadTOFs(info->fEventNr, tofs);
      ReadTracks(info->fEventNr,esds,trds);
      lastevent = info->fEventNr;
      clarray->Clear();
      LoadClusters(clarray,lastevent);
      //
    }
    //    if (info->fNTOFRef==0 && info->fNTRDRef<5) continue;
    Int_t label = info->fLabel;    
    trdinfo->Update(info);
    if (clarray->At(label)){
      infocl = (AliTRDInfoCl*)clarray->At(label);
      infocl->Update();
    }
    if (seeds->At(label)){
      infoSeed = (AliTRDInfoSeed*)seeds->At(label);
    }else{
      infoSeed = &dummySeed;
    }
    //    if (info->fNTPCRef<3) continue;
    trd0->SetStop(kTRUE);
    trdb->SetStop(kTRUE);
    trd1->SetStop(kTRUE);
 //    infotof = (AliTOFtrackInfo*)(tofs->At(label));
//     if (!infotof) {
//       infotof = &dummytof;
//       infotof->fNCluster=0; 
//       esd   = (AliESDtrack*)(esds->At(label));
//       if (esd){
// 	Double_t pid[5];
// 	esd->GetTPCpid(pid);
// 	Double_t suml=0;
// 	for (Int_t ip=0;ip<5;ip++) suml+=pid[ip];
// 	for (Int_t ip=0;ip<5;ip++) {
// 	  if (suml>0.0000000001) infotof->fRefPID[ip]= pid[ip]/suml;
// 	  else infotof->fRefPID[ip]=0.2;
// 	}
//       }
//    }
    trd   = &dummytrd;
    trd0  = &dummytrd0;
    trd1  = &dummytrd1;
    trdb  = &dummytrdb;
    esd   = &dummyesd;
    //
    if (esds->At(label)) {
      trd0  = ptrd0; 
      trd1  = ptrd1; 
      trdb  = ptrdb; 
      //      if (i%1000==0) printf("\n%d\n",i);
      trd   = (AliTRDtrack*)(trds->At(label));
      esd   = (AliESDtrack*)(esds->At(label));
      //
      *trd0 = *trd;
      if (trd->GetBackupTrack()) 
	*trdb = *trd->GetBackupTrack();
      else 
	 *trdb = *trd;
      *trd1 = *trd;
      if (info->fNTOFRef>0){
	AliTrackReference * ref = ((AliTrackReference*)(info->fTOFReferences->At(0)));
	Double_t x   = ((AliTrackReference*)(info->fTOFReferences->At(0)))->X();
	Double_t y   = ((AliTrackReference*)(info->fTOFReferences->At(0)))->Y();
	Double_t phi    = TMath::ATan2(y,x);	
	Double_t radius = TMath::Sqrt(x*x+y*y);
	//
	// rotate and propagate to local system
	//
	trd0->SetStop(kFALSE);
	if (!trd0->Rotate(phi-trd0->GetAlpha())) trd0->SetStop(kTRUE);
	else{
	  Double_t xyz0[3], param[7];
	  trd0->GetGlobalXYZ(xyz0[0],xyz0[1],xyz0[2]);
	  Double_t xyz1[3]={ref->X(),ref->Y(),ref->Z()};
	  AliTracker::MeanMaterialBudget(xyz0,xyz1,param);
	  if (!trd0->PropagateTo(radius,param[1],param[0]*param[4])) 
             trd0->SetStop(kTRUE);
	}
	trdb->SetStop(kFALSE);
	if (!trdb->Rotate(phi-trdb->GetAlpha())) trdb->SetStop(kTRUE);
	else
	  if (!trdb->PropagateTo(radius)) trdb->SetStop(kTRUE);
      }    

      if (info->fNTRDRef>0){
	Double_t cradius=0;
	Double_t cphi=0;
	for (Int_t itrd =0; itrd<info->fNTRDRef;itrd++){
	  Double_t x   = ((AliTrackReference*)(info->fTRDReferences->At(itrd)))->X();
	  Double_t y   = ((AliTrackReference*)(info->fTRDReferences->At(itrd)))->Y();
	  Double_t phi    = TMath::ATan2(y,x);	
	  //	  Double_t snp    =  TMath::ATan2(((AliTrackReference*)(info->fTRDReferences->At(itrd)))->Py(),
	  //				  ((AliTrackReference*)(info->fTRDReferences->At(itrd)))->Px());
	  //	  if (TMath::Abs(snp)>0.9 &&cradius>10) break; 
	  Double_t radius = TMath::Sqrt(x*x+y*y);
	  if (radius>cradius){
	    cradius = radius;
	    cphi    = phi;
	    ref     =  ((AliTrackReference*)(info->fTRDReferences->At(itrd)));
	  }else break;   
	}
	//
	// rotate and propagate to local system of the last track reference
	//
	trd1->SetStop(kFALSE);
	if (!trd1->Rotate(cphi-trd1->GetAlpha())) trd1->SetStop(kTRUE);
	else{
	  if (!trd1->PropagateTo(cradius)) trd1->SetStop(kTRUE);
	}
      }    
    }
    tree3->Fill();    
  }
  f3.cd();
  tree3->Write();
}


 AliTRDComparison.C:1
 AliTRDComparison.C:2
 AliTRDComparison.C:3
 AliTRDComparison.C:4
 AliTRDComparison.C:5
 AliTRDComparison.C:6
 AliTRDComparison.C:7
 AliTRDComparison.C:8
 AliTRDComparison.C:9
 AliTRDComparison.C:10
 AliTRDComparison.C:11
 AliTRDComparison.C:12
 AliTRDComparison.C:13
 AliTRDComparison.C:14
 AliTRDComparison.C:15
 AliTRDComparison.C:16
 AliTRDComparison.C:17
 AliTRDComparison.C:18
 AliTRDComparison.C:19
 AliTRDComparison.C:20
 AliTRDComparison.C:21
 AliTRDComparison.C:22
 AliTRDComparison.C:23
 AliTRDComparison.C:24
 AliTRDComparison.C:25
 AliTRDComparison.C:26
 AliTRDComparison.C:27
 AliTRDComparison.C:28
 AliTRDComparison.C:29
 AliTRDComparison.C:30
 AliTRDComparison.C:31
 AliTRDComparison.C:32
 AliTRDComparison.C:33
 AliTRDComparison.C:34
 AliTRDComparison.C:35
 AliTRDComparison.C:36
 AliTRDComparison.C:37
 AliTRDComparison.C:38
 AliTRDComparison.C:39
 AliTRDComparison.C:40
 AliTRDComparison.C:41
 AliTRDComparison.C:42
 AliTRDComparison.C:43
 AliTRDComparison.C:44
 AliTRDComparison.C:45
 AliTRDComparison.C:46
 AliTRDComparison.C:47
 AliTRDComparison.C:48
 AliTRDComparison.C:49
 AliTRDComparison.C:50
 AliTRDComparison.C:51
 AliTRDComparison.C:52
 AliTRDComparison.C:53
 AliTRDComparison.C:54
 AliTRDComparison.C:55
 AliTRDComparison.C:56
 AliTRDComparison.C:57
 AliTRDComparison.C:58
 AliTRDComparison.C:59
 AliTRDComparison.C:60
 AliTRDComparison.C:61
 AliTRDComparison.C:62
 AliTRDComparison.C:63
 AliTRDComparison.C:64
 AliTRDComparison.C:65
 AliTRDComparison.C:66
 AliTRDComparison.C:67
 AliTRDComparison.C:68
 AliTRDComparison.C:69
 AliTRDComparison.C:70
 AliTRDComparison.C:71
 AliTRDComparison.C:72
 AliTRDComparison.C:73
 AliTRDComparison.C:74
 AliTRDComparison.C:75
 AliTRDComparison.C:76
 AliTRDComparison.C:77
 AliTRDComparison.C:78
 AliTRDComparison.C:79
 AliTRDComparison.C:80
 AliTRDComparison.C:81
 AliTRDComparison.C:82
 AliTRDComparison.C:83
 AliTRDComparison.C:84
 AliTRDComparison.C:85
 AliTRDComparison.C:86
 AliTRDComparison.C:87
 AliTRDComparison.C:88
 AliTRDComparison.C:89
 AliTRDComparison.C:90
 AliTRDComparison.C:91
 AliTRDComparison.C:92
 AliTRDComparison.C:93
 AliTRDComparison.C:94
 AliTRDComparison.C:95
 AliTRDComparison.C:96
 AliTRDComparison.C:97
 AliTRDComparison.C:98
 AliTRDComparison.C:99
 AliTRDComparison.C:100
 AliTRDComparison.C:101
 AliTRDComparison.C:102
 AliTRDComparison.C:103
 AliTRDComparison.C:104
 AliTRDComparison.C:105
 AliTRDComparison.C:106
 AliTRDComparison.C:107
 AliTRDComparison.C:108
 AliTRDComparison.C:109
 AliTRDComparison.C:110
 AliTRDComparison.C:111
 AliTRDComparison.C:112
 AliTRDComparison.C:113
 AliTRDComparison.C:114
 AliTRDComparison.C:115
 AliTRDComparison.C:116
 AliTRDComparison.C:117
 AliTRDComparison.C:118
 AliTRDComparison.C:119
 AliTRDComparison.C:120
 AliTRDComparison.C:121
 AliTRDComparison.C:122
 AliTRDComparison.C:123
 AliTRDComparison.C:124
 AliTRDComparison.C:125
 AliTRDComparison.C:126
 AliTRDComparison.C:127
 AliTRDComparison.C:128
 AliTRDComparison.C:129
 AliTRDComparison.C:130
 AliTRDComparison.C:131
 AliTRDComparison.C:132
 AliTRDComparison.C:133
 AliTRDComparison.C:134
 AliTRDComparison.C:135
 AliTRDComparison.C:136
 AliTRDComparison.C:137
 AliTRDComparison.C:138
 AliTRDComparison.C:139
 AliTRDComparison.C:140
 AliTRDComparison.C:141
 AliTRDComparison.C:142
 AliTRDComparison.C:143
 AliTRDComparison.C:144
 AliTRDComparison.C:145
 AliTRDComparison.C:146
 AliTRDComparison.C:147
 AliTRDComparison.C:148
 AliTRDComparison.C:149
 AliTRDComparison.C:150
 AliTRDComparison.C:151
 AliTRDComparison.C:152
 AliTRDComparison.C:153
 AliTRDComparison.C:154
 AliTRDComparison.C:155
 AliTRDComparison.C:156
 AliTRDComparison.C:157
 AliTRDComparison.C:158
 AliTRDComparison.C:159
 AliTRDComparison.C:160
 AliTRDComparison.C:161
 AliTRDComparison.C:162
 AliTRDComparison.C:163
 AliTRDComparison.C:164
 AliTRDComparison.C:165
 AliTRDComparison.C:166
 AliTRDComparison.C:167
 AliTRDComparison.C:168
 AliTRDComparison.C:169
 AliTRDComparison.C:170
 AliTRDComparison.C:171
 AliTRDComparison.C:172
 AliTRDComparison.C:173
 AliTRDComparison.C:174
 AliTRDComparison.C:175
 AliTRDComparison.C:176
 AliTRDComparison.C:177
 AliTRDComparison.C:178
 AliTRDComparison.C:179
 AliTRDComparison.C:180
 AliTRDComparison.C:181
 AliTRDComparison.C:182
 AliTRDComparison.C:183
 AliTRDComparison.C:184
 AliTRDComparison.C:185
 AliTRDComparison.C:186
 AliTRDComparison.C:187
 AliTRDComparison.C:188
 AliTRDComparison.C:189
 AliTRDComparison.C:190
 AliTRDComparison.C:191
 AliTRDComparison.C:192
 AliTRDComparison.C:193
 AliTRDComparison.C:194
 AliTRDComparison.C:195
 AliTRDComparison.C:196
 AliTRDComparison.C:197
 AliTRDComparison.C:198
 AliTRDComparison.C:199
 AliTRDComparison.C:200
 AliTRDComparison.C:201
 AliTRDComparison.C:202
 AliTRDComparison.C:203
 AliTRDComparison.C:204
 AliTRDComparison.C:205
 AliTRDComparison.C:206
 AliTRDComparison.C:207
 AliTRDComparison.C:208
 AliTRDComparison.C:209
 AliTRDComparison.C:210
 AliTRDComparison.C:211
 AliTRDComparison.C:212
 AliTRDComparison.C:213
 AliTRDComparison.C:214
 AliTRDComparison.C:215
 AliTRDComparison.C:216
 AliTRDComparison.C:217
 AliTRDComparison.C:218
 AliTRDComparison.C:219
 AliTRDComparison.C:220
 AliTRDComparison.C:221
 AliTRDComparison.C:222
 AliTRDComparison.C:223
 AliTRDComparison.C:224
 AliTRDComparison.C:225
 AliTRDComparison.C:226
 AliTRDComparison.C:227
 AliTRDComparison.C:228
 AliTRDComparison.C:229
 AliTRDComparison.C:230
 AliTRDComparison.C:231
 AliTRDComparison.C:232
 AliTRDComparison.C:233
 AliTRDComparison.C:234
 AliTRDComparison.C:235
 AliTRDComparison.C:236
 AliTRDComparison.C:237
 AliTRDComparison.C:238
 AliTRDComparison.C:239
 AliTRDComparison.C:240
 AliTRDComparison.C:241
 AliTRDComparison.C:242
 AliTRDComparison.C:243
 AliTRDComparison.C:244
 AliTRDComparison.C:245
 AliTRDComparison.C:246
 AliTRDComparison.C:247
 AliTRDComparison.C:248
 AliTRDComparison.C:249
 AliTRDComparison.C:250
 AliTRDComparison.C:251
 AliTRDComparison.C:252
 AliTRDComparison.C:253
 AliTRDComparison.C:254
 AliTRDComparison.C:255
 AliTRDComparison.C:256
 AliTRDComparison.C:257
 AliTRDComparison.C:258
 AliTRDComparison.C:259
 AliTRDComparison.C:260
 AliTRDComparison.C:261
 AliTRDComparison.C:262
 AliTRDComparison.C:263
 AliTRDComparison.C:264
 AliTRDComparison.C:265
 AliTRDComparison.C:266
 AliTRDComparison.C:267
 AliTRDComparison.C:268
 AliTRDComparison.C:269
 AliTRDComparison.C:270
 AliTRDComparison.C:271
 AliTRDComparison.C:272
 AliTRDComparison.C:273
 AliTRDComparison.C:274
 AliTRDComparison.C:275
 AliTRDComparison.C:276
 AliTRDComparison.C:277
 AliTRDComparison.C:278
 AliTRDComparison.C:279
 AliTRDComparison.C:280
 AliTRDComparison.C:281
 AliTRDComparison.C:282
 AliTRDComparison.C:283
 AliTRDComparison.C:284
 AliTRDComparison.C:285
 AliTRDComparison.C:286
 AliTRDComparison.C:287
 AliTRDComparison.C:288
 AliTRDComparison.C:289
 AliTRDComparison.C:290
 AliTRDComparison.C:291
 AliTRDComparison.C:292
 AliTRDComparison.C:293
 AliTRDComparison.C:294
 AliTRDComparison.C:295
 AliTRDComparison.C:296
 AliTRDComparison.C:297
 AliTRDComparison.C:298
 AliTRDComparison.C:299
 AliTRDComparison.C:300
 AliTRDComparison.C:301
 AliTRDComparison.C:302
 AliTRDComparison.C:303
 AliTRDComparison.C:304
 AliTRDComparison.C:305
 AliTRDComparison.C:306
 AliTRDComparison.C:307
 AliTRDComparison.C:308
 AliTRDComparison.C:309
 AliTRDComparison.C:310
 AliTRDComparison.C:311
 AliTRDComparison.C:312
 AliTRDComparison.C:313
 AliTRDComparison.C:314
 AliTRDComparison.C:315
 AliTRDComparison.C:316
 AliTRDComparison.C:317
 AliTRDComparison.C:318
 AliTRDComparison.C:319
 AliTRDComparison.C:320
 AliTRDComparison.C:321
 AliTRDComparison.C:322
 AliTRDComparison.C:323
 AliTRDComparison.C:324
 AliTRDComparison.C:325
 AliTRDComparison.C:326
 AliTRDComparison.C:327
 AliTRDComparison.C:328
 AliTRDComparison.C:329
 AliTRDComparison.C:330
 AliTRDComparison.C:331
 AliTRDComparison.C:332
 AliTRDComparison.C:333
 AliTRDComparison.C:334
 AliTRDComparison.C:335
 AliTRDComparison.C:336
 AliTRDComparison.C:337
 AliTRDComparison.C:338
 AliTRDComparison.C:339
 AliTRDComparison.C:340
 AliTRDComparison.C:341
 AliTRDComparison.C:342
 AliTRDComparison.C:343
 AliTRDComparison.C:344
 AliTRDComparison.C:345
 AliTRDComparison.C:346
 AliTRDComparison.C:347
 AliTRDComparison.C:348
 AliTRDComparison.C:349
 AliTRDComparison.C:350
 AliTRDComparison.C:351
 AliTRDComparison.C:352
 AliTRDComparison.C:353
 AliTRDComparison.C:354
 AliTRDComparison.C:355
 AliTRDComparison.C:356
 AliTRDComparison.C:357
 AliTRDComparison.C:358
 AliTRDComparison.C:359
 AliTRDComparison.C:360
 AliTRDComparison.C:361
 AliTRDComparison.C:362
 AliTRDComparison.C:363
 AliTRDComparison.C:364
 AliTRDComparison.C:365
 AliTRDComparison.C:366
 AliTRDComparison.C:367
 AliTRDComparison.C:368
 AliTRDComparison.C:369
 AliTRDComparison.C:370
 AliTRDComparison.C:371
 AliTRDComparison.C:372
 AliTRDComparison.C:373
 AliTRDComparison.C:374
 AliTRDComparison.C:375
 AliTRDComparison.C:376
 AliTRDComparison.C:377
 AliTRDComparison.C:378
 AliTRDComparison.C:379
 AliTRDComparison.C:380
 AliTRDComparison.C:381
 AliTRDComparison.C:382
 AliTRDComparison.C:383
 AliTRDComparison.C:384
 AliTRDComparison.C:385
 AliTRDComparison.C:386
 AliTRDComparison.C:387
 AliTRDComparison.C:388
 AliTRDComparison.C:389
 AliTRDComparison.C:390
 AliTRDComparison.C:391
 AliTRDComparison.C:392
 AliTRDComparison.C:393
 AliTRDComparison.C:394
 AliTRDComparison.C:395
 AliTRDComparison.C:396
 AliTRDComparison.C:397
 AliTRDComparison.C:398
 AliTRDComparison.C:399
 AliTRDComparison.C:400
 AliTRDComparison.C:401
 AliTRDComparison.C:402
 AliTRDComparison.C:403
 AliTRDComparison.C:404
 AliTRDComparison.C:405
 AliTRDComparison.C:406
 AliTRDComparison.C:407
 AliTRDComparison.C:408
 AliTRDComparison.C:409
 AliTRDComparison.C:410
 AliTRDComparison.C:411
 AliTRDComparison.C:412
 AliTRDComparison.C:413
 AliTRDComparison.C:414
 AliTRDComparison.C:415
 AliTRDComparison.C:416
 AliTRDComparison.C:417
 AliTRDComparison.C:418
 AliTRDComparison.C:419
 AliTRDComparison.C:420
 AliTRDComparison.C:421
 AliTRDComparison.C:422
 AliTRDComparison.C:423
 AliTRDComparison.C:424
 AliTRDComparison.C:425
 AliTRDComparison.C:426
 AliTRDComparison.C:427
 AliTRDComparison.C:428
 AliTRDComparison.C:429
 AliTRDComparison.C:430
 AliTRDComparison.C:431
 AliTRDComparison.C:432
 AliTRDComparison.C:433
 AliTRDComparison.C:434
 AliTRDComparison.C:435
 AliTRDComparison.C:436
 AliTRDComparison.C:437
 AliTRDComparison.C:438
 AliTRDComparison.C:439
 AliTRDComparison.C:440
 AliTRDComparison.C:441
 AliTRDComparison.C:442
 AliTRDComparison.C:443
 AliTRDComparison.C:444
 AliTRDComparison.C:445
 AliTRDComparison.C:446
 AliTRDComparison.C:447
 AliTRDComparison.C:448
 AliTRDComparison.C:449
 AliTRDComparison.C:450
 AliTRDComparison.C:451
 AliTRDComparison.C:452
 AliTRDComparison.C:453
 AliTRDComparison.C:454
 AliTRDComparison.C:455
 AliTRDComparison.C:456
 AliTRDComparison.C:457
 AliTRDComparison.C:458
 AliTRDComparison.C:459
 AliTRDComparison.C:460
 AliTRDComparison.C:461
 AliTRDComparison.C:462
 AliTRDComparison.C:463
 AliTRDComparison.C:464
 AliTRDComparison.C:465
 AliTRDComparison.C:466
 AliTRDComparison.C:467
 AliTRDComparison.C:468
 AliTRDComparison.C:469
 AliTRDComparison.C:470
 AliTRDComparison.C:471
 AliTRDComparison.C:472
 AliTRDComparison.C:473
 AliTRDComparison.C:474
 AliTRDComparison.C:475
 AliTRDComparison.C:476
 AliTRDComparison.C:477
 AliTRDComparison.C:478
 AliTRDComparison.C:479
 AliTRDComparison.C:480
 AliTRDComparison.C:481
 AliTRDComparison.C:482
 AliTRDComparison.C:483
 AliTRDComparison.C:484
 AliTRDComparison.C:485
 AliTRDComparison.C:486
 AliTRDComparison.C:487
 AliTRDComparison.C:488
 AliTRDComparison.C:489
 AliTRDComparison.C:490
 AliTRDComparison.C:491
 AliTRDComparison.C:492
 AliTRDComparison.C:493
 AliTRDComparison.C:494
 AliTRDComparison.C:495
 AliTRDComparison.C:496
 AliTRDComparison.C:497
 AliTRDComparison.C:498
 AliTRDComparison.C:499
 AliTRDComparison.C:500
 AliTRDComparison.C:501
 AliTRDComparison.C:502
 AliTRDComparison.C:503
 AliTRDComparison.C:504
 AliTRDComparison.C:505
 AliTRDComparison.C:506
 AliTRDComparison.C:507
 AliTRDComparison.C:508
 AliTRDComparison.C:509
 AliTRDComparison.C:510
 AliTRDComparison.C:511
 AliTRDComparison.C:512
 AliTRDComparison.C:513
 AliTRDComparison.C:514
 AliTRDComparison.C:515
 AliTRDComparison.C:516
 AliTRDComparison.C:517
 AliTRDComparison.C:518
 AliTRDComparison.C:519
 AliTRDComparison.C:520
 AliTRDComparison.C:521
 AliTRDComparison.C:522
 AliTRDComparison.C:523
 AliTRDComparison.C:524
 AliTRDComparison.C:525
 AliTRDComparison.C:526
 AliTRDComparison.C:527
 AliTRDComparison.C:528
 AliTRDComparison.C:529
 AliTRDComparison.C:530
 AliTRDComparison.C:531
 AliTRDComparison.C:532
 AliTRDComparison.C:533
 AliTRDComparison.C:534
 AliTRDComparison.C:535
 AliTRDComparison.C:536
 AliTRDComparison.C:537
 AliTRDComparison.C:538
 AliTRDComparison.C:539
 AliTRDComparison.C:540
 AliTRDComparison.C:541
 AliTRDComparison.C:542
 AliTRDComparison.C:543
 AliTRDComparison.C:544
 AliTRDComparison.C:545
 AliTRDComparison.C:546
 AliTRDComparison.C:547
 AliTRDComparison.C:548
 AliTRDComparison.C:549
 AliTRDComparison.C:550
 AliTRDComparison.C:551
 AliTRDComparison.C:552
 AliTRDComparison.C:553
 AliTRDComparison.C:554
 AliTRDComparison.C:555
 AliTRDComparison.C:556
 AliTRDComparison.C:557
 AliTRDComparison.C:558
 AliTRDComparison.C:559
 AliTRDComparison.C:560
 AliTRDComparison.C:561
 AliTRDComparison.C:562
 AliTRDComparison.C:563
 AliTRDComparison.C:564
 AliTRDComparison.C:565
 AliTRDComparison.C:566
 AliTRDComparison.C:567
 AliTRDComparison.C:568
 AliTRDComparison.C:569
 AliTRDComparison.C:570
 AliTRDComparison.C:571
 AliTRDComparison.C:572
 AliTRDComparison.C:573
 AliTRDComparison.C:574
 AliTRDComparison.C:575
 AliTRDComparison.C:576
 AliTRDComparison.C:577
 AliTRDComparison.C:578
 AliTRDComparison.C:579
 AliTRDComparison.C:580
 AliTRDComparison.C:581
 AliTRDComparison.C:582
 AliTRDComparison.C:583
 AliTRDComparison.C:584
 AliTRDComparison.C:585
 AliTRDComparison.C:586
 AliTRDComparison.C:587
 AliTRDComparison.C:588
 AliTRDComparison.C:589
 AliTRDComparison.C:590
 AliTRDComparison.C:591
 AliTRDComparison.C:592
 AliTRDComparison.C:593
 AliTRDComparison.C:594
 AliTRDComparison.C:595
 AliTRDComparison.C:596
 AliTRDComparison.C:597
 AliTRDComparison.C:598
 AliTRDComparison.C:599
 AliTRDComparison.C:600
 AliTRDComparison.C:601
 AliTRDComparison.C:602
 AliTRDComparison.C:603
 AliTRDComparison.C:604
 AliTRDComparison.C:605
 AliTRDComparison.C:606
 AliTRDComparison.C:607
 AliTRDComparison.C:608
 AliTRDComparison.C:609
 AliTRDComparison.C:610
 AliTRDComparison.C:611
 AliTRDComparison.C:612
 AliTRDComparison.C:613
 AliTRDComparison.C:614
 AliTRDComparison.C:615
 AliTRDComparison.C:616
 AliTRDComparison.C:617
 AliTRDComparison.C:618
 AliTRDComparison.C:619
 AliTRDComparison.C:620
 AliTRDComparison.C:621
 AliTRDComparison.C:622
 AliTRDComparison.C:623
 AliTRDComparison.C:624
 AliTRDComparison.C:625
 AliTRDComparison.C:626
 AliTRDComparison.C:627
 AliTRDComparison.C:628
 AliTRDComparison.C:629
 AliTRDComparison.C:630
 AliTRDComparison.C:631
 AliTRDComparison.C:632
 AliTRDComparison.C:633
 AliTRDComparison.C:634
 AliTRDComparison.C:635
 AliTRDComparison.C:636
 AliTRDComparison.C:637
 AliTRDComparison.C:638
 AliTRDComparison.C:639
 AliTRDComparison.C:640
 AliTRDComparison.C:641
 AliTRDComparison.C:642
 AliTRDComparison.C:643
 AliTRDComparison.C:644
 AliTRDComparison.C:645
 AliTRDComparison.C:646
 AliTRDComparison.C:647
 AliTRDComparison.C:648
 AliTRDComparison.C:649
 AliTRDComparison.C:650
 AliTRDComparison.C:651
 AliTRDComparison.C:652
 AliTRDComparison.C:653
 AliTRDComparison.C:654
 AliTRDComparison.C:655
 AliTRDComparison.C:656
 AliTRDComparison.C:657
 AliTRDComparison.C:658
 AliTRDComparison.C:659
 AliTRDComparison.C:660
 AliTRDComparison.C:661
 AliTRDComparison.C:662
 AliTRDComparison.C:663
 AliTRDComparison.C:664
 AliTRDComparison.C:665
 AliTRDComparison.C:666
 AliTRDComparison.C:667
 AliTRDComparison.C:668
 AliTRDComparison.C:669
 AliTRDComparison.C:670
 AliTRDComparison.C:671
 AliTRDComparison.C:672
 AliTRDComparison.C:673
 AliTRDComparison.C:674
 AliTRDComparison.C:675
 AliTRDComparison.C:676
 AliTRDComparison.C:677
 AliTRDComparison.C:678
 AliTRDComparison.C:679
 AliTRDComparison.C:680
 AliTRDComparison.C:681
 AliTRDComparison.C:682
 AliTRDComparison.C:683
 AliTRDComparison.C:684
 AliTRDComparison.C:685
 AliTRDComparison.C:686
 AliTRDComparison.C:687
 AliTRDComparison.C:688
 AliTRDComparison.C:689
 AliTRDComparison.C:690
 AliTRDComparison.C:691
 AliTRDComparison.C:692
 AliTRDComparison.C:693
 AliTRDComparison.C:694
 AliTRDComparison.C:695
 AliTRDComparison.C:696
 AliTRDComparison.C:697
 AliTRDComparison.C:698
 AliTRDComparison.C:699
 AliTRDComparison.C:700
 AliTRDComparison.C:701
 AliTRDComparison.C:702
 AliTRDComparison.C:703
 AliTRDComparison.C:704
 AliTRDComparison.C:705
 AliTRDComparison.C:706
 AliTRDComparison.C:707
 AliTRDComparison.C:708
 AliTRDComparison.C:709
 AliTRDComparison.C:710
 AliTRDComparison.C:711
 AliTRDComparison.C:712
 AliTRDComparison.C:713
 AliTRDComparison.C:714
 AliTRDComparison.C:715
 AliTRDComparison.C:716
 AliTRDComparison.C:717
 AliTRDComparison.C:718
 AliTRDComparison.C:719
 AliTRDComparison.C:720
 AliTRDComparison.C:721
 AliTRDComparison.C:722
 AliTRDComparison.C:723
 AliTRDComparison.C:724
 AliTRDComparison.C:725
 AliTRDComparison.C:726
 AliTRDComparison.C:727
 AliTRDComparison.C:728
 AliTRDComparison.C:729
 AliTRDComparison.C:730
 AliTRDComparison.C:731
 AliTRDComparison.C:732
 AliTRDComparison.C:733
 AliTRDComparison.C:734
 AliTRDComparison.C:735
 AliTRDComparison.C:736
 AliTRDComparison.C:737
 AliTRDComparison.C:738
 AliTRDComparison.C:739
 AliTRDComparison.C:740
 AliTRDComparison.C:741
 AliTRDComparison.C:742
 AliTRDComparison.C:743
 AliTRDComparison.C:744
 AliTRDComparison.C:745
 AliTRDComparison.C:746
 AliTRDComparison.C:747
 AliTRDComparison.C:748
 AliTRDComparison.C:749
 AliTRDComparison.C:750
 AliTRDComparison.C:751
 AliTRDComparison.C:752
 AliTRDComparison.C:753
 AliTRDComparison.C:754
 AliTRDComparison.C:755
 AliTRDComparison.C:756
 AliTRDComparison.C:757
 AliTRDComparison.C:758
 AliTRDComparison.C:759
 AliTRDComparison.C:760
 AliTRDComparison.C:761
 AliTRDComparison.C:762
 AliTRDComparison.C:763
 AliTRDComparison.C:764
 AliTRDComparison.C:765
 AliTRDComparison.C:766
 AliTRDComparison.C:767
 AliTRDComparison.C:768
 AliTRDComparison.C:769
 AliTRDComparison.C:770
 AliTRDComparison.C:771
 AliTRDComparison.C:772
 AliTRDComparison.C:773
 AliTRDComparison.C:774
 AliTRDComparison.C:775
 AliTRDComparison.C:776
 AliTRDComparison.C:777
 AliTRDComparison.C:778
 AliTRDComparison.C:779
 AliTRDComparison.C:780
 AliTRDComparison.C:781
 AliTRDComparison.C:782
 AliTRDComparison.C:783
 AliTRDComparison.C:784
 AliTRDComparison.C:785
 AliTRDComparison.C:786
 AliTRDComparison.C:787
 AliTRDComparison.C:788
 AliTRDComparison.C:789
 AliTRDComparison.C:790
 AliTRDComparison.C:791
 AliTRDComparison.C:792
 AliTRDComparison.C:793
 AliTRDComparison.C:794
 AliTRDComparison.C:795
 AliTRDComparison.C:796
 AliTRDComparison.C:797
 AliTRDComparison.C:798
 AliTRDComparison.C:799
 AliTRDComparison.C:800
 AliTRDComparison.C:801
 AliTRDComparison.C:802
 AliTRDComparison.C:803
 AliTRDComparison.C:804
 AliTRDComparison.C:805
 AliTRDComparison.C:806
 AliTRDComparison.C:807
 AliTRDComparison.C:808
 AliTRDComparison.C:809
 AliTRDComparison.C:810
 AliTRDComparison.C:811
 AliTRDComparison.C:812
 AliTRDComparison.C:813
 AliTRDComparison.C:814
 AliTRDComparison.C:815
 AliTRDComparison.C:816
 AliTRDComparison.C:817
 AliTRDComparison.C:818
 AliTRDComparison.C:819
 AliTRDComparison.C:820
 AliTRDComparison.C:821
 AliTRDComparison.C:822
 AliTRDComparison.C:823
 AliTRDComparison.C:824
 AliTRDComparison.C:825
 AliTRDComparison.C:826
 AliTRDComparison.C:827
 AliTRDComparison.C:828
 AliTRDComparison.C:829
 AliTRDComparison.C:830
 AliTRDComparison.C:831
 AliTRDComparison.C:832
 AliTRDComparison.C:833
 AliTRDComparison.C:834
 AliTRDComparison.C:835
 AliTRDComparison.C:836
 AliTRDComparison.C:837
 AliTRDComparison.C:838
 AliTRDComparison.C:839
 AliTRDComparison.C:840
 AliTRDComparison.C:841
 AliTRDComparison.C:842
 AliTRDComparison.C:843
 AliTRDComparison.C:844
 AliTRDComparison.C:845
 AliTRDComparison.C:846
 AliTRDComparison.C:847
 AliTRDComparison.C:848
 AliTRDComparison.C:849
 AliTRDComparison.C:850
 AliTRDComparison.C:851
 AliTRDComparison.C:852
 AliTRDComparison.C:853
 AliTRDComparison.C:854
 AliTRDComparison.C:855
 AliTRDComparison.C:856
 AliTRDComparison.C:857
 AliTRDComparison.C:858
 AliTRDComparison.C:859
 AliTRDComparison.C:860
 AliTRDComparison.C:861
 AliTRDComparison.C:862
 AliTRDComparison.C:863
 AliTRDComparison.C:864
 AliTRDComparison.C:865
 AliTRDComparison.C:866
 AliTRDComparison.C:867
 AliTRDComparison.C:868
 AliTRDComparison.C:869
 AliTRDComparison.C:870
 AliTRDComparison.C:871
 AliTRDComparison.C:872
 AliTRDComparison.C:873
 AliTRDComparison.C:874
 AliTRDComparison.C:875
 AliTRDComparison.C:876
 AliTRDComparison.C:877
 AliTRDComparison.C:878
 AliTRDComparison.C:879
 AliTRDComparison.C:880
 AliTRDComparison.C:881
 AliTRDComparison.C:882
 AliTRDComparison.C:883
 AliTRDComparison.C:884
 AliTRDComparison.C:885
 AliTRDComparison.C:886
 AliTRDComparison.C:887
 AliTRDComparison.C:888
 AliTRDComparison.C:889
 AliTRDComparison.C:890
 AliTRDComparison.C:891
 AliTRDComparison.C:892
 AliTRDComparison.C:893
 AliTRDComparison.C:894
 AliTRDComparison.C:895
 AliTRDComparison.C:896
 AliTRDComparison.C:897
 AliTRDComparison.C:898
 AliTRDComparison.C:899
 AliTRDComparison.C:900
 AliTRDComparison.C:901
 AliTRDComparison.C:902
 AliTRDComparison.C:903
 AliTRDComparison.C:904
 AliTRDComparison.C:905
 AliTRDComparison.C:906
 AliTRDComparison.C:907
 AliTRDComparison.C:908
 AliTRDComparison.C:909
 AliTRDComparison.C:910
 AliTRDComparison.C:911
 AliTRDComparison.C:912
 AliTRDComparison.C:913
 AliTRDComparison.C:914
 AliTRDComparison.C:915
 AliTRDComparison.C:916
 AliTRDComparison.C:917
 AliTRDComparison.C:918
 AliTRDComparison.C:919
 AliTRDComparison.C:920
 AliTRDComparison.C:921
 AliTRDComparison.C:922
 AliTRDComparison.C:923
 AliTRDComparison.C:924
 AliTRDComparison.C:925
 AliTRDComparison.C:926
 AliTRDComparison.C:927
 AliTRDComparison.C:928
 AliTRDComparison.C:929
 AliTRDComparison.C:930
 AliTRDComparison.C:931
 AliTRDComparison.C:932
 AliTRDComparison.C:933
 AliTRDComparison.C:934
 AliTRDComparison.C:935
 AliTRDComparison.C:936
 AliTRDComparison.C:937
 AliTRDComparison.C:938
 AliTRDComparison.C:939
 AliTRDComparison.C:940
 AliTRDComparison.C:941
 AliTRDComparison.C:942
 AliTRDComparison.C:943
 AliTRDComparison.C:944
 AliTRDComparison.C:945
 AliTRDComparison.C:946
 AliTRDComparison.C:947
 AliTRDComparison.C:948
 AliTRDComparison.C:949
 AliTRDComparison.C:950
 AliTRDComparison.C:951
 AliTRDComparison.C:952
 AliTRDComparison.C:953
 AliTRDComparison.C:954
 AliTRDComparison.C:955
 AliTRDComparison.C:956
 AliTRDComparison.C:957
 AliTRDComparison.C:958
 AliTRDComparison.C:959
 AliTRDComparison.C:960
 AliTRDComparison.C:961
 AliTRDComparison.C:962
 AliTRDComparison.C:963
 AliTRDComparison.C:964
 AliTRDComparison.C:965
 AliTRDComparison.C:966
 AliTRDComparison.C:967
 AliTRDComparison.C:968
 AliTRDComparison.C:969
 AliTRDComparison.C:970
 AliTRDComparison.C:971
 AliTRDComparison.C:972
 AliTRDComparison.C:973
 AliTRDComparison.C:974
 AliTRDComparison.C:975
 AliTRDComparison.C:976
 AliTRDComparison.C:977
 AliTRDComparison.C:978
 AliTRDComparison.C:979
 AliTRDComparison.C:980
 AliTRDComparison.C:981
 AliTRDComparison.C:982
 AliTRDComparison.C:983
 AliTRDComparison.C:984
 AliTRDComparison.C:985
 AliTRDComparison.C:986
 AliTRDComparison.C:987
 AliTRDComparison.C:988
 AliTRDComparison.C:989
 AliTRDComparison.C:990
 AliTRDComparison.C:991
 AliTRDComparison.C:992
 AliTRDComparison.C:993
 AliTRDComparison.C:994
 AliTRDComparison.C:995
 AliTRDComparison.C:996
 AliTRDComparison.C:997
 AliTRDComparison.C:998
 AliTRDComparison.C:999
 AliTRDComparison.C:1000
 AliTRDComparison.C:1001
 AliTRDComparison.C:1002
 AliTRDComparison.C:1003
 AliTRDComparison.C:1004
 AliTRDComparison.C:1005
 AliTRDComparison.C:1006
 AliTRDComparison.C:1007
 AliTRDComparison.C:1008
 AliTRDComparison.C:1009
 AliTRDComparison.C:1010
 AliTRDComparison.C:1011
 AliTRDComparison.C:1012
 AliTRDComparison.C:1013
 AliTRDComparison.C:1014
 AliTRDComparison.C:1015
 AliTRDComparison.C:1016
 AliTRDComparison.C:1017
 AliTRDComparison.C:1018
 AliTRDComparison.C:1019
 AliTRDComparison.C:1020
 AliTRDComparison.C:1021
 AliTRDComparison.C:1022
 AliTRDComparison.C:1023
 AliTRDComparison.C:1024
 AliTRDComparison.C:1025
 AliTRDComparison.C:1026
 AliTRDComparison.C:1027
 AliTRDComparison.C:1028
 AliTRDComparison.C:1029
 AliTRDComparison.C:1030
 AliTRDComparison.C:1031
 AliTRDComparison.C:1032
 AliTRDComparison.C:1033
 AliTRDComparison.C:1034
 AliTRDComparison.C:1035
 AliTRDComparison.C:1036
 AliTRDComparison.C:1037
 AliTRDComparison.C:1038
 AliTRDComparison.C:1039
 AliTRDComparison.C:1040
 AliTRDComparison.C:1041
 AliTRDComparison.C:1042
 AliTRDComparison.C:1043
 AliTRDComparison.C:1044
 AliTRDComparison.C:1045
 AliTRDComparison.C:1046
 AliTRDComparison.C:1047
 AliTRDComparison.C:1048
 AliTRDComparison.C:1049
 AliTRDComparison.C:1050
 AliTRDComparison.C:1051
 AliTRDComparison.C:1052
 AliTRDComparison.C:1053
 AliTRDComparison.C:1054
 AliTRDComparison.C:1055
 AliTRDComparison.C:1056
 AliTRDComparison.C:1057
 AliTRDComparison.C:1058
 AliTRDComparison.C:1059
 AliTRDComparison.C:1060
 AliTRDComparison.C:1061
 AliTRDComparison.C:1062
 AliTRDComparison.C:1063
 AliTRDComparison.C:1064
 AliTRDComparison.C:1065
 AliTRDComparison.C:1066
 AliTRDComparison.C:1067
 AliTRDComparison.C:1068
 AliTRDComparison.C:1069
 AliTRDComparison.C:1070
 AliTRDComparison.C:1071
 AliTRDComparison.C:1072
 AliTRDComparison.C:1073
 AliTRDComparison.C:1074
 AliTRDComparison.C:1075
 AliTRDComparison.C:1076
 AliTRDComparison.C:1077
 AliTRDComparison.C:1078
 AliTRDComparison.C:1079
 AliTRDComparison.C:1080
 AliTRDComparison.C:1081
 AliTRDComparison.C:1082
 AliTRDComparison.C:1083
 AliTRDComparison.C:1084
 AliTRDComparison.C:1085
 AliTRDComparison.C:1086
 AliTRDComparison.C:1087
 AliTRDComparison.C:1088
 AliTRDComparison.C:1089
 AliTRDComparison.C:1090
 AliTRDComparison.C:1091
 AliTRDComparison.C:1092
 AliTRDComparison.C:1093
 AliTRDComparison.C:1094
 AliTRDComparison.C:1095
 AliTRDComparison.C:1096
 AliTRDComparison.C:1097
 AliTRDComparison.C:1098
 AliTRDComparison.C:1099
 AliTRDComparison.C:1100
 AliTRDComparison.C:1101
 AliTRDComparison.C:1102
 AliTRDComparison.C:1103
 AliTRDComparison.C:1104
 AliTRDComparison.C:1105
 AliTRDComparison.C:1106
 AliTRDComparison.C:1107
 AliTRDComparison.C:1108
 AliTRDComparison.C:1109
 AliTRDComparison.C:1110
 AliTRDComparison.C:1111
 AliTRDComparison.C:1112
 AliTRDComparison.C:1113
 AliTRDComparison.C:1114
 AliTRDComparison.C:1115
 AliTRDComparison.C:1116
 AliTRDComparison.C:1117
 AliTRDComparison.C:1118
 AliTRDComparison.C:1119
 AliTRDComparison.C:1120
 AliTRDComparison.C:1121
 AliTRDComparison.C:1122
 AliTRDComparison.C:1123
 AliTRDComparison.C:1124
 AliTRDComparison.C:1125
 AliTRDComparison.C:1126
 AliTRDComparison.C:1127
 AliTRDComparison.C:1128
 AliTRDComparison.C:1129
 AliTRDComparison.C:1130
 AliTRDComparison.C:1131
 AliTRDComparison.C:1132
 AliTRDComparison.C:1133
 AliTRDComparison.C:1134
 AliTRDComparison.C:1135
 AliTRDComparison.C:1136
 AliTRDComparison.C:1137
 AliTRDComparison.C:1138
 AliTRDComparison.C:1139
 AliTRDComparison.C:1140
 AliTRDComparison.C:1141
 AliTRDComparison.C:1142
 AliTRDComparison.C:1143
 AliTRDComparison.C:1144
 AliTRDComparison.C:1145
 AliTRDComparison.C:1146
 AliTRDComparison.C:1147
 AliTRDComparison.C:1148
 AliTRDComparison.C:1149
 AliTRDComparison.C:1150
 AliTRDComparison.C:1151
 AliTRDComparison.C:1152
 AliTRDComparison.C:1153
 AliTRDComparison.C:1154
 AliTRDComparison.C:1155
 AliTRDComparison.C:1156
 AliTRDComparison.C:1157
 AliTRDComparison.C:1158
 AliTRDComparison.C:1159
 AliTRDComparison.C:1160
 AliTRDComparison.C:1161
 AliTRDComparison.C:1162
 AliTRDComparison.C:1163
 AliTRDComparison.C:1164
 AliTRDComparison.C:1165
 AliTRDComparison.C:1166
 AliTRDComparison.C:1167
 AliTRDComparison.C:1168
 AliTRDComparison.C:1169
 AliTRDComparison.C:1170
 AliTRDComparison.C:1171
 AliTRDComparison.C:1172
 AliTRDComparison.C:1173
 AliTRDComparison.C:1174
 AliTRDComparison.C:1175
 AliTRDComparison.C:1176