ROOT logo
#include "TCanvas.h"
#include "TParticle.h"
#include "TH1I.h"
#include <TDatabasePDG.h>

#include "AliAnalysisDataSlot.h"
#include "AliAnalysisDataContainer.h"
#include "AliAnalysisManager.h"
#include "AliAODEvent.h"
#include "AliAODMCParticle.h"
#include "AliAODTrack.h"
#include "AliAODTracklets.h"
#include "AliMultiplicity.h"
#include "AliCFManager.h"
#include "AliCFCutBase.h"
#include "AliCFContainer.h"
#include "AliESDEvent.h"
#include "AliESDtrack.h"
#include "AliESDtrackCuts.h"
#include "AliESDVertex.h"
#include "AliInputEventHandler.h"
#include "AliMCEvent.h"
#include "AliVEvent.h"
#include "AliAODEvent.h"
#include "AliVVertex.h"
#include "AliLog.h"
#include "AliStack.h"
#include "AliGenEventHeader.h"
#include "AliAODMCHeader.h"
#include "AliCentrality.h"

#include "AliSingleTrackEffCuts.h"
#include "AliCFSingleTrackEfficiencyTask.h"


ClassImp(AliCFSingleTrackEfficiencyTask)

//__________________________________________________________________________
AliCFSingleTrackEfficiencyTask::AliCFSingleTrackEfficiencyTask() :
  fReadAODData(0),
  fCFManager(0x0),
  fQAHistList(0x0),
  fTrackCuts(0x0),
  fMCCuts(0x0),
  fTriggerMask(AliVEvent::kAny),
  fSetFilterBit(kFALSE),
  fbit(0),
  fEvalCentrality(kFALSE),
  fCentralityEstimator("V0M"),
  fHistEventsProcessed(0x0)
{
  //
  //Default constructor
  //
}

//___________________________________________________________________________
AliCFSingleTrackEfficiencyTask::AliCFSingleTrackEfficiencyTask(const Char_t* name,AliESDtrackCuts *trackcuts, AliSingleTrackEffCuts * mccuts) :
  AliAnalysisTaskSE(name),
  fReadAODData(0),
  fCFManager(0x0),
  fQAHistList(0x0),
  fTrackCuts(trackcuts),
  fMCCuts(mccuts),
  fTriggerMask(AliVEvent::kAny),
  fSetFilterBit(kFALSE),
  fbit(0),
  fEvalCentrality(kFALSE),
  fCentralityEstimator("V0M"),
  fHistEventsProcessed(0x0)
{
  //
  // Constructor. Initialization of Inputs and Outputs
  //
  Info("AliCFSingleTrackEfficiencyTask","Calling Constructor");

  // Output slot #1 writes into a TList container (nevents histogran)
  DefineOutput(1,TH1I::Class());
  // Output slot #2 writes into a TList container (distributions)
  DefineOutput(2,AliCFContainer::Class());
  // Output slot #3 writes the QA list
  DefineOutput(3,TList::Class());
  // Output slot #3 writes the ESD track cuts used
  DefineOutput(4,AliESDtrackCuts::Class());
  // Output slot #4 writes the particle and event selection object
  DefineOutput(5,AliSingleTrackEffCuts::Class());
}

//_________________________________________________________________________________________________________________
AliCFSingleTrackEfficiencyTask& AliCFSingleTrackEfficiencyTask::operator=(const AliCFSingleTrackEfficiencyTask& c) 
{
  //
  // Assignment operator
  //
  if (this!=&c) {
    AliAnalysisTaskSE::operator=(c) ;

    fReadAODData = c.fReadAODData;
    fCFManager  = c.fCFManager;
    fQAHistList = c.fQAHistList;

    if(c.fTrackCuts) { delete fTrackCuts; fTrackCuts = new AliESDtrackCuts(*(c.fTrackCuts)); }
    if(c.fMCCuts) { delete fMCCuts; fMCCuts = new AliSingleTrackEffCuts(*(c.fMCCuts)); }
    fTriggerMask = c.fTriggerMask;

    fSetFilterBit  = c.fSetFilterBit;
    fbit = c.fbit;

    fEvalCentrality = c.fEvalCentrality;
    fCentralityEstimator = c.fCentralityEstimator;

    fHistEventsProcessed = c.fHistEventsProcessed;
  }
  return *this;
}

//________________________________________________________________________________________________________
AliCFSingleTrackEfficiencyTask::AliCFSingleTrackEfficiencyTask(const AliCFSingleTrackEfficiencyTask& c) :
  AliAnalysisTaskSE(c),
  fReadAODData(c.fReadAODData),
  fCFManager(c.fCFManager),
  fQAHistList(c.fQAHistList),
  fTrackCuts(c.fTrackCuts),
  fMCCuts(c.fMCCuts),
  fTriggerMask(c.fTriggerMask),
  fSetFilterBit(c.fSetFilterBit),
  fbit(c.fbit),
  fEvalCentrality(c.fEvalCentrality),
  fCentralityEstimator(c.fCentralityEstimator),
  fHistEventsProcessed(c.fHistEventsProcessed)
{
  //
  // Copy Constructor
  //
}

//___________________________________________________________________________
AliCFSingleTrackEfficiencyTask::~AliCFSingleTrackEfficiencyTask()
{
  //
  // Destructor
  //
  Info("~AliCFSingleTrackEfficiencyTask","Calling Destructor");

  if (fCFManager)           delete fCFManager;
  if (fHistEventsProcessed) delete fHistEventsProcessed;
  if (fQAHistList) { fQAHistList->Clear(); delete fQAHistList; }
  if (fTrackCuts)           delete fTrackCuts;
  if (fMCCuts)              delete fMCCuts;
}

//_________________________________________________
void AliCFSingleTrackEfficiencyTask::Init() 
{
  //
  // Initialization, checks + copy cuts
  //
  if(!fMCCuts) {
    AliFatal(" MC Cuts not defined");
    return;
  }
  if(!fTrackCuts) {
    AliFatal(" Track Cuts not defined");
    return;
  }

  AliESDtrackCuts* copyfTrackCuts = new AliESDtrackCuts(*fTrackCuts);
  const char* nameoutput = GetOutputSlot(4)->GetContainer()->GetName();
  copyfTrackCuts->SetName(nameoutput);
  // Post the data
  PostData(4,copyfTrackCuts);

  AliSingleTrackEffCuts* copyfMCCuts = new AliSingleTrackEffCuts(*fMCCuts);
  nameoutput = GetOutputSlot(5)->GetContainer()->GetName();
  copyfMCCuts->SetName(nameoutput);
  // Post the data
  PostData(5,copyfMCCuts);


  if(fEvalCentrality) {
    Bool_t isCentEstimatorOk = kFALSE;
    TString validEstimators[9] = { "V0M", "V0A", "V0C", "TRK", "TKL", "CL1", "ZNA", "ZNC" "ZPA" };
    for(Int_t i=0; i<9; i++ ) { 
      if(fCentralityEstimator==validEstimators[i]) isCentEstimatorOk = kTRUE; 
    }
    if(!isCentEstimatorOk) {
      AliFatal(Form("Chosen centrality estimator %s is not valid\n",fCentralityEstimator.Data()));
      return;
    }
  }

  return;
}

//_________________________________________________________________
void AliCFSingleTrackEfficiencyTask::UserExec(Option_t *)
{
  //
  // User Exec
  //

  Info("UserExec","Start of method") ;

  AliVEvent* event = fInputEvent;

  if(!fInputEvent) {
    AliFatal("NO EVENT FOUND!");
    return;
  }
  if(!fMCEvent) {
    AliFatal("NO MC INFO FOUND");
    return;
  }

  fHistEventsProcessed->Fill(0.5); // # of Event proceed        
  Bool_t IsEventMCSelected = kFALSE;
  Bool_t isAOD = fInputEvent->IsA()->InheritsFrom("AliAODEvent");

  //
  // Step 0: MC Gen Event Selection
  //
  if(isAOD) {
    if(!event && AODEvent() && IsStandardAOD()) {
      // In case there is an AOD handler writing a standard AOD, use the AOD 
      // event in memory rather than the input (ESD) event.    
      event = dynamic_cast<AliAODEvent*> (AODEvent());
    }
    IsEventMCSelected = fMCCuts->IsMCEventSelected(event);//AODs
  } else {
    IsEventMCSelected = fMCCuts->IsMCEventSelected(fMCEvent);//ESDs
  }

  // pass to the manager the event info to the cuts that need it 
  if(!isAOD) fCFManager->SetMCEventInfo(fMCEvent);
  else fCFManager->SetMCEventInfo(event);
  fCFManager->SetRecEventInfo(event);

  if(!IsEventMCSelected) {
    AliDebug(3,"MC event not passing the quality criteria \n");
    PostData(1,fHistEventsProcessed);
    PostData(2,fCFManager->GetParticleContainer());
    PostData(3,fQAHistList);
    return;
  }
  fHistEventsProcessed->Fill(1.5); // # of Event after passing MC cuts
       

  //
  // Step 1-3: Check the MC generated particles
  // 
  if(!isAOD) CheckESDMCParticles();
  else CheckAODMCParticles();

  //
  // Step 4-7: Reconstructed event and track selection
  //
  Bool_t isRecoEventOk = fMCCuts->IsRecoEventSelected(event);

  if(isRecoEventOk) {
    fHistEventsProcessed->Fill(2.5); // # of Event after passing all cuts
    CheckReconstructedParticles();
  }
  else AliDebug(3,"Event not passing quality criteria\n");


  PostData(1,fHistEventsProcessed);
  PostData(2,fCFManager->GetParticleContainer());
  PostData(3,fQAHistList);

  return;
}


//___________________________________________________________________________
void AliCFSingleTrackEfficiencyTask::Terminate(Option_t*)
{
  //
  // Terminate
  //

  Info("Terminate","Start and end of Method");
  AliAnalysisTaskSE::Terminate();

  /*
  //draw some example plots....
  AliCFContainer *cont= dynamic_cast<AliCFContainer*> (GetOutputData(2));
       
  TH1D* h00 =   cont->ShowProjection(5,0) ;
  TH1D* h01 =   cont->ShowProjection(5,1) ;
  TH1D* h02 =   cont->ShowProjection(5,2) ;
  TH1D* h03 =   cont->ShowProjection(5,3) ;
  TH1D* h04 =   cont->ShowProjection(5,4) ;
  TH1D* h05 =   cont->ShowProjection(5,5) ;
  TH1D* h06 =   cont->ShowProjection(5,6) ;
  TH1D* h07 =   cont->ShowProjection(5,7) ;
       
  h00->SetMarkerStyle(23) ;
  h01->SetMarkerStyle(24) ;
  h02->SetMarkerStyle(25) ;
  h03->SetMarkerStyle(26) ;
  h04->SetMarkerStyle(27) ;
  h05->SetMarkerStyle(28) ;
  h06->SetMarkerStyle(28) ;
       
       
       
  TCanvas * c =new TCanvas("c","",1400,800);
  c->Divide(4,2);
       
  c->cd(1);
  h00->Draw("p");
  c->cd(2);
  h01->Draw("p");
  c->cd(3);
  h02->Draw("p");
  c->cd(4);
  h03->Draw("p");
  c->cd(5);
  h04->Draw("p");
  c->cd(6);
  h05->Draw("p");
  c->cd(7);
  h06->Draw("p");
  c->cd(8);
  h07->Draw("p");
       
  c->SaveAs("plots.eps");
  */
}


//___________________________________________________________________________
void AliCFSingleTrackEfficiencyTask::UserCreateOutputObjects() 
{
  //
  // UserCreateOutputObjects
  //
  
  Info("CreateOutputObjects","CreateOutputObjects of task %s", GetName());

  //slot #1
  OpenFile(1);
       
  const char* nameoutput=GetOutputSlot(1)->GetContainer()->GetName();
  //       fHistEventsProcessed = new TH1I(nameoutput"fHistEventsProcessed","fHistEventsProcessed",3,0,3) ;
  fHistEventsProcessed = new TH1I(nameoutput,"fHistEventsProcessed",3,0,3) ;
  fHistEventsProcessed->GetXaxis()->SetBinLabel(1,"All events");
  fHistEventsProcessed->GetXaxis()->SetBinLabel(2,"Good MC events");
  fHistEventsProcessed->GetXaxis()->SetBinLabel(3,"Good Reconstructed events");
       
  PostData(1,fHistEventsProcessed) ;
  PostData(2,fCFManager->GetParticleContainer()) ;
  PostData(3,fQAHistList) ;
       
  return;
}


//_________________________________________________________________________
void AliCFSingleTrackEfficiencyTask::CheckESDMCParticles()
{
  //
  // Check ESD generated particles
  //
  if (!fMCEvent) {
    AliFatal("NO MC INFO FOUND");
    return;
  }

  Double_t containerInput[7] = { 0., 0., 0., 0., 0., 0., 0. };

  TArrayF vtxPos(3);
  AliGenEventHeader *genHeader = NULL;
  genHeader = fMCEvent->GenEventHeader();
  genHeader->PrimaryVertex(vtxPos);
  containerInput[4] = vtxPos[2]; // z-vtx position

  Double_t multiplicity = (Double_t)GetNumberOfTrackletsInEtaRange(-1.0,1.0);
  containerInput[5] = multiplicity; //reconstructed number of tracklets

  Double_t centrality = -1.;
  if(fEvalCentrality) centrality = GetCentrality();
  containerInput[6] = centrality;

  // loop on the MC Generated Particles
  for (Int_t ipart=0; ipart<fMCEvent->GetNumberOfTracks(); ipart++) {

    AliMCParticle *mcPart = (AliMCParticle*)fMCEvent->GetTrack(ipart);
    containerInput[0] = (Float_t)mcPart->Pt();
    containerInput[1] = mcPart->Eta();
    containerInput[2] = mcPart->Phi();
    containerInput[3] = mcPart->Theta();

    // Step 1. Particle passing through Generation criteria and filling
    if( !fMCCuts->IsMCParticleGenerated(mcPart) ) {
      AliDebug(3,"MC Particle not passing through genetations criteria\n");
      continue;
    }
    fCFManager->GetParticleContainer()->Fill(containerInput,kStepMCGenCut);

    // Step 2. Particle passing through Kinematic criteria and filling
    if( !fMCCuts->IsMCParticleInKineAcceptance(mcPart) ) {
      AliDebug(3,"MC Particle not in the kine acceptance\n");
      continue;
    }
    fCFManager->GetParticleContainer()->Fill(containerInput,kStepMCKineCut);

    // Step 3. Particle passing through Track ref criteria and filling
    // did leave signal (enough clusters) on the detector
    if( !fMCCuts->IsMCParticleInReconstructable(mcPart) ) {
      AliDebug(3,"MC Particle not in the reconstructible\n");
      continue;
    }
    fCFManager->GetParticleContainer()->Fill(containerInput,kStepMCAccpCut);

  }// end of particle loop

  return;
}


//________________________________________________________________________
void AliCFSingleTrackEfficiencyTask::CheckAODMCParticles()
{
  //
  // Check AOD generated particles
  //
  if (!fInputEvent) {
    AliFatal("NO EVENT FOUND!");
    return;
  }

  AliAODEvent* event = dynamic_cast<AliAODEvent*>(fInputEvent);
  if(!event && AODEvent() && IsStandardAOD()) {
    // In case there is an AOD handler writing a standard AOD, use the AOD 
    // event in memory rather than the input (ESD) event.    
    event = dynamic_cast<AliAODEvent*> (AODEvent());
  }
  TClonesArray* mcArray = dynamic_cast<TClonesArray*>(event->FindListObject(AliAODMCParticle::StdBranchName()));
  if (!mcArray) {
    AliError("Could not find Monte-Carlo in AOD");
    return;
  }
  AliAODMCHeader *mcHeader=NULL;
  mcHeader = dynamic_cast<AliAODMCHeader*>(event->GetList()->FindObject(AliAODMCHeader::StdBranchName()));
  if (!mcHeader) {
    AliError("Could not find MC Header in AOD");
    return;
  }

  Double_t containerInput[7] = { 0., 0., 0., 0., 0., 0., 0. };
  // Set the z-vertex position
  containerInput[4]  = mcHeader->GetVtxZ();
  // Multiplicity of the event defined as Ntracklets |eta|<1.0
  Double_t multiplicity = (Double_t)GetNumberOfTrackletsInEtaRange(-1.0,1.0);
  containerInput[5] = multiplicity;
  // Determine the event centrality
  Double_t centrality = 0.;
  if(fEvalCentrality) centrality = GetCentrality();
  containerInput[6] = centrality;

  for (Int_t ipart=0; ipart<mcArray->GetEntriesFast(); ipart++) {

    AliAODMCParticle* mcPart = dynamic_cast<AliAODMCParticle*>(mcArray->At(ipart));
    if (!mcPart){
      AliError("Failed casting particle from MC array!, Skipping particle");
      continue;
    }
    containerInput[0] = (Float_t)mcPart->Pt();
    containerInput[1] = mcPart->Eta();
    containerInput[2] = mcPart->Phi();
    containerInput[3] = mcPart->Theta();

    // Step 1. Particle passing through Generation criteria and filling
    if( !fMCCuts->IsMCParticleGenerated(mcPart) ) {
      AliDebug(3,"MC Particle not passing quality criteria\n");
      continue;
    }
    fCFManager->GetParticleContainer()->Fill(containerInput,kStepMCGenCut);

    // Step 2. Particle passing through Kinematic criteria and filling
    if( !fMCCuts->IsMCParticleInKineAcceptance(mcPart) ) {
      AliDebug(3,"MC Particle not in the acceptance\n");
      continue;
    }
    fCFManager->GetParticleContainer()->Fill(containerInput,kStepMCKineCut);

    // Step 3. Particle passing through Track Ref criteria and filling
    // but no info available for Track ref in AOD fillng same as above
    fCFManager->GetParticleContainer()->Fill(containerInput,kStepMCAccpCut);
  }

  return;
}


//_______________________________________________________________________________
AliESDtrack * AliCFSingleTrackEfficiencyTask::ConvertTrack(AliAODTrack *track)
{
  //
  // Convert an AOD track to an  ESD track to apply ESDtrackCuts
  //

  AliAODEvent *aodEvent = (AliAODEvent*)fInputEvent;
  const AliAODVertex *primary = aodEvent->GetPrimaryVertex();
  Double_t pos[3],cov[6];
  primary->GetXYZ(pos);
  primary->GetCovarianceMatrix(cov);
  const AliESDVertex vESD(pos,cov,100.,100);

  AliESDtrack *esdTrack =  new AliESDtrack(track);
  // set the TPC cluster info
  esdTrack->SetTPCClusterMap(track->GetTPCClusterMap());
  esdTrack->SetTPCSharedMap(track->GetTPCSharedMap());
  esdTrack->SetTPCPointsF(track->GetTPCNclsF());
  // needed to calculate the impact parameters
  esdTrack->RelateToVertex(&vESD,0.,3.);
  //  std::cout << " primary vtx "<< primary << std::endl;
  //  std::cout << " esdvtx "<< vESD.GetName() << std::endl;
  //  std::cout<< " esdtrack pt "<< esdTrack.Pt() << " and status " << esdTrack.GetStatus() <<endl;
  //  std::cout << " aod track "<< track<< " and status " << track->GetStatus() << std::endl;
  //  std::cout << " esd track "<< esdTrack<< " and status " << esdTrack->GetStatus() << std::endl;
  return esdTrack;
}


//___________________________________________________________________________
void AliCFSingleTrackEfficiencyTask::CheckReconstructedParticles()
{
  //
  // Check reconstructed particles
  //

  AliVEvent* event = fInputEvent;
  Bool_t isAOD = fInputEvent->IsA()->InheritsFrom("AliAODEvent");
  if(!event && AODEvent() && IsStandardAOD()) {
   event  = dynamic_cast<AliAODEvent*> (AODEvent());
  }
  if (!event) return;

  Double_t containerInput[7] = { 0, 0, 0, 0, 0, 0, 0};   // contains reconstructed quantities
  Double_t containerInputMC[7] = { 0, 0, 0, 0, 0, 0, 0}; // contains generated quantities
  
  const AliVVertex *vertex = event->GetPrimaryVertex();
  // set the z-vertex position
  containerInput[4] = vertex->GetZ();
  containerInputMC[4] = containerInput[4];
  // set the event multiplicity as Ntracklets in |eta|<1.0
  Double_t multiplicity = (Double_t)GetNumberOfTrackletsInEtaRange(-1.0,1.0);
  containerInput[5] = multiplicity;
  containerInputMC[5] = multiplicity;
  // Determine the event centrality
  Double_t centrality = 0.;
  if(fEvalCentrality) centrality = GetCentrality();
  containerInput[6] = centrality;
  containerInputMC[6] = centrality;

  // Reco tracks track loop
  AliVParticle* track = NULL;
  for (Int_t iTrack = 0; iTrack<event->GetNumberOfTracks(); iTrack++) {

    track = event->GetTrack(iTrack);
    if(!track) {
      AliDebug(3,Form("Track %d not found",iTrack));
      continue;
    }

    Double_t mom[3];
    track->PxPyPz(mom);
    Double_t pt = TMath::Sqrt(mom[0]*mom[0]+mom[1]*mom[1]);
    containerInput[0] = pt;
    containerInput[1] = track->Eta();
    containerInput[2] = track->Phi();
    containerInput[3] = track->Theta();

    //
    // Step 4. Track that are recostructed, filling
    //
    fCFManager->GetParticleContainer()->Fill(containerInput,kStepReconstructed);

    //
    // Step 5. Track that are recostructed and pass acceptance cuts, filling
    //
    if (!fMCCuts->IsRecoParticleKineAcceptance(track)) continue;
    fCFManager->GetParticleContainer()->Fill(containerInput,kStepRecoKineCuts);

    // is track associated to particle ? if yes + implimenting the physical primary..
    Int_t label = TMath::Abs(track->GetLabel());
    if (label<=0) {
      AliDebug(3,"Particle not matching MC label \n");
      continue;
    }

    //
    // Step 6-7. Track that are recostructed + Kine + Quality criteria, filling
    //

    // check particle selections at MC level
    AliVParticle *mcPart  = (AliVParticle*)fMCEvent->GetTrack(label);
    if(!mcPart) continue;
    containerInputMC[0] = (Float_t)mcPart->Pt();
    containerInputMC[1] = mcPart->Eta();
    containerInputMC[2] = mcPart->Phi();
    containerInputMC[3] = mcPart->Theta();

    if (!fMCCuts->IsMCParticleGenerated(mcPart)) continue;
    //    cout<< "MC matching did work"<<endl;


    // for filter bit selection
    AliAODTrack *aodTrack = dynamic_cast<AliAODTrack*>(track);
    if(isAOD && !aodTrack) continue;
    if(isAOD && fSetFilterBit) if (!aodTrack->TestFilterMask(BIT(fbit))) continue;
    //    cout<<" Filter bit check passed"<<endl;

    Bool_t isESDtrack = track->IsA()->InheritsFrom("AliESDtrack");
    AliESDtrack *tmptrack = NULL;
    if(isESDtrack) {
      tmptrack = dynamic_cast<AliESDtrack*>(track); // ESDs
    } else {
      if (aodTrack) tmptrack = ConvertTrack(aodTrack); // AODs
    }
    if (!tmptrack) continue;

    // exclude global constrained and TPC only tracks (filter bits 128 and 512)
    Int_t id = tmptrack->GetID();
    if(isAOD && id<0) {
      AliDebug(3,"Track removed bc corresponds to either filter bit 128 or 512 (TPC only tracks)\n");
      delete tmptrack; tmptrack=NULL;
      continue;
    }

    // Apply ESD track cuts
    if( !fTrackCuts->IsSelected(tmptrack) ){
      AliDebug(3,"Reconstructed track not passing quality criteria\n");
      if(isAOD) { delete tmptrack; tmptrack=NULL; }
      continue;
    }
    //    cout<<" analysis cuts passed"<<endl;
    fCFManager->GetParticleContainer()->Fill(containerInputMC,kStepReconstructedMC);
    fCFManager->GetParticleContainer()->Fill(containerInput,kStepRecoQualityCuts);
    //    cout << " checking particle pid"<<endl;

    //
    // Step8, PID check
    //
    if( !fMCCuts->IsRecoParticlePID(track) ){
      AliDebug(3,"Reconstructed track not passing PID criteria\n");
      if(isAOD) { delete tmptrack; tmptrack=NULL; }
      continue;
    }
    fCFManager->GetParticleContainer()->Fill(containerInput,kStepRecoPID);
    //    cout << " all steps filled"<<endl;

    if(isAOD) { delete tmptrack; tmptrack=NULL; }
  }
  return;
}

//______________________________________________________________________
Int_t AliCFSingleTrackEfficiencyTask::GetNumberOfTrackletsInEtaRange(Double_t mineta, Double_t maxeta)
{
  //
  // counts tracklets in given eta range
  //

  AliAODEvent* event = dynamic_cast<AliAODEvent*>(fInputEvent);
  Bool_t isAOD = fInputEvent->IsA()->InheritsFrom("AliAODEvent");
  if(!event && AODEvent() && IsStandardAOD()) {
   event  = dynamic_cast<AliAODEvent*> (AODEvent());
  }
  if (!event) return -1;
  Int_t count=0;

  if(isAOD) {
    AliAODTracklets* tracklets = event->GetTracklets();
    Int_t nTr=tracklets->GetNumberOfTracklets();
    for(Int_t iTr=0; iTr<nTr; iTr++){
      Double_t theta=tracklets->GetTheta(iTr);
      Double_t eta=-TMath::Log(TMath::Tan(theta/2.));
      if(eta>mineta && eta<maxeta) count++;
    }
  } else {  
    AliESDEvent *esdEvent = dynamic_cast<AliESDEvent*>(fInputEvent);
    if (!esdEvent) return -1;
    const AliMultiplicity *mult = esdEvent->GetMultiplicity();
    if (mult) {
      if (mult->GetNumberOfTracklets()>0) {	
	for (Int_t n=0; n<mult->GetNumberOfTracklets(); n++) {
	  Double_t eta = -TMath::Log( TMath::Tan( mult->GetTheta(n) / 2.0 ) );
	  if(eta>mineta && eta<maxeta) count++;
	}
      }
    }
  }

  return count;
}

//______________________________________________________________________
Double_t AliCFSingleTrackEfficiencyTask::GetCentrality()
{
  //
  // Get centrality
  //

  Bool_t isAOD = fInputEvent->IsA()->InheritsFrom("AliAODEvent");
  Double_t cent = -1;

  if(isAOD) {
    AliAODEvent* aodEvent = dynamic_cast<AliAODEvent*>(fInputEvent);
    if(!aodEvent) return cent;
    AliAODHeader* header = dynamic_cast<AliAODHeader*>(aodEvent->GetHeader());
    if(!header) AliFatal("Not a standard AOD");
    if(!header) return cent;
    AliCentrality *centrality = header->GetCentralityP();
    if(!centrality) return cent;
    //    cout<<" about to get cent perc AOD"<<endl;
    cent = centrality->GetCentralityPercentile(fCentralityEstimator.Data());
  } else {
    AliESDEvent* esdEvent = dynamic_cast<AliESDEvent*>(fInputEvent);
    if(!esdEvent) return cent;
    AliCentrality *centrality = esdEvent->GetCentrality();
    if(!centrality) return cent;
    cent = centrality->GetCentralityPercentile(fCentralityEstimator.Data());
  }

  return cent;
}
 AliCFSingleTrackEfficiencyTask.cxx:1
 AliCFSingleTrackEfficiencyTask.cxx:2
 AliCFSingleTrackEfficiencyTask.cxx:3
 AliCFSingleTrackEfficiencyTask.cxx:4
 AliCFSingleTrackEfficiencyTask.cxx:5
 AliCFSingleTrackEfficiencyTask.cxx:6
 AliCFSingleTrackEfficiencyTask.cxx:7
 AliCFSingleTrackEfficiencyTask.cxx:8
 AliCFSingleTrackEfficiencyTask.cxx:9
 AliCFSingleTrackEfficiencyTask.cxx:10
 AliCFSingleTrackEfficiencyTask.cxx:11
 AliCFSingleTrackEfficiencyTask.cxx:12
 AliCFSingleTrackEfficiencyTask.cxx:13
 AliCFSingleTrackEfficiencyTask.cxx:14
 AliCFSingleTrackEfficiencyTask.cxx:15
 AliCFSingleTrackEfficiencyTask.cxx:16
 AliCFSingleTrackEfficiencyTask.cxx:17
 AliCFSingleTrackEfficiencyTask.cxx:18
 AliCFSingleTrackEfficiencyTask.cxx:19
 AliCFSingleTrackEfficiencyTask.cxx:20
 AliCFSingleTrackEfficiencyTask.cxx:21
 AliCFSingleTrackEfficiencyTask.cxx:22
 AliCFSingleTrackEfficiencyTask.cxx:23
 AliCFSingleTrackEfficiencyTask.cxx:24
 AliCFSingleTrackEfficiencyTask.cxx:25
 AliCFSingleTrackEfficiencyTask.cxx:26
 AliCFSingleTrackEfficiencyTask.cxx:27
 AliCFSingleTrackEfficiencyTask.cxx:28
 AliCFSingleTrackEfficiencyTask.cxx:29
 AliCFSingleTrackEfficiencyTask.cxx:30
 AliCFSingleTrackEfficiencyTask.cxx:31
 AliCFSingleTrackEfficiencyTask.cxx:32
 AliCFSingleTrackEfficiencyTask.cxx:33
 AliCFSingleTrackEfficiencyTask.cxx:34
 AliCFSingleTrackEfficiencyTask.cxx:35
 AliCFSingleTrackEfficiencyTask.cxx:36
 AliCFSingleTrackEfficiencyTask.cxx:37
 AliCFSingleTrackEfficiencyTask.cxx:38
 AliCFSingleTrackEfficiencyTask.cxx:39
 AliCFSingleTrackEfficiencyTask.cxx:40
 AliCFSingleTrackEfficiencyTask.cxx:41
 AliCFSingleTrackEfficiencyTask.cxx:42
 AliCFSingleTrackEfficiencyTask.cxx:43
 AliCFSingleTrackEfficiencyTask.cxx:44
 AliCFSingleTrackEfficiencyTask.cxx:45
 AliCFSingleTrackEfficiencyTask.cxx:46
 AliCFSingleTrackEfficiencyTask.cxx:47
 AliCFSingleTrackEfficiencyTask.cxx:48
 AliCFSingleTrackEfficiencyTask.cxx:49
 AliCFSingleTrackEfficiencyTask.cxx:50
 AliCFSingleTrackEfficiencyTask.cxx:51
 AliCFSingleTrackEfficiencyTask.cxx:52
 AliCFSingleTrackEfficiencyTask.cxx:53
 AliCFSingleTrackEfficiencyTask.cxx:54
 AliCFSingleTrackEfficiencyTask.cxx:55
 AliCFSingleTrackEfficiencyTask.cxx:56
 AliCFSingleTrackEfficiencyTask.cxx:57
 AliCFSingleTrackEfficiencyTask.cxx:58
 AliCFSingleTrackEfficiencyTask.cxx:59
 AliCFSingleTrackEfficiencyTask.cxx:60
 AliCFSingleTrackEfficiencyTask.cxx:61
 AliCFSingleTrackEfficiencyTask.cxx:62
 AliCFSingleTrackEfficiencyTask.cxx:63
 AliCFSingleTrackEfficiencyTask.cxx:64
 AliCFSingleTrackEfficiencyTask.cxx:65
 AliCFSingleTrackEfficiencyTask.cxx:66
 AliCFSingleTrackEfficiencyTask.cxx:67
 AliCFSingleTrackEfficiencyTask.cxx:68
 AliCFSingleTrackEfficiencyTask.cxx:69
 AliCFSingleTrackEfficiencyTask.cxx:70
 AliCFSingleTrackEfficiencyTask.cxx:71
 AliCFSingleTrackEfficiencyTask.cxx:72
 AliCFSingleTrackEfficiencyTask.cxx:73
 AliCFSingleTrackEfficiencyTask.cxx:74
 AliCFSingleTrackEfficiencyTask.cxx:75
 AliCFSingleTrackEfficiencyTask.cxx:76
 AliCFSingleTrackEfficiencyTask.cxx:77
 AliCFSingleTrackEfficiencyTask.cxx:78
 AliCFSingleTrackEfficiencyTask.cxx:79
 AliCFSingleTrackEfficiencyTask.cxx:80
 AliCFSingleTrackEfficiencyTask.cxx:81
 AliCFSingleTrackEfficiencyTask.cxx:82
 AliCFSingleTrackEfficiencyTask.cxx:83
 AliCFSingleTrackEfficiencyTask.cxx:84
 AliCFSingleTrackEfficiencyTask.cxx:85
 AliCFSingleTrackEfficiencyTask.cxx:86
 AliCFSingleTrackEfficiencyTask.cxx:87
 AliCFSingleTrackEfficiencyTask.cxx:88
 AliCFSingleTrackEfficiencyTask.cxx:89
 AliCFSingleTrackEfficiencyTask.cxx:90
 AliCFSingleTrackEfficiencyTask.cxx:91
 AliCFSingleTrackEfficiencyTask.cxx:92
 AliCFSingleTrackEfficiencyTask.cxx:93
 AliCFSingleTrackEfficiencyTask.cxx:94
 AliCFSingleTrackEfficiencyTask.cxx:95
 AliCFSingleTrackEfficiencyTask.cxx:96
 AliCFSingleTrackEfficiencyTask.cxx:97
 AliCFSingleTrackEfficiencyTask.cxx:98
 AliCFSingleTrackEfficiencyTask.cxx:99
 AliCFSingleTrackEfficiencyTask.cxx:100
 AliCFSingleTrackEfficiencyTask.cxx:101
 AliCFSingleTrackEfficiencyTask.cxx:102
 AliCFSingleTrackEfficiencyTask.cxx:103
 AliCFSingleTrackEfficiencyTask.cxx:104
 AliCFSingleTrackEfficiencyTask.cxx:105
 AliCFSingleTrackEfficiencyTask.cxx:106
 AliCFSingleTrackEfficiencyTask.cxx:107
 AliCFSingleTrackEfficiencyTask.cxx:108
 AliCFSingleTrackEfficiencyTask.cxx:109
 AliCFSingleTrackEfficiencyTask.cxx:110
 AliCFSingleTrackEfficiencyTask.cxx:111
 AliCFSingleTrackEfficiencyTask.cxx:112
 AliCFSingleTrackEfficiencyTask.cxx:113
 AliCFSingleTrackEfficiencyTask.cxx:114
 AliCFSingleTrackEfficiencyTask.cxx:115
 AliCFSingleTrackEfficiencyTask.cxx:116
 AliCFSingleTrackEfficiencyTask.cxx:117
 AliCFSingleTrackEfficiencyTask.cxx:118
 AliCFSingleTrackEfficiencyTask.cxx:119
 AliCFSingleTrackEfficiencyTask.cxx:120
 AliCFSingleTrackEfficiencyTask.cxx:121
 AliCFSingleTrackEfficiencyTask.cxx:122
 AliCFSingleTrackEfficiencyTask.cxx:123
 AliCFSingleTrackEfficiencyTask.cxx:124
 AliCFSingleTrackEfficiencyTask.cxx:125
 AliCFSingleTrackEfficiencyTask.cxx:126
 AliCFSingleTrackEfficiencyTask.cxx:127
 AliCFSingleTrackEfficiencyTask.cxx:128
 AliCFSingleTrackEfficiencyTask.cxx:129
 AliCFSingleTrackEfficiencyTask.cxx:130
 AliCFSingleTrackEfficiencyTask.cxx:131
 AliCFSingleTrackEfficiencyTask.cxx:132
 AliCFSingleTrackEfficiencyTask.cxx:133
 AliCFSingleTrackEfficiencyTask.cxx:134
 AliCFSingleTrackEfficiencyTask.cxx:135
 AliCFSingleTrackEfficiencyTask.cxx:136
 AliCFSingleTrackEfficiencyTask.cxx:137
 AliCFSingleTrackEfficiencyTask.cxx:138
 AliCFSingleTrackEfficiencyTask.cxx:139
 AliCFSingleTrackEfficiencyTask.cxx:140
 AliCFSingleTrackEfficiencyTask.cxx:141
 AliCFSingleTrackEfficiencyTask.cxx:142
 AliCFSingleTrackEfficiencyTask.cxx:143
 AliCFSingleTrackEfficiencyTask.cxx:144
 AliCFSingleTrackEfficiencyTask.cxx:145
 AliCFSingleTrackEfficiencyTask.cxx:146
 AliCFSingleTrackEfficiencyTask.cxx:147
 AliCFSingleTrackEfficiencyTask.cxx:148
 AliCFSingleTrackEfficiencyTask.cxx:149
 AliCFSingleTrackEfficiencyTask.cxx:150
 AliCFSingleTrackEfficiencyTask.cxx:151
 AliCFSingleTrackEfficiencyTask.cxx:152
 AliCFSingleTrackEfficiencyTask.cxx:153
 AliCFSingleTrackEfficiencyTask.cxx:154
 AliCFSingleTrackEfficiencyTask.cxx:155
 AliCFSingleTrackEfficiencyTask.cxx:156
 AliCFSingleTrackEfficiencyTask.cxx:157
 AliCFSingleTrackEfficiencyTask.cxx:158
 AliCFSingleTrackEfficiencyTask.cxx:159
 AliCFSingleTrackEfficiencyTask.cxx:160
 AliCFSingleTrackEfficiencyTask.cxx:161
 AliCFSingleTrackEfficiencyTask.cxx:162
 AliCFSingleTrackEfficiencyTask.cxx:163
 AliCFSingleTrackEfficiencyTask.cxx:164
 AliCFSingleTrackEfficiencyTask.cxx:165
 AliCFSingleTrackEfficiencyTask.cxx:166
 AliCFSingleTrackEfficiencyTask.cxx:167
 AliCFSingleTrackEfficiencyTask.cxx:168
 AliCFSingleTrackEfficiencyTask.cxx:169
 AliCFSingleTrackEfficiencyTask.cxx:170
 AliCFSingleTrackEfficiencyTask.cxx:171
 AliCFSingleTrackEfficiencyTask.cxx:172
 AliCFSingleTrackEfficiencyTask.cxx:173
 AliCFSingleTrackEfficiencyTask.cxx:174
 AliCFSingleTrackEfficiencyTask.cxx:175
 AliCFSingleTrackEfficiencyTask.cxx:176
 AliCFSingleTrackEfficiencyTask.cxx:177
 AliCFSingleTrackEfficiencyTask.cxx:178
 AliCFSingleTrackEfficiencyTask.cxx:179
 AliCFSingleTrackEfficiencyTask.cxx:180
 AliCFSingleTrackEfficiencyTask.cxx:181
 AliCFSingleTrackEfficiencyTask.cxx:182
 AliCFSingleTrackEfficiencyTask.cxx:183
 AliCFSingleTrackEfficiencyTask.cxx:184
 AliCFSingleTrackEfficiencyTask.cxx:185
 AliCFSingleTrackEfficiencyTask.cxx:186
 AliCFSingleTrackEfficiencyTask.cxx:187
 AliCFSingleTrackEfficiencyTask.cxx:188
 AliCFSingleTrackEfficiencyTask.cxx:189
 AliCFSingleTrackEfficiencyTask.cxx:190
 AliCFSingleTrackEfficiencyTask.cxx:191
 AliCFSingleTrackEfficiencyTask.cxx:192
 AliCFSingleTrackEfficiencyTask.cxx:193
 AliCFSingleTrackEfficiencyTask.cxx:194
 AliCFSingleTrackEfficiencyTask.cxx:195
 AliCFSingleTrackEfficiencyTask.cxx:196
 AliCFSingleTrackEfficiencyTask.cxx:197
 AliCFSingleTrackEfficiencyTask.cxx:198
 AliCFSingleTrackEfficiencyTask.cxx:199
 AliCFSingleTrackEfficiencyTask.cxx:200
 AliCFSingleTrackEfficiencyTask.cxx:201
 AliCFSingleTrackEfficiencyTask.cxx:202
 AliCFSingleTrackEfficiencyTask.cxx:203
 AliCFSingleTrackEfficiencyTask.cxx:204
 AliCFSingleTrackEfficiencyTask.cxx:205
 AliCFSingleTrackEfficiencyTask.cxx:206
 AliCFSingleTrackEfficiencyTask.cxx:207
 AliCFSingleTrackEfficiencyTask.cxx:208
 AliCFSingleTrackEfficiencyTask.cxx:209
 AliCFSingleTrackEfficiencyTask.cxx:210
 AliCFSingleTrackEfficiencyTask.cxx:211
 AliCFSingleTrackEfficiencyTask.cxx:212
 AliCFSingleTrackEfficiencyTask.cxx:213
 AliCFSingleTrackEfficiencyTask.cxx:214
 AliCFSingleTrackEfficiencyTask.cxx:215
 AliCFSingleTrackEfficiencyTask.cxx:216
 AliCFSingleTrackEfficiencyTask.cxx:217
 AliCFSingleTrackEfficiencyTask.cxx:218
 AliCFSingleTrackEfficiencyTask.cxx:219
 AliCFSingleTrackEfficiencyTask.cxx:220
 AliCFSingleTrackEfficiencyTask.cxx:221
 AliCFSingleTrackEfficiencyTask.cxx:222
 AliCFSingleTrackEfficiencyTask.cxx:223
 AliCFSingleTrackEfficiencyTask.cxx:224
 AliCFSingleTrackEfficiencyTask.cxx:225
 AliCFSingleTrackEfficiencyTask.cxx:226
 AliCFSingleTrackEfficiencyTask.cxx:227
 AliCFSingleTrackEfficiencyTask.cxx:228
 AliCFSingleTrackEfficiencyTask.cxx:229
 AliCFSingleTrackEfficiencyTask.cxx:230
 AliCFSingleTrackEfficiencyTask.cxx:231
 AliCFSingleTrackEfficiencyTask.cxx:232
 AliCFSingleTrackEfficiencyTask.cxx:233
 AliCFSingleTrackEfficiencyTask.cxx:234
 AliCFSingleTrackEfficiencyTask.cxx:235
 AliCFSingleTrackEfficiencyTask.cxx:236
 AliCFSingleTrackEfficiencyTask.cxx:237
 AliCFSingleTrackEfficiencyTask.cxx:238
 AliCFSingleTrackEfficiencyTask.cxx:239
 AliCFSingleTrackEfficiencyTask.cxx:240
 AliCFSingleTrackEfficiencyTask.cxx:241
 AliCFSingleTrackEfficiencyTask.cxx:242
 AliCFSingleTrackEfficiencyTask.cxx:243
 AliCFSingleTrackEfficiencyTask.cxx:244
 AliCFSingleTrackEfficiencyTask.cxx:245
 AliCFSingleTrackEfficiencyTask.cxx:246
 AliCFSingleTrackEfficiencyTask.cxx:247
 AliCFSingleTrackEfficiencyTask.cxx:248
 AliCFSingleTrackEfficiencyTask.cxx:249
 AliCFSingleTrackEfficiencyTask.cxx:250
 AliCFSingleTrackEfficiencyTask.cxx:251
 AliCFSingleTrackEfficiencyTask.cxx:252
 AliCFSingleTrackEfficiencyTask.cxx:253
 AliCFSingleTrackEfficiencyTask.cxx:254
 AliCFSingleTrackEfficiencyTask.cxx:255
 AliCFSingleTrackEfficiencyTask.cxx:256
 AliCFSingleTrackEfficiencyTask.cxx:257
 AliCFSingleTrackEfficiencyTask.cxx:258
 AliCFSingleTrackEfficiencyTask.cxx:259
 AliCFSingleTrackEfficiencyTask.cxx:260
 AliCFSingleTrackEfficiencyTask.cxx:261
 AliCFSingleTrackEfficiencyTask.cxx:262
 AliCFSingleTrackEfficiencyTask.cxx:263
 AliCFSingleTrackEfficiencyTask.cxx:264
 AliCFSingleTrackEfficiencyTask.cxx:265
 AliCFSingleTrackEfficiencyTask.cxx:266
 AliCFSingleTrackEfficiencyTask.cxx:267
 AliCFSingleTrackEfficiencyTask.cxx:268
 AliCFSingleTrackEfficiencyTask.cxx:269
 AliCFSingleTrackEfficiencyTask.cxx:270
 AliCFSingleTrackEfficiencyTask.cxx:271
 AliCFSingleTrackEfficiencyTask.cxx:272
 AliCFSingleTrackEfficiencyTask.cxx:273
 AliCFSingleTrackEfficiencyTask.cxx:274
 AliCFSingleTrackEfficiencyTask.cxx:275
 AliCFSingleTrackEfficiencyTask.cxx:276
 AliCFSingleTrackEfficiencyTask.cxx:277
 AliCFSingleTrackEfficiencyTask.cxx:278
 AliCFSingleTrackEfficiencyTask.cxx:279
 AliCFSingleTrackEfficiencyTask.cxx:280
 AliCFSingleTrackEfficiencyTask.cxx:281
 AliCFSingleTrackEfficiencyTask.cxx:282
 AliCFSingleTrackEfficiencyTask.cxx:283
 AliCFSingleTrackEfficiencyTask.cxx:284
 AliCFSingleTrackEfficiencyTask.cxx:285
 AliCFSingleTrackEfficiencyTask.cxx:286
 AliCFSingleTrackEfficiencyTask.cxx:287
 AliCFSingleTrackEfficiencyTask.cxx:288
 AliCFSingleTrackEfficiencyTask.cxx:289
 AliCFSingleTrackEfficiencyTask.cxx:290
 AliCFSingleTrackEfficiencyTask.cxx:291
 AliCFSingleTrackEfficiencyTask.cxx:292
 AliCFSingleTrackEfficiencyTask.cxx:293
 AliCFSingleTrackEfficiencyTask.cxx:294
 AliCFSingleTrackEfficiencyTask.cxx:295
 AliCFSingleTrackEfficiencyTask.cxx:296
 AliCFSingleTrackEfficiencyTask.cxx:297
 AliCFSingleTrackEfficiencyTask.cxx:298
 AliCFSingleTrackEfficiencyTask.cxx:299
 AliCFSingleTrackEfficiencyTask.cxx:300
 AliCFSingleTrackEfficiencyTask.cxx:301
 AliCFSingleTrackEfficiencyTask.cxx:302
 AliCFSingleTrackEfficiencyTask.cxx:303
 AliCFSingleTrackEfficiencyTask.cxx:304
 AliCFSingleTrackEfficiencyTask.cxx:305
 AliCFSingleTrackEfficiencyTask.cxx:306
 AliCFSingleTrackEfficiencyTask.cxx:307
 AliCFSingleTrackEfficiencyTask.cxx:308
 AliCFSingleTrackEfficiencyTask.cxx:309
 AliCFSingleTrackEfficiencyTask.cxx:310
 AliCFSingleTrackEfficiencyTask.cxx:311
 AliCFSingleTrackEfficiencyTask.cxx:312
 AliCFSingleTrackEfficiencyTask.cxx:313
 AliCFSingleTrackEfficiencyTask.cxx:314
 AliCFSingleTrackEfficiencyTask.cxx:315
 AliCFSingleTrackEfficiencyTask.cxx:316
 AliCFSingleTrackEfficiencyTask.cxx:317
 AliCFSingleTrackEfficiencyTask.cxx:318
 AliCFSingleTrackEfficiencyTask.cxx:319
 AliCFSingleTrackEfficiencyTask.cxx:320
 AliCFSingleTrackEfficiencyTask.cxx:321
 AliCFSingleTrackEfficiencyTask.cxx:322
 AliCFSingleTrackEfficiencyTask.cxx:323
 AliCFSingleTrackEfficiencyTask.cxx:324
 AliCFSingleTrackEfficiencyTask.cxx:325
 AliCFSingleTrackEfficiencyTask.cxx:326
 AliCFSingleTrackEfficiencyTask.cxx:327
 AliCFSingleTrackEfficiencyTask.cxx:328
 AliCFSingleTrackEfficiencyTask.cxx:329
 AliCFSingleTrackEfficiencyTask.cxx:330
 AliCFSingleTrackEfficiencyTask.cxx:331
 AliCFSingleTrackEfficiencyTask.cxx:332
 AliCFSingleTrackEfficiencyTask.cxx:333
 AliCFSingleTrackEfficiencyTask.cxx:334
 AliCFSingleTrackEfficiencyTask.cxx:335
 AliCFSingleTrackEfficiencyTask.cxx:336
 AliCFSingleTrackEfficiencyTask.cxx:337
 AliCFSingleTrackEfficiencyTask.cxx:338
 AliCFSingleTrackEfficiencyTask.cxx:339
 AliCFSingleTrackEfficiencyTask.cxx:340
 AliCFSingleTrackEfficiencyTask.cxx:341
 AliCFSingleTrackEfficiencyTask.cxx:342
 AliCFSingleTrackEfficiencyTask.cxx:343
 AliCFSingleTrackEfficiencyTask.cxx:344
 AliCFSingleTrackEfficiencyTask.cxx:345
 AliCFSingleTrackEfficiencyTask.cxx:346
 AliCFSingleTrackEfficiencyTask.cxx:347
 AliCFSingleTrackEfficiencyTask.cxx:348
 AliCFSingleTrackEfficiencyTask.cxx:349
 AliCFSingleTrackEfficiencyTask.cxx:350
 AliCFSingleTrackEfficiencyTask.cxx:351
 AliCFSingleTrackEfficiencyTask.cxx:352
 AliCFSingleTrackEfficiencyTask.cxx:353
 AliCFSingleTrackEfficiencyTask.cxx:354
 AliCFSingleTrackEfficiencyTask.cxx:355
 AliCFSingleTrackEfficiencyTask.cxx:356
 AliCFSingleTrackEfficiencyTask.cxx:357
 AliCFSingleTrackEfficiencyTask.cxx:358
 AliCFSingleTrackEfficiencyTask.cxx:359
 AliCFSingleTrackEfficiencyTask.cxx:360
 AliCFSingleTrackEfficiencyTask.cxx:361
 AliCFSingleTrackEfficiencyTask.cxx:362
 AliCFSingleTrackEfficiencyTask.cxx:363
 AliCFSingleTrackEfficiencyTask.cxx:364
 AliCFSingleTrackEfficiencyTask.cxx:365
 AliCFSingleTrackEfficiencyTask.cxx:366
 AliCFSingleTrackEfficiencyTask.cxx:367
 AliCFSingleTrackEfficiencyTask.cxx:368
 AliCFSingleTrackEfficiencyTask.cxx:369
 AliCFSingleTrackEfficiencyTask.cxx:370
 AliCFSingleTrackEfficiencyTask.cxx:371
 AliCFSingleTrackEfficiencyTask.cxx:372
 AliCFSingleTrackEfficiencyTask.cxx:373
 AliCFSingleTrackEfficiencyTask.cxx:374
 AliCFSingleTrackEfficiencyTask.cxx:375
 AliCFSingleTrackEfficiencyTask.cxx:376
 AliCFSingleTrackEfficiencyTask.cxx:377
 AliCFSingleTrackEfficiencyTask.cxx:378
 AliCFSingleTrackEfficiencyTask.cxx:379
 AliCFSingleTrackEfficiencyTask.cxx:380
 AliCFSingleTrackEfficiencyTask.cxx:381
 AliCFSingleTrackEfficiencyTask.cxx:382
 AliCFSingleTrackEfficiencyTask.cxx:383
 AliCFSingleTrackEfficiencyTask.cxx:384
 AliCFSingleTrackEfficiencyTask.cxx:385
 AliCFSingleTrackEfficiencyTask.cxx:386
 AliCFSingleTrackEfficiencyTask.cxx:387
 AliCFSingleTrackEfficiencyTask.cxx:388
 AliCFSingleTrackEfficiencyTask.cxx:389
 AliCFSingleTrackEfficiencyTask.cxx:390
 AliCFSingleTrackEfficiencyTask.cxx:391
 AliCFSingleTrackEfficiencyTask.cxx:392
 AliCFSingleTrackEfficiencyTask.cxx:393
 AliCFSingleTrackEfficiencyTask.cxx:394
 AliCFSingleTrackEfficiencyTask.cxx:395
 AliCFSingleTrackEfficiencyTask.cxx:396
 AliCFSingleTrackEfficiencyTask.cxx:397
 AliCFSingleTrackEfficiencyTask.cxx:398
 AliCFSingleTrackEfficiencyTask.cxx:399
 AliCFSingleTrackEfficiencyTask.cxx:400
 AliCFSingleTrackEfficiencyTask.cxx:401
 AliCFSingleTrackEfficiencyTask.cxx:402
 AliCFSingleTrackEfficiencyTask.cxx:403
 AliCFSingleTrackEfficiencyTask.cxx:404
 AliCFSingleTrackEfficiencyTask.cxx:405
 AliCFSingleTrackEfficiencyTask.cxx:406
 AliCFSingleTrackEfficiencyTask.cxx:407
 AliCFSingleTrackEfficiencyTask.cxx:408
 AliCFSingleTrackEfficiencyTask.cxx:409
 AliCFSingleTrackEfficiencyTask.cxx:410
 AliCFSingleTrackEfficiencyTask.cxx:411
 AliCFSingleTrackEfficiencyTask.cxx:412
 AliCFSingleTrackEfficiencyTask.cxx:413
 AliCFSingleTrackEfficiencyTask.cxx:414
 AliCFSingleTrackEfficiencyTask.cxx:415
 AliCFSingleTrackEfficiencyTask.cxx:416
 AliCFSingleTrackEfficiencyTask.cxx:417
 AliCFSingleTrackEfficiencyTask.cxx:418
 AliCFSingleTrackEfficiencyTask.cxx:419
 AliCFSingleTrackEfficiencyTask.cxx:420
 AliCFSingleTrackEfficiencyTask.cxx:421
 AliCFSingleTrackEfficiencyTask.cxx:422
 AliCFSingleTrackEfficiencyTask.cxx:423
 AliCFSingleTrackEfficiencyTask.cxx:424
 AliCFSingleTrackEfficiencyTask.cxx:425
 AliCFSingleTrackEfficiencyTask.cxx:426
 AliCFSingleTrackEfficiencyTask.cxx:427
 AliCFSingleTrackEfficiencyTask.cxx:428
 AliCFSingleTrackEfficiencyTask.cxx:429
 AliCFSingleTrackEfficiencyTask.cxx:430
 AliCFSingleTrackEfficiencyTask.cxx:431
 AliCFSingleTrackEfficiencyTask.cxx:432
 AliCFSingleTrackEfficiencyTask.cxx:433
 AliCFSingleTrackEfficiencyTask.cxx:434
 AliCFSingleTrackEfficiencyTask.cxx:435
 AliCFSingleTrackEfficiencyTask.cxx:436
 AliCFSingleTrackEfficiencyTask.cxx:437
 AliCFSingleTrackEfficiencyTask.cxx:438
 AliCFSingleTrackEfficiencyTask.cxx:439
 AliCFSingleTrackEfficiencyTask.cxx:440
 AliCFSingleTrackEfficiencyTask.cxx:441
 AliCFSingleTrackEfficiencyTask.cxx:442
 AliCFSingleTrackEfficiencyTask.cxx:443
 AliCFSingleTrackEfficiencyTask.cxx:444
 AliCFSingleTrackEfficiencyTask.cxx:445
 AliCFSingleTrackEfficiencyTask.cxx:446
 AliCFSingleTrackEfficiencyTask.cxx:447
 AliCFSingleTrackEfficiencyTask.cxx:448
 AliCFSingleTrackEfficiencyTask.cxx:449
 AliCFSingleTrackEfficiencyTask.cxx:450
 AliCFSingleTrackEfficiencyTask.cxx:451
 AliCFSingleTrackEfficiencyTask.cxx:452
 AliCFSingleTrackEfficiencyTask.cxx:453
 AliCFSingleTrackEfficiencyTask.cxx:454
 AliCFSingleTrackEfficiencyTask.cxx:455
 AliCFSingleTrackEfficiencyTask.cxx:456
 AliCFSingleTrackEfficiencyTask.cxx:457
 AliCFSingleTrackEfficiencyTask.cxx:458
 AliCFSingleTrackEfficiencyTask.cxx:459
 AliCFSingleTrackEfficiencyTask.cxx:460
 AliCFSingleTrackEfficiencyTask.cxx:461
 AliCFSingleTrackEfficiencyTask.cxx:462
 AliCFSingleTrackEfficiencyTask.cxx:463
 AliCFSingleTrackEfficiencyTask.cxx:464
 AliCFSingleTrackEfficiencyTask.cxx:465
 AliCFSingleTrackEfficiencyTask.cxx:466
 AliCFSingleTrackEfficiencyTask.cxx:467
 AliCFSingleTrackEfficiencyTask.cxx:468
 AliCFSingleTrackEfficiencyTask.cxx:469
 AliCFSingleTrackEfficiencyTask.cxx:470
 AliCFSingleTrackEfficiencyTask.cxx:471
 AliCFSingleTrackEfficiencyTask.cxx:472
 AliCFSingleTrackEfficiencyTask.cxx:473
 AliCFSingleTrackEfficiencyTask.cxx:474
 AliCFSingleTrackEfficiencyTask.cxx:475
 AliCFSingleTrackEfficiencyTask.cxx:476
 AliCFSingleTrackEfficiencyTask.cxx:477
 AliCFSingleTrackEfficiencyTask.cxx:478
 AliCFSingleTrackEfficiencyTask.cxx:479
 AliCFSingleTrackEfficiencyTask.cxx:480
 AliCFSingleTrackEfficiencyTask.cxx:481
 AliCFSingleTrackEfficiencyTask.cxx:482
 AliCFSingleTrackEfficiencyTask.cxx:483
 AliCFSingleTrackEfficiencyTask.cxx:484
 AliCFSingleTrackEfficiencyTask.cxx:485
 AliCFSingleTrackEfficiencyTask.cxx:486
 AliCFSingleTrackEfficiencyTask.cxx:487
 AliCFSingleTrackEfficiencyTask.cxx:488
 AliCFSingleTrackEfficiencyTask.cxx:489
 AliCFSingleTrackEfficiencyTask.cxx:490
 AliCFSingleTrackEfficiencyTask.cxx:491
 AliCFSingleTrackEfficiencyTask.cxx:492
 AliCFSingleTrackEfficiencyTask.cxx:493
 AliCFSingleTrackEfficiencyTask.cxx:494
 AliCFSingleTrackEfficiencyTask.cxx:495
 AliCFSingleTrackEfficiencyTask.cxx:496
 AliCFSingleTrackEfficiencyTask.cxx:497
 AliCFSingleTrackEfficiencyTask.cxx:498
 AliCFSingleTrackEfficiencyTask.cxx:499
 AliCFSingleTrackEfficiencyTask.cxx:500
 AliCFSingleTrackEfficiencyTask.cxx:501
 AliCFSingleTrackEfficiencyTask.cxx:502
 AliCFSingleTrackEfficiencyTask.cxx:503
 AliCFSingleTrackEfficiencyTask.cxx:504
 AliCFSingleTrackEfficiencyTask.cxx:505
 AliCFSingleTrackEfficiencyTask.cxx:506
 AliCFSingleTrackEfficiencyTask.cxx:507
 AliCFSingleTrackEfficiencyTask.cxx:508
 AliCFSingleTrackEfficiencyTask.cxx:509
 AliCFSingleTrackEfficiencyTask.cxx:510
 AliCFSingleTrackEfficiencyTask.cxx:511
 AliCFSingleTrackEfficiencyTask.cxx:512
 AliCFSingleTrackEfficiencyTask.cxx:513
 AliCFSingleTrackEfficiencyTask.cxx:514
 AliCFSingleTrackEfficiencyTask.cxx:515
 AliCFSingleTrackEfficiencyTask.cxx:516
 AliCFSingleTrackEfficiencyTask.cxx:517
 AliCFSingleTrackEfficiencyTask.cxx:518
 AliCFSingleTrackEfficiencyTask.cxx:519
 AliCFSingleTrackEfficiencyTask.cxx:520
 AliCFSingleTrackEfficiencyTask.cxx:521
 AliCFSingleTrackEfficiencyTask.cxx:522
 AliCFSingleTrackEfficiencyTask.cxx:523
 AliCFSingleTrackEfficiencyTask.cxx:524
 AliCFSingleTrackEfficiencyTask.cxx:525
 AliCFSingleTrackEfficiencyTask.cxx:526
 AliCFSingleTrackEfficiencyTask.cxx:527
 AliCFSingleTrackEfficiencyTask.cxx:528
 AliCFSingleTrackEfficiencyTask.cxx:529
 AliCFSingleTrackEfficiencyTask.cxx:530
 AliCFSingleTrackEfficiencyTask.cxx:531
 AliCFSingleTrackEfficiencyTask.cxx:532
 AliCFSingleTrackEfficiencyTask.cxx:533
 AliCFSingleTrackEfficiencyTask.cxx:534
 AliCFSingleTrackEfficiencyTask.cxx:535
 AliCFSingleTrackEfficiencyTask.cxx:536
 AliCFSingleTrackEfficiencyTask.cxx:537
 AliCFSingleTrackEfficiencyTask.cxx:538
 AliCFSingleTrackEfficiencyTask.cxx:539
 AliCFSingleTrackEfficiencyTask.cxx:540
 AliCFSingleTrackEfficiencyTask.cxx:541
 AliCFSingleTrackEfficiencyTask.cxx:542
 AliCFSingleTrackEfficiencyTask.cxx:543
 AliCFSingleTrackEfficiencyTask.cxx:544
 AliCFSingleTrackEfficiencyTask.cxx:545
 AliCFSingleTrackEfficiencyTask.cxx:546
 AliCFSingleTrackEfficiencyTask.cxx:547
 AliCFSingleTrackEfficiencyTask.cxx:548
 AliCFSingleTrackEfficiencyTask.cxx:549
 AliCFSingleTrackEfficiencyTask.cxx:550
 AliCFSingleTrackEfficiencyTask.cxx:551
 AliCFSingleTrackEfficiencyTask.cxx:552
 AliCFSingleTrackEfficiencyTask.cxx:553
 AliCFSingleTrackEfficiencyTask.cxx:554
 AliCFSingleTrackEfficiencyTask.cxx:555
 AliCFSingleTrackEfficiencyTask.cxx:556
 AliCFSingleTrackEfficiencyTask.cxx:557
 AliCFSingleTrackEfficiencyTask.cxx:558
 AliCFSingleTrackEfficiencyTask.cxx:559
 AliCFSingleTrackEfficiencyTask.cxx:560
 AliCFSingleTrackEfficiencyTask.cxx:561
 AliCFSingleTrackEfficiencyTask.cxx:562
 AliCFSingleTrackEfficiencyTask.cxx:563
 AliCFSingleTrackEfficiencyTask.cxx:564
 AliCFSingleTrackEfficiencyTask.cxx:565
 AliCFSingleTrackEfficiencyTask.cxx:566
 AliCFSingleTrackEfficiencyTask.cxx:567
 AliCFSingleTrackEfficiencyTask.cxx:568
 AliCFSingleTrackEfficiencyTask.cxx:569
 AliCFSingleTrackEfficiencyTask.cxx:570
 AliCFSingleTrackEfficiencyTask.cxx:571
 AliCFSingleTrackEfficiencyTask.cxx:572
 AliCFSingleTrackEfficiencyTask.cxx:573
 AliCFSingleTrackEfficiencyTask.cxx:574
 AliCFSingleTrackEfficiencyTask.cxx:575
 AliCFSingleTrackEfficiencyTask.cxx:576
 AliCFSingleTrackEfficiencyTask.cxx:577
 AliCFSingleTrackEfficiencyTask.cxx:578
 AliCFSingleTrackEfficiencyTask.cxx:579
 AliCFSingleTrackEfficiencyTask.cxx:580
 AliCFSingleTrackEfficiencyTask.cxx:581
 AliCFSingleTrackEfficiencyTask.cxx:582
 AliCFSingleTrackEfficiencyTask.cxx:583
 AliCFSingleTrackEfficiencyTask.cxx:584
 AliCFSingleTrackEfficiencyTask.cxx:585
 AliCFSingleTrackEfficiencyTask.cxx:586
 AliCFSingleTrackEfficiencyTask.cxx:587
 AliCFSingleTrackEfficiencyTask.cxx:588
 AliCFSingleTrackEfficiencyTask.cxx:589
 AliCFSingleTrackEfficiencyTask.cxx:590
 AliCFSingleTrackEfficiencyTask.cxx:591
 AliCFSingleTrackEfficiencyTask.cxx:592
 AliCFSingleTrackEfficiencyTask.cxx:593
 AliCFSingleTrackEfficiencyTask.cxx:594
 AliCFSingleTrackEfficiencyTask.cxx:595
 AliCFSingleTrackEfficiencyTask.cxx:596
 AliCFSingleTrackEfficiencyTask.cxx:597
 AliCFSingleTrackEfficiencyTask.cxx:598
 AliCFSingleTrackEfficiencyTask.cxx:599
 AliCFSingleTrackEfficiencyTask.cxx:600
 AliCFSingleTrackEfficiencyTask.cxx:601
 AliCFSingleTrackEfficiencyTask.cxx:602
 AliCFSingleTrackEfficiencyTask.cxx:603
 AliCFSingleTrackEfficiencyTask.cxx:604
 AliCFSingleTrackEfficiencyTask.cxx:605
 AliCFSingleTrackEfficiencyTask.cxx:606
 AliCFSingleTrackEfficiencyTask.cxx:607
 AliCFSingleTrackEfficiencyTask.cxx:608
 AliCFSingleTrackEfficiencyTask.cxx:609
 AliCFSingleTrackEfficiencyTask.cxx:610
 AliCFSingleTrackEfficiencyTask.cxx:611
 AliCFSingleTrackEfficiencyTask.cxx:612
 AliCFSingleTrackEfficiencyTask.cxx:613
 AliCFSingleTrackEfficiencyTask.cxx:614
 AliCFSingleTrackEfficiencyTask.cxx:615
 AliCFSingleTrackEfficiencyTask.cxx:616
 AliCFSingleTrackEfficiencyTask.cxx:617
 AliCFSingleTrackEfficiencyTask.cxx:618
 AliCFSingleTrackEfficiencyTask.cxx:619
 AliCFSingleTrackEfficiencyTask.cxx:620
 AliCFSingleTrackEfficiencyTask.cxx:621
 AliCFSingleTrackEfficiencyTask.cxx:622
 AliCFSingleTrackEfficiencyTask.cxx:623
 AliCFSingleTrackEfficiencyTask.cxx:624
 AliCFSingleTrackEfficiencyTask.cxx:625
 AliCFSingleTrackEfficiencyTask.cxx:626
 AliCFSingleTrackEfficiencyTask.cxx:627
 AliCFSingleTrackEfficiencyTask.cxx:628
 AliCFSingleTrackEfficiencyTask.cxx:629
 AliCFSingleTrackEfficiencyTask.cxx:630
 AliCFSingleTrackEfficiencyTask.cxx:631
 AliCFSingleTrackEfficiencyTask.cxx:632
 AliCFSingleTrackEfficiencyTask.cxx:633
 AliCFSingleTrackEfficiencyTask.cxx:634
 AliCFSingleTrackEfficiencyTask.cxx:635
 AliCFSingleTrackEfficiencyTask.cxx:636
 AliCFSingleTrackEfficiencyTask.cxx:637
 AliCFSingleTrackEfficiencyTask.cxx:638
 AliCFSingleTrackEfficiencyTask.cxx:639
 AliCFSingleTrackEfficiencyTask.cxx:640
 AliCFSingleTrackEfficiencyTask.cxx:641
 AliCFSingleTrackEfficiencyTask.cxx:642
 AliCFSingleTrackEfficiencyTask.cxx:643
 AliCFSingleTrackEfficiencyTask.cxx:644
 AliCFSingleTrackEfficiencyTask.cxx:645
 AliCFSingleTrackEfficiencyTask.cxx:646
 AliCFSingleTrackEfficiencyTask.cxx:647
 AliCFSingleTrackEfficiencyTask.cxx:648
 AliCFSingleTrackEfficiencyTask.cxx:649
 AliCFSingleTrackEfficiencyTask.cxx:650
 AliCFSingleTrackEfficiencyTask.cxx:651
 AliCFSingleTrackEfficiencyTask.cxx:652
 AliCFSingleTrackEfficiencyTask.cxx:653
 AliCFSingleTrackEfficiencyTask.cxx:654
 AliCFSingleTrackEfficiencyTask.cxx:655
 AliCFSingleTrackEfficiencyTask.cxx:656
 AliCFSingleTrackEfficiencyTask.cxx:657
 AliCFSingleTrackEfficiencyTask.cxx:658
 AliCFSingleTrackEfficiencyTask.cxx:659
 AliCFSingleTrackEfficiencyTask.cxx:660
 AliCFSingleTrackEfficiencyTask.cxx:661
 AliCFSingleTrackEfficiencyTask.cxx:662
 AliCFSingleTrackEfficiencyTask.cxx:663
 AliCFSingleTrackEfficiencyTask.cxx:664
 AliCFSingleTrackEfficiencyTask.cxx:665
 AliCFSingleTrackEfficiencyTask.cxx:666
 AliCFSingleTrackEfficiencyTask.cxx:667
 AliCFSingleTrackEfficiencyTask.cxx:668
 AliCFSingleTrackEfficiencyTask.cxx:669
 AliCFSingleTrackEfficiencyTask.cxx:670
 AliCFSingleTrackEfficiencyTask.cxx:671
 AliCFSingleTrackEfficiencyTask.cxx:672
 AliCFSingleTrackEfficiencyTask.cxx:673
 AliCFSingleTrackEfficiencyTask.cxx:674
 AliCFSingleTrackEfficiencyTask.cxx:675
 AliCFSingleTrackEfficiencyTask.cxx:676
 AliCFSingleTrackEfficiencyTask.cxx:677
 AliCFSingleTrackEfficiencyTask.cxx:678
 AliCFSingleTrackEfficiencyTask.cxx:679
 AliCFSingleTrackEfficiencyTask.cxx:680
 AliCFSingleTrackEfficiencyTask.cxx:681
 AliCFSingleTrackEfficiencyTask.cxx:682
 AliCFSingleTrackEfficiencyTask.cxx:683
 AliCFSingleTrackEfficiencyTask.cxx:684
 AliCFSingleTrackEfficiencyTask.cxx:685
 AliCFSingleTrackEfficiencyTask.cxx:686
 AliCFSingleTrackEfficiencyTask.cxx:687
 AliCFSingleTrackEfficiencyTask.cxx:688
 AliCFSingleTrackEfficiencyTask.cxx:689
 AliCFSingleTrackEfficiencyTask.cxx:690
 AliCFSingleTrackEfficiencyTask.cxx:691
 AliCFSingleTrackEfficiencyTask.cxx:692
 AliCFSingleTrackEfficiencyTask.cxx:693
 AliCFSingleTrackEfficiencyTask.cxx:694
 AliCFSingleTrackEfficiencyTask.cxx:695
 AliCFSingleTrackEfficiencyTask.cxx:696
 AliCFSingleTrackEfficiencyTask.cxx:697
 AliCFSingleTrackEfficiencyTask.cxx:698
 AliCFSingleTrackEfficiencyTask.cxx:699
 AliCFSingleTrackEfficiencyTask.cxx:700
 AliCFSingleTrackEfficiencyTask.cxx:701
 AliCFSingleTrackEfficiencyTask.cxx:702
 AliCFSingleTrackEfficiencyTask.cxx:703
 AliCFSingleTrackEfficiencyTask.cxx:704
 AliCFSingleTrackEfficiencyTask.cxx:705
 AliCFSingleTrackEfficiencyTask.cxx:706
 AliCFSingleTrackEfficiencyTask.cxx:707
 AliCFSingleTrackEfficiencyTask.cxx:708
 AliCFSingleTrackEfficiencyTask.cxx:709
 AliCFSingleTrackEfficiencyTask.cxx:710
 AliCFSingleTrackEfficiencyTask.cxx:711
 AliCFSingleTrackEfficiencyTask.cxx:712
 AliCFSingleTrackEfficiencyTask.cxx:713
 AliCFSingleTrackEfficiencyTask.cxx:714
 AliCFSingleTrackEfficiencyTask.cxx:715
 AliCFSingleTrackEfficiencyTask.cxx:716
 AliCFSingleTrackEfficiencyTask.cxx:717
 AliCFSingleTrackEfficiencyTask.cxx:718
 AliCFSingleTrackEfficiencyTask.cxx:719
 AliCFSingleTrackEfficiencyTask.cxx:720
 AliCFSingleTrackEfficiencyTask.cxx:721
 AliCFSingleTrackEfficiencyTask.cxx:722
 AliCFSingleTrackEfficiencyTask.cxx:723
 AliCFSingleTrackEfficiencyTask.cxx:724
 AliCFSingleTrackEfficiencyTask.cxx:725
 AliCFSingleTrackEfficiencyTask.cxx:726
 AliCFSingleTrackEfficiencyTask.cxx:727
 AliCFSingleTrackEfficiencyTask.cxx:728
 AliCFSingleTrackEfficiencyTask.cxx:729