#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;
Float_t AliTRDefficiencyMC::fgPhiCut = 50.;
Float_t AliTRDefficiencyMC::fgThtCut = 50.;
AliTRDefficiencyMC::AliTRDefficiencyMC()
:AliTRDrecoTask()
{
}
AliTRDefficiencyMC::AliTRDefficiencyMC(char* name)
:AliTRDrecoTask(name, "Combined Tracking Efficiency")
{
}
void AliTRDefficiencyMC::UserCreateOutputObjects(){
fContainer = Histos();
PostData(1, fContainer);
}
void AliTRDefficiencyMC::UserExec(Option_t *){
const Int_t kArraySize = 10000;
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));
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()){
AliDebug(2, Form("MC(Track Reference) missing @ label[%d]", trkInf->GetLabel()));
isContamination = kTRUE;
if(trkInf && DebugLevel()>5) FillStreamTrackWOMC(trkInf);
}
if(isContamination){
if(trkInf->GetKinkIndex()){
AliDebug(4, Form(" track @ idx[%d] MC[%d] is kink.", itinf, trkInf->GetLabel()));
nkink++;
continue;
}
AliDebug(4, Form(" track @ idx[%d] MC[%d] is contamination.", itinf, trkInf->GetLabel()));
indexContam[ncontam++]=itinf;
continue;
}
AliDebug(4, Form(" track @ idx[%d] is ACCEPTED.", itinf));
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 {
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)));
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{
}
}
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()
{
fNRefFigures = 8;
return kTRUE;
}
Bool_t AliTRDefficiencyMC::GetRefFigure(Int_t ifig){
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(){
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){
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));
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();
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";
}
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;
}
return kFindable;
}
void AliTRDefficiencyMC::FillHistograms(Int_t nTracks, Int_t *indices, ETRDefficiencyMCstatus mode){
TDatabasePDG *dbPDG(TDatabasePDG::Instance());
Double_t trkmom(0.);
Int_t trkpdg(-1);
AliTRDtrackInfo *trkInf(NULL);
for(Int_t itk = 0; itk < nTracks; itk++){
if(!(trkInf = dynamic_cast<AliTRDtrackInfo *>(fTracks->At(indices[itk])))) continue;
if(trkInf->GetNTrackRefs()){
trkmom = trkInf->GetTrackRef(0)->P();
trkpdg = trkInf->GetPDG();
}else{
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));
Int_t idxSpec = AliTRDpidUtil::Pdg2Pid(TMath::Abs(trkpdg));
Int_t sign = dbPDG->GetParticle(trkpdg)->Charge() > 0. ? 1 : 0;
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){
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];
Int_t sortlabels[360];
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);
}
AliMathBase::Freq(nclusters, const_cast<const Int_t *>(&labelsTRD[0]), &sortlabels[0], kTRUE);
Int_t labelTRD = sortlabels[0];
Int_t freqTRD = sortlabels[1];
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){
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){
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: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