ROOT logo
#include "TChain.h"
#include "TList.h"
#include "TCanvas.h"
#include "TLorentzVector.h"
#include "TGraphErrors.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TArrayF.h"
#include "TF1.h"
#include "TRandom.h"

#include "AliAnalysisTaskSE.h"
#include "AliAnalysisManager.h"

#include "AliESDVertex.h"
#include "AliESDEvent.h"
#include "AliESDInputHandler.h"
#include "AliAODEvent.h"
#include "AliAODTrack.h"
#include "AliAODInputHandler.h"
#include "AliGenEventHeader.h"
#include "AliGenHijingEventHeader.h"
#include "AliMCEventHandler.h"
#include "AliMCEvent.h"
#include "AliStack.h"
#include "AliESDtrackCuts.h"
#include "AliLog.h"

#include "TH2D.h"                  
#include "AliPID.h"                
#include "AliPIDResponse.h"        
#include "AliPIDCombined.h"        

#include "AliAnalysisTaskBF.h"
#include "AliBalance.h"


// Analysis task for the BF code
// Authors: Panos.Christakoglou@nikhef.nl

ClassImp(AliAnalysisTaskBF)

//________________________________________________________________________
AliAnalysisTaskBF::AliAnalysisTaskBF(const char *name) 
: AliAnalysisTaskSE(name), 
  fBalance(0),
  fRunShuffling(kFALSE),
  fShuffledBalance(0),
  fList(0),
  fListBF(0),
  fListBFS(0),
  fHistListPIDQA(0),
  fHistEventStats(0),
  fHistCentStats(0),
  fHistTriggerStats(0),
  fHistTrackStats(0),
  fHistVx(0),
  fHistVy(0),
  fHistVz(0),
  fHistClus(0),
  fHistDCA(0),
  fHistChi2(0),
  fHistPt(0),
  fHistEta(0),
  fHistRapidity(0),
  fHistPhi(0),
  fHistPhiBefore(0),
  fHistPhiAfter(0),
  fHistPhiPos(0),
  fHistPhiNeg(0),
  fHistV0M(0),
  fHistRefTracks(0),
  fHistdEdxVsPTPCbeforePID(NULL),
  fHistBetavsPTOFbeforePID(NULL), 
  fHistProbTPCvsPtbeforePID(NULL), 
  fHistProbTOFvsPtbeforePID(NULL), 
  fHistProbTPCTOFvsPtbeforePID(NULL),
  fHistNSigmaTPCvsPtbeforePID(NULL), 
  fHistNSigmaTOFvsPtbeforePID(NULL), 
  fHistdEdxVsPTPCafterPID(NULL),
  fHistBetavsPTOFafterPID(NULL), 
  fHistProbTPCvsPtafterPID(NULL), 
  fHistProbTOFvsPtafterPID(NULL), 
  fHistProbTPCTOFvsPtafterPID(NULL),
  fHistNSigmaTPCvsPtafterPID(NULL), 
  fHistNSigmaTOFvsPtafterPID(NULL),  
  fPIDResponse(0x0),
  fPIDCombined(0x0),
  fParticleOfInterest(kPion),
  fPidDetectorConfig(kTPCTOF),
  fUsePID(kFALSE),
  fUsePIDnSigma(kTRUE),
  fUsePIDPropabilities(kFALSE), 
  fPIDNSigma(3.),
  fMinAcceptedPIDProbability(0.8),
  fESDtrackCuts(0),
  fCentralityEstimator("V0M"),
  fUseCentrality(kFALSE),
  fCentralityPercentileMin(0.), 
  fCentralityPercentileMax(5.),
  fImpactParameterMin(0.),
  fImpactParameterMax(20.),
  fUseMultiplicity(kFALSE),
  fNumberOfAcceptedTracksMin(0),
  fNumberOfAcceptedTracksMax(10000),
  fHistNumberOfAcceptedTracks(0),
  fUseOfflineTrigger(kFALSE),
  fVxMax(0.3),
  fVyMax(0.3),
  fVzMax(10.),
  fAODtrackCutBit(128),
  fPtMin(0.3),
  fPtMax(1.5),
  fEtaMin(-0.8),
  fEtaMax(-0.8),
  fDCAxyCut(-1),
  fDCAzCut(-1),
  fTPCchi2Cut(-1),
  fNClustersTPCCut(-1),
  fAcceptanceParameterization(0),
  fDifferentialV2(0),
  fUseFlowAfterBurner(kFALSE),
  fExcludeResonancesInMC(kFALSE),
  fUseMCPdgCode(kFALSE),
  fPDGCodeToBeAnalyzed(-1) {
  // Constructor
  // Define input and output slots here
  // Input slot #0 works with a TChain
  DefineInput(0, TChain::Class());
  // Output slot #0 writes into a TH1 container
  DefineOutput(1, TList::Class());
  DefineOutput(2, TList::Class());
  DefineOutput(3, TList::Class());
  DefineOutput(4, TList::Class());
}

//________________________________________________________________________
AliAnalysisTaskBF::~AliAnalysisTaskBF() {

  // delete fBalance; 
  // delete fShuffledBalance; 
  // delete fList;
  // delete fListBF; 
  // delete fListBFS;

  // delete fHistEventStats; 
  // delete fHistTrackStats; 
  // delete fHistVx; 
  // delete fHistVy; 
  // delete fHistVz; 

  // delete fHistClus;
  // delete fHistDCA;
  // delete fHistChi2;
  // delete fHistPt;
  // delete fHistEta;
  // delete fHistPhi;
  // delete fHistV0M;
}

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

  // global switch disabling the reference 
  // (to avoid "Replacing existing TH1" if several wagons are created in train)
  Bool_t oldStatus = TH1::AddDirectoryStatus();
  TH1::AddDirectory(kFALSE);

  if(!fBalance) {
    fBalance = new AliBalance();
    fBalance->SetAnalysisLevel("ESD");
    //fBalance->SetNumberOfBins(-1,16);
    fBalance->SetInterval(-1,-0.8,0.8,16,0.,1.6);
  }
  if(fRunShuffling) {
    if(!fShuffledBalance) {
      fShuffledBalance = new AliBalance();
      fShuffledBalance->SetAnalysisLevel("ESD");
      //fShuffledBalance->SetNumberOfBins(-1,16);
      fShuffledBalance->SetInterval(-1,-0.8,0.8,16,0.,1.6);
    }
  }

  //QA list
  fList = new TList();
  fList->SetName("listQA");
  fList->SetOwner();

  //Balance Function list
  fListBF = new TList();
  fListBF->SetName("listBF");
  fListBF->SetOwner();

  if(fRunShuffling) {
    fListBFS = new TList();
    fListBFS->SetName("listBFShuffled");
    fListBFS->SetOwner();
  }

  //PID QA list
  if(fUsePID) {
    fHistListPIDQA = new TList();
    fHistListPIDQA->SetName("listQAPID");
    fHistListPIDQA->SetOwner();
  }

  //Event stats.
  TString gCutName[4] = {"Total","Offline trigger",
                         "Vertex","Analyzed"};

  TString gAnalysisLevel = fBalance->GetAnalysisLevel();
  
  if ((gAnalysisLevel == "ESD") || (gAnalysisLevel == "AOD") || (gAnalysisLevel == "MCESD")) {
    fHistEventStats = new TH2D("fHistEventStats",
			       "Event statistics;;Centrality",
			       4,0.5,4.5, 100,0,100);
  }
  
  if (gAnalysisLevel == "MC"){
    fHistEventStats = new TH2D("fHistEventStats",
			       "Event statistics;;Centrality",
			       4,0.5,4.5, 10000,0,15);
  }


  for(Int_t i = 1; i <= 4; i++)
    fHistEventStats->GetXaxis()->SetBinLabel(i,gCutName[i-1].Data());
  fList->Add(fHistEventStats);

  TString gCentName[9] = {"V0M","FMD","TRK","TKL","CL0","CL1","V0MvsFMD","TKLvsV0M","ZEMvsZDC"};
  fHistCentStats = new TH2F("fHistCentStats",
                             "Centrality statistics;;Cent percentile",
			    9,-0.5,8.5,220,-5,105);
  for(Int_t i = 1; i <= 9; i++)
    fHistCentStats->GetXaxis()->SetBinLabel(i,gCentName[i-1].Data());
  fList->Add(fHistCentStats);

  fHistTriggerStats = new TH1F("fHistTriggerStats","Trigger statistics;TriggerBit;N_{events}",130,0,130);
  fList->Add(fHistTriggerStats);

  fHistTrackStats = new TH1F("fHistTrackStats","Event statistics;TrackFilterBit;N_{events}",130,0,130);
  fList->Add(fHistTrackStats);

  fHistNumberOfAcceptedTracks = new TH2D("fHistNumberOfAcceptedTracks",";N_{acc.};;Centrality",4001,-0.5,4000.5,100,0,100);
  fList->Add(fHistNumberOfAcceptedTracks);

  // Vertex distributions
  fHistVx = new TH1F("fHistVx","Primary vertex distribution - x coordinate;V_{x} (cm);Entries",100,-0.5,0.5);
  fList->Add(fHistVx);
  fHistVy = new TH1F("fHistVy","Primary vertex distribution - y coordinate;V_{y} (cm);Entries",100,-0.5,0.5);
  fList->Add(fHistVy);
  fHistVz = new TH1F("fHistVz","Primary vertex distribution - z coordinate;V_{z} (cm);Entries",100,-20.,20.);
  fList->Add(fHistVz);

  // QA histograms
  fHistClus = new TH2F("fHistClus","# Cluster (TPC vs. ITS)",10,0,10,200,0,200);
  fList->Add(fHistClus);
  fHistChi2 = new TH1F("fHistChi2","Chi2/NDF distribution",200,0,10);
  fList->Add(fHistChi2);
  fHistDCA  = new TH2F("fHistDCA","DCA (xy vs. z)",400,-5,5,400,-5,5); 
  fList->Add(fHistDCA);
  fHistPt   = new TH1F("fHistPt","p_{T} distribution",200,0,10);
  fList->Add(fHistPt);
  fHistEta  = new TH1F("fHistEta","#eta distribution",200,-2,2);
  fList->Add(fHistEta);
  fHistRapidity  = new TH1F("fHistRapidity","y distribution",200,-2,2);
  fList->Add(fHistRapidity);
  fHistPhi  = new TH1F("fHistPhi","#phi distribution",200,-20,380);
  fList->Add(fHistPhi);
  fHistPhiBefore  = new TH1F("fHistPhiBefore","#phi distribution",200,0.,2*TMath::Pi());
  fList->Add(fHistPhiBefore);
  fHistPhiAfter  = new TH1F("fHistPhiAfter","#phi distribution",200,0.,2*TMath::Pi());
  fList->Add(fHistPhiAfter);
  fHistPhiPos  = new TH1F("fHistPhiPos","#phi distribution for positive particles",200,-20,380);
  fList->Add(fHistPhiPos);
  fHistPhiNeg  = new TH1F("fHistPhiNeg","#phi distribution for negative particles",200,-20,380);
  fList->Add(fHistPhiNeg);
  fHistV0M  = new TH2F("fHistV0M","V0 Multiplicity C vs. A",500, 0, 20000, 500, 0, 20000);
  fList->Add(fHistV0M);
  TString gRefTrackName[6] = {"tracks","tracksPos","tracksNeg","tracksTPConly","clusITS0","clusITS1"};
  fHistRefTracks  = new TH2F("fHistRefTracks","Nr of Ref tracks/event vs. ref track estimator;;Nr of tracks",6, 0, 6, 400, 0, 20000);
  for(Int_t i = 1; i <= 6; i++)
    fHistRefTracks->GetXaxis()->SetBinLabel(i,gRefTrackName[i-1].Data());
  fList->Add(fHistRefTracks);

  // QA histograms for HBTinspired and Conversion cuts
  fList->Add(fBalance->GetQAHistHBTbefore());
  fList->Add(fBalance->GetQAHistHBTafter());
  fList->Add(fBalance->GetQAHistConversionbefore());
  fList->Add(fBalance->GetQAHistConversionafter());

  // Balance function histograms
  // Initialize histograms if not done yet
  if(!fBalance->GetHistNp(0)){
    AliWarning("Histograms not yet initialized! --> Will be done now");
    AliWarning("--> Add 'gBalance->InitHistograms()' in your configBalanceFunction");
    fBalance->InitHistograms();
  }

  if(fRunShuffling) {
    if(!fShuffledBalance->GetHistNp(0)) {
      AliWarning("Histograms (shuffling) not yet initialized! --> Will be done now");
      AliWarning("--> Add 'gBalance->InitHistograms()' in your configBalanceFunction");
      fShuffledBalance->InitHistograms();
    }
  }

  for(Int_t a = 0; a < ANALYSIS_TYPES; a++){
    fListBF->Add(fBalance->GetHistNp(a));
    fListBF->Add(fBalance->GetHistNn(a));
    fListBF->Add(fBalance->GetHistNpn(a));
    fListBF->Add(fBalance->GetHistNnn(a));
    fListBF->Add(fBalance->GetHistNpp(a));
    fListBF->Add(fBalance->GetHistNnp(a));

    if(fRunShuffling) {
      fListBFS->Add(fShuffledBalance->GetHistNp(a));
      fListBFS->Add(fShuffledBalance->GetHistNn(a));
      fListBFS->Add(fShuffledBalance->GetHistNpn(a));
      fListBFS->Add(fShuffledBalance->GetHistNnn(a));
      fListBFS->Add(fShuffledBalance->GetHistNpp(a));
      fListBFS->Add(fShuffledBalance->GetHistNnp(a));
    }  
  }  

  if(fESDtrackCuts) fList->Add(fESDtrackCuts);

  //====================PID========================//
  if(fUsePID) {
    fPIDCombined = new AliPIDCombined();
    fPIDCombined->SetDefaultTPCPriors();

    fHistdEdxVsPTPCbeforePID = new TH2D ("dEdxVsPTPCbefore","dEdxVsPTPCbefore", 1000, -10.0, 10.0, 1000, 0, 1000); 
    fHistListPIDQA->Add(fHistdEdxVsPTPCbeforePID); //addition 
    
    fHistBetavsPTOFbeforePID = new TH2D ("BetavsPTOFbefore","BetavsPTOFbefore", 1000, -10.0, 10., 1000, 0, 1.2); 
    fHistListPIDQA->Add(fHistBetavsPTOFbeforePID); //addition
    
    fHistProbTPCvsPtbeforePID = new TH2D ("ProbTPCvsPtbefore","ProbTPCvsPtbefore", 1000, -10.0,10.0, 1000, 0, 2.0); 
    fHistListPIDQA->Add(fHistProbTPCvsPtbeforePID); //addition 
    
    fHistProbTOFvsPtbeforePID = new TH2D ("ProbTOFvsPtbefore","ProbTOFvsPtbefore", 1000, -50, 50, 1000, 0, 2.0); 
    fHistListPIDQA->Add(fHistProbTOFvsPtbeforePID); //addition 

    fHistProbTPCTOFvsPtbeforePID =new TH2D ("ProbTPCTOFvsPtbefore","ProbTPCTOFvsPtbefore", 1000, -50, 50, 1000, 0, 2.0); 
    fHistListPIDQA->Add(fHistProbTPCTOFvsPtbeforePID); //addition 
    
    fHistNSigmaTPCvsPtbeforePID = new TH2D ("NSigmaTPCvsPtbefore","NSigmaTPCvsPtbefore", 1000, -10, 10, 1000, 0, 500); 
    fHistListPIDQA->Add(fHistNSigmaTPCvsPtbeforePID); //addition 
    
    fHistNSigmaTOFvsPtbeforePID = new TH2D ("NSigmaTOFvsPtbefore","NSigmaTOFvsPtbefore", 1000, -10, 10, 1000, 0, 500); 
    fHistListPIDQA->Add(fHistNSigmaTOFvsPtbeforePID); //addition 
    
    fHistdEdxVsPTPCafterPID = new TH2D ("dEdxVsPTPCafter","dEdxVsPTPCafter", 1000, -10, 10, 1000, 0, 1000); 
    fHistListPIDQA->Add(fHistdEdxVsPTPCafterPID); //addition 
    
    fHistBetavsPTOFafterPID = new TH2D ("BetavsPTOFafter","BetavsPTOFafter", 1000, -10, 10, 1000, 0, 1.2); 
    fHistListPIDQA->Add(fHistBetavsPTOFafterPID); //addition 
    
    fHistProbTPCvsPtafterPID = new TH2D ("ProbTPCvsPtafter","ProbTPCvsPtafter", 1000, -10, 10, 1000, 0, 2); 
    fHistListPIDQA->Add(fHistProbTPCvsPtafterPID); //addition 
  
    fHistProbTOFvsPtafterPID = new TH2D ("ProbTOFvsPtafter","ProbTOFvsPtafter", 1000,  -10, 10, 1000, 0, 2); 
    fHistListPIDQA->Add(fHistProbTOFvsPtafterPID); //addition  
    
    fHistProbTPCTOFvsPtafterPID =new TH2D ("ProbTPCTOFvsPtafter","ProbTPCTOFvsPtafter", 1000, -50, 50, 1000, 0, 2.0); 
    fHistListPIDQA->Add(fHistProbTPCTOFvsPtafterPID); //addition 

    fHistNSigmaTPCvsPtafterPID = new TH2D ("NSigmaTPCvsPtafter","NSigmaTPCvsPtafter", 1000, -10, 10, 1000, 0, 500); 
    fHistListPIDQA->Add(fHistNSigmaTPCvsPtafterPID); //addition  
    
    fHistNSigmaTOFvsPtafterPID = new TH2D ("NSigmaTOFvsPtafter","NSigmaTOFvsPtafter", 1000, -10, 10, 1000, 0, 500); 
    fHistListPIDQA->Add(fHistNSigmaTOFvsPtafterPID); //addition 
  }
  //====================PID========================//

  // Post output data.
  PostData(1, fList);
  PostData(2, fListBF);
  if(fRunShuffling) PostData(3, fListBFS);
  if(fUsePID) PostData(4, fHistListPIDQA);       //PID

  TH1::AddDirectory(oldStatus);

}

//________________________________________________________________________
void AliAnalysisTaskBF::UserExec(Option_t *) {
  // Main loop
  // Called for each event
  TString gAnalysisLevel = fBalance->GetAnalysisLevel();

  AliESDtrack *trackTPC   = NULL;

  Int_t gNumberOfAcceptedTracks = 0;
  Float_t fCentrality           = -999.;

  // for HBT like cuts need magnetic field sign
  Float_t bSign = 0; // only used in AOD so far

  // vector holding the charges/kinematics of all tracks (charge,y,eta,phi,p0,p1,p2,pt,E)
  vector<Double_t> *chargeVectorShuffle[9];   // this will be shuffled
  vector<Double_t> *chargeVector[9];          // original charge
  for(Int_t i = 0; i < 9; i++){
    chargeVectorShuffle[i] = new vector<Double_t>;
    chargeVector[i]        = new vector<Double_t>;
  }

  Double_t vCharge;
  Double_t vY;
  Double_t vEta;
  Double_t vPhi;
  Double_t vP[3];
  Double_t vPt;
  Double_t vE;

  if(fUsePID) {
    fPIDResponse = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->GetPIDResponse();
    if (!fPIDResponse) AliFatal("This Task needs the PID response attached to the inputHandler");
  }
 
  //ESD analysis
  if(gAnalysisLevel == "ESD") {
    AliESDEvent* gESD = dynamic_cast<AliESDEvent*>(InputEvent()); // from TaskSE
    if (!gESD) {
      AliError("ERROR: gESD not available");
      return;
    }

    // store offline trigger bits
    fHistTriggerStats->Fill(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected());

    AliCentrality *centrality = 0x0; 
    if(fUseCentrality) {
      //Centrality stuff
      centrality = gESD->GetCentrality();
      fCentrality = centrality->GetCentralityPercentile(fCentralityEstimator.Data());
    }

    // event selection done in AliAnalysisTaskSE::Exec() --> this is not used
    fHistEventStats->Fill(1,fCentrality); //all events
    Bool_t isSelected = kTRUE;
    if(fUseOfflineTrigger)
      isSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
    if(isSelected) {
      fHistEventStats->Fill(2,fCentrality); //triggered events

      if(fUseCentrality) {
	//Centrality stuff
	// take only events inside centrality class
	if(!centrality->IsEventInCentralityClass(fCentralityPercentileMin,
						 fCentralityPercentileMax,
						 fCentralityEstimator.Data()))
	  return;
	// centrality QA (V0M)
	fHistV0M->Fill(gESD->GetVZEROData()->GetMTotV0A(), gESD->GetVZEROData()->GetMTotV0C());
      }
	
      const AliESDVertex *vertex = gESD->GetPrimaryVertex();
      if(vertex) {
	if(vertex->GetNContributors() > 0) {
	  if(vertex->GetZRes() != 0) {
	    fHistEventStats->Fill(3,fCentrality); //events with a proper vertex
	    if(TMath::Abs(vertex->GetX()) < fVxMax) {
	      if(TMath::Abs(vertex->GetY()) < fVyMax) {
		if(TMath::Abs(vertex->GetZ()) < fVzMax) {
		  fHistEventStats->Fill(4,fCentrality); //analayzed events
		  fHistVx->Fill(vertex->GetX());
		  fHistVy->Fill(vertex->GetY());
		  fHistVz->Fill(vertex->GetZ());
		  
		  //Printf("There are %d tracks in this event", gESD->GetNumberOfTracks());
		  for (Int_t iTracks = 0; iTracks < gESD->GetNumberOfTracks(); iTracks++) {
		    AliESDtrack* track = dynamic_cast<AliESDtrack *>(gESD->GetTrack(iTracks));
		    if (!track) {
		      AliError(Form("ERROR: Could not receive track %d", iTracks));
		      continue;
		    }	
		    
		    // take only TPC only tracks
		    trackTPC   = new AliESDtrack();
		    if(!track->FillTPCOnlyTrack(*trackTPC)) continue;
		    
		    //ESD track cuts
		    if(fESDtrackCuts) 
		      if(!fESDtrackCuts->AcceptTrack(trackTPC)) continue;
		    
		    // fill QA histograms
		    Float_t b[2];
		    Float_t bCov[3];
		    trackTPC->GetImpactParameters(b,bCov);
		    if (bCov[0]<=0 || bCov[2]<=0) {
		      AliDebug(1, "Estimated b resolution lower or equal zero!");
		      bCov[0]=0; bCov[2]=0;
		    }
		    
		    Int_t nClustersTPC = -1;
		    nClustersTPC = trackTPC->GetTPCNclsIter1();   // TPC standalone
		    //nClustersTPC = track->GetTPCclusters(0);   // global track
		    Float_t chi2PerClusterTPC = -1;
		    if (nClustersTPC!=0) {
		      chi2PerClusterTPC = trackTPC->GetTPCchi2Iter1()/Float_t(nClustersTPC);      // TPC standalone
		      //chi2PerClusterTPC = track->GetTPCchi2()/Float_t(nClustersTPC);     // global track
		    }

		    //===========================PID===============================//		    
		    if(fUsePID) {
		      Double_t prob[AliPID::kSPECIES]={0.};
		      Double_t probTPC[AliPID::kSPECIES]={0.};
		      Double_t probTOF[AliPID::kSPECIES]={0.};
		      Double_t probTPCTOF[AliPID::kSPECIES]={0.};

		      Double_t nSigma = 0.;
                      UInt_t detUsedTPC = 0;
		      UInt_t detUsedTOF = 0;
                      UInt_t detUsedTPCTOF = 0;

		      //Decide what detector configuration we want to use
		      switch(fPidDetectorConfig) {
		      case kTPCpid:
			fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTPC);
			nSigma = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(track,(AliPID::EParticleType)fParticleOfInterest));
			detUsedTPC = fPIDCombined->ComputeProbabilities(track, fPIDResponse, probTPC);
			for(Int_t iSpecies = 0; iSpecies < AliPID::kSPECIES; iSpecies++)
			  prob[iSpecies] = probTPC[iSpecies];
			break;
		      case kTOFpid:
			fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTOF);
			nSigma = TMath::Abs(fPIDResponse->NumberOfSigmasTOF(track,(AliPID::EParticleType)fParticleOfInterest));
			detUsedTOF = fPIDCombined->ComputeProbabilities(track, fPIDResponse, probTOF);
			for(Int_t iSpecies = 0; iSpecies < AliPID::kSPECIES; iSpecies++)
			  prob[iSpecies] = probTOF[iSpecies];
			break;
		      case kTPCTOF:
			fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTOF|AliPIDResponse::kDetTPC);
			detUsedTPCTOF = fPIDCombined->ComputeProbabilities(track, fPIDResponse, probTPCTOF);
			for(Int_t iSpecies = 0; iSpecies < AliPID::kSPECIES; iSpecies++)
			  prob[iSpecies] = probTPCTOF[iSpecies];
			break;
		      default:
			break;
		      }//end switch: define detector mask
		      
		      //Filling the PID QA
		      Double_t tofTime = -999., length = 999., tof = -999.;
		      Double_t c = TMath::C()*1.E-9;// m/ns
		      Double_t beta = -999.;
		      Double_t  nSigmaTOFForParticleOfInterest = -999.;
		      if ( (track->IsOn(AliESDtrack::kTOFin)) &&
			   (track->IsOn(AliESDtrack::kTIME))  ) { 
			tofTime = track->GetTOFsignal();//in ps
			length = track->GetIntegratedLength();
			tof = tofTime*1E-3; // ns	
			
			if (tof <= 0) {
			  //Printf("WARNING: track with negative TOF time found! Skipping this track for PID checks\n");
			  continue;
			}
			if (length <= 0){
			  //printf("WARNING: track with negative length found!Skipping this track for PID checks\n");
			  continue;
			}
			
			length = length*0.01; // in meters
			tof = tof*c;
			beta = length/tof;
			
			nSigmaTOFForParticleOfInterest = fPIDResponse->NumberOfSigmasTOF(track,(AliPID::EParticleType)fParticleOfInterest);
			fHistBetavsPTOFbeforePID ->Fill(track->P()*track->Charge(),beta);
			fHistProbTOFvsPtbeforePID ->Fill(track->Pt(),probTOF[fParticleOfInterest]);
			fHistNSigmaTOFvsPtbeforePID ->Fill(track->Pt(),nSigmaTOFForParticleOfInterest);
		      }//TOF signal 
		      
		      
		      Double_t  nSigmaTPCForParticleOfInterest = fPIDResponse->NumberOfSigmasTPC(track,(AliPID::EParticleType)fParticleOfInterest);
		      fHistdEdxVsPTPCbeforePID -> Fill(track->P()*track->Charge(),track->GetTPCsignal());
		      fHistProbTPCvsPtbeforePID -> Fill(track->Pt(),probTPC[fParticleOfInterest]); 
		      fHistNSigmaTPCvsPtbeforePID -> Fill(track->Pt(),nSigmaTPCForParticleOfInterest); 
		      fHistProbTPCTOFvsPtbeforePID -> Fill(track->Pt(),probTPCTOF[fParticleOfInterest]);
		      //end of QA-before pid
		      
		      if ((detUsedTPC != 0)||(detUsedTOF != 0)||(detUsedTPCTOF != 0)) {
			//Make the decision based on the n-sigma
			if(fUsePIDnSigma) {
			  if(nSigma > fPIDNSigma) continue;}
			
			//Make the decision based on the bayesian
			else if(fUsePIDPropabilities) {
			  if(fParticleOfInterest != TMath::LocMax(AliPID::kSPECIES,prob)) continue;
			  if (prob[fParticleOfInterest] < fMinAcceptedPIDProbability) continue;      
			}
			
			//Fill QA after the PID
			fHistBetavsPTOFafterPID ->Fill(track->P()*track->Charge(),beta);
			fHistProbTOFvsPtafterPID ->Fill(track->Pt(),probTOF[fParticleOfInterest]);
			fHistNSigmaTOFvsPtafterPID ->Fill(track->Pt(),nSigmaTOFForParticleOfInterest);
			
			fHistdEdxVsPTPCafterPID -> Fill(track->P()*track->Charge(),track->GetTPCsignal());
			fHistProbTPCvsPtafterPID -> Fill(track->Pt(),probTPC[fParticleOfInterest]); 
			fHistProbTPCTOFvsPtafterPID -> Fill(track->Pt(),probTPCTOF[fParticleOfInterest]);
			fHistNSigmaTPCvsPtafterPID -> Fill(track->Pt(),nSigmaTPCForParticleOfInterest); 
		      }
		      
		      PostData(4, fHistListPIDQA);
		    }
                    //===========================PID===============================//
		    vCharge = trackTPC->Charge();
		    vY      = trackTPC->Y();
		    vEta    = trackTPC->Eta();
		    vPhi    = trackTPC->Phi() * TMath::RadToDeg();
		    vE      = trackTPC->E();
		    vPt     = trackTPC->Pt();
		    trackTPC->PxPyPz(vP);
		    fHistClus->Fill(trackTPC->GetITSclusters(0),nClustersTPC);
		    fHistDCA->Fill(b[1],b[0]);
		    fHistChi2->Fill(chi2PerClusterTPC);
		    fHistPt->Fill(vPt);
		    fHistEta->Fill(vEta);
		    fHistPhi->Fill(vPhi);
		    fHistRapidity->Fill(vY);
		    if(vCharge > 0) fHistPhiPos->Fill(vPhi);
		    else if(vCharge < 0) fHistPhiNeg->Fill(vPhi);

		    // fill charge vector
		    chargeVector[0]->push_back(vCharge);
		    chargeVector[1]->push_back(vY);
		    chargeVector[2]->push_back(vEta);
		    chargeVector[3]->push_back(vPhi);
		    chargeVector[4]->push_back(vP[0]);
		    chargeVector[5]->push_back(vP[1]);
		    chargeVector[6]->push_back(vP[2]);
		    chargeVector[7]->push_back(vPt);
		    chargeVector[8]->push_back(vE);

		    if(fRunShuffling) {
		      chargeVectorShuffle[0]->push_back(vCharge);
		      chargeVectorShuffle[1]->push_back(vY);
		      chargeVectorShuffle[2]->push_back(vEta);
		      chargeVectorShuffle[3]->push_back(vPhi);
		      chargeVectorShuffle[4]->push_back(vP[0]);
		      chargeVectorShuffle[5]->push_back(vP[1]);
		      chargeVectorShuffle[6]->push_back(vP[2]);
		      chargeVectorShuffle[7]->push_back(vPt);
		      chargeVectorShuffle[8]->push_back(vE);
		    }
		    
		    delete trackTPC;
		    gNumberOfAcceptedTracks += 1;
		  } //track loop
		  // cout<<"Centrality: "<<fCentrality<<" - Accepted tracks: "<<gNumberOfAcceptedTracks<<endl;
		}//Vz cut
	      }//Vy cut
	    }//Vx cut
	  }//proper vertex resolution
	}//proper number of contributors
      }//vertex object valid
    }//triggered event 
  }//ESD analysis
  
  //AOD analysis (vertex and track cuts also here!!!!)
  else if(gAnalysisLevel == "AOD") {
    AliAODEvent* gAOD = dynamic_cast<AliAODEvent*>(InputEvent()); // from TaskSE
    if(!gAOD) {
      AliError("ERROR: gAOD not available");
      return;
    }

    // for HBT like cuts need magnetic field sign
    bSign = (gAOD->GetMagneticField() > 0) ? 1 : -1;

    AliAODHeader *aodHeader = dynamic_cast<AliAODHeader*>(gAOD->GetHeader());
    if(!aodHeader) AliFatal("Not a standard AOD");

    // store offline trigger bits
    fHistTriggerStats->Fill(aodHeader->GetOfflineTrigger());

    if(fUseCentrality) {
      fCentrality = aodHeader->GetCentralityP()->GetCentralityPercentile(fCentralityEstimator.Data());
    }
    
    //event selection done in AliAnalysisTaskSE::Exec() --> this is not used
    fHistEventStats->Fill(1,fCentrality); //all events
    Bool_t isSelected = kTRUE;
    if(fUseOfflineTrigger)
      isSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
    if(isSelected) {
      fHistEventStats->Fill(2,fCentrality); //triggered events
		  
      //Centrality stuff (centrality in AOD header)
      if(fUseCentrality) {
    	//fCentrality = aodHeader->GetCentralityP()->GetCentralityPercentile(fCentralityEstimator.Data());
	// in OLD AODs (i.e. AOD049) fCentrality can be == 0
	if(fCentrality == 0) 
	  return;
 	
    	// QA for centrality estimators
    	fHistCentStats->Fill(0.,aodHeader->GetCentralityP()->GetCentralityPercentile("V0M"));
    	fHistCentStats->Fill(1.,aodHeader->GetCentralityP()->GetCentralityPercentile("FMD"));
    	fHistCentStats->Fill(2.,aodHeader->GetCentralityP()->GetCentralityPercentile("TRK"));
    	fHistCentStats->Fill(3.,aodHeader->GetCentralityP()->GetCentralityPercentile("TKL"));
    	fHistCentStats->Fill(4.,aodHeader->GetCentralityP()->GetCentralityPercentile("CL0"));
    	fHistCentStats->Fill(5.,aodHeader->GetCentralityP()->GetCentralityPercentile("CL1"));
    	fHistCentStats->Fill(6.,aodHeader->GetCentralityP()->GetCentralityPercentile("V0MvsFMD"));
    	fHistCentStats->Fill(7.,aodHeader->GetCentralityP()->GetCentralityPercentile("TKLvsV0M"));
    	fHistCentStats->Fill(8.,aodHeader->GetCentralityP()->GetCentralityPercentile("ZEMvsZDC"));
	
    	// take only events inside centrality class
    	if((fCentrality < fCentralityPercentileMin) || (fCentrality > fCentralityPercentileMax)) 
    	  return;
	
    	// centrality QA (V0M)
    	fHistV0M->Fill(gAOD->GetVZEROData()->GetMTotV0A(), gAOD->GetVZEROData()->GetMTotV0C());
	
    	// centrality QA (reference tracks)
    	fHistRefTracks->Fill(0.,aodHeader->GetRefMultiplicity());
    	fHistRefTracks->Fill(1.,aodHeader->GetRefMultiplicityPos());
    	fHistRefTracks->Fill(2.,aodHeader->GetRefMultiplicityNeg());
    	fHistRefTracks->Fill(3.,aodHeader->GetTPConlyRefMultiplicity());
    	fHistRefTracks->Fill(4.,aodHeader->GetNumberOfITSClusters(0));
    	fHistRefTracks->Fill(5.,aodHeader->GetNumberOfITSClusters(1));
    	fHistRefTracks->Fill(6.,aodHeader->GetNumberOfITSClusters(2));
    	fHistRefTracks->Fill(7.,aodHeader->GetNumberOfITSClusters(3));
    	fHistRefTracks->Fill(8.,aodHeader->GetNumberOfITSClusters(4));
      }

      const AliAODVertex *vertex = gAOD->GetPrimaryVertex();
      
      if(vertex) {
      	Double32_t fCov[6];
      	vertex->GetCovarianceMatrix(fCov);
	
      	if(vertex->GetNContributors() > 0) {
      	  if(fCov[5] != 0) {
      	    fHistEventStats->Fill(3,fCentrality); //events with a proper vertex
      	    if(TMath::Abs(vertex->GetX()) < fVxMax) {
      	      if(TMath::Abs(vertex->GetY()) < fVyMax) {
      		if(TMath::Abs(vertex->GetZ()) < fVzMax) {
      		  fHistEventStats->Fill(4,fCentrality); //analyzed events
      		  fHistVx->Fill(vertex->GetX());
      		  fHistVy->Fill(vertex->GetY());
      		  fHistVz->Fill(vertex->GetZ());
		  
		  //===========================================//
		  TExMap *trackMap = new TExMap();
		  for (Int_t iTracks = 0; iTracks < gAOD->GetNumberOfTracks(); iTracks++) {
		    AliAODTrack* aodTrack = dynamic_cast<AliAODTrack *>(gAOD->GetTrack(iTracks));
		    if (!aodTrack) {
		      AliError(Form("ERROR: Could not receive track %d", iTracks));
		      continue;
		    }
		    Int_t gID = aodTrack->GetID();
		    //if (!aodTrack->TestFilterBit(fAODtrackCutBit)) trackMap->Add(gID, iTracks);
		    if (aodTrack->TestFilterBit(1)) trackMap->Add(gID, iTracks);
		  }
		  AliAODTrack* newAodTrack; 
		  //===========================================//

      		  //Printf("There are %d tracks in this event", gAOD->GetNumberOfTracks());
      		  for (Int_t iTracks = 0; iTracks < gAOD->GetNumberOfTracks(); iTracks++) {
      		    AliAODTrack* aodTrack = dynamic_cast<AliAODTrack *>(gAOD->GetTrack(iTracks));
      		    if (!aodTrack) {
      		      AliError(Form("ERROR: Could not receive track %d", iTracks));
      		      continue;
      		    }
		    
      		    // AOD track cuts		    
      		    // For ESD Filter Information: ANALYSIS/macros/AddTaskESDfilter.C
		    //===========================================//
		    // take only TPC only tracks 
		    fHistTrackStats->Fill(aodTrack->GetFilterMap());
		    if(!aodTrack->TestFilterBit(fAODtrackCutBit)) continue;

		    Int_t gID = aodTrack->GetID();
		    newAodTrack = gID >= 0 ? aodTrack : dynamic_cast<AliAODTrack*>(gAOD->GetTrack(trackMap->GetValue(-1-gID)));
                    if(!newAodTrack) AliFatal("Not a standard AOD");
		    //Printf("Label: %d - Pt: %lf (old) - %d - Pt: %lf(new)",gID,aodTrack->Pt(), newAodTrack->GetID(), newAodTrack->Pt());
                    //===========================================//

		    //fHistTrackStats->Fill(aodTrack->GetFilterMap());
      		    //if(!aodTrack->TestFilterBit(fAODtrackCutBit)) continue;
		    
      		    vCharge = aodTrack->Charge();
      		    vY      = aodTrack->Y();
      		    vEta    = aodTrack->Eta();
      		    vPhi    = aodTrack->Phi() * TMath::RadToDeg();
      		    vE      = aodTrack->E();
      		    vPt     = aodTrack->Pt();
      		    aodTrack->PxPyPz(vP);
		    
      		    Float_t dcaXY = aodTrack->DCA();      // this is the DCA from global track (not exactly what is cut on)
      		    Float_t dcaZ  = aodTrack->ZAtDCA();   // this is the DCA from global track (not exactly what is cut on)
		    
		    
      		    // Kinematics cuts from ESD track cuts
      		    if( vPt < fPtMin || vPt > fPtMax)      continue;

		    if (!fUsePID) {
		      if( vEta < fEtaMin || vEta > fEtaMax)  continue;
		    }

		    else if (fUsePID){
		      if( vY < fEtaMin || vY > fEtaMax)  continue;
		    }

      		    // Extra DCA cuts (for systematic studies [!= -1])
      		    if( fDCAxyCut != -1 && fDCAzCut != -1){
      		      if(TMath::Sqrt((dcaXY*dcaXY)/(fDCAxyCut*fDCAxyCut)+(dcaZ*dcaZ)/(fDCAzCut*fDCAzCut)) > 1 ){
      			continue;  // 2D cut
      		      }
      		    }
		    
      		    // Extra TPC cuts (for systematic studies [!= -1])
      		    if( fTPCchi2Cut != -1 && aodTrack->Chi2perNDF() > fTPCchi2Cut){
      		      continue;
      		    }
      		    if( fNClustersTPCCut != -1 && aodTrack->GetTPCNcls() < fNClustersTPCCut){
      		      continue;
      		    }

		   //===============================================PID==================================//		    		   
		    if(fUsePID) {
		      Double_t prob[AliPID::kSPECIES]={0.};
		      Double_t probTPC[AliPID::kSPECIES]={0.};
		      Double_t probTOF[AliPID::kSPECIES]={0.};
		      Double_t probTPCTOF[AliPID::kSPECIES]={0.};

		      Double_t nSigma = 0.;
                      UInt_t detUsedTPC = 0;
		      UInt_t detUsedTOF = 0;
                      UInt_t detUsedTPCTOF = 0;

		      //Decide what detector configuration we want to use
		      switch(fPidDetectorConfig) {
		      case kTPCpid:
			fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTPC);
			nSigma = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)fParticleOfInterest));
			//detUsedTPC = fPIDCombined->ComputeProbabilities(aodTrack, fPIDResponse, probTPC);
                        detUsedTPC = (AliPIDResponse::kDetTPC);
			for(Int_t iSpecies = 0; iSpecies < AliPID::kSPECIES; iSpecies++)
			  prob[iSpecies] = probTPC[iSpecies];
			break;
		      case kTOFpid:
			fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTOF);
			nSigma = TMath::Abs(fPIDResponse->NumberOfSigmasTOF(newAodTrack,(AliPID::EParticleType)fParticleOfInterest));
			//detUsedTOF = fPIDCombined->ComputeProbabilities(aodTrack, fPIDResponse, probTOF);
                        detUsedTPC = (AliPIDResponse::kDetTPC);
			for(Int_t iSpecies = 0; iSpecies < AliPID::kSPECIES; iSpecies++)
			  prob[iSpecies] = probTOF[iSpecies];
			break;
		      case kTPCTOF:
			fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTOF|AliPIDResponse::kDetTPC);
			//detUsedTPCTOF = fPIDCombined->ComputeProbabilities(newAodTrack, fPIDResponse, probTPCTOF);
                        detUsedTPC = (AliPIDResponse::kDetTPC);
			for(Int_t iSpecies = 0; iSpecies < AliPID::kSPECIES; iSpecies++)
			  prob[iSpecies] = probTPCTOF[iSpecies];
			break;
		      default:
			break;
		      }//end switch: define detector mask
		      
		      //Filling the PID QA
		      Double_t tofTime = -999., tof = -999.; //length = 999., tof = -999.;
		      //Double_t c = TMath::C()*1.E-9;// m/ns
		      //Double_t beta = -999.;
		      Double_t  nSigmaTOFForParticleOfInterest = -999.;
		      if ( (newAodTrack->IsOn(AliAODTrack::kTOFin)) &&
			   (newAodTrack->IsOn(AliAODTrack::kTIME))  ) { 
			tofTime = newAodTrack->GetTOFsignal();//in ps
			//length = newAodTrack->GetIntegratedLength();
			tof = tofTime*1E-3; // ns	
			
			if (tof <= 0) {
			  //Printf("WARNING: track with negative TOF time found! Skipping this track for PID checks\n");
			  continue;
			}
			//if (length <= 0){
			  //printf("WARNING: track with negative length found!Skipping this track for PID checks\n");
			  //continue;
			//}
			
			//length = length*0.01; // in meters
			//tof = tof*c;
			//beta = length/tof;
			
			nSigmaTOFForParticleOfInterest = fPIDResponse->NumberOfSigmasTOF(newAodTrack,(AliPID::EParticleType)fParticleOfInterest);
			//fHistBetavsPTOFbeforePID ->Fill(aodTrack->P()*aodTrack->Charge(),beta);
			fHistProbTOFvsPtbeforePID ->Fill(newAodTrack->Pt(),probTOF[fParticleOfInterest]);
			fHistNSigmaTOFvsPtbeforePID ->Fill(newAodTrack->Pt(),nSigmaTOFForParticleOfInterest);
		      }//TOF signal 
		      
		      
		      Double_t  nSigmaTPCForParticleOfInterest = fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)fParticleOfInterest);
		      fHistdEdxVsPTPCbeforePID -> Fill(newAodTrack->P()*newAodTrack->Charge(),newAodTrack->GetTPCsignal());
		      fHistProbTPCvsPtbeforePID -> Fill(newAodTrack->Pt(),probTPC[fParticleOfInterest]); 
		      fHistNSigmaTPCvsPtbeforePID -> Fill(newAodTrack->Pt(),nSigmaTPCForParticleOfInterest); 
		      fHistProbTPCTOFvsPtbeforePID -> Fill(newAodTrack->Pt(),probTPCTOF[fParticleOfInterest]);
		      //end of QA-before pid
		      
		      if ((detUsedTPC != 0)||(detUsedTOF != 0)||(detUsedTPCTOF != 0)) {
			//Make the decision based on the n-sigma
			if(fUsePIDnSigma) {
			  if(nSigma > fPIDNSigma) continue;}
			
			//Make the decision based on the bayesian
			else if(fUsePIDPropabilities) {
			  if(fParticleOfInterest != TMath::LocMax(AliPID::kSPECIES,prob)) continue;
			  if (prob[fParticleOfInterest] < fMinAcceptedPIDProbability) continue;      
			  }
			
			//Fill QA after the PID
			//fHistBetavsPTOFafterPID ->Fill(newAodTrack->P()*newAodTrack->Charge(),beta);
			fHistProbTOFvsPtafterPID ->Fill(newAodTrack->Pt(),probTOF[fParticleOfInterest]);
			fHistNSigmaTOFvsPtafterPID ->Fill(newAodTrack->Pt(),nSigmaTOFForParticleOfInterest);
			
			fHistdEdxVsPTPCafterPID -> Fill(newAodTrack->P()*newAodTrack->Charge(),newAodTrack->GetTPCsignal());
			fHistProbTPCvsPtafterPID -> Fill(newAodTrack->Pt(),probTPC[fParticleOfInterest]); 
			fHistProbTPCTOFvsPtafterPID -> Fill(newAodTrack->Pt(),probTPCTOF[fParticleOfInterest]);
			fHistNSigmaTPCvsPtafterPID -> Fill(newAodTrack->Pt(),nSigmaTPCForParticleOfInterest); 
		      }
		      
		      PostData(4, fHistListPIDQA);
		    }

		    //=========================================================PID=================================================================//
		    		    
      		    // fill QA histograms
      		    fHistClus->Fill(aodTrack->GetITSNcls(),aodTrack->GetTPCNcls());
      		    fHistDCA->Fill(dcaZ,dcaXY);
      		    fHistChi2->Fill(aodTrack->Chi2perNDF());
      		    fHistPt->Fill(vPt);
      		    fHistEta->Fill(vEta);
      		    fHistPhi->Fill(vPhi);
		    fHistRapidity->Fill(vY);
		    if(vCharge > 0) fHistPhiPos->Fill(vPhi);
		    else if(vCharge < 0) fHistPhiNeg->Fill(vPhi);

      		    // fill charge vector
      		    chargeVector[0]->push_back(vCharge);
      		    chargeVector[1]->push_back(vY);
      		    chargeVector[2]->push_back(vEta);
      		    chargeVector[3]->push_back(vPhi);
      		    chargeVector[4]->push_back(vP[0]);
      		    chargeVector[5]->push_back(vP[1]);
      		    chargeVector[6]->push_back(vP[2]);
      		    chargeVector[7]->push_back(vPt);
      		    chargeVector[8]->push_back(vE);

      		    if(fRunShuffling) {
      		      chargeVectorShuffle[0]->push_back(vCharge);
      		      chargeVectorShuffle[1]->push_back(vY);
      		      chargeVectorShuffle[2]->push_back(vEta);
      		      chargeVectorShuffle[3]->push_back(vPhi);
      		      chargeVectorShuffle[4]->push_back(vP[0]);
      		      chargeVectorShuffle[5]->push_back(vP[1]);
      		      chargeVectorShuffle[6]->push_back(vP[2]);
      		      chargeVectorShuffle[7]->push_back(vPt);
      		      chargeVectorShuffle[8]->push_back(vE);
      		    }
		    		    
      		    gNumberOfAcceptedTracks += 1;
		    
      		  } //track loop
      		}//Vz cut
      	      }//Vy cut
      	    }//Vx cut
      	  }//proper vertex resolution
	}//proper number of contributors
      }//vertex object valid
    }//triggered event 
  }//AOD analysis

  //MC-ESD analysis
  if(gAnalysisLevel == "MCESD") {
    AliMCEvent*  mcEvent = MCEvent(); 
    if (!mcEvent) {
      AliError("ERROR: mcEvent not available");
      return;
    }

    AliESDEvent* gESD = dynamic_cast<AliESDEvent*>(InputEvent()); // from TaskSE
    if (!gESD) {
      AliError("ERROR: gESD not available");
      return;
    }

    // store offline trigger bits
    fHistTriggerStats->Fill(((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected());

    AliCentrality *centrality = 0x0; 
    if(fUseCentrality) {
	centrality = gESD->GetCentrality();
	fCentrality = centrality->GetCentralityPercentile(fCentralityEstimator.Data());
    }

    // event selection done in AliAnalysisTaskSE::Exec() --> this is not used
    fHistEventStats->Fill(1,fCentrality); //all events
    Bool_t isSelected = kTRUE;
    if(fUseOfflineTrigger)
      isSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
    if(isSelected) {
      fHistEventStats->Fill(2,fCentrality); //triggered events

      if(fUseCentrality) {
	//Centrality stuff
	// take only events inside centrality class
	if(!centrality->IsEventInCentralityClass(fCentralityPercentileMin,
						 fCentralityPercentileMax,
						 fCentralityEstimator.Data()))
	  return;
	// centrality QA (V0M)
	fHistV0M->Fill(gESD->GetVZEROData()->GetMTotV0A(), gESD->GetVZEROData()->GetMTotV0C());
      }
	
      const AliESDVertex *vertex = gESD->GetPrimaryVertex();
      if(vertex) {
	if(vertex->GetNContributors() > 0) {
	  if(vertex->GetZRes() != 0) {
	    fHistEventStats->Fill(3,fCentrality); //events with a proper vertex
	    if(TMath::Abs(vertex->GetX()) < fVxMax) {
	      if(TMath::Abs(vertex->GetY()) < fVyMax) {
		if(TMath::Abs(vertex->GetZ()) < fVzMax) {
		  fHistEventStats->Fill(4,fCentrality); //analayzed events
		  fHistVx->Fill(vertex->GetX());
		  fHistVy->Fill(vertex->GetY());
		  fHistVz->Fill(vertex->GetZ());
		  
		  //Printf("There are %d tracks in this event", gESD->GetNumberOfTracks());
		  for (Int_t iTracks = 0; iTracks < gESD->GetNumberOfTracks(); iTracks++) {
		    AliESDtrack* track = dynamic_cast<AliESDtrack *>(gESD->GetTrack(iTracks));
		    if (!track) {
		      AliError(Form("ERROR: Could not receive track %d", iTracks));
		      continue;
		    }	
		    
		    Int_t label = TMath::Abs(track->GetLabel());
		    if(label > mcEvent->GetNumberOfTracks()) continue;
		    if(label > mcEvent->GetNumberOfPrimaries()) continue;
		    
		    AliMCParticle* mcTrack = dynamic_cast<AliMCParticle *>(mcEvent->GetTrack(label));
		    if(!mcTrack) continue;

		    // take only TPC only tracks
		    trackTPC   = new AliESDtrack();
		    if(!track->FillTPCOnlyTrack(*trackTPC)) continue;
		    
		    //ESD track cuts
		    if(fESDtrackCuts) 
		      if(!fESDtrackCuts->AcceptTrack(trackTPC)) continue;
		    
		    // fill QA histograms
		    Float_t b[2];
		    Float_t bCov[3];
		    trackTPC->GetImpactParameters(b,bCov);
		    if (bCov[0]<=0 || bCov[2]<=0) {
		      AliDebug(1, "Estimated b resolution lower or equal zero!");
		      bCov[0]=0; bCov[2]=0;
		    }
		    
		    Int_t nClustersTPC = -1;
		    nClustersTPC = trackTPC->GetTPCNclsIter1();   // TPC standalone
		    //nClustersTPC = track->GetTPCclusters(0);   // global track
		    Float_t chi2PerClusterTPC = -1;
		    if (nClustersTPC!=0) {
		      chi2PerClusterTPC = trackTPC->GetTPCchi2Iter1()/Float_t(nClustersTPC);      // TPC standalone
		      //chi2PerClusterTPC = track->GetTPCchi2()/Float_t(nClustersTPC);     // global track
		    }
		    
		    vCharge = trackTPC->Charge();
		    vY      = trackTPC->Y();
		    vEta    = trackTPC->Eta();
		    vPhi    = trackTPC->Phi() * TMath::RadToDeg();
		    vE      = trackTPC->E();
		    vPt     = trackTPC->Pt();
		    trackTPC->PxPyPz(vP);

		    fHistClus->Fill(trackTPC->GetITSclusters(0),nClustersTPC);
		    fHistDCA->Fill(b[1],b[0]);
		    fHistChi2->Fill(chi2PerClusterTPC);
		    fHistPt->Fill(vPt);
		    fHistEta->Fill(vEta);
		    fHistPhi->Fill(vPhi);
		    fHistRapidity->Fill(vY);
		    if(vCharge > 0) fHistPhiPos->Fill(vPhi);
		    else if(vCharge < 0) fHistPhiNeg->Fill(vPhi);

		    // fill charge vector
		    chargeVector[0]->push_back(vCharge);
		    chargeVector[1]->push_back(vY);
		    chargeVector[2]->push_back(vEta);
		    chargeVector[3]->push_back(vPhi);
		    chargeVector[4]->push_back(vP[0]);
		    chargeVector[5]->push_back(vP[1]);
		    chargeVector[6]->push_back(vP[2]);
		    chargeVector[7]->push_back(vPt);
		    chargeVector[8]->push_back(vE);

		    if(fRunShuffling) {
		      chargeVectorShuffle[0]->push_back(vCharge);
		      chargeVectorShuffle[1]->push_back(vY);
		      chargeVectorShuffle[2]->push_back(vEta);
		      chargeVectorShuffle[3]->push_back(vPhi);
		      chargeVectorShuffle[4]->push_back(vP[0]);
		      chargeVectorShuffle[5]->push_back(vP[1]);
		      chargeVectorShuffle[6]->push_back(vP[2]);
		      chargeVectorShuffle[7]->push_back(vPt);
		      chargeVectorShuffle[8]->push_back(vE);
		    }
		    
		    delete trackTPC;
      		    gNumberOfAcceptedTracks += 1;
		    
		  } //track loop
		  //cout<<"Centrality: "<<fCentrality<<" - Accepted tracks: "<<gNumberOfAcceptedTracks<<endl;
		}//Vz cut
	      }//Vy cut
	    }//Vx cut
	  }//proper vertex resolution
	}//proper number of contributors
      }//vertex object valid
    }//triggered event 
  }//MC-ESD analysis

  //MC analysis
  else if(gAnalysisLevel == "MC") {
    AliMCEvent*  mcEvent = MCEvent(); 
    if (!mcEvent) {
      AliError("ERROR: mcEvent not available");
      return;
    }

    //fHistEventStats->Fill(1,fCentrality); //total events
    //fHistEventStats->Fill(2,fCentrality); //offline trigger

    Double_t gReactionPlane = 0., gImpactParameter = 0.;
    if(fUseCentrality) {
      //Get the MC header
      AliGenHijingEventHeader* headerH = dynamic_cast<AliGenHijingEventHeader*>(mcEvent->GenEventHeader());
      if (headerH) {
	//Printf("=====================================================");
	//Printf("Reaction plane angle: %lf",headerH->ReactionPlaneAngle());
	//Printf("Impact parameter: %lf",headerH->ImpactParameter());
	//Printf("=====================================================");
	gReactionPlane = headerH->ReactionPlaneAngle();
	gImpactParameter = headerH->ImpactParameter();
	fCentrality = gImpactParameter;
      }
      fCentrality = gImpactParameter;

      // take only events inside centrality class (DIDN'T CHANGE THIS UP TO NOW)
      if((fImpactParameterMin > gImpactParameter) || (fImpactParameterMax < gImpactParameter))
	return;
    }

    fHistEventStats->Fill(1,fCentrality); //total events
    fHistEventStats->Fill(2,fCentrality); //offline trigger
    
    AliGenEventHeader *header = mcEvent->GenEventHeader();
    if(!header) return;
    
    TArrayF gVertexArray;
    header->PrimaryVertex(gVertexArray);
    //Printf("Vertex: %lf (x) - %lf (y) - %lf (z)",
    //gVertexArray.At(0),
    //gVertexArray.At(1),
    //gVertexArray.At(2));
    fHistEventStats->Fill(3,fCentrality); //events with a proper vertex
    if(TMath::Abs(gVertexArray.At(0)) < fVxMax) {
      if(TMath::Abs(gVertexArray.At(1)) < fVyMax) {
	if(TMath::Abs(gVertexArray.At(2)) < fVzMax) {
	  fHistEventStats->Fill(4,fCentrality); //analayzed events
	  fHistVx->Fill(gVertexArray.At(0));
	  fHistVy->Fill(gVertexArray.At(1));
	  fHistVz->Fill(gVertexArray.At(2));
	  
	  AliInfo(Form("There are %d tracks in this event", mcEvent->GetNumberOfPrimaries()));
	  for (Int_t iTracks = 0; iTracks < mcEvent->GetNumberOfPrimaries(); iTracks++) {
	    AliMCParticle* track = dynamic_cast<AliMCParticle *>(mcEvent->GetTrack(iTracks));
	    if (!track) {
	      AliError(Form("ERROR: Could not receive particle %d", iTracks));
	      continue;
	    }
	    
	    //exclude non stable particles
	    if(!mcEvent->IsPhysicalPrimary(iTracks)) continue;

	    vEta    = track->Eta();
	    vPt     = track->Pt();
	    vY      = track->Y();

	    if( vPt < fPtMin || vPt > fPtMax)      
	      continue;
	    if (!fUsePID) {
	      if( vEta < fEtaMin || vEta > fEtaMax)  continue;
	    }
	    else if (fUsePID){
	      if( vY < fEtaMin || vY > fEtaMax)  continue;
	    }

	    //analyze one set of particles
	    if(fUseMCPdgCode) {
	      TParticle *particle = track->Particle();
	      if(!particle) continue;
	      
	      Int_t gPdgCode = particle->GetPdgCode();
	      if(TMath::Abs(fPDGCodeToBeAnalyzed) != TMath::Abs(gPdgCode)) 
		continue;
	    }
	    
	    //Use the acceptance parameterization
	    if(fAcceptanceParameterization) {
	      Double_t gRandomNumber = gRandom->Rndm();
	      if(gRandomNumber > fAcceptanceParameterization->Eval(track->Pt())) 
		continue;
	    }
	    
	    //Exclude resonances
	    if(fExcludeResonancesInMC) {
	      TParticle *particle = track->Particle();
	      if(!particle) continue;
	      
	      Bool_t kExcludeParticle = kFALSE;
	      Int_t gMotherIndex = particle->GetFirstMother();
	      if(gMotherIndex != -1) {
		AliMCParticle* motherTrack = dynamic_cast<AliMCParticle *>(mcEvent->GetTrack(gMotherIndex));
		if(motherTrack) {
		  TParticle *motherParticle = motherTrack->Particle();
		  if(motherParticle) {
		    Int_t pdgCodeOfMother = motherParticle->GetPdgCode();
		    //if((pdgCodeOfMother == 113)||(pdgCodeOfMother == 213)||(pdgCodeOfMother == 221)||(pdgCodeOfMother == 223)||(pdgCodeOfMother == 331)||(pdgCodeOfMother == 333)) {
		    if(pdgCodeOfMother == 113) {
		      kExcludeParticle = kTRUE;
		    }
		  }
		}
	      }
	      
	      //Exclude from the analysis decay products of rho0, rho+, eta, eta' and phi
	      if(kExcludeParticle) continue;
	    }

	    vCharge = track->Charge();
	    vPhi    = track->Phi();
	    vE      = track->E();
	    track->PxPyPz(vP);
	    //Printf("phi (before): %lf",vPhi);

	    fHistPt->Fill(vPt);
	    fHistEta->Fill(vEta);
	    fHistPhi->Fill(vPhi);
	    fHistRapidity->Fill(vY);
	    if(vCharge > 0) fHistPhiPos->Fill(vPhi);
	    else if(vCharge < 0) fHistPhiNeg->Fill(vPhi);

	    //Flow after burner
	    if(fUseFlowAfterBurner) {
	      Double_t precisionPhi = 0.001;
	      Int_t maxNumberOfIterations = 100;

	      Double_t phi0 = vPhi;
	      Double_t gV2 = fDifferentialV2->Eval(vPt);

	      for (Int_t j = 0; j < maxNumberOfIterations; j++) {
		Double_t phiprev = vPhi;
		Double_t fl = vPhi - phi0 + gV2*TMath::Sin(2.*(vPhi - gReactionPlane));
		Double_t fp = 1.0 + 2.0*gV2*TMath::Cos(2.*(vPhi - gReactionPlane)); 
		vPhi -= fl/fp;
		if (TMath::AreEqualAbs(phiprev,vPhi,precisionPhi)) break;
	      }
	      //Printf("phi (after): %lf\n",vPhi);
	      Double_t vDeltaphiBefore = phi0 - gReactionPlane;
	      if(vDeltaphiBefore < 0) vDeltaphiBefore += 2*TMath::Pi();
	      fHistPhiBefore->Fill(vDeltaphiBefore);

	      Double_t vDeltaphiAfter = vPhi - gReactionPlane;
	      if(vDeltaphiAfter < 0) vDeltaphiAfter += 2*TMath::Pi();
	      fHistPhiAfter->Fill(vDeltaphiAfter);
	    }
	    
	    vPhi *= TMath::RadToDeg();

	    // fill charge vector
	    chargeVector[0]->push_back(vCharge);
	    chargeVector[1]->push_back(vY);
	    chargeVector[2]->push_back(vEta);
	    chargeVector[3]->push_back(vPhi);
	    chargeVector[4]->push_back(vP[0]);
	    chargeVector[5]->push_back(vP[1]);
	    chargeVector[6]->push_back(vP[2]);
	    chargeVector[7]->push_back(vPt);
	    chargeVector[8]->push_back(vE);
	    
	    if(fRunShuffling) {
	      chargeVectorShuffle[0]->push_back(vCharge);
	      chargeVectorShuffle[1]->push_back(vY);
	      chargeVectorShuffle[2]->push_back(vEta);
	      chargeVectorShuffle[3]->push_back(vPhi);
	      chargeVectorShuffle[4]->push_back(vP[0]);
	      chargeVectorShuffle[5]->push_back(vP[1]);
	      chargeVectorShuffle[6]->push_back(vP[2]);
	      chargeVectorShuffle[7]->push_back(vPt);
	      chargeVectorShuffle[8]->push_back(vE);
	    }
	    gNumberOfAcceptedTracks += 1;
		    
	  } //track loop
	}//Vz cut
      }//Vy cut
    }//Vx cut
  }//MC analysis
  
  //multiplicity cut (used in pp)
  if(fUseMultiplicity) {
    if((gNumberOfAcceptedTracks < fNumberOfAcceptedTracksMin)||(gNumberOfAcceptedTracks > fNumberOfAcceptedTracksMax))
      return;
  }
  fHistNumberOfAcceptedTracks->Fill(gNumberOfAcceptedTracks, fCentrality);

  // calculate balance function
  if(fUseMultiplicity) 
    fBalance->CalculateBalance(gNumberOfAcceptedTracks,chargeVector,bSign);
  else                 
    fBalance->CalculateBalance(fCentrality,chargeVector,bSign);

  if(fRunShuffling) {
    // shuffle charges
    random_shuffle( chargeVectorShuffle[0]->begin(), chargeVectorShuffle[0]->end() );
    if(fUseMultiplicity) 
      fShuffledBalance->CalculateBalance(gNumberOfAcceptedTracks,chargeVectorShuffle,bSign);
    else                 
      fShuffledBalance->CalculateBalance(fCentrality,chargeVectorShuffle,bSign);
  }
}      

//________________________________________________________________________
void  AliAnalysisTaskBF::FinishTaskOutput(){
  //Printf("END BF");

  if (!fBalance) {
    AliError("ERROR: fBalance not available");
    return;
  }  
  if(fRunShuffling) {
    if (!fShuffledBalance) {
      AliError("ERROR: fShuffledBalance not available");
      return;
    }
  }

}

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

  // not implemented ...

}
 AliAnalysisTaskBF.cxx:1
 AliAnalysisTaskBF.cxx:2
 AliAnalysisTaskBF.cxx:3
 AliAnalysisTaskBF.cxx:4
 AliAnalysisTaskBF.cxx:5
 AliAnalysisTaskBF.cxx:6
 AliAnalysisTaskBF.cxx:7
 AliAnalysisTaskBF.cxx:8
 AliAnalysisTaskBF.cxx:9
 AliAnalysisTaskBF.cxx:10
 AliAnalysisTaskBF.cxx:11
 AliAnalysisTaskBF.cxx:12
 AliAnalysisTaskBF.cxx:13
 AliAnalysisTaskBF.cxx:14
 AliAnalysisTaskBF.cxx:15
 AliAnalysisTaskBF.cxx:16
 AliAnalysisTaskBF.cxx:17
 AliAnalysisTaskBF.cxx:18
 AliAnalysisTaskBF.cxx:19
 AliAnalysisTaskBF.cxx:20
 AliAnalysisTaskBF.cxx:21
 AliAnalysisTaskBF.cxx:22
 AliAnalysisTaskBF.cxx:23
 AliAnalysisTaskBF.cxx:24
 AliAnalysisTaskBF.cxx:25
 AliAnalysisTaskBF.cxx:26
 AliAnalysisTaskBF.cxx:27
 AliAnalysisTaskBF.cxx:28
 AliAnalysisTaskBF.cxx:29
 AliAnalysisTaskBF.cxx:30
 AliAnalysisTaskBF.cxx:31
 AliAnalysisTaskBF.cxx:32
 AliAnalysisTaskBF.cxx:33
 AliAnalysisTaskBF.cxx:34
 AliAnalysisTaskBF.cxx:35
 AliAnalysisTaskBF.cxx:36
 AliAnalysisTaskBF.cxx:37
 AliAnalysisTaskBF.cxx:38
 AliAnalysisTaskBF.cxx:39
 AliAnalysisTaskBF.cxx:40
 AliAnalysisTaskBF.cxx:41
 AliAnalysisTaskBF.cxx:42
 AliAnalysisTaskBF.cxx:43
 AliAnalysisTaskBF.cxx:44
 AliAnalysisTaskBF.cxx:45
 AliAnalysisTaskBF.cxx:46
 AliAnalysisTaskBF.cxx:47
 AliAnalysisTaskBF.cxx:48
 AliAnalysisTaskBF.cxx:49
 AliAnalysisTaskBF.cxx:50
 AliAnalysisTaskBF.cxx:51
 AliAnalysisTaskBF.cxx:52
 AliAnalysisTaskBF.cxx:53
 AliAnalysisTaskBF.cxx:54
 AliAnalysisTaskBF.cxx:55
 AliAnalysisTaskBF.cxx:56
 AliAnalysisTaskBF.cxx:57
 AliAnalysisTaskBF.cxx:58
 AliAnalysisTaskBF.cxx:59
 AliAnalysisTaskBF.cxx:60
 AliAnalysisTaskBF.cxx:61
 AliAnalysisTaskBF.cxx:62
 AliAnalysisTaskBF.cxx:63
 AliAnalysisTaskBF.cxx:64
 AliAnalysisTaskBF.cxx:65
 AliAnalysisTaskBF.cxx:66
 AliAnalysisTaskBF.cxx:67
 AliAnalysisTaskBF.cxx:68
 AliAnalysisTaskBF.cxx:69
 AliAnalysisTaskBF.cxx:70
 AliAnalysisTaskBF.cxx:71
 AliAnalysisTaskBF.cxx:72
 AliAnalysisTaskBF.cxx:73
 AliAnalysisTaskBF.cxx:74
 AliAnalysisTaskBF.cxx:75
 AliAnalysisTaskBF.cxx:76
 AliAnalysisTaskBF.cxx:77
 AliAnalysisTaskBF.cxx:78
 AliAnalysisTaskBF.cxx:79
 AliAnalysisTaskBF.cxx:80
 AliAnalysisTaskBF.cxx:81
 AliAnalysisTaskBF.cxx:82
 AliAnalysisTaskBF.cxx:83
 AliAnalysisTaskBF.cxx:84
 AliAnalysisTaskBF.cxx:85
 AliAnalysisTaskBF.cxx:86
 AliAnalysisTaskBF.cxx:87
 AliAnalysisTaskBF.cxx:88
 AliAnalysisTaskBF.cxx:89
 AliAnalysisTaskBF.cxx:90
 AliAnalysisTaskBF.cxx:91
 AliAnalysisTaskBF.cxx:92
 AliAnalysisTaskBF.cxx:93
 AliAnalysisTaskBF.cxx:94
 AliAnalysisTaskBF.cxx:95
 AliAnalysisTaskBF.cxx:96
 AliAnalysisTaskBF.cxx:97
 AliAnalysisTaskBF.cxx:98
 AliAnalysisTaskBF.cxx:99
 AliAnalysisTaskBF.cxx:100
 AliAnalysisTaskBF.cxx:101
 AliAnalysisTaskBF.cxx:102
 AliAnalysisTaskBF.cxx:103
 AliAnalysisTaskBF.cxx:104
 AliAnalysisTaskBF.cxx:105
 AliAnalysisTaskBF.cxx:106
 AliAnalysisTaskBF.cxx:107
 AliAnalysisTaskBF.cxx:108
 AliAnalysisTaskBF.cxx:109
 AliAnalysisTaskBF.cxx:110
 AliAnalysisTaskBF.cxx:111
 AliAnalysisTaskBF.cxx:112
 AliAnalysisTaskBF.cxx:113
 AliAnalysisTaskBF.cxx:114
 AliAnalysisTaskBF.cxx:115
 AliAnalysisTaskBF.cxx:116
 AliAnalysisTaskBF.cxx:117
 AliAnalysisTaskBF.cxx:118
 AliAnalysisTaskBF.cxx:119
 AliAnalysisTaskBF.cxx:120
 AliAnalysisTaskBF.cxx:121
 AliAnalysisTaskBF.cxx:122
 AliAnalysisTaskBF.cxx:123
 AliAnalysisTaskBF.cxx:124
 AliAnalysisTaskBF.cxx:125
 AliAnalysisTaskBF.cxx:126
 AliAnalysisTaskBF.cxx:127
 AliAnalysisTaskBF.cxx:128
 AliAnalysisTaskBF.cxx:129
 AliAnalysisTaskBF.cxx:130
 AliAnalysisTaskBF.cxx:131
 AliAnalysisTaskBF.cxx:132
 AliAnalysisTaskBF.cxx:133
 AliAnalysisTaskBF.cxx:134
 AliAnalysisTaskBF.cxx:135
 AliAnalysisTaskBF.cxx:136
 AliAnalysisTaskBF.cxx:137
 AliAnalysisTaskBF.cxx:138
 AliAnalysisTaskBF.cxx:139
 AliAnalysisTaskBF.cxx:140
 AliAnalysisTaskBF.cxx:141
 AliAnalysisTaskBF.cxx:142
 AliAnalysisTaskBF.cxx:143
 AliAnalysisTaskBF.cxx:144
 AliAnalysisTaskBF.cxx:145
 AliAnalysisTaskBF.cxx:146
 AliAnalysisTaskBF.cxx:147
 AliAnalysisTaskBF.cxx:148
 AliAnalysisTaskBF.cxx:149
 AliAnalysisTaskBF.cxx:150
 AliAnalysisTaskBF.cxx:151
 AliAnalysisTaskBF.cxx:152
 AliAnalysisTaskBF.cxx:153
 AliAnalysisTaskBF.cxx:154
 AliAnalysisTaskBF.cxx:155
 AliAnalysisTaskBF.cxx:156
 AliAnalysisTaskBF.cxx:157
 AliAnalysisTaskBF.cxx:158
 AliAnalysisTaskBF.cxx:159
 AliAnalysisTaskBF.cxx:160
 AliAnalysisTaskBF.cxx:161
 AliAnalysisTaskBF.cxx:162
 AliAnalysisTaskBF.cxx:163
 AliAnalysisTaskBF.cxx:164
 AliAnalysisTaskBF.cxx:165
 AliAnalysisTaskBF.cxx:166
 AliAnalysisTaskBF.cxx:167
 AliAnalysisTaskBF.cxx:168
 AliAnalysisTaskBF.cxx:169
 AliAnalysisTaskBF.cxx:170
 AliAnalysisTaskBF.cxx:171
 AliAnalysisTaskBF.cxx:172
 AliAnalysisTaskBF.cxx:173
 AliAnalysisTaskBF.cxx:174
 AliAnalysisTaskBF.cxx:175
 AliAnalysisTaskBF.cxx:176
 AliAnalysisTaskBF.cxx:177
 AliAnalysisTaskBF.cxx:178
 AliAnalysisTaskBF.cxx:179
 AliAnalysisTaskBF.cxx:180
 AliAnalysisTaskBF.cxx:181
 AliAnalysisTaskBF.cxx:182
 AliAnalysisTaskBF.cxx:183
 AliAnalysisTaskBF.cxx:184
 AliAnalysisTaskBF.cxx:185
 AliAnalysisTaskBF.cxx:186
 AliAnalysisTaskBF.cxx:187
 AliAnalysisTaskBF.cxx:188
 AliAnalysisTaskBF.cxx:189
 AliAnalysisTaskBF.cxx:190
 AliAnalysisTaskBF.cxx:191
 AliAnalysisTaskBF.cxx:192
 AliAnalysisTaskBF.cxx:193
 AliAnalysisTaskBF.cxx:194
 AliAnalysisTaskBF.cxx:195
 AliAnalysisTaskBF.cxx:196
 AliAnalysisTaskBF.cxx:197
 AliAnalysisTaskBF.cxx:198
 AliAnalysisTaskBF.cxx:199
 AliAnalysisTaskBF.cxx:200
 AliAnalysisTaskBF.cxx:201
 AliAnalysisTaskBF.cxx:202
 AliAnalysisTaskBF.cxx:203
 AliAnalysisTaskBF.cxx:204
 AliAnalysisTaskBF.cxx:205
 AliAnalysisTaskBF.cxx:206
 AliAnalysisTaskBF.cxx:207
 AliAnalysisTaskBF.cxx:208
 AliAnalysisTaskBF.cxx:209
 AliAnalysisTaskBF.cxx:210
 AliAnalysisTaskBF.cxx:211
 AliAnalysisTaskBF.cxx:212
 AliAnalysisTaskBF.cxx:213
 AliAnalysisTaskBF.cxx:214
 AliAnalysisTaskBF.cxx:215
 AliAnalysisTaskBF.cxx:216
 AliAnalysisTaskBF.cxx:217
 AliAnalysisTaskBF.cxx:218
 AliAnalysisTaskBF.cxx:219
 AliAnalysisTaskBF.cxx:220
 AliAnalysisTaskBF.cxx:221
 AliAnalysisTaskBF.cxx:222
 AliAnalysisTaskBF.cxx:223
 AliAnalysisTaskBF.cxx:224
 AliAnalysisTaskBF.cxx:225
 AliAnalysisTaskBF.cxx:226
 AliAnalysisTaskBF.cxx:227
 AliAnalysisTaskBF.cxx:228
 AliAnalysisTaskBF.cxx:229
 AliAnalysisTaskBF.cxx:230
 AliAnalysisTaskBF.cxx:231
 AliAnalysisTaskBF.cxx:232
 AliAnalysisTaskBF.cxx:233
 AliAnalysisTaskBF.cxx:234
 AliAnalysisTaskBF.cxx:235
 AliAnalysisTaskBF.cxx:236
 AliAnalysisTaskBF.cxx:237
 AliAnalysisTaskBF.cxx:238
 AliAnalysisTaskBF.cxx:239
 AliAnalysisTaskBF.cxx:240
 AliAnalysisTaskBF.cxx:241
 AliAnalysisTaskBF.cxx:242
 AliAnalysisTaskBF.cxx:243
 AliAnalysisTaskBF.cxx:244
 AliAnalysisTaskBF.cxx:245
 AliAnalysisTaskBF.cxx:246
 AliAnalysisTaskBF.cxx:247
 AliAnalysisTaskBF.cxx:248
 AliAnalysisTaskBF.cxx:249
 AliAnalysisTaskBF.cxx:250
 AliAnalysisTaskBF.cxx:251
 AliAnalysisTaskBF.cxx:252
 AliAnalysisTaskBF.cxx:253
 AliAnalysisTaskBF.cxx:254
 AliAnalysisTaskBF.cxx:255
 AliAnalysisTaskBF.cxx:256
 AliAnalysisTaskBF.cxx:257
 AliAnalysisTaskBF.cxx:258
 AliAnalysisTaskBF.cxx:259
 AliAnalysisTaskBF.cxx:260
 AliAnalysisTaskBF.cxx:261
 AliAnalysisTaskBF.cxx:262
 AliAnalysisTaskBF.cxx:263
 AliAnalysisTaskBF.cxx:264
 AliAnalysisTaskBF.cxx:265
 AliAnalysisTaskBF.cxx:266
 AliAnalysisTaskBF.cxx:267
 AliAnalysisTaskBF.cxx:268
 AliAnalysisTaskBF.cxx:269
 AliAnalysisTaskBF.cxx:270
 AliAnalysisTaskBF.cxx:271
 AliAnalysisTaskBF.cxx:272
 AliAnalysisTaskBF.cxx:273
 AliAnalysisTaskBF.cxx:274
 AliAnalysisTaskBF.cxx:275
 AliAnalysisTaskBF.cxx:276
 AliAnalysisTaskBF.cxx:277
 AliAnalysisTaskBF.cxx:278
 AliAnalysisTaskBF.cxx:279
 AliAnalysisTaskBF.cxx:280
 AliAnalysisTaskBF.cxx:281
 AliAnalysisTaskBF.cxx:282
 AliAnalysisTaskBF.cxx:283
 AliAnalysisTaskBF.cxx:284
 AliAnalysisTaskBF.cxx:285
 AliAnalysisTaskBF.cxx:286
 AliAnalysisTaskBF.cxx:287
 AliAnalysisTaskBF.cxx:288
 AliAnalysisTaskBF.cxx:289
 AliAnalysisTaskBF.cxx:290
 AliAnalysisTaskBF.cxx:291
 AliAnalysisTaskBF.cxx:292
 AliAnalysisTaskBF.cxx:293
 AliAnalysisTaskBF.cxx:294
 AliAnalysisTaskBF.cxx:295
 AliAnalysisTaskBF.cxx:296
 AliAnalysisTaskBF.cxx:297
 AliAnalysisTaskBF.cxx:298
 AliAnalysisTaskBF.cxx:299
 AliAnalysisTaskBF.cxx:300
 AliAnalysisTaskBF.cxx:301
 AliAnalysisTaskBF.cxx:302
 AliAnalysisTaskBF.cxx:303
 AliAnalysisTaskBF.cxx:304
 AliAnalysisTaskBF.cxx:305
 AliAnalysisTaskBF.cxx:306
 AliAnalysisTaskBF.cxx:307
 AliAnalysisTaskBF.cxx:308
 AliAnalysisTaskBF.cxx:309
 AliAnalysisTaskBF.cxx:310
 AliAnalysisTaskBF.cxx:311
 AliAnalysisTaskBF.cxx:312
 AliAnalysisTaskBF.cxx:313
 AliAnalysisTaskBF.cxx:314
 AliAnalysisTaskBF.cxx:315
 AliAnalysisTaskBF.cxx:316
 AliAnalysisTaskBF.cxx:317
 AliAnalysisTaskBF.cxx:318
 AliAnalysisTaskBF.cxx:319
 AliAnalysisTaskBF.cxx:320
 AliAnalysisTaskBF.cxx:321
 AliAnalysisTaskBF.cxx:322
 AliAnalysisTaskBF.cxx:323
 AliAnalysisTaskBF.cxx:324
 AliAnalysisTaskBF.cxx:325
 AliAnalysisTaskBF.cxx:326
 AliAnalysisTaskBF.cxx:327
 AliAnalysisTaskBF.cxx:328
 AliAnalysisTaskBF.cxx:329
 AliAnalysisTaskBF.cxx:330
 AliAnalysisTaskBF.cxx:331
 AliAnalysisTaskBF.cxx:332
 AliAnalysisTaskBF.cxx:333
 AliAnalysisTaskBF.cxx:334
 AliAnalysisTaskBF.cxx:335
 AliAnalysisTaskBF.cxx:336
 AliAnalysisTaskBF.cxx:337
 AliAnalysisTaskBF.cxx:338
 AliAnalysisTaskBF.cxx:339
 AliAnalysisTaskBF.cxx:340
 AliAnalysisTaskBF.cxx:341
 AliAnalysisTaskBF.cxx:342
 AliAnalysisTaskBF.cxx:343
 AliAnalysisTaskBF.cxx:344
 AliAnalysisTaskBF.cxx:345
 AliAnalysisTaskBF.cxx:346
 AliAnalysisTaskBF.cxx:347
 AliAnalysisTaskBF.cxx:348
 AliAnalysisTaskBF.cxx:349
 AliAnalysisTaskBF.cxx:350
 AliAnalysisTaskBF.cxx:351
 AliAnalysisTaskBF.cxx:352
 AliAnalysisTaskBF.cxx:353
 AliAnalysisTaskBF.cxx:354
 AliAnalysisTaskBF.cxx:355
 AliAnalysisTaskBF.cxx:356
 AliAnalysisTaskBF.cxx:357
 AliAnalysisTaskBF.cxx:358
 AliAnalysisTaskBF.cxx:359
 AliAnalysisTaskBF.cxx:360
 AliAnalysisTaskBF.cxx:361
 AliAnalysisTaskBF.cxx:362
 AliAnalysisTaskBF.cxx:363
 AliAnalysisTaskBF.cxx:364
 AliAnalysisTaskBF.cxx:365
 AliAnalysisTaskBF.cxx:366
 AliAnalysisTaskBF.cxx:367
 AliAnalysisTaskBF.cxx:368
 AliAnalysisTaskBF.cxx:369
 AliAnalysisTaskBF.cxx:370
 AliAnalysisTaskBF.cxx:371
 AliAnalysisTaskBF.cxx:372
 AliAnalysisTaskBF.cxx:373
 AliAnalysisTaskBF.cxx:374
 AliAnalysisTaskBF.cxx:375
 AliAnalysisTaskBF.cxx:376
 AliAnalysisTaskBF.cxx:377
 AliAnalysisTaskBF.cxx:378
 AliAnalysisTaskBF.cxx:379
 AliAnalysisTaskBF.cxx:380
 AliAnalysisTaskBF.cxx:381
 AliAnalysisTaskBF.cxx:382
 AliAnalysisTaskBF.cxx:383
 AliAnalysisTaskBF.cxx:384
 AliAnalysisTaskBF.cxx:385
 AliAnalysisTaskBF.cxx:386
 AliAnalysisTaskBF.cxx:387
 AliAnalysisTaskBF.cxx:388
 AliAnalysisTaskBF.cxx:389
 AliAnalysisTaskBF.cxx:390
 AliAnalysisTaskBF.cxx:391
 AliAnalysisTaskBF.cxx:392
 AliAnalysisTaskBF.cxx:393
 AliAnalysisTaskBF.cxx:394
 AliAnalysisTaskBF.cxx:395
 AliAnalysisTaskBF.cxx:396
 AliAnalysisTaskBF.cxx:397
 AliAnalysisTaskBF.cxx:398
 AliAnalysisTaskBF.cxx:399
 AliAnalysisTaskBF.cxx:400
 AliAnalysisTaskBF.cxx:401
 AliAnalysisTaskBF.cxx:402
 AliAnalysisTaskBF.cxx:403
 AliAnalysisTaskBF.cxx:404
 AliAnalysisTaskBF.cxx:405
 AliAnalysisTaskBF.cxx:406
 AliAnalysisTaskBF.cxx:407
 AliAnalysisTaskBF.cxx:408
 AliAnalysisTaskBF.cxx:409
 AliAnalysisTaskBF.cxx:410
 AliAnalysisTaskBF.cxx:411
 AliAnalysisTaskBF.cxx:412
 AliAnalysisTaskBF.cxx:413
 AliAnalysisTaskBF.cxx:414
 AliAnalysisTaskBF.cxx:415
 AliAnalysisTaskBF.cxx:416
 AliAnalysisTaskBF.cxx:417
 AliAnalysisTaskBF.cxx:418
 AliAnalysisTaskBF.cxx:419
 AliAnalysisTaskBF.cxx:420
 AliAnalysisTaskBF.cxx:421
 AliAnalysisTaskBF.cxx:422
 AliAnalysisTaskBF.cxx:423
 AliAnalysisTaskBF.cxx:424
 AliAnalysisTaskBF.cxx:425
 AliAnalysisTaskBF.cxx:426
 AliAnalysisTaskBF.cxx:427
 AliAnalysisTaskBF.cxx:428
 AliAnalysisTaskBF.cxx:429
 AliAnalysisTaskBF.cxx:430
 AliAnalysisTaskBF.cxx:431
 AliAnalysisTaskBF.cxx:432
 AliAnalysisTaskBF.cxx:433
 AliAnalysisTaskBF.cxx:434
 AliAnalysisTaskBF.cxx:435
 AliAnalysisTaskBF.cxx:436
 AliAnalysisTaskBF.cxx:437
 AliAnalysisTaskBF.cxx:438
 AliAnalysisTaskBF.cxx:439
 AliAnalysisTaskBF.cxx:440
 AliAnalysisTaskBF.cxx:441
 AliAnalysisTaskBF.cxx:442
 AliAnalysisTaskBF.cxx:443
 AliAnalysisTaskBF.cxx:444
 AliAnalysisTaskBF.cxx:445
 AliAnalysisTaskBF.cxx:446
 AliAnalysisTaskBF.cxx:447
 AliAnalysisTaskBF.cxx:448
 AliAnalysisTaskBF.cxx:449
 AliAnalysisTaskBF.cxx:450
 AliAnalysisTaskBF.cxx:451
 AliAnalysisTaskBF.cxx:452
 AliAnalysisTaskBF.cxx:453
 AliAnalysisTaskBF.cxx:454
 AliAnalysisTaskBF.cxx:455
 AliAnalysisTaskBF.cxx:456
 AliAnalysisTaskBF.cxx:457
 AliAnalysisTaskBF.cxx:458
 AliAnalysisTaskBF.cxx:459
 AliAnalysisTaskBF.cxx:460
 AliAnalysisTaskBF.cxx:461
 AliAnalysisTaskBF.cxx:462
 AliAnalysisTaskBF.cxx:463
 AliAnalysisTaskBF.cxx:464
 AliAnalysisTaskBF.cxx:465
 AliAnalysisTaskBF.cxx:466
 AliAnalysisTaskBF.cxx:467
 AliAnalysisTaskBF.cxx:468
 AliAnalysisTaskBF.cxx:469
 AliAnalysisTaskBF.cxx:470
 AliAnalysisTaskBF.cxx:471
 AliAnalysisTaskBF.cxx:472
 AliAnalysisTaskBF.cxx:473
 AliAnalysisTaskBF.cxx:474
 AliAnalysisTaskBF.cxx:475
 AliAnalysisTaskBF.cxx:476
 AliAnalysisTaskBF.cxx:477
 AliAnalysisTaskBF.cxx:478
 AliAnalysisTaskBF.cxx:479
 AliAnalysisTaskBF.cxx:480
 AliAnalysisTaskBF.cxx:481
 AliAnalysisTaskBF.cxx:482
 AliAnalysisTaskBF.cxx:483
 AliAnalysisTaskBF.cxx:484
 AliAnalysisTaskBF.cxx:485
 AliAnalysisTaskBF.cxx:486
 AliAnalysisTaskBF.cxx:487
 AliAnalysisTaskBF.cxx:488
 AliAnalysisTaskBF.cxx:489
 AliAnalysisTaskBF.cxx:490
 AliAnalysisTaskBF.cxx:491
 AliAnalysisTaskBF.cxx:492
 AliAnalysisTaskBF.cxx:493
 AliAnalysisTaskBF.cxx:494
 AliAnalysisTaskBF.cxx:495
 AliAnalysisTaskBF.cxx:496
 AliAnalysisTaskBF.cxx:497
 AliAnalysisTaskBF.cxx:498
 AliAnalysisTaskBF.cxx:499
 AliAnalysisTaskBF.cxx:500
 AliAnalysisTaskBF.cxx:501
 AliAnalysisTaskBF.cxx:502
 AliAnalysisTaskBF.cxx:503
 AliAnalysisTaskBF.cxx:504
 AliAnalysisTaskBF.cxx:505
 AliAnalysisTaskBF.cxx:506
 AliAnalysisTaskBF.cxx:507
 AliAnalysisTaskBF.cxx:508
 AliAnalysisTaskBF.cxx:509
 AliAnalysisTaskBF.cxx:510
 AliAnalysisTaskBF.cxx:511
 AliAnalysisTaskBF.cxx:512
 AliAnalysisTaskBF.cxx:513
 AliAnalysisTaskBF.cxx:514
 AliAnalysisTaskBF.cxx:515
 AliAnalysisTaskBF.cxx:516
 AliAnalysisTaskBF.cxx:517
 AliAnalysisTaskBF.cxx:518
 AliAnalysisTaskBF.cxx:519
 AliAnalysisTaskBF.cxx:520
 AliAnalysisTaskBF.cxx:521
 AliAnalysisTaskBF.cxx:522
 AliAnalysisTaskBF.cxx:523
 AliAnalysisTaskBF.cxx:524
 AliAnalysisTaskBF.cxx:525
 AliAnalysisTaskBF.cxx:526
 AliAnalysisTaskBF.cxx:527
 AliAnalysisTaskBF.cxx:528
 AliAnalysisTaskBF.cxx:529
 AliAnalysisTaskBF.cxx:530
 AliAnalysisTaskBF.cxx:531
 AliAnalysisTaskBF.cxx:532
 AliAnalysisTaskBF.cxx:533
 AliAnalysisTaskBF.cxx:534
 AliAnalysisTaskBF.cxx:535
 AliAnalysisTaskBF.cxx:536
 AliAnalysisTaskBF.cxx:537
 AliAnalysisTaskBF.cxx:538
 AliAnalysisTaskBF.cxx:539
 AliAnalysisTaskBF.cxx:540
 AliAnalysisTaskBF.cxx:541
 AliAnalysisTaskBF.cxx:542
 AliAnalysisTaskBF.cxx:543
 AliAnalysisTaskBF.cxx:544
 AliAnalysisTaskBF.cxx:545
 AliAnalysisTaskBF.cxx:546
 AliAnalysisTaskBF.cxx:547
 AliAnalysisTaskBF.cxx:548
 AliAnalysisTaskBF.cxx:549
 AliAnalysisTaskBF.cxx:550
 AliAnalysisTaskBF.cxx:551
 AliAnalysisTaskBF.cxx:552
 AliAnalysisTaskBF.cxx:553
 AliAnalysisTaskBF.cxx:554
 AliAnalysisTaskBF.cxx:555
 AliAnalysisTaskBF.cxx:556
 AliAnalysisTaskBF.cxx:557
 AliAnalysisTaskBF.cxx:558
 AliAnalysisTaskBF.cxx:559
 AliAnalysisTaskBF.cxx:560
 AliAnalysisTaskBF.cxx:561
 AliAnalysisTaskBF.cxx:562
 AliAnalysisTaskBF.cxx:563
 AliAnalysisTaskBF.cxx:564
 AliAnalysisTaskBF.cxx:565
 AliAnalysisTaskBF.cxx:566
 AliAnalysisTaskBF.cxx:567
 AliAnalysisTaskBF.cxx:568
 AliAnalysisTaskBF.cxx:569
 AliAnalysisTaskBF.cxx:570
 AliAnalysisTaskBF.cxx:571
 AliAnalysisTaskBF.cxx:572
 AliAnalysisTaskBF.cxx:573
 AliAnalysisTaskBF.cxx:574
 AliAnalysisTaskBF.cxx:575
 AliAnalysisTaskBF.cxx:576
 AliAnalysisTaskBF.cxx:577
 AliAnalysisTaskBF.cxx:578
 AliAnalysisTaskBF.cxx:579
 AliAnalysisTaskBF.cxx:580
 AliAnalysisTaskBF.cxx:581
 AliAnalysisTaskBF.cxx:582
 AliAnalysisTaskBF.cxx:583
 AliAnalysisTaskBF.cxx:584
 AliAnalysisTaskBF.cxx:585
 AliAnalysisTaskBF.cxx:586
 AliAnalysisTaskBF.cxx:587
 AliAnalysisTaskBF.cxx:588
 AliAnalysisTaskBF.cxx:589
 AliAnalysisTaskBF.cxx:590
 AliAnalysisTaskBF.cxx:591
 AliAnalysisTaskBF.cxx:592
 AliAnalysisTaskBF.cxx:593
 AliAnalysisTaskBF.cxx:594
 AliAnalysisTaskBF.cxx:595
 AliAnalysisTaskBF.cxx:596
 AliAnalysisTaskBF.cxx:597
 AliAnalysisTaskBF.cxx:598
 AliAnalysisTaskBF.cxx:599
 AliAnalysisTaskBF.cxx:600
 AliAnalysisTaskBF.cxx:601
 AliAnalysisTaskBF.cxx:602
 AliAnalysisTaskBF.cxx:603
 AliAnalysisTaskBF.cxx:604
 AliAnalysisTaskBF.cxx:605
 AliAnalysisTaskBF.cxx:606
 AliAnalysisTaskBF.cxx:607
 AliAnalysisTaskBF.cxx:608
 AliAnalysisTaskBF.cxx:609
 AliAnalysisTaskBF.cxx:610
 AliAnalysisTaskBF.cxx:611
 AliAnalysisTaskBF.cxx:612
 AliAnalysisTaskBF.cxx:613
 AliAnalysisTaskBF.cxx:614
 AliAnalysisTaskBF.cxx:615
 AliAnalysisTaskBF.cxx:616
 AliAnalysisTaskBF.cxx:617
 AliAnalysisTaskBF.cxx:618
 AliAnalysisTaskBF.cxx:619
 AliAnalysisTaskBF.cxx:620
 AliAnalysisTaskBF.cxx:621
 AliAnalysisTaskBF.cxx:622
 AliAnalysisTaskBF.cxx:623
 AliAnalysisTaskBF.cxx:624
 AliAnalysisTaskBF.cxx:625
 AliAnalysisTaskBF.cxx:626
 AliAnalysisTaskBF.cxx:627
 AliAnalysisTaskBF.cxx:628
 AliAnalysisTaskBF.cxx:629
 AliAnalysisTaskBF.cxx:630
 AliAnalysisTaskBF.cxx:631
 AliAnalysisTaskBF.cxx:632
 AliAnalysisTaskBF.cxx:633
 AliAnalysisTaskBF.cxx:634
 AliAnalysisTaskBF.cxx:635
 AliAnalysisTaskBF.cxx:636
 AliAnalysisTaskBF.cxx:637
 AliAnalysisTaskBF.cxx:638
 AliAnalysisTaskBF.cxx:639
 AliAnalysisTaskBF.cxx:640
 AliAnalysisTaskBF.cxx:641
 AliAnalysisTaskBF.cxx:642
 AliAnalysisTaskBF.cxx:643
 AliAnalysisTaskBF.cxx:644
 AliAnalysisTaskBF.cxx:645
 AliAnalysisTaskBF.cxx:646
 AliAnalysisTaskBF.cxx:647
 AliAnalysisTaskBF.cxx:648
 AliAnalysisTaskBF.cxx:649
 AliAnalysisTaskBF.cxx:650
 AliAnalysisTaskBF.cxx:651
 AliAnalysisTaskBF.cxx:652
 AliAnalysisTaskBF.cxx:653
 AliAnalysisTaskBF.cxx:654
 AliAnalysisTaskBF.cxx:655
 AliAnalysisTaskBF.cxx:656
 AliAnalysisTaskBF.cxx:657
 AliAnalysisTaskBF.cxx:658
 AliAnalysisTaskBF.cxx:659
 AliAnalysisTaskBF.cxx:660
 AliAnalysisTaskBF.cxx:661
 AliAnalysisTaskBF.cxx:662
 AliAnalysisTaskBF.cxx:663
 AliAnalysisTaskBF.cxx:664
 AliAnalysisTaskBF.cxx:665
 AliAnalysisTaskBF.cxx:666
 AliAnalysisTaskBF.cxx:667
 AliAnalysisTaskBF.cxx:668
 AliAnalysisTaskBF.cxx:669
 AliAnalysisTaskBF.cxx:670
 AliAnalysisTaskBF.cxx:671
 AliAnalysisTaskBF.cxx:672
 AliAnalysisTaskBF.cxx:673
 AliAnalysisTaskBF.cxx:674
 AliAnalysisTaskBF.cxx:675
 AliAnalysisTaskBF.cxx:676
 AliAnalysisTaskBF.cxx:677
 AliAnalysisTaskBF.cxx:678
 AliAnalysisTaskBF.cxx:679
 AliAnalysisTaskBF.cxx:680
 AliAnalysisTaskBF.cxx:681
 AliAnalysisTaskBF.cxx:682
 AliAnalysisTaskBF.cxx:683
 AliAnalysisTaskBF.cxx:684
 AliAnalysisTaskBF.cxx:685
 AliAnalysisTaskBF.cxx:686
 AliAnalysisTaskBF.cxx:687
 AliAnalysisTaskBF.cxx:688
 AliAnalysisTaskBF.cxx:689
 AliAnalysisTaskBF.cxx:690
 AliAnalysisTaskBF.cxx:691
 AliAnalysisTaskBF.cxx:692
 AliAnalysisTaskBF.cxx:693
 AliAnalysisTaskBF.cxx:694
 AliAnalysisTaskBF.cxx:695
 AliAnalysisTaskBF.cxx:696
 AliAnalysisTaskBF.cxx:697
 AliAnalysisTaskBF.cxx:698
 AliAnalysisTaskBF.cxx:699
 AliAnalysisTaskBF.cxx:700
 AliAnalysisTaskBF.cxx:701
 AliAnalysisTaskBF.cxx:702
 AliAnalysisTaskBF.cxx:703
 AliAnalysisTaskBF.cxx:704
 AliAnalysisTaskBF.cxx:705
 AliAnalysisTaskBF.cxx:706
 AliAnalysisTaskBF.cxx:707
 AliAnalysisTaskBF.cxx:708
 AliAnalysisTaskBF.cxx:709
 AliAnalysisTaskBF.cxx:710
 AliAnalysisTaskBF.cxx:711
 AliAnalysisTaskBF.cxx:712
 AliAnalysisTaskBF.cxx:713
 AliAnalysisTaskBF.cxx:714
 AliAnalysisTaskBF.cxx:715
 AliAnalysisTaskBF.cxx:716
 AliAnalysisTaskBF.cxx:717
 AliAnalysisTaskBF.cxx:718
 AliAnalysisTaskBF.cxx:719
 AliAnalysisTaskBF.cxx:720
 AliAnalysisTaskBF.cxx:721
 AliAnalysisTaskBF.cxx:722
 AliAnalysisTaskBF.cxx:723
 AliAnalysisTaskBF.cxx:724
 AliAnalysisTaskBF.cxx:725
 AliAnalysisTaskBF.cxx:726
 AliAnalysisTaskBF.cxx:727
 AliAnalysisTaskBF.cxx:728
 AliAnalysisTaskBF.cxx:729
 AliAnalysisTaskBF.cxx:730
 AliAnalysisTaskBF.cxx:731
 AliAnalysisTaskBF.cxx:732
 AliAnalysisTaskBF.cxx:733
 AliAnalysisTaskBF.cxx:734
 AliAnalysisTaskBF.cxx:735
 AliAnalysisTaskBF.cxx:736
 AliAnalysisTaskBF.cxx:737
 AliAnalysisTaskBF.cxx:738
 AliAnalysisTaskBF.cxx:739
 AliAnalysisTaskBF.cxx:740
 AliAnalysisTaskBF.cxx:741
 AliAnalysisTaskBF.cxx:742
 AliAnalysisTaskBF.cxx:743
 AliAnalysisTaskBF.cxx:744
 AliAnalysisTaskBF.cxx:745
 AliAnalysisTaskBF.cxx:746
 AliAnalysisTaskBF.cxx:747
 AliAnalysisTaskBF.cxx:748
 AliAnalysisTaskBF.cxx:749
 AliAnalysisTaskBF.cxx:750
 AliAnalysisTaskBF.cxx:751
 AliAnalysisTaskBF.cxx:752
 AliAnalysisTaskBF.cxx:753
 AliAnalysisTaskBF.cxx:754
 AliAnalysisTaskBF.cxx:755
 AliAnalysisTaskBF.cxx:756
 AliAnalysisTaskBF.cxx:757
 AliAnalysisTaskBF.cxx:758
 AliAnalysisTaskBF.cxx:759
 AliAnalysisTaskBF.cxx:760
 AliAnalysisTaskBF.cxx:761
 AliAnalysisTaskBF.cxx:762
 AliAnalysisTaskBF.cxx:763
 AliAnalysisTaskBF.cxx:764
 AliAnalysisTaskBF.cxx:765
 AliAnalysisTaskBF.cxx:766
 AliAnalysisTaskBF.cxx:767
 AliAnalysisTaskBF.cxx:768
 AliAnalysisTaskBF.cxx:769
 AliAnalysisTaskBF.cxx:770
 AliAnalysisTaskBF.cxx:771
 AliAnalysisTaskBF.cxx:772
 AliAnalysisTaskBF.cxx:773
 AliAnalysisTaskBF.cxx:774
 AliAnalysisTaskBF.cxx:775
 AliAnalysisTaskBF.cxx:776
 AliAnalysisTaskBF.cxx:777
 AliAnalysisTaskBF.cxx:778
 AliAnalysisTaskBF.cxx:779
 AliAnalysisTaskBF.cxx:780
 AliAnalysisTaskBF.cxx:781
 AliAnalysisTaskBF.cxx:782
 AliAnalysisTaskBF.cxx:783
 AliAnalysisTaskBF.cxx:784
 AliAnalysisTaskBF.cxx:785
 AliAnalysisTaskBF.cxx:786
 AliAnalysisTaskBF.cxx:787
 AliAnalysisTaskBF.cxx:788
 AliAnalysisTaskBF.cxx:789
 AliAnalysisTaskBF.cxx:790
 AliAnalysisTaskBF.cxx:791
 AliAnalysisTaskBF.cxx:792
 AliAnalysisTaskBF.cxx:793
 AliAnalysisTaskBF.cxx:794
 AliAnalysisTaskBF.cxx:795
 AliAnalysisTaskBF.cxx:796
 AliAnalysisTaskBF.cxx:797
 AliAnalysisTaskBF.cxx:798
 AliAnalysisTaskBF.cxx:799
 AliAnalysisTaskBF.cxx:800
 AliAnalysisTaskBF.cxx:801
 AliAnalysisTaskBF.cxx:802
 AliAnalysisTaskBF.cxx:803
 AliAnalysisTaskBF.cxx:804
 AliAnalysisTaskBF.cxx:805
 AliAnalysisTaskBF.cxx:806
 AliAnalysisTaskBF.cxx:807
 AliAnalysisTaskBF.cxx:808
 AliAnalysisTaskBF.cxx:809
 AliAnalysisTaskBF.cxx:810
 AliAnalysisTaskBF.cxx:811
 AliAnalysisTaskBF.cxx:812
 AliAnalysisTaskBF.cxx:813
 AliAnalysisTaskBF.cxx:814
 AliAnalysisTaskBF.cxx:815
 AliAnalysisTaskBF.cxx:816
 AliAnalysisTaskBF.cxx:817
 AliAnalysisTaskBF.cxx:818
 AliAnalysisTaskBF.cxx:819
 AliAnalysisTaskBF.cxx:820
 AliAnalysisTaskBF.cxx:821
 AliAnalysisTaskBF.cxx:822
 AliAnalysisTaskBF.cxx:823
 AliAnalysisTaskBF.cxx:824
 AliAnalysisTaskBF.cxx:825
 AliAnalysisTaskBF.cxx:826
 AliAnalysisTaskBF.cxx:827
 AliAnalysisTaskBF.cxx:828
 AliAnalysisTaskBF.cxx:829
 AliAnalysisTaskBF.cxx:830
 AliAnalysisTaskBF.cxx:831
 AliAnalysisTaskBF.cxx:832
 AliAnalysisTaskBF.cxx:833
 AliAnalysisTaskBF.cxx:834
 AliAnalysisTaskBF.cxx:835
 AliAnalysisTaskBF.cxx:836
 AliAnalysisTaskBF.cxx:837
 AliAnalysisTaskBF.cxx:838
 AliAnalysisTaskBF.cxx:839
 AliAnalysisTaskBF.cxx:840
 AliAnalysisTaskBF.cxx:841
 AliAnalysisTaskBF.cxx:842
 AliAnalysisTaskBF.cxx:843
 AliAnalysisTaskBF.cxx:844
 AliAnalysisTaskBF.cxx:845
 AliAnalysisTaskBF.cxx:846
 AliAnalysisTaskBF.cxx:847
 AliAnalysisTaskBF.cxx:848
 AliAnalysisTaskBF.cxx:849
 AliAnalysisTaskBF.cxx:850
 AliAnalysisTaskBF.cxx:851
 AliAnalysisTaskBF.cxx:852
 AliAnalysisTaskBF.cxx:853
 AliAnalysisTaskBF.cxx:854
 AliAnalysisTaskBF.cxx:855
 AliAnalysisTaskBF.cxx:856
 AliAnalysisTaskBF.cxx:857
 AliAnalysisTaskBF.cxx:858
 AliAnalysisTaskBF.cxx:859
 AliAnalysisTaskBF.cxx:860
 AliAnalysisTaskBF.cxx:861
 AliAnalysisTaskBF.cxx:862
 AliAnalysisTaskBF.cxx:863
 AliAnalysisTaskBF.cxx:864
 AliAnalysisTaskBF.cxx:865
 AliAnalysisTaskBF.cxx:866
 AliAnalysisTaskBF.cxx:867
 AliAnalysisTaskBF.cxx:868
 AliAnalysisTaskBF.cxx:869
 AliAnalysisTaskBF.cxx:870
 AliAnalysisTaskBF.cxx:871
 AliAnalysisTaskBF.cxx:872
 AliAnalysisTaskBF.cxx:873
 AliAnalysisTaskBF.cxx:874
 AliAnalysisTaskBF.cxx:875
 AliAnalysisTaskBF.cxx:876
 AliAnalysisTaskBF.cxx:877
 AliAnalysisTaskBF.cxx:878
 AliAnalysisTaskBF.cxx:879
 AliAnalysisTaskBF.cxx:880
 AliAnalysisTaskBF.cxx:881
 AliAnalysisTaskBF.cxx:882
 AliAnalysisTaskBF.cxx:883
 AliAnalysisTaskBF.cxx:884
 AliAnalysisTaskBF.cxx:885
 AliAnalysisTaskBF.cxx:886
 AliAnalysisTaskBF.cxx:887
 AliAnalysisTaskBF.cxx:888
 AliAnalysisTaskBF.cxx:889
 AliAnalysisTaskBF.cxx:890
 AliAnalysisTaskBF.cxx:891
 AliAnalysisTaskBF.cxx:892
 AliAnalysisTaskBF.cxx:893
 AliAnalysisTaskBF.cxx:894
 AliAnalysisTaskBF.cxx:895
 AliAnalysisTaskBF.cxx:896
 AliAnalysisTaskBF.cxx:897
 AliAnalysisTaskBF.cxx:898
 AliAnalysisTaskBF.cxx:899
 AliAnalysisTaskBF.cxx:900
 AliAnalysisTaskBF.cxx:901
 AliAnalysisTaskBF.cxx:902
 AliAnalysisTaskBF.cxx:903
 AliAnalysisTaskBF.cxx:904
 AliAnalysisTaskBF.cxx:905
 AliAnalysisTaskBF.cxx:906
 AliAnalysisTaskBF.cxx:907
 AliAnalysisTaskBF.cxx:908
 AliAnalysisTaskBF.cxx:909
 AliAnalysisTaskBF.cxx:910
 AliAnalysisTaskBF.cxx:911
 AliAnalysisTaskBF.cxx:912
 AliAnalysisTaskBF.cxx:913
 AliAnalysisTaskBF.cxx:914
 AliAnalysisTaskBF.cxx:915
 AliAnalysisTaskBF.cxx:916
 AliAnalysisTaskBF.cxx:917
 AliAnalysisTaskBF.cxx:918
 AliAnalysisTaskBF.cxx:919
 AliAnalysisTaskBF.cxx:920
 AliAnalysisTaskBF.cxx:921
 AliAnalysisTaskBF.cxx:922
 AliAnalysisTaskBF.cxx:923
 AliAnalysisTaskBF.cxx:924
 AliAnalysisTaskBF.cxx:925
 AliAnalysisTaskBF.cxx:926
 AliAnalysisTaskBF.cxx:927
 AliAnalysisTaskBF.cxx:928
 AliAnalysisTaskBF.cxx:929
 AliAnalysisTaskBF.cxx:930
 AliAnalysisTaskBF.cxx:931
 AliAnalysisTaskBF.cxx:932
 AliAnalysisTaskBF.cxx:933
 AliAnalysisTaskBF.cxx:934
 AliAnalysisTaskBF.cxx:935
 AliAnalysisTaskBF.cxx:936
 AliAnalysisTaskBF.cxx:937
 AliAnalysisTaskBF.cxx:938
 AliAnalysisTaskBF.cxx:939
 AliAnalysisTaskBF.cxx:940
 AliAnalysisTaskBF.cxx:941
 AliAnalysisTaskBF.cxx:942
 AliAnalysisTaskBF.cxx:943
 AliAnalysisTaskBF.cxx:944
 AliAnalysisTaskBF.cxx:945
 AliAnalysisTaskBF.cxx:946
 AliAnalysisTaskBF.cxx:947
 AliAnalysisTaskBF.cxx:948
 AliAnalysisTaskBF.cxx:949
 AliAnalysisTaskBF.cxx:950
 AliAnalysisTaskBF.cxx:951
 AliAnalysisTaskBF.cxx:952
 AliAnalysisTaskBF.cxx:953
 AliAnalysisTaskBF.cxx:954
 AliAnalysisTaskBF.cxx:955
 AliAnalysisTaskBF.cxx:956
 AliAnalysisTaskBF.cxx:957
 AliAnalysisTaskBF.cxx:958
 AliAnalysisTaskBF.cxx:959
 AliAnalysisTaskBF.cxx:960
 AliAnalysisTaskBF.cxx:961
 AliAnalysisTaskBF.cxx:962
 AliAnalysisTaskBF.cxx:963
 AliAnalysisTaskBF.cxx:964
 AliAnalysisTaskBF.cxx:965
 AliAnalysisTaskBF.cxx:966
 AliAnalysisTaskBF.cxx:967
 AliAnalysisTaskBF.cxx:968
 AliAnalysisTaskBF.cxx:969
 AliAnalysisTaskBF.cxx:970
 AliAnalysisTaskBF.cxx:971
 AliAnalysisTaskBF.cxx:972
 AliAnalysisTaskBF.cxx:973
 AliAnalysisTaskBF.cxx:974
 AliAnalysisTaskBF.cxx:975
 AliAnalysisTaskBF.cxx:976
 AliAnalysisTaskBF.cxx:977
 AliAnalysisTaskBF.cxx:978
 AliAnalysisTaskBF.cxx:979
 AliAnalysisTaskBF.cxx:980
 AliAnalysisTaskBF.cxx:981
 AliAnalysisTaskBF.cxx:982
 AliAnalysisTaskBF.cxx:983
 AliAnalysisTaskBF.cxx:984
 AliAnalysisTaskBF.cxx:985
 AliAnalysisTaskBF.cxx:986
 AliAnalysisTaskBF.cxx:987
 AliAnalysisTaskBF.cxx:988
 AliAnalysisTaskBF.cxx:989
 AliAnalysisTaskBF.cxx:990
 AliAnalysisTaskBF.cxx:991
 AliAnalysisTaskBF.cxx:992
 AliAnalysisTaskBF.cxx:993
 AliAnalysisTaskBF.cxx:994
 AliAnalysisTaskBF.cxx:995
 AliAnalysisTaskBF.cxx:996
 AliAnalysisTaskBF.cxx:997
 AliAnalysisTaskBF.cxx:998
 AliAnalysisTaskBF.cxx:999
 AliAnalysisTaskBF.cxx:1000
 AliAnalysisTaskBF.cxx:1001
 AliAnalysisTaskBF.cxx:1002
 AliAnalysisTaskBF.cxx:1003
 AliAnalysisTaskBF.cxx:1004
 AliAnalysisTaskBF.cxx:1005
 AliAnalysisTaskBF.cxx:1006
 AliAnalysisTaskBF.cxx:1007
 AliAnalysisTaskBF.cxx:1008
 AliAnalysisTaskBF.cxx:1009
 AliAnalysisTaskBF.cxx:1010
 AliAnalysisTaskBF.cxx:1011
 AliAnalysisTaskBF.cxx:1012
 AliAnalysisTaskBF.cxx:1013
 AliAnalysisTaskBF.cxx:1014
 AliAnalysisTaskBF.cxx:1015
 AliAnalysisTaskBF.cxx:1016
 AliAnalysisTaskBF.cxx:1017
 AliAnalysisTaskBF.cxx:1018
 AliAnalysisTaskBF.cxx:1019
 AliAnalysisTaskBF.cxx:1020
 AliAnalysisTaskBF.cxx:1021
 AliAnalysisTaskBF.cxx:1022
 AliAnalysisTaskBF.cxx:1023
 AliAnalysisTaskBF.cxx:1024
 AliAnalysisTaskBF.cxx:1025
 AliAnalysisTaskBF.cxx:1026
 AliAnalysisTaskBF.cxx:1027
 AliAnalysisTaskBF.cxx:1028
 AliAnalysisTaskBF.cxx:1029
 AliAnalysisTaskBF.cxx:1030
 AliAnalysisTaskBF.cxx:1031
 AliAnalysisTaskBF.cxx:1032
 AliAnalysisTaskBF.cxx:1033
 AliAnalysisTaskBF.cxx:1034
 AliAnalysisTaskBF.cxx:1035
 AliAnalysisTaskBF.cxx:1036
 AliAnalysisTaskBF.cxx:1037
 AliAnalysisTaskBF.cxx:1038
 AliAnalysisTaskBF.cxx:1039
 AliAnalysisTaskBF.cxx:1040
 AliAnalysisTaskBF.cxx:1041
 AliAnalysisTaskBF.cxx:1042
 AliAnalysisTaskBF.cxx:1043
 AliAnalysisTaskBF.cxx:1044
 AliAnalysisTaskBF.cxx:1045
 AliAnalysisTaskBF.cxx:1046
 AliAnalysisTaskBF.cxx:1047
 AliAnalysisTaskBF.cxx:1048
 AliAnalysisTaskBF.cxx:1049
 AliAnalysisTaskBF.cxx:1050
 AliAnalysisTaskBF.cxx:1051
 AliAnalysisTaskBF.cxx:1052
 AliAnalysisTaskBF.cxx:1053
 AliAnalysisTaskBF.cxx:1054
 AliAnalysisTaskBF.cxx:1055
 AliAnalysisTaskBF.cxx:1056
 AliAnalysisTaskBF.cxx:1057
 AliAnalysisTaskBF.cxx:1058
 AliAnalysisTaskBF.cxx:1059
 AliAnalysisTaskBF.cxx:1060
 AliAnalysisTaskBF.cxx:1061
 AliAnalysisTaskBF.cxx:1062
 AliAnalysisTaskBF.cxx:1063
 AliAnalysisTaskBF.cxx:1064
 AliAnalysisTaskBF.cxx:1065
 AliAnalysisTaskBF.cxx:1066
 AliAnalysisTaskBF.cxx:1067
 AliAnalysisTaskBF.cxx:1068
 AliAnalysisTaskBF.cxx:1069
 AliAnalysisTaskBF.cxx:1070
 AliAnalysisTaskBF.cxx:1071
 AliAnalysisTaskBF.cxx:1072
 AliAnalysisTaskBF.cxx:1073
 AliAnalysisTaskBF.cxx:1074
 AliAnalysisTaskBF.cxx:1075
 AliAnalysisTaskBF.cxx:1076
 AliAnalysisTaskBF.cxx:1077
 AliAnalysisTaskBF.cxx:1078
 AliAnalysisTaskBF.cxx:1079
 AliAnalysisTaskBF.cxx:1080
 AliAnalysisTaskBF.cxx:1081
 AliAnalysisTaskBF.cxx:1082
 AliAnalysisTaskBF.cxx:1083
 AliAnalysisTaskBF.cxx:1084
 AliAnalysisTaskBF.cxx:1085
 AliAnalysisTaskBF.cxx:1086
 AliAnalysisTaskBF.cxx:1087
 AliAnalysisTaskBF.cxx:1088
 AliAnalysisTaskBF.cxx:1089
 AliAnalysisTaskBF.cxx:1090
 AliAnalysisTaskBF.cxx:1091
 AliAnalysisTaskBF.cxx:1092
 AliAnalysisTaskBF.cxx:1093
 AliAnalysisTaskBF.cxx:1094
 AliAnalysisTaskBF.cxx:1095
 AliAnalysisTaskBF.cxx:1096
 AliAnalysisTaskBF.cxx:1097
 AliAnalysisTaskBF.cxx:1098
 AliAnalysisTaskBF.cxx:1099
 AliAnalysisTaskBF.cxx:1100
 AliAnalysisTaskBF.cxx:1101
 AliAnalysisTaskBF.cxx:1102
 AliAnalysisTaskBF.cxx:1103
 AliAnalysisTaskBF.cxx:1104
 AliAnalysisTaskBF.cxx:1105
 AliAnalysisTaskBF.cxx:1106
 AliAnalysisTaskBF.cxx:1107
 AliAnalysisTaskBF.cxx:1108
 AliAnalysisTaskBF.cxx:1109
 AliAnalysisTaskBF.cxx:1110
 AliAnalysisTaskBF.cxx:1111
 AliAnalysisTaskBF.cxx:1112
 AliAnalysisTaskBF.cxx:1113
 AliAnalysisTaskBF.cxx:1114
 AliAnalysisTaskBF.cxx:1115
 AliAnalysisTaskBF.cxx:1116
 AliAnalysisTaskBF.cxx:1117
 AliAnalysisTaskBF.cxx:1118
 AliAnalysisTaskBF.cxx:1119
 AliAnalysisTaskBF.cxx:1120
 AliAnalysisTaskBF.cxx:1121
 AliAnalysisTaskBF.cxx:1122
 AliAnalysisTaskBF.cxx:1123
 AliAnalysisTaskBF.cxx:1124
 AliAnalysisTaskBF.cxx:1125
 AliAnalysisTaskBF.cxx:1126
 AliAnalysisTaskBF.cxx:1127
 AliAnalysisTaskBF.cxx:1128
 AliAnalysisTaskBF.cxx:1129
 AliAnalysisTaskBF.cxx:1130
 AliAnalysisTaskBF.cxx:1131
 AliAnalysisTaskBF.cxx:1132
 AliAnalysisTaskBF.cxx:1133
 AliAnalysisTaskBF.cxx:1134
 AliAnalysisTaskBF.cxx:1135
 AliAnalysisTaskBF.cxx:1136
 AliAnalysisTaskBF.cxx:1137
 AliAnalysisTaskBF.cxx:1138
 AliAnalysisTaskBF.cxx:1139
 AliAnalysisTaskBF.cxx:1140
 AliAnalysisTaskBF.cxx:1141
 AliAnalysisTaskBF.cxx:1142
 AliAnalysisTaskBF.cxx:1143
 AliAnalysisTaskBF.cxx:1144
 AliAnalysisTaskBF.cxx:1145
 AliAnalysisTaskBF.cxx:1146
 AliAnalysisTaskBF.cxx:1147
 AliAnalysisTaskBF.cxx:1148
 AliAnalysisTaskBF.cxx:1149
 AliAnalysisTaskBF.cxx:1150
 AliAnalysisTaskBF.cxx:1151
 AliAnalysisTaskBF.cxx:1152
 AliAnalysisTaskBF.cxx:1153
 AliAnalysisTaskBF.cxx:1154
 AliAnalysisTaskBF.cxx:1155
 AliAnalysisTaskBF.cxx:1156
 AliAnalysisTaskBF.cxx:1157
 AliAnalysisTaskBF.cxx:1158
 AliAnalysisTaskBF.cxx:1159
 AliAnalysisTaskBF.cxx:1160
 AliAnalysisTaskBF.cxx:1161
 AliAnalysisTaskBF.cxx:1162
 AliAnalysisTaskBF.cxx:1163
 AliAnalysisTaskBF.cxx:1164
 AliAnalysisTaskBF.cxx:1165
 AliAnalysisTaskBF.cxx:1166
 AliAnalysisTaskBF.cxx:1167
 AliAnalysisTaskBF.cxx:1168
 AliAnalysisTaskBF.cxx:1169
 AliAnalysisTaskBF.cxx:1170
 AliAnalysisTaskBF.cxx:1171
 AliAnalysisTaskBF.cxx:1172
 AliAnalysisTaskBF.cxx:1173
 AliAnalysisTaskBF.cxx:1174
 AliAnalysisTaskBF.cxx:1175
 AliAnalysisTaskBF.cxx:1176
 AliAnalysisTaskBF.cxx:1177
 AliAnalysisTaskBF.cxx:1178
 AliAnalysisTaskBF.cxx:1179
 AliAnalysisTaskBF.cxx:1180
 AliAnalysisTaskBF.cxx:1181
 AliAnalysisTaskBF.cxx:1182
 AliAnalysisTaskBF.cxx:1183
 AliAnalysisTaskBF.cxx:1184
 AliAnalysisTaskBF.cxx:1185
 AliAnalysisTaskBF.cxx:1186
 AliAnalysisTaskBF.cxx:1187
 AliAnalysisTaskBF.cxx:1188
 AliAnalysisTaskBF.cxx:1189
 AliAnalysisTaskBF.cxx:1190
 AliAnalysisTaskBF.cxx:1191
 AliAnalysisTaskBF.cxx:1192
 AliAnalysisTaskBF.cxx:1193
 AliAnalysisTaskBF.cxx:1194
 AliAnalysisTaskBF.cxx:1195
 AliAnalysisTaskBF.cxx:1196
 AliAnalysisTaskBF.cxx:1197
 AliAnalysisTaskBF.cxx:1198
 AliAnalysisTaskBF.cxx:1199
 AliAnalysisTaskBF.cxx:1200
 AliAnalysisTaskBF.cxx:1201
 AliAnalysisTaskBF.cxx:1202
 AliAnalysisTaskBF.cxx:1203
 AliAnalysisTaskBF.cxx:1204
 AliAnalysisTaskBF.cxx:1205
 AliAnalysisTaskBF.cxx:1206
 AliAnalysisTaskBF.cxx:1207
 AliAnalysisTaskBF.cxx:1208
 AliAnalysisTaskBF.cxx:1209
 AliAnalysisTaskBF.cxx:1210
 AliAnalysisTaskBF.cxx:1211
 AliAnalysisTaskBF.cxx:1212
 AliAnalysisTaskBF.cxx:1213
 AliAnalysisTaskBF.cxx:1214
 AliAnalysisTaskBF.cxx:1215
 AliAnalysisTaskBF.cxx:1216
 AliAnalysisTaskBF.cxx:1217
 AliAnalysisTaskBF.cxx:1218
 AliAnalysisTaskBF.cxx:1219
 AliAnalysisTaskBF.cxx:1220
 AliAnalysisTaskBF.cxx:1221
 AliAnalysisTaskBF.cxx:1222
 AliAnalysisTaskBF.cxx:1223
 AliAnalysisTaskBF.cxx:1224
 AliAnalysisTaskBF.cxx:1225
 AliAnalysisTaskBF.cxx:1226
 AliAnalysisTaskBF.cxx:1227
 AliAnalysisTaskBF.cxx:1228
 AliAnalysisTaskBF.cxx:1229
 AliAnalysisTaskBF.cxx:1230
 AliAnalysisTaskBF.cxx:1231
 AliAnalysisTaskBF.cxx:1232
 AliAnalysisTaskBF.cxx:1233
 AliAnalysisTaskBF.cxx:1234
 AliAnalysisTaskBF.cxx:1235
 AliAnalysisTaskBF.cxx:1236
 AliAnalysisTaskBF.cxx:1237
 AliAnalysisTaskBF.cxx:1238
 AliAnalysisTaskBF.cxx:1239
 AliAnalysisTaskBF.cxx:1240
 AliAnalysisTaskBF.cxx:1241
 AliAnalysisTaskBF.cxx:1242
 AliAnalysisTaskBF.cxx:1243
 AliAnalysisTaskBF.cxx:1244
 AliAnalysisTaskBF.cxx:1245
 AliAnalysisTaskBF.cxx:1246
 AliAnalysisTaskBF.cxx:1247
 AliAnalysisTaskBF.cxx:1248
 AliAnalysisTaskBF.cxx:1249
 AliAnalysisTaskBF.cxx:1250
 AliAnalysisTaskBF.cxx:1251
 AliAnalysisTaskBF.cxx:1252
 AliAnalysisTaskBF.cxx:1253
 AliAnalysisTaskBF.cxx:1254
 AliAnalysisTaskBF.cxx:1255
 AliAnalysisTaskBF.cxx:1256
 AliAnalysisTaskBF.cxx:1257
 AliAnalysisTaskBF.cxx:1258
 AliAnalysisTaskBF.cxx:1259
 AliAnalysisTaskBF.cxx:1260
 AliAnalysisTaskBF.cxx:1261
 AliAnalysisTaskBF.cxx:1262
 AliAnalysisTaskBF.cxx:1263
 AliAnalysisTaskBF.cxx:1264
 AliAnalysisTaskBF.cxx:1265
 AliAnalysisTaskBF.cxx:1266
 AliAnalysisTaskBF.cxx:1267
 AliAnalysisTaskBF.cxx:1268
 AliAnalysisTaskBF.cxx:1269
 AliAnalysisTaskBF.cxx:1270
 AliAnalysisTaskBF.cxx:1271
 AliAnalysisTaskBF.cxx:1272
 AliAnalysisTaskBF.cxx:1273
 AliAnalysisTaskBF.cxx:1274
 AliAnalysisTaskBF.cxx:1275
 AliAnalysisTaskBF.cxx:1276
 AliAnalysisTaskBF.cxx:1277
 AliAnalysisTaskBF.cxx:1278
 AliAnalysisTaskBF.cxx:1279
 AliAnalysisTaskBF.cxx:1280
 AliAnalysisTaskBF.cxx:1281
 AliAnalysisTaskBF.cxx:1282
 AliAnalysisTaskBF.cxx:1283
 AliAnalysisTaskBF.cxx:1284
 AliAnalysisTaskBF.cxx:1285
 AliAnalysisTaskBF.cxx:1286
 AliAnalysisTaskBF.cxx:1287
 AliAnalysisTaskBF.cxx:1288
 AliAnalysisTaskBF.cxx:1289
 AliAnalysisTaskBF.cxx:1290
 AliAnalysisTaskBF.cxx:1291
 AliAnalysisTaskBF.cxx:1292
 AliAnalysisTaskBF.cxx:1293
 AliAnalysisTaskBF.cxx:1294
 AliAnalysisTaskBF.cxx:1295
 AliAnalysisTaskBF.cxx:1296
 AliAnalysisTaskBF.cxx:1297
 AliAnalysisTaskBF.cxx:1298
 AliAnalysisTaskBF.cxx:1299
 AliAnalysisTaskBF.cxx:1300
 AliAnalysisTaskBF.cxx:1301
 AliAnalysisTaskBF.cxx:1302
 AliAnalysisTaskBF.cxx:1303
 AliAnalysisTaskBF.cxx:1304
 AliAnalysisTaskBF.cxx:1305
 AliAnalysisTaskBF.cxx:1306
 AliAnalysisTaskBF.cxx:1307
 AliAnalysisTaskBF.cxx:1308
 AliAnalysisTaskBF.cxx:1309
 AliAnalysisTaskBF.cxx:1310
 AliAnalysisTaskBF.cxx:1311
 AliAnalysisTaskBF.cxx:1312
 AliAnalysisTaskBF.cxx:1313
 AliAnalysisTaskBF.cxx:1314
 AliAnalysisTaskBF.cxx:1315
 AliAnalysisTaskBF.cxx:1316
 AliAnalysisTaskBF.cxx:1317
 AliAnalysisTaskBF.cxx:1318
 AliAnalysisTaskBF.cxx:1319
 AliAnalysisTaskBF.cxx:1320
 AliAnalysisTaskBF.cxx:1321
 AliAnalysisTaskBF.cxx:1322
 AliAnalysisTaskBF.cxx:1323
 AliAnalysisTaskBF.cxx:1324
 AliAnalysisTaskBF.cxx:1325
 AliAnalysisTaskBF.cxx:1326
 AliAnalysisTaskBF.cxx:1327
 AliAnalysisTaskBF.cxx:1328
 AliAnalysisTaskBF.cxx:1329
 AliAnalysisTaskBF.cxx:1330
 AliAnalysisTaskBF.cxx:1331
 AliAnalysisTaskBF.cxx:1332
 AliAnalysisTaskBF.cxx:1333
 AliAnalysisTaskBF.cxx:1334
 AliAnalysisTaskBF.cxx:1335
 AliAnalysisTaskBF.cxx:1336
 AliAnalysisTaskBF.cxx:1337
 AliAnalysisTaskBF.cxx:1338
 AliAnalysisTaskBF.cxx:1339
 AliAnalysisTaskBF.cxx:1340
 AliAnalysisTaskBF.cxx:1341
 AliAnalysisTaskBF.cxx:1342
 AliAnalysisTaskBF.cxx:1343
 AliAnalysisTaskBF.cxx:1344
 AliAnalysisTaskBF.cxx:1345
 AliAnalysisTaskBF.cxx:1346
 AliAnalysisTaskBF.cxx:1347
 AliAnalysisTaskBF.cxx:1348
 AliAnalysisTaskBF.cxx:1349
 AliAnalysisTaskBF.cxx:1350
 AliAnalysisTaskBF.cxx:1351
 AliAnalysisTaskBF.cxx:1352
 AliAnalysisTaskBF.cxx:1353
 AliAnalysisTaskBF.cxx:1354
 AliAnalysisTaskBF.cxx:1355
 AliAnalysisTaskBF.cxx:1356
 AliAnalysisTaskBF.cxx:1357
 AliAnalysisTaskBF.cxx:1358
 AliAnalysisTaskBF.cxx:1359
 AliAnalysisTaskBF.cxx:1360