ROOT logo
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. */
/* See cxx source for full Copyright notice */
/* $Id$ */

// AliAnalysisTaskPhiFlow:
// origin: Redmer Alexander Bertens (rbertens@nikhef.nl)
// analyis task for phi-meson reconstruction and estimation of v_n

#ifndef ALIANALYSISTASKPHIFLOW_H
#define ALIANALYSISTASKPHIFLOW_H

class TH1F;
class TH2F;
class TProfile;
class AliESDEvent;
class AliESDtrackCuts;
class AliFlowTrackCuts;
class AliFlowEvent;
class AliFlowCandidateTrack;
class AliFlowBayesianPID;
class AliEventPoolManager;
class AliPIDCombined;

#include "AliAnalysisTaskSE.h"

class AliPhiMesonHelperTrack : public TObject
{
public:
        AliPhiMesonHelperTrack(Float_t eta, Float_t phi, Float_t p, Float_t px, Float_t py, Float_t pz, Float_t pt, Int_t charge) : fEta(eta), fPhi(phi), fp(p), fpX(px), fpY(py), fpZ(pz), fpT(pt), fCharge(charge) {  }
    ~AliPhiMesonHelperTrack() {}
    virtual Double_t P()                const { return fp; }
    virtual Double_t Px()               const { return fpX; }
    virtual Double_t Py()               const { return fpY; }
    virtual Double_t Pz()               const { return fpZ; }
    virtual Double_t Pt()               const { return fpT; }
    virtual Double_t Phi()              const { return fPhi; }
    virtual Double_t Eta()              const { return fEta; }
    virtual Int_t Charge()              const { return fCharge; }
    void    InitializeHelperTrack(Float_t eta, Float_t phi, Float_t p, Float_t px, Float_t py, Float_t pz, Float_t pt, Int_t charge) { fEta = eta; fPhi = phi; fp = p; fpX = px; fpY = py; fpZ = pz; fpT = pt; fCharge = charge; }
private:
    Float_t                             fEta;      // eta
    Float_t                             fPhi;      // phi
    Float_t                             fp;        // p
    Float_t                             fpX;       // pX
    Float_t                             fpY;       // pY
    Float_t                             fpZ;       // pZ
    Float_t                             fpT;       // pT
    Int_t                               fCharge;   // charge
    ClassDef(AliPhiMesonHelperTrack, 1); // lightweight helper track for phi reconstruction
};

class AliAnalysisTaskPhiFlow : public AliAnalysisTaskSE
{
public:
   AliAnalysisTaskPhiFlow();
   AliAnalysisTaskPhiFlow(const char *name);
   virtual ~AliAnalysisTaskPhiFlow();
   Int_t                                SetDebugLevelPhiTask(Int_t debug) {fDebug = debug; return fDebug; }
   Bool_t                               SetIsMC(Bool_t ismc) {fIsMC = ismc; return fIsMC; }
   Bool_t                               UseEventMixing(Bool_t mix, Bool_t type) {fEventMixing = mix; fTypeMixing = type; return mix; }
   Bool_t                               SetVZEROSubEvents(Bool_t v0) { fV0 = v0; return v0; }
   TH1F*                                BookHistogram(const char * name);
   TH2F*                                BookPIDHistogram(const char * name, Bool_t TPC);
   TH1F*                                InitPtSpectraHistograms(Float_t nmin, Float_t nmax);
   TH1F*                                BookPtHistogram(const char* name);
   void                                 AddPhiIdentificationOutputObjects();
   virtual void                         UserCreateOutputObjects();
   AliEventPoolManager*                 InitializeEventMixing();
   void                                 SetPtBins(Float_t bin[19], Int_t n) { for(Int_t i = 0; i < n+1; i++) fPtBins[i] = bin[i]; fNPtBins = n; }
   template <typename T> Double_t       InvariantMass(const T* track1, const T* track2) const;
//   template <typename T> Double_t       DeltaDipAngle(const T* track1, const T* track2) const;
//   template <typename T> Bool_t         CheckDeltaDipAngle(const T* track1, const T* track2) const;
   template <typename T> Bool_t         CheckCandidateEtaPtCut(const T* track1, const T* track2) const;
   void                                 SetCentralityParameters(Double_t min, Double_t max, const char* a, const char* b, Bool_t c, Bool_t d) { 
                                                                                          fCentralityMin = min; 
                                                                                          fCentralityMax = max; 
                                                                                          fkCentralityMethodA = a; 
                                                                                          fkCentralityMethodB = b;
                                                                                          fCentralityCut2010 = c; 
                                                                                          fCentralityCut2011 = d;}
   void                                 SetCurrentCentralityBin(Double_t c) {fCentrality = c; }
   Double_t                             GetCenMin() const {return fCentralityMin; }
   Double_t                             GetCenMax() const {return fCentralityMax; }
   const char*                          GetCentralityMethod() const {return fkCentralityMethodA; }
   void                                 SetVertexZ(Float_t z) { fVertexRange = z; }
   Float_t                              GetVertexZ() const { return fVertexRange; }
//   void                                 SetMaxDeltaDipAngleAndPt(Float_t a, Float_t pt) { fDeltaDipAngle = a;
//                                                                                          fDeltaDipPt = pt;
//                                                                                          fApplyDeltaDipCut = kTRUE; };
//   Float_t                              GetDeltaDipAngle() const {return fDeltaDipAngle; }
//   Float_t                              GetDeltaDipPt() const {return fDeltaDipPt; }
   template <typename T> Bool_t         EventCut(T* event);
   template <typename T> void           PlotMultiplcities(const T* event) const;
   template <typename T> Bool_t         CheckVertex(const T* event);
   template <typename T> Bool_t         CheckCentrality(T* event);
   void                                 InitializeBayesianPID(AliAODEvent* event);
   template <typename T> Bool_t         PassesTPCbayesianCut(T* track) const;
   Bool_t                               PassesDCACut(AliAODTrack* track) const;
   Bool_t                               IsKaon(AliAODTrack* track) const;
   template <typename T> Double_t       PhiPt(const T* track_1, const T* track_2) const;
   template <typename T> void           PtSelector(Int_t _track_type, const T* track_1, const T* track_2) const;
   template <typename T> Bool_t         PhiTrack(T* track) const;
   template <typename T> void           SetNullCuts(T* esd);
   void                                 PrepareFlowEvent(Int_t iMulti);
   void                                 VZEROSubEventAnalysis();
   virtual void                         UserExec(Option_t *option);
   virtual void                         Exec(Option_t *);
   void                                 ReconstructionWithEventMixing(TObjArray* MixingCandidates) const;
   virtual void                         Terminate(Option_t *);
   void                                 SetPOICuts(AliFlowTrackCuts *cutsPOI) { fPOICuts = cutsPOI; }
   void                                 SetRPCuts(AliFlowTrackCuts *cutsRP) { fCutsRP = cutsRP; }
   AliFlowTrackCuts*                    GetPOICuts() const {return fPOICuts;}
   AliFlowTrackCuts*                    GetRPCuts() const {return fCutsRP;}
   void                                 SetPIDConfiguration(Double_t prob[7]) { for(Int_t i = 0; i < 7; i++) fPIDConfig[i] = prob[i]; }
   void                                 GetPIDConfiguration(Double_t prob[7]) const {for(Int_t i = 0; i < 7; i++) prob[i] = fPIDConfig[i]; }
   void                                 SetPOIDCAXYZ(Double_t dca[5]) { for(Int_t i = 0; i < 5; i++) fDCAConfig[i] = dca[i]; }
   void                                 GetPOIDCZXYZ(Double_t dca[5]) const { for(Int_t i = 0; i < 5; i++) dca[i] = fDCAConfig[i]; }
   void                                 SetMixingBins(Int_t c[20], Int_t v[20]) {for(Int_t i = 0; i < 20; i++) { fCentralityMixingBins[i] = c[i];
                                                                                                                 fVertexMixingBins[i] = v[i]; } }
   void                                 SetMixingParameters(Int_t p[3]) { for(Int_t i = 0; i < 3; i++) fMixingParameters[i] = p[i]; }
   void                                 GetMixingParameters(Int_t p[3]) const { for(Int_t i = 0; i < 3; i++) p[i] = fMixingParameters[i]; } 
   void                                 SetCandidateEtaAndPt(Double_t mineta, Double_t maxeta, Double_t minpt, Double_t maxpt) { fCandidateMinEta = mineta;
                                                                                                                                fCandidateMaxEta = maxeta;
                                                                                                                                fCandidateMinPt = minpt;
                                                                                                                                fCandidateMaxPt = maxpt;
                                                                                                                                fCandidateEtaPtCut = kTRUE;}
   void                                 SetCandidateMinMaxY(Double_t min, Double_t max){
       fCandidateMinY = min;
       fCandidateMaxY = max;
       fCandidateYCut = kTRUE;
   }
   void                                 GetCandidateEtaAndPt(Double_t etapt[4]) const { etapt[0] = fCandidateMinEta;
                                                                                        etapt[1] = fCandidateMaxEta;
                                                                                        etapt[2] = fCandidateMinPt;
                                                                                        etapt[3] = fCandidateMaxPt; }
   void                                 SetCommonConstants(Int_t massBins, Double_t minMass, Double_t maxMass) {        fMassBins = massBins;
                                                                                                                        fMinMass = minMass;
                                                                                                                        fMaxMass= maxMass; }
   void                                 IsMC();
   Bool_t                               SetQA(Bool_t qa) {fQA = qa; return fQA;}
   void                                 SetSkipEventSelection(Bool_t s) {
       fSkipEventSelection = s;
       fUsePidResponse = kTRUE; // bayesian pid object will require some event info
       fCentrality = 5.;}        // should be set by user, skipping event selection will also forego centrality selection
   void                                 SetUsePidResponse(Bool_t s)     {fUsePidResponse = s;}

private:

   Int_t                fDebug; // debug level (0 none, 1 fcn calls, 2 verbose)
   Bool_t               fIsMC; // use mc mode
   Bool_t               fEventMixing; // use event mixing
   Bool_t               fTypeMixing; // select type: kTRUE for unlike sign background, kFALSE for like sign background
   Bool_t               fQA; // make qa plots
   Bool_t               fV0; // use three subevents including vzero
   Int_t                fMassBins; // mass bins
   Double_t             fMinMass; // mass range
   Double_t             fMaxMass; // mass range
   AliFlowTrackCuts     *fCutsRP; // track cuts for reference particles
   AliFlowTrackCuts     *fNullCuts; // dummy cuts for flow event tracks
   AliPIDResponse       *fPIDResponse; //! pid response object
   AliFlowEvent         *fFlowEvent; //! flow events (one for each inv mass band)
   AliFlowBayesianPID   *fBayesianResponse; //!PID response object
   TObjArray            *fCandidates; // candidate array
   Bool_t               fCandidateEtaPtCut; // set eta and pt cut for candidate tracks and combinatorial background
   Double_t             fCandidateMinEta; // minimum eta for candidates
   Double_t             fCandidateMaxEta; // maximum eta for candidates
   Double_t             fCandidateMinPt; // minimum pt for candidates
   Double_t             fCandidateMaxPt; // maximum pt for candidates
   Bool_t               fCandidateYCut; // y cut on candidates
   Double_t             fCandidateMinY; // min y value for candidate
   Double_t             fCandidateMaxY; // max y value for canddiates
   Double_t             fPIDConfig[7]; // configure pid routine
   Double_t             fDCAConfig[5]; // configure dca routine
   Int_t                fMixingParameters[3]; // mixing: poolsize, mixing tracks, pool buffer
   Int_t                fCentralityMixingBins[20]; // configure centrality bins for event mixing
   Int_t                fVertexMixingBins[20]; // configure vertex bins for event mixing
   Float_t              fPtBins[19]; // pt bin borders
   Int_t                fNPtBins; // no of pt bins + 1
   Double_t             fCentrality; // event centrality
   Double_t             fVertex; // event vertex z 
   AliAODEvent          *fAOD;    //! AOD oject
   AliEventPoolManager  *fPoolManager; //! event pool manager
   TList                *fOutputList; // ! Output list
   TH1F                 *fEventStats; // ! Histogram for event statistics
   TH1F                 *fCentralityPass; // ! QA histogram of events that pass centrality cut
   TH1F                 *fCentralityNoPass; //! QA histogram of events that do not pass centrality cut
   TH2F                 *fNOPID;//! QA histogram of TPC response of all charged particles
   TH2F                 *fPIDk;//! QA histogram of TPC response of kaons
   TH2F                 *fNOPIDTOF; //! QA histo of TOF repsonse charged particles
   TH2F                 *fPIDTOF; //! QA histo of TOF response kaons
   TH1F                 *fInvMNP[18]; //! unlike sign kaon pairs
   TH1F                 *fInvMNN[18]; //! like-sign kaon pairs
   TH1F                 *fInvMPP[18]; //! like-sign kaon pairs
   TH1F                 *fPtSpectra[18]; //! pt spectra
   TH1F                 *fPtP; //! QA histogram of p_t distribution of positive particles
   TH1F                 *fPtN; //! QA histogram of p_t distribution of negative particles
   TH1F                 *fPtKP; //! QA histogram of p_t distribution of positive kaons
   TH1F                 *fPtKN; //! QA histogram of p_t distribution of negative kaons
   TH2F                 *fMultCorAfterCuts; //! QA profile global and tpc multiplicity after outlier cut
   TH2F                 *fMultvsCentr; //! QA profile of centralty vs multiplicity
   Double_t             fCentralityMin; // lower bound of cenrality bin
   Double_t             fCentralityMax; // upper bound of centrality bin
   const char           *fkCentralityMethodA; // method used to determine centrality, default
   const char           *fkCentralityMethodB; // method used to determine centrality, fallback
   Bool_t               fCentralityCut2010; // cut away the multiplicity outliers 2010
   Bool_t               fCentralityCut2011; // cut away the multiplicity outliers 2011
   AliFlowTrackCuts     *fPOICuts; // cuts for particles of interest (flow package)
   Float_t              fVertexRange; // absolute value of maximum distance of vertex along the z-axis
   TH1F                 *fPhi; //! QA plot of azimuthal distribution of tracks used for event plane estimation
   TH1F                 *fPt; //! QA plot of p_t sectrum of tracks used for event plane estimation
   TH1F                 *fEta; //! QA plot of eta distribution of tracks used for event plane estimation
   TH1F                 *fVZEROA; //! QA plot vzeroa multiplicity (all tracks in event)
   TH1F                 *fVZEROC; //! QA plot vzeroc multiplicity (all tracks in event)
   TH1F                 *fTPCM; //! QA plot TPC multiplicity (tracks used for event plane estimation)
//   Float_t              fDeltaDipAngle; // absolute value of delta dip angle to be excluded
//   Float_t              fDeltaDipPt; // upper value of pt range in which delta dip angle must be applied
//   Bool_t               fApplyDeltaDipCut; // enforce delta dip cut
   TH2F                 *fDCAAll;//! qa dca of all charged particles
   TH1F                 *fDCAXYQA; //! qa plot of dca xz
   TH1F                 *fDCAZQA; //!qa plot of dca z
   TH2F                 *fDCAPrim; //!dca of primaries (mc) or kaons (data)
   TH2F                 *fDCASecondaryWeak; //! dca of weak (mc)
   TH2F                 *fDCAMaterial; //!dca material (mc) all (data)
   TProfile             *fSubEventDPhiv2; //! subevent resolution info for v2
   TProfile             *fV0Data[18][2]; //! profiles for vzero vn(minv)
   Bool_t               fSkipEventSelection;// skip event selection and set bayesian pid object to MC mode
   Bool_t               fUsePidResponse;//use pid response instead of aliflowbayesianpid object for pid
   AliPIDCombined*      fPIDCombined;   // pid combined
   AliAnalysisTaskPhiFlow(const AliAnalysisTaskPhiFlow&); // Not implemented
   AliAnalysisTaskPhiFlow& operator=(const AliAnalysisTaskPhiFlow&); // Not implemented
   void                 MakeTrack(Double_t, Double_t, Double_t, Double_t, Int_t , Int_t[], Double_t p = 0., Double_t pz = 0.) const;

   ClassDef(AliAnalysisTaskPhiFlow, 7);
};

#endif



 AliAnalysisTaskPhiFlow.h:1
 AliAnalysisTaskPhiFlow.h:2
 AliAnalysisTaskPhiFlow.h:3
 AliAnalysisTaskPhiFlow.h:4
 AliAnalysisTaskPhiFlow.h:5
 AliAnalysisTaskPhiFlow.h:6
 AliAnalysisTaskPhiFlow.h:7
 AliAnalysisTaskPhiFlow.h:8
 AliAnalysisTaskPhiFlow.h:9
 AliAnalysisTaskPhiFlow.h:10
 AliAnalysisTaskPhiFlow.h:11
 AliAnalysisTaskPhiFlow.h:12
 AliAnalysisTaskPhiFlow.h:13
 AliAnalysisTaskPhiFlow.h:14
 AliAnalysisTaskPhiFlow.h:15
 AliAnalysisTaskPhiFlow.h:16
 AliAnalysisTaskPhiFlow.h:17
 AliAnalysisTaskPhiFlow.h:18
 AliAnalysisTaskPhiFlow.h:19
 AliAnalysisTaskPhiFlow.h:20
 AliAnalysisTaskPhiFlow.h:21
 AliAnalysisTaskPhiFlow.h:22
 AliAnalysisTaskPhiFlow.h:23
 AliAnalysisTaskPhiFlow.h:24
 AliAnalysisTaskPhiFlow.h:25
 AliAnalysisTaskPhiFlow.h:26
 AliAnalysisTaskPhiFlow.h:27
 AliAnalysisTaskPhiFlow.h:28
 AliAnalysisTaskPhiFlow.h:29
 AliAnalysisTaskPhiFlow.h:30
 AliAnalysisTaskPhiFlow.h:31
 AliAnalysisTaskPhiFlow.h:32
 AliAnalysisTaskPhiFlow.h:33
 AliAnalysisTaskPhiFlow.h:34
 AliAnalysisTaskPhiFlow.h:35
 AliAnalysisTaskPhiFlow.h:36
 AliAnalysisTaskPhiFlow.h:37
 AliAnalysisTaskPhiFlow.h:38
 AliAnalysisTaskPhiFlow.h:39
 AliAnalysisTaskPhiFlow.h:40
 AliAnalysisTaskPhiFlow.h:41
 AliAnalysisTaskPhiFlow.h:42
 AliAnalysisTaskPhiFlow.h:43
 AliAnalysisTaskPhiFlow.h:44
 AliAnalysisTaskPhiFlow.h:45
 AliAnalysisTaskPhiFlow.h:46
 AliAnalysisTaskPhiFlow.h:47
 AliAnalysisTaskPhiFlow.h:48
 AliAnalysisTaskPhiFlow.h:49
 AliAnalysisTaskPhiFlow.h:50
 AliAnalysisTaskPhiFlow.h:51
 AliAnalysisTaskPhiFlow.h:52
 AliAnalysisTaskPhiFlow.h:53
 AliAnalysisTaskPhiFlow.h:54
 AliAnalysisTaskPhiFlow.h:55
 AliAnalysisTaskPhiFlow.h:56
 AliAnalysisTaskPhiFlow.h:57
 AliAnalysisTaskPhiFlow.h:58
 AliAnalysisTaskPhiFlow.h:59
 AliAnalysisTaskPhiFlow.h:60
 AliAnalysisTaskPhiFlow.h:61
 AliAnalysisTaskPhiFlow.h:62
 AliAnalysisTaskPhiFlow.h:63
 AliAnalysisTaskPhiFlow.h:64
 AliAnalysisTaskPhiFlow.h:65
 AliAnalysisTaskPhiFlow.h:66
 AliAnalysisTaskPhiFlow.h:67
 AliAnalysisTaskPhiFlow.h:68
 AliAnalysisTaskPhiFlow.h:69
 AliAnalysisTaskPhiFlow.h:70
 AliAnalysisTaskPhiFlow.h:71
 AliAnalysisTaskPhiFlow.h:72
 AliAnalysisTaskPhiFlow.h:73
 AliAnalysisTaskPhiFlow.h:74
 AliAnalysisTaskPhiFlow.h:75
 AliAnalysisTaskPhiFlow.h:76
 AliAnalysisTaskPhiFlow.h:77
 AliAnalysisTaskPhiFlow.h:78
 AliAnalysisTaskPhiFlow.h:79
 AliAnalysisTaskPhiFlow.h:80
 AliAnalysisTaskPhiFlow.h:81
 AliAnalysisTaskPhiFlow.h:82
 AliAnalysisTaskPhiFlow.h:83
 AliAnalysisTaskPhiFlow.h:84
 AliAnalysisTaskPhiFlow.h:85
 AliAnalysisTaskPhiFlow.h:86
 AliAnalysisTaskPhiFlow.h:87
 AliAnalysisTaskPhiFlow.h:88
 AliAnalysisTaskPhiFlow.h:89
 AliAnalysisTaskPhiFlow.h:90
 AliAnalysisTaskPhiFlow.h:91
 AliAnalysisTaskPhiFlow.h:92
 AliAnalysisTaskPhiFlow.h:93
 AliAnalysisTaskPhiFlow.h:94
 AliAnalysisTaskPhiFlow.h:95
 AliAnalysisTaskPhiFlow.h:96
 AliAnalysisTaskPhiFlow.h:97
 AliAnalysisTaskPhiFlow.h:98
 AliAnalysisTaskPhiFlow.h:99
 AliAnalysisTaskPhiFlow.h:100
 AliAnalysisTaskPhiFlow.h:101
 AliAnalysisTaskPhiFlow.h:102
 AliAnalysisTaskPhiFlow.h:103
 AliAnalysisTaskPhiFlow.h:104
 AliAnalysisTaskPhiFlow.h:105
 AliAnalysisTaskPhiFlow.h:106
 AliAnalysisTaskPhiFlow.h:107
 AliAnalysisTaskPhiFlow.h:108
 AliAnalysisTaskPhiFlow.h:109
 AliAnalysisTaskPhiFlow.h:110
 AliAnalysisTaskPhiFlow.h:111
 AliAnalysisTaskPhiFlow.h:112
 AliAnalysisTaskPhiFlow.h:113
 AliAnalysisTaskPhiFlow.h:114
 AliAnalysisTaskPhiFlow.h:115
 AliAnalysisTaskPhiFlow.h:116
 AliAnalysisTaskPhiFlow.h:117
 AliAnalysisTaskPhiFlow.h:118
 AliAnalysisTaskPhiFlow.h:119
 AliAnalysisTaskPhiFlow.h:120
 AliAnalysisTaskPhiFlow.h:121
 AliAnalysisTaskPhiFlow.h:122
 AliAnalysisTaskPhiFlow.h:123
 AliAnalysisTaskPhiFlow.h:124
 AliAnalysisTaskPhiFlow.h:125
 AliAnalysisTaskPhiFlow.h:126
 AliAnalysisTaskPhiFlow.h:127
 AliAnalysisTaskPhiFlow.h:128
 AliAnalysisTaskPhiFlow.h:129
 AliAnalysisTaskPhiFlow.h:130
 AliAnalysisTaskPhiFlow.h:131
 AliAnalysisTaskPhiFlow.h:132
 AliAnalysisTaskPhiFlow.h:133
 AliAnalysisTaskPhiFlow.h:134
 AliAnalysisTaskPhiFlow.h:135
 AliAnalysisTaskPhiFlow.h:136
 AliAnalysisTaskPhiFlow.h:137
 AliAnalysisTaskPhiFlow.h:138
 AliAnalysisTaskPhiFlow.h:139
 AliAnalysisTaskPhiFlow.h:140
 AliAnalysisTaskPhiFlow.h:141
 AliAnalysisTaskPhiFlow.h:142
 AliAnalysisTaskPhiFlow.h:143
 AliAnalysisTaskPhiFlow.h:144
 AliAnalysisTaskPhiFlow.h:145
 AliAnalysisTaskPhiFlow.h:146
 AliAnalysisTaskPhiFlow.h:147
 AliAnalysisTaskPhiFlow.h:148
 AliAnalysisTaskPhiFlow.h:149
 AliAnalysisTaskPhiFlow.h:150
 AliAnalysisTaskPhiFlow.h:151
 AliAnalysisTaskPhiFlow.h:152
 AliAnalysisTaskPhiFlow.h:153
 AliAnalysisTaskPhiFlow.h:154
 AliAnalysisTaskPhiFlow.h:155
 AliAnalysisTaskPhiFlow.h:156
 AliAnalysisTaskPhiFlow.h:157
 AliAnalysisTaskPhiFlow.h:158
 AliAnalysisTaskPhiFlow.h:159
 AliAnalysisTaskPhiFlow.h:160
 AliAnalysisTaskPhiFlow.h:161
 AliAnalysisTaskPhiFlow.h:162
 AliAnalysisTaskPhiFlow.h:163
 AliAnalysisTaskPhiFlow.h:164
 AliAnalysisTaskPhiFlow.h:165
 AliAnalysisTaskPhiFlow.h:166
 AliAnalysisTaskPhiFlow.h:167
 AliAnalysisTaskPhiFlow.h:168
 AliAnalysisTaskPhiFlow.h:169
 AliAnalysisTaskPhiFlow.h:170
 AliAnalysisTaskPhiFlow.h:171
 AliAnalysisTaskPhiFlow.h:172
 AliAnalysisTaskPhiFlow.h:173
 AliAnalysisTaskPhiFlow.h:174
 AliAnalysisTaskPhiFlow.h:175
 AliAnalysisTaskPhiFlow.h:176
 AliAnalysisTaskPhiFlow.h:177
 AliAnalysisTaskPhiFlow.h:178
 AliAnalysisTaskPhiFlow.h:179
 AliAnalysisTaskPhiFlow.h:180
 AliAnalysisTaskPhiFlow.h:181
 AliAnalysisTaskPhiFlow.h:182
 AliAnalysisTaskPhiFlow.h:183
 AliAnalysisTaskPhiFlow.h:184
 AliAnalysisTaskPhiFlow.h:185
 AliAnalysisTaskPhiFlow.h:186
 AliAnalysisTaskPhiFlow.h:187
 AliAnalysisTaskPhiFlow.h:188
 AliAnalysisTaskPhiFlow.h:189
 AliAnalysisTaskPhiFlow.h:190
 AliAnalysisTaskPhiFlow.h:191
 AliAnalysisTaskPhiFlow.h:192
 AliAnalysisTaskPhiFlow.h:193
 AliAnalysisTaskPhiFlow.h:194
 AliAnalysisTaskPhiFlow.h:195
 AliAnalysisTaskPhiFlow.h:196
 AliAnalysisTaskPhiFlow.h:197
 AliAnalysisTaskPhiFlow.h:198
 AliAnalysisTaskPhiFlow.h:199
 AliAnalysisTaskPhiFlow.h:200
 AliAnalysisTaskPhiFlow.h:201
 AliAnalysisTaskPhiFlow.h:202
 AliAnalysisTaskPhiFlow.h:203
 AliAnalysisTaskPhiFlow.h:204
 AliAnalysisTaskPhiFlow.h:205
 AliAnalysisTaskPhiFlow.h:206
 AliAnalysisTaskPhiFlow.h:207
 AliAnalysisTaskPhiFlow.h:208
 AliAnalysisTaskPhiFlow.h:209
 AliAnalysisTaskPhiFlow.h:210
 AliAnalysisTaskPhiFlow.h:211
 AliAnalysisTaskPhiFlow.h:212
 AliAnalysisTaskPhiFlow.h:213
 AliAnalysisTaskPhiFlow.h:214
 AliAnalysisTaskPhiFlow.h:215
 AliAnalysisTaskPhiFlow.h:216
 AliAnalysisTaskPhiFlow.h:217
 AliAnalysisTaskPhiFlow.h:218
 AliAnalysisTaskPhiFlow.h:219
 AliAnalysisTaskPhiFlow.h:220
 AliAnalysisTaskPhiFlow.h:221
 AliAnalysisTaskPhiFlow.h:222
 AliAnalysisTaskPhiFlow.h:223
 AliAnalysisTaskPhiFlow.h:224
 AliAnalysisTaskPhiFlow.h:225
 AliAnalysisTaskPhiFlow.h:226
 AliAnalysisTaskPhiFlow.h:227
 AliAnalysisTaskPhiFlow.h:228
 AliAnalysisTaskPhiFlow.h:229
 AliAnalysisTaskPhiFlow.h:230
 AliAnalysisTaskPhiFlow.h:231
 AliAnalysisTaskPhiFlow.h:232
 AliAnalysisTaskPhiFlow.h:233
 AliAnalysisTaskPhiFlow.h:234
 AliAnalysisTaskPhiFlow.h:235
 AliAnalysisTaskPhiFlow.h:236
 AliAnalysisTaskPhiFlow.h:237
 AliAnalysisTaskPhiFlow.h:238
 AliAnalysisTaskPhiFlow.h:239