#include "TChain.h"
#include "TH1.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TMath.h"
#include "TObjArray.h"
#include "AliAnalysisTaskSE.h"
#include "AliAnalysisManager.h"
#include "AliAODEvent.h"
#include "AliAODInputHandler.h"
#include "AliCentrality.h"
#include "AliAnalysisTaskPhiFlow.h"
#include "AliFlowBayesianPID.h"
#include "AliPIDCombined.h"
#include "AliMCEvent.h"
#include "TProfile.h"
#include "AliFlowCandidateTrack.h"
#include "AliFlowTrackCuts.h"
#include "AliFlowEventSimple.h"
#include "AliFlowTrackSimple.h"
#include "AliFlowCommonConstants.h"
#include "AliFlowEvent.h"
#include "TVector3.h"
#include "AliAODVZERO.h"
#include "AliPIDResponse.h"
#include "AliAODMCParticle.h"
#include "AliAnalysisTaskVnV0.h"
#include "AliEventPoolManager.h"
class AliFlowTrackCuts;
using std::cout;
using std::endl;
ClassImp(AliAnalysisTaskPhiFlow)
ClassImp(AliPhiMesonHelperTrack)
AliAnalysisTaskPhiFlow::AliAnalysisTaskPhiFlow() : AliAnalysisTaskSE(),
fDebug(0), fIsMC(0), fEventMixing(0), fTypeMixing(0), fQA(0), fV0(0), fMassBins(1), fMinMass(-1.), fMaxMass(0.), fCutsRP(NULL), fNullCuts(0), fPIDResponse(0), fFlowEvent(0), fBayesianResponse(0), fCandidates(0), fCandidateEtaPtCut(0), fCandidateMinEta(0), fCandidateMaxEta(0), fCandidateMinPt(0), fCandidateMaxPt(0), fCandidateYCut(kFALSE), fCandidateMinY(-.5), fCandidateMaxY(.5), fNPtBins(18), fCentrality(999), fVertex(999), fAOD(0), fPoolManager(0), fOutputList(0), fEventStats(0), fCentralityPass(0), fCentralityNoPass(0), fNOPID(0), fPIDk(0),fNOPIDTOF(0), fPIDTOF(0), fPtP(0), fPtN(0), fPtKP(0), fPtKN(0), fMultCorAfterCuts(0), fMultvsCentr(0), fCentralityMin(0), fCentralityMax(100), fkCentralityMethodA(0), fkCentralityMethodB(0), fCentralityCut2010(0), fCentralityCut2011(0), fPOICuts(0), fVertexRange(0), fPhi(0), fPt(0), fEta(0), fVZEROA(0), fVZEROC(0), fTPCM(0), fDCAAll(0), fDCAXYQA(0), fDCAZQA(0), fDCAPrim(0), fDCASecondaryWeak(0), fDCAMaterial(0), fSubEventDPhiv2(0), fSkipEventSelection(0), fUsePidResponse(0), fPIDCombined(0)
{
for(Int_t i(0); i < 7; i++) fPIDConfig[i] = 0.;
for(Int_t i(0); i < 5; i++) fDCAConfig[i] = 0.;
for(Int_t i(0); i < 20; i++) {
fVertexMixingBins[i] = 0;
fCentralityMixingBins[i] = 0;
}
fMixingParameters[0] = 1000; fMixingParameters[1] = 50000; fMixingParameters[2] = 5;
for(Int_t i(0); i < 18; i++) {
for(Int_t j(0); j < 2; j++) fV0Data[i][j] = 0;
fInvMNP[i] = 0; fInvMNN[i] = 0; fInvMPP[i] = 0; fPtSpectra[i] = 0; fPtBins[i] = 0.;
}
}
AliAnalysisTaskPhiFlow::AliAnalysisTaskPhiFlow(const char *name) : AliAnalysisTaskSE(name),
fDebug(0), fIsMC(0), fEventMixing(0), fTypeMixing(0), fQA(0), fV0(0), fMassBins(1), fMinMass(-1.), fMaxMass(0.), fCutsRP(NULL), fNullCuts(0), fPIDResponse(0), fFlowEvent(0), fBayesianResponse(0), fCandidates(0), fCandidateEtaPtCut(0), fCandidateMinEta(0), fCandidateMaxEta(0), fCandidateMinPt(0), fCandidateMaxPt(0), fCandidateYCut(kFALSE), fCandidateMinY(-.5), fCandidateMaxY(.5), fNPtBins(18), fCentrality(999), fVertex(999), fAOD(0), fPoolManager(0), fOutputList(0), fEventStats(0), fCentralityPass(0), fCentralityNoPass(0), fNOPID(0), fPIDk(0), fNOPIDTOF(0), fPIDTOF(0), fPtP(0), fPtN(0), fPtKP(0), fPtKN(0), fMultCorAfterCuts(0), fMultvsCentr(0), fCentralityMin(0), fCentralityMax(100), fkCentralityMethodA(0), fkCentralityMethodB(0), fCentralityCut2010(0), fCentralityCut2011(0), fPOICuts(0), fVertexRange(0), fPhi(0), fPt(0), fEta(0), fVZEROA(0), fVZEROC(0), fTPCM(0), fDCAAll(0), fDCAXYQA(0), fDCAZQA(0), fDCAPrim(0), fDCASecondaryWeak(0), fDCAMaterial(0), fSubEventDPhiv2(0), fSkipEventSelection(0), fUsePidResponse(0), fPIDCombined(0)
{
for(Int_t i(0); i < 7; i++) fPIDConfig[i] = 0.;
for(Int_t i(0); i < 5; i++) fDCAConfig[i] = 0.;
for(Int_t i(0); i < 20; i++) {
fVertexMixingBins[i] = 0;
fCentralityMixingBins[i] = 0;
}
fMixingParameters[0] = 1000; fMixingParameters[1] = 50000; fMixingParameters[2] = 5;
for(Int_t i(0); i < 18; i++) {
for(Int_t j(0); j < 2; j++) fV0Data[i][j] = 0;
fInvMNP[i] = 0; fInvMNN[i] = 0; fInvMPP[i] = 0; fPtSpectra[i] = 0; fPtBins[i] = 0.;
}
DefineInput(0, TChain::Class());
DefineOutput(1, TList::Class());
DefineOutput(2, AliFlowEventSimple::Class());
if(fDebug > 0) cout << " === Created instance of AliAnaysisTaskPhiFlow === " << endl;
}
AliAnalysisTaskPhiFlow::~AliAnalysisTaskPhiFlow()
{
if (fNullCuts) delete fNullCuts;
if (fOutputList) delete fOutputList;
if (fCandidates) delete fCandidates;
if (fFlowEvent) delete fFlowEvent;
if (fBayesianResponse) delete fBayesianResponse;
if (fEventMixing) delete fPoolManager;
if (fPIDCombined) delete fPIDCombined;
if (fDebug > 0) cout << " === Deleted instance of AliAnalysisTaskPhiFlow === " << endl;
}
TH1F* AliAnalysisTaskPhiFlow::BookHistogram(const char* name)
{
if(fDebug > 0) cout << " *** BookHistogram() *** " << name << endl;
TH1F *hist = new TH1F(name, Form("M_{INV} (%s)", name), 60, .99, 1.092);
hist->GetXaxis()->SetTitle("M_{INV} (GeV / c^{2})");
hist->GetYaxis()->SetTitle("No. of pairs");
hist->SetMarkerStyle(kFullCircle);
hist->Sumw2();
fOutputList->Add(hist);
return hist;
}
TH2F* AliAnalysisTaskPhiFlow::BookPIDHistogram(const char* name, Bool_t TPC)
{
if(fDebug > 0) cout << " *** BookPIDHisotgram() *** " << endl;
TH2F *hist = 0x0;
if(TPC) {
hist = new TH2F(name, Form("PID (%s)", name), 100, 0, 5, 100, 0, 1000);
hist->GetYaxis()->SetTitle("dE/dx (a.u.)");
}
if(!TPC) {
hist = new TH2F(name, Form("PID (%s)", name), 100, 0, 5, 100, 0, 1.5);
hist->GetYaxis()->SetTitle("#beta");
}
hist->GetXaxis()->SetTitle("P (GeV / c)");
fOutputList->Add(hist);
return hist;
}
TH1F* AliAnalysisTaskPhiFlow::InitPtSpectraHistograms(Float_t nmin, Float_t nmax)
{
if(fDebug > 0) cout << " *** InitPtSpectraHistograms() *** " << endl;
TH1F* hist = new TH1F(Form("%4.2f p_{t} %4.2f", nmin, nmax), Form("%f p_{t} %f", nmin, nmax), 60, nmin, nmax);
hist->GetXaxis()->SetTitle("p_{T} GeV / c");
fOutputList->Add(hist);
return hist;
}
TH1F* AliAnalysisTaskPhiFlow::BookPtHistogram(const char* name)
{
if(fDebug > 0) cout << " *** BookPtHistogram() *** " << endl;
TH1F* ratio = new TH1F(name, name, 100, 0, 7);
ratio->GetXaxis()->SetTitle("p_{T} ( GeV / c^{2} )");
ratio->GetYaxis()->SetTitle("No. of events");
ratio->Sumw2();
fOutputList->Add(ratio);
return ratio;
}
void AliAnalysisTaskPhiFlow::AddPhiIdentificationOutputObjects()
{
if(fDebug > 0) cout << " ** AddPhiIdentificationOutputObjects() *** " << endl;
if(fQA) {
fEventStats = new TH1F("fHistStats", "Event Statistics", 18, -.25, 4.25);
fEventStats->GetXaxis()->SetTitle("No. of events");
fEventStats->GetYaxis()->SetTitle("Statistics");
fOutputList->Add(fEventStats);
}
fCentralityPass = new TH1F("fCentralityPass", "Centrality Pass", 101, -1, 100);
fOutputList->Add(fCentralityPass);
if(fQA) {
fCentralityNoPass = new TH1F("fCentralityNoPass", "Centrality No Pass", 101, -1, 100);
fOutputList->Add(fCentralityNoPass);
fNOPID = BookPIDHistogram("TPC signal, all particles", kTRUE);
fPIDk = BookPIDHistogram("TPC signal, kaons", kTRUE);
fNOPIDTOF = BookPIDHistogram("TOF signal, all particles", kFALSE);
fPIDTOF = BookPIDHistogram("TOF signal, kaons", kFALSE);
}
for(Int_t ptbin(0); ptbin < fNPtBins; ptbin++) {
fInvMNP[ptbin] = BookHistogram(Form("NP, %4.2f < p_{T} < %4.2f GeV", fPtBins[ptbin], fPtBins[ptbin+1]));
fInvMNN[ptbin] = BookHistogram(Form("NN, %4.2f < p_{T} < %4.2f GeV", fPtBins[ptbin], fPtBins[ptbin+1]));
fInvMPP[ptbin] = BookHistogram(Form("PP, %4.2f < p_{T} < %4.2f GeV", fPtBins[ptbin], fPtBins[ptbin+1]));
}
if(fQA) {
for(Int_t ptbin(0); ptbin < fNPtBins; ptbin++) fPtSpectra[ptbin] = InitPtSpectraHistograms(fPtBins[ptbin], fPtBins[ptbin+1]);
fPtP = BookPtHistogram("i^{+}");
fPtN = BookPtHistogram("i^{-}");
fPtKP = BookPtHistogram("K^{+}");
fPtKN = BookPtHistogram("K^{-}");
fPhi = new TH1F("fPhi", "#phi distribution", 100, -.5, 7);
fOutputList->Add(fPhi);
fPt = new TH1F("fPt", "p_{T}", 100, 0, 5.5);
fOutputList->Add(fPt);
fEta = new TH1F("fEta", "#eta distribution", 100, -1.1, 1.1);
fOutputList->Add(fEta);
fVZEROA = new TH1F("fVZEROA", "VZERO A Multiplicity", 1000, 0, 10000);
fOutputList->Add(fVZEROA);
fVZEROC = new TH1F("fVZEROC", "VZERO C Multiplicity", 1000, 0, 10000);
fOutputList->Add(fVZEROC);
fTPCM = new TH1F("fTPCM", "TPC multiplicity", 1000, 0, 10000);
fOutputList->Add(fTPCM);
fDCAXYQA = new TH1F("fDCAXYQA", "fDCAXYQA", 1000, -5, 5);
fOutputList->Add(fDCAXYQA);
fDCAZQA = new TH1F("fDCAZQA", "fDCAZQA", 1000, -5, 5);
fOutputList->Add(fDCAZQA);
if(fCentralityCut2010 || fCentralityCut2011) {
fMultCorAfterCuts = new TH2F("fMultCorAfterCuts", "TPC vs Global multiplicity (After cuts); Global multiplicity; TPC multiplicity", 100, 0, 3000, 100, 0, 3000);
fOutputList->Add(fMultCorAfterCuts);
fMultvsCentr = new TH2F("fMultvsCentr", "Multiplicity vs centrality; centrality; Multiplicity", 9, -0.5, 100.5, 101, 0, 3000);
fOutputList->Add(fMultvsCentr);
}
}
if(fIsMC || fQA) {
fDCAAll = new TH2F("fDCAAll", "fDCAAll", 1000, 0, 10, 1000, -5, 5);
fOutputList->Add(fDCAAll);
fDCAPrim = new TH2F("fDCAprim","fDCAprim", 1000, 0, 10, 1000, -5, 5);
fOutputList->Add(fDCAPrim);
fDCASecondaryWeak = new TH2F("fDCASecondaryWeak","fDCASecondaryWeak", 1000, 0, 10, 1000, -5, 5);
fOutputList->Add(fDCASecondaryWeak);
fDCAMaterial = new TH2F("fDCAMaterial","fDCAMaterial", 1000, 0, 10, 1000, -5, 5);
fOutputList->Add(fDCAMaterial);
}
if(fV0) {
fSubEventDPhiv2 = new TProfile("fSubEventDPhiv2", "fSubEventDPhiv2", 5, 0, 5);
fSubEventDPhiv2->GetXaxis()->SetBinLabel(1, "<#Psi_{a} - #Psi_{b}>");
fSubEventDPhiv2->GetXaxis()->SetBinLabel(2, "<#Psi_{a} - #Psi_{c}>");
fSubEventDPhiv2->GetXaxis()->SetBinLabel(3, "<#Psi_{b} - #Psi_{c}>");
fSubEventDPhiv2->GetXaxis()->SetBinLabel(4, "#sqrt{#frac{<#Psi_{a} - #Psi_{b}><#Psi_{a} - #Psi_{c}>}{<#Psi_{b} - #Psi_{c}>}}");
fSubEventDPhiv2->GetXaxis()->SetBinLabel(5, "#sqrt{#frac{<#Psi_{a} - #Psi_{c}><#Psi_{b} - #Psi_{c}>}{<#Psi_{a} - #Psi_{b}>}}");
fOutputList->Add(fSubEventDPhiv2);
const char* V0[] = {"V0A", "V0C"};
for(Int_t ptbin(0); ptbin < fNPtBins; ptbin++)
for(Int_t iV0(0); iV0 < 2; iV0++) {
fV0Data[ptbin][iV0] = new TProfile(Form("%s v2 %4.2f < p_{T} < %4.2f GeV", V0[iV0], fPtBins[ptbin], fPtBins[ptbin+1]), Form("%s v2 %4.2f < p_{T} < %4.2f GeV", V0[iV0], fPtBins[ptbin], fPtBins[ptbin+1]), fMassBins, fMinMass, fMaxMass);
fOutputList->Add(fV0Data[ptbin][iV0]);
}
}
}
void AliAnalysisTaskPhiFlow::UserCreateOutputObjects()
{
if(fDebug > 0) cout << " *** UserCreateOutputObjects() *** " << endl;
fNullCuts = new AliFlowTrackCuts("null_cuts");
fBayesianResponse = new AliFlowBayesianPID();
fPIDCombined = new AliPIDCombined;
fPIDCombined->SetDefaultTPCPriors();
fPIDCombined->SetDetectorMask(AliPIDResponse::kDetTPC|AliPIDResponse::kDetTOF);
if(fSkipEventSelection || fIsMC) fBayesianResponse->SetMC(kTRUE);
Double_t t(0);
for(Int_t i = 0; i < 7; i++) t+=TMath::Abs(fPIDConfig[i]);
if(t < 0.1) AliFatal("No valid PID procedure recognized -- terminating analysis !!!");
if(fNPtBins > 18) AliFatal("Invalid number of pt bins initialied ( > 18 ) -- terminating analysis !!!");
AliFlowCommonConstants* cc = AliFlowCommonConstants::GetMaster();
cc->SetNbinsQ(500); cc->SetNbinsPhi(180); cc->SetNbinsMult(10000);
cc->SetQMin(0.0); cc->SetPhiMin(0.0); cc->SetMultMin(0);
cc->SetQMax(3.0); cc->SetPhiMax(TMath::TwoPi()); cc->SetMultMax(10000);
cc->SetNbinsMass(fMassBins); cc->SetNbinsEta(200); (fMassBins == 1) ? cc->SetNbinsPt(15) : cc->SetNbinsPt(100);
cc->SetMassMin(fMinMass); cc->SetEtaMin(-5.0); cc->SetPtMin(0);
cc->SetMassMax(fMaxMass); cc->SetEtaMax(+5.0); (fMassBins == 1) ? cc->SetPtMax(15) : cc->SetPtMax(10);
fBayesianResponse->SetNewTrackParam();
AliAnalysisManager *man = AliAnalysisManager::GetAnalysisManager();
if (man) {
AliInputEventHandler* inputHandler = (AliInputEventHandler*)(man->GetInputEventHandler());
if (inputHandler) fPIDResponse = inputHandler->GetPIDResponse();
}
fOutputList = new TList();
fOutputList->SetOwner(kTRUE);
AddPhiIdentificationOutputObjects();
PostData(1, fOutputList);
fCandidates = new TObjArray(1000);
fCandidates->SetOwner(kTRUE);
fFlowEvent = new AliFlowEvent(10000);
PostData(2, fFlowEvent);
if(fEventMixing) fPoolManager = InitializeEventMixing();
}
AliEventPoolManager* AliAnalysisTaskPhiFlow::InitializeEventMixing()
{
if(fDebug > 0) cout << " *** InitializeEventMixing() *** " << endl;
Int_t _c(0), _v(0);
for(Int_t i(0); i < 19; i++) {
if (fCentralityMixingBins[i+1] < fCentralityMixingBins[i]) { _c = i; break; }
else _c = 19;
}
for(Int_t i(0); i < 19; i++) {
if (fVertexMixingBins[i+1] < fVertexMixingBins[i]) { _v = i; break; }
else _v = 19;
}
if(fDebug > 0 ) cout << Form(" --> found %d centrality bins for mixing, %d vertex bins for mixing", _c, _v) << endl;
Double_t centralityBins[_c];
Double_t vertexBins[_v];
for(Int_t i(0); i < _c + 1; i++) centralityBins[i] = fCentralityMixingBins[i];
for(Int_t i(0); i < _v + 1; i++) vertexBins[i] = fVertexMixingBins[i];
return new AliEventPoolManager(fMixingParameters[0], fMixingParameters[1], _c, (Double_t*)centralityBins, _v, (Double_t*)vertexBins);
}
template <typename T> Double_t AliAnalysisTaskPhiFlow::InvariantMass(const T* track1, const T* track2) const
{
if(fDebug > 1) cout << " *** InvariantMass() *** " << endl;
if ((!track2) || (!track1)) return 0.;
Double_t masss = TMath::Power(4.93676999999999977e-01, 2);
Double_t pxs = TMath::Power((track1->Px() + track2->Px()), 2);
Double_t pys = TMath::Power((track1->Py() + track2->Py()), 2);
Double_t pzs = TMath::Power((track1->Pz() + track2->Pz()), 2);
Double_t e1 = TMath::Sqrt(track1->P() * track1->P() + masss);
Double_t e2 = TMath::Sqrt(track2->P() * track2->P() + masss);
Double_t es = TMath::Power((e1 + e2), 2);
if ((es - (pxs + pys + pzs)) < 0) return 0.;
return TMath::Sqrt((es - (pxs + pys + pzs)));
}
template <typename T> Bool_t AliAnalysisTaskPhiFlow::CheckCandidateEtaPtCut(const T* track1, const T* track2) const
{
if(fDebug > 1) cout << " *** CheckCandidateEtaPtCut() *** " << endl;
if (fCandidateMinPt > PhiPt(track1, track2) || fCandidateMaxPt < PhiPt(track1, track2)) return kFALSE;
TVector3 a(track1->Px(), track1->Py(), track1->Pz());
TVector3 b(track2->Px(), track2->Py(), track2->Pz());
TVector3 c = a + b;
if (fCandidateMinEta > c.Eta() || fCandidateMaxEta < c.Eta()) return kFALSE;
return kTRUE;
}
template <typename T> Bool_t AliAnalysisTaskPhiFlow::EventCut(T* event)
{
if(fDebug > 0) cout << " *** EventCut() *** " << endl;
if (!event) return kFALSE;
if (fSkipEventSelection) return kTRUE;
if (!CheckVertex(event)) return kFALSE;
if (!CheckCentrality(event)) return kFALSE;
if(fQA) PlotMultiplcities(event);
return kTRUE;
}
template <typename T> void AliAnalysisTaskPhiFlow::PlotMultiplcities(const T* event) const
{
if(fDebug > 1) cout << " *** PlotMultiplcities() *** " << endl;
fVZEROA->Fill(event->GetVZEROData()->GetMTotV0A());
fVZEROC->Fill(event->GetVZEROData()->GetMTotV0C());
fTPCM->Fill(event->GetNumberOfTracks());
}
template <typename T> Bool_t AliAnalysisTaskPhiFlow::CheckVertex(const T* event)
{
if(fDebug > 0) cout << " *** CheckVertex() *** " << endl;
if (!event->GetPrimaryVertex()) return 0x0;
fVertex = event->GetPrimaryVertex()->GetZ();
if (TMath::Abs(fVertex) > fVertexRange) return 0x0;
return kTRUE;
}
template <typename T> Bool_t AliAnalysisTaskPhiFlow::CheckCentrality(T* event)
{
if(fDebug > 0) cout << " *** CheckCentrality() *** " << endl;
if (!fkCentralityMethodA) AliFatal("No centrality method set! FATAL ERROR!");
fCentrality = event->GetCentrality()->GetCentralityPercentile(fkCentralityMethodA);
Double_t cenB(-999);
(fkCentralityMethodB) ? cenB = event->GetCentrality()->GetCentralityPercentile(fkCentralityMethodB) : cenB = fCentrality;
if (TMath::Abs(fCentrality-cenB) > 5 || cenB >= 80 || cenB < 0 || fCentrality <= fCentralityMin || fCentrality > fCentralityMax) {
if(fQA) fCentralityNoPass->Fill(fCentrality) ;
return kFALSE;
}
const Int_t nGoodTracks = event->GetNumberOfTracks();
if(fCentralityCut2010) {
Float_t multTPC(0.);
Float_t multGlob(0.);
for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) {
AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*>(event->GetTrack(iTracks));
if(!trackAOD) AliFatal("Not a standard AOD");
if (!trackAOD) continue;
if (!(trackAOD->TestFilterBit(1))) continue;
if ((trackAOD->Pt() < .2) || (trackAOD->Pt() > 5.0) || (TMath::Abs(trackAOD->Eta()) > .8) || (trackAOD->GetTPCNcls() < 70) || (trackAOD->GetDetPid()->GetTPCsignal() < 10.0) || (trackAOD->Chi2perNDF() < 0.2)) continue;
multTPC++;
}
for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) {
AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*>(event->GetTrack(iTracks));
if(!trackAOD) AliFatal("Not a standard AOD");
if (!trackAOD) continue;
if (!(trackAOD->TestFilterBit(16))) continue;
if ((trackAOD->Pt() < .2) || (trackAOD->Pt() > 5.0) || (TMath::Abs(trackAOD->Eta()) > .8) || (trackAOD->GetTPCNcls() < 70) || (trackAOD->GetDetPid()->GetTPCsignal() < 10.0) || (trackAOD->Chi2perNDF() < 0.1)) continue;
Double_t b[2] = {-99., -99.};
Double_t bCov[3] = {-99., -99., -99.};
AliAODTrack copy(*trackAOD);
if (!(copy.PropagateToDCA(event->GetPrimaryVertex(), event->GetMagneticField(), 100., b, bCov))) continue;
if ((TMath::Abs(b[0]) > 0.3) || (TMath::Abs(b[1]) > 0.3)) continue;
multGlob++;
}
if(! (multTPC > (-40.3+1.22*multGlob) && multTPC < (32.1+1.59*multGlob))) return kFALSE;
if(fQA) {
fMultCorAfterCuts->Fill(multGlob, multTPC);
fMultvsCentr->Fill(fCentrality, multTPC);
}
}
if(fCentralityCut2011) {
Float_t multTPC(0.);
Float_t multGlob(0.);
for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) {
AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*>(event->GetTrack(iTracks));
if(!trackAOD) AliFatal("Not a standard AOD");
if (!trackAOD) continue;
if (!(trackAOD->TestFilterBit(1))) continue;
if ((trackAOD->Pt() < .2) || (trackAOD->Pt() > 5.0) || (TMath::Abs(trackAOD->Eta()) > .8) || (trackAOD->GetTPCNcls() < 70) || (trackAOD->GetDetPid()->GetTPCsignal() < 10.0) || (trackAOD->Chi2perNDF() < 0.2)) continue;
multTPC++;
}
for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) {
AliAODTrack* trackAOD = dynamic_cast<AliAODTrack*>(event->GetTrack(iTracks));
if(!trackAOD) AliFatal("Not a standard AOD");
if (!trackAOD) continue;
if (!(trackAOD->TestFilterBit(16))) continue;
if ((trackAOD->Pt() < .2) || (trackAOD->Pt() > 5.0) || (TMath::Abs(trackAOD->Eta()) > .8) || (trackAOD->GetTPCNcls() < 70) || (trackAOD->GetDetPid()->GetTPCsignal() < 10.0) || (trackAOD->Chi2perNDF() < 0.1)) continue;
Double_t b[2] = {-99., -99.};
Double_t bCov[3] = {-99., -99., -99.};
AliAODTrack copy(*trackAOD);
if (!(copy.PropagateToDCA(event->GetPrimaryVertex(), event->GetMagneticField(), 100., b, bCov))) continue;
if ((TMath::Abs(b[0]) > 0.3) || (TMath::Abs(b[1]) > 0.3)) continue;
multGlob++;
}
if(! (multTPC > (-36.73 + 1.48*multGlob) && multTPC < (62.87 + 1.78*multGlob))) return kFALSE;
if(fQA) {
fMultCorAfterCuts->Fill(multGlob, multTPC);
fMultvsCentr->Fill(fCentrality, multTPC);
}
}
fCentralityPass->Fill(fCentrality);
return kTRUE;
}
void AliAnalysisTaskPhiFlow::InitializeBayesianPID(AliAODEvent* event)
{
if(fDebug > 0) cout << " *** InitializeBayesianPID() *** " << endl;
fBayesianResponse->SetDetResponse(event, fCentrality);
}
template <typename T> Bool_t AliAnalysisTaskPhiFlow::PassesTPCbayesianCut(T* track) const
{
if(fDebug > 1) cout << " *** PassesTPCbayesianCut() *** " << endl;
fBayesianResponse->ComputeProb(track);
if (!fBayesianResponse->GetCurrentMask(0)) return kFALSE;
Float_t *probabilities = fBayesianResponse->GetProb();
if (probabilities[3] > fPIDConfig[6]) {
if(fQA) {fPhi->Fill(track->Phi()); fPt->Fill(track->Pt()); fEta->Fill(track->Eta());}
return kTRUE;
}
return kFALSE;
}
Bool_t AliAnalysisTaskPhiFlow::PassesDCACut(AliAODTrack* track) const
{
if(fDebug > 1) cout << " *** PassesDCACut() *** " << endl;
if(fIsMC) return kTRUE;
AliAODTrack copy(*track);
if( (fDCAConfig[0] < 0.1) && (fDCAConfig[0] > -0.1) ) {
if(fQA) {
Double_t b[2] = { -99., -99.};
Double_t bCov[3] = { -99., -99., -99.};
if(copy.PropagateToDCA(fAOD->GetPrimaryVertex(), fAOD->GetMagneticField(), 100., b, bCov)) {
fDCAXYQA->Fill(b[0]);
fDCAZQA->Fill(b[1]);
fDCAPrim->Fill(track->Pt(), b[0]);
}
}
return kTRUE;
}
Double_t b[2] = { -99., -99.};
Double_t bCov[3] = { -99., -99., -99.};
if(!copy.PropagateToDCA(fAOD->GetPrimaryVertex(), fAOD->GetMagneticField(), 100., b, bCov)) return kFALSE;
if((!fIsMC)&&fQA) fDCAMaterial->Fill(track->Pt(), b[0]);
if( (fDCAConfig[0] < -.9) && ( (TMath::Abs(b[0]) > fDCAConfig[1]) || (TMath::Abs(b[1]) > fDCAConfig[2])) ) return kFALSE;
if(fDCAConfig[0] > .9) {
if(fDCAConfig[4] < TMath::Abs(b[1])) return kFALSE;
Double_t denom = TMath::Power(track->Pt(), fDCAConfig[3]);
if( denom < 0.0000001 ) return kFALSE;
if( (fDCAConfig[1] + fDCAConfig[2] / denom) < TMath::Abs(b[0]) ) return kFALSE;
}
if(fQA) {
fDCAXYQA->Fill(b[0]);
fDCAZQA->Fill(b[1]);
fDCAPrim->Fill(track->Pt(), b[0]);
}
return kTRUE;
}
Bool_t AliAnalysisTaskPhiFlow::IsKaon(AliAODTrack* track) const
{
if(fDebug > 1) cout << " *** IsKaon() *** " << endl;
if(fUsePidResponse) {
Double_t prob[10] = {0.,0.,0.,0.,0.,0.,0.,0.,0.,0.};
fPIDCombined->ComputeProbabilities(track, fPIDResponse, prob);
if(prob[3] > fPIDConfig[6]) return kTRUE;
}
if(!PassesDCACut(track)) return kFALSE;
if(fQA) {fNOPID->Fill(track->P(), track->GetTPCsignal());fNOPIDTOF->Fill(track->P(), track->GetTOFsignal());}
if(track->Pt() < fPIDConfig[1]) {
if(fDebug>1) cout << " ITS received track with p_t " << track->Pt() << endl;
if(fPIDConfig[2] < 0.) {
if (TMath::Abs(fPIDResponse->NumberOfSigmasITS(track, AliPID::kKaon)) < fPIDConfig[0]) return kTRUE;
return kFALSE;
}
if (TMath::Abs(fPIDResponse->NumberOfSigmasTPC(track, AliPID::kProton)) < fPIDConfig[3]) return kFALSE;
else if (TMath::Abs(fPIDResponse->NumberOfSigmasTPC(track, AliPID::kPion)) < fPIDConfig[3]) return kFALSE;
else if (TMath::Abs(fPIDResponse->NumberOfSigmasITS(track, AliPID::kKaon)) < fPIDConfig[0]) {
if(fQA) {fPIDk->Fill(track->P(), track->GetTPCsignal()); fPIDTOF->Fill(track->P(), track->GetTOFsignal());}
return kTRUE;
}
return kFALSE;
}
if((track->Pt() > fPIDConfig[1]) && (track->Pt() < fPIDConfig[4])) {
if(fDebug>1) cout << " TPC received track with p_t " << track->Pt() << endl;
if(fPIDConfig[5] < 0.) {
if (TMath::Abs(fPIDResponse->NumberOfSigmasTPC(track, AliPID::kKaon)) < fPIDConfig[3]) return kTRUE;
return kFALSE;
}
if (TMath::Abs(fPIDResponse->NumberOfSigmasITS(track, AliPID::kProton)) < fPIDConfig[0]) return kFALSE;
else if (TMath::Abs(fPIDResponse->NumberOfSigmasITS(track, AliPID::kPion)) < fPIDConfig[0]) return kFALSE;
else if (TMath::Abs(fPIDResponse->NumberOfSigmasTPC(track, AliPID::kKaon)) < fPIDConfig[3]) {
if(fQA) {fPIDk->Fill(track->P(), track->GetTPCsignal()); fPIDTOF->Fill(track->P(), track->GetTOFsignal());}
return kTRUE;
}
return kFALSE;
}
if(fDebug>1) cout << " Bayesian method received track with p_t " << track->Pt() << endl;
if (PassesTPCbayesianCut(track)) {
if(fQA) {fPIDk->Fill(track->P(), track->GetTPCsignal());fPIDTOF->Fill(track->P(), track->GetTOFsignal());}
return kTRUE;
}
return kFALSE;
}
template <typename T> Double_t AliAnalysisTaskPhiFlow::PhiPt(const T* track1, const T* track2) const
{
TVector3 a(track1->Px(), track1->Py(), track1->Pz());
TVector3 b(track2->Px(), track2->Py(), track2->Pz());
TVector3 c = a + b;
return c.Pt();
}
template <typename T> void AliAnalysisTaskPhiFlow::PtSelector(Int_t tracktype, const T* track1, const T* track2) const
{
Double_t pt = PhiPt(track1, track2);
if (tracktype == 0) {
for(Int_t ptbin(0); ptbin < fNPtBins; ptbin++) {
if ((fPtBins[ptbin] <= pt) && (fPtBins[ptbin+1] > pt )) {
fInvMNP[ptbin]->Fill(InvariantMass(track1, track2));
if(fQA) fPtSpectra[ptbin]->Fill(pt);
}
}
}
if (tracktype == 1) {
for(Int_t ptbin(0); ptbin < fNPtBins; ptbin++) {
if ((fPtBins[ptbin] <= pt) && (fPtBins[ptbin+1] > pt )) {
fInvMPP[ptbin]->Fill(InvariantMass(track1, track2));
}
}
}
if (tracktype == 2) {
for(Int_t ptbin(0); ptbin < fNPtBins; ptbin++) {
if ((fPtBins[ptbin] <= pt) && (fPtBins[ptbin+1] > pt )) {
fInvMNN[ptbin]->Fill(InvariantMass(track1, track2));
}
}
}
}
template <typename T> Bool_t AliAnalysisTaskPhiFlow::PhiTrack(T* track) const
{
if(!track) return kFALSE;
return fPOICuts->IsSelected(track);
}
template <typename T> void AliAnalysisTaskPhiFlow::SetNullCuts(T* event)
{
if (fDebug > 0) cout << " *** SetNullCuts() *** " << fCutsRP << endl;
fCutsRP->SetEvent(event, MCEvent());
fNullCuts->SetParamType(AliFlowTrackCuts::kGlobal);
fNullCuts->SetPtRange(+1, -1);
fNullCuts->SetEtaRange(+1, -1);
fNullCuts->SetEvent(event, MCEvent());
}
void AliAnalysisTaskPhiFlow::PrepareFlowEvent(Int_t iMulti)
{
if (fDebug > 0 ) cout << " *** PrepareFlowEvent() *** " << endl;
fFlowEvent->ClearFast();
fFlowEvent->Fill(fCutsRP, fNullCuts);
fFlowEvent->SetReferenceMultiplicity(iMulti);
fFlowEvent->DefineDeadZone(0, 0, 0, 0);
}
void AliAnalysisTaskPhiFlow::VZEROSubEventAnalysis()
{
if(fDebug > 0) cout << " ** VZEROSubEventAnalysis() *** " << endl;
if(!AliAnalysisTaskVnV0::IsPsiComputed()) {
if(fDebug > 0 ) cout << "Fatal error: unable to retrieve VZERO task output !!! Exiting ..." << endl;
return;
}
Float_t abcPsi2[] = {AliAnalysisTaskVnV0::GetPsi2V0A(), AliAnalysisTaskVnV0::GetPsi2TPC(), AliAnalysisTaskVnV0::GetPsi2V0C()};
for(Int_t i(0); i < 3; i++) if(abcPsi2[i] == 0) {
if(fDebug > 0) cout << " Warning: I've encountered 0 in one of the symmetry panes (TPC, VZERO) - skipping event !" << endl;
return;
}
Float_t qaqb = TMath::Cos(2.*(abcPsi2[0]-abcPsi2[1]));
Float_t qaqc = TMath::Cos(2.*(abcPsi2[0]-abcPsi2[2]));
Float_t qbqc = TMath::Cos(2.*(abcPsi2[1]-abcPsi2[2]));
fSubEventDPhiv2->Fill(0.5, qaqb);
fSubEventDPhiv2->Fill(1.5, qaqc);
fSubEventDPhiv2->Fill(2.5, qbqc);
Float_t minv[31];
Float_t _dphi[30][fNPtBins][2];
Int_t occurence[30][fNPtBins];
for(Int_t mb(0); mb < 31; mb++) minv[mb] = 0.99 + mb * 0.0034;
for(Int_t i(0); i < 30; i++) for (Int_t j(0); j < fNPtBins; j++) for(Int_t k(0); k < 2; k ++) {
_dphi[i][j][k] = 0;
if(k==0) occurence[i][j] = 0;
}
for(Int_t iCand(0); iCand < fCandidates->GetEntriesFast(); iCand++) {
AliFlowTrackSimple *track = dynamic_cast<AliFlowTrackSimple*>(fCandidates->At(iCand));
if(!track) {
if(fDebug > 1) cout << " --> dynamic_cast returned null-pointer, skipping candidate <-- " << endl;
continue;
}
for(Int_t mb(0); mb < 30; mb++) {
if(track->Mass() <= minv[mb] || track->Mass() > minv[mb+1]) continue;
for(Int_t ptbin(0); ptbin < fNPtBins; ptbin++) {
if(track->Pt() <= fPtBins[ptbin] || track->Pt() > fPtBins[ptbin+1]) continue;
_dphi[mb][ptbin][0]+=TMath::Cos(2.*(track->Phi() - abcPsi2[0]));
_dphi[mb][ptbin][1]+=TMath::Cos(2.*(track->Phi() - abcPsi2[2]));
occurence[mb][ptbin]+=1;
}
}
for(Int_t mb(0); mb < 30; mb++)
for(Int_t ptbin(0); ptbin < fNPtBins; ptbin++) {
if(occurence[mb][ptbin]==0) continue;
fV0Data[ptbin][0]->Fill(mb*0.0034+0.99+0.0017, _dphi[mb][ptbin][0]/(Float_t)occurence[mb][ptbin]);
fV0Data[ptbin][1]->Fill(mb*0.0034+0.99+0.0017, _dphi[mb][ptbin][1]/(Float_t)occurence[mb][ptbin]);
}
}
}
void AliAnalysisTaskPhiFlow::UserExec(Option_t *)
{
if(fDebug > 0 ) cout << " *** UserExec() *** " << endl;
TObjArray* MixingCandidates = 0x0;
if(fEventMixing) {
MixingCandidates = new TObjArray();
MixingCandidates->SetOwner(kTRUE);
}
if (!fPIDResponse) {
if(fDebug > 0 ) cout << " Could not get PID response " << endl;
return;
}
fAOD = dynamic_cast<AliAODEvent*>(InputEvent());
if (fAOD) {
if (!EventCut(fAOD)) return;
InitializeBayesianPID(fAOD);
SetNullCuts(fAOD);
PrepareFlowEvent(fAOD->GetNumberOfTracks());
fCandidates->SetLast(-1);
if(fIsMC) IsMC();
if(fQA) fEventStats->Fill(0);
Int_t unTracks = fAOD->GetNumberOfTracks();
AliAODTrack* un[unTracks];
AliAODTrack* up[unTracks];
Int_t unp(0);
Int_t unn(0);
for (Int_t iTracks = 0; iTracks < unTracks; iTracks++) {
AliAODTrack* track = dynamic_cast<AliAODTrack*>(fAOD->GetTrack(iTracks));
if(!track) AliFatal("Not a standard AOD");
if (!PhiTrack(track)) continue;
if (fQA) {
if(track->Charge() > 0) {fEventStats->Fill(1); fPtP->Fill(track->Pt());}
if(track->Charge() < 0) {fEventStats->Fill(2); fPtN->Fill(track->Pt());}
}
if (IsKaon(track)) {
if(fEventMixing) MixingCandidates->Add(new AliPhiMesonHelperTrack(track->Eta(), track->Phi(), track->P(),
track->Px(), track->Py(), track->Pz(),
track->Pt(), track->Charge()));
if (track->Charge() > 0) {
up[unp] = track;
unp++;
if(fQA) {fEventStats->Fill(3);fPtKP->Fill(track->Pt());}
}
else if (track->Charge() < 0) {
un[unn] = track;
unn++;
if(fQA) {fEventStats->Fill(4); fPtKN->Fill(track->Pt());}
}
}
}
for (Int_t pTracks = 0; pTracks < unp ; pTracks++) {
for (Int_t nTracks = 0; nTracks < unn ; nTracks++) {
if (fCandidateEtaPtCut && (!CheckCandidateEtaPtCut(up[pTracks], un[nTracks]))) continue;
PtSelector(0, up[pTracks], un[nTracks]);
Double_t pt = PhiPt(up[pTracks], un[nTracks]);
Double_t mass = InvariantMass(up[pTracks], un[nTracks]);
TVector3 a(up[pTracks]->Px(), up[pTracks]->Py(), up[pTracks]->Pz());
TVector3 b(un[nTracks]->Px(), un[nTracks]->Py(), up[pTracks]->Pz());
TVector3 c = a + b;
Double_t phi = c.Phi();
Double_t eta = c.Eta();
Double_t p = TMath::Sqrt(c.Px()*c.Px()+c.Py()*c.Py()+c.Pz()*c.Pz());
Int_t nIDs[2];
nIDs[0] = up[pTracks]->GetID();
nIDs[1] = un[nTracks]->GetID();
MakeTrack(mass, pt, phi, eta, 2, nIDs, p, c.Pz());
}
}
if(fV0) VZEROSubEventAnalysis();
if (fDebug > 0) printf("I received %d candidates\n", fCandidates->GetEntriesFast());
for (int iCand = 0; iCand != fCandidates->GetEntriesFast(); ++iCand) {
AliFlowCandidateTrack *cand = dynamic_cast<AliFlowCandidateTrack*>(fCandidates->At(iCand));
if (!cand) continue;
if (fDebug > 1) printf(" --> Checking at candidate %d with %d daughters: mass %f\n", iCand, cand->GetNDaughters(), cand->Mass());
for (int iDau = 0; iDau != cand->GetNDaughters(); ++iDau) {
if (fDebug>1) printf(" *** Daughter %d with fID %d ***", iDau, cand->GetIDDaughter(iDau));
for (int iRPs = 0; iRPs != fFlowEvent->NumberOfTracks(); ++iRPs) {
AliFlowTrack *iRP = dynamic_cast<AliFlowTrack*>(fFlowEvent->GetTrack(iRPs));
if (!iRP) continue;
if (!iRP->InRPSelection()) continue;
if (cand->GetIDDaughter(iDau) == iRP->GetID()) {
if (fDebug > 1) printf(" was in RP set");
iRP->SetForRPSelection(kFALSE);
fFlowEvent->SetNumberOfRPs(fFlowEvent->GetNumberOfRPs() - 1);
}
}
if (fDebug > 1) printf("\n");
}
cand->SetForPOISelection(kTRUE);
fFlowEvent->InsertTrack(((AliFlowTrack*) cand));
}
if (fDebug > 0) printf("TPCevent %d\n", fFlowEvent->NumberOfTracks());
if(!fEventMixing) {
for (Int_t pTracks = 0; pTracks < unp ; pTracks++) {
for (Int_t nTracks = pTracks + 1; nTracks < unp ; nTracks++) {
if (fCandidateEtaPtCut && (!CheckCandidateEtaPtCut(up[pTracks], up[nTracks]))) continue;
PtSelector(1, up[pTracks], up[nTracks]);
}
}
for (Int_t nTracks = 0; nTracks < unn ; nTracks++) {
for (Int_t pTracks = nTracks + 1; pTracks < unn ; pTracks++) {
if (fCandidateEtaPtCut && (!CheckCandidateEtaPtCut(un[nTracks], un[pTracks]))) continue;
PtSelector(2, un[nTracks], un[pTracks]);
}
}
}
if(fEventMixing) ReconstructionWithEventMixing(MixingCandidates);
PostData(1, fOutputList);
PostData(2, fFlowEvent);
}
}
void AliAnalysisTaskPhiFlow::Exec(Option_t* c)
{
if(fSkipEventSelection) AliAnalysisTaskPhiFlow::UserExec(c);
else AliAnalysisTaskSE::Exec(c);
}
void AliAnalysisTaskPhiFlow::ReconstructionWithEventMixing(TObjArray* MixingCandidates) const
{
if(fDebug > 0) cout << " *** ReconstructionWithEventMixing() *** " << endl;
AliEventPool* pool = fPoolManager->GetEventPool(fCentrality, fVertex);
if(!pool) AliFatal(Form("No pool found for centrality = %f, zVtx = %f", fCentrality, fVertex));
if(pool->IsReady() || pool->NTracksInPool() > fMixingParameters[1] / 10 || pool->GetCurrentNEvents() >= fMixingParameters[2]) {
Int_t nEvents = pool->GetCurrentNEvents();
if(fDebug > 0) cout << " --> " << nEvents << " events in mixing buffer ... " << endl;
for (Int_t iEvent(0); iEvent < nEvents; iEvent++) {
TObjArray* mixed_candidates = pool->GetEvent(iEvent);
if(!mixed_candidates) continue;
Int_t bufferTracks = mixed_candidates->GetEntriesFast();
Int_t candidates = MixingCandidates->GetEntriesFast();
if(fDebug > 0) cout << Form(" - mixing %d tracks with %d buffered tracks from event %d ... ", candidates, bufferTracks, iEvent) << endl;
AliPhiMesonHelperTrack* buffer_un[bufferTracks];
AliPhiMesonHelperTrack* buffer_up[bufferTracks];
Int_t buffer_unp(0);
Int_t buffer_unn(0);
AliPhiMesonHelperTrack* mix_un[candidates];
AliPhiMesonHelperTrack* mix_up[candidates];
Int_t mix_unp(0);
Int_t mix_unn(0);
for (Int_t iTracks = 0; iTracks < candidates; iTracks++) {
AliPhiMesonHelperTrack* track = (AliPhiMesonHelperTrack*)MixingCandidates->At(iTracks);
if(!track) continue;
if (track->Charge() > 0) {
mix_up[mix_unp] = track;
mix_unp++;
}
else if (track->Charge() < 0 ) {
mix_un[mix_unn] = track;
mix_unn++;
}
}
for (Int_t iTracks = 0; iTracks < bufferTracks; iTracks++) {
AliPhiMesonHelperTrack* track = (AliPhiMesonHelperTrack*)mixed_candidates->At(iTracks);
if(!track) continue;
if (track->Charge() > 0) {
buffer_up[buffer_unp] = track;
buffer_unp++;
}
else if (track->Charge() < 0 ) {
buffer_un[buffer_unn] = track;
buffer_unn++;
}
}
for (Int_t pMix = 0; pMix < mix_unp; pMix++) {
if(fDebug > 1 ) cout << Form("mixing current k+ track %d with", pMix);
if(!fTypeMixing) {
for(Int_t pBuf = 0; pBuf < buffer_unp; pBuf++) {
if(fDebug > 1 ) cout << Form(" buffered k+ track %d", pBuf) << endl;
if (fCandidateMinEta && (!CheckCandidateEtaPtCut(mix_up[pMix], buffer_up[pBuf]))) continue;
PtSelector(1, mix_up[pMix], buffer_up[pBuf]);
}
}
else if(fTypeMixing) {
for(Int_t nBuf = 0; nBuf < buffer_unn; nBuf++) {
if(fDebug > 1 ) cout << Form(" buffered k- track %d", nBuf) << endl;
if (fCandidateMinEta && (!CheckCandidateEtaPtCut(mix_up[pMix], buffer_un[nBuf]))) continue;
PtSelector(2, mix_up[pMix], buffer_un[nBuf]);
}
}
}
for (Int_t nMix = 0; nMix < mix_unn; nMix++) {
if(fDebug > 1 ) cout << Form("mixing current k- track %d with", nMix);
if(!fTypeMixing) {
for(Int_t nBuf = 0; nBuf < buffer_unn; nBuf++) {
if(fDebug > 1 ) cout << Form(" buffered k- track %d", nBuf) << endl;
if (fCandidateMinEta && (!CheckCandidateEtaPtCut(mix_un[nMix], buffer_un[nBuf]))) continue;
PtSelector(2, mix_un[nMix], buffer_un[nBuf]);
}
}
else if(fTypeMixing) {
for(Int_t pBuf = 0; pBuf < buffer_unp; pBuf++) {
if(fDebug > 1 ) cout << Form(" buffered k+ track %d", pBuf) << endl;
if (fCandidateMinEta && (!CheckCandidateEtaPtCut(mix_un[nMix], buffer_up[pBuf]))) continue;
PtSelector(1, mix_un[nMix], buffer_up[pBuf]);
}
}
}
}
}
pool->UpdatePool(MixingCandidates);
if(fDebug > 0 ) pool->PrintInfo();
}
void AliAnalysisTaskPhiFlow::Terminate(Option_t *)
{
if(fDebug > 0) cout << " *** Terminate() *** " << endl;
}
void AliAnalysisTaskPhiFlow::MakeTrack(Double_t mass, Double_t pt, Double_t phi, Double_t eta, Int_t nDau, Int_t iID[], Double_t p, Double_t pz) const
{
if(fDebug > 1 ) cout << " *** MakeTrack() *** " << endl;
if(fCandidateYCut) {
Double_t y = 0.5*TMath::Log((TMath::Sqrt(mass*mass+p*p)+pz)/(TMath::Sqrt(mass*mass+p*p)-pz));
if (y > fCandidateMaxY || y < fCandidateMinY) return;
}
Bool_t overwrite = kTRUE;
AliFlowCandidateTrack *sTrack = static_cast<AliFlowCandidateTrack*>(fCandidates->At(fCandidates->GetLast() + 1));
if (!sTrack) {
sTrack = new AliFlowCandidateTrack();
overwrite = kFALSE;
}
else sTrack->ClearMe();
sTrack->SetMass(mass);
sTrack->SetPt(pt);
sTrack->SetPhi(phi);
sTrack->SetEta(eta);
for (Int_t iDau = 0; iDau != nDau; ++iDau) sTrack->AddDaughter(iID[iDau]);
sTrack->SetForPOISelection(kTRUE);
sTrack->SetForRPSelection(kFALSE);
if (overwrite) fCandidates->SetLast(fCandidates->GetLast() + 1);
else fCandidates->AddLast(sTrack);
return;
}
void AliAnalysisTaskPhiFlow::IsMC()
{
TClonesArray *arrayMC = 0;
if(fDebug > 0) cout << " -> Switching to MC mode <- " << endl;
arrayMC = (TClonesArray*) fAOD->GetList()->FindObject(AliAODMCParticle::StdBranchName());
if (!arrayMC) AliFatal("Error: MC particles branch not found!\n");
for (Int_t iTracks = 0; iTracks < fAOD->GetNumberOfTracks(); iTracks++) {
AliAODTrack* track = dynamic_cast<AliAODTrack*>(fAOD->GetTrack(iTracks));
if(!track) AliFatal("Not a standard AOD");
if(!PhiTrack(track) || !IsKaon(track)) {
if(fDebug>1) cout << " Rejected track" << endl;
continue;
}
if (fDebug>1) cout << " Received MC kaon " << endl;
Double_t b[2] = { -99., -99.};
Double_t bCov[3] = { -99., -99., -99.};
AliAODTrack copy(*track);
if(!copy.PropagateToDCA(fAOD->GetPrimaryVertex(), fAOD->GetMagneticField(), 100., b, bCov)) return;
AliAODMCParticle *partMC = (AliAODMCParticle*) arrayMC->At(TMath::Abs(track->GetLabel()));
if (!partMC) {
if(fDebug > 1) cout << "Cannot get MC particle" << endl;
continue;
}
Bool_t isPrimary = partMC->IsPhysicalPrimary();
Bool_t isSecondaryMaterial = kFALSE;
Bool_t isSecondaryWeak = kFALSE;
if (!isPrimary) {
Int_t mfl = -999, codemoth = -999;
Int_t indexMoth = partMC->GetMother();
if (indexMoth >= 0) {
AliAODMCParticle* moth = (AliAODMCParticle*) arrayMC->At(indexMoth);
codemoth = TMath::Abs(moth->GetPdgCode());
mfl = Int_t(codemoth / TMath::Power(10, Int_t(TMath::Log10(codemoth))));
}
if (mfl == 3) isSecondaryWeak = kTRUE;
else isSecondaryMaterial = kTRUE;
}
if (isPrimary) {
fDCAPrim->Fill(track->Pt(), b[0]);
fDCAXYQA->Fill(b[0]);
fDCAZQA->Fill(b[1]);
}
if (isSecondaryWeak) fDCASecondaryWeak->Fill(track->Pt(), b[0]);
if (isSecondaryMaterial) fDCAMaterial->Fill(track->Pt(), b[0]);
}
}
AliAnalysisTaskPhiFlow.cxx:1 AliAnalysisTaskPhiFlow.cxx:2 AliAnalysisTaskPhiFlow.cxx:3 AliAnalysisTaskPhiFlow.cxx:4 AliAnalysisTaskPhiFlow.cxx:5 AliAnalysisTaskPhiFlow.cxx:6 AliAnalysisTaskPhiFlow.cxx:7 AliAnalysisTaskPhiFlow.cxx:8 AliAnalysisTaskPhiFlow.cxx:9 AliAnalysisTaskPhiFlow.cxx:10 AliAnalysisTaskPhiFlow.cxx:11 AliAnalysisTaskPhiFlow.cxx:12 AliAnalysisTaskPhiFlow.cxx:13 AliAnalysisTaskPhiFlow.cxx:14 AliAnalysisTaskPhiFlow.cxx:15 AliAnalysisTaskPhiFlow.cxx:16 AliAnalysisTaskPhiFlow.cxx:17 AliAnalysisTaskPhiFlow.cxx:18 AliAnalysisTaskPhiFlow.cxx:19 AliAnalysisTaskPhiFlow.cxx:20 AliAnalysisTaskPhiFlow.cxx:21 AliAnalysisTaskPhiFlow.cxx:22 AliAnalysisTaskPhiFlow.cxx:23 AliAnalysisTaskPhiFlow.cxx:24 AliAnalysisTaskPhiFlow.cxx:25 AliAnalysisTaskPhiFlow.cxx:26 AliAnalysisTaskPhiFlow.cxx:27 AliAnalysisTaskPhiFlow.cxx:28 AliAnalysisTaskPhiFlow.cxx:29 AliAnalysisTaskPhiFlow.cxx:30 AliAnalysisTaskPhiFlow.cxx:31 AliAnalysisTaskPhiFlow.cxx:32 AliAnalysisTaskPhiFlow.cxx:33 AliAnalysisTaskPhiFlow.cxx:34 AliAnalysisTaskPhiFlow.cxx:35 AliAnalysisTaskPhiFlow.cxx:36 AliAnalysisTaskPhiFlow.cxx:37 AliAnalysisTaskPhiFlow.cxx:38 AliAnalysisTaskPhiFlow.cxx:39 AliAnalysisTaskPhiFlow.cxx:40 AliAnalysisTaskPhiFlow.cxx:41 AliAnalysisTaskPhiFlow.cxx:42 AliAnalysisTaskPhiFlow.cxx:43 AliAnalysisTaskPhiFlow.cxx:44 AliAnalysisTaskPhiFlow.cxx:45 AliAnalysisTaskPhiFlow.cxx:46 AliAnalysisTaskPhiFlow.cxx:47 AliAnalysisTaskPhiFlow.cxx:48 AliAnalysisTaskPhiFlow.cxx:49 AliAnalysisTaskPhiFlow.cxx:50 AliAnalysisTaskPhiFlow.cxx:51 AliAnalysisTaskPhiFlow.cxx:52 AliAnalysisTaskPhiFlow.cxx:53 AliAnalysisTaskPhiFlow.cxx:54 AliAnalysisTaskPhiFlow.cxx:55 AliAnalysisTaskPhiFlow.cxx:56 AliAnalysisTaskPhiFlow.cxx:57 AliAnalysisTaskPhiFlow.cxx:58 AliAnalysisTaskPhiFlow.cxx:59 AliAnalysisTaskPhiFlow.cxx:60 AliAnalysisTaskPhiFlow.cxx:61 AliAnalysisTaskPhiFlow.cxx:62 AliAnalysisTaskPhiFlow.cxx:63 AliAnalysisTaskPhiFlow.cxx:64 AliAnalysisTaskPhiFlow.cxx:65 AliAnalysisTaskPhiFlow.cxx:66 AliAnalysisTaskPhiFlow.cxx:67 AliAnalysisTaskPhiFlow.cxx:68 AliAnalysisTaskPhiFlow.cxx:69 AliAnalysisTaskPhiFlow.cxx:70 AliAnalysisTaskPhiFlow.cxx:71 AliAnalysisTaskPhiFlow.cxx:72 AliAnalysisTaskPhiFlow.cxx:73 AliAnalysisTaskPhiFlow.cxx:74 AliAnalysisTaskPhiFlow.cxx:75 AliAnalysisTaskPhiFlow.cxx:76 AliAnalysisTaskPhiFlow.cxx:77 AliAnalysisTaskPhiFlow.cxx:78 AliAnalysisTaskPhiFlow.cxx:79 AliAnalysisTaskPhiFlow.cxx:80 AliAnalysisTaskPhiFlow.cxx:81 AliAnalysisTaskPhiFlow.cxx:82 AliAnalysisTaskPhiFlow.cxx:83 AliAnalysisTaskPhiFlow.cxx:84 AliAnalysisTaskPhiFlow.cxx:85 AliAnalysisTaskPhiFlow.cxx:86 AliAnalysisTaskPhiFlow.cxx:87 AliAnalysisTaskPhiFlow.cxx:88 AliAnalysisTaskPhiFlow.cxx:89 AliAnalysisTaskPhiFlow.cxx:90 AliAnalysisTaskPhiFlow.cxx:91 AliAnalysisTaskPhiFlow.cxx:92 AliAnalysisTaskPhiFlow.cxx:93 AliAnalysisTaskPhiFlow.cxx:94 AliAnalysisTaskPhiFlow.cxx:95 AliAnalysisTaskPhiFlow.cxx:96 AliAnalysisTaskPhiFlow.cxx:97 AliAnalysisTaskPhiFlow.cxx:98 AliAnalysisTaskPhiFlow.cxx:99 AliAnalysisTaskPhiFlow.cxx:100 AliAnalysisTaskPhiFlow.cxx:101 AliAnalysisTaskPhiFlow.cxx:102 AliAnalysisTaskPhiFlow.cxx:103 AliAnalysisTaskPhiFlow.cxx:104 AliAnalysisTaskPhiFlow.cxx:105 AliAnalysisTaskPhiFlow.cxx:106 AliAnalysisTaskPhiFlow.cxx:107 AliAnalysisTaskPhiFlow.cxx:108 AliAnalysisTaskPhiFlow.cxx:109 AliAnalysisTaskPhiFlow.cxx:110 AliAnalysisTaskPhiFlow.cxx:111 AliAnalysisTaskPhiFlow.cxx:112 AliAnalysisTaskPhiFlow.cxx:113 AliAnalysisTaskPhiFlow.cxx:114 AliAnalysisTaskPhiFlow.cxx:115 AliAnalysisTaskPhiFlow.cxx:116 AliAnalysisTaskPhiFlow.cxx:117 AliAnalysisTaskPhiFlow.cxx:118 AliAnalysisTaskPhiFlow.cxx:119 AliAnalysisTaskPhiFlow.cxx:120 AliAnalysisTaskPhiFlow.cxx:121 AliAnalysisTaskPhiFlow.cxx:122 AliAnalysisTaskPhiFlow.cxx:123 AliAnalysisTaskPhiFlow.cxx:124 AliAnalysisTaskPhiFlow.cxx:125 AliAnalysisTaskPhiFlow.cxx:126 AliAnalysisTaskPhiFlow.cxx:127 AliAnalysisTaskPhiFlow.cxx:128 AliAnalysisTaskPhiFlow.cxx:129 AliAnalysisTaskPhiFlow.cxx:130 AliAnalysisTaskPhiFlow.cxx:131 AliAnalysisTaskPhiFlow.cxx:132 AliAnalysisTaskPhiFlow.cxx:133 AliAnalysisTaskPhiFlow.cxx:134 AliAnalysisTaskPhiFlow.cxx:135 AliAnalysisTaskPhiFlow.cxx:136 AliAnalysisTaskPhiFlow.cxx:137 AliAnalysisTaskPhiFlow.cxx:138 AliAnalysisTaskPhiFlow.cxx:139 AliAnalysisTaskPhiFlow.cxx:140 AliAnalysisTaskPhiFlow.cxx:141 AliAnalysisTaskPhiFlow.cxx:142 AliAnalysisTaskPhiFlow.cxx:143 AliAnalysisTaskPhiFlow.cxx:144 AliAnalysisTaskPhiFlow.cxx:145 AliAnalysisTaskPhiFlow.cxx:146 AliAnalysisTaskPhiFlow.cxx:147 AliAnalysisTaskPhiFlow.cxx:148 AliAnalysisTaskPhiFlow.cxx:149 AliAnalysisTaskPhiFlow.cxx:150 AliAnalysisTaskPhiFlow.cxx:151 AliAnalysisTaskPhiFlow.cxx:152 AliAnalysisTaskPhiFlow.cxx:153 AliAnalysisTaskPhiFlow.cxx:154 AliAnalysisTaskPhiFlow.cxx:155 AliAnalysisTaskPhiFlow.cxx:156 AliAnalysisTaskPhiFlow.cxx:157 AliAnalysisTaskPhiFlow.cxx:158 AliAnalysisTaskPhiFlow.cxx:159 AliAnalysisTaskPhiFlow.cxx:160 AliAnalysisTaskPhiFlow.cxx:161 AliAnalysisTaskPhiFlow.cxx:162 AliAnalysisTaskPhiFlow.cxx:163 AliAnalysisTaskPhiFlow.cxx:164 AliAnalysisTaskPhiFlow.cxx:165 AliAnalysisTaskPhiFlow.cxx:166 AliAnalysisTaskPhiFlow.cxx:167 AliAnalysisTaskPhiFlow.cxx:168 AliAnalysisTaskPhiFlow.cxx:169 AliAnalysisTaskPhiFlow.cxx:170 AliAnalysisTaskPhiFlow.cxx:171 AliAnalysisTaskPhiFlow.cxx:172 AliAnalysisTaskPhiFlow.cxx:173 AliAnalysisTaskPhiFlow.cxx:174 AliAnalysisTaskPhiFlow.cxx:175 AliAnalysisTaskPhiFlow.cxx:176 AliAnalysisTaskPhiFlow.cxx:177 AliAnalysisTaskPhiFlow.cxx:178 AliAnalysisTaskPhiFlow.cxx:179 AliAnalysisTaskPhiFlow.cxx:180 AliAnalysisTaskPhiFlow.cxx:181 AliAnalysisTaskPhiFlow.cxx:182 AliAnalysisTaskPhiFlow.cxx:183 AliAnalysisTaskPhiFlow.cxx:184 AliAnalysisTaskPhiFlow.cxx:185 AliAnalysisTaskPhiFlow.cxx:186 AliAnalysisTaskPhiFlow.cxx:187 AliAnalysisTaskPhiFlow.cxx:188 AliAnalysisTaskPhiFlow.cxx:189 AliAnalysisTaskPhiFlow.cxx:190 AliAnalysisTaskPhiFlow.cxx:191 AliAnalysisTaskPhiFlow.cxx:192 AliAnalysisTaskPhiFlow.cxx:193 AliAnalysisTaskPhiFlow.cxx:194 AliAnalysisTaskPhiFlow.cxx:195 AliAnalysisTaskPhiFlow.cxx:196 AliAnalysisTaskPhiFlow.cxx:197 AliAnalysisTaskPhiFlow.cxx:198 AliAnalysisTaskPhiFlow.cxx:199 AliAnalysisTaskPhiFlow.cxx:200 AliAnalysisTaskPhiFlow.cxx:201 AliAnalysisTaskPhiFlow.cxx:202 AliAnalysisTaskPhiFlow.cxx:203 AliAnalysisTaskPhiFlow.cxx:204 AliAnalysisTaskPhiFlow.cxx:205 AliAnalysisTaskPhiFlow.cxx:206 AliAnalysisTaskPhiFlow.cxx:207 AliAnalysisTaskPhiFlow.cxx:208 AliAnalysisTaskPhiFlow.cxx:209 AliAnalysisTaskPhiFlow.cxx:210 AliAnalysisTaskPhiFlow.cxx:211 AliAnalysisTaskPhiFlow.cxx:212 AliAnalysisTaskPhiFlow.cxx:213 AliAnalysisTaskPhiFlow.cxx:214 AliAnalysisTaskPhiFlow.cxx:215 AliAnalysisTaskPhiFlow.cxx:216 AliAnalysisTaskPhiFlow.cxx:217 AliAnalysisTaskPhiFlow.cxx:218 AliAnalysisTaskPhiFlow.cxx:219 AliAnalysisTaskPhiFlow.cxx:220 AliAnalysisTaskPhiFlow.cxx:221 AliAnalysisTaskPhiFlow.cxx:222 AliAnalysisTaskPhiFlow.cxx:223 AliAnalysisTaskPhiFlow.cxx:224 AliAnalysisTaskPhiFlow.cxx:225 AliAnalysisTaskPhiFlow.cxx:226 AliAnalysisTaskPhiFlow.cxx:227 AliAnalysisTaskPhiFlow.cxx:228 AliAnalysisTaskPhiFlow.cxx:229 AliAnalysisTaskPhiFlow.cxx:230 AliAnalysisTaskPhiFlow.cxx:231 AliAnalysisTaskPhiFlow.cxx:232 AliAnalysisTaskPhiFlow.cxx:233 AliAnalysisTaskPhiFlow.cxx:234 AliAnalysisTaskPhiFlow.cxx:235 AliAnalysisTaskPhiFlow.cxx:236 AliAnalysisTaskPhiFlow.cxx:237 AliAnalysisTaskPhiFlow.cxx:238 AliAnalysisTaskPhiFlow.cxx:239 AliAnalysisTaskPhiFlow.cxx:240 AliAnalysisTaskPhiFlow.cxx:241 AliAnalysisTaskPhiFlow.cxx:242 AliAnalysisTaskPhiFlow.cxx:243 AliAnalysisTaskPhiFlow.cxx:244 AliAnalysisTaskPhiFlow.cxx:245 AliAnalysisTaskPhiFlow.cxx:246 AliAnalysisTaskPhiFlow.cxx:247 AliAnalysisTaskPhiFlow.cxx:248 AliAnalysisTaskPhiFlow.cxx:249 AliAnalysisTaskPhiFlow.cxx:250 AliAnalysisTaskPhiFlow.cxx:251 AliAnalysisTaskPhiFlow.cxx:252 AliAnalysisTaskPhiFlow.cxx:253 AliAnalysisTaskPhiFlow.cxx:254 AliAnalysisTaskPhiFlow.cxx:255 AliAnalysisTaskPhiFlow.cxx:256 AliAnalysisTaskPhiFlow.cxx:257 AliAnalysisTaskPhiFlow.cxx:258 AliAnalysisTaskPhiFlow.cxx:259 AliAnalysisTaskPhiFlow.cxx:260 AliAnalysisTaskPhiFlow.cxx:261 AliAnalysisTaskPhiFlow.cxx:262 AliAnalysisTaskPhiFlow.cxx:263 AliAnalysisTaskPhiFlow.cxx:264 AliAnalysisTaskPhiFlow.cxx:265 AliAnalysisTaskPhiFlow.cxx:266 AliAnalysisTaskPhiFlow.cxx:267 AliAnalysisTaskPhiFlow.cxx:268 AliAnalysisTaskPhiFlow.cxx:269 AliAnalysisTaskPhiFlow.cxx:270 AliAnalysisTaskPhiFlow.cxx:271 AliAnalysisTaskPhiFlow.cxx:272 AliAnalysisTaskPhiFlow.cxx:273 AliAnalysisTaskPhiFlow.cxx:274 AliAnalysisTaskPhiFlow.cxx:275 AliAnalysisTaskPhiFlow.cxx:276 AliAnalysisTaskPhiFlow.cxx:277 AliAnalysisTaskPhiFlow.cxx:278 AliAnalysisTaskPhiFlow.cxx:279 AliAnalysisTaskPhiFlow.cxx:280 AliAnalysisTaskPhiFlow.cxx:281 AliAnalysisTaskPhiFlow.cxx:282 AliAnalysisTaskPhiFlow.cxx:283 AliAnalysisTaskPhiFlow.cxx:284 AliAnalysisTaskPhiFlow.cxx:285 AliAnalysisTaskPhiFlow.cxx:286 AliAnalysisTaskPhiFlow.cxx:287 AliAnalysisTaskPhiFlow.cxx:288 AliAnalysisTaskPhiFlow.cxx:289 AliAnalysisTaskPhiFlow.cxx:290 AliAnalysisTaskPhiFlow.cxx:291 AliAnalysisTaskPhiFlow.cxx:292 AliAnalysisTaskPhiFlow.cxx:293 AliAnalysisTaskPhiFlow.cxx:294 AliAnalysisTaskPhiFlow.cxx:295 AliAnalysisTaskPhiFlow.cxx:296 AliAnalysisTaskPhiFlow.cxx:297 AliAnalysisTaskPhiFlow.cxx:298 AliAnalysisTaskPhiFlow.cxx:299 AliAnalysisTaskPhiFlow.cxx:300 AliAnalysisTaskPhiFlow.cxx:301 AliAnalysisTaskPhiFlow.cxx:302 AliAnalysisTaskPhiFlow.cxx:303 AliAnalysisTaskPhiFlow.cxx:304 AliAnalysisTaskPhiFlow.cxx:305 AliAnalysisTaskPhiFlow.cxx:306 AliAnalysisTaskPhiFlow.cxx:307 AliAnalysisTaskPhiFlow.cxx:308 AliAnalysisTaskPhiFlow.cxx:309 AliAnalysisTaskPhiFlow.cxx:310 AliAnalysisTaskPhiFlow.cxx:311 AliAnalysisTaskPhiFlow.cxx:312 AliAnalysisTaskPhiFlow.cxx:313 AliAnalysisTaskPhiFlow.cxx:314 AliAnalysisTaskPhiFlow.cxx:315 AliAnalysisTaskPhiFlow.cxx:316 AliAnalysisTaskPhiFlow.cxx:317 AliAnalysisTaskPhiFlow.cxx:318 AliAnalysisTaskPhiFlow.cxx:319 AliAnalysisTaskPhiFlow.cxx:320 AliAnalysisTaskPhiFlow.cxx:321 AliAnalysisTaskPhiFlow.cxx:322 AliAnalysisTaskPhiFlow.cxx:323 AliAnalysisTaskPhiFlow.cxx:324 AliAnalysisTaskPhiFlow.cxx:325 AliAnalysisTaskPhiFlow.cxx:326 AliAnalysisTaskPhiFlow.cxx:327 AliAnalysisTaskPhiFlow.cxx:328 AliAnalysisTaskPhiFlow.cxx:329 AliAnalysisTaskPhiFlow.cxx:330 AliAnalysisTaskPhiFlow.cxx:331 AliAnalysisTaskPhiFlow.cxx:332 AliAnalysisTaskPhiFlow.cxx:333 AliAnalysisTaskPhiFlow.cxx:334 AliAnalysisTaskPhiFlow.cxx:335 AliAnalysisTaskPhiFlow.cxx:336 AliAnalysisTaskPhiFlow.cxx:337 AliAnalysisTaskPhiFlow.cxx:338 AliAnalysisTaskPhiFlow.cxx:339 AliAnalysisTaskPhiFlow.cxx:340 AliAnalysisTaskPhiFlow.cxx:341 AliAnalysisTaskPhiFlow.cxx:342 AliAnalysisTaskPhiFlow.cxx:343 AliAnalysisTaskPhiFlow.cxx:344 AliAnalysisTaskPhiFlow.cxx:345 AliAnalysisTaskPhiFlow.cxx:346 AliAnalysisTaskPhiFlow.cxx:347 AliAnalysisTaskPhiFlow.cxx:348 AliAnalysisTaskPhiFlow.cxx:349 AliAnalysisTaskPhiFlow.cxx:350 AliAnalysisTaskPhiFlow.cxx:351 AliAnalysisTaskPhiFlow.cxx:352 AliAnalysisTaskPhiFlow.cxx:353 AliAnalysisTaskPhiFlow.cxx:354 AliAnalysisTaskPhiFlow.cxx:355 AliAnalysisTaskPhiFlow.cxx:356 AliAnalysisTaskPhiFlow.cxx:357 AliAnalysisTaskPhiFlow.cxx:358 AliAnalysisTaskPhiFlow.cxx:359 AliAnalysisTaskPhiFlow.cxx:360 AliAnalysisTaskPhiFlow.cxx:361 AliAnalysisTaskPhiFlow.cxx:362 AliAnalysisTaskPhiFlow.cxx:363 AliAnalysisTaskPhiFlow.cxx:364 AliAnalysisTaskPhiFlow.cxx:365 AliAnalysisTaskPhiFlow.cxx:366 AliAnalysisTaskPhiFlow.cxx:367 AliAnalysisTaskPhiFlow.cxx:368 AliAnalysisTaskPhiFlow.cxx:369 AliAnalysisTaskPhiFlow.cxx:370 AliAnalysisTaskPhiFlow.cxx:371 AliAnalysisTaskPhiFlow.cxx:372 AliAnalysisTaskPhiFlow.cxx:373 AliAnalysisTaskPhiFlow.cxx:374 AliAnalysisTaskPhiFlow.cxx:375 AliAnalysisTaskPhiFlow.cxx:376 AliAnalysisTaskPhiFlow.cxx:377 AliAnalysisTaskPhiFlow.cxx:378 AliAnalysisTaskPhiFlow.cxx:379 AliAnalysisTaskPhiFlow.cxx:380 AliAnalysisTaskPhiFlow.cxx:381 AliAnalysisTaskPhiFlow.cxx:382 AliAnalysisTaskPhiFlow.cxx:383 AliAnalysisTaskPhiFlow.cxx:384 AliAnalysisTaskPhiFlow.cxx:385 AliAnalysisTaskPhiFlow.cxx:386 AliAnalysisTaskPhiFlow.cxx:387 AliAnalysisTaskPhiFlow.cxx:388 AliAnalysisTaskPhiFlow.cxx:389 AliAnalysisTaskPhiFlow.cxx:390 AliAnalysisTaskPhiFlow.cxx:391 AliAnalysisTaskPhiFlow.cxx:392 AliAnalysisTaskPhiFlow.cxx:393 AliAnalysisTaskPhiFlow.cxx:394 AliAnalysisTaskPhiFlow.cxx:395 AliAnalysisTaskPhiFlow.cxx:396 AliAnalysisTaskPhiFlow.cxx:397 AliAnalysisTaskPhiFlow.cxx:398 AliAnalysisTaskPhiFlow.cxx:399 AliAnalysisTaskPhiFlow.cxx:400 AliAnalysisTaskPhiFlow.cxx:401 AliAnalysisTaskPhiFlow.cxx:402 AliAnalysisTaskPhiFlow.cxx:403 AliAnalysisTaskPhiFlow.cxx:404 AliAnalysisTaskPhiFlow.cxx:405 AliAnalysisTaskPhiFlow.cxx:406 AliAnalysisTaskPhiFlow.cxx:407 AliAnalysisTaskPhiFlow.cxx:408 AliAnalysisTaskPhiFlow.cxx:409 AliAnalysisTaskPhiFlow.cxx:410 AliAnalysisTaskPhiFlow.cxx:411 AliAnalysisTaskPhiFlow.cxx:412 AliAnalysisTaskPhiFlow.cxx:413 AliAnalysisTaskPhiFlow.cxx:414 AliAnalysisTaskPhiFlow.cxx:415 AliAnalysisTaskPhiFlow.cxx:416 AliAnalysisTaskPhiFlow.cxx:417 AliAnalysisTaskPhiFlow.cxx:418 AliAnalysisTaskPhiFlow.cxx:419 AliAnalysisTaskPhiFlow.cxx:420 AliAnalysisTaskPhiFlow.cxx:421 AliAnalysisTaskPhiFlow.cxx:422 AliAnalysisTaskPhiFlow.cxx:423 AliAnalysisTaskPhiFlow.cxx:424 AliAnalysisTaskPhiFlow.cxx:425 AliAnalysisTaskPhiFlow.cxx:426 AliAnalysisTaskPhiFlow.cxx:427 AliAnalysisTaskPhiFlow.cxx:428 AliAnalysisTaskPhiFlow.cxx:429 AliAnalysisTaskPhiFlow.cxx:430 AliAnalysisTaskPhiFlow.cxx:431 AliAnalysisTaskPhiFlow.cxx:432 AliAnalysisTaskPhiFlow.cxx:433 AliAnalysisTaskPhiFlow.cxx:434 AliAnalysisTaskPhiFlow.cxx:435 AliAnalysisTaskPhiFlow.cxx:436 AliAnalysisTaskPhiFlow.cxx:437 AliAnalysisTaskPhiFlow.cxx:438 AliAnalysisTaskPhiFlow.cxx:439 AliAnalysisTaskPhiFlow.cxx:440 AliAnalysisTaskPhiFlow.cxx:441 AliAnalysisTaskPhiFlow.cxx:442 AliAnalysisTaskPhiFlow.cxx:443 AliAnalysisTaskPhiFlow.cxx:444 AliAnalysisTaskPhiFlow.cxx:445 AliAnalysisTaskPhiFlow.cxx:446 AliAnalysisTaskPhiFlow.cxx:447 AliAnalysisTaskPhiFlow.cxx:448 AliAnalysisTaskPhiFlow.cxx:449 AliAnalysisTaskPhiFlow.cxx:450 AliAnalysisTaskPhiFlow.cxx:451 AliAnalysisTaskPhiFlow.cxx:452 AliAnalysisTaskPhiFlow.cxx:453 AliAnalysisTaskPhiFlow.cxx:454 AliAnalysisTaskPhiFlow.cxx:455 AliAnalysisTaskPhiFlow.cxx:456 AliAnalysisTaskPhiFlow.cxx:457 AliAnalysisTaskPhiFlow.cxx:458 AliAnalysisTaskPhiFlow.cxx:459 AliAnalysisTaskPhiFlow.cxx:460 AliAnalysisTaskPhiFlow.cxx:461 AliAnalysisTaskPhiFlow.cxx:462 AliAnalysisTaskPhiFlow.cxx:463 AliAnalysisTaskPhiFlow.cxx:464 AliAnalysisTaskPhiFlow.cxx:465 AliAnalysisTaskPhiFlow.cxx:466 AliAnalysisTaskPhiFlow.cxx:467 AliAnalysisTaskPhiFlow.cxx:468 AliAnalysisTaskPhiFlow.cxx:469 AliAnalysisTaskPhiFlow.cxx:470 AliAnalysisTaskPhiFlow.cxx:471 AliAnalysisTaskPhiFlow.cxx:472 AliAnalysisTaskPhiFlow.cxx:473 AliAnalysisTaskPhiFlow.cxx:474 AliAnalysisTaskPhiFlow.cxx:475 AliAnalysisTaskPhiFlow.cxx:476 AliAnalysisTaskPhiFlow.cxx:477 AliAnalysisTaskPhiFlow.cxx:478 AliAnalysisTaskPhiFlow.cxx:479 AliAnalysisTaskPhiFlow.cxx:480 AliAnalysisTaskPhiFlow.cxx:481 AliAnalysisTaskPhiFlow.cxx:482 AliAnalysisTaskPhiFlow.cxx:483 AliAnalysisTaskPhiFlow.cxx:484 AliAnalysisTaskPhiFlow.cxx:485 AliAnalysisTaskPhiFlow.cxx:486 AliAnalysisTaskPhiFlow.cxx:487 AliAnalysisTaskPhiFlow.cxx:488 AliAnalysisTaskPhiFlow.cxx:489 AliAnalysisTaskPhiFlow.cxx:490 AliAnalysisTaskPhiFlow.cxx:491 AliAnalysisTaskPhiFlow.cxx:492 AliAnalysisTaskPhiFlow.cxx:493 AliAnalysisTaskPhiFlow.cxx:494 AliAnalysisTaskPhiFlow.cxx:495 AliAnalysisTaskPhiFlow.cxx:496 AliAnalysisTaskPhiFlow.cxx:497 AliAnalysisTaskPhiFlow.cxx:498 AliAnalysisTaskPhiFlow.cxx:499 AliAnalysisTaskPhiFlow.cxx:500 AliAnalysisTaskPhiFlow.cxx:501 AliAnalysisTaskPhiFlow.cxx:502 AliAnalysisTaskPhiFlow.cxx:503 AliAnalysisTaskPhiFlow.cxx:504 AliAnalysisTaskPhiFlow.cxx:505 AliAnalysisTaskPhiFlow.cxx:506 AliAnalysisTaskPhiFlow.cxx:507 AliAnalysisTaskPhiFlow.cxx:508 AliAnalysisTaskPhiFlow.cxx:509 AliAnalysisTaskPhiFlow.cxx:510 AliAnalysisTaskPhiFlow.cxx:511 AliAnalysisTaskPhiFlow.cxx:512 AliAnalysisTaskPhiFlow.cxx:513 AliAnalysisTaskPhiFlow.cxx:514 AliAnalysisTaskPhiFlow.cxx:515 AliAnalysisTaskPhiFlow.cxx:516 AliAnalysisTaskPhiFlow.cxx:517 AliAnalysisTaskPhiFlow.cxx:518 AliAnalysisTaskPhiFlow.cxx:519 AliAnalysisTaskPhiFlow.cxx:520 AliAnalysisTaskPhiFlow.cxx:521 AliAnalysisTaskPhiFlow.cxx:522 AliAnalysisTaskPhiFlow.cxx:523 AliAnalysisTaskPhiFlow.cxx:524 AliAnalysisTaskPhiFlow.cxx:525 AliAnalysisTaskPhiFlow.cxx:526 AliAnalysisTaskPhiFlow.cxx:527 AliAnalysisTaskPhiFlow.cxx:528 AliAnalysisTaskPhiFlow.cxx:529 AliAnalysisTaskPhiFlow.cxx:530 AliAnalysisTaskPhiFlow.cxx:531 AliAnalysisTaskPhiFlow.cxx:532 AliAnalysisTaskPhiFlow.cxx:533 AliAnalysisTaskPhiFlow.cxx:534 AliAnalysisTaskPhiFlow.cxx:535 AliAnalysisTaskPhiFlow.cxx:536 AliAnalysisTaskPhiFlow.cxx:537 AliAnalysisTaskPhiFlow.cxx:538 AliAnalysisTaskPhiFlow.cxx:539 AliAnalysisTaskPhiFlow.cxx:540 AliAnalysisTaskPhiFlow.cxx:541 AliAnalysisTaskPhiFlow.cxx:542 AliAnalysisTaskPhiFlow.cxx:543 AliAnalysisTaskPhiFlow.cxx:544 AliAnalysisTaskPhiFlow.cxx:545 AliAnalysisTaskPhiFlow.cxx:546 AliAnalysisTaskPhiFlow.cxx:547 AliAnalysisTaskPhiFlow.cxx:548 AliAnalysisTaskPhiFlow.cxx:549 AliAnalysisTaskPhiFlow.cxx:550 AliAnalysisTaskPhiFlow.cxx:551 AliAnalysisTaskPhiFlow.cxx:552 AliAnalysisTaskPhiFlow.cxx:553 AliAnalysisTaskPhiFlow.cxx:554 AliAnalysisTaskPhiFlow.cxx:555 AliAnalysisTaskPhiFlow.cxx:556 AliAnalysisTaskPhiFlow.cxx:557 AliAnalysisTaskPhiFlow.cxx:558 AliAnalysisTaskPhiFlow.cxx:559 AliAnalysisTaskPhiFlow.cxx:560 AliAnalysisTaskPhiFlow.cxx:561 AliAnalysisTaskPhiFlow.cxx:562 AliAnalysisTaskPhiFlow.cxx:563 AliAnalysisTaskPhiFlow.cxx:564 AliAnalysisTaskPhiFlow.cxx:565 AliAnalysisTaskPhiFlow.cxx:566 AliAnalysisTaskPhiFlow.cxx:567 AliAnalysisTaskPhiFlow.cxx:568 AliAnalysisTaskPhiFlow.cxx:569 AliAnalysisTaskPhiFlow.cxx:570 AliAnalysisTaskPhiFlow.cxx:571 AliAnalysisTaskPhiFlow.cxx:572 AliAnalysisTaskPhiFlow.cxx:573 AliAnalysisTaskPhiFlow.cxx:574 AliAnalysisTaskPhiFlow.cxx:575 AliAnalysisTaskPhiFlow.cxx:576 AliAnalysisTaskPhiFlow.cxx:577 AliAnalysisTaskPhiFlow.cxx:578 AliAnalysisTaskPhiFlow.cxx:579 AliAnalysisTaskPhiFlow.cxx:580 AliAnalysisTaskPhiFlow.cxx:581 AliAnalysisTaskPhiFlow.cxx:582 AliAnalysisTaskPhiFlow.cxx:583 AliAnalysisTaskPhiFlow.cxx:584 AliAnalysisTaskPhiFlow.cxx:585 AliAnalysisTaskPhiFlow.cxx:586 AliAnalysisTaskPhiFlow.cxx:587 AliAnalysisTaskPhiFlow.cxx:588 AliAnalysisTaskPhiFlow.cxx:589 AliAnalysisTaskPhiFlow.cxx:590 AliAnalysisTaskPhiFlow.cxx:591 AliAnalysisTaskPhiFlow.cxx:592 AliAnalysisTaskPhiFlow.cxx:593 AliAnalysisTaskPhiFlow.cxx:594 AliAnalysisTaskPhiFlow.cxx:595 AliAnalysisTaskPhiFlow.cxx:596 AliAnalysisTaskPhiFlow.cxx:597 AliAnalysisTaskPhiFlow.cxx:598 AliAnalysisTaskPhiFlow.cxx:599 AliAnalysisTaskPhiFlow.cxx:600 AliAnalysisTaskPhiFlow.cxx:601 AliAnalysisTaskPhiFlow.cxx:602 AliAnalysisTaskPhiFlow.cxx:603 AliAnalysisTaskPhiFlow.cxx:604 AliAnalysisTaskPhiFlow.cxx:605 AliAnalysisTaskPhiFlow.cxx:606 AliAnalysisTaskPhiFlow.cxx:607 AliAnalysisTaskPhiFlow.cxx:608 AliAnalysisTaskPhiFlow.cxx:609 AliAnalysisTaskPhiFlow.cxx:610 AliAnalysisTaskPhiFlow.cxx:611 AliAnalysisTaskPhiFlow.cxx:612 AliAnalysisTaskPhiFlow.cxx:613 AliAnalysisTaskPhiFlow.cxx:614 AliAnalysisTaskPhiFlow.cxx:615 AliAnalysisTaskPhiFlow.cxx:616 AliAnalysisTaskPhiFlow.cxx:617 AliAnalysisTaskPhiFlow.cxx:618 AliAnalysisTaskPhiFlow.cxx:619 AliAnalysisTaskPhiFlow.cxx:620 AliAnalysisTaskPhiFlow.cxx:621 AliAnalysisTaskPhiFlow.cxx:622 AliAnalysisTaskPhiFlow.cxx:623 AliAnalysisTaskPhiFlow.cxx:624 AliAnalysisTaskPhiFlow.cxx:625 AliAnalysisTaskPhiFlow.cxx:626 AliAnalysisTaskPhiFlow.cxx:627 AliAnalysisTaskPhiFlow.cxx:628 AliAnalysisTaskPhiFlow.cxx:629 AliAnalysisTaskPhiFlow.cxx:630 AliAnalysisTaskPhiFlow.cxx:631 AliAnalysisTaskPhiFlow.cxx:632 AliAnalysisTaskPhiFlow.cxx:633 AliAnalysisTaskPhiFlow.cxx:634 AliAnalysisTaskPhiFlow.cxx:635 AliAnalysisTaskPhiFlow.cxx:636 AliAnalysisTaskPhiFlow.cxx:637 AliAnalysisTaskPhiFlow.cxx:638 AliAnalysisTaskPhiFlow.cxx:639 AliAnalysisTaskPhiFlow.cxx:640 AliAnalysisTaskPhiFlow.cxx:641 AliAnalysisTaskPhiFlow.cxx:642 AliAnalysisTaskPhiFlow.cxx:643 AliAnalysisTaskPhiFlow.cxx:644 AliAnalysisTaskPhiFlow.cxx:645 AliAnalysisTaskPhiFlow.cxx:646 AliAnalysisTaskPhiFlow.cxx:647 AliAnalysisTaskPhiFlow.cxx:648 AliAnalysisTaskPhiFlow.cxx:649 AliAnalysisTaskPhiFlow.cxx:650 AliAnalysisTaskPhiFlow.cxx:651 AliAnalysisTaskPhiFlow.cxx:652 AliAnalysisTaskPhiFlow.cxx:653 AliAnalysisTaskPhiFlow.cxx:654 AliAnalysisTaskPhiFlow.cxx:655 AliAnalysisTaskPhiFlow.cxx:656 AliAnalysisTaskPhiFlow.cxx:657 AliAnalysisTaskPhiFlow.cxx:658 AliAnalysisTaskPhiFlow.cxx:659 AliAnalysisTaskPhiFlow.cxx:660 AliAnalysisTaskPhiFlow.cxx:661 AliAnalysisTaskPhiFlow.cxx:662 AliAnalysisTaskPhiFlow.cxx:663 AliAnalysisTaskPhiFlow.cxx:664 AliAnalysisTaskPhiFlow.cxx:665 AliAnalysisTaskPhiFlow.cxx:666 AliAnalysisTaskPhiFlow.cxx:667 AliAnalysisTaskPhiFlow.cxx:668 AliAnalysisTaskPhiFlow.cxx:669 AliAnalysisTaskPhiFlow.cxx:670 AliAnalysisTaskPhiFlow.cxx:671 AliAnalysisTaskPhiFlow.cxx:672 AliAnalysisTaskPhiFlow.cxx:673 AliAnalysisTaskPhiFlow.cxx:674 AliAnalysisTaskPhiFlow.cxx:675 AliAnalysisTaskPhiFlow.cxx:676 AliAnalysisTaskPhiFlow.cxx:677 AliAnalysisTaskPhiFlow.cxx:678 AliAnalysisTaskPhiFlow.cxx:679 AliAnalysisTaskPhiFlow.cxx:680 AliAnalysisTaskPhiFlow.cxx:681 AliAnalysisTaskPhiFlow.cxx:682 AliAnalysisTaskPhiFlow.cxx:683 AliAnalysisTaskPhiFlow.cxx:684 AliAnalysisTaskPhiFlow.cxx:685 AliAnalysisTaskPhiFlow.cxx:686 AliAnalysisTaskPhiFlow.cxx:687 AliAnalysisTaskPhiFlow.cxx:688 AliAnalysisTaskPhiFlow.cxx:689 AliAnalysisTaskPhiFlow.cxx:690 AliAnalysisTaskPhiFlow.cxx:691 AliAnalysisTaskPhiFlow.cxx:692 AliAnalysisTaskPhiFlow.cxx:693 AliAnalysisTaskPhiFlow.cxx:694 AliAnalysisTaskPhiFlow.cxx:695 AliAnalysisTaskPhiFlow.cxx:696 AliAnalysisTaskPhiFlow.cxx:697 AliAnalysisTaskPhiFlow.cxx:698 AliAnalysisTaskPhiFlow.cxx:699 AliAnalysisTaskPhiFlow.cxx:700 AliAnalysisTaskPhiFlow.cxx:701 AliAnalysisTaskPhiFlow.cxx:702 AliAnalysisTaskPhiFlow.cxx:703 AliAnalysisTaskPhiFlow.cxx:704 AliAnalysisTaskPhiFlow.cxx:705 AliAnalysisTaskPhiFlow.cxx:706 AliAnalysisTaskPhiFlow.cxx:707 AliAnalysisTaskPhiFlow.cxx:708 AliAnalysisTaskPhiFlow.cxx:709 AliAnalysisTaskPhiFlow.cxx:710 AliAnalysisTaskPhiFlow.cxx:711 AliAnalysisTaskPhiFlow.cxx:712 AliAnalysisTaskPhiFlow.cxx:713 AliAnalysisTaskPhiFlow.cxx:714 AliAnalysisTaskPhiFlow.cxx:715 AliAnalysisTaskPhiFlow.cxx:716 AliAnalysisTaskPhiFlow.cxx:717 AliAnalysisTaskPhiFlow.cxx:718 AliAnalysisTaskPhiFlow.cxx:719 AliAnalysisTaskPhiFlow.cxx:720 AliAnalysisTaskPhiFlow.cxx:721 AliAnalysisTaskPhiFlow.cxx:722 AliAnalysisTaskPhiFlow.cxx:723 AliAnalysisTaskPhiFlow.cxx:724 AliAnalysisTaskPhiFlow.cxx:725 AliAnalysisTaskPhiFlow.cxx:726 AliAnalysisTaskPhiFlow.cxx:727 AliAnalysisTaskPhiFlow.cxx:728 AliAnalysisTaskPhiFlow.cxx:729 AliAnalysisTaskPhiFlow.cxx:730 AliAnalysisTaskPhiFlow.cxx:731 AliAnalysisTaskPhiFlow.cxx:732 AliAnalysisTaskPhiFlow.cxx:733 AliAnalysisTaskPhiFlow.cxx:734 AliAnalysisTaskPhiFlow.cxx:735 AliAnalysisTaskPhiFlow.cxx:736 AliAnalysisTaskPhiFlow.cxx:737 AliAnalysisTaskPhiFlow.cxx:738 AliAnalysisTaskPhiFlow.cxx:739 AliAnalysisTaskPhiFlow.cxx:740 AliAnalysisTaskPhiFlow.cxx:741 AliAnalysisTaskPhiFlow.cxx:742 AliAnalysisTaskPhiFlow.cxx:743 AliAnalysisTaskPhiFlow.cxx:744 AliAnalysisTaskPhiFlow.cxx:745 AliAnalysisTaskPhiFlow.cxx:746 AliAnalysisTaskPhiFlow.cxx:747 AliAnalysisTaskPhiFlow.cxx:748 AliAnalysisTaskPhiFlow.cxx:749 AliAnalysisTaskPhiFlow.cxx:750 AliAnalysisTaskPhiFlow.cxx:751 AliAnalysisTaskPhiFlow.cxx:752 AliAnalysisTaskPhiFlow.cxx:753 AliAnalysisTaskPhiFlow.cxx:754 AliAnalysisTaskPhiFlow.cxx:755 AliAnalysisTaskPhiFlow.cxx:756 AliAnalysisTaskPhiFlow.cxx:757 AliAnalysisTaskPhiFlow.cxx:758 AliAnalysisTaskPhiFlow.cxx:759 AliAnalysisTaskPhiFlow.cxx:760 AliAnalysisTaskPhiFlow.cxx:761 AliAnalysisTaskPhiFlow.cxx:762 AliAnalysisTaskPhiFlow.cxx:763 AliAnalysisTaskPhiFlow.cxx:764 AliAnalysisTaskPhiFlow.cxx:765 AliAnalysisTaskPhiFlow.cxx:766 AliAnalysisTaskPhiFlow.cxx:767 AliAnalysisTaskPhiFlow.cxx:768 AliAnalysisTaskPhiFlow.cxx:769 AliAnalysisTaskPhiFlow.cxx:770 AliAnalysisTaskPhiFlow.cxx:771 AliAnalysisTaskPhiFlow.cxx:772 AliAnalysisTaskPhiFlow.cxx:773 AliAnalysisTaskPhiFlow.cxx:774 AliAnalysisTaskPhiFlow.cxx:775 AliAnalysisTaskPhiFlow.cxx:776 AliAnalysisTaskPhiFlow.cxx:777 AliAnalysisTaskPhiFlow.cxx:778 AliAnalysisTaskPhiFlow.cxx:779 AliAnalysisTaskPhiFlow.cxx:780 AliAnalysisTaskPhiFlow.cxx:781 AliAnalysisTaskPhiFlow.cxx:782 AliAnalysisTaskPhiFlow.cxx:783 AliAnalysisTaskPhiFlow.cxx:784 AliAnalysisTaskPhiFlow.cxx:785 AliAnalysisTaskPhiFlow.cxx:786 AliAnalysisTaskPhiFlow.cxx:787 AliAnalysisTaskPhiFlow.cxx:788 AliAnalysisTaskPhiFlow.cxx:789 AliAnalysisTaskPhiFlow.cxx:790 AliAnalysisTaskPhiFlow.cxx:791 AliAnalysisTaskPhiFlow.cxx:792 AliAnalysisTaskPhiFlow.cxx:793 AliAnalysisTaskPhiFlow.cxx:794 AliAnalysisTaskPhiFlow.cxx:795 AliAnalysisTaskPhiFlow.cxx:796 AliAnalysisTaskPhiFlow.cxx:797 AliAnalysisTaskPhiFlow.cxx:798 AliAnalysisTaskPhiFlow.cxx:799 AliAnalysisTaskPhiFlow.cxx:800 AliAnalysisTaskPhiFlow.cxx:801 AliAnalysisTaskPhiFlow.cxx:802 AliAnalysisTaskPhiFlow.cxx:803 AliAnalysisTaskPhiFlow.cxx:804 AliAnalysisTaskPhiFlow.cxx:805 AliAnalysisTaskPhiFlow.cxx:806 AliAnalysisTaskPhiFlow.cxx:807 AliAnalysisTaskPhiFlow.cxx:808 AliAnalysisTaskPhiFlow.cxx:809 AliAnalysisTaskPhiFlow.cxx:810 AliAnalysisTaskPhiFlow.cxx:811 AliAnalysisTaskPhiFlow.cxx:812 AliAnalysisTaskPhiFlow.cxx:813 AliAnalysisTaskPhiFlow.cxx:814 AliAnalysisTaskPhiFlow.cxx:815 AliAnalysisTaskPhiFlow.cxx:816 AliAnalysisTaskPhiFlow.cxx:817 AliAnalysisTaskPhiFlow.cxx:818 AliAnalysisTaskPhiFlow.cxx:819 AliAnalysisTaskPhiFlow.cxx:820 AliAnalysisTaskPhiFlow.cxx:821 AliAnalysisTaskPhiFlow.cxx:822 AliAnalysisTaskPhiFlow.cxx:823 AliAnalysisTaskPhiFlow.cxx:824 AliAnalysisTaskPhiFlow.cxx:825 AliAnalysisTaskPhiFlow.cxx:826 AliAnalysisTaskPhiFlow.cxx:827 AliAnalysisTaskPhiFlow.cxx:828 AliAnalysisTaskPhiFlow.cxx:829 AliAnalysisTaskPhiFlow.cxx:830 AliAnalysisTaskPhiFlow.cxx:831 AliAnalysisTaskPhiFlow.cxx:832 AliAnalysisTaskPhiFlow.cxx:833 AliAnalysisTaskPhiFlow.cxx:834 AliAnalysisTaskPhiFlow.cxx:835 AliAnalysisTaskPhiFlow.cxx:836 AliAnalysisTaskPhiFlow.cxx:837 AliAnalysisTaskPhiFlow.cxx:838 AliAnalysisTaskPhiFlow.cxx:839 AliAnalysisTaskPhiFlow.cxx:840 AliAnalysisTaskPhiFlow.cxx:841 AliAnalysisTaskPhiFlow.cxx:842 AliAnalysisTaskPhiFlow.cxx:843 AliAnalysisTaskPhiFlow.cxx:844 AliAnalysisTaskPhiFlow.cxx:845 AliAnalysisTaskPhiFlow.cxx:846 AliAnalysisTaskPhiFlow.cxx:847 AliAnalysisTaskPhiFlow.cxx:848 AliAnalysisTaskPhiFlow.cxx:849 AliAnalysisTaskPhiFlow.cxx:850 AliAnalysisTaskPhiFlow.cxx:851 AliAnalysisTaskPhiFlow.cxx:852 AliAnalysisTaskPhiFlow.cxx:853 AliAnalysisTaskPhiFlow.cxx:854 AliAnalysisTaskPhiFlow.cxx:855 AliAnalysisTaskPhiFlow.cxx:856 AliAnalysisTaskPhiFlow.cxx:857 AliAnalysisTaskPhiFlow.cxx:858 AliAnalysisTaskPhiFlow.cxx:859 AliAnalysisTaskPhiFlow.cxx:860 AliAnalysisTaskPhiFlow.cxx:861 AliAnalysisTaskPhiFlow.cxx:862 AliAnalysisTaskPhiFlow.cxx:863 AliAnalysisTaskPhiFlow.cxx:864 AliAnalysisTaskPhiFlow.cxx:865 AliAnalysisTaskPhiFlow.cxx:866 AliAnalysisTaskPhiFlow.cxx:867 AliAnalysisTaskPhiFlow.cxx:868 AliAnalysisTaskPhiFlow.cxx:869 AliAnalysisTaskPhiFlow.cxx:870 AliAnalysisTaskPhiFlow.cxx:871 AliAnalysisTaskPhiFlow.cxx:872 AliAnalysisTaskPhiFlow.cxx:873 AliAnalysisTaskPhiFlow.cxx:874 AliAnalysisTaskPhiFlow.cxx:875 AliAnalysisTaskPhiFlow.cxx:876 AliAnalysisTaskPhiFlow.cxx:877 AliAnalysisTaskPhiFlow.cxx:878 AliAnalysisTaskPhiFlow.cxx:879 AliAnalysisTaskPhiFlow.cxx:880 AliAnalysisTaskPhiFlow.cxx:881 AliAnalysisTaskPhiFlow.cxx:882 AliAnalysisTaskPhiFlow.cxx:883 AliAnalysisTaskPhiFlow.cxx:884 AliAnalysisTaskPhiFlow.cxx:885 AliAnalysisTaskPhiFlow.cxx:886 AliAnalysisTaskPhiFlow.cxx:887 AliAnalysisTaskPhiFlow.cxx:888 AliAnalysisTaskPhiFlow.cxx:889 AliAnalysisTaskPhiFlow.cxx:890 AliAnalysisTaskPhiFlow.cxx:891 AliAnalysisTaskPhiFlow.cxx:892 AliAnalysisTaskPhiFlow.cxx:893 AliAnalysisTaskPhiFlow.cxx:894 AliAnalysisTaskPhiFlow.cxx:895 AliAnalysisTaskPhiFlow.cxx:896 AliAnalysisTaskPhiFlow.cxx:897 AliAnalysisTaskPhiFlow.cxx:898 AliAnalysisTaskPhiFlow.cxx:899 AliAnalysisTaskPhiFlow.cxx:900 AliAnalysisTaskPhiFlow.cxx:901 AliAnalysisTaskPhiFlow.cxx:902 AliAnalysisTaskPhiFlow.cxx:903 AliAnalysisTaskPhiFlow.cxx:904 AliAnalysisTaskPhiFlow.cxx:905 AliAnalysisTaskPhiFlow.cxx:906 AliAnalysisTaskPhiFlow.cxx:907 AliAnalysisTaskPhiFlow.cxx:908 AliAnalysisTaskPhiFlow.cxx:909 AliAnalysisTaskPhiFlow.cxx:910 AliAnalysisTaskPhiFlow.cxx:911 AliAnalysisTaskPhiFlow.cxx:912 AliAnalysisTaskPhiFlow.cxx:913 AliAnalysisTaskPhiFlow.cxx:914 AliAnalysisTaskPhiFlow.cxx:915 AliAnalysisTaskPhiFlow.cxx:916 AliAnalysisTaskPhiFlow.cxx:917 AliAnalysisTaskPhiFlow.cxx:918 AliAnalysisTaskPhiFlow.cxx:919 AliAnalysisTaskPhiFlow.cxx:920 AliAnalysisTaskPhiFlow.cxx:921 AliAnalysisTaskPhiFlow.cxx:922 AliAnalysisTaskPhiFlow.cxx:923 AliAnalysisTaskPhiFlow.cxx:924 AliAnalysisTaskPhiFlow.cxx:925 AliAnalysisTaskPhiFlow.cxx:926 AliAnalysisTaskPhiFlow.cxx:927 AliAnalysisTaskPhiFlow.cxx:928 AliAnalysisTaskPhiFlow.cxx:929 AliAnalysisTaskPhiFlow.cxx:930 AliAnalysisTaskPhiFlow.cxx:931 AliAnalysisTaskPhiFlow.cxx:932 AliAnalysisTaskPhiFlow.cxx:933 AliAnalysisTaskPhiFlow.cxx:934 AliAnalysisTaskPhiFlow.cxx:935 AliAnalysisTaskPhiFlow.cxx:936 AliAnalysisTaskPhiFlow.cxx:937 AliAnalysisTaskPhiFlow.cxx:938 AliAnalysisTaskPhiFlow.cxx:939 AliAnalysisTaskPhiFlow.cxx:940 AliAnalysisTaskPhiFlow.cxx:941 AliAnalysisTaskPhiFlow.cxx:942 AliAnalysisTaskPhiFlow.cxx:943 AliAnalysisTaskPhiFlow.cxx:944 AliAnalysisTaskPhiFlow.cxx:945 AliAnalysisTaskPhiFlow.cxx:946 AliAnalysisTaskPhiFlow.cxx:947 AliAnalysisTaskPhiFlow.cxx:948 AliAnalysisTaskPhiFlow.cxx:949 AliAnalysisTaskPhiFlow.cxx:950 AliAnalysisTaskPhiFlow.cxx:951 AliAnalysisTaskPhiFlow.cxx:952 AliAnalysisTaskPhiFlow.cxx:953 AliAnalysisTaskPhiFlow.cxx:954 AliAnalysisTaskPhiFlow.cxx:955 AliAnalysisTaskPhiFlow.cxx:956 AliAnalysisTaskPhiFlow.cxx:957 AliAnalysisTaskPhiFlow.cxx:958 AliAnalysisTaskPhiFlow.cxx:959 AliAnalysisTaskPhiFlow.cxx:960 AliAnalysisTaskPhiFlow.cxx:961 AliAnalysisTaskPhiFlow.cxx:962 AliAnalysisTaskPhiFlow.cxx:963 AliAnalysisTaskPhiFlow.cxx:964 AliAnalysisTaskPhiFlow.cxx:965 AliAnalysisTaskPhiFlow.cxx:966 AliAnalysisTaskPhiFlow.cxx:967 AliAnalysisTaskPhiFlow.cxx:968 AliAnalysisTaskPhiFlow.cxx:969 AliAnalysisTaskPhiFlow.cxx:970 AliAnalysisTaskPhiFlow.cxx:971 AliAnalysisTaskPhiFlow.cxx:972 AliAnalysisTaskPhiFlow.cxx:973 AliAnalysisTaskPhiFlow.cxx:974 AliAnalysisTaskPhiFlow.cxx:975 AliAnalysisTaskPhiFlow.cxx:976 AliAnalysisTaskPhiFlow.cxx:977 AliAnalysisTaskPhiFlow.cxx:978 AliAnalysisTaskPhiFlow.cxx:979 AliAnalysisTaskPhiFlow.cxx:980 AliAnalysisTaskPhiFlow.cxx:981 AliAnalysisTaskPhiFlow.cxx:982 AliAnalysisTaskPhiFlow.cxx:983 AliAnalysisTaskPhiFlow.cxx:984 AliAnalysisTaskPhiFlow.cxx:985 AliAnalysisTaskPhiFlow.cxx:986 AliAnalysisTaskPhiFlow.cxx:987 AliAnalysisTaskPhiFlow.cxx:988 AliAnalysisTaskPhiFlow.cxx:989 AliAnalysisTaskPhiFlow.cxx:990 AliAnalysisTaskPhiFlow.cxx:991 AliAnalysisTaskPhiFlow.cxx:992 AliAnalysisTaskPhiFlow.cxx:993 AliAnalysisTaskPhiFlow.cxx:994 AliAnalysisTaskPhiFlow.cxx:995 AliAnalysisTaskPhiFlow.cxx:996 AliAnalysisTaskPhiFlow.cxx:997 AliAnalysisTaskPhiFlow.cxx:998 AliAnalysisTaskPhiFlow.cxx:999 AliAnalysisTaskPhiFlow.cxx:1000