ROOT logo
/*************************************************************************
* Copyright(c) 1998-2009, 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.                  *
**************************************************************************/

//#####################################################
//#                                                   #
//#  Simple efficiency study for dielectrons          #
//#  Author: Jens Wiechula Jens.Wiechula@cern.ch      #
//#                                                   #
//#####################################################

#include <TParticle.h>
#include <TParticlePDG.h>
#include <TDatabasePDG.h>
#include <TROOT.h>
#include "TChain.h"
#include <TCanvas.h>
// #include "TTree.h"
#include <TH1.h>
#include <TH2F.h>
#include <THashList.h>

#include "AliAnalysisManager.h"

#include "AliESDInputHandler.h"
#include "AliMCEventHandler.h"
#include "AliMCEvent.h"
#include "AliVEvent.h"
#include "AliESDEvent.h"
#include "AliESDtrack.h"
#include "AliStack.h"
#include "AliKFParticle.h"
#include "AliESDtrackCuts.h"
#include "AliKineTrackCuts.h"
#include "AliLog.h"

#include "AliDielectronHistos.h"
#include "AliAnalysisTaskDielectronEfficiency.h"

ClassImp(AliAnalysisTaskDielectronEfficiency)


//=================================================================================
AliAnalysisTaskDielectronEfficiency::AliAnalysisTaskDielectronEfficiency() :
  AliAnalysisTask(),
  fInputEvent(0),
  fHist(0),
  fESDtrackCuts(0),
  fKineCutsLegs(0),
  fKineCutsMother(0),
  fIdMCMother(443),
  fIdMCDaughterP(-11),
  fIdMCDaughterN(11),
  fPDG(TDatabasePDG::Instance())
{
}

//=================================================================================
AliAnalysisTaskDielectronEfficiency::AliAnalysisTaskDielectronEfficiency(const char *name) :
  AliAnalysisTask(name,name),
  fInputEvent(0),
  fHist(0),
  fESDtrackCuts(new AliESDtrackCuts),
  fKineCutsLegs(new AliKineTrackCuts),
  fKineCutsMother(new AliKineTrackCuts),
  fIdMCMother(443),
  fIdMCDaughterP(-11),
  fIdMCDaughterN(11),
  fPDG(TDatabasePDG::Instance())
{
  //
  // named constructor. This is the one that should be used by the user, oterwise the
  // essential objects are not created!
  //
  DefineInput(0,TChain::Class());
  DefineOutput(0, THashList::Class());
}

//=================================================================================
AliAnalysisTaskDielectronEfficiency::~AliAnalysisTaskDielectronEfficiency()
{
  //
  // dtor
  //
  if (fESDtrackCuts)   delete fESDtrackCuts;
  if (fKineCutsLegs)   delete fKineCutsLegs;
  if (fKineCutsMother) delete fKineCutsMother;
}
//=================================================================================
void AliAnalysisTaskDielectronEfficiency::CreateOutputObjects() {
  //
  // Create histograms
  // Called once
  //

  //-------------------
  // MC truth produced
  fHist=new AliDielectronHistos;
  fHist->AddClass("MC;MCcut;DataSameMother;Event;DataCuts;DataTRDCuts");

  fHist->UserHistogram("MC",    "JpsiMCPt"  ,"MC Jpsi;Pt [GeV]"         ,100,0,10);
  fHist->UserHistogram("MC",    "mass"    ,"MC Jpsi; Inv.Mass [GeV]" ,100,0,4);
  fHist->UserHistogram("MC",    "e+Pt"    ,"MC e+ from JPsi;Pt [GeV]" ,100,0,10);
  fHist->UserHistogram("MC",    "e-Pt"    ,"MC e- from JPsi;Pt [GeV]" ,100,0,10);
  fHist->UserHistogram("MC", "dndyPt"      ,"MC Jpsi procution; Rapidity;Pt",100,-4,4,100,0,10);
  fHist->UserHistogram("MC","dndy"        ,"MC dNdy Jpsi;Rapidity;Entries/event"    ,100,-4,4);
  fHist->GetHistogram("MC","dndy")->Sumw2();

  //-------------------
  //MC truth after cuts
  fHist->UserHistogram("MCcut",    "JpsiMCPt"  ,"MC Jpsi;Pt [GeV]"         ,100,0,10);
  fHist->UserHistogram("MCcut",    "mass"    ,"MC Jpsi; Inv.Mass [GeV]" ,100,0,4);
  fHist->UserHistogram("MCcut",    "e+Pt"    ,"MC e+ from JPsi;Pt [GeV]" ,100,0,10);
  fHist->UserHistogram("MCcut",    "e-Pt"    ,"MC e- from JPsi;Pt [GeV]" ,100,0,10);
  fHist->UserHistogram("MCcut", "dndyPt"      ,"MC Jpsi procution; Rapidity;Pt",100,-4,4,100,0,10);
  fHist->UserHistogram("MCcut","dndy"        ,"MC dNdy Jpsi;Rapidity;Entries/event"    ,100,-4,4);
  fHist->GetHistogram("MCcut","dndy")->Sumw2();
  
  //-----------------
  //reconstructed data with cuts on MC truth
  fHist->UserHistogram("DataSameMother","JpsiMCPt","Rec Jpsi; MC Pt [GeV]", 100,0,10);
  fHist->UserHistogram("DataSameMother","dndyPtMC" ,"Rec Jpsi procution; Rapidity;Pt",100,-4,4,100,0,10);
  fHist->UserHistogram("DataSameMother", "e+Pt"   ,"Rec e+ from JPsi;MC Pt [GeV]" ,100,0,10);
  fHist->UserHistogram("DataSameMother", "e-Pt"   ,"Rec e- from JPsi;MC Pt [GeV]" ,100,0,10);
  fHist->UserHistogram("DataSameMother","dndy"    ,"Rec Jpsi;Rapidity;Entries/event"             ,100,-4,4);
  fHist->GetHistogram("DataSameMother","dndy")->Sumw2();
  
  fHist->UserHistogram("DataSameMother","mass"    ,"Rec Jpsi (KF); Inv.Mass [GeV]" ,100,0,4);
  fHist->UserHistogram("DataSameMother","JpsiPt"  ,"Rec Jpsi (KF); Pt [GeV]"       ,100,0,10);
  fHist->UserHistogram("DataSameMother","Chi2"    ,"Rec Jpsi (KF); #Chi^{2}"       ,100,0,50);
  fHist->UserHistogram("DataSameMother","dndyPt"   ,"Rec Jpsi procution (KF); Rapidity;Pt",100,-4,4,100,0,10);
  //------------------
  // reconstructed data after ESD track cuts and cuts on MC truth
  //------------------
  fHist->UserHistogram("DataCuts","JpsiMCPt","Rec Jpsi; MC Pt [GeV]", 100,0,10);
  fHist->UserHistogram("DataCuts","dndyPtMC" ,"Rec Jpsi procution; Rapidity;Pt",100,-4,4,100,0,10);
  fHist->UserHistogram("DataCuts", "e+Pt"   ,"Rec e+ from JPsi;MC Pt [GeV]" ,100,0,10);
  fHist->UserHistogram("DataCuts", "e-Pt"   ,"Rec e- from JPsi;MC Pt [GeV]" ,100,0,10);
  fHist->UserHistogram("DataCuts","dndy"    ,"Rec Jpsi;Rapidity;Entries/event"             ,100,-4,4);
  fHist->GetHistogram("DataCuts","dndy")->Sumw2();
  
  fHist->UserHistogram("DataCuts","mass"    ,"Rec Jpsi (KF); Inv.Mass [GeV]" ,100,0,4);
  fHist->UserHistogram("DataCuts","JpsiPt"  ,"Rec Jpsi (KF); Pt [GeV]"       ,100,0,10);
  fHist->UserHistogram("DataCuts","Chi2"    ,"Rec Jpsi (KF); #Chi^{2}"       ,100,0,50);
  fHist->UserHistogram("DataCuts","dndyPt"   ,"Rec Jpsi procution (KF); Rapidity;Pt",100,-4,4,100,0,10);
  //------------------
  // after ESD track cuts + TRD cuts + MC cuts
  //------------------
  fHist->UserHistogram("DataTRDCuts","JpsiMCPt","Rec Jpsi; MC Pt [GeV]", 100,0,10);
  fHist->UserHistogram("DataTRDCuts","dndyPtMC" ,"Rec Jpsi procution; Rapidity;Pt",100,-4,4,100,0,10);
  fHist->UserHistogram("DataTRDCuts", "e+Pt"   ,"Rec e+ from JPsi;MC Pt [GeV]" ,100,0,10);
  fHist->UserHistogram("DataTRDCuts", "e-Pt"   ,"Rec e- from JPsi;MC Pt [GeV]" ,100,0,10);
  fHist->UserHistogram("DataTRDCuts","dndy"    ,"Rec Jpsi;Rapidity;Entries/event"             ,100,-4,4);
  fHist->GetHistogram("DataTRDCuts","dndy")->Sumw2();
  
  fHist->UserHistogram("DataTRDCuts","mass"    ,"Rec Jpsi (KF); Inv.Mass [GeV]" ,100,0,4);
  fHist->UserHistogram("DataTRDCuts","JpsiPt"  ,"Rec Jpsi (KF); Pt [GeV]"       ,100,0,10);
  fHist->UserHistogram("DataTRDCuts","Chi2"    ,"Rec Jpsi (KF); #Chi^{2}"       ,100,0,50);
  fHist->UserHistogram("DataTRDCuts","dndyPt"   ,"Rec Jpsi procution (KF); Rapidity;Pt",100,-4,4,100,0,10);

  //-----------------
  //Event information
  //-----------------
  fHist->UserHistogram("Event","NEvents","Number of events",1,0,1);

}

// //____________________________________________________________
void AliAnalysisTaskDielectronEfficiency::ConnectInputData(Option_t *) {
  //
  // connect the input data
  //
  fInputEvent=0;
  TTree* tree=dynamic_cast<TTree*>(GetInputData(0));
  if (!tree) {
    printf("ERROR: Could not read chain from input slot 0\n");
  } else {
    AliInputEventHandler *eventH = dynamic_cast<AliInputEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
    if (!eventH) {
      AliError("Could not get ESDInputHandler");
    } else {
      fInputEvent = eventH->GetEvent();
      AliInfo("*** CONNECTED NEW EVENT ****");
    }
  }
}

//=================================================================================
void AliAnalysisTaskDielectronEfficiency::Exec(Option_t *) {
  //
  // Main loop. Called for every event
  // Process the event in FillPlots and post the data afterwards
  //
  if (!fInputEvent) {
    Printf("ERROR: Could not get input event\n");
    return;
  }

  FillPlots(fInputEvent);
  
  PostData(0, const_cast<THashList*>(fHist->GetHistogramList()));
}


//====================================================================================
void AliAnalysisTaskDielectronEfficiency::FillPlots(AliVEvent *event)
{
  //
  // Fill histograms
  //
  AliESDEvent *esd=dynamic_cast<AliESDEvent*>(event);
  if (!esd) return;
  Int_t ntrack=esd->GetNumberOfTracks();

  // Fetch Stack 
  AliMCEventHandler *mcH = (AliMCEventHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetMCtruthEventHandler());
  if(!mcH) {
    AliError("No MC handler found\n");
    return;
  }
  
  AliMCEvent *mcev=mcH->MCEvent();
  if (!mcev){
    AliError("No MC event found\n");
    return;
  }
  AliStack*  pStack = mcev->Stack();
  
  if (!pStack) return;

  //fill event info
  fHist->Fill("Event","NEvents",0);

  //fill MC histograms
  FillMCInfo(pStack);

  //
  Float_t massMother=0;
  if (fIdMCMother>-1) fPDG->GetParticle(fIdMCMother)->Mass();
  
  TLorentzVector v;
  //loop over all tracks
  for (Int_t itrack=0; itrack<ntrack; ++itrack){
    //negative particles only in this loop
    AliESDtrack *trackN=esd->GetTrack(itrack);
    if (trackN->Charge()!=-1) continue;

    //MC truth
    Int_t labelN=TMath::Abs(trackN->GetLabel());
    if (labelN<0) continue;
    TParticle *pN=pStack->Particle(labelN);
    Int_t pdgN=pN->GetPdgCode();

    //MC mother
    Int_t idMotherN=pN->GetFirstMother();
    TParticle *motherN=0;
    Int_t pdgMotherN=-1;
    if (fIdMCMother>-1&&idMotherN>-1){
      motherN=pStack->Particle(idMotherN);
      pdgMotherN=motherN->GetPdgCode();
    }
    
    for (Int_t itrack2=0; itrack2<ntrack; ++itrack2){
      //positive particles only in this loop
      AliESDtrack *trackP=esd->GetTrack(itrack2);
      if (trackP->Charge()!=1) continue;
      
      //MC truth
      Int_t labelP=TMath::Abs(trackP->GetLabel());
      if (labelP<0) continue;
      TParticle *pP=pStack->Particle(labelP);
      //       Int_t pdgP=pP->GetPdgCode();

      //MC mother
      Int_t idMotherP=pP->GetFirstMother();
//       TParticle *motherP=0;
      //       Int_t pdgMotherP=0;
      if (idMotherP>-1){
//         motherP=pStack->Particle(idMotherP);
      //       pdgMotherP=motherP->GetPdgCode();
      }
      //===============
      //Fill histograms
      //===============
      Bool_t motherOK=kFALSE;
      if (fIdMCMother==-1) motherOK=kTRUE;
      else if (pdgMotherN==fIdMCMother) motherOK=kTRUE;

      if (pdgN==fIdMCDaughterN && motherOK){ //electron and mother is fIdMCMother
        AliKFParticle electron(*trackN,11);
        AliKFParticle positron(*trackP,-11);
        AliKFParticle jpsi(electron);
        jpsi+=positron;

        Bool_t sameMother=kFALSE;
        Bool_t motherCutOK=kFALSE;

        if (fIdMCMother==-1) {
          //accept as same mother if we don't requite
          sameMother=kTRUE;
          motherCutOK=kTRUE;
        }
        else
        {
          if (idMotherN==idMotherP) sameMother=kTRUE;
          if (fKineCutsMother->IsSelected(motherN)) motherCutOK=kTRUE;
        }

        if ( sameMother  &&  // same mother
             motherCutOK && //cuts mother MC truth
            fKineCutsLegs->IsSelected(pN) && fKineCutsLegs->IsSelected(pP)){ //cuts legs MC truth

          //MC only data
          if (motherN){
            fHist->Fill("DataSameMother","JpsiMCPt",motherN->Pt());
            fHist->Fill("DataSameMother","e+Pt",pP->Pt());
            fHist->Fill("DataSameMother","e-Pt",pN->Pt());
            v.SetPxPyPzE(motherN->Px(),motherN->Py(),motherN->Pz(),motherN->Energy());
            fHist->Fill("DataSameMother","dndy",v.Rapidity());
            fHist->Fill("DataSameMother","dndyPtMC",v.Rapidity(),motherN->Pt());
          }

          //reconstructed data
          v.SetPtEtaPhiM(jpsi.GetPt(),jpsi.GetEta(),jpsi.GetPhi(),massMother);
//           printf("Jpsi: %f,%f,%f,%f\n",jpsi.GetPt(),jpsi.GetEta(),jpsi.GetPhi(),massMother);
          fHist->Fill("DataSameMother","JpsiPt",jpsi.GetPt());
          fHist->Fill("DataSameMother","Chi2",jpsi.GetChi2()/jpsi.GetNDF());
          fHist->Fill("DataSameMother","mass",jpsi.GetMass());
          fHist->Fill("DataSameMother","dndyPt",v.Rapidity(),jpsi.GetPt());

          //histograms after ESD cuts
          if (fESDtrackCuts->IsSelected(trackN)&&fESDtrackCuts->IsSelected(trackP)){
            //MC only
            if (motherN) {
              fHist->Fill("DataCuts","JpsiMCPt",motherN->Pt());
              fHist->Fill("DataCuts","e+Pt",pP->Pt());
              fHist->Fill("DataCuts","e-Pt",pN->Pt());
              v.SetPxPyPzE(motherN->Px(),motherN->Py(),motherN->Pz(),motherN->Energy());
              fHist->Fill("DataCuts","dndy",v.Rapidity());
              fHist->Fill("DataCuts","dndyPtMC",motherN->Eta(),motherN->Pt());
            }

          //reconstructed data
            v.SetPtEtaPhiM(jpsi.GetPt(),jpsi.GetEta(),jpsi.GetPhi(),massMother);
            fHist->Fill("DataCuts","JpsiPt",jpsi.GetPt());
            fHist->Fill("DataCuts","Chi2",jpsi.GetChi2()/jpsi.GetNDF());
            fHist->Fill("DataCuts","mass",jpsi.GetMass());
            fHist->Fill("DataCuts","dndyPt",v.Rapidity(),jpsi.GetPt());

            //Additional TRD cuts
            if ( ((trackN->GetStatus()&AliESDtrack::kTRDrefit)!=0) && trackN->GetTRDntrackletsPID()>4 ){
              if ( ((trackP->GetStatus()&AliESDtrack::kTRDrefit)!=0) && trackP->GetTRDntrackletsPID()>4 ){
                if (motherN){
                  fHist->Fill("DataTRDCuts","JpsiMCPt",motherN->Pt());
                  fHist->Fill("DataTRDCuts","e+Pt",pP->Pt());
                  fHist->Fill("DataTRDCuts","e-Pt",pN->Pt());
                  v.SetPxPyPzE(motherN->Px(),motherN->Py(),motherN->Pz(),motherN->Energy());
                  fHist->Fill("DataTRDCuts","dndy",v.Rapidity());
                  fHist->Fill("DataTRDCuts","dndyPtMC",v.Rapidity(),motherN->Pt());
                }
                
                //reconstructed data
                v.SetPtEtaPhiM(jpsi.GetPt(),jpsi.GetEta(),jpsi.GetPhi(),massMother);
                fHist->Fill("DataTRDCuts","JpsiPt",jpsi.GetPt());
                fHist->Fill("DataTRDCuts","Chi2",jpsi.GetChi2()/jpsi.GetNDF());
                fHist->Fill("DataTRDCuts","mass",jpsi.GetMass());
                fHist->Fill("DataTRDCuts","dndyPt",v.Rapidity(),jpsi.GetPt());
              }
            }
          }
        }
      }
    }
  }
}

//____________________________________________________________
// Int_t AliAnalysisTaskDielectronEfficiency::Merge(TList *list)
// {
//   //
//   // Merge function
//   //
//   if (!list) return 0;
//   if (list->IsEmpty()) return 1;
// 
//   TIter next(list);
//   while ( (TObject *o=next()) ){
//     AliAnalysisTaskDielectronEfficiency *task=dynamic_cast<AliAnalysisTaskDielectronEfficiency*>o;
//     if (!o) continue;
//     fNev+=task->fNev;
//   }
// }


void AliAnalysisTaskDielectronEfficiency::FillMCInfo(AliStack * const pStack)
{
  //
  // fill pure MC histograms
  //
  
  TLorentzVector v;
  //Fill MC info
  for (Int_t ipart=0; ipart<pStack->GetNtrack(); ++ipart){
    TParticle *part=pStack->Particle(ipart);
//     printf("Particle %d\n",part->GetPdgCode());
    if (part->GetPdgCode()!=fIdMCMother || part->GetNDaughters()!=2) continue;
    TParticle *d1=pStack->Particle(part->GetFirstDaughter());
    TParticle *d2=pStack->Particle(part->GetLastDaughter());
    TParticle *dP=0;
    TParticle *dN=0;
    if (fPDG->GetParticle(d1->GetPdgCode())->Charge()>0){
      dP=d1;
      dN=d2;
    }else{
      dP=d2;
      dN=d1;
    }
    if ( dP->GetPdgCode()!=fIdMCDaughterP || dN->GetPdgCode()!=fIdMCDaughterN ) continue;
    v.SetPxPyPzE(part->Px(),part->Py(),part->Pz(),part->Energy());
    fHist->Fill("MC","JpsiMCPt",part->Pt());
    fHist->Fill("MC","dndy",v.Rapidity());
    fHist->Fill("MC","dndyPt",v.Rapidity(),part->Pt());
    fHist->Fill("MC","e-Pt",dN->Pt());
    fHist->Fill("MC","e+Pt",dP->Pt());
    //e+ e- inv mass
    TLorentzVector vE;
    vE.SetPxPyPzE(dN->Px(),dN->Py(),dN->Pz(),dN->Energy());
    TLorentzVector vP;
    vP.SetPxPyPzE(dP->Px(),dP->Py(),dP->Pz(),dP->Energy());
    fHist->Fill("MC","mass",(vE+vP).M());


    //cuts
    if (!fKineCutsMother->IsSelected(part)) continue;
    if (!fKineCutsLegs->IsSelected(d1) || !fKineCutsLegs->IsSelected(d2) ) continue;
      
    v.SetPxPyPzE(part->Px(),part->Py(),part->Pz(),part->Energy());
    fHist->Fill("MCcut","JpsiMCPt",part->Pt());
    fHist->Fill("MCcut","dndy",v.Rapidity());
    fHist->Fill("MCcut","dndyPt",v.Rapidity(),part->Pt());
    fHist->Fill("MCcut","e-Pt",dN->Pt());
    fHist->Fill("MCcut","e+Pt",dP->Pt());
  }
}
void AliAnalysisTaskDielectronEfficiency::SetupDefaultCuts(Int_t type)
{
  //
  // setup standard ESD track cuts
  //

  if (type==0){
    //ESD cuts
    fESDtrackCuts->SetMaxDCAToVertexZ(3.0);
    fESDtrackCuts->SetMaxDCAToVertexXY(3.0);
    fESDtrackCuts->SetRequireTPCRefit(kTRUE);
    fESDtrackCuts->SetRequireITSRefit(kTRUE);
    fESDtrackCuts->SetAcceptKinkDaughters(kFALSE);
    fESDtrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
    
    fESDtrackCuts->SetMinNClustersTPC(50);
    fESDtrackCuts->SetMaxChi2PerClusterTPC(4);

    //MC cuts
    fKineCutsLegs->SetEtaRange(-0.9,0.9);
    fKineCutsMother->SetRapRange(-0.9,0.9);
  } else if (type==1) {
//     fESDtrackCuts->SetMaxCovDiagonalElements(2, 2, .5, .5, 2);
    fESDtrackCuts->SetMaxDCAToVertexZ(3.0);
    fESDtrackCuts->SetMaxDCAToVertexXY(3.0);
    fESDtrackCuts->SetRequireTPCRefit(kTRUE);
    fESDtrackCuts->SetRequireITSRefit(kTRUE);
    fESDtrackCuts->SetAcceptKinkDaughters(kFALSE);
    fESDtrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
    
    fESDtrackCuts->SetMinNClustersTPC(50);
    fESDtrackCuts->SetMaxChi2PerClusterTPC(4);
    
    //MC cuts
//     fKineCutsLegs->SetEtaRange(-0.9,0.9);
//     fKineCutsMother->SetRapRange(-0.9,0.9);
    
  }
}

//===================================================================================
void AliAnalysisTaskDielectronEfficiency::Terminate(Option_t *) {
  //
  // Called once at the end of the query
  //

  
  AliDielectronHistos *hist=new AliDielectronHistos;
  hist->SetHistogramList(*(THashList*)GetOutputData(0));
  
  if (hist->GetHistogram("Event","NEvents")){
    //get number of events
    Double_t nev=hist->GetHistogram("Event","NEvents")->GetBinContent(1);
    //
    //normalise dndy histograms
    //
    hist->GetHistogram("DataSameMother","dndy")->Scale(1./nev);
    hist->GetHistogram("MC","dndy")->Scale(1./nev);
    hist->GetHistogram("DataCuts","dndy")->Scale(1./nev);
    hist->GetHistogram("DataTRDCuts","dndy")->Scale(1./nev);

    //
    // create the efficiency histograms
    //
    // hEffTracking/2D only tracking effects, no esd cuts
    // hEffESDCuts  tracking plus ESD cuts
    // hEffTRDCuts  tracking plus ESD plus TRD cuts
    //
    TH1F *hEffTracking=(TH1F*)hist->GetHistogram("DataSameMother","JpsiMCPt")->Clone("Efficiency");
    hEffTracking->Divide(hist->GetHistogram("MCcut","JpsiMCPt"));
    hEffTracking->SetTitle("Efficiencies");
    hist->UserHistogram("DataSameMother",hEffTracking);
    
    TH1F *hEffESDCuts=(TH1F*)hist->GetHistogram("DataCuts","JpsiMCPt")->Clone("Efficiency");
    hEffESDCuts->Divide(hist->GetHistogram("MCcut","JpsiMCPt"));
    hEffTracking->SetTitle("Efficiencies");
    hist->UserHistogram("DataCuts",hEffESDCuts);
    
    TH1F *hEffTRDCuts=(TH1F*)hist->GetHistogram("DataTRDCuts","JpsiMCPt")->Clone("Efficiency");
    hEffTRDCuts->Divide(hist->GetHistogram("MCcut","JpsiMCPt"));
    hEffTRDCuts->SetTitle("Efficiencies");
    hist->UserHistogram("DataTRDCuts",hEffTRDCuts);
    
    hist->DrawSame("Efficiency");

    //2D efficiencies
    TH2F *hEffTracking2D=(TH2F*)hist->GetHistogram("DataSameMother","dndyPtMC")->Clone("2DEfficiency");
    hEffTracking2D->Divide(hist->GetHistogram("MCcut","dndyPt"));
    hEffTracking2D->SetTitle("2D Efficiency - tracking");
    hist->UserHistogram("DataSameMother",hEffTracking2D);

    TH2F *hEffESDCuts2D=(TH2F*)hist->GetHistogram("DataCuts","dndyPtMC")->Clone("2DEfficiency");
    hEffESDCuts2D->Divide(hist->GetHistogram("MCcut","dndyPt"));
    hEffESDCuts2D->SetTitle("2D Efficiency - quality cuts");
    hist->UserHistogram("DataCuts",hEffESDCuts2D);
    
    TH2F *hEffTRDCuts2D=(TH2F*)hist->GetHistogram("DataTRDCuts","dndyPtMC")->Clone("2DEfficiency");
    hEffTRDCuts2D->Divide(hist->GetHistogram("MCcut","dndyPt"));
    hEffTRDCuts2D->SetTitle("2D Efficiency - quality+TRD cuts");
    hist->UserHistogram("DataTRDCuts",hEffTRDCuts2D);
    
//
    // Draw all histograms of all histogram classes
    // Use the Draw functionality of AliDielectronHistos
    //
    hist->Draw();
    
    //
    // Draw all histograms with the same name of all classes into one canvas
    // Use the Draw functionality of AliDielectronHistos
    //
    hist->DrawSame("JpsiMCPt");
  }

  PostData(0, const_cast<THashList*>(hist->GetHistogramList()));
}

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