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

/* $Id: AliTRDefficiency.cxx 27496 2008-07-22 08:35:45Z cblume $ */

////////////////////////////////////////////////////////////////////////////
//                                                                        //
//  Reconstruction QA                                                     //
//                                                                        //
//  Authors:                                                              //
//    Markus Fasel <M.Fasel@gsi.de>                                       //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

#include <TROOT.h>
#include <TFile.h>
#include <TStyle.h>
#include <TClonesArray.h>
#include <TObjArray.h>
#include <TProfile.h>
#include <TPad.h>
#include <TCanvas.h>
#include <TLegend.h>
#include <THnSparse.h>
#include <TH2.h>
#include <TH3.h>
#include <THStack.h>
#include "TTreeStream.h"
#include "TPDGCode.h"

#include "AliPID.h"
#include "AliESDtrack.h"
#include "AliTrackReference.h"
#include "AliExternalTrackParam.h"
#include "AliTracker.h"
#include "AliAnalysisManager.h"

#include "AliTRDgeometry.h"
#include "AliTRDtrackV1.h"
#include "Cal/AliTRDCalPID.h"
#include "AliTRDefficiency.h"
#include "info/AliTRDtrackInfo.h"

ClassImp(AliTRDefficiency)

//____________________________________________________________________
AliTRDefficiency::AliTRDefficiency()
  :AliTRDrecoTask()
  ,fMissed(NULL)
  ,fProj(NULL)
{
  //
  // Default constructor
  //
  SetNameTitle("TRDefficiency", "TRD barrel tracking efficiency checker");
}

//____________________________________________________________________
AliTRDefficiency::AliTRDefficiency(char* name)
  :AliTRDrecoTask(name, "TRD barrel tracking efficiency checker")
  ,fMissed(NULL)
  ,fProj(NULL)
{
  //
  // Default constructor
  //
}

//____________________________________________________________________
AliTRDefficiency::~AliTRDefficiency()
{
  // Destructor
  if(fMissed){
    fMissed->Delete();
    delete fMissed;
  }
}

// //____________________________________________________________________
// void  AliTRDefficiency::UserCreateOutputObjects()
// {
//   //
//   // Create output objects
//   //
// 
//   const Int_t nbins = AliTRDCalPID::kNMom;
//   Float_t xbins[nbins+1] = {.5, .7, .9, 1.3, 1.7, 2.4, 3.5, 4.5, 5.5, 7., 9., 11.};
// 
//   TH1 *h = NULL;
//   fContainer = new TObjArray(); fContainer->SetOwner();
//   for(Int_t is=0; is<AliPID::kSPECIES; is++){
//     fContainer->Add(h = new TProfile(Form("h%s", AliTRDCalPID::GetPartSymb(is)), AliPID::ParticleShortName(is), nbins, xbins));
//     h->SetLineColor(AliTRDCalPID::GetPartColor(is));
//     h->SetMarkerColor(AliTRDCalPID::GetPartColor(is));
//     h->SetMarkerStyle(24);
//   }
//   fContainer->Add(h = new TProfile("h", "", nbins, xbins));
//   h->SetMarkerStyle(7);
//   PostData(1, fContainer);
// }

//____________________________________________________________________
TH1* AliTRDefficiency::PlotBasicEff(const AliTRDtrackV1 *track)
{
// plot TRD efficiency based on ESD info

  if(!fkESD){
    AliDebug(4, "No ESD info.");
    return NULL;
  }

  THnSparse *H(NULL);
  if(!fContainer || !(H = ((THnSparse*)fContainer->FindObject("hEFF")))){
    AliWarning("No output container defined.");
    return NULL;
  }
  if(track) fkTrack = track;

  Double_t val[8]; memset(val, 0, 8*sizeof(Double_t));
  ULong_t status(fkESD->GetStatus());
//     printf("  %3d ITS[%c] TPC[%c] TRDin[%c] TRDout[%c] TRDStop[%c]\n", fkESD->GetId(),
//       (status&AliESDtrack::kITSout)?'y':'n',
//       (status&AliESDtrack::kTPCout)?'y':'n',
//       (status&AliESDtrack::kTRDin)?'y':'n',
//       (status&AliESDtrack::kTRDout)?'y':'n',
//       (status&AliESDtrack::kTRDStop)?'y':'n');


  val[0] =((status&AliESDtrack::kTRDin)?1:0) +
          ((status&AliESDtrack::kTRDStop)?1:0) +
          ((status&AliESDtrack::kTRDout)?2:0);
  val[1] = fkESD->Phi();
  val[2] = fkESD->Eta();
  val[3] = GetPtBin(fPt>0.?fPt:fkESD->Pt());
  val[4] = -2.; val[5] = fkMC?fkMC->GetPt():-1.;
  if(fkMC && fkMC->GetNTrackRefs()>=2){ // TODO define trackable tracks more exactly
    val[4] = -1.;
    if(fkTrack && fkTrack->GetNumberOfTracklets()>0){ // TODO better define 
      if(fkMC->GetLabel() == fkMC->GetTRDlabel()) val[4] = 0.;        // good tracks
      else if(fkMC->GetLabel() == -fkMC->GetTRDlabel()) val[4] = 1.;  // acceptable tracks
      else val[4] = 2.;                                               // wrongly matched tracks
    }
    val[5] = GetPtBin(fkMC->GetTrackRef()->Pt());
  }

  val[6] = fkTrack?fkTrack->GetNumberOfTracklets():0;
  // down scale PID resolution
  Int_t spc(fSpecies); if(spc==-6) spc=0; if(spc==3) spc=2; if(spc==-3) spc=-2; if(spc>3) spc=3; if(spc<-3) spc=-3;
  val[7] = spc;
  if(fkMC){
    Int_t exactPID = 0;
    switch(fkMC->GetPDG()){
    case kElectron: exactPID = -1;break;
    case kPositron: exactPID = 1;break;
    case kPiPlus: exactPID = 2;break;
    case kPiMinus: exactPID = -2;break;
    case kProton: exactPID = 3;break;
    case kProtonBar: exactPID = -3;break;
    }
    val[7] = exactPID;
  }
//     printf("%3d label[%2d %+2d] PDG[%+4d] TR[%d] Trklts[%d] species[%d %d] pt%d[%6.4f] MC_pt%d[%6.4f] in[%c] out[%c] stop[%c] flag[%d]\n",
//     fkESD->GetId(), fkMC->GetLabel(), fkMC->GetTRDlabel(), fkMC->GetPDG(), fkMC->GetNTrackRefs(), Int_t(val[6]),
//     fSpecies, spc, Int_t(val[3]), fPt>0.?fPt:fkESD->Pt(), Int_t(val[5]), fkMC->GetTrackRef()?fkMC->GetTrackRef()->Pt():fkMC->GetPt(),
//     (status&AliESDtrack::kTRDin)?'x':'o', (status&AliESDtrack::kTRDout)?'x':'o', (status&AliESDtrack::kTRDStop)?'x':'o', Int_t(val[4]));

/*  if(val[0]<0.5 && TMath::Abs(val[4]+1)<0.1){

    if(fkTrack) printf("  Seed[%s] tracklets[%d]\n", fkTrack->IsTPCseeded()?"TPC":"ITS", Int_t(val[5]));
  }*/
  if(fkTrack) AliDebug(2, Form("%3d[%s] tracklets[%d] label[%2d %+2d] species[%d %d] in[%c] out[%c] stop[%c]",
    fkESD->GetId(), fkTrack->IsTPCseeded()?"TPC":"ITS", Int_t(val[5]), fkMC->GetLabel(), fkMC->GetTRDlabel(), fSpecies, spc,
    (status&AliESDtrack::kTRDin)?'x':'o', (status&AliESDtrack::kTRDout)?'x':'o', (status&AliESDtrack::kTRDStop)?'x':'o'));
  H->Fill(val);
  return NULL;
}

// //____________________________________________________________________
// TH1* AliTRDefficiency::PlotMC(const AliTRDtrackV1 *track)
// {
// // plot TRD efficiency based on MC info
// 
//   if(!HasMC()) return NULL;
//   if(!fkESD){
//     AliDebug(4, "No ESD info.");
//     return NULL;
//   }
//   if(!fkMC){
//     AliDebug(4, "No MC info.");
//     return NULL;
//   }
// 
//   THnSparse *H(NULL);
//   if(!fContainer || !(H = ((THnSparse*)fContainer->FindObject("hMC")))){
//     AliWarning("No output container defined.");
//     return NULL;
//   }
//   if(track) fkTrack = track;
//   Double_t val[11]; memset(val, 0, 11*sizeof(Double_t));
//   ULong_t status(fkESD->GetStatus());
//   val[0] =((status&AliESDtrack::kTRDin)?1:0) +
//           ((status&AliESDtrack::kTRDStop)?1:0) +
//           ((status&AliESDtrack::kTRDout)?2:0);
//   val[1] = fkESD->Phi();
//   val[2] = fkESD->Eta();
//   val[3] = DebugLevel()>=1?GetPtBin(fkESD->Pt()):GetPtBinSignificant(fkESD->Pt());
//   if(fkTrack){ // read track status in debug mode with friends
//     val[4] = fkTrack->GetStatusTRD(-1);
//     for(Int_t ily(0); ily<AliTRDgeometry::kNlayer; ily++) val[5+ily]=fkTrack->GetStatusTRD(ily);
//   }
//   H->Fill(val);
// 
// }

//____________________________________________________________________
void AliTRDefficiency::LocalUserExec(Option_t *)
{
  //
  // Do it obsolete
  //

  Int_t labelsacc[10000];
  memset(labelsacc, 0, sizeof(Int_t) * 10000);
	
  fTracks = dynamic_cast<TObjArray *>(GetInputData(1));
  if(!fTracks) return;
  if(!fTracks->GetEntriesFast()) return;
  else AliDebug(2, Form("Tracks[%d] for %s", fTracks->GetEntriesFast(), GetName()));
  if(!fMissed){ 
    fMissed = new TClonesArray("AliTRDtrackInfo", 10);
    fMissed->SetOwner();
  }

  Float_t mom;
  Int_t selection[10000], nselect = 0;
  ULong_t status; Int_t pidx;
  Int_t nTRD = 0, nTPC = 0, nMiss = 0;
  AliTRDtrackInfo     *track = NULL;
  AliTrackReference     *ref = NULL;
  AliExternalTrackParam *esd = NULL;
  for(Int_t itrk=0; itrk<fTracks->GetEntriesFast(); itrk++){
    track = (AliTRDtrackInfo*)fTracks->UncheckedAt(itrk);

		if(!track->HasESDtrack()) continue;
    status = track->GetStatus();

    // missing TPC propagation - interesting for SA
    if(!(status&AliESDtrack::kTPCout)) continue;

    // missing MC info.
    if(HasMCdata() && track->GetNTrackRefs() <= 1) continue;
   
    nTPC++;
    selection[nselect++]=itrk;
    ref  = track->GetTrackRef(0);
    esd  = track->GetESDinfo()->GetOuterParam();
    mom  = ref ? ref->P(): esd->P();
    pidx = AliTRDCalPID::GetPartIndex(track->GetPDG());
    pidx = TMath::Max(pidx, 0);
    AliDebug(4, Form("PID: %d", pidx));

    //Int_t n = track->GetNumberOfClusters(); 
    // where are this tracklets ???
    //if(ncls0 > ncls1) printf("%3d ESD[%3d] TRD[%3d|%3d]\n", itrk, ncls0, ncls1, n);
    if(track->GetNumberOfClustersRefit()){ 
      ((TProfile*)fContainer->At(pidx))->Fill(mom, 1.);
			labelsacc[nTRD] = track->GetLabel();
      nTRD++;
      continue;
    }



    Float_t xmed, xleng;
    Int_t iref = 1; Bool_t found = kFALSE;
    while((ref = track->GetTrackRef(iref))){
      xmed = .5*(ref->LocalX() + track->GetTrackRef(iref-1)->LocalX());
      xleng= (ref->LocalX() - track->GetTrackRef(iref-1)->LocalX());
      if(TMath::Abs(xmed - 298.5) < .5 &&
        TMath::Abs(xleng - 3.7) < .1){ 
        found = kTRUE;
        break;
      }
      iref++;
    }
    if(!found){ 
      nTPC--;
      // track missing first layer. Maybe interesting for SA.
      continue;
    }
    nselect--;
    new ((*fMissed)[nMiss]) AliTRDtrackInfo(*track);
    nMiss++;
  }
  AliDebug(2, Form("%3d Tracks: ESD[%3d] TPC[%3d] TRD[%3d | %5.2f%%] Off[%d]", (Int_t)AliAnalysisManager::GetAnalysisManager()->GetCurrentEntry(), fTracks->GetEntriesFast(), nTPC, nTRD, nTPC ? 1.E2*nTRD/float(nTPC) : 0., fMissed->GetEntriesFast()));


  // Find double tracks
  Float_t threshold = 10.;
  AliTrackReference *refMiss = NULL;
  AliExternalTrackParam *op = NULL;
  AliTRDtrackInfo       *tt = NULL;
  for(Int_t imiss=0; imiss<nMiss; imiss++){
    //printf("Searching missing %d ...\n", imiss);

    // get outer param of missed
    tt = (AliTRDtrackInfo*)fMissed->UncheckedAt(imiss);
    op = tt->GetESDinfo()->GetOuterParam();
    Double_t alpha = op->GetAlpha(), cosa = TMath::Cos(alpha), sina = TMath::Sin(alpha);

    Double_t xyz[3], x0, y0, z0, x, y, z, dx, dy, dz, d;

    Bool_t bFOUND = kFALSE;
    for(Int_t iselect=0; iselect<nselect; iselect++){
      track = (AliTRDtrackInfo*)fTracks->UncheckedAt(selection[iselect]);

      // check first MC ... if available
      d = 0;
      for(Int_t iref=0; iref<track->GetNTrackRefs(); iref++){
        if(!(ref = track->GetTrackRef(iref))) continue;
        if((refMiss = tt->GetTrackRef(iref))){
          dy = ref->LocalY() - refMiss->LocalY();
          dz = ref->Z() - refMiss->Z();
        } else {
          // compare missOP with refTrackRef in LTC
          x0 = ref->LocalX();
          op->GetYAt(x0, AliTracker::GetBz(), y0);
          op->GetZAt(x0, AliTracker::GetBz(), z0);
          dy = y0 - ref->LocalY();
          dz = z0 - ref->Z();
        }
        d += (dy*dy + dz*dz);
      }
      //printf("\td[%d] = %f N[%d]\n", selection[iselect], d, track->GetNTrackRefs());
      if((track->GetNTrackRefs())){ 
        d /= track->GetNTrackRefs();
        if(d < threshold){
          //printf("\t\tFound %2d in ref[%3d] : d[%f]\n", imiss, selection[iselect], d/track->GetNTrackRefs());
          bFOUND = kTRUE; break;
        }
      }

      // process outer param ... always available
      // compare missOP with OP in GTC
      esd = track->GetESDinfo()->GetOuterParam();
      esd->GetXYZ(xyz);
      x0 = esd->GetX();
      op->GetYAt(x0, AliTracker::GetBz(), y0);
      op->GetZAt(x0, AliTracker::GetBz(), z0);
      x = x0*cosa - y0*sina;
      y = x0*sina + y0*cosa;
      z = z0;
      dx=xyz[0]-x;
      dy=xyz[1]-y;
      dz=xyz[2]-z;
      d = dx*dx+dy*dy+dz*dz;
      //printf("\td[%d] = %f op\n", selection[iselect], d);
      if(d < threshold){
        //printf("\t\tFound %2d in op[%3d]  : d[%f] dx[%5.2f] dy[%5.2f] dz[%5.2f]\n", imiss, selection[iselect], d, dx, dy, dz);
        bFOUND = kTRUE; break;
      }
    }
    if(bFOUND) nTPC--;
    else{ 
      ref = tt->GetTrackRef(0);
      mom = ref ? ref->P(): op->P();
      pidx = AliTRDCalPID::GetPartIndex(tt->GetPDG());
      pidx = TMath::Max(pidx, 0);
      ((TProfile*)fContainer->At(pidx))->Fill(mom, 0.);
      AliDebug(2, Form("  NOT bFOUND Id[%d] Mom[%f]\n", tt->GetTrackId(), mom));
    }
  }

  AliDebug(2, Form("%3d Tracks: ESD[%3d] TPC[%3d] TRD[%3d | %5.2f%%] Off[%d]", (Int_t)AliAnalysisManager::GetAnalysisManager()->GetCurrentEntry(), fTracks->GetEntriesFast(), nTPC, nTRD, nTPC ? 1.E2*nTRD/float(nTPC) : 0., fMissed->GetEntriesFast()));

  //fMissed->Delete();
	// check for double countings
	Int_t indices[10000]; memset(indices, 0, sizeof(Int_t) * 10000);
	TMath::Sort(nTRD, labelsacc, indices);
	if(DebugLevel() > 2){
	for(Int_t itk = 0; itk < nTRD - 1; itk++)
		if(labelsacc[indices[itk]] ==labelsacc[indices[itk + 1]]) printf("Double counted MC track: %d\n", labelsacc[indices[itk]]);
	}
}

//____________________________________________________________________
Bool_t AliTRDefficiency::GetRefFigure(Int_t ifig)
{
// Steer reference figures

  if(!gPad){
    AliWarning("Please provide a canvas to draw results.");
    return kFALSE;
  }
  gPad->SetLogx();

  TLegend *leg(NULL);
  Bool_t bFIRST(kTRUE);
  TProfile *h(NULL);
  switch(ifig){
  case 0:
    h = (TProfile*)fContainer->At(AliPID::kSPECIES);
    for(Int_t is=0; is<AliPID::kSPECIES; is++){
      h->Add((TProfile*)fContainer->At(is));
    }
    h->SetMarkerStyle(24);
    h->SetMarkerColor(kBlack);
    h->SetLineColor(kBlack);
    h->SetTitle("TRD Efficiency integrated");
    h->SetXTitle("p [GeV/c]");
    h->GetXaxis()->SetMoreLogLabels();
    h->SetYTitle("Efficiency");
    h->GetYaxis()->CenterTitle();
    h->Draw("e1");
    break;
  case 1:
    bFIRST = kTRUE;
    for(Int_t is=0; is<AliPID::kSPECIES; is++){
      if(!(h = (TProfile*)fContainer->At(is))) continue;
      h->SetMarkerStyle(24);
      if(bFIRST){
        h->Draw("e1");
        h->SetXTitle("p [GeV/c]");
        h->GetXaxis()->SetMoreLogLabels();
        h->SetYTitle("Efficiency");
        h->GetYaxis()->CenterTitle();
        h->GetYaxis()->SetRangeUser(0.8, 1.05);
        leg=new TLegend(.7, .2, .98, .6);
        leg->SetHeader("Species");
        leg->SetBorderSize(0);
        leg->SetFillStyle(0);
        leg->AddEntry(h, h->GetTitle(), "pl");
      } else {
        leg->AddEntry(h, h->GetTitle(), "pl");
        h->Draw("same e1");
      }
      bFIRST = kFALSE;
    }
    if(leg) leg->Draw();
    break;
  }
  return kTRUE;
}

//________________________________________________________
TObjArray* AliTRDefficiency::Histos()
{
  //
  // Define histograms
  //

  if(fContainer) return fContainer;

  fContainer  = new TObjArray(1); fContainer->SetOwner(kTRUE);
  THnSparse *H(NULL);
  TString st;

  //++++++++++++++++++++++
  // cluster to detector
  if(!(H = (THnSparseI*)gROOT->FindObject("hEFF"))){
    const Int_t mdim(8);
    Int_t nlabel(3);
    const Char_t *eTitle[mdim] = {"status", "#phi [rad]", "eta", "p_{t} [bin]", "label", "p_{t}^{MC} [bin]", "N_{trklt}", "chg*spec*rc"};
    const Int_t eNbins[mdim]   = {  5,         144,        45,     fNpt-1,      nlabel,     fNpt-1, AliTRDgeometry::kNlayer-2, 5};
    const Double_t eMin[mdim]  = { -0.5,    -TMath::Pi(),  -.9,      -0.5,      -1.5,         -0.5,         1.5,             -2.5},
                   eMax[mdim]  = {  4.5,     TMath::Pi(),   .9,    fNpt-1.5,     1.5,       fNpt-1.5,       5.5,              2.5};
    st = "basic efficiency;";
    // define minimum info to be saved in non debug mode
    Int_t ndim=DebugLevel()>=1?mdim:(HasMCdata()?6:4);
    for(Int_t idim(0); idim<ndim; idim++){ st += eTitle[idim]; st+=";";}
    H = new THnSparseI("hEFF", st.Data(), ndim, eNbins, eMin, eMax);
  } else H->Reset();
  fContainer->AddAt(H, 0);

  return fContainer;
}

//____________________________________________________________________
Bool_t AliTRDefficiency::PostProcess()
{
// Fit, Project, Combine, Extract values from the containers filled during execution

  if (!fContainer) {
    AliError("ERROR: list not available");
    return kFALSE;
  }
  if(!fProj){
    AliInfo("Building array of projections ...");
    fProj = new TObjArray(2000); fProj->SetOwner(kTRUE);
  }
  // set pt/p segmentation. guess from data
  THnSparse *H(NULL);
  if(!(H = (THnSparse*)fContainer->FindObject("hEFF"))){
    AliError("Missing/Wrong data @ hEFF.");
    return kFALSE;
  }
  fNpt=H->GetAxis(3)->GetNbins()+1;
  if(!MakeMomSegmentation()) return kFALSE;

  if(!MakeProjectionBasicEff()) return kFALSE;
  return kTRUE;
}

//____________________________________________________________________
Bool_t AliTRDefficiency::MakeProjectionBasicEff()
{
// Make basic efficiency plots

  if(!fContainer || !fProj){
    AliError("Missing data container.");
    return kFALSE;
  }
  THnSparse *H(NULL);
  if(!(H = (THnSparse*)fContainer->FindObject("hEFF"))){
    AliError("Missing/Wrong data @ hEFF.");
    return kFALSE;
  }
  Int_t ndim(H->GetNdimensions()); //Bool_t debug(ndim>Int_t(kNdimCl));
  TAxis *aa[11], *al(NULL), *apt(NULL); memset(aa, 0, sizeof(TAxis*) * 11);
  for(Int_t id(0); id<ndim; id++) aa[id] = H->GetAxis(id);
  if(H->GetNdimensions() > 4) al = H->GetAxis(4);
  if(H->GetNdimensions() > 5) apt = H->GetAxis(5);
  Int_t nlab=al?5:1;

  // define rebinning strategy
  //const Int_t nEtaPhi(4); Int_t rebinEtaPhiX[nEtaPhi] = {1, 2, 5, 1}, rebinEtaPhiY[nEtaPhi] = {2, 1, 1, 5};
  const Int_t nprojs(50);
  AliTRDrecoProjection hp[nprojs];  TObjArray php(nprojs);
  const Char_t *stat[] = {"!TRDin", "TRDin", "TRDin&TRDStop", "TRDin&TRDout", "TRDin&TRDout&TRDStop"};
  const Char_t *lab[] = {"MC-Miss", "MC-Trkble", "MC-Good", "MC-Accept", "MC-Wrong"};
  Int_t ih(0);
  for(Int_t ilab(0); ilab<nlab; ilab++){
    for(Int_t istat(0); istat<5; istat++){
      hp[ih].Build(Form("HEff0%d%d", ilab, istat),
                    Form("Efficiency ::  Stat[#bf{%s}] %s", stat[istat], nlab>1?lab[ilab]:""), 2, 1, 3, aa);
      //hp[ih].SetRebinStrategy(nEtaPhi, rebinEtaPhiX, rebinEtaPhiY);
      php.AddLast(&hp[ih++]);
      if(!apt) continue;
      hp[ih].Build(Form("HEff1%d%d", ilab, istat),
                    Form("Efficiency [MC] ::  Stat[#bf{%s}] %s", stat[istat], lab[ilab]), 2, 1, 5, aa);
      //hp[ih].SetRebinStrategy(nEtaPhi, rebinEtaPhiX, rebinEtaPhiY);
      php.AddLast(&hp[ih++]);
    }
  }
  AliInfo(Form("Build %3d 3D projections.", ih));

  AliTRDrecoProjection *pr0(NULL), *pr1(NULL);
  Int_t istatus, ilab(0), coord[11]; memset(coord, 0, sizeof(Int_t) * 11); Double_t v = 0.;
  for (Long64_t ib(0); ib < H->GetNbins(); ib++) {
    v = H->GetBinContent(ib, coord); if(v<1.) continue;
    istatus = coord[0]-1; if(istatus>4) continue;
    ilab=al?coord[4]:0;
    Int_t isel = (apt?2:1)*(ilab*5+istatus);
    if(isel>=ih){
      AliError(Form("Wrong selection %d [%3d] {stat[%d] lab[%d]}", isel, ih, istatus, ilab));
      return kFALSE;
    }
    if(!(pr0=(AliTRDrecoProjection*)php.At(isel))) {
      AliError(Form("Missing projection %d", isel));
      return kFALSE;
    }
    if(strcmp(pr0->H()->GetName(), Form("HEff0%d%d", ilab, istatus))!=0){
      AliError(Form("Projection mismatch :: request[HEff0%d%d] found[%s]", ilab, istatus, pr0->H()->GetName()));
      return kFALSE;
    }
    //for(Int_t jh(0); jh<1/*np[isel]*/; jh++) ((AliTRDrecoProjection*)php.At(isel+jh))->Increment(coord, v);
    AliDebug(2, Form("Found %s for selection stat[%d] lab[%d]", pr0->H()->GetName(), istatus, ilab));
    ((AliTRDrecoProjection*)php.At(isel))->Increment(coord, v);
    if(apt) ((AliTRDrecoProjection*)php.At(isel+1))->Increment(coord, v);
  }
  if(HasDump3D()){
    TDirectory *cwd = gDirectory;
    TFile::Open(Form("Dump%s_%s.root", GetName(), H->GetName()), "RECREATE");
    for(Int_t ip(0); ip<php.GetEntriesFast(); ip++){
      if(!(pr0 = (AliTRDrecoProjection*)php.At(ip))) continue;
      if(!pr0->H()) continue;
      TH3 *h3=(TH3*)pr0->H()->Clone();
      h3->Write();
    }
    gFile->Close();
    cwd->cd();
  }

  Int_t jh(0);
  for(; ih--; ){
    if(!hp[ih].H()) continue;
    if(hp[ih].H()->Integral()<5.) continue;
    for(Int_t ipt(0); ipt<=fNpt; ipt++) fProj->AddAt(hp[ih].Projection2Dbin(ipt), jh++);
  }

  // PROCESS MC LABEL, CLONE 
  if(nlab>1){
    // MISSED TRACKS
    for(Int_t imc(0); imc<(apt?2:1); imc++){
      AliTRDrecoProjection prMis, prMisOK, prS, prSs, prTRDf;
      for(Int_t istat(0); istat<5; istat++) {
        if(!(pr0 = (AliTRDrecoProjection*)php.FindObject(Form("HEff%d0%d", imc, istat)))) continue;
        if(!prMis.H()){
          prMis = (*pr0);
          prMis.SetNameTitle(Form("HEff%dM", imc), "Missed tracks");
          prMis.H()->SetNameTitle(Form("HEff%dM", imc), Form("Efficiency [%s] :: Missed tracks", imc?"MC":"REC"));
        } else prMis+=(*pr0);
        if(istat==0) {             // MC miss & !TRDin
          prMisOK = (*pr0);
          prMisOK.SetNameTitle(Form("HEff%dMok", imc), "Missed tracks/Not propagated");
          prMisOK.H()->SetNameTitle(Form("HEff%dMok", imc), Form("Efficiency [%s] :: Missed tracks/Not propagated", imc?"MC":"REC"));
        } else if(istat==1) {             // MC miss & TRDin
          prS = (*pr0);
          prS.SetNameTitle(Form("HEff%dMS", imc), "Missed seeded tracks");
          prS.H()->SetNameTitle(Form("HEff%dMS", imc), Form("Efficiency [%s] :: Missed tracks/Seeder propagated", imc?"MC":"REC"));
        } else if(istat==2) {             // MC miss & TRDstop
          prSs = (*pr0);
          prSs.SetNameTitle(Form("HEff%dMSs", imc), "Stop seeded tracks");
          prSs.H()->SetNameTitle(Form("HEff%dMSs", imc), Form("Efficiency [%s] :: Missed tracks/Stop seeded tracks", imc?"MC":"REC"));
        } else if(istat==3 || istat==4) {             // MC miss & (TRDout || TRDout+TRDstop)
          prTRDf = (*pr0);
          prTRDf.SetNameTitle(Form("HEff%dMTtrd", imc), "Missed tracks/TRD fooled");
          prTRDf.H()->SetNameTitle(Form("HEff%dMTtrd", imc), Form("Efficiency [%s] :: Missed tracks/TRD fooled", imc?"MC":"REC"));
        } else {
          if(Int_t(pr0->H()->Integral()) > 0) AliWarning(Form("Detected %3d MISSED entries for %s[%s]", Int_t(pr0->H()->Integral()), stat[istat], imc?"MC":"REC"));
        }
      }
      for(Int_t ipt(-1); ipt<=fNpt; ipt++){
        fProj->AddAt(prMis.Projection2Dbin(ipt, imc), jh++);
        fProj->AddAt(prMisOK.Projection2Dbin(ipt, imc), jh++);
        fProj->AddAt(prS.Projection2Dbin(ipt, imc), jh++);
        fProj->AddAt(prSs.Projection2Dbin(ipt, imc), jh++);
        fProj->AddAt(prTRDf.Projection2Dbin(ipt, imc), jh++);
      }
    
      // TRACKABLE TRACKS
      AliTRDrecoProjection prAll, prTRDns, prTRDfail, prTRD, prTRDbad;//, prTRDstop;
      for(ilab=1; ilab<=4; ilab++){
        for(Int_t istat(0); istat<5; istat++) {
          if(!(pr0 = (AliTRDrecoProjection*)php.FindObject(Form("HEff%d%d%d", imc, ilab, istat)))){
            AliError(Form("Missing prj. HEff%d%d%d", imc, ilab, istat));
            continue;
          }
          if(!prAll.H()){
            prAll = (*pr0);
            prAll.SetNameTitle(Form("HEff%dAT", imc), "Trackable tracks");
            prAll.H()->SetNameTitle(Form("HEff%dAT", imc), Form("Efficiency [%s] :: Trackable tracks", imc?"MC":"REC"));
          } else prAll+=(*pr0);
          if(ilab==1 && istat==0){      // MC trackable & !TRDin
            prTRDns = (*pr0);
            prTRDns.SetNameTitle(Form("HEff%dAnStrd", imc), "Trackable tracks/TRD not seeded");
            prTRDns.H()->SetNameTitle(Form("HEff%dAnStrd", imc), Form("Efficiency [%s] :: Trackable tracks/TRD not seeded", imc?"MC":"REC"));
          } else if(ilab==1 && istat==1){      // MC trackable & TRDin
            prTRDfail = (*pr0);
            prTRDfail.SetNameTitle(Form("HEff%dAFtrd", imc), "Trackable tracks/TRD failed");
            prTRDfail.H()->SetNameTitle(Form("HEff%dAFtrd", imc), Form("Efficiency [%s] :: Trackable tracks/TRD failed", imc?"MC":"REC"));
          } else if((ilab==2 && istat>=3) ||   // MC good & (TRDout || TRDout+TRDstop)
                    (ilab==3 && istat>=3) ||   // MC accept & (TRDout || TRDout+TRDstop)
                    (ilab==4 && istat==2)) {   // MC bad & TRDin+TRDstop
            if(!prTRD.H()){
              prTRD = (*pr0);
              prTRD.SetNameTitle(Form("HEff%dAtrd", imc), "Trackable tracks/TRD OK");
              prTRD.H()->SetNameTitle(Form("HEff%dAtrd", imc), Form("Efficiency [%s] :: Trackable tracks/TRD OK", imc?"MC":"REC"));
            } else prTRD+=(*pr0);
          } else if(ilab==4 && istat>=3){      // MC trackable & (TRDout (+TRDstop))
            if(!prTRDbad.H()){
              prTRDbad = (*pr0);
              prTRDbad.SetNameTitle(Form("HEff%dABtrd", imc), "Trackable tracks/TRD bad");
              prTRDbad.H()->SetNameTitle(Form("HEff%dABtrd", imc), Form("Efficiency [%s] :: Trackable tracks/TRD bad", imc?"MC":"REC"));
            } else  prTRDbad+=(*pr0);
          } else {
            if(Int_t(pr0->H()->Integral()) > 0) AliWarning(Form("Detected %3d TRACKABLE entries for %s -> %s[%s]", Int_t(pr0->H()->Integral()), lab[ilab], stat[istat], imc?"MC":"REC"));
          }
        }
      }
      for(Int_t ipt(-1); ipt<=fNpt; ipt++){
        fProj->AddAt(prAll.Projection2Dbin(ipt, imc), jh++);
        fProj->AddAt(prTRDns.Projection2Dbin(ipt), jh++);
        fProj->AddAt(prTRDfail.Projection2Dbin(ipt, imc), jh++);
        fProj->AddAt(prTRD.Projection2Dbin(ipt, imc), jh++);
        fProj->AddAt(prTRDbad.Projection2Dbin(ipt, imc), jh++);
      }
    } // END pt source LOOP
  } // END PROCESS EFFICIENCY MC

  // PROCESS EFFICIENCY NOMC
  const char suffix[] = {'A', 'S', 'T'};
  const char *sname[] = {"All", "Stopped", "Tracked [Stop]"};
  for(Int_t istat(0); istat<5; istat++) {
    if(!(pr0 = (AliTRDrecoProjection*)php.FindObject(Form("HEff00%d", istat)))){
      AliError(Form("Missing prj. HEff00%d", istat));
      continue;
    }
    // sum over MC labels if available
    for(ilab=1; ilab<nlab; ilab++){
      if(!(pr1 = (AliTRDrecoProjection*)php.FindObject(Form("HEff0%d%d", ilab, istat)))){
        AliError(Form("Missing prj. HEff0%d%d", ilab, istat));
        continue;
      }
      (*pr0)+=(*pr1);
    }
    pr0->H()->SetNameTitle(Form("HEff%d", istat), Form("Efficiency :: Stat[#bf{%s}]", stat[istat]));
    for(Int_t ipt(0); ipt<=fNpt; ipt++) fProj->AddAt(pr0->Projection2Dbin(ipt), jh++);

    if(istat>1 && (pr1 = (AliTRDrecoProjection*)php.FindObject("HEff001"))) (*pr1)+=(*pr0);
    //if(istat>2 && (pr1 = (AliTRDrecoProjection*)php.FindObject("HEff02"))) (*pr1)+=(*pr0);
    if(istat>3 && (pr1 = (AliTRDrecoProjection*)php.FindObject("HEff003"))) (*pr1)+=(*pr0);
  }
  // Project 2D tracks
  for(Int_t istat(0); istat<3; istat++){
    if(!(pr0 = (AliTRDrecoProjection*)php.FindObject(Form("HEff00%d", istat+1)))){
      AliError(Form("Missing prj. HEff00%d", istat+1));
      continue;
    }
    pr0->H()->SetNameTitle(Form("HEff%c", suffix[istat]), Form("Efficiency :: %s Tracks", sname[istat]));
    for(Int_t ipt(-1); ipt<=fNpt; ipt++) fProj->AddAt(pr0->Projection2Dbin(ipt), jh++);
  }

  // Efficiency
/*  TH2F *h2T(NULL), *h2P(NULL);
  for(Int_t ipt(-1); ipt<=fNpt; ipt++){
    if(!(h2T = (TH2F*)fProj->FindObject(Form("HEffT%d_2D", ipt)))) continue;
    if(!(h2P = (TH2F*)fProj->FindObject(Form("HEffP%d_2D", ipt)))) continue;
    h2P->Divide(h2T); PutTrendValue(ipt<0?"pt":(Form("pt%d", ipt)), GetMeanStat(h2P, 0.01, ">"));
  }*/
  AliInfo(Form("Done %3d 2D projections.", jh));
  return kTRUE;
}

//____________________________________________________________________
void AliTRDefficiency::MakeSummary()
{
//  Build summary plots
  if(!fProj){
    AliError("Missing results");
    return;
  }
  TVirtualPad *p(NULL); TCanvas *cOut(NULL);
  TH2 *h2(NULL);
  gStyle->SetPalette(1);

  Int_t nbins(DebugLevel()==0?3:20);
  //calculate true pt bin
  Float_t ptBins[23]; ptBins[0] = 0.;
  if(nbins==3){ // significant bins
    ptBins[1] = 0.5;
    ptBins[2] = 0.8;
    ptBins[3] = 1.5;
    ptBins[4] = 5.;
    ptBins[5] = 10.;
  } else if(nbins==20){ // logarithmic bins
    ptBins[1] = 0.5;
    Float_t dpt(0.002);
    for(Int_t ipt(1); ipt<21; ipt++) ptBins[ipt+1] = ptBins[ipt]+(TMath::Exp(ipt*ipt*dpt)-1.);
    ptBins[22] = 10.;
  } else {
    AliError(Form("Unknown no.[%d] of bins in the p_t spectrum", nbins));
    return;// kFALSE;
  }

  const Char_t cid[]={'T','P'};
  cOut = new TCanvas(Form("%s_Eff", GetName()), "TRD Efficiency", 1536, 1536); cOut->Divide(2,2,1.e-5,1.e-5);
  // tracking eff :: eta-phi dependence
  for(Int_t it(0); it<2; it++){
    if(!(h2 = (TH2*)fProj->FindObject(Form("HEff%cEnN", cid[it])))) {
      AliError(Form("Missing \"HEff%cEnN\".", cid[it]));
      continue;
    }
    h2->SetContour(10); h2->Scale(1.e2); SetRangeZ(h2, 80, 100, 5);
    h2->GetZaxis()->SetTitle("Efficiency [%]"); h2->GetZaxis()->CenterTitle();
    p=cOut->cd(it+1);p->SetRightMargin(0.1572581);p->SetTopMargin(0.08262712);
    h2->Draw("colz");
    MakeDetectorPlot();
  }
  if(!(h2 = (TH2*)fProj->FindObject("HEff0En"))) {
    AliError("Missing \"HEff0En\".");
    return;
  }
  p=cOut->cd(3);p->SetRightMargin(0.1572581);p->SetTopMargin(0.08262712);
  h2->Draw("colz"); MakeDetectorPlot();
  // tracking eff :: pt dependence
  TH1 *h[2] = {0};
  if(!(h[0] = (TH1*)fProj->FindObject("HEffP_zN"))){
    AliError("Missing \"HEffP_zN\".");
    return;
  }
  if(!(h[1] = (TH1*)fProj->FindObject("HEffT_zN"))){
    AliError("Missing \"HEffT_zN\".");
    return;
  }
  TH1 *h1[3] = {0};
  Color_t color[] = {kGreen, kBlue, kRed};
  for(Int_t il=0;il<3;il++){
    h1[il]=new TH1F(Form("h1Eff%d", il), "", nbins+2, ptBins);
    h1[il]->SetFillColor(color[il]);
    h1[il]->SetFillStyle(il==2?3002:1001);
    h1[il]->SetLineColor(color[il]);
    h1[il]->SetMarkerStyle(4);
    h1[il]->SetMarkerColor(color[il]);
    h1[il]->SetLineWidth(1);
  }
  for(Int_t ip(0);ip<=(nbins+1);ip++){
    h1[0]->SetBinContent(ip+1, 1.e2*h[0]->GetBinContent(ip)); // propagated
    h1[1]->SetBinContent(ip+1, 1.e2*(h[1]->GetBinContent(ip) - h[0]->GetBinContent(ip))); // stopped
    h1[2]->SetBinContent(ip+1, 1.e2*(1 - h[1]->GetBinContent(ip))); // missed
  }
  const Char_t *labEff[] = {"Propagated", "Stopped", "Missed"};
  THStack *hs = new THStack("hEff","Tracking Efficiency;p_{t} [GeV/c];Efficiency [%]");
  TLegend *leg = new TLegend(0.671371,0.1313559,0.9576613,0.2923729,NULL,"brNDC");
  leg->SetBorderSize(0); leg->SetFillColor(kWhite); leg->SetFillStyle(1001);
  for(Int_t ic(0); ic<3;ic++){ hs->Add(h1[ic]);leg->AddEntry(h1[ic], labEff[ic], "f");}
  p=cOut->cd(4); p->SetLeftMargin(0.08266129); p->SetRightMargin(0.0141129);p->SetTopMargin(0.006355932);p->SetLogx();
  hs->Draw(); //hs->Draw("same nostack,e1p");
  leg->Draw();
  hs->GetXaxis()->SetRangeUser(0.6,10.);
  hs->GetXaxis()->SetMoreLogLabels();
  hs->GetXaxis()->SetTitleOffset(1.2);
  hs->GetYaxis()->SetNdivisions(513);
  hs->SetMinimum(75.);
  hs->GetYaxis()->CenterTitle();
  cOut->SaveAs(Form("%s.gif", cOut->GetName()));

  cOut = new TCanvas(Form("%s_MC", GetName()), "TRD Label", 1536, 1536); cOut->Divide(2,2,1.e-5,1.e-5);
  for(Int_t ipad(0); ipad<3; ipad++){
    p=cOut->cd(ipad+1);p->SetRightMargin(0.1572581);p->SetTopMargin(0.08262712);
    if(!(h2 = (TH2*)fProj->FindObject(Form("HEffLb%dEnN", ipad)))) continue;
    h2->SetContour(10);
    h2->Scale(1.e2); SetRangeZ(h2, ipad==1?50:0., ipad==1?90.:50., ipad==1?0.01:0.01);
    h2->GetZaxis()->SetTitle("Efficiency [%]"); h2->GetZaxis()->CenterTitle();
    h2->Draw("colz");
    MakeDetectorPlot();
  }
  color[0] = kRed; color[1] = kGreen; color[2] = kBlue;
  for(Int_t il=0;il<3;il++){
    if(!(h[il] = (TH1D*)fProj->FindObject(Form("HEffLb%d_zN", il)))) continue;
    h1[il]=new TH1F(Form("h1Lab%d", il), "", nbins+2, ptBins);
    for(Int_t ip(0);ip<=(nbins+1);ip++) h1[il]->SetBinContent(ip+1, 1.e2*h[il]->GetBinContent(ip));
    h1[il]->SetFillColor(color[il]);
    h1[il]->SetFillStyle(il==2?3002:1001);
    h1[il]->SetLineColor(color[il]);
    h1[il]->SetLineWidth(1);
  }
  const Char_t *labMC[] = {"TRD != ESD [bad]", "TRD == ESD [good]", "TRD == -ESD [accept]"};
  leg = new TLegend(0.671371,0.1313559,0.9576613,0.2923729,NULL,"brNDC");
  leg->SetBorderSize(0); leg->SetFillColor(kWhite); leg->SetFillStyle(1001);
  hs = new THStack("hLab","TRD Label;p_{t} [GeV/c];Efficiency [%]");
  hs->Add(h1[1]);leg->AddEntry(h1[1], labMC[1], "f"); // good
  hs->Add(h1[2]);leg->AddEntry(h1[2], labMC[2], "f"); // accept
  hs->Add(h1[0]);leg->AddEntry(h1[0], labMC[0], "f"); // bad
  p=cOut->cd(4); p->SetLeftMargin(0.08266129); p->SetRightMargin(0.0141129);p->SetTopMargin(0.006355932); p->SetLogx();
  hs->Draw(/*"nostack,e1p"*/); leg->Draw();
  cOut->Modified();cOut->Update();
  hs->GetXaxis()->SetRangeUser(0.6,10.);
  hs->GetXaxis()->SetMoreLogLabels();
  hs->GetXaxis()->SetTitleOffset(1.2);
  hs->GetYaxis()->SetNdivisions(513);
  hs->SetMinimum(50.);
  hs->GetYaxis()->CenterTitle();
  cOut->SaveAs(Form("%s.gif", cOut->GetName()));
}
 AliTRDefficiency.cxx:1
 AliTRDefficiency.cxx:2
 AliTRDefficiency.cxx:3
 AliTRDefficiency.cxx:4
 AliTRDefficiency.cxx:5
 AliTRDefficiency.cxx:6
 AliTRDefficiency.cxx:7
 AliTRDefficiency.cxx:8
 AliTRDefficiency.cxx:9
 AliTRDefficiency.cxx:10
 AliTRDefficiency.cxx:11
 AliTRDefficiency.cxx:12
 AliTRDefficiency.cxx:13
 AliTRDefficiency.cxx:14
 AliTRDefficiency.cxx:15
 AliTRDefficiency.cxx:16
 AliTRDefficiency.cxx:17
 AliTRDefficiency.cxx:18
 AliTRDefficiency.cxx:19
 AliTRDefficiency.cxx:20
 AliTRDefficiency.cxx:21
 AliTRDefficiency.cxx:22
 AliTRDefficiency.cxx:23
 AliTRDefficiency.cxx:24
 AliTRDefficiency.cxx:25
 AliTRDefficiency.cxx:26
 AliTRDefficiency.cxx:27
 AliTRDefficiency.cxx:28
 AliTRDefficiency.cxx:29
 AliTRDefficiency.cxx:30
 AliTRDefficiency.cxx:31
 AliTRDefficiency.cxx:32
 AliTRDefficiency.cxx:33
 AliTRDefficiency.cxx:34
 AliTRDefficiency.cxx:35
 AliTRDefficiency.cxx:36
 AliTRDefficiency.cxx:37
 AliTRDefficiency.cxx:38
 AliTRDefficiency.cxx:39
 AliTRDefficiency.cxx:40
 AliTRDefficiency.cxx:41
 AliTRDefficiency.cxx:42
 AliTRDefficiency.cxx:43
 AliTRDefficiency.cxx:44
 AliTRDefficiency.cxx:45
 AliTRDefficiency.cxx:46
 AliTRDefficiency.cxx:47
 AliTRDefficiency.cxx:48
 AliTRDefficiency.cxx:49
 AliTRDefficiency.cxx:50
 AliTRDefficiency.cxx:51
 AliTRDefficiency.cxx:52
 AliTRDefficiency.cxx:53
 AliTRDefficiency.cxx:54
 AliTRDefficiency.cxx:55
 AliTRDefficiency.cxx:56
 AliTRDefficiency.cxx:57
 AliTRDefficiency.cxx:58
 AliTRDefficiency.cxx:59
 AliTRDefficiency.cxx:60
 AliTRDefficiency.cxx:61
 AliTRDefficiency.cxx:62
 AliTRDefficiency.cxx:63
 AliTRDefficiency.cxx:64
 AliTRDefficiency.cxx:65
 AliTRDefficiency.cxx:66
 AliTRDefficiency.cxx:67
 AliTRDefficiency.cxx:68
 AliTRDefficiency.cxx:69
 AliTRDefficiency.cxx:70
 AliTRDefficiency.cxx:71
 AliTRDefficiency.cxx:72
 AliTRDefficiency.cxx:73
 AliTRDefficiency.cxx:74
 AliTRDefficiency.cxx:75
 AliTRDefficiency.cxx:76
 AliTRDefficiency.cxx:77
 AliTRDefficiency.cxx:78
 AliTRDefficiency.cxx:79
 AliTRDefficiency.cxx:80
 AliTRDefficiency.cxx:81
 AliTRDefficiency.cxx:82
 AliTRDefficiency.cxx:83
 AliTRDefficiency.cxx:84
 AliTRDefficiency.cxx:85
 AliTRDefficiency.cxx:86
 AliTRDefficiency.cxx:87
 AliTRDefficiency.cxx:88
 AliTRDefficiency.cxx:89
 AliTRDefficiency.cxx:90
 AliTRDefficiency.cxx:91
 AliTRDefficiency.cxx:92
 AliTRDefficiency.cxx:93
 AliTRDefficiency.cxx:94
 AliTRDefficiency.cxx:95
 AliTRDefficiency.cxx:96
 AliTRDefficiency.cxx:97
 AliTRDefficiency.cxx:98
 AliTRDefficiency.cxx:99
 AliTRDefficiency.cxx:100
 AliTRDefficiency.cxx:101
 AliTRDefficiency.cxx:102
 AliTRDefficiency.cxx:103
 AliTRDefficiency.cxx:104
 AliTRDefficiency.cxx:105
 AliTRDefficiency.cxx:106
 AliTRDefficiency.cxx:107
 AliTRDefficiency.cxx:108
 AliTRDefficiency.cxx:109
 AliTRDefficiency.cxx:110
 AliTRDefficiency.cxx:111
 AliTRDefficiency.cxx:112
 AliTRDefficiency.cxx:113
 AliTRDefficiency.cxx:114
 AliTRDefficiency.cxx:115
 AliTRDefficiency.cxx:116
 AliTRDefficiency.cxx:117
 AliTRDefficiency.cxx:118
 AliTRDefficiency.cxx:119
 AliTRDefficiency.cxx:120
 AliTRDefficiency.cxx:121
 AliTRDefficiency.cxx:122
 AliTRDefficiency.cxx:123
 AliTRDefficiency.cxx:124
 AliTRDefficiency.cxx:125
 AliTRDefficiency.cxx:126
 AliTRDefficiency.cxx:127
 AliTRDefficiency.cxx:128
 AliTRDefficiency.cxx:129
 AliTRDefficiency.cxx:130
 AliTRDefficiency.cxx:131
 AliTRDefficiency.cxx:132
 AliTRDefficiency.cxx:133
 AliTRDefficiency.cxx:134
 AliTRDefficiency.cxx:135
 AliTRDefficiency.cxx:136
 AliTRDefficiency.cxx:137
 AliTRDefficiency.cxx:138
 AliTRDefficiency.cxx:139
 AliTRDefficiency.cxx:140
 AliTRDefficiency.cxx:141
 AliTRDefficiency.cxx:142
 AliTRDefficiency.cxx:143
 AliTRDefficiency.cxx:144
 AliTRDefficiency.cxx:145
 AliTRDefficiency.cxx:146
 AliTRDefficiency.cxx:147
 AliTRDefficiency.cxx:148
 AliTRDefficiency.cxx:149
 AliTRDefficiency.cxx:150
 AliTRDefficiency.cxx:151
 AliTRDefficiency.cxx:152
 AliTRDefficiency.cxx:153
 AliTRDefficiency.cxx:154
 AliTRDefficiency.cxx:155
 AliTRDefficiency.cxx:156
 AliTRDefficiency.cxx:157
 AliTRDefficiency.cxx:158
 AliTRDefficiency.cxx:159
 AliTRDefficiency.cxx:160
 AliTRDefficiency.cxx:161
 AliTRDefficiency.cxx:162
 AliTRDefficiency.cxx:163
 AliTRDefficiency.cxx:164
 AliTRDefficiency.cxx:165
 AliTRDefficiency.cxx:166
 AliTRDefficiency.cxx:167
 AliTRDefficiency.cxx:168
 AliTRDefficiency.cxx:169
 AliTRDefficiency.cxx:170
 AliTRDefficiency.cxx:171
 AliTRDefficiency.cxx:172
 AliTRDefficiency.cxx:173
 AliTRDefficiency.cxx:174
 AliTRDefficiency.cxx:175
 AliTRDefficiency.cxx:176
 AliTRDefficiency.cxx:177
 AliTRDefficiency.cxx:178
 AliTRDefficiency.cxx:179
 AliTRDefficiency.cxx:180
 AliTRDefficiency.cxx:181
 AliTRDefficiency.cxx:182
 AliTRDefficiency.cxx:183
 AliTRDefficiency.cxx:184
 AliTRDefficiency.cxx:185
 AliTRDefficiency.cxx:186
 AliTRDefficiency.cxx:187
 AliTRDefficiency.cxx:188
 AliTRDefficiency.cxx:189
 AliTRDefficiency.cxx:190
 AliTRDefficiency.cxx:191
 AliTRDefficiency.cxx:192
 AliTRDefficiency.cxx:193
 AliTRDefficiency.cxx:194
 AliTRDefficiency.cxx:195
 AliTRDefficiency.cxx:196
 AliTRDefficiency.cxx:197
 AliTRDefficiency.cxx:198
 AliTRDefficiency.cxx:199
 AliTRDefficiency.cxx:200
 AliTRDefficiency.cxx:201
 AliTRDefficiency.cxx:202
 AliTRDefficiency.cxx:203
 AliTRDefficiency.cxx:204
 AliTRDefficiency.cxx:205
 AliTRDefficiency.cxx:206
 AliTRDefficiency.cxx:207
 AliTRDefficiency.cxx:208
 AliTRDefficiency.cxx:209
 AliTRDefficiency.cxx:210
 AliTRDefficiency.cxx:211
 AliTRDefficiency.cxx:212
 AliTRDefficiency.cxx:213
 AliTRDefficiency.cxx:214
 AliTRDefficiency.cxx:215
 AliTRDefficiency.cxx:216
 AliTRDefficiency.cxx:217
 AliTRDefficiency.cxx:218
 AliTRDefficiency.cxx:219
 AliTRDefficiency.cxx:220
 AliTRDefficiency.cxx:221
 AliTRDefficiency.cxx:222
 AliTRDefficiency.cxx:223
 AliTRDefficiency.cxx:224
 AliTRDefficiency.cxx:225
 AliTRDefficiency.cxx:226
 AliTRDefficiency.cxx:227
 AliTRDefficiency.cxx:228
 AliTRDefficiency.cxx:229
 AliTRDefficiency.cxx:230
 AliTRDefficiency.cxx:231
 AliTRDefficiency.cxx:232
 AliTRDefficiency.cxx:233
 AliTRDefficiency.cxx:234
 AliTRDefficiency.cxx:235
 AliTRDefficiency.cxx:236
 AliTRDefficiency.cxx:237
 AliTRDefficiency.cxx:238
 AliTRDefficiency.cxx:239
 AliTRDefficiency.cxx:240
 AliTRDefficiency.cxx:241
 AliTRDefficiency.cxx:242
 AliTRDefficiency.cxx:243
 AliTRDefficiency.cxx:244
 AliTRDefficiency.cxx:245
 AliTRDefficiency.cxx:246
 AliTRDefficiency.cxx:247
 AliTRDefficiency.cxx:248
 AliTRDefficiency.cxx:249
 AliTRDefficiency.cxx:250
 AliTRDefficiency.cxx:251
 AliTRDefficiency.cxx:252
 AliTRDefficiency.cxx:253
 AliTRDefficiency.cxx:254
 AliTRDefficiency.cxx:255
 AliTRDefficiency.cxx:256
 AliTRDefficiency.cxx:257
 AliTRDefficiency.cxx:258
 AliTRDefficiency.cxx:259
 AliTRDefficiency.cxx:260
 AliTRDefficiency.cxx:261
 AliTRDefficiency.cxx:262
 AliTRDefficiency.cxx:263
 AliTRDefficiency.cxx:264
 AliTRDefficiency.cxx:265
 AliTRDefficiency.cxx:266
 AliTRDefficiency.cxx:267
 AliTRDefficiency.cxx:268
 AliTRDefficiency.cxx:269
 AliTRDefficiency.cxx:270
 AliTRDefficiency.cxx:271
 AliTRDefficiency.cxx:272
 AliTRDefficiency.cxx:273
 AliTRDefficiency.cxx:274
 AliTRDefficiency.cxx:275
 AliTRDefficiency.cxx:276
 AliTRDefficiency.cxx:277
 AliTRDefficiency.cxx:278
 AliTRDefficiency.cxx:279
 AliTRDefficiency.cxx:280
 AliTRDefficiency.cxx:281
 AliTRDefficiency.cxx:282
 AliTRDefficiency.cxx:283
 AliTRDefficiency.cxx:284
 AliTRDefficiency.cxx:285
 AliTRDefficiency.cxx:286
 AliTRDefficiency.cxx:287
 AliTRDefficiency.cxx:288
 AliTRDefficiency.cxx:289
 AliTRDefficiency.cxx:290
 AliTRDefficiency.cxx:291
 AliTRDefficiency.cxx:292
 AliTRDefficiency.cxx:293
 AliTRDefficiency.cxx:294
 AliTRDefficiency.cxx:295
 AliTRDefficiency.cxx:296
 AliTRDefficiency.cxx:297
 AliTRDefficiency.cxx:298
 AliTRDefficiency.cxx:299
 AliTRDefficiency.cxx:300
 AliTRDefficiency.cxx:301
 AliTRDefficiency.cxx:302
 AliTRDefficiency.cxx:303
 AliTRDefficiency.cxx:304
 AliTRDefficiency.cxx:305
 AliTRDefficiency.cxx:306
 AliTRDefficiency.cxx:307
 AliTRDefficiency.cxx:308
 AliTRDefficiency.cxx:309
 AliTRDefficiency.cxx:310
 AliTRDefficiency.cxx:311
 AliTRDefficiency.cxx:312
 AliTRDefficiency.cxx:313
 AliTRDefficiency.cxx:314
 AliTRDefficiency.cxx:315
 AliTRDefficiency.cxx:316
 AliTRDefficiency.cxx:317
 AliTRDefficiency.cxx:318
 AliTRDefficiency.cxx:319
 AliTRDefficiency.cxx:320
 AliTRDefficiency.cxx:321
 AliTRDefficiency.cxx:322
 AliTRDefficiency.cxx:323
 AliTRDefficiency.cxx:324
 AliTRDefficiency.cxx:325
 AliTRDefficiency.cxx:326
 AliTRDefficiency.cxx:327
 AliTRDefficiency.cxx:328
 AliTRDefficiency.cxx:329
 AliTRDefficiency.cxx:330
 AliTRDefficiency.cxx:331
 AliTRDefficiency.cxx:332
 AliTRDefficiency.cxx:333
 AliTRDefficiency.cxx:334
 AliTRDefficiency.cxx:335
 AliTRDefficiency.cxx:336
 AliTRDefficiency.cxx:337
 AliTRDefficiency.cxx:338
 AliTRDefficiency.cxx:339
 AliTRDefficiency.cxx:340
 AliTRDefficiency.cxx:341
 AliTRDefficiency.cxx:342
 AliTRDefficiency.cxx:343
 AliTRDefficiency.cxx:344
 AliTRDefficiency.cxx:345
 AliTRDefficiency.cxx:346
 AliTRDefficiency.cxx:347
 AliTRDefficiency.cxx:348
 AliTRDefficiency.cxx:349
 AliTRDefficiency.cxx:350
 AliTRDefficiency.cxx:351
 AliTRDefficiency.cxx:352
 AliTRDefficiency.cxx:353
 AliTRDefficiency.cxx:354
 AliTRDefficiency.cxx:355
 AliTRDefficiency.cxx:356
 AliTRDefficiency.cxx:357
 AliTRDefficiency.cxx:358
 AliTRDefficiency.cxx:359
 AliTRDefficiency.cxx:360
 AliTRDefficiency.cxx:361
 AliTRDefficiency.cxx:362
 AliTRDefficiency.cxx:363
 AliTRDefficiency.cxx:364
 AliTRDefficiency.cxx:365
 AliTRDefficiency.cxx:366
 AliTRDefficiency.cxx:367
 AliTRDefficiency.cxx:368
 AliTRDefficiency.cxx:369
 AliTRDefficiency.cxx:370
 AliTRDefficiency.cxx:371
 AliTRDefficiency.cxx:372
 AliTRDefficiency.cxx:373
 AliTRDefficiency.cxx:374
 AliTRDefficiency.cxx:375
 AliTRDefficiency.cxx:376
 AliTRDefficiency.cxx:377
 AliTRDefficiency.cxx:378
 AliTRDefficiency.cxx:379
 AliTRDefficiency.cxx:380
 AliTRDefficiency.cxx:381
 AliTRDefficiency.cxx:382
 AliTRDefficiency.cxx:383
 AliTRDefficiency.cxx:384
 AliTRDefficiency.cxx:385
 AliTRDefficiency.cxx:386
 AliTRDefficiency.cxx:387
 AliTRDefficiency.cxx:388
 AliTRDefficiency.cxx:389
 AliTRDefficiency.cxx:390
 AliTRDefficiency.cxx:391
 AliTRDefficiency.cxx:392
 AliTRDefficiency.cxx:393
 AliTRDefficiency.cxx:394
 AliTRDefficiency.cxx:395
 AliTRDefficiency.cxx:396
 AliTRDefficiency.cxx:397
 AliTRDefficiency.cxx:398
 AliTRDefficiency.cxx:399
 AliTRDefficiency.cxx:400
 AliTRDefficiency.cxx:401
 AliTRDefficiency.cxx:402
 AliTRDefficiency.cxx:403
 AliTRDefficiency.cxx:404
 AliTRDefficiency.cxx:405
 AliTRDefficiency.cxx:406
 AliTRDefficiency.cxx:407
 AliTRDefficiency.cxx:408
 AliTRDefficiency.cxx:409
 AliTRDefficiency.cxx:410
 AliTRDefficiency.cxx:411
 AliTRDefficiency.cxx:412
 AliTRDefficiency.cxx:413
 AliTRDefficiency.cxx:414
 AliTRDefficiency.cxx:415
 AliTRDefficiency.cxx:416
 AliTRDefficiency.cxx:417
 AliTRDefficiency.cxx:418
 AliTRDefficiency.cxx:419
 AliTRDefficiency.cxx:420
 AliTRDefficiency.cxx:421
 AliTRDefficiency.cxx:422
 AliTRDefficiency.cxx:423
 AliTRDefficiency.cxx:424
 AliTRDefficiency.cxx:425
 AliTRDefficiency.cxx:426
 AliTRDefficiency.cxx:427
 AliTRDefficiency.cxx:428
 AliTRDefficiency.cxx:429
 AliTRDefficiency.cxx:430
 AliTRDefficiency.cxx:431
 AliTRDefficiency.cxx:432
 AliTRDefficiency.cxx:433
 AliTRDefficiency.cxx:434
 AliTRDefficiency.cxx:435
 AliTRDefficiency.cxx:436
 AliTRDefficiency.cxx:437
 AliTRDefficiency.cxx:438
 AliTRDefficiency.cxx:439
 AliTRDefficiency.cxx:440
 AliTRDefficiency.cxx:441
 AliTRDefficiency.cxx:442
 AliTRDefficiency.cxx:443
 AliTRDefficiency.cxx:444
 AliTRDefficiency.cxx:445
 AliTRDefficiency.cxx:446
 AliTRDefficiency.cxx:447
 AliTRDefficiency.cxx:448
 AliTRDefficiency.cxx:449
 AliTRDefficiency.cxx:450
 AliTRDefficiency.cxx:451
 AliTRDefficiency.cxx:452
 AliTRDefficiency.cxx:453
 AliTRDefficiency.cxx:454
 AliTRDefficiency.cxx:455
 AliTRDefficiency.cxx:456
 AliTRDefficiency.cxx:457
 AliTRDefficiency.cxx:458
 AliTRDefficiency.cxx:459
 AliTRDefficiency.cxx:460
 AliTRDefficiency.cxx:461
 AliTRDefficiency.cxx:462
 AliTRDefficiency.cxx:463
 AliTRDefficiency.cxx:464
 AliTRDefficiency.cxx:465
 AliTRDefficiency.cxx:466
 AliTRDefficiency.cxx:467
 AliTRDefficiency.cxx:468
 AliTRDefficiency.cxx:469
 AliTRDefficiency.cxx:470
 AliTRDefficiency.cxx:471
 AliTRDefficiency.cxx:472
 AliTRDefficiency.cxx:473
 AliTRDefficiency.cxx:474
 AliTRDefficiency.cxx:475
 AliTRDefficiency.cxx:476
 AliTRDefficiency.cxx:477
 AliTRDefficiency.cxx:478
 AliTRDefficiency.cxx:479
 AliTRDefficiency.cxx:480
 AliTRDefficiency.cxx:481
 AliTRDefficiency.cxx:482
 AliTRDefficiency.cxx:483
 AliTRDefficiency.cxx:484
 AliTRDefficiency.cxx:485
 AliTRDefficiency.cxx:486
 AliTRDefficiency.cxx:487
 AliTRDefficiency.cxx:488
 AliTRDefficiency.cxx:489
 AliTRDefficiency.cxx:490
 AliTRDefficiency.cxx:491
 AliTRDefficiency.cxx:492
 AliTRDefficiency.cxx:493
 AliTRDefficiency.cxx:494
 AliTRDefficiency.cxx:495
 AliTRDefficiency.cxx:496
 AliTRDefficiency.cxx:497
 AliTRDefficiency.cxx:498
 AliTRDefficiency.cxx:499
 AliTRDefficiency.cxx:500
 AliTRDefficiency.cxx:501
 AliTRDefficiency.cxx:502
 AliTRDefficiency.cxx:503
 AliTRDefficiency.cxx:504
 AliTRDefficiency.cxx:505
 AliTRDefficiency.cxx:506
 AliTRDefficiency.cxx:507
 AliTRDefficiency.cxx:508
 AliTRDefficiency.cxx:509
 AliTRDefficiency.cxx:510
 AliTRDefficiency.cxx:511
 AliTRDefficiency.cxx:512
 AliTRDefficiency.cxx:513
 AliTRDefficiency.cxx:514
 AliTRDefficiency.cxx:515
 AliTRDefficiency.cxx:516
 AliTRDefficiency.cxx:517
 AliTRDefficiency.cxx:518
 AliTRDefficiency.cxx:519
 AliTRDefficiency.cxx:520
 AliTRDefficiency.cxx:521
 AliTRDefficiency.cxx:522
 AliTRDefficiency.cxx:523
 AliTRDefficiency.cxx:524
 AliTRDefficiency.cxx:525
 AliTRDefficiency.cxx:526
 AliTRDefficiency.cxx:527
 AliTRDefficiency.cxx:528
 AliTRDefficiency.cxx:529
 AliTRDefficiency.cxx:530
 AliTRDefficiency.cxx:531
 AliTRDefficiency.cxx:532
 AliTRDefficiency.cxx:533
 AliTRDefficiency.cxx:534
 AliTRDefficiency.cxx:535
 AliTRDefficiency.cxx:536
 AliTRDefficiency.cxx:537
 AliTRDefficiency.cxx:538
 AliTRDefficiency.cxx:539
 AliTRDefficiency.cxx:540
 AliTRDefficiency.cxx:541
 AliTRDefficiency.cxx:542
 AliTRDefficiency.cxx:543
 AliTRDefficiency.cxx:544
 AliTRDefficiency.cxx:545
 AliTRDefficiency.cxx:546
 AliTRDefficiency.cxx:547
 AliTRDefficiency.cxx:548
 AliTRDefficiency.cxx:549
 AliTRDefficiency.cxx:550
 AliTRDefficiency.cxx:551
 AliTRDefficiency.cxx:552
 AliTRDefficiency.cxx:553
 AliTRDefficiency.cxx:554
 AliTRDefficiency.cxx:555
 AliTRDefficiency.cxx:556
 AliTRDefficiency.cxx:557
 AliTRDefficiency.cxx:558
 AliTRDefficiency.cxx:559
 AliTRDefficiency.cxx:560
 AliTRDefficiency.cxx:561
 AliTRDefficiency.cxx:562
 AliTRDefficiency.cxx:563
 AliTRDefficiency.cxx:564
 AliTRDefficiency.cxx:565
 AliTRDefficiency.cxx:566
 AliTRDefficiency.cxx:567
 AliTRDefficiency.cxx:568
 AliTRDefficiency.cxx:569
 AliTRDefficiency.cxx:570
 AliTRDefficiency.cxx:571
 AliTRDefficiency.cxx:572
 AliTRDefficiency.cxx:573
 AliTRDefficiency.cxx:574
 AliTRDefficiency.cxx:575
 AliTRDefficiency.cxx:576
 AliTRDefficiency.cxx:577
 AliTRDefficiency.cxx:578
 AliTRDefficiency.cxx:579
 AliTRDefficiency.cxx:580
 AliTRDefficiency.cxx:581
 AliTRDefficiency.cxx:582
 AliTRDefficiency.cxx:583
 AliTRDefficiency.cxx:584
 AliTRDefficiency.cxx:585
 AliTRDefficiency.cxx:586
 AliTRDefficiency.cxx:587
 AliTRDefficiency.cxx:588
 AliTRDefficiency.cxx:589
 AliTRDefficiency.cxx:590
 AliTRDefficiency.cxx:591
 AliTRDefficiency.cxx:592
 AliTRDefficiency.cxx:593
 AliTRDefficiency.cxx:594
 AliTRDefficiency.cxx:595
 AliTRDefficiency.cxx:596
 AliTRDefficiency.cxx:597
 AliTRDefficiency.cxx:598
 AliTRDefficiency.cxx:599
 AliTRDefficiency.cxx:600
 AliTRDefficiency.cxx:601
 AliTRDefficiency.cxx:602
 AliTRDefficiency.cxx:603
 AliTRDefficiency.cxx:604
 AliTRDefficiency.cxx:605
 AliTRDefficiency.cxx:606
 AliTRDefficiency.cxx:607
 AliTRDefficiency.cxx:608
 AliTRDefficiency.cxx:609
 AliTRDefficiency.cxx:610
 AliTRDefficiency.cxx:611
 AliTRDefficiency.cxx:612
 AliTRDefficiency.cxx:613
 AliTRDefficiency.cxx:614
 AliTRDefficiency.cxx:615
 AliTRDefficiency.cxx:616
 AliTRDefficiency.cxx:617
 AliTRDefficiency.cxx:618
 AliTRDefficiency.cxx:619
 AliTRDefficiency.cxx:620
 AliTRDefficiency.cxx:621
 AliTRDefficiency.cxx:622
 AliTRDefficiency.cxx:623
 AliTRDefficiency.cxx:624
 AliTRDefficiency.cxx:625
 AliTRDefficiency.cxx:626
 AliTRDefficiency.cxx:627
 AliTRDefficiency.cxx:628
 AliTRDefficiency.cxx:629
 AliTRDefficiency.cxx:630
 AliTRDefficiency.cxx:631
 AliTRDefficiency.cxx:632
 AliTRDefficiency.cxx:633
 AliTRDefficiency.cxx:634
 AliTRDefficiency.cxx:635
 AliTRDefficiency.cxx:636
 AliTRDefficiency.cxx:637
 AliTRDefficiency.cxx:638
 AliTRDefficiency.cxx:639
 AliTRDefficiency.cxx:640
 AliTRDefficiency.cxx:641
 AliTRDefficiency.cxx:642
 AliTRDefficiency.cxx:643
 AliTRDefficiency.cxx:644
 AliTRDefficiency.cxx:645
 AliTRDefficiency.cxx:646
 AliTRDefficiency.cxx:647
 AliTRDefficiency.cxx:648
 AliTRDefficiency.cxx:649
 AliTRDefficiency.cxx:650
 AliTRDefficiency.cxx:651
 AliTRDefficiency.cxx:652
 AliTRDefficiency.cxx:653
 AliTRDefficiency.cxx:654
 AliTRDefficiency.cxx:655
 AliTRDefficiency.cxx:656
 AliTRDefficiency.cxx:657
 AliTRDefficiency.cxx:658
 AliTRDefficiency.cxx:659
 AliTRDefficiency.cxx:660
 AliTRDefficiency.cxx:661
 AliTRDefficiency.cxx:662
 AliTRDefficiency.cxx:663
 AliTRDefficiency.cxx:664
 AliTRDefficiency.cxx:665
 AliTRDefficiency.cxx:666
 AliTRDefficiency.cxx:667
 AliTRDefficiency.cxx:668
 AliTRDefficiency.cxx:669
 AliTRDefficiency.cxx:670
 AliTRDefficiency.cxx:671
 AliTRDefficiency.cxx:672
 AliTRDefficiency.cxx:673
 AliTRDefficiency.cxx:674
 AliTRDefficiency.cxx:675
 AliTRDefficiency.cxx:676
 AliTRDefficiency.cxx:677
 AliTRDefficiency.cxx:678
 AliTRDefficiency.cxx:679
 AliTRDefficiency.cxx:680
 AliTRDefficiency.cxx:681
 AliTRDefficiency.cxx:682
 AliTRDefficiency.cxx:683
 AliTRDefficiency.cxx:684
 AliTRDefficiency.cxx:685
 AliTRDefficiency.cxx:686
 AliTRDefficiency.cxx:687
 AliTRDefficiency.cxx:688
 AliTRDefficiency.cxx:689
 AliTRDefficiency.cxx:690
 AliTRDefficiency.cxx:691
 AliTRDefficiency.cxx:692
 AliTRDefficiency.cxx:693
 AliTRDefficiency.cxx:694
 AliTRDefficiency.cxx:695
 AliTRDefficiency.cxx:696
 AliTRDefficiency.cxx:697
 AliTRDefficiency.cxx:698
 AliTRDefficiency.cxx:699
 AliTRDefficiency.cxx:700
 AliTRDefficiency.cxx:701
 AliTRDefficiency.cxx:702
 AliTRDefficiency.cxx:703
 AliTRDefficiency.cxx:704
 AliTRDefficiency.cxx:705
 AliTRDefficiency.cxx:706
 AliTRDefficiency.cxx:707
 AliTRDefficiency.cxx:708
 AliTRDefficiency.cxx:709
 AliTRDefficiency.cxx:710
 AliTRDefficiency.cxx:711
 AliTRDefficiency.cxx:712
 AliTRDefficiency.cxx:713
 AliTRDefficiency.cxx:714
 AliTRDefficiency.cxx:715
 AliTRDefficiency.cxx:716
 AliTRDefficiency.cxx:717
 AliTRDefficiency.cxx:718
 AliTRDefficiency.cxx:719
 AliTRDefficiency.cxx:720
 AliTRDefficiency.cxx:721
 AliTRDefficiency.cxx:722
 AliTRDefficiency.cxx:723
 AliTRDefficiency.cxx:724
 AliTRDefficiency.cxx:725
 AliTRDefficiency.cxx:726
 AliTRDefficiency.cxx:727
 AliTRDefficiency.cxx:728
 AliTRDefficiency.cxx:729
 AliTRDefficiency.cxx:730
 AliTRDefficiency.cxx:731
 AliTRDefficiency.cxx:732
 AliTRDefficiency.cxx:733
 AliTRDefficiency.cxx:734
 AliTRDefficiency.cxx:735
 AliTRDefficiency.cxx:736
 AliTRDefficiency.cxx:737
 AliTRDefficiency.cxx:738
 AliTRDefficiency.cxx:739
 AliTRDefficiency.cxx:740
 AliTRDefficiency.cxx:741
 AliTRDefficiency.cxx:742
 AliTRDefficiency.cxx:743
 AliTRDefficiency.cxx:744
 AliTRDefficiency.cxx:745
 AliTRDefficiency.cxx:746
 AliTRDefficiency.cxx:747
 AliTRDefficiency.cxx:748
 AliTRDefficiency.cxx:749
 AliTRDefficiency.cxx:750
 AliTRDefficiency.cxx:751
 AliTRDefficiency.cxx:752
 AliTRDefficiency.cxx:753
 AliTRDefficiency.cxx:754
 AliTRDefficiency.cxx:755
 AliTRDefficiency.cxx:756
 AliTRDefficiency.cxx:757
 AliTRDefficiency.cxx:758
 AliTRDefficiency.cxx:759
 AliTRDefficiency.cxx:760
 AliTRDefficiency.cxx:761
 AliTRDefficiency.cxx:762
 AliTRDefficiency.cxx:763
 AliTRDefficiency.cxx:764
 AliTRDefficiency.cxx:765
 AliTRDefficiency.cxx:766
 AliTRDefficiency.cxx:767
 AliTRDefficiency.cxx:768
 AliTRDefficiency.cxx:769
 AliTRDefficiency.cxx:770
 AliTRDefficiency.cxx:771
 AliTRDefficiency.cxx:772
 AliTRDefficiency.cxx:773
 AliTRDefficiency.cxx:774
 AliTRDefficiency.cxx:775
 AliTRDefficiency.cxx:776
 AliTRDefficiency.cxx:777
 AliTRDefficiency.cxx:778
 AliTRDefficiency.cxx:779
 AliTRDefficiency.cxx:780
 AliTRDefficiency.cxx:781
 AliTRDefficiency.cxx:782
 AliTRDefficiency.cxx:783
 AliTRDefficiency.cxx:784
 AliTRDefficiency.cxx:785
 AliTRDefficiency.cxx:786
 AliTRDefficiency.cxx:787
 AliTRDefficiency.cxx:788
 AliTRDefficiency.cxx:789
 AliTRDefficiency.cxx:790
 AliTRDefficiency.cxx:791
 AliTRDefficiency.cxx:792
 AliTRDefficiency.cxx:793
 AliTRDefficiency.cxx:794
 AliTRDefficiency.cxx:795
 AliTRDefficiency.cxx:796
 AliTRDefficiency.cxx:797
 AliTRDefficiency.cxx:798
 AliTRDefficiency.cxx:799
 AliTRDefficiency.cxx:800
 AliTRDefficiency.cxx:801
 AliTRDefficiency.cxx:802
 AliTRDefficiency.cxx:803
 AliTRDefficiency.cxx:804
 AliTRDefficiency.cxx:805
 AliTRDefficiency.cxx:806
 AliTRDefficiency.cxx:807
 AliTRDefficiency.cxx:808
 AliTRDefficiency.cxx:809
 AliTRDefficiency.cxx:810
 AliTRDefficiency.cxx:811
 AliTRDefficiency.cxx:812
 AliTRDefficiency.cxx:813
 AliTRDefficiency.cxx:814
 AliTRDefficiency.cxx:815
 AliTRDefficiency.cxx:816
 AliTRDefficiency.cxx:817
 AliTRDefficiency.cxx:818
 AliTRDefficiency.cxx:819
 AliTRDefficiency.cxx:820
 AliTRDefficiency.cxx:821
 AliTRDefficiency.cxx:822
 AliTRDefficiency.cxx:823
 AliTRDefficiency.cxx:824
 AliTRDefficiency.cxx:825
 AliTRDefficiency.cxx:826
 AliTRDefficiency.cxx:827
 AliTRDefficiency.cxx:828
 AliTRDefficiency.cxx:829
 AliTRDefficiency.cxx:830
 AliTRDefficiency.cxx:831
 AliTRDefficiency.cxx:832
 AliTRDefficiency.cxx:833
 AliTRDefficiency.cxx:834
 AliTRDefficiency.cxx:835
 AliTRDefficiency.cxx:836
 AliTRDefficiency.cxx:837
 AliTRDefficiency.cxx:838
 AliTRDefficiency.cxx:839
 AliTRDefficiency.cxx:840
 AliTRDefficiency.cxx:841
 AliTRDefficiency.cxx:842
 AliTRDefficiency.cxx:843
 AliTRDefficiency.cxx:844
 AliTRDefficiency.cxx:845
 AliTRDefficiency.cxx:846
 AliTRDefficiency.cxx:847
 AliTRDefficiency.cxx:848
 AliTRDefficiency.cxx:849
 AliTRDefficiency.cxx:850
 AliTRDefficiency.cxx:851
 AliTRDefficiency.cxx:852
 AliTRDefficiency.cxx:853
 AliTRDefficiency.cxx:854
 AliTRDefficiency.cxx:855
 AliTRDefficiency.cxx:856
 AliTRDefficiency.cxx:857
 AliTRDefficiency.cxx:858
 AliTRDefficiency.cxx:859
 AliTRDefficiency.cxx:860
 AliTRDefficiency.cxx:861
 AliTRDefficiency.cxx:862
 AliTRDefficiency.cxx:863
 AliTRDefficiency.cxx:864
 AliTRDefficiency.cxx:865
 AliTRDefficiency.cxx:866
 AliTRDefficiency.cxx:867