ROOT logo
#include "TChain.h"
#include "TList.h"
#include "TTree.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TH3D.h"
#include "TCanvas.h"
#include "TParticle.h"
#include "TObjArray.h"

#include "AliAnalysisTask.h"
#include "AliAnalysisManager.h"

#include "AliStack.h"
#include "AliMCEvent.h"
#include "AliAODEvent.h" 
#include "AliAODInputHandler.h"
#include "AliAODMCParticle.h"
#include "AliAODMCHeader.h"
#include "AliCentrality.h"
#include "AliGenEventHeader.h"

#include "AliLog.h"
#include "AliAnalysisTaskEffContBF.h"

// ---------------------------------------------------------------------
//
// Task for calculating the efficiency of the Balance Function 
// for single particles and pairs
// 
// ---------------------------------------------------------------------

ClassImp(AliAnalysisTaskEffContBF)

//________________________________________________________________________
AliAnalysisTaskEffContBF::AliAnalysisTaskEffContBF(const char *name) 
  : AliAnalysisTaskSE(name), 
    fAOD(0),
    fArrayMC(0), 
    fQAList(0), 
    fOutputList(0), 
    fHistEventStats(0), 
    fHistCentrality(0),
    fHistNMult(0), 
    fHistVz(0), 
    fHistNSigmaTPCvsPtbeforePID(0),
    fHistNSigmaTPCvsPtafterPID(0),  
    fHistContaminationSecondariesPlus(0),
    fHistContaminationSecondariesMinus(0), //
    fHistContaminationPrimariesPlus(0),
    fHistContaminationPrimariesMinus(0), //
    fHistGeneratedEtaPtPhiPlus(0), 
    fHistSurvivedEtaPtPhiPlus(0),
    fHistGeneratedEtaPtPhiMinus(0),
    fHistSurvivedEtaPtPhiMinus(0),
    fHistGeneratedEtaPtPlusControl(0),
    fHistSurvivedEtaPtPlusControl(0),
    fHistGeneratedEtaPtMinusControl(0),
    fHistSurvivedEtaPtMinusControl(0),
    fHistGeneratedEtaPtPlusPlus(0),
    fHistSurvivedEtaPtPlusPlus(0),
    fHistGeneratedEtaPtMinusMinus(0),
    fHistSurvivedEtaPtMinusMinus(0),
    fHistGeneratedEtaPtPlusMinus(0),
    fHistSurvivedEtaPtPlusMinus(0),
    fHistGeneratedPhiEtaPlusPlus(0),
    fHistSurvivedPhiEtaPlusPlus(0),
    fHistGeneratedPhiEtaMinusMinus(0),
    fHistSurvivedPhiEtaMinusMinus(0),
    fHistGeneratedPhiEtaPlusMinus(0),
    fHistSurvivedPhiEtaPlusMinus(0),
    fUseCentrality(kFALSE),
    fCentralityEstimator("V0M"), 
    fCentralityPercentileMin(0.0), 
    fCentralityPercentileMax(5.0), 
    fInjectedSignals(kFALSE),
    fPIDResponse(0),
    fElectronRejection(kFALSE),
    fElectronOnlyRejection(kFALSE),
    fElectronRejectionNSigma(-1.),
    fElectronRejectionMinPt(0.),
    fElectronRejectionMaxPt(1000.),
    fVxMax(3.0), 
    fVyMax(3.0),
    fVzMax(10.), 
    fAODTrackCutBit(128),
    fMinNumberOfTPCClusters(80),
    fMaxChi2PerTPCCluster(4.0),
    fMaxDCAxy(3.0),
    fMaxDCAz(3.0),
    fMinPt(0.0),
    fMaxPt(20.0),
    fMinEta(-0.8), 
    fMaxEta(0.8),
    fEtaRangeMin(0.0), 
    fEtaRangeMax(1.6), 
    fPtRangeMin(0.0), 
    fPtRangeMax(20.0), 
    fEtaBin(100), //=100 (BF) 16
    fdEtaBin(64), //=64 (BF)  16
    fPtBin(100), //=100 (BF)  36
    fHistSurvived4EtaPtPhiPlus(0),
    fHistSurvived8EtaPtPhiPlus(0)
  
{   
  // Define input and output slots here
  // Input slot #0 works with a TChain
  DefineInput(0, TChain::Class());
  // Output slot #0 id reserved by the base class for AOD
  // Output slot #1 writes into a TH1 container
  DefineOutput(1, TList::Class());
  DefineOutput(2, TList::Class());
}

//________________________________________________________________________
void AliAnalysisTaskEffContBF::UserCreateOutputObjects() {
  // Create histograms
  // Called once

  fQAList = new TList();
  fQAList->SetName("QAList");
  fQAList->SetOwner();
  
  fOutputList = new TList();
  fOutputList->SetName("OutputList");
  fOutputList->SetOwner();
  
  //Event stats.
  TString gCutName[4] = {"Total","Offline trigger",
                         "Vertex","Analyzed"};
  fHistEventStats = new TH1F("fHistEventStats",
                             "Event statistics;;N_{events}",
                             4,0.5,4.5);
  for(Int_t i = 1; i <= 4; i++)
    fHistEventStats->GetXaxis()->SetBinLabel(i,gCutName[i-1].Data());
  fQAList->Add(fHistEventStats);

  //====================================================//
  Int_t ptBin = 36;
  Int_t etaBin = 16;
  Int_t phiBin = 100;

  Double_t nArrayPt[37]={0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 7.0, 8.0, 9.0, 10.0, 15.0, 20.0};
  Double_t nArrayEta[17]={-0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}; 

  Double_t nArrayPhi[phiBin+1];
  for(Int_t iBin = 0; iBin <= phiBin; iBin++) 
    nArrayPhi[iBin] = iBin*TMath::TwoPi()/phiBin;

  Int_t detaBin = 16;
  Int_t dphiBin = 100;
  Double_t nArrayDPhi[dphiBin+1];
  for(Int_t iBin = 0; iBin <= dphiBin; iBin++) 
    nArrayDPhi[iBin] = iBin*TMath::TwoPi()/dphiBin;
  Double_t nArrayDEta[17]={0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6}; 
  //====================================================//

  //AOD analysis
  fHistCentrality = new TH1F("fHistCentrality",";Centrality bin;Events",
			     1001,-0.5,100.5);
  fQAList->Add(fHistCentrality);
  
  //multiplicity (good MC tracks)
  TString histName;
  histName = "fHistNMult";
  fHistNMult = new TH1F(histName.Data(), 
			";N_{mult.}",
			200,0,20000);
  fQAList->Add(fHistNMult);

  //Vz addition+++++++++++++++++++++++++++++
  fHistVz = new TH1F("fHistVz","Primary vertex distribution - z coordinate;V_{z} (cm);Entries",100,-20.,20.);
  fQAList->Add(fHistVz);

  //Electron cuts -> PID QA
  fHistNSigmaTPCvsPtbeforePID = new TH2F ("NSigmaTPCvsPtbefore","NSigmaTPCvsPtbefore",200, 0, 20, 200, -10, 10); 
  fQAList->Add(fHistNSigmaTPCvsPtbeforePID);

  fHistNSigmaTPCvsPtafterPID = new TH2F ("NSigmaTPCvsPtafter","NSigmaTPCvsPtafter",200, 0, 20, 200, -10, 10); 
  fQAList->Add(fHistNSigmaTPCvsPtafterPID);

  //Contamination for Secondaries 
  fHistContaminationSecondariesPlus = new TH3D("fHistContaminationSecondariesPlus","Secondaries;#eta;p_{T} (GeV/c);#varphi",etaBin,nArrayEta,ptBin,nArrayPt,phiBin,nArrayPhi);
  fOutputList->Add(fHistContaminationSecondariesPlus);

  fHistContaminationSecondariesMinus = new TH3D("fHistContaminationSecondariesMinus","Secondaries;#eta;p_{T} (GeV/c);#varphi",etaBin,nArrayEta,ptBin,nArrayPt,phiBin,nArrayPhi);
  fOutputList->Add(fHistContaminationSecondariesMinus);

  //Contamination for Primaries
  fHistContaminationPrimariesPlus = new TH3D("fHistContaminationPrimariesPlus","Primaries;#eta;p_{T} (GeV/c);#varphi",etaBin,nArrayEta,ptBin,nArrayPt,phiBin,nArrayPhi);
  fOutputList->Add(fHistContaminationPrimariesPlus);

  fHistContaminationPrimariesMinus = new TH3D("fHistContaminationPrimariesMinus","Primaries;#eta;p_{T} (GeV/c);#varphi",etaBin,nArrayEta,ptBin,nArrayPt,phiBin,nArrayPhi);
  fOutputList->Add(fHistContaminationPrimariesMinus);
  
  //eta vs pt for MC positives
  fHistGeneratedEtaPtPhiPlus = new TH3D("fHistGeneratedEtaPtPhiPlus",
					"Generated positive primaries;#eta;p_{T} (GeV/c);#phi",
					etaBin,nArrayEta, ptBin, nArrayPt,phiBin, nArrayPhi);
  // fEtaBin,fMinEta,fMaxEta,fPtBin,fPtRangeMin,fPtRangeMax,fPhiBin,nArrayPhi);
  fOutputList->Add(fHistGeneratedEtaPtPhiPlus);
  fHistSurvivedEtaPtPhiPlus = new TH3D("fHistSurvivedEtaPtPhiPlus",
				       "Survived positive primaries;#eta;p_{T} (GeV/c);#phi",
				       etaBin,nArrayEta,ptBin,nArrayPt,phiBin,nArrayPhi);
  fOutputList->Add(fHistSurvivedEtaPtPhiPlus);
  
  //eta vs pt for MC negatives
  fHistGeneratedEtaPtPhiMinus = new TH3D("fHistGeneratedEtaPtPhiMinus",
					 "Generated positive primaries;#eta;p_{T} (GeV/c);#phi",
					 etaBin,nArrayEta,ptBin,nArrayPt,phiBin,nArrayPhi);
  fOutputList->Add(fHistGeneratedEtaPtPhiMinus);
  fHistSurvivedEtaPtPhiMinus = new TH3D("fHistSurvivedEtaPtPhiMinus",
					"Survived positive primaries;#eta;p_{T} (GeV/c);#phi",
					etaBin,nArrayEta,ptBin,nArrayPt,phiBin,nArrayPhi);
  fOutputList->Add(fHistSurvivedEtaPtPhiMinus);
 
  //eta vs pt for MC positives (control)
  fHistGeneratedEtaPtPlusControl = new TH2F("fHistGeneratedEtaPtPlusControl",
					    "Generated positive primaries;#eta;p_{T} (GeV/c)",
					    etaBin,nArrayEta,ptBin,nArrayPt);
  fOutputList->Add(fHistGeneratedEtaPtPlusControl);
  fHistSurvivedEtaPtPlusControl = new TH2F("fHistSurvivedEtaPtPlusControl",
					   "Survived positive primaries;#eta;p_{T} (GeV/c)",
					   etaBin,nArrayEta,ptBin,nArrayPt);
  fOutputList->Add(fHistSurvivedEtaPtPlusControl);
  
  //eta vs pt for MC negatives (control)
  fHistGeneratedEtaPtMinusControl = new TH2F("fHistGeneratedEtaPtMinusControl",
					     "Generated positive primaries;#eta;p_{T} (GeV/c)",
					     etaBin,nArrayEta,ptBin,nArrayPt);
  fOutputList->Add(fHistGeneratedEtaPtMinusControl);
  fHistSurvivedEtaPtMinusControl = new TH2F("fHistSurvivedEtaPtMinusControl",
					    "Survived positive primaries;#eta;p_{T} (GeV/c)",
					    etaBin,nArrayEta,ptBin,nArrayPt);
  fOutputList->Add(fHistSurvivedEtaPtMinusControl);
  
  //eta vs pt for MC ++
  fHistGeneratedEtaPtPlusPlus = new TH2F("fHistGeneratedEtaPtPlusPlus",
					 "Generated ++ primaries;#Delta#eta;p_{T} (GeV/c)",
					 detaBin,nArrayDEta,ptBin,nArrayPt);
  fOutputList->Add(fHistGeneratedEtaPtPlusPlus);
  fHistSurvivedEtaPtPlusPlus = new TH2F("fHistSurvivedEtaPtPlusPlus",
					"Survived ++ primaries;#Delta#eta;p_{T} (GeV/c)",
					detaBin,nArrayDEta,ptBin,nArrayPt);
  fOutputList->Add(fHistSurvivedEtaPtPlusPlus);
  
  //eta vs pt for MC --
  fHistGeneratedEtaPtMinusMinus = new TH2F("fHistGeneratedEtaPtMinusMinus",
					   "Generated -- primaries;#Delta#eta;p_{T} (GeV/c)",
					   detaBin,nArrayDEta,ptBin,nArrayPt);
  fOutputList->Add(fHistGeneratedEtaPtMinusMinus);
  fHistSurvivedEtaPtMinusMinus = new TH2F("fHistSurvivedEtaPtMinusMinus",
					  "Survived -- primaries;#Delta#eta;p_{T} (GeV/c)",
					  detaBin,nArrayDEta,ptBin,nArrayPt);
  fOutputList->Add(fHistSurvivedEtaPtMinusMinus);
 
  //eta vs pt for MC +-
  fHistGeneratedEtaPtPlusMinus = new TH2F("fHistGeneratedEtaPtPlusMinus",
					  "Generated +- primaries;#Delta#eta;p_{T} (GeV/c)",
					  detaBin,nArrayDEta,ptBin,nArrayPt);
  fOutputList->Add(fHistGeneratedEtaPtPlusMinus);
  fHistSurvivedEtaPtPlusMinus = new TH2F("fHistSurvivedEtaPtPlusMinus",
					 "Survived +- primaries;#Delta#eta;p_{T} (GeV/c)",
					 detaBin,nArrayDEta,ptBin,nArrayPt);
  fOutputList->Add(fHistSurvivedEtaPtPlusMinus);
 
  //=============================//
  //phi vs eta for MC ++
  fHistGeneratedPhiEtaPlusPlus = new TH2F("fHistGeneratedPhiEtaPlusPlus",
					  "Generated ++ primaries;#Delta#phi",
					  dphiBin,nArrayDPhi,detaBin,nArrayDEta);
  fOutputList->Add(fHistGeneratedPhiEtaPlusPlus);
  fHistSurvivedPhiEtaPlusPlus = new TH2F("fHistSurvivedPhiEtaPlusPlus",
					 "Survived ++ primaries;#Delta#phi;#Delta#eta",
					 dphiBin,nArrayDPhi,detaBin,nArrayDEta);
  fOutputList->Add(fHistSurvivedPhiEtaPlusPlus);
  
  //phi vs eta for MC --
  fHistGeneratedPhiEtaMinusMinus = new TH2F("fHistGeneratedPhiEtaMinusMinus",
					    "Generated -- primaries;#Delta#phi;#Delta#eta",
					    dphiBin,nArrayDPhi,detaBin,nArrayDEta);
  fOutputList->Add(fHistGeneratedPhiEtaMinusMinus);
  fHistSurvivedPhiEtaMinusMinus = new TH2F("fHistSurvivedPhiEtaMinusMinus",
					   "Survived -- primaries;#Delta#phi;#Delta#eta",
					   dphiBin,nArrayDPhi,detaBin,nArrayDEta);
  fOutputList->Add(fHistSurvivedPhiEtaMinusMinus);
  
  //phi vs eta for MC +-
  fHistGeneratedPhiEtaPlusMinus = new TH2F("fHistGeneratedPhiEtaPlusMinus",
					   "Generated +- primaries;#Delta#phi;#Delta#eta",
					   dphiBin,nArrayDPhi,detaBin,nArrayDEta);
  fOutputList->Add(fHistGeneratedPhiEtaPlusMinus);
  fHistSurvivedPhiEtaPlusMinus = new TH2F("fHistSurvivedPhiEtaPlusMinus",
					  "Survived +- primaries;#Delta#phi;#Delta#eta",
					  dphiBin,nArrayDPhi,detaBin,nArrayDEta);
  fOutputList->Add(fHistSurvivedPhiEtaPlusMinus);
  
  fHistSurvived4EtaPtPhiPlus = new TH3F("fHistSurvived4EtaPtPhiPlus",
                                        "Survived4 + primaries;#eta;p_{T} (GeV/c);#phi",
                                        etaBin,nArrayEta,ptBin,nArrayPt,phiBin,nArrayPhi);
  fOutputList->Add(fHistSurvived4EtaPtPhiPlus);
  fHistSurvived8EtaPtPhiPlus = new TH3F("fHistSurvived8EtaPtPhiPlus",
					"Survived8 + primaries;#eta;p_{T} (GeV/c);#phi",
					etaBin,nArrayEta,ptBin,nArrayPt,phiBin,nArrayPhi);
  fOutputList->Add(fHistSurvived8EtaPtPhiPlus);
  
  //fQAList->Print();
  //fOutputList->Print(); 
  PostData(1, fQAList);
  PostData(2, fOutputList);
}

//________________________________________________________________________
void AliAnalysisTaskEffContBF::UserExec(Option_t *) {
  // Main loop
  // Called for each event
  
  fAOD = dynamic_cast<AliAODEvent*>(InputEvent());
  if (!fAOD) {
    printf("ERROR: fAOD not available\n");
    return;
  }

  fArrayMC = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));   
  if (!fArrayMC)  
    AliFatal("No array of MC particles found !!!"); // MW  no AliFatal use return values   
  
  AliMCEvent* mcEvent = MCEvent();
  if (!mcEvent) {
    AliError("ERROR: Could not retrieve MC event");
    return;
  }

  // PID Response task active?
  if(fElectronRejection) {
    fPIDResponse = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->GetPIDResponse();
    if (!fPIDResponse) AliFatal("This Task needs the PID response attached to the inputHandler");
  }

  // ==============================================================================================
  // Copy from AliAnalysisTaskPhiCorrelations:
  // For productions with injected signals, figure out above which label to skip particles/tracks
  Int_t skipParticlesAbove = 0;
  if (fInjectedSignals)
  {
    AliGenEventHeader* eventHeader = 0;
    Int_t headers = 0;
    
    // AOD only
    AliAODMCHeader* header = (AliAODMCHeader*) fAOD->GetList()->FindObject(AliAODMCHeader::StdBranchName());
    if (!header){
      AliFatal("fInjectedSignals set but no MC header found");
      return;
    }
    
    headers = header->GetNCocktailHeaders();
    eventHeader = header->GetCocktailHeader(0);
    
    
    if (!eventHeader)
      {
	// We avoid AliFatal here, because the AOD productions sometimes have events where the MC header is missing 
	// (due to unreadable Kinematics) and we don't want to loose the whole job because of a few events
	AliError("First event header not found. Skipping this event.");
	return;
      }
    
    skipParticlesAbove = eventHeader->NProduced();
    AliInfo(Form("Injected signals in this event (%d headers). Keeping particles/tracks of %s. Will skip particles/tracks above %d.", headers, eventHeader->ClassName(), skipParticlesAbove)); 
  }
  // ==============================================================================================

  
  // arrays for 2 particle histograms
  Int_t nMCLabelCounter         = 0;
  const Int_t maxMCLabelCounter = 20000;
  
  Double_t eta[maxMCLabelCounter];
  Double_t pt[maxMCLabelCounter];
  Double_t phi[maxMCLabelCounter];
  Int_t level[maxMCLabelCounter];
  Int_t charge[maxMCLabelCounter];
  
  //AliInfo(Form("%d %d",mcEvent->GetNumberOfTracks(),fAOD->GetNumberOfTracks()));

  fHistEventStats->Fill(1); //all events
  
  //Centrality stuff
  Double_t nCentrality = 0;
  if(fUseCentrality) {
    
    AliAODHeader *headerAOD = dynamic_cast<AliAODHeader*>(fAOD->GetHeader());
    if (!headerAOD){
      AliFatal("AOD header found");
      return;
    }

    AliCentrality *centrality = headerAOD->GetCentralityP();
    nCentrality =centrality->GetCentralityPercentile(fCentralityEstimator.Data());
    

    if(!centrality->IsEventInCentralityClass(fCentralityPercentileMin,
					     fCentralityPercentileMax,
					     fCentralityEstimator.Data()))
      return;
    else {    
      fHistEventStats->Fill(2); //triggered + centrality
      fHistCentrality->Fill(nCentrality);
    }
  }
  //Printf("Centrality selection: %lf - %lf",fCentralityPercentileMin,fCentralityPercentileMax);

  const AliAODVertex *vertex = fAOD->GetPrimaryVertex(); 
  if(vertex) {
    if(vertex->GetNContributors() > 0) {
      Double32_t fCov[6];    
      vertex->GetCovarianceMatrix(fCov);   
      if(fCov[5] != 0) {
	fHistEventStats->Fill(3); //events with a proper vertex
	if(TMath::Abs(vertex->GetX()) < fVxMax) {    // antes Xv
	  //Printf("X Vertex: %lf", vertex->GetX());
	  //Printf("Y Vertex: %lf", vertex->GetY());
	  if(TMath::Abs(vertex->GetY()) < fVyMax) {  // antes Yv
	    if(TMath::Abs(vertex->GetZ()) < fVzMax) {  // antes Zv
	      //Printf("Z Vertex: %lf", vertex->GetZ());
	      
	      fHistEventStats->Fill(4); //analyzed events
	      fHistVz->Fill(vertex->GetZ()); 
	      
	      //++++++++++++++++++CONTAMINATION++++++++++++++++++//
	      Int_t nGoodAODTracks = fAOD->GetNumberOfTracks();
	      Int_t nMCParticles = mcEvent->GetNumberOfTracks();
	      TArrayI labelMCArray(nMCParticles);
	      
	      for(Int_t jTracks = 0; jTracks < nGoodAODTracks; jTracks++) {
		AliAODTrack* track = dynamic_cast<AliAODTrack*>(fAOD->GetTrack(jTracks));
		if(!track) AliFatal("Not a standard AOD");
		if(!track) continue;
		
		if (!track->TestFilterBit(fAODTrackCutBit))
		  continue;
		
		//acceptance
		if(TMath::Abs(track->Eta()) > fMaxEta) 
		  continue;
		if((track->Pt() > fMaxPt)||(track->Pt() <  fMinPt)) 
		  continue;
		
		Double_t phiRad = track->Phi(); 
		
		Int_t label = TMath::Abs(track->GetLabel());
		if(label > nMCParticles) continue;
		AliAODMCParticle *AODmcTrack = (AliAODMCParticle*) mcEvent->GetTrack(label); 
		Short_t gAODmcCharge = AODmcTrack->Charge();////
		//fHistContaminationPrimaries->Fill(track->Eta(),track->Pt(),phiDeg);
		//if (!(AODmcTrack->IsPhysicalPrimary())) {
		//fHistContaminationSecondaries->Fill(track->Eta(),track->Pt(),phiDeg);
		//}

		// ==============================================================================================
		// Partial copy from AliAnalyseLeadingTrackUE::RemoveInjectedSignals:
		// Skip tracks that come from injected signals
		if (fInjectedSignals)
		  {    
     
		    AliAODMCParticle* mother = AODmcTrack;
		    
		    // find the primary mother (if not already physical primary)
		    while (!((AliAODMCParticle*)mother)->IsPhysicalPrimary())
		      {
			if (((AliAODMCParticle*)mother)->GetMother() < 0)
			  {
			    mother = 0;
			    break;
			  }
			
			mother = (AliAODMCParticle*) fArrayMC->At(((AliAODMCParticle*)mother)->GetMother());
			if (!mother)
			  break;
		      }
		    
		    
		    if (!mother)
		      {
			AliError(Form("WARNING: No mother found for particle %d:", AODmcTrack->GetLabel()));
			continue;
		      }

		    if (mother->GetLabel() >= skipParticlesAbove)
		      {
			//AliInfo(Form("Remove particle %d (>= %d)",mother->GetLabel(),skipParticlesAbove));
			continue;
		      }
		  }
		// ==============================================================================================

		if (AODmcTrack->IsPhysicalPrimary()) {
		  if(gAODmcCharge > 0){
		    fHistContaminationPrimariesPlus->Fill(track->Eta(),track->Pt(),phiRad);
		  }
		  if(gAODmcCharge < 0){
		    fHistContaminationPrimariesMinus->Fill(track->Eta(),track->Pt(),phiRad);
		  }
		}
		else{
		  if(gAODmcCharge > 0){
		    fHistContaminationSecondariesPlus->Fill(track->Eta(),track->Pt(),phiRad);
		  }
		  if(gAODmcCharge < 0){
		    fHistContaminationSecondariesMinus->Fill(track->Eta(),track->Pt(),phiRad);
		  }
		}
	      }//loop over tracks
	      //++++++++++++++++++CONTAMINATION++++++++++++++++++//
	      
	      //++++++++++++++++++EFFICIENCY+++++++++++++++++++++//
	      for (Int_t iTracks = 0; iTracks < mcEvent->GetNumberOfTracks(); iTracks++) {
		AliAODMCParticle *mcTrack = (AliAODMCParticle*) mcEvent->GetTrack(iTracks); 
		if (!mcTrack) {
		  AliError(Form("ERROR: Could not receive track %d (mc loop)", iTracks));
		  continue;
		}
		
		//exclude particles generated out of the acceptance
		Double_t vz = mcTrack->Zv();
		if (TMath::Abs(vz) > 50.) continue;
		//acceptance
		if(TMath::Abs(mcTrack->Eta()) > fMaxEta) 
		  continue;
		if((mcTrack->Pt() > fMaxPt)||(mcTrack->Pt() < fMinPt)) 
		  continue;
		
		if(!mcTrack->IsPhysicalPrimary()) continue;   
		
		Short_t gMCCharge = mcTrack->Charge();
		Double_t phiRad = mcTrack->Phi(); 
		
		if(gMCCharge > 0)
		  fHistGeneratedEtaPtPhiPlus->Fill(mcTrack->Eta(),
						   mcTrack->Pt(),
						   phiRad);
		else if(gMCCharge < 0)
		  fHistGeneratedEtaPtPhiMinus->Fill(mcTrack->Eta(),
						    mcTrack->Pt(),
						    phiRad);
		
		Bool_t labelTPC = kTRUE;
		if(labelTPC) {
		  labelMCArray.AddAt(iTracks,nMCLabelCounter);
		  if(nMCLabelCounter >= maxMCLabelCounter){
		    AliWarning(Form("MC Label Counter > Limit (%d) --> stop loop here",maxMCLabelCounter));
		    break;
		  }
		  //fill the arrays for 2 particle analysis
		  eta[nMCLabelCounter]    = mcTrack->Eta();
		  pt[nMCLabelCounter]     = mcTrack->Pt();
		  phi[nMCLabelCounter]    = mcTrack->Phi();
		  charge[nMCLabelCounter] = gMCCharge;
		  
		  level[nMCLabelCounter]  = 1;
		  nMCLabelCounter += 1;
		}  
	      }//loop over MC particles
	      
	      fHistNMult->Fill(nMCLabelCounter);
	      
	      //AOD track loop
	      Int_t nGoodTracks = fAOD->GetNumberOfTracks();   
	      TArrayI labelArray(nGoodTracks);
	      Int_t labelCounter = 0;
	      
	      for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) {
		AliAODTrack *trackAOD = dynamic_cast<AliAODTrack*>(fAOD->GetTrack(iTracks));    
		if(!trackAOD) continue;
		
		//track cuts
		if (!trackAOD->TestFilterBit(fAODTrackCutBit)) 
		  continue;

 		Int_t label = TMath::Abs(trackAOD->GetLabel()); 
		if(IsLabelUsed(labelArray,label)) continue;
		labelArray.AddAt(label,labelCounter);
		labelCounter += 1;
		
		Int_t mcGoods = nMCLabelCounter;
		for (Int_t k = 0; k < mcGoods; k++) {
		  Int_t mcLabel = labelMCArray.At(k);
		  
		  if (mcLabel != TMath::Abs(label)) continue;
		  if(mcLabel != label) continue;		    
		  if(label > trackAOD->GetLabel()) continue; 
		  
		  //acceptance
		  if(TMath::Abs(trackAOD->Eta()) > fMaxEta) 
		    continue;
		  if((trackAOD->Pt() > fMaxPt)||(trackAOD->Pt() <  fMinPt)) 
		    continue;
		  
		  Short_t gCharge = trackAOD->Charge();
		  Double_t phiRad = trackAOD->Phi();

		  //===========================PID (so far only for electron rejection)===============================//		    
		  if(fElectronRejection) {
		    
		    // get the electron nsigma
		    Double_t nSigma = fPIDResponse->NumberOfSigmasTPC(trackAOD,(AliPID::EParticleType)AliPID::kElectron);
		    fHistNSigmaTPCvsPtbeforePID->Fill(trackAOD->Pt(),nSigma);		    
		    
		    // check only for given momentum range
		    if( trackAOD->Pt() > fElectronRejectionMinPt && trackAOD->Pt() < fElectronRejectionMaxPt ){
		      
		      //look only at electron nsigma
		      if(!fElectronOnlyRejection){
			
			//Make the decision based on the n-sigma of electrons
			if(TMath::Abs(nSigma) < fElectronRejectionNSigma) continue;
		      }
		      else{
			
			Double_t nSigmaPions   = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(trackAOD,(AliPID::EParticleType)AliPID::kPion));
			Double_t nSigmaKaons   = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(trackAOD,(AliPID::EParticleType)AliPID::kKaon));
			Double_t nSigmaProtons = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(trackAOD,(AliPID::EParticleType)AliPID::kProton));
			
			//Make the decision based on the n-sigma of electrons exclusively ( = track not in nsigma region for other species)
			if(TMath::Abs(nSigma) < fElectronRejectionNSigma
			   && nSigmaPions   > fElectronRejectionNSigma
			   && nSigmaKaons   > fElectronRejectionNSigma
			   && nSigmaProtons > fElectronRejectionNSigma ) continue;
		      }
		    }
		    
		    fHistNSigmaTPCvsPtafterPID->Fill(trackAOD->Pt(),nSigma);		    

		  }
		  //===========================end of PID (so far only for electron rejection)===============================//		  
		  
		  if(TMath::Abs(trackAOD->Eta()) < fMaxEta && trackAOD->Pt() > fMinPt&&trackAOD->Pt() < fMaxPt){ 
		    level[k]  = 2;
		    
		    if(gCharge > 0)
		      fHistSurvivedEtaPtPhiPlus->Fill(trackAOD->Eta(),
						      trackAOD->Pt(),
						      phiRad);
		    else if(gCharge < 0)
		      fHistSurvivedEtaPtPhiMinus->Fill(trackAOD->Eta(),
						       trackAOD->Pt(),
						       phiRad);
		  }//tracks		   
		}//end of mcGoods
	      }//AOD track loop
	      
	      labelMCArray.Reset();
	      labelArray.Reset();	       
	      
	    }//Vz cut
	  }//Vy cut
	}//Vx cut
      }//Vz resolution
    }//number of contributors
  }//valid vertex  
  
  // Here comes the 2 particle analysis
  // loop over all good MC particles
  for (Int_t i = 0; i < nMCLabelCounter ; i++) {
    // control 1D histograms (charge might be different?)
    if(charge[i] > 0){
      if(level[i] > 0) fHistGeneratedEtaPtPlusControl->Fill(eta[i],pt[i]);
      if(level[i] > 1) fHistSurvivedEtaPtPlusControl->Fill(eta[i],pt[i]);
    }
    else if(charge[i] < 0){
      if(level[i] > 0) fHistGeneratedEtaPtMinusControl->Fill(eta[i],pt[i]);
      if(level[i] > 1) fHistSurvivedEtaPtMinusControl->Fill(eta[i],pt[i]);
    }
    
    
    for (Int_t j = i+1; j < nMCLabelCounter ; j++) {
      
      if(charge[i] > 0 && charge[j] > 0 ){
	if(level[i] > 0 && level[j] > 0) {  
	  fHistGeneratedEtaPtPlusPlus->Fill(TMath::Abs(eta[i]-eta[j]),pt[i]);
	  if (TMath::Abs(phi[i]-phi[j]) <  TMath::Pi())
	    fHistGeneratedPhiEtaPlusPlus->Fill(TMath::Abs(phi[i]-phi[j]),TMath::Abs(eta[i]-eta[j]));
	}
	if(level[i] > 1 && level[j] > 1) {
	  fHistSurvivedEtaPtPlusPlus->Fill(TMath::Abs(eta[i]-eta[j]),pt[i]);
	  if (TMath::Abs(phi[i]-phi[j]) < TMath::Pi())
	    fHistSurvivedPhiEtaPlusPlus->Fill(TMath::Abs(phi[i]-phi[j]),TMath::Abs(eta[i]-eta[j]));
	}
      }
      
      else if(charge[i] < 0 && charge[j] < 0 ){
	if(level[i] > 0 && level[j] > 0) {
	  fHistGeneratedEtaPtMinusMinus->Fill(TMath::Abs(eta[i]-eta[j]),pt[i]);	    
	  if (TMath::Abs(phi[i]-phi[j]) <  TMath::Pi())
	    fHistGeneratedPhiEtaMinusMinus->Fill(TMath::Abs(phi[i]-phi[j]),TMath::Abs(eta[i]-eta[j]));  	    
	}
	if(level[i] > 2 && level[j] > 1) {
	  fHistSurvivedEtaPtMinusMinus->Fill(TMath::Abs(eta[i]-eta[j]),pt[i]);
	  if (TMath::Abs(phi[i]-phi[j]) <  TMath::Pi())
	    fHistSurvivedPhiEtaMinusMinus->Fill(TMath::Abs(phi[i]-phi[j]),TMath::Abs(eta[i]-eta[j]));
	}
      }
      
      else if((charge[i] > 0 && charge[j] < 0)||(charge[i] < 0 && charge[j] > 0)){
	if(level[i] > 0 && level[j] > 0) {
	  fHistGeneratedEtaPtPlusMinus->Fill(TMath::Abs(eta[i]-eta[j]),pt[i]);
	  if (TMath::Abs(phi[i]-phi[j]) <  TMath::Pi())
	    fHistGeneratedPhiEtaPlusMinus->Fill(TMath::Abs(phi[i]-phi[j]),TMath::Abs(eta[i]-eta[j]));	
	}
	if(level[i] > 2 && level[j] > 1) {
	  fHistSurvivedEtaPtPlusMinus->Fill(TMath::Abs(eta[i]-eta[j]),pt[i]);
	  if (TMath::Abs(phi[i]-phi[j]) <  TMath::Pi())
	    fHistSurvivedPhiEtaPlusMinus->Fill(TMath::Abs(phi[i]-phi[j]),TMath::Abs(eta[i]-eta[j]));
	}	
      }
    }
  }
}

//________________________________________________________________________
void AliAnalysisTaskEffContBF::Terminate(Option_t *) {
  // Draw result to the screen
  // Called once at the end of the query

  fOutputList = dynamic_cast<TList*> (GetOutputData(1));
  if (!fOutputList) {
    printf("ERROR: Output list not available\n");
    return;
  }
}

//____________________________________________________________________//
Bool_t AliAnalysisTaskEffContBF::IsLabelUsed(TArrayI labelArray, Int_t label) {
  //Checks if the label is used already
  Bool_t status = kFALSE;
  for(Int_t i = 0; i < labelArray.GetSize(); i++) {
    if(labelArray.At(i) == label)
      status = kTRUE;
  }

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