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: AliTRDefficiencyMC.cxx 27496 2008-07-22 08:35:45Z cblume $ */

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

#include <TObjArray.h>
#include <TClonesArray.h>
#include <TPad.h>
#include <TLegend.h>
#include <TProfile.h>
#include <TMath.h>
#include <TDatabasePDG.h>
#include "TTreeStream.h"

#include "AliMagF.h"
#include "AliPID.h"
#include "AliESDtrack.h"
#include "AliMathBase.h"
#include "AliTrackReference.h"
#include "AliAnalysisManager.h"

#include "AliTRDcluster.h"
#include "AliTRDseedV1.h"
#include "AliTRDtrackV1.h"
#include "AliTRDpidUtil.h"
#include "Cal/AliTRDCalPID.h"
#include "info/AliTRDtrackInfo.h"
#include "AliTRDinfoGen.h"
#include "AliTRDefficiencyMC.h"

ClassImp(AliTRDefficiencyMC)
Float_t AliTRDefficiencyMC::fgPCut   = 0.2; //[GeV/c]
Float_t AliTRDefficiencyMC::fgPhiCut = 50.; //[deg]
Float_t AliTRDefficiencyMC::fgThtCut = 50.; //[deg]
//_____________________________________________________________________________
AliTRDefficiencyMC::AliTRDefficiencyMC()
  :AliTRDrecoTask()
{
  //
  // Default constructor
  //
}

AliTRDefficiencyMC::AliTRDefficiencyMC(char* name)
  :AliTRDrecoTask(name, "Combined Tracking Efficiency")
{
  //
  // Default constructor
  //
}

//_____________________________________________________________________________
void AliTRDefficiencyMC::UserCreateOutputObjects(){
  //
  // Create output objects
  //

  fContainer = Histos();
  PostData(1, fContainer);
}

//_____________________________________________________________________________
void AliTRDefficiencyMC::UserExec(Option_t *){
  //
  // Execute the task:
  //
  // Loop over TrackInfos
  // 1st: check if there is a trackTRD
  // 2nd: put conditions on the track:
  //      - check if we did not register it before
  //      - check if we have Track References for the track 
  // 3rd: Register track:
  //      - accepted if both conditions are fulfilled
  //      - contamination if at least one condition is not fulfilled
  // 4th: check Monte-Carlo Track wheter findable or not if there is no TRD track in this track info
  // 5th: register MC track as rejected if findable and not jet registered
  // Match the registers accepted and rejected and clean register rejected
  // Fill the histograms
  //
  const Int_t kArraySize = 10000;     // Store indices of track references in an array
  Int_t indexAccept[kArraySize],
        indexReject[kArraySize],
        indexContam[kArraySize];
  memset(indexAccept, 0, sizeof(Int_t) * kArraySize);
  memset(indexReject, 0, sizeof(Int_t) * kArraySize);
  memset(indexContam, 0, sizeof(Int_t) * kArraySize);
  Int_t naccept(0), 
        nreject(0), 
        nfindnt(0), 
        nkink(0), 
        ncontam(0);
  Bool_t isContamination = kFALSE;
  
  fTracks = dynamic_cast<TObjArray *>(GetInputData(1));
  if(!fTracks) return;
  Int_t nTrackInfos = fTracks->GetEntriesFast();
  AliDebug(2, Form("   CANDIDATE TRACKS[%d]", nTrackInfos));

  //AliTRDtrackV1 *trackTRD(NULL);
  AliTRDtrackInfo *trkInf(NULL);
  for(Int_t itinf = 0; itinf < nTrackInfos; itinf++){
    trkInf = dynamic_cast<AliTRDtrackInfo *>(fTracks->UncheckedAt(itinf));
    if(!trkInf) continue;

    if(trkInf->GetTrack() || trkInf->GetNumberOfClustersRefit()){
      isContamination = (IsRegistered(trkInf,indexAccept,naccept)>=0);
      if(!trkInf->GetNTrackRefs()){
        // We reject the track since the Monte Carlo Information is missing
        AliDebug(2, Form("MC(Track Reference) missing @ label[%d]", trkInf->GetLabel()));
        isContamination = kTRUE;
        // Debugging
        if(trkInf && DebugLevel()>5) FillStreamTrackWOMC(trkInf);
      }
      if(isContamination){
        // reject kink (we count these only once)
        if(trkInf->GetKinkIndex()){ 
          AliDebug(4, Form("  track @ idx[%d] MC[%d] is kink.", itinf, trkInf->GetLabel()));
          nkink++;
          continue;
        }
        // Register track as contamination
        AliDebug(4, Form("  track @ idx[%d] MC[%d] is contamination.", itinf, trkInf->GetLabel()));
        indexContam[ncontam++]=itinf;
        continue;
      }
      // Accept track
      AliDebug(4, Form("  track @ idx[%d] is ACCEPTED.", itinf));
      // Register track as accepted
      indexAccept[naccept++] = itinf;
    }else{
      Int_t code(0);
      if((code=IsFindableNot(trkInf))){
        AliDebug(4, Form("  track @ idx[%d] MC[%d] not findable [%d].", itinf, trkInf->GetLabel(), code));
        nfindnt++;
      } else {
        // register track as rejected if not already registered there
        // Attention:
        // These track infos are not!!! registered as contamination
        if(IsRegistered(trkInf, indexReject, nreject)<0){ 
          AliDebug(4, Form("  track @ idx[%d] MC[%d] is missed.", itinf, trkInf->GetLabel()));
          indexReject[nreject++] = itinf;
        }
      }
    }
  }
  AliDebug(2, Form("TRACKS STATISTICS naccept[%d] ncontam[%d] nkink[%d] nmissed[%d] nfindnt[%d] ALL[%d] LOST[%d]", naccept, ncontam, nkink, nreject, nfindnt, naccept+ncontam+nkink, nTrackInfos-(naccept+nreject+ncontam+nkink+nfindnt)));

  // we have to check if the rejected tracks are registered as found
  // a possible source for this:
  // first the track is not found by the barrel tracking but it is later found
  // by the stand alone tracking, then two track info objects with the same 
  // label would be created
  // Attention:
  // these tracks are not! registered as contamination
  Int_t tmprejected[kArraySize]; Int_t nrej = nreject;
  memcpy(tmprejected, indexReject, sizeof(Int_t) * nreject);
  nreject = 0;
  for(Int_t irej = 0; irej < nrej; irej++){
    if(!(trkInf = dynamic_cast<AliTRDtrackInfo *>(fTracks->At(tmprejected[irej])))) continue;
    Int_t idx(-1);
    if((idx = IsRegistered(trkInf,indexAccept,naccept))<0){
      indexReject[nreject++] = tmprejected[irej];
    }else{
      //printf("tracks @ accept[%d] missed[%d] are the same.\n", indexAccept[idx], tmprejected[irej]);
    }
  }

  // Fill Histograms
  FillHistograms(naccept, &indexAccept[0], kAccept);
  FillHistograms(nreject, &indexReject[0], kMiss);
  FillHistograms(ncontam, &indexContam[0], kFake);

  Int_t nall(naccept + nreject);
  AliInfo(Form("%3d Tracks: MC[%3d] TRD[%3d | %5.2f%%] Fake[%3d | %5.2f%%]", 
    (Int_t)AliAnalysisManager::GetAnalysisManager()->GetCurrentEntry(), 
    nall, 
    naccept, 
    (nall ? 1.E2*Float_t(naccept)/Float_t(nall) : 0.), 
    ncontam, 
    (nall ? 1.E2*Float_t(ncontam)/Float_t(nall) : 0.)));
}


//_____________________________________________________________________________
Bool_t AliTRDefficiencyMC::PostProcess()
{
  //
  // Post Process 
  //
  // Change the histogram style
  // For species histograms apply the colors connected with the given particle species
  fNRefFigures = 8;
  return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliTRDefficiencyMC::GetRefFigure(Int_t ifig){
  //
  // Plot the histograms
  //
  if(ifig >= fNRefFigures) return kFALSE;
  if(!gPad) return kFALSE;
  gPad->SetLogx(kTRUE);
  TH1 *h(NULL);
  if(ifig < 2){
    if(!(h = (dynamic_cast<TH1 *>(fContainer->At(ifig))))) return kFALSE;
    h->Draw("e1");
    return kTRUE;
  }
  TLegend *leg=new TLegend(.65, .12, .85, .3);
  leg->SetHeader("Charge");
  leg->SetBorderSize(1);leg->SetFillColor(kWhite);
  switch(ifig){
  case 2:
    if(!(h=dynamic_cast<TH1 *>(fContainer->At(kEfficiencySpeciesHistogram)))) return kFALSE;;
    h->Draw("e1"); leg->AddEntry(h, "  -", "pl");
    if(!(h=dynamic_cast<TH1 *>(fContainer->At(kEfficiencySpeciesHistogram+1)))) return kFALSE;;
    h->Draw("e1same"); leg->AddEntry(h, "  +", "pl");
    leg->Draw();
    break;
  case 3:
    if(!(h=dynamic_cast<TH1 *>(fContainer->At(kEfficiencySpeciesHistogram+2)))) return kFALSE;;
    h->Draw("e1"); leg->AddEntry(h, "  -", "pl");
    if(!(h=dynamic_cast<TH1 *>(fContainer->At(kEfficiencySpeciesHistogram+3)))) return kFALSE;;
    h->Draw("e1same"); leg->AddEntry(h, "  +", "pl");
    leg->Draw();
    break;
  case 4:
    if(!(h=dynamic_cast<TH1 *>(fContainer->At(kEfficiencySpeciesHistogram+4)))) return kFALSE;;
    h->Draw("e1"); leg->AddEntry(h, "  -", "pl");
    if(!(h=dynamic_cast<TH1 *>(fContainer->At(kEfficiencySpeciesHistogram+5)))) return kFALSE;;
    h->Draw("e1same"); leg->AddEntry(h, "  +", "pl");
    leg->Draw();
    break;
  case 5:
    if(!(h=dynamic_cast<TH1 *>(fContainer->At(kEfficiencySpeciesHistogram+6)))) return kFALSE;;
    h->Draw("e1"); leg->AddEntry(h, "  -", "pl");
    if(!(h=dynamic_cast<TH1 *>(fContainer->At(kEfficiencySpeciesHistogram+7)))) return kFALSE;;
    h->Draw("e1same"); leg->AddEntry(h, "  +", "pl");
    leg->Draw();
    break;
  case 6:
    if(!(h=dynamic_cast<TH1 *>(fContainer->At(kEfficiencySpeciesHistogram+8)))) return kFALSE;;
    h->Draw("e1"); leg->AddEntry(h, "  -", "pl");
    if(!(h=dynamic_cast<TH1 *>(fContainer->At(kEfficiencySpeciesHistogram+9)))) return kFALSE;;
    h->Draw("e1same"); leg->AddEntry(h, "  +", "pl");
    leg->Draw();
    break;
  case 7:
    if(!(h=dynamic_cast<TH1 *>(fContainer->At(kEfficiencySpeciesHistogram+10)))) return kFALSE;;
    h->Draw("e1"); leg->AddEntry(h, "  -", "pl");
    if(!(h=dynamic_cast<TH1 *>(fContainer->At(kEfficiencySpeciesHistogram+11)))) return kFALSE;;
    h->Draw("e1same"); leg->AddEntry(h, "  +", "pl");
    leg->Draw();
    break;
  case 8:
    if(!(h=dynamic_cast<TH1 *>(fContainer->At(kEfficiencySpeciesHistogram+12)))) return kFALSE;;
    h->Draw("e1"); leg->AddEntry(h, "  -", "pl");
    if(!(h=dynamic_cast<TH1 *>(fContainer->At(kEfficiencySpeciesHistogram+13)))) return kFALSE;;
    h->Draw("e1same"); leg->AddEntry(h, "  +", "pl");
    leg->Draw();
    break;
  }
  return kTRUE;
}

//_____________________________________________________________________________
TObjArray *AliTRDefficiencyMC::Histos(){
  //
  // Create the histograms
  //

  if(fContainer) return fContainer;
  const Int_t nbins = AliTRDCalPID::kNMom;
  Float_t xbins[nbins+1] = {fgPCut, .7, .9, 1.3, 1.7, 2.4, 3.5, 4.5, 5.5, 7., 9., 11.};
  const Int_t marker[2][AliPID::kSPECIES+1] = {
    {20, 21, 22, 23, 29, 2},
    {24, 25, 26, 27, 30, 5}
  };

  fContainer = new TObjArray();fContainer->Expand(14);

  TH1 *h(NULL);
  fContainer->AddAt(h=new TProfile("hEff", "Tracking Efficiency ALL", nbins, xbins), kEfficiencyHistogram);
  h->SetMarkerStyle(22);
  h->SetMarkerColor(kBlue);
  h->GetXaxis()->SetTitle("p [GeV/c]");
  h->GetXaxis()->SetMoreLogLabels();
  h->GetYaxis()->SetTitle("Efficiency");
  h->GetYaxis()->SetRangeUser(0.2, 1.1);
  fContainer->AddAt(h=new TProfile("hFake", "Fake Tracks", nbins, xbins), kContaminationHistogram);
  h->SetMarkerStyle(22);
  h->SetMarkerColor(kBlue);
  h->GetXaxis()->SetTitle("p [GeV/c]");
  h->GetXaxis()->SetMoreLogLabels();
  h->GetYaxis()->SetTitle("Contamination");

  Char_t sign[]={'+', '-'};
  for(Int_t isign = 0; isign < 2; isign++){
    for(Int_t ispec = 0; ispec < AliPID::kSPECIES; ispec++){
      fContainer->AddAt(h=new TProfile(
        Form("hEff_%s%c", AliPID::ParticleShortName(ispec), sign[isign]), 
        Form("Tracking Efficiency for %s", AliPID::ParticleName(ispec)), nbins, xbins), 
        kEfficiencySpeciesHistogram+ispec*2+isign);
      h->SetMarkerStyle(marker[isign][ispec]);
      h->SetLineColor(AliTRDCalPID::GetPartColor(ispec));
      h->SetMarkerColor(kBlack);
      h->GetXaxis()->SetTitle("p [GeV/c]");
      h->GetXaxis()->SetMoreLogLabels();
      h->GetYaxis()->SetTitle("Efficiency");
      h->GetYaxis()->SetRangeUser(0.2, 1.1);
    }

    fContainer->AddAt(h=new TProfile(Form("hEff_PID%c", sign[isign]), "Tracking Efficiency no PID", nbins, xbins), kEfficiencySpeciesHistogram+AliPID::kSPECIES*2+isign);
    h->SetMarkerStyle(marker[isign][AliPID::kSPECIES]);
    h->SetMarkerColor(kBlack);h->SetLineColor(kBlack);
    h->GetXaxis()->SetTitle("p [GeV/c]");
    h->GetXaxis()->SetMoreLogLabels();
    h->GetYaxis()->SetTitle("Efficiency");
    h->GetYaxis()->SetRangeUser(0.2, 1.1);
  }
  return fContainer;
}

//_____________________________________________________________________________
Int_t AliTRDefficiencyMC::IsFindableNot(AliTRDtrackInfo * const trkInf){
  //
  // Apply Cuts on the Monte Carlo track references
  // return whether track is findable or not
  //
  

  const Float_t chmbHght = AliTRDgeometry::CamHght()+AliTRDgeometry::CdrHght();
  const Float_t eps(1.E-3);
  Int_t ntr(trkInf->GetNTrackRefs());

  AliDebug(10, Form("  CANDIDATE TrackRefs[%d]", ntr));
  // Check if track is findable
  Double_t mom(0.), phi(0.), tht(0.);
  Float_t xmin = 10000.0, xmax = 0.0; 
  Float_t ymin = 0.0, ymax = 0.0;
  Float_t zmin = 0.0, zmax = 0.0;
  Float_t lastx = 0.0, x = 0.0;
  Int_t nLayers(0), ntrTRD(0);
  Int_t sector[20];
  AliTrackReference *trackRef(NULL);
  for(Int_t itr(0); itr<ntr; itr++){
    if(!(trackRef = trkInf->GetTrackRef(itr))) continue;
    x = trackRef->LocalX(); 
    // Be Sure that we are inside TRD
    if(x < AliTRDinfoGen::GetEndTPC() || x > AliTRDinfoGen::GetEndTRD()) continue;	
    sector[ntrTRD] = Int_t(trackRef->Alpha()/AliTRDgeometry::GetAlpha());
    AliDebug(10, Form("    [%2d] x[%7.2f] y[%7.2f] z[%7.2f] Sec[%2d]", itr, trackRef->LocalX(), trackRef->LocalY(), trackRef->Z(), sector[ntrTRD]));
    if(x < xmin){
      xmin = trackRef->LocalX();
      ymin = trackRef->LocalY();
      zmin = trackRef->Z();
      mom  = trackRef->P();
    } else if(x > xmax){
      xmax = trackRef->LocalX();
      ymax = trackRef->LocalY();
      zmax = trackRef->Z();
    }
    if(itr > 0){
      Float_t dist = TMath::Abs(x - lastx);
      if(TMath::Abs(dist - chmbHght) < eps && sector[ntrTRD]==sector[0]){ 
        AliDebug(10, Form("    dx = %7.2f", dist));
        nLayers++;
      }
    }
    lastx = x;
    ntrTRD++; if(ntrTRD>=20) break;
  }
  Double_t dx(xmax - xmin);
  if(TMath::Abs(dx)<eps) return kNoChmb;

  phi = (ymax -ymin)/dx;
  tht = (zmax -zmin)/dx;
  phi=TMath::ATan(phi)*TMath::RadToDeg();
  tht=TMath::ATan(tht)*TMath::RadToDeg();
  Bool_t primary = trkInf->IsPrimary();
  const AliTRDtrackInfo::AliESDinfo *esd(trkInf->GetESDinfo());
  AliDebug(10, Form("    p=%6.3f[GeV/c] phi=%6.2f[deg] theta=%6.2f[deg] nLy[%d]", 
      mom, phi, tht, nLayers));
  if(DebugLevel()){
    (*DebugStream()) << "IsFindable"
      << "P="       << mom
      << "Phi="     << phi
      << "Tht="     << tht
      << "Ntr="     << ntrTRD
      << "NLy="     << nLayers
      << "Primary=" << primary
      << "\n";
  }

  // Apply cuts
  if(!nLayers) return kNoChmb;
  if(xmax < xmin) return kCurved;
  if(mom < fgPCut) return kPCut;


  if(TMath::Abs(phi) > fgPhiCut) return kPhiCut;
  if(TMath::Abs(tht) > fgThtCut) return kThtCut;

  if(nLayers < 4){
    if(!esd)return kLayer;
    if(!(esd->GetStatus() & AliESDtrack::kTPCout)) return kLayer;
  }

  //if(!trkInf->IsPrimary()) {failCode=kPrimary; return kFALSE;}

  return kFindable;
}

//_____________________________________________________________________________
void AliTRDefficiencyMC::FillHistograms(Int_t nTracks, Int_t *indices, ETRDefficiencyMCstatus mode){
  //
  // Fill Histograms in three different modes:
  // 1st tracks which are found and accepted
  // 2nd tracks which are not found and not already counted
  // 3rd contaminating tracks: either double counts (kinks!) or tracks with no MC hit inside TRD
  //
  
  TDatabasePDG *dbPDG(TDatabasePDG::Instance());
  Double_t trkmom(0.);   // the track momentum
  Int_t trkpdg(-1);      // particle PDG code
  AliTRDtrackInfo *trkInf(NULL);
  for(Int_t itk = 0; itk < nTracks; itk++){
    if(!(trkInf = dynamic_cast<AliTRDtrackInfo *>(fTracks->At(indices[itk])))) continue;
    if(trkInf->GetNTrackRefs()){
      // use Monte-Carlo Information for Momentum and PID
      trkmom = trkInf->GetTrackRef(0)->P();
      trkpdg = trkInf->GetPDG();
    }else{
      // Use TPC Momentum
      trkmom = trkInf->GetTrack()->P();
    }

    TProfile *hp(NULL);
    const Char_t *cmode(NULL);
    switch(mode){
      case kAccept:
        if(!(hp = (dynamic_cast<TProfile *>(fContainer->At(kEfficiencyHistogram))))) continue;
        hp->Fill(trkmom, 1);
        if(!(hp = ((dynamic_cast<TProfile *>(fContainer->At(kContaminationHistogram)))))) continue;
        hp->Fill(trkmom, 0);
        cmode="ACCEPT";
        break;
      case kMiss:
        if(!(hp = ((dynamic_cast<TProfile *>(fContainer->At(kEfficiencyHistogram)))))) continue;
        hp->Fill(trkmom, 0);
        if(!(hp = ((dynamic_cast<TProfile *>(fContainer->At(kContaminationHistogram)))))) continue;
        hp->Fill(trkmom, 0);
        cmode="MISS";
        break;
      case kFake:
        if(!(hp = ((dynamic_cast<TProfile *>(fContainer->At(kContaminationHistogram)))))) continue;
        hp->Fill(trkmom, 1);
        cmode="FAKE";
        break;
    }
    AliDebug(3, Form(" track[%d] MC[%d] Mode[%s]", indices[itk], trkInf->GetLabel(), cmode));

    // Fill species histogram
    Int_t idxSpec = AliTRDpidUtil::Pdg2Pid(TMath::Abs(trkpdg));
    Int_t sign = dbPDG->GetParticle(trkpdg)->Charge() > 0. ? 1 : 0;
    //printf("[%d]%s pdg[%d] sign[%d]\n", idxSpec, AliPID::ParticleName(idxSpec), trkpdg, sign);
    if(idxSpec < 0) idxSpec = AliPID::kSPECIES;
    if(!(hp = (dynamic_cast<TProfile *>(fContainer->At(kEfficiencySpeciesHistogram + idxSpec*2+sign))))) continue;
    hp->Fill(trkmom, mode==kAccept?1:0);
  }
}

//_____________________________________________________________________________
void AliTRDefficiencyMC::FillStreamTrackWOMC(AliTRDtrackInfo * const trkInf){
  // fill debug stream
  // we want to know:
  //  1. The event number
  //  2. The track label
  //  3. The TRD track label
  //  4. The frequency of the TRD Label
  //  5. Momentum from TPC (NO STAND ALONE TRACK)
  //  6. TPC Phi angle
  //  7. the TRD track
  //  8. Monte Carlo PID
  //  9. We check the Labels of the TRD track according to them we search the maching Monte-Carlo track.
  //     From the matching Monte-Carlo track we store trackRefs, phi and momentum
  // 10. We may also want to keep the kink index
  Double_t mom = trkInf->GetESDinfo()->GetOuterParam()->P();
  Int_t event = (Int_t)AliAnalysisManager::GetAnalysisManager()->GetCurrentEntry();
  Int_t label = trkInf->GetLabel();
  Int_t kinkIndex = trkInf->GetKinkIndex();
  Int_t pdg = trkInf->GetPDG();
  Double_t phiTPC = trkInf->GetESDinfo()->GetOuterParam()->Phi();
  Int_t labelsTRD[180];	// Container for the cluster labels
  Int_t sortlabels[360];	// Cluster Labels sorted according their occurancy
  AliTRDseedV1 *tracklet(NULL);
  AliTRDcluster *c(NULL);
  Int_t nclusters(0);
  AliTRDtrackV1 *trackTRD = trkInf->GetTrack();
  for(Int_t il = 0; il < AliTRDgeometry::kNlayer; il++){
    tracklet = trackTRD->GetTracklet(il);
    if(!tracklet) continue;
    tracklet->ResetClusterIter();
    c = NULL;
    while((c = tracklet->NextCluster())) labelsTRD[nclusters++] = c->GetLabel(0);
  }
  // Determine Label and Frequency
  AliMathBase::Freq(nclusters, const_cast<const Int_t *>(&labelsTRD[0]), &sortlabels[0], kTRUE);
  Int_t labelTRD = sortlabels[0];
  Int_t freqTRD = sortlabels[1];
  // find the track info object matching to the TRD track
  AliTRDtrackInfo *realtrack = 0;
  TObjArrayIter rtiter(fTracks);
  while((realtrack = (AliTRDtrackInfo *)rtiter())){
    if(realtrack->GetLabel() != labelTRD) continue;
    break;
  }
  TClonesArray trackRefs("AliTrackReference");
  Int_t realPdg = -1;
  Double_t realP = 0.;
  Double_t realPhi = 0.;
  if(realtrack){
    // pack the track references into the trackRefsContainer
    for(Int_t iref = 0; iref < realtrack->GetNTrackRefs(); iref++){
    new(trackRefs[iref])AliTrackReference(*(realtrack->GetTrackRef(iref)));
    }
    realPdg = realtrack->GetPDG();
    if(realtrack->GetNTrackRefs()){
      realP = realtrack->GetTrackRef(0)->P();
      realPhi = realtrack->GetTrackRef(0)->Phi();
    }
  }
  (*DebugStream()) << "EffMCfake"
    << "Event="	<< event
    << "Label=" << label
    << "labelTRD=" << labelTRD
    << "FreqTRDlabel=" << freqTRD
    << "TPCp="	<< mom
    << "phiTPC=" << phiTPC
    << "trackTRD=" << trackTRD
    << "PDG="	<< pdg
    << "TrackRefs=" << &trackRefs
    << "RealPDG=" << realPdg
    << "RealP="	<< realP
    << "RealPhi" << realPhi
    << "KinkIndex=" << kinkIndex
    << "\n";
}

//_____________________________________________________________________________
Int_t AliTRDefficiencyMC::IsRegistered(const AliTRDtrackInfo * const trkInf, Int_t *indices, Int_t nTracks){
  //
  // Checks if track is registered in a given mode
  //

  AliTRDtrackInfo *ti(NULL);
  Int_t label(trkInf->GetLabel());
  for(Int_t il(nTracks); il--;){
    if(!(ti = dynamic_cast<AliTRDtrackInfo *>(fTracks->At(indices[il])))) continue;
    if(ti->GetLabel() == label) return il;
  }
  return -1;
}

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