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

/************************************************* 
 * Flow analysis with cumulants. In this class   *
 * cumulants are calculated by making use of the *
 * formalism of generating functions proposed by *
 * Ollitrault et al.                             *
 *                                               * 
 *      Author: Ante Bilandzic                   * 
 *              (abilandzic@gmail.com)           *
 *************************************************/ 

#ifndef ALIFLOWANALYSISWITHCUMULANTS_H
#define ALIFLOWANALYSISWITHCUMULANTS_H

#include "TMatrixD.h"

class TList;
class TFile;

class TH1D;
class TH1F;
class TProfile;
class TProfile2D;
class TProfile3D;
class TDirectoryFile;

class AliFlowEventSimple;
class AliFlowTrackSimple;
class AliFlowCommonConstants; 
class AliFlowCommonHist;
class AliFlowCommonHistResults;
class AliFlowVector;

//================================================================================================================

class AliFlowAnalysisWithCumulants{
 public:
  AliFlowAnalysisWithCumulants();
  virtual ~AliFlowAnalysisWithCumulants(); 
  // 0.) Methods called in the constructor:
    virtual void InitializeArrays();
  // 1.) Method Init() and methods called within Init():
  virtual void Init();
    virtual void CrossCheckSettings();
    virtual void AccessConstants();
    virtual void BookAndNestAllLists();
    virtual void BookProfileHoldingSettings();
    virtual void BookCommonHistograms();
    virtual void BookAndFillWeightsHistograms();
    virtual void BookEverythingForReferenceFlow();
    virtual void BookEverythingForDiffFlow();
    virtual void StoreReferenceFlowFlags();
    virtual void StoreDiffFlowFlags();  
    virtual void BookEverythingForTuning(); 
    virtual void BookEverythingForCalculationVsMultiplicity(); 
  // 2.) Method Make() and methods called within Make():
  virtual void Make(AliFlowEventSimple* anEvent);
     virtual void CheckPointersUsedInMake(); 
     virtual void FillGeneratingFunctionForReferenceFlow(AliFlowEventSimple *anEvent);
     virtual void FillQvectorComponents(AliFlowEventSimple *anEvent);    
     virtual void FillGeneratingFunctionForDiffFlow(AliFlowEventSimple *anEvent); 
     virtual void FillGeneratingFunctionsForDifferentTuningParameters(AliFlowEventSimple *anEvent); 
  // 3.) Method Finish() and methods called within Finish():
  virtual void Finish();  
    virtual void CheckPointersUsedInFinish(); 
    virtual void AccessSettings();
    virtual void GetAvMultAndNoOfEvts();
    virtual void CalculateCumulantsForReferenceFlow();
    virtual void CalculateReferenceFlow();
    virtual void CalculateReferenceFlowError();
    virtual void FillCommonHistResultsForReferenceFlow();
    virtual void CalculateCumulantsForDiffFlow(TString rpPoi,TString ptEta);
    virtual void CalculateDifferentialFlow(TString rpPoi,TString ptEta);
    virtual void CalculateDifferentialFlowErrors(TString rpPoi,TString ptEta);
    virtual void FillCommonHistResultsForDifferentialFlow(TString rpPoi);
    virtual void CalculateIntegratedFlow(TString rpPoi); // to be improved (add also possibility to integrate over eta yield)        
    virtual void PrintFinalResults(TString rpPoi);
    virtual void FinalizeTuning();
  // 4.) Method GetOutputHistograms() and method called within it:
  virtual void GetOutputHistograms(TList *outputListHistos);
    virtual void GetPointersForBaseHistograms();
    virtual void GetPointersForCommonControlHistograms();
    virtual void GetPointersForCommonResultsHistograms();
    virtual void GetPointersForReferenceFlowObjects();
    virtual void GetPointersForDiffFlowObjects();
    virtual void GetPointersForTuningObjects();
  virtual void WriteHistograms(TString *outputFileName);
  virtual void WriteHistograms(TString outputFileName);
  virtual void WriteHistograms(TDirectoryFile *outputFileName);
  // 5.) Other methods:   
  //     ...  
  // 6.) Setters and getters:
  //  6.0.) base:
  void SetHistList(TList* const hl) {this->fHistList = hl;}
  TList* GetHistList() const {return this->fHistList;}  
  void SetHistListName(const char *hln) {this->fHistListName->Append(*hln);}; 
  TString *GetHistListName() const {return this->fHistListName;};
  void SetAnalysisSettings(TProfile* const as) {this->fAnalysisSettings = as;};
  TProfile* GetAnalysisSettings() const {return this->fAnalysisSettings;};
  //  6.1.) common:
  void SetCommonHists(AliFlowCommonHist* const ch) {this->fCommonHists = ch;};
  AliFlowCommonHist* GetCommonHists() const {return this->fCommonHists;};
  void SetCommonHistsResults2nd(AliFlowCommonHistResults* const chr2nd) {this->fCommonHistsResults2nd = chr2nd;};
  AliFlowCommonHistResults* GetCommonHistsResults2nd() const {return this->fCommonHistsResults2nd;};
  void SetCommonHistsResults4th(AliFlowCommonHistResults* const chr4th) {this->fCommonHistsResults4th = chr4th;};
  AliFlowCommonHistResults* GetCommonHistsResults4th() const {return this->fCommonHistsResults4th;};
  void SetCommonHistsResults6th(AliFlowCommonHistResults* const chr6th) {this->fCommonHistsResults6th = chr6th;};
  AliFlowCommonHistResults* GetCommonHistsResults6th() const {return this->fCommonHistsResults6th;};
  void SetCommonHistsResults8th(AliFlowCommonHistResults* const chr8th) {this->fCommonHistsResults8th = chr8th;};
  AliFlowCommonHistResults* GetCommonHistsResults8th() const {return this->fCommonHistsResults8th;};   
  void SetHarmonic(Int_t const harmonic) {this->fHarmonic = harmonic;};
  Int_t GetHarmonic() const {return this->fHarmonic;};   
  void SetMultiple(Int_t const multiple) {this->fMultiple = multiple;};
  Int_t GetMultiple() const {return this->fMultiple;};    
  void SetR0(Double_t const r0) {this->fR0 = r0;};
  Double_t GetR0() const {return this->fR0;}; 
  void SetPrintFinalResults(Bool_t const printOrNot, Int_t const i) {this->fPrintFinalResults[i] = printOrNot;};
  Bool_t GetPrintFinalResults(Int_t i) const {return this->fPrintFinalResults[i];};   
  //  6.2.0.) particle weights:
  void SetWeightsList(TList* const wlist) {this->fWeightsList = (TList*)wlist->Clone();}
  TList* GetWeightsList() const {return this->fWeightsList;}  
  void SetUsePhiWeights(Bool_t const uPhiW) {this->fUsePhiWeights = uPhiW;};
  Bool_t GetUsePhiWeights() const {return this->fUsePhiWeights;};
  void SetUsePtWeights(Bool_t const uPtW) {this->fUsePtWeights = uPtW;};
  Bool_t GetUsePtWeights() const {return this->fUsePtWeights;};
  void SetUseEtaWeights(Bool_t const uEtaW) {this->fUseEtaWeights = uEtaW;};
  Bool_t GetUseEtaWeights() const {return this->fUseEtaWeights;};
  void SetPhiWeights(TH1F* const histPhiWeights) {this->fPhiWeights = histPhiWeights;};
  TH1F* GetPhiWeights() const {return this->fPhiWeights;};
  void SetPtWeights(TH1D* const histPtWeights) {this->fPtWeights = histPtWeights;};
  TH1D* GetPtWeights() const {return this->fPtWeights;};
  void SetEtaWeights(TH1D* const histEtaWeights) {this->fEtaWeights = histEtaWeights;};
  TH1D* GetEtaWeights() const {return this->fEtaWeights;};
  //  6.2.1.) event weights:
  void SetMultiplicityWeight(const char *multiplicityWeight) {*this->fMultiplicityWeight = multiplicityWeight;};  
  //  6.3.) reference flow:
  void SetReferenceFlowFlags(TProfile* const rff) {this->fReferenceFlowFlags = rff;};
  TProfile* GetReferenceFlowFlags() const {return this->fReferenceFlowFlags;};  
  void SetCalculateVsMultiplicity(Bool_t const ecvm) {this->fCalculateVsMultiplicity = ecvm;};
  Bool_t GetCalculateVsMultiplicity() const {return this->fCalculateVsMultiplicity;};  
  void SetnBinsMult(Int_t const nbm) {this->fnBinsMult = nbm;};
  Int_t GetnBinsMult() const {return this->fnBinsMult;};  
  void SetMinMult(Double_t const minm) {this->fMinMult = minm;};
  Double_t GetMinMult() const {return this->fMinMult;};
  void SetMaxMult(Double_t const maxm) {this->fMaxMult = maxm;};
  Double_t GetMaxMult() const {return this->fMaxMult;};
  //  6.3.0.) profiles:
  void SetReferenceFlowGenFun(TProfile2D* const rfgf) {this->fReferenceFlowGenFun = rfgf;};
  TProfile2D* GetReferenceFlowGenFun() const {return this->fReferenceFlowGenFun;};  
  void SetQvectorComponents(TProfile* const qvc) {this->fQvectorComponents = qvc;};
  TProfile* GetQvectorComponents() const {return this->fQvectorComponents;};
  void SetAverageOfSquaredWeight(TProfile* const aosw) {this->fAverageOfSquaredWeight = aosw;};
  TProfile* GetSumOfSquaredWeight() const {return this->fAverageOfSquaredWeight;}; 
  void SetReferenceFlowGenFunVsM(TProfile3D* const rfgfVsM) {this->fReferenceFlowGenFunVsM = rfgfVsM;};
  TProfile3D* GetReferenceFlowGenFunVsM() const {return this->fReferenceFlowGenFunVsM;};  
  void SetQvectorComponentsVsM(TProfile2D* const qvcVsM) {this->fQvectorComponentsVsM = qvcVsM;};
  TProfile2D* GetQvectorComponentsVsM() const {return this->fQvectorComponentsVsM;};
  void SetAverageOfSquaredWeightVsM(TProfile2D* const aoswVsM) {this->fAverageOfSquaredWeightVsM = aoswVsM;};
  TProfile2D* GetSumOfSquaredWeightVsM() const {return this->fAverageOfSquaredWeightVsM;}; 
  void SetAvMVsM(TProfile* const amVsM) {this->fAvMVsM = amVsM;};
  TProfile* GetAvMVsM() const {return this->fAvMVsM;}; 
  //  6.3.1.) results: 
  void SetReferenceFlowCumulants(TH1D* const rfc) {this->fReferenceFlowCumulants = rfc;};
  TH1D* GetReferenceFlowCumulants() const {return this->fReferenceFlowCumulants;}; 
  void SetReferenceFlow(TH1D* const rf) {this->fReferenceFlow = rf;};
  TH1D* GetReferenceFlow() const {return this->fReferenceFlow;}; 
  void SetChi(TH1D* const c) {this->fChi = c;};
  TH1D* GetChi() const {return this->fChi;}; 
  void SetReferenceFlowCumulantsVsM(TH1D* const rfcVsM, Int_t co) {this->fReferenceFlowCumulantsVsM[co] = rfcVsM;};
  TH1D* GetReferenceFlowCumulantsVsM(Int_t co) const {return this->fReferenceFlowCumulantsVsM[co];};   
  // 6.4.) differential flow:
  void SetDiffFlowFlags(TProfile* const dff) {this->fDiffFlowFlags = dff;};
  TProfile* GetDiffFlowFlags() const {return this->fDiffFlowFlags;};
  //  6.4.0.) profiles: 
  void SetDiffFlowGenFun(TProfile3D* const dfgf, Int_t const ri, Int_t const rp, Int_t const pe) {this->fDiffFlowGenFun[ri][rp][pe] = dfgf;};
  TProfile3D* GetDiffFlowGenFun(Int_t const ri, Int_t const rp, Int_t const pe) const {return this->fDiffFlowGenFun[ri][rp][pe];};
  void SetNoOfParticlesInBin(TProfile* const nopib, Int_t const rp, Int_t const pe) {this->fNoOfParticlesInBin[rp][pe] = nopib;};
  TProfile* GetNoOfParticlesInBin(Int_t const rp, Int_t const pe) const {return this->fNoOfParticlesInBin[rp][pe];};
  //  6.4.1.) results:
  void SetDiffFlowCumulants(TH1D* const dfc, Int_t const rp, Int_t const pe, Int_t const co) {this->fDiffFlowCumulants[rp][pe][co] = dfc;};
  TH1D* GetDiffFlowCumulants(Int_t const rp, Int_t const pe, Int_t const co) const {return this->fDiffFlowCumulants[rp][pe][co];};
  void SetDiffFlow(TH1D* const df, Int_t const rp, Int_t const pe, Int_t const co) {this->fDiffFlow[rp][pe][co] = df;};
  TH1D* GetDiffFlow(Int_t const rp, Int_t const pe, Int_t const co) const {return this->fDiffFlow[rp][pe][co];};
  // 6.x.) Tuning the interpolating parameter r0 and using cutoff at different order in series:
  void SetTuningFlags(TProfile* const tf) {this->fTuningFlags = tf;};
  TProfile* GetTuningFlags() const {return this->fTuningFlags;};
  void SetTuneParameters(Bool_t const tp) {this->fTuneParameters = tp;};
  Bool_t GetTuneParameters() const {return this->fTuneParameters;};  
  void SetTuningR0(Double_t const tr0, Int_t const r) {this->fTuningR0[r] = tr0;};
  Double_t GetTuningR0(Int_t const r) const {return this->fTuningR0[r];};
  //  6.x.0.) profiles:
  void SetTuningGenFun(TProfile2D* const tgf, Int_t const r, Int_t const pq) {this->fTuningGenFun[r][pq] = tgf;};
  TProfile2D* GetTuningGenFun(Int_t const r, Int_t const pq) const {return this->fTuningGenFun[r][pq];};
  void SetTuningAvM(TProfile* const tam) {this->fTuningAvM = tam;};
  TProfile* GetTuningAvM() const {return this->fTuningAvM;};
  //  6.x.1.) results:  
  void SetTuningCumulants(TH1D* const tc, Int_t const r, Int_t const pq) {this->fTuningCumulants[r][pq] = tc;};
  TH1D* GetTuningCumulants(Int_t const r, Int_t const pq) const {return this->fTuningCumulants[r][pq];};
  void SetTuningFlow(TH1D* const tf, Int_t const r, Int_t const pq) {this->fTuningFlow[r][pq] = tf;};
  TH1D* GetTuningFlow(Int_t const r, Int_t const pq) const {return this->fTuningFlow[r][pq];};
  
 private:
  AliFlowAnalysisWithCumulants(const AliFlowAnalysisWithCumulants& afawc);
  AliFlowAnalysisWithCumulants& operator=(const AliFlowAnalysisWithCumulants& afawc); 
  // 0.) Base:
  TList *fHistList; // base list to hold all output objects
  TString *fHistListName; // name of base list  
  TProfile *fAnalysisSettings; // profile to hold analysis settings  
  // 1.) Common:
  AliFlowCommonHist *fCommonHists; // common control histograms (filled only with events with 3 or more tracks for 3-p correlators) 
  AliFlowCommonHistResults *fCommonHistsResults2nd; // common result histograms for 2nd order cumulant
  AliFlowCommonHistResults *fCommonHistsResults4th; // common result histograms for 4th order cumulant 
  AliFlowCommonHistResults *fCommonHistsResults6th; // common result histograms for 6th order cumulant
  AliFlowCommonHistResults *fCommonHistsResults8th; // common result histograms for 8th order cumulant
  Int_t fnBinsPhi; // number of phi bins
  Double_t fPhiMin; // minimum phi   
  Double_t fPhiMax; // maximum phi 
  Double_t fPhiBinWidth; // bin width for phi histograms  
  Int_t fnBinsPt; // number of pt bins
  Double_t fPtMin; // minimum pt   
  Double_t fPtMax; // maximum pt  
  Double_t fPtBinWidth; // bin width for pt histograms  
  Int_t fnBinsEta; // number of eta bins
  Double_t fEtaMin; // minimum eta   
  Double_t fEtaMax; // maximum eta
  Double_t fEtaBinWidth; // bin width for eta histograms
  Int_t fHarmonic; // harmonic   
  Int_t fMultiple; // the multiple m in p=m*n, where n is harmonic (relevant for differential flow) 
  Double_t fR0; // r_{0} parameter
  Bool_t fPrintFinalResults[3]; // print on the screen the final results [0=RF,1=RP,2=POI]
  // 2a.) Particle weights:
  TList *fWeightsList; // list to hold all histograms with particle weights: fPhiWeights, fPtWeights and fEtaWeights
  Bool_t fUsePhiWeights; // use phi weights
  Bool_t fUsePtWeights; // use pt weights
  Bool_t fUseEtaWeights; // use eta weights
  TH1F *fPhiWeights; // histogram holding phi weights
  TH1D *fPtWeights; // histogram holding phi weights
  TH1D *fEtaWeights; // histogram holding phi weights 
  // 2b.) Event weights:
  TString *fMultiplicityWeight; // event-by-event weight for reference flow generating function (can be "unit" or "multiplicity")
  // 3.) Reference flow:       
  //  3a.) lists:
  TList *fReferenceFlowList; // list to hold all histograms and profiles relevant for reference flow 
  TList *fReferenceFlowProfiles; // list to hold all profiles relevant for reference flow
  TList *fReferenceFlowResults; // list to hold all histograms with final results relevant for reference flow  
  //  3b.) flags:
  TProfile *fReferenceFlowFlags; // profile to hold all flags for reference flow
  Bool_t fCalculateVsMultiplicity; // perform flow analysis independently for each multiplicity bin 
  Int_t fnBinsMult; // number of multiplicity bins for flow analysis versus multiplicity  
  Double_t fMinMult; // minimal multiplicity for flow analysis versus multiplicity  
  Double_t fMaxMult; // maximal multiplicity for flow analysis versus multiplicity  
  //  3c.) event-by-event quantities:
  TMatrixD *fGEBE; // reference flow generating function only for current event      
  //  3d.) profiles:
  TProfile2D *fReferenceFlowGenFun; // all-event average of the generating function used to calculate reference flow 
  TProfile *fQvectorComponents; // averages of Q-vector components (1st bin: <Q_x>, 2nd bin: <Q_y>, 3rd bin: <(Q_x)^2>, 4th bin: <(Q_y)^2>)
  TProfile *fAverageOfSquaredWeight; // <<w^2>>, where w = wPhi*wPt*wEta       
  TProfile3D *fReferenceFlowGenFunVsM; // all-event average of the generating function used to calculate reference flow vs multiplicity
  TProfile2D *fQvectorComponentsVsM; // averages of Q-vector components (1st bin: <Q_x>, 2nd bin: <Q_y>, 3rd bin: <(Q_x)^2>, 4th bin: <(Q_y)^2>) vs multiplicity
  TProfile2D *fAverageOfSquaredWeightVsM; // <<w^2>>, where w = wPhi*wPt*wEta vs multiplicity         
  TProfile *fAvMVsM; // <M> vs multiplicity bin         
  //  3e.) results:
  Double_t fAvM; // average multiplicity
  Int_t fnEvts; // number of events
  TH1D *fReferenceFlowCumulants; // final results for isotropic cumulants for reference flow   
  TH1D *fReferenceFlow; // final results for reference flow  
  TH1D *fChi; // final results for resolution 
  TH1D *fReferenceFlowCumulantsVsM[4]; // final results for isotropic cumulants for reference flow versus multiplicity     
  // 4.) Differential flow:       
  //  4a.) lists:
  TList *fDiffFlowList; // list to hold all histograms and profiles relevant for differential flow 
  TList *fDiffFlowProfiles; // list to hold all profiles relevant for differential flow
  TList *fDiffFlowResults; // list to hold all histograms with final results relevant for differential flow  
  //  4b.) flags:
  TProfile *fDiffFlowFlags; // profile to hold all flags for reference flow
  //  4c.) profiles:
  TProfile3D *fDiffFlowGenFun[2][2][2]; // all-event avarage of generating function used for differential flow [0=Re,1=Im][0=RP,1=POI][0=pt,1=eta]  
  TProfile *fNoOfParticlesInBin[2][2]; // number of particles in pt/eta bin for RPs/POIs [0=RP,1=POI][0=pt,1=eta]
  //  4d.) results:
  TH1D *fDiffFlowCumulants[2][2][4]; // isotropic differential flow cumulants [0=RP,1=POI][0=pt,1=eta][cumulant order]
  TH1D *fDiffFlow[2][2][4]; // differential flow [0=RP,1=POI][0=pt,1=eta][cumulant order]
  // x.) Tuning the interpolating parameter r0 and using cutoff at different order in series:
  //  xa.) lists:
  TList *fTuningList; // list to hold all histograms and profiles relevant for tuning 
  TList *fTuningProfiles; // list to hold all profiles relevant for tuning
  TList *fTuningResults; // list to hold all histograms with final results relevant for tuning  
  //  xb.) flags:
  TProfile *fTuningFlags; // profile to hold all flags for tuning
  Bool_t fTuneParameters; // tune r0 and cut series at different order
  Double_t fTuningR0[10]; // different r0 values (at maximum 10 different values allowed)
  //  xc.) profiles:
  TProfile2D *fTuningGenFun[10][5]; // generating function G evaluated for 10 different r0s and 5 different sets of (pmax,qmax)
  TProfile *fTuningAvM; // average multiplicities for events with nRPs >= cuttof 
  //  xd.) results:  
  TH1D *fTuningCumulants[10][5]; // isotropic cumulants for reference flow for 10 different r0s and 5 different sets of (pmax,qmax)
  TH1D *fTuningFlow[10][5]; // reference flow for 10 different r0s and 5 different sets of (pmax,qmax) 
    
  ClassDef(AliFlowAnalysisWithCumulants, 0);

};

//================================================================================================================

#endif





 AliFlowAnalysisWithCumulants.h:1
 AliFlowAnalysisWithCumulants.h:2
 AliFlowAnalysisWithCumulants.h:3
 AliFlowAnalysisWithCumulants.h:4
 AliFlowAnalysisWithCumulants.h:5
 AliFlowAnalysisWithCumulants.h:6
 AliFlowAnalysisWithCumulants.h:7
 AliFlowAnalysisWithCumulants.h:8
 AliFlowAnalysisWithCumulants.h:9
 AliFlowAnalysisWithCumulants.h:10
 AliFlowAnalysisWithCumulants.h:11
 AliFlowAnalysisWithCumulants.h:12
 AliFlowAnalysisWithCumulants.h:13
 AliFlowAnalysisWithCumulants.h:14
 AliFlowAnalysisWithCumulants.h:15
 AliFlowAnalysisWithCumulants.h:16
 AliFlowAnalysisWithCumulants.h:17
 AliFlowAnalysisWithCumulants.h:18
 AliFlowAnalysisWithCumulants.h:19
 AliFlowAnalysisWithCumulants.h:20
 AliFlowAnalysisWithCumulants.h:21
 AliFlowAnalysisWithCumulants.h:22
 AliFlowAnalysisWithCumulants.h:23
 AliFlowAnalysisWithCumulants.h:24
 AliFlowAnalysisWithCumulants.h:25
 AliFlowAnalysisWithCumulants.h:26
 AliFlowAnalysisWithCumulants.h:27
 AliFlowAnalysisWithCumulants.h:28
 AliFlowAnalysisWithCumulants.h:29
 AliFlowAnalysisWithCumulants.h:30
 AliFlowAnalysisWithCumulants.h:31
 AliFlowAnalysisWithCumulants.h:32
 AliFlowAnalysisWithCumulants.h:33
 AliFlowAnalysisWithCumulants.h:34
 AliFlowAnalysisWithCumulants.h:35
 AliFlowAnalysisWithCumulants.h:36
 AliFlowAnalysisWithCumulants.h:37
 AliFlowAnalysisWithCumulants.h:38
 AliFlowAnalysisWithCumulants.h:39
 AliFlowAnalysisWithCumulants.h:40
 AliFlowAnalysisWithCumulants.h:41
 AliFlowAnalysisWithCumulants.h:42
 AliFlowAnalysisWithCumulants.h:43
 AliFlowAnalysisWithCumulants.h:44
 AliFlowAnalysisWithCumulants.h:45
 AliFlowAnalysisWithCumulants.h:46
 AliFlowAnalysisWithCumulants.h:47
 AliFlowAnalysisWithCumulants.h:48
 AliFlowAnalysisWithCumulants.h:49
 AliFlowAnalysisWithCumulants.h:50
 AliFlowAnalysisWithCumulants.h:51
 AliFlowAnalysisWithCumulants.h:52
 AliFlowAnalysisWithCumulants.h:53
 AliFlowAnalysisWithCumulants.h:54
 AliFlowAnalysisWithCumulants.h:55
 AliFlowAnalysisWithCumulants.h:56
 AliFlowAnalysisWithCumulants.h:57
 AliFlowAnalysisWithCumulants.h:58
 AliFlowAnalysisWithCumulants.h:59
 AliFlowAnalysisWithCumulants.h:60
 AliFlowAnalysisWithCumulants.h:61
 AliFlowAnalysisWithCumulants.h:62
 AliFlowAnalysisWithCumulants.h:63
 AliFlowAnalysisWithCumulants.h:64
 AliFlowAnalysisWithCumulants.h:65
 AliFlowAnalysisWithCumulants.h:66
 AliFlowAnalysisWithCumulants.h:67
 AliFlowAnalysisWithCumulants.h:68
 AliFlowAnalysisWithCumulants.h:69
 AliFlowAnalysisWithCumulants.h:70
 AliFlowAnalysisWithCumulants.h:71
 AliFlowAnalysisWithCumulants.h:72
 AliFlowAnalysisWithCumulants.h:73
 AliFlowAnalysisWithCumulants.h:74
 AliFlowAnalysisWithCumulants.h:75
 AliFlowAnalysisWithCumulants.h:76
 AliFlowAnalysisWithCumulants.h:77
 AliFlowAnalysisWithCumulants.h:78
 AliFlowAnalysisWithCumulants.h:79
 AliFlowAnalysisWithCumulants.h:80
 AliFlowAnalysisWithCumulants.h:81
 AliFlowAnalysisWithCumulants.h:82
 AliFlowAnalysisWithCumulants.h:83
 AliFlowAnalysisWithCumulants.h:84
 AliFlowAnalysisWithCumulants.h:85
 AliFlowAnalysisWithCumulants.h:86
 AliFlowAnalysisWithCumulants.h:87
 AliFlowAnalysisWithCumulants.h:88
 AliFlowAnalysisWithCumulants.h:89
 AliFlowAnalysisWithCumulants.h:90
 AliFlowAnalysisWithCumulants.h:91
 AliFlowAnalysisWithCumulants.h:92
 AliFlowAnalysisWithCumulants.h:93
 AliFlowAnalysisWithCumulants.h:94
 AliFlowAnalysisWithCumulants.h:95
 AliFlowAnalysisWithCumulants.h:96
 AliFlowAnalysisWithCumulants.h:97
 AliFlowAnalysisWithCumulants.h:98
 AliFlowAnalysisWithCumulants.h:99
 AliFlowAnalysisWithCumulants.h:100
 AliFlowAnalysisWithCumulants.h:101
 AliFlowAnalysisWithCumulants.h:102
 AliFlowAnalysisWithCumulants.h:103
 AliFlowAnalysisWithCumulants.h:104
 AliFlowAnalysisWithCumulants.h:105
 AliFlowAnalysisWithCumulants.h:106
 AliFlowAnalysisWithCumulants.h:107
 AliFlowAnalysisWithCumulants.h:108
 AliFlowAnalysisWithCumulants.h:109
 AliFlowAnalysisWithCumulants.h:110
 AliFlowAnalysisWithCumulants.h:111
 AliFlowAnalysisWithCumulants.h:112
 AliFlowAnalysisWithCumulants.h:113
 AliFlowAnalysisWithCumulants.h:114
 AliFlowAnalysisWithCumulants.h:115
 AliFlowAnalysisWithCumulants.h:116
 AliFlowAnalysisWithCumulants.h:117
 AliFlowAnalysisWithCumulants.h:118
 AliFlowAnalysisWithCumulants.h:119
 AliFlowAnalysisWithCumulants.h:120
 AliFlowAnalysisWithCumulants.h:121
 AliFlowAnalysisWithCumulants.h:122
 AliFlowAnalysisWithCumulants.h:123
 AliFlowAnalysisWithCumulants.h:124
 AliFlowAnalysisWithCumulants.h:125
 AliFlowAnalysisWithCumulants.h:126
 AliFlowAnalysisWithCumulants.h:127
 AliFlowAnalysisWithCumulants.h:128
 AliFlowAnalysisWithCumulants.h:129
 AliFlowAnalysisWithCumulants.h:130
 AliFlowAnalysisWithCumulants.h:131
 AliFlowAnalysisWithCumulants.h:132
 AliFlowAnalysisWithCumulants.h:133
 AliFlowAnalysisWithCumulants.h:134
 AliFlowAnalysisWithCumulants.h:135
 AliFlowAnalysisWithCumulants.h:136
 AliFlowAnalysisWithCumulants.h:137
 AliFlowAnalysisWithCumulants.h:138
 AliFlowAnalysisWithCumulants.h:139
 AliFlowAnalysisWithCumulants.h:140
 AliFlowAnalysisWithCumulants.h:141
 AliFlowAnalysisWithCumulants.h:142
 AliFlowAnalysisWithCumulants.h:143
 AliFlowAnalysisWithCumulants.h:144
 AliFlowAnalysisWithCumulants.h:145
 AliFlowAnalysisWithCumulants.h:146
 AliFlowAnalysisWithCumulants.h:147
 AliFlowAnalysisWithCumulants.h:148
 AliFlowAnalysisWithCumulants.h:149
 AliFlowAnalysisWithCumulants.h:150
 AliFlowAnalysisWithCumulants.h:151
 AliFlowAnalysisWithCumulants.h:152
 AliFlowAnalysisWithCumulants.h:153
 AliFlowAnalysisWithCumulants.h:154
 AliFlowAnalysisWithCumulants.h:155
 AliFlowAnalysisWithCumulants.h:156
 AliFlowAnalysisWithCumulants.h:157
 AliFlowAnalysisWithCumulants.h:158
 AliFlowAnalysisWithCumulants.h:159
 AliFlowAnalysisWithCumulants.h:160
 AliFlowAnalysisWithCumulants.h:161
 AliFlowAnalysisWithCumulants.h:162
 AliFlowAnalysisWithCumulants.h:163
 AliFlowAnalysisWithCumulants.h:164
 AliFlowAnalysisWithCumulants.h:165
 AliFlowAnalysisWithCumulants.h:166
 AliFlowAnalysisWithCumulants.h:167
 AliFlowAnalysisWithCumulants.h:168
 AliFlowAnalysisWithCumulants.h:169
 AliFlowAnalysisWithCumulants.h:170
 AliFlowAnalysisWithCumulants.h:171
 AliFlowAnalysisWithCumulants.h:172
 AliFlowAnalysisWithCumulants.h:173
 AliFlowAnalysisWithCumulants.h:174
 AliFlowAnalysisWithCumulants.h:175
 AliFlowAnalysisWithCumulants.h:176
 AliFlowAnalysisWithCumulants.h:177
 AliFlowAnalysisWithCumulants.h:178
 AliFlowAnalysisWithCumulants.h:179
 AliFlowAnalysisWithCumulants.h:180
 AliFlowAnalysisWithCumulants.h:181
 AliFlowAnalysisWithCumulants.h:182
 AliFlowAnalysisWithCumulants.h:183
 AliFlowAnalysisWithCumulants.h:184
 AliFlowAnalysisWithCumulants.h:185
 AliFlowAnalysisWithCumulants.h:186
 AliFlowAnalysisWithCumulants.h:187
 AliFlowAnalysisWithCumulants.h:188
 AliFlowAnalysisWithCumulants.h:189
 AliFlowAnalysisWithCumulants.h:190
 AliFlowAnalysisWithCumulants.h:191
 AliFlowAnalysisWithCumulants.h:192
 AliFlowAnalysisWithCumulants.h:193
 AliFlowAnalysisWithCumulants.h:194
 AliFlowAnalysisWithCumulants.h:195
 AliFlowAnalysisWithCumulants.h:196
 AliFlowAnalysisWithCumulants.h:197
 AliFlowAnalysisWithCumulants.h:198
 AliFlowAnalysisWithCumulants.h:199
 AliFlowAnalysisWithCumulants.h:200
 AliFlowAnalysisWithCumulants.h:201
 AliFlowAnalysisWithCumulants.h:202
 AliFlowAnalysisWithCumulants.h:203
 AliFlowAnalysisWithCumulants.h:204
 AliFlowAnalysisWithCumulants.h:205
 AliFlowAnalysisWithCumulants.h:206
 AliFlowAnalysisWithCumulants.h:207
 AliFlowAnalysisWithCumulants.h:208
 AliFlowAnalysisWithCumulants.h:209
 AliFlowAnalysisWithCumulants.h:210
 AliFlowAnalysisWithCumulants.h:211
 AliFlowAnalysisWithCumulants.h:212
 AliFlowAnalysisWithCumulants.h:213
 AliFlowAnalysisWithCumulants.h:214
 AliFlowAnalysisWithCumulants.h:215
 AliFlowAnalysisWithCumulants.h:216
 AliFlowAnalysisWithCumulants.h:217
 AliFlowAnalysisWithCumulants.h:218
 AliFlowAnalysisWithCumulants.h:219
 AliFlowAnalysisWithCumulants.h:220
 AliFlowAnalysisWithCumulants.h:221
 AliFlowAnalysisWithCumulants.h:222
 AliFlowAnalysisWithCumulants.h:223
 AliFlowAnalysisWithCumulants.h:224
 AliFlowAnalysisWithCumulants.h:225
 AliFlowAnalysisWithCumulants.h:226
 AliFlowAnalysisWithCumulants.h:227
 AliFlowAnalysisWithCumulants.h:228
 AliFlowAnalysisWithCumulants.h:229
 AliFlowAnalysisWithCumulants.h:230
 AliFlowAnalysisWithCumulants.h:231
 AliFlowAnalysisWithCumulants.h:232
 AliFlowAnalysisWithCumulants.h:233
 AliFlowAnalysisWithCumulants.h:234
 AliFlowAnalysisWithCumulants.h:235
 AliFlowAnalysisWithCumulants.h:236
 AliFlowAnalysisWithCumulants.h:237
 AliFlowAnalysisWithCumulants.h:238
 AliFlowAnalysisWithCumulants.h:239
 AliFlowAnalysisWithCumulants.h:240
 AliFlowAnalysisWithCumulants.h:241
 AliFlowAnalysisWithCumulants.h:242
 AliFlowAnalysisWithCumulants.h:243
 AliFlowAnalysisWithCumulants.h:244
 AliFlowAnalysisWithCumulants.h:245
 AliFlowAnalysisWithCumulants.h:246
 AliFlowAnalysisWithCumulants.h:247
 AliFlowAnalysisWithCumulants.h:248
 AliFlowAnalysisWithCumulants.h:249
 AliFlowAnalysisWithCumulants.h:250
 AliFlowAnalysisWithCumulants.h:251
 AliFlowAnalysisWithCumulants.h:252
 AliFlowAnalysisWithCumulants.h:253
 AliFlowAnalysisWithCumulants.h:254
 AliFlowAnalysisWithCumulants.h:255
 AliFlowAnalysisWithCumulants.h:256
 AliFlowAnalysisWithCumulants.h:257
 AliFlowAnalysisWithCumulants.h:258
 AliFlowAnalysisWithCumulants.h:259
 AliFlowAnalysisWithCumulants.h:260
 AliFlowAnalysisWithCumulants.h:261
 AliFlowAnalysisWithCumulants.h:262
 AliFlowAnalysisWithCumulants.h:263
 AliFlowAnalysisWithCumulants.h:264
 AliFlowAnalysisWithCumulants.h:265
 AliFlowAnalysisWithCumulants.h:266
 AliFlowAnalysisWithCumulants.h:267
 AliFlowAnalysisWithCumulants.h:268
 AliFlowAnalysisWithCumulants.h:269
 AliFlowAnalysisWithCumulants.h:270
 AliFlowAnalysisWithCumulants.h:271
 AliFlowAnalysisWithCumulants.h:272
 AliFlowAnalysisWithCumulants.h:273
 AliFlowAnalysisWithCumulants.h:274
 AliFlowAnalysisWithCumulants.h:275
 AliFlowAnalysisWithCumulants.h:276
 AliFlowAnalysisWithCumulants.h:277
 AliFlowAnalysisWithCumulants.h:278
 AliFlowAnalysisWithCumulants.h:279
 AliFlowAnalysisWithCumulants.h:280
 AliFlowAnalysisWithCumulants.h:281
 AliFlowAnalysisWithCumulants.h:282
 AliFlowAnalysisWithCumulants.h:283
 AliFlowAnalysisWithCumulants.h:284
 AliFlowAnalysisWithCumulants.h:285
 AliFlowAnalysisWithCumulants.h:286
 AliFlowAnalysisWithCumulants.h:287
 AliFlowAnalysisWithCumulants.h:288
 AliFlowAnalysisWithCumulants.h:289
 AliFlowAnalysisWithCumulants.h:290
 AliFlowAnalysisWithCumulants.h:291
 AliFlowAnalysisWithCumulants.h:292
 AliFlowAnalysisWithCumulants.h:293
 AliFlowAnalysisWithCumulants.h:294
 AliFlowAnalysisWithCumulants.h:295
 AliFlowAnalysisWithCumulants.h:296
 AliFlowAnalysisWithCumulants.h:297
 AliFlowAnalysisWithCumulants.h:298
 AliFlowAnalysisWithCumulants.h:299
 AliFlowAnalysisWithCumulants.h:300
 AliFlowAnalysisWithCumulants.h:301
 AliFlowAnalysisWithCumulants.h:302
 AliFlowAnalysisWithCumulants.h:303
 AliFlowAnalysisWithCumulants.h:304
 AliFlowAnalysisWithCumulants.h:305
 AliFlowAnalysisWithCumulants.h:306
 AliFlowAnalysisWithCumulants.h:307
 AliFlowAnalysisWithCumulants.h:308
 AliFlowAnalysisWithCumulants.h:309
 AliFlowAnalysisWithCumulants.h:310
 AliFlowAnalysisWithCumulants.h:311
 AliFlowAnalysisWithCumulants.h:312
 AliFlowAnalysisWithCumulants.h:313
 AliFlowAnalysisWithCumulants.h:314