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

 /************************************ 
 * flow analysis with multi-particle *
 *           correlations            * 
 *                                   * 
 * author: Ante Bilandzic            * 
 *        (abilandzic@gmail.com)     *
 ************************************/ 

#ifndef ALIFLOWANALYSISWITHMULTIPARTICLECORRELATIONS_H
#define ALIFLOWANALYSISWITHMULTIPARTICLECORRELATIONS_H

#include "TH1D.h"
#include "TH2D.h"
#include "TProfile.h"
#include "TProfile2D.h"
#include "TFile.h"
#include "TComplex.h"
#include "TDirectoryFile.h"
#include "Riostream.h"
#include "TRandom3.h"
#include "TSystem.h"
#include "TGraphErrors.h"
#include "TStopwatch.h"
#include "AliFlowEventSimple.h"
#include "AliFlowTrackSimple.h"

class AliFlowAnalysisWithMultiparticleCorrelations{
 public:
  AliFlowAnalysisWithMultiparticleCorrelations();
  virtual ~AliFlowAnalysisWithMultiparticleCorrelations(); 
  // Member functions are grouped as:
  // 0.) Methods called in the constructor;
  // 1.) Method Init() and methods called in it (!);
  // 2.) Method Make() and methods called in it;
  // 3.) Method Finish() and methods called in it;
  // 4.) Method GetOutputHistograms() and methods called in it;
  // 5.) Setters and getters;
  // 6.) The rest.

  // 0.) Methods called in the constructor:
  virtual void InitializeArraysForControlHistograms(); 
  virtual void InitializeArraysForQvector(); 
  virtual void InitializeArraysForCorrelations(); 
  virtual void InitializeArraysForEbECumulants();
  virtual void InitializeArraysForWeights();
  virtual void InitializeArraysForQcumulants();
  virtual void InitializeArraysForDiffCorrelations(); 
  virtual void InitializeArraysForNestedLoops(); 

  // 1.) Method Init() and methods called in it (!):
  virtual void Init();
   virtual void CrossCheckSettings();
   virtual void BookAndNestAllLists(); 
   virtual void BookEverythingForBase();
   virtual void BookEverythingForControlHistograms();
   virtual void BookEverythingForQvector();
   virtual void BookEverythingForWeights();
   virtual void BookEverythingForCorrelations();
   virtual void BookEverythingForEbECumulants();
   virtual void BookEverythingForNestedLoops();
   virtual void BookEverythingForStandardCandles();
   virtual void BookEverythingForQcumulants();
   virtual void BookEverythingForDiffCorrelations();
   
  // 2.) Method Make() and methods called in it:
  virtual void Make(AliFlowEventSimple *anEvent);
   virtual Bool_t CrossCheckInternalFlags(AliFlowEventSimple *anEvent);
   virtual void CrossCheckPointersUsedInMake(); 
   virtual void FillControlHistograms(AliFlowEventSimple *anEvent);
   virtual void FillQvector(AliFlowEventSimple *anEvent);
   virtual void CalculateCorrelations(AliFlowEventSimple *anEvent);
   virtual void CalculateDiffCorrelations(AliFlowEventSimple *anEvent);
   virtual void CalculateEbECumulants(AliFlowEventSimple *anEvent);
   virtual void ResetQvector();
   virtual void CrossCheckWithNestedLoops(AliFlowEventSimple *anEvent);
   virtual void CrossCheckDiffWithNestedLoops(AliFlowEventSimple *anEvent);

  // 3.) Method Finish() and methods called in it:
  virtual void Finish();
   virtual void CrossCheckPointersUsedInFinish(); 
   virtual void CalculateStandardCandles();
   virtual void CalculateQcumulants();
   virtual void CalculateReferenceFlow();

  // 4.) Method GetOutputHistograms() and methods called in it: 
  virtual void GetOutputHistograms(TList *histList);
   virtual void GetPointersForControlHistograms(); 
   virtual void GetPointersForQvector(); 
   virtual void GetPointersForCorrelations(); 
   virtual void GetPointersForStandardCandles(); 
   virtual void GetPointersForQcumulants(); 
   virtual void GetPointersForDiffCorrelations(); 

  // 5.) Setters and getters:
  //  5.0.) Base list and internal flags:
  void SetHistList(TList* const hlist) {this->fHistList = hlist;} 
  TList* GetHistList() const {return this->fHistList;} 
  void SetInternalFlagsPro(TProfile* const ifp) {this->fInternalFlagsPro = ifp;};
  TProfile* GetInternalFlagsPro() const {return this->fInternalFlagsPro;}; 
  void SetMinNoRPs(Int_t min) {fUseInternalFlags = kTRUE; this->fMinNoRPs = min;};
  Int_t GetMinNoRPs() const {return this->fMinNoRPs;};
  void SetMaxNoRPs(Int_t max) {fUseInternalFlags = kTRUE; this->fMaxNoRPs = max;};
  Int_t GetMaxNoRPs() const {return this->fMaxNoRPs;};
  void SetExactNoRPs(Int_t exact) {fUseInternalFlags = kTRUE; this->fExactNoRPs = exact;};
  Int_t GetExactNoRPs() const {return this->fExactNoRPs;};
  void SetAnalysisTag(const char *at) {this->fAnalysisTag = TString(at);};
  TString GetAnalysisTag() const {return this->fAnalysisTag;};
  void SetDumpThePoints(Bool_t dtp, Int_t max) {this->fDumpThePoints = dtp; this->fMaxNoEventsPerFile = max;};

  //  5.1.) Control histograms:  
  void SetControlHistogramsList(TList* const chl) {this->fControlHistogramsList = chl;};
  TList* GetControlHistogramsList() const {return this->fControlHistogramsList;} 
  void SetControlHistogramsFlagsPro(TProfile* const chfp) {this->fControlHistogramsFlagsPro = chfp;};
  TProfile* GetControlHistogramsFlagsPro() const {return this->fControlHistogramsFlagsPro;}; 
  void SetFillControlHistograms(Bool_t fch) {this->fFillControlHistograms = fch;};
  Bool_t GetFillControlHistograms() const {return this->fFillControlHistograms;};
  void SetFillKinematicsHist(Bool_t fkh) {this->fFillKinematicsHist = fkh;};
  Bool_t GetFillKinematicsHist() const {return this->fFillKinematicsHist;};
  void SetFillMultDistributionsHist(Bool_t mdh) {this->fFillMultDistributionsHist = mdh;};
  Bool_t GetFillMultDistributionsHist() const {return this->fFillMultDistributionsHist;};
  void SetFillMultCorrelationsHist(Bool_t mch) {this->fFillMultCorrelationsHist = mch;};
  Bool_t GetFillMultCorrelationsHist() const {return this->fFillMultCorrelationsHist;};
  void SetDontFill(const char *type) 
  {
   if(TString(type).EqualTo("RP")){this->fDontFill[0] = kTRUE;} 
   else if(TString(type).EqualTo("POI")){this->fDontFill[1] = kTRUE;} 
   else if(TString(type).EqualTo("REF")){this->fDontFill[2] = kTRUE;} 
   else{Fatal("void SetDontFill(const char *type)","type = %s ???? Allowed: RP, POI and REF.",type);}
  }; // void SetDontFill(const char *type) 
  void SetnBins(const char *type, const char *variable, Int_t nBins); // .cxx
  void SetMin(const char *type, const char *variable, Double_t min); // .cxx
  void SetMax(const char *type, const char *variable, Double_t max); // .cxx
  void SetnBinsMult(const char *type, Int_t nBinsMult); // .cxx
  void SetMinMult(const char *type, Double_t minMult); // .cxx
  void SetMaxMult(const char *type, Double_t maxMult); // .cxx

  //  5.2.) Q-vectors:
  void SetQvectorList(TList* const qvl) {this->fQvectorList = qvl;};
  TList* GetQvectorList() const {return this->fQvectorList;} 
  void SetQvectorFlagsPro(TProfile* const qvfp) {this->fQvectorFlagsPro = qvfp;};
  TProfile* GetQvectorFlagsPro() const {return this->fQvectorFlagsPro;}; 
  void SetCalculateQvector(Bool_t cqv) {this->fCalculateQvector = cqv;};
  Bool_t GetCalculateQvector() const {return this->fCalculateQvector;};
  void SetCalculateDiffQvectors(Bool_t cdqv) {this->fCalculateDiffQvectors = cdqv;};
  Bool_t GetCalculateDiffQvectors() const {return this->fCalculateDiffQvectors;};

  //  5.3.) Correlations:
  void SetCorrelationsList(TList* const cl) {this->fCorrelationsList = cl;};
  TList* GetCorrelationsList() const {return this->fCorrelationsList;} 
  void SetCorrelationsFlagsPro(TProfile* const cfp) {this->fCorrelationsFlagsPro = cfp;};
  TProfile* GetCorrelationsFlagsPro() const {return this->fCorrelationsFlagsPro;}; 
  void SetCalculateCorrelations(Bool_t cc) {this->fCalculateCorrelations = cc;};
  Bool_t GetCalculateCorrelations() const {return this->fCalculateCorrelations;};
  void SetCalculateIsotropic(Bool_t ci) {this->fCalculateIsotropic = ci;};
  Bool_t GetCalculateIsotropic() const {return this->fCalculateIsotropic;};
  void SetCalculateSame(Bool_t cs) {this->fCalculateSame = cs;};
  Bool_t GetCalculateSame() const {return this->fCalculateSame;};
  void SetSkipZeroHarmonics(Bool_t szh) {this->fSkipZeroHarmonics = szh;};
  Bool_t GetSkipZeroHarmonics() const {return this->fSkipZeroHarmonics;};
  void SetCalculateSameIsotropic(Bool_t csi) {this->fCalculateSameIsotropic = csi;};
  Bool_t GetCalculateSameIsotropic() const {return this->fCalculateSameIsotropic;};
  void SetCalculateAll(Bool_t ca) {this->fCalculateAll = ca;};
  Bool_t GetCalculateAll() const {return this->fCalculateAll;};
  void SetDontGoBeyond(Int_t dgb) {this->fDontGoBeyond = dgb;};
  Int_t GetDontGoBeyond() const {return this->fDontGoBeyond;};
  void SetCalculateOnlyForHarmonicQC(Bool_t cofhqc) {this->fCalculateOnlyForHarmonicQC = cofhqc;};
  Bool_t GetCalculateOnlyForHarmonicQC() const {return this->fCalculateOnlyForHarmonicQC;};
  void SetCalculateOnlyForSC(Bool_t cofsc) {this->fCalculateOnlyForSC = cofsc;};
  Bool_t GetCalculateOnlyForSC() const {return this->fCalculateOnlyForSC;};
  void SetCalculateOnlyCos(Bool_t coc) {this->fCalculateOnlyCos = coc;};
  Bool_t GetCalculateOnlyCos() const {return this->fCalculateOnlyCos;};
  void SetCalculateOnlySin(Bool_t cos) {this->fCalculateOnlySin = cos;};
  Bool_t GetCalculateOnlySin() const {return this->fCalculateOnlySin;};

  //  5.4.) Event-by-event cumulants:
  void SetEbECumulantsList(TList* const ebecl) {this->fEbECumulantsList = ebecl;};
  TList* GetEbECumulantsList() const {return this->fEbECumulantsList;} 
  void SetEbECumulantsFlagsPro(TProfile* const ebecfp) {this->fEbECumulantsFlagsPro = ebecfp;};
  TProfile* GetEbECumulantsFlagsPro() const {return this->fEbECumulantsFlagsPro;}; 
  void SetCalculateEbECumulants(Bool_t cebec) {this->fCalculateEbECumulants = cebec;};
  Bool_t GetCalculateEbECumulants() const {return this->fCalculateEbECumulants;};

  //  5.5.) Weights: 
  void SetWeightsList(TList* const wl) {this->fWeightsList = (TList*)wl->Clone();};
  TList* GetWeightsList() const {return this->fWeightsList;} 
  void SetWeightsFlagsPro(TProfile* const wfp) {this->fWeightsFlagsPro = wfp;};
  TProfile* GetWeightsFlagsPro() const {return this->fWeightsFlagsPro;}; 
  void SetWeightsHist(TH1D* const hist, const char *type, const char *variable); // .cxx
  
  //  5.6.) Nested loops:
  void SetNestedLoopsList(TList* const nll) {this->fNestedLoopsList = nll;} 
  TList* GetNestedLoopsList() const {return this->fNestedLoopsList;} 
  void SetNestedLoopsFlagsPro(TProfile* const nlfp) {this->fNestedLoopsFlagsPro = nlfp;};
  TProfile* GetNestedLoopsFlagsPro() const {return this->fNestedLoopsFlagsPro;}; 
  void SetCrossCheckWithNestedLoops(Bool_t ccwnl) {this->fCrossCheckWithNestedLoops = ccwnl;};
  Bool_t GetCrossCheckWithNestedLoops() const {return this->fCrossCheckWithNestedLoops;};
  void SetCrossCheckDiffWithNestedLoops(Bool_t ccdwnl) {this->fCrossCheckDiffWithNestedLoops = ccdwnl;};
  Bool_t GetCrossCheckDiffWithNestedLoops() const {return this->fCrossCheckDiffWithNestedLoops;};
  void SetCrossCheckDiffCSCOBN(Int_t cs, Int_t co, Int_t bn)  
  {
   this->fCrossCheckDiffCSCOBN[0] = cs; // cos/sin
   this->fCrossCheckDiffCSCOBN[1] = co; // correlator order [1p,2p,3p,4p]
   this->fCrossCheckDiffCSCOBN[2] = bn; // bin number
  };

  // 5.7.) 'Standard candles':
  void SetStandardCandlesList(TList* const scl) {this->fStandardCandlesList = scl;} 
  TList* GetStandardCandlesList() const {return this->fStandardCandlesList;} 
  void SetStandardCandlesFlagsPro(TProfile* const scfp) {this->fStandardCandlesFlagsPro = scfp;};
  TProfile* GetStandardCandlesFlagsPro() const {return this->fStandardCandlesFlagsPro;}; 
  void SetCalculateStandardCandles(Bool_t csc) {this->fCalculateStandardCandles = csc;};
  Bool_t GetCalculateStandardCandles() const {return this->fCalculateStandardCandles;};
  void SetPropagateErrorSC(Bool_t pesc) {this->fPropagateErrorSC = pesc;};
  Bool_t GetPropagateErrorSC() const {return this->fPropagateErrorSC;};
  void SetStandardCandlesHist(TH1D* const sch) {this->fStandardCandlesHist = sch;};
  TH1D* GetStandardCandlesHist() const {return this->fStandardCandlesHist;}; 
  void SetProductsSCPro(TProfile2D* const psc) {this->fProductsSCPro = psc;};
  TProfile2D* GetProductsSCPro() const {return this->fProductsSCPro;}; 

  //  5.8.) Q-cumulants:
  void SetQcumulantsList(TList* const qcl) {this->fQcumulantsList = qcl;};
  TList* GetQcumulantsList() const {return this->fQcumulantsList;} 
  void SetQcumulantsFlagsPro(TProfile* const qcfp) {this->fQcumulantsFlagsPro = qcfp;};
  TProfile* GetQcumulantsFlagsPro() const {return this->fQcumulantsFlagsPro;}; 
  void SetCalculateQcumulants(Bool_t cqc) {this->fCalculateQcumulants = cqc;};
  Bool_t GetCalculateQcumulants() const {return this->fCalculateQcumulants;};
  void SetHarmonicQC(Int_t hqc) {this->fHarmonicQC = hqc;};
  Int_t GetHarmonicQC() const {return this->fHarmonicQC;};
  void SetPropagateErrorQC(Bool_t peqc) {this->fPropagateErrorQC = peqc;};
  Bool_t GetPropagateErrorQC() const {return this->fPropagateErrorQC;};
  void SetQcumulantsHist(TH1D* const qch) {this->fQcumulantsHist = qch;};
  TH1D* GetQcumulantsHist() const {return this->fQcumulantsHist;}; 
  void SetReferenceFlowHist(TH1D* const rfh) {this->fReferenceFlowHist = rfh;};
  TH1D* GetReferenceFlowHist() const {return this->fReferenceFlowHist;}; 
  void SetProductsQCPro(TProfile2D* const pqc) {this->fProductsQCPro = pqc;};
  TProfile2D* GetProductsQCPro() const {return this->fProductsQCPro;}; 

  //  5.9.) Differential correlations:
  void SetDiffCorrelationsList(TList* const dcl) {this->fDiffCorrelationsList = dcl;};
  TList* GetDiffCorrelationsList() const {return this->fDiffCorrelationsList;} 
  void SetDiffCorrelationsFlagsPro(TProfile* const cdfp) {this->fDiffCorrelationsFlagsPro = cdfp;};
  TProfile* GetDiffCorrelationsFlagsPro() const {return this->fDiffCorrelationsFlagsPro;}; 
  void SetCalculateDiffCorrelations(Bool_t cdc) {this->fCalculateDiffCorrelations = cdc;};
  Bool_t GetCalculateDiffCorrelations() const {return this->fCalculateDiffCorrelations;};
  void SetDiffHarmonics(Int_t order, Int_t *harmonics); // see implementation in .cxx file 
  void SetCalculateDiffCos(Bool_t cdc) {this->fCalculateDiffCos = cdc;};
  Bool_t GetCalculateDiffCos() const {return this->fCalculateDiffCos;};
  void SetCalculateDiffSin(Bool_t cds) {this->fCalculateDiffSin = cds;};
  Bool_t GetCalculateDiffSin() const {return this->fCalculateDiffSin;};
  void SetCalculateDiffCorrelationsVsPt(Bool_t cdcvspt) {this->fCalculateDiffCorrelationsVsPt = cdcvspt;};
  Bool_t GetCalculateDiffCorrelationsVsPt() const {return this->fCalculateDiffCorrelationsVsPt;};
  void SetUseDefaultBinning(Bool_t udb) {this->fUseDefaultBinning = udb;};
  Bool_t GetUseDefaultBinning() const {return this->fUseDefaultBinning;};
  void SetnDiffBins(Int_t ndb) {this->fnDiffBins = ndb;};
  Int_t GetnDiffBins() const {return this->fnDiffBins;};
  void SetRangesDiffBins(Double_t* const rdb) {this->fRangesDiffBins = rdb;};
  Double_t* GetRangesDiffBins() const {return this->fRangesDiffBins;};

  // 6.) The rest:
  virtual void WriteHistograms(TString outputFileName);
  virtual void WriteHistograms(TDirectoryFile *outputFileName);
  virtual TComplex Q(Int_t n, Int_t p);
  virtual TComplex p(Int_t n, Int_t p);
  virtual TComplex q(Int_t n, Int_t p);
  virtual TComplex One(Int_t n1);
  virtual TComplex Two(Int_t n1, Int_t n2);
  virtual TComplex Three(Int_t n1, Int_t n2, Int_t n3);
  virtual TComplex Four(Int_t n1, Int_t n2, Int_t n3, Int_t n4);
  virtual TComplex Five(Int_t n1, Int_t n2, Int_t n3, Int_t n4, Int_t n5);
  virtual TComplex Six(Int_t n1, Int_t n2, Int_t n3, Int_t n4, Int_t n5, Int_t n6);
  virtual TComplex Seven(Int_t n1, Int_t n2, Int_t n3, Int_t n4, Int_t n5, Int_t n6, Int_t n7);
  virtual TComplex Eight(Int_t n1, Int_t n2, Int_t n3, Int_t n4, Int_t n5, Int_t n6, Int_t n7, Int_t n8);
  virtual TComplex OneDiff(Int_t n1);
  virtual TComplex TwoDiff(Int_t n1, Int_t n2);
  virtual TComplex ThreeDiff(Int_t n1, Int_t n2, Int_t n3);
  virtual TComplex FourDiff(Int_t n1, Int_t n2, Int_t n3, Int_t n4);
  virtual Double_t Weight(const Double_t &value, const char *type, const char *variable); // value, [RP,POI], [phi,pt,eta]
  virtual Double_t CastStringToCorrelation(const char *string, Bool_t numerator);
  virtual Double_t Covariance(const char *x, const char *y, TProfile2D *profile2D, Bool_t bUnbiasedEstimator = kFALSE);
  virtual TComplex Recursion(Int_t n, Int_t* harmonic, Int_t mult = 1, Int_t skip = 0); // Credits: Kristjan Gulbrandsen (gulbrand@nbi.dk) 
  virtual void CalculateProductsOfCorrelations(AliFlowEventSimple *anEvent, TProfile2D *profile2D);
  static void DumpPointsForDurham(TGraphErrors *ge);
  static void DumpPointsForDurham(TH1D *h);
  static void DumpPointsForDurham(TH1F *h);
  virtual void DumpThePoints(AliFlowEventSimple *anEvent);
  TH1D* GetHistogramWithWeights(const char *filePath, const char *listName, const char *type, const char *variable, const char *production);

 private:
  AliFlowAnalysisWithMultiparticleCorrelations(const AliFlowAnalysisWithMultiparticleCorrelations& afawQc);
  AliFlowAnalysisWithMultiparticleCorrelations& operator=(const AliFlowAnalysisWithMultiparticleCorrelations& afawQc); 
  // Data members are grouped as:
  // 0.) Base list and internal flags;
  // 1.) Control histograms;  
  // 2.) Q-vectors;
  // 3.) Correlations;
  // 4.) Event-by-event cumulants;
  // 5.) Weights;
  // 6.) Nested loops;
  // 7.) 'Standard candles';
  // 8.) Q-cumulants;
  // 9.) Differential correlations. 

  // 0.) Base list and internal flags:
  TList* fHistList;            // base list to hold all output object (a.k.a. grandmother of all lists)
  TProfile *fInternalFlagsPro; // profile to hold all internal flags and settings
  Bool_t fUseInternalFlags;    // use internal flags (automatically set if some internal flag is used)
  Int_t fMinNoRPs;             // minimum number of RPs required for the analysis 
  Int_t fMaxNoRPs;             // maximum number of RPs allowed for the analysis 
  Int_t fExactNoRPs;           // exact (randomly shuffled) number of RPs selected for the analysis 
  Bool_t fPropagateError;      // prevent error propagation if something strange happens during calculations 
  TString fAnalysisTag;        // tag internally this analysis
  Bool_t fDumpThePoints;       // dump the data points into the external file 
  Int_t fMaxNoEventsPerFile;   // maximum number of events to be dumped in a single file

  // 1.) Control histograms:  
  TList *fControlHistogramsList;        // list to hold all 'control histograms' objects
  TProfile *fControlHistogramsFlagsPro; // profile to hold all flags for control histograms
  Bool_t fFillControlHistograms;        // fill or not control histograms (by default they are all filled)
  Bool_t fFillKinematicsHist;           // fill or not fKinematicsHist[2][3]
  Bool_t fFillMultDistributionsHist;    // fill or not TH1D *fMultDistributionsHist[3]    
  Bool_t fFillMultCorrelationsHist;     // fill or not TH2D *fMultCorrelationsHist[3]
  Bool_t fDontFill[3];                  // don't fill control histograms [0=RP,1=POI,2=REF]  
  TH1D *fKinematicsHist[2][3];          // [RP,POI][phi,pt,eta] distributions
  TH1D *fMultDistributionsHist[3];      // multiplicity distribution [RP,POI,reference multiplicity]
  TH2I *fMultCorrelationsHist[3];       // [RP vs. POI, RP vs. refMult, POI vs. refMult]  
  Int_t fnBins[2][3];                   // [RP,POI][phi,pt,eta], corresponds to fKinematicsHist[2][3]
  Double_t fMin[2][3];                  // [RP,POI][phi,pt,eta], corresponds to fKinematicsHist[2][3]
  Double_t fMax[2][3];                  // [RP,POI][phi,pt,eta], corresponds to fKinematicsHist[2][3]
  Int_t fnBinsMult[3];                  // [RP,POI,REF], corresponds to fMultDistributionsHist[3]   
  Double_t fMinMult[3];                 // [RP,POI,REF], corresponds to fMultDistributionsHist[3]   
  Double_t fMaxMult[3];                 // [RP,POI,REF], corresponds to fMultDistributionsHist[3]   

  // 2.) Q-vectors:
  TList *fQvectorList;           // list to hold all Q-vector objects       
  TProfile *fQvectorFlagsPro;    // profile to hold all flags for Q-vector
  Bool_t fCalculateQvector;      // to calculate or not to calculate Q-vector components, that's a Boolean...
  TComplex fQvector[49][9];      // Q-vector components [fMaxHarmonic*fMaxCorrelator+1][fMaxCorrelator+1] = [6*8+1][8+1]  
  Bool_t fCalculateDiffQvectors; // to calculate or not to calculate p- and q-vector components, that's a Boolean...  
  TComplex fpvector[100][49][9]; // p-vector components [bin][fMaxHarmonic*fMaxCorrelator+1][fMaxCorrelator+1] = [6*8+1][8+1] TBI hardwired 100
  TComplex fqvector[100][49][9]; // q-vector components [bin][fMaxHarmonic*fMaxCorrelator+1][fMaxCorrelator+1] = [6*8+1][8+1] TBI hardwired 100

  // 3.) Correlations:
  TList *fCorrelationsList;           // list to hold all correlations objects
  TProfile *fCorrelationsFlagsPro;    // profile to hold all flags for correlations
  TProfile *fCorrelationsPro[2][8];   // multi-particle correlations [0=cos,1=sin][1p,2p,...,8p]
  Bool_t fCalculateCorrelations;      // calculate and store correlations
  Int_t fMaxHarmonic;                 // 6 (not going beyond v6, if you change this value, change also fQvector[49][9]) 
  Int_t fMaxCorrelator;               // 8 (not going beyond 8-p correlations, if you change this value, change also fQvector[49][9]) 
  Bool_t fCalculateIsotropic;         // calculate only isotropic correlations
  Bool_t fCalculateSame;              // calculate only 'same abs harmonics' correlations TBI 
  Bool_t fSkipZeroHarmonics;          // skip correlations which have some of the harmonicc equal to zero
  Bool_t fCalculateSameIsotropic;     // calculate all isotropic correlations in 'same abs harmonic' TBI this can be implemented better
  Bool_t fCalculateAll;               // calculate all possible correlations 
  Int_t  fDontGoBeyond;               // do not go beyond fDontGoBeyond-p correlators
  Bool_t fCalculateOnlyForHarmonicQC; // calculate only isotropic correlations in |fHarmonicQC|
  Bool_t fCalculateOnlyForSC;         // calculate only correlations needed for 'standard candles'
  Bool_t fCalculateOnlyCos;           // calculate only 'cos' correlations
  Bool_t fCalculateOnlySin;           // calculate only 'sin' correlations

  // 4.) Event-by-event cumulants:
  TList *fEbECumulantsList;         // list to hold all e-b-e cumulants objects
  TProfile *fEbECumulantsFlagsPro;  // profile to hold all flags for e-b-e cumulants
  TProfile *fEbECumulantsPro[2][8]; // multi-particle e-b-e cumulants [0=cos,1=sin][1p,2p,...,8p]
  Bool_t fCalculateEbECumulants;    // calculate and store e-b-e cumulants
 
  // 5.) Weights:
  TList *fWeightsList;        // list to hold all weights objects
  TProfile *fWeightsFlagsPro; // profile to hold all flags for weights
  Bool_t fUseWeights[2][3];   // use weights [RP,POI][phi,pt,eta]
  TH1D *fWeightsHist[2][3];   // histograms holding weights [RP,POI][phi,pt,eta]

  // 6.) Nested loops:
  TList *fNestedLoopsList;               // list to hold all nested loops objects
  TProfile *fNestedLoopsFlagsPro;        // profile to hold all flags for nested loops
  Bool_t fCrossCheckWithNestedLoops;     // cross-check results with nested loops
  Bool_t fCrossCheckDiffWithNestedLoops; // cross-check differential correlators with nested loops
  Int_t fCrossCheckDiffCSCOBN[3];        // [0=cos,1=sin][1p,2p,...,4p][binNo]
  TProfile *fNestedLoopsResultsCosPro;   // profile to hold nested loops results (cosine)
  TProfile *fNestedLoopsResultsSinPro;   // profile to hold nested loops results (sinus)
  TProfile *fNestedLoopsDiffResultsPro;  // profile to hold differential nested loops results // TBI

  // 7.) 'Standard candles':
  TList *fStandardCandlesList;        // list to hold all 'standard candles' objects
  TProfile *fStandardCandlesFlagsPro; // profile to hold all flags fo 'standard candles'
  Bool_t fCalculateStandardCandles;   // calculate and store 'standard candles'
  Bool_t fPropagateErrorSC;           // propagate and store error for 'standard candles'
  TH1D *fStandardCandlesHist;         // histogram to hold results for 'standard candles'
  TProfile2D *fProductsSCPro;         // 2D profile to hold products of correlations needed for SC error propagation

  // 8.) Q-cumulants:
  TList *fQcumulantsList;        // list to hold all Q-cumulants objects
  TProfile *fQcumulantsFlagsPro; // profile to hold all flags for Q-cumulants
  Bool_t fCalculateQcumulants;   // calculate and store Q-cumulants
  Int_t fHarmonicQC;             // calculate Q-cumulants in this harmonic (default is 2) 
  Bool_t fPropagateErrorQC;      // propagate and store error for Q-cumulants
  TH1D *fQcumulantsHist;         // two- and multi-particle Q-cumulants
  TH1D *fReferenceFlowHist;      // reference flow from two- and multi-particle Q-cumulants
  TProfile2D *fProductsQCPro;    // 2D profile to hold products of correlations needed for QC error propagation

  // 9.) Differential correlations:
  TList *fDiffCorrelationsList;          // list to hold all correlations objects
  TProfile *fDiffCorrelationsFlagsPro;   // profile to hold all flags for correlations
  Bool_t fCalculateDiffCorrelations;     // calculate and store differential correlations
  Bool_t fCalculateDiffCos;              // calculate and store differential cosine correlations (kTRUE by default)
  Bool_t fCalculateDiffSin;              // calculate and store differential sinus correlations (kFALSE by default)
  Bool_t fCalculateDiffCorrelationsVsPt; // calculate differential correlations vs pt (default), or vs eta
  Bool_t fUseDefaultBinning;             // use default binning in pt or in eta
  Int_t fnDiffBins;                      // number of differential bins in pt or in eta (when non-default binning is used)
  Double_t *fRangesDiffBins;             // ranges for differential bins in pt or in eta (when non-default binning is used)
  Int_t fDiffHarmonics[4][4];            // harmonics for differential correlations [order][{n1},{n1,n2},...,{n1,n2,n3,n4}] 
  TProfile *fDiffCorrelationsPro[2][4];  // multi-particle correlations [0=cos,1=sin][1p,2p,3p,4p]
  UInt_t fDiffBinNo;                     // differential bin number

  ClassDef(AliFlowAnalysisWithMultiparticleCorrelations,2);

};

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

#endif





 AliFlowAnalysisWithMultiparticleCorrelations.h:1
 AliFlowAnalysisWithMultiparticleCorrelations.h:2
 AliFlowAnalysisWithMultiparticleCorrelations.h:3
 AliFlowAnalysisWithMultiparticleCorrelations.h:4
 AliFlowAnalysisWithMultiparticleCorrelations.h:5
 AliFlowAnalysisWithMultiparticleCorrelations.h:6
 AliFlowAnalysisWithMultiparticleCorrelations.h:7
 AliFlowAnalysisWithMultiparticleCorrelations.h:8
 AliFlowAnalysisWithMultiparticleCorrelations.h:9
 AliFlowAnalysisWithMultiparticleCorrelations.h:10
 AliFlowAnalysisWithMultiparticleCorrelations.h:11
 AliFlowAnalysisWithMultiparticleCorrelations.h:12
 AliFlowAnalysisWithMultiparticleCorrelations.h:13
 AliFlowAnalysisWithMultiparticleCorrelations.h:14
 AliFlowAnalysisWithMultiparticleCorrelations.h:15
 AliFlowAnalysisWithMultiparticleCorrelations.h:16
 AliFlowAnalysisWithMultiparticleCorrelations.h:17
 AliFlowAnalysisWithMultiparticleCorrelations.h:18
 AliFlowAnalysisWithMultiparticleCorrelations.h:19
 AliFlowAnalysisWithMultiparticleCorrelations.h:20
 AliFlowAnalysisWithMultiparticleCorrelations.h:21
 AliFlowAnalysisWithMultiparticleCorrelations.h:22
 AliFlowAnalysisWithMultiparticleCorrelations.h:23
 AliFlowAnalysisWithMultiparticleCorrelations.h:24
 AliFlowAnalysisWithMultiparticleCorrelations.h:25
 AliFlowAnalysisWithMultiparticleCorrelations.h:26
 AliFlowAnalysisWithMultiparticleCorrelations.h:27
 AliFlowAnalysisWithMultiparticleCorrelations.h:28
 AliFlowAnalysisWithMultiparticleCorrelations.h:29
 AliFlowAnalysisWithMultiparticleCorrelations.h:30
 AliFlowAnalysisWithMultiparticleCorrelations.h:31
 AliFlowAnalysisWithMultiparticleCorrelations.h:32
 AliFlowAnalysisWithMultiparticleCorrelations.h:33
 AliFlowAnalysisWithMultiparticleCorrelations.h:34
 AliFlowAnalysisWithMultiparticleCorrelations.h:35
 AliFlowAnalysisWithMultiparticleCorrelations.h:36
 AliFlowAnalysisWithMultiparticleCorrelations.h:37
 AliFlowAnalysisWithMultiparticleCorrelations.h:38
 AliFlowAnalysisWithMultiparticleCorrelations.h:39
 AliFlowAnalysisWithMultiparticleCorrelations.h:40
 AliFlowAnalysisWithMultiparticleCorrelations.h:41
 AliFlowAnalysisWithMultiparticleCorrelations.h:42
 AliFlowAnalysisWithMultiparticleCorrelations.h:43
 AliFlowAnalysisWithMultiparticleCorrelations.h:44
 AliFlowAnalysisWithMultiparticleCorrelations.h:45
 AliFlowAnalysisWithMultiparticleCorrelations.h:46
 AliFlowAnalysisWithMultiparticleCorrelations.h:47
 AliFlowAnalysisWithMultiparticleCorrelations.h:48
 AliFlowAnalysisWithMultiparticleCorrelations.h:49
 AliFlowAnalysisWithMultiparticleCorrelations.h:50
 AliFlowAnalysisWithMultiparticleCorrelations.h:51
 AliFlowAnalysisWithMultiparticleCorrelations.h:52
 AliFlowAnalysisWithMultiparticleCorrelations.h:53
 AliFlowAnalysisWithMultiparticleCorrelations.h:54
 AliFlowAnalysisWithMultiparticleCorrelations.h:55
 AliFlowAnalysisWithMultiparticleCorrelations.h:56
 AliFlowAnalysisWithMultiparticleCorrelations.h:57
 AliFlowAnalysisWithMultiparticleCorrelations.h:58
 AliFlowAnalysisWithMultiparticleCorrelations.h:59
 AliFlowAnalysisWithMultiparticleCorrelations.h:60
 AliFlowAnalysisWithMultiparticleCorrelations.h:61
 AliFlowAnalysisWithMultiparticleCorrelations.h:62
 AliFlowAnalysisWithMultiparticleCorrelations.h:63
 AliFlowAnalysisWithMultiparticleCorrelations.h:64
 AliFlowAnalysisWithMultiparticleCorrelations.h:65
 AliFlowAnalysisWithMultiparticleCorrelations.h:66
 AliFlowAnalysisWithMultiparticleCorrelations.h:67
 AliFlowAnalysisWithMultiparticleCorrelations.h:68
 AliFlowAnalysisWithMultiparticleCorrelations.h:69
 AliFlowAnalysisWithMultiparticleCorrelations.h:70
 AliFlowAnalysisWithMultiparticleCorrelations.h:71
 AliFlowAnalysisWithMultiparticleCorrelations.h:72
 AliFlowAnalysisWithMultiparticleCorrelations.h:73
 AliFlowAnalysisWithMultiparticleCorrelations.h:74
 AliFlowAnalysisWithMultiparticleCorrelations.h:75
 AliFlowAnalysisWithMultiparticleCorrelations.h:76
 AliFlowAnalysisWithMultiparticleCorrelations.h:77
 AliFlowAnalysisWithMultiparticleCorrelations.h:78
 AliFlowAnalysisWithMultiparticleCorrelations.h:79
 AliFlowAnalysisWithMultiparticleCorrelations.h:80
 AliFlowAnalysisWithMultiparticleCorrelations.h:81
 AliFlowAnalysisWithMultiparticleCorrelations.h:82
 AliFlowAnalysisWithMultiparticleCorrelations.h:83
 AliFlowAnalysisWithMultiparticleCorrelations.h:84
 AliFlowAnalysisWithMultiparticleCorrelations.h:85
 AliFlowAnalysisWithMultiparticleCorrelations.h:86
 AliFlowAnalysisWithMultiparticleCorrelations.h:87
 AliFlowAnalysisWithMultiparticleCorrelations.h:88
 AliFlowAnalysisWithMultiparticleCorrelations.h:89
 AliFlowAnalysisWithMultiparticleCorrelations.h:90
 AliFlowAnalysisWithMultiparticleCorrelations.h:91
 AliFlowAnalysisWithMultiparticleCorrelations.h:92
 AliFlowAnalysisWithMultiparticleCorrelations.h:93
 AliFlowAnalysisWithMultiparticleCorrelations.h:94
 AliFlowAnalysisWithMultiparticleCorrelations.h:95
 AliFlowAnalysisWithMultiparticleCorrelations.h:96
 AliFlowAnalysisWithMultiparticleCorrelations.h:97
 AliFlowAnalysisWithMultiparticleCorrelations.h:98
 AliFlowAnalysisWithMultiparticleCorrelations.h:99
 AliFlowAnalysisWithMultiparticleCorrelations.h:100
 AliFlowAnalysisWithMultiparticleCorrelations.h:101
 AliFlowAnalysisWithMultiparticleCorrelations.h:102
 AliFlowAnalysisWithMultiparticleCorrelations.h:103
 AliFlowAnalysisWithMultiparticleCorrelations.h:104
 AliFlowAnalysisWithMultiparticleCorrelations.h:105
 AliFlowAnalysisWithMultiparticleCorrelations.h:106
 AliFlowAnalysisWithMultiparticleCorrelations.h:107
 AliFlowAnalysisWithMultiparticleCorrelations.h:108
 AliFlowAnalysisWithMultiparticleCorrelations.h:109
 AliFlowAnalysisWithMultiparticleCorrelations.h:110
 AliFlowAnalysisWithMultiparticleCorrelations.h:111
 AliFlowAnalysisWithMultiparticleCorrelations.h:112
 AliFlowAnalysisWithMultiparticleCorrelations.h:113
 AliFlowAnalysisWithMultiparticleCorrelations.h:114
 AliFlowAnalysisWithMultiparticleCorrelations.h:115
 AliFlowAnalysisWithMultiparticleCorrelations.h:116
 AliFlowAnalysisWithMultiparticleCorrelations.h:117
 AliFlowAnalysisWithMultiparticleCorrelations.h:118
 AliFlowAnalysisWithMultiparticleCorrelations.h:119
 AliFlowAnalysisWithMultiparticleCorrelations.h:120
 AliFlowAnalysisWithMultiparticleCorrelations.h:121
 AliFlowAnalysisWithMultiparticleCorrelations.h:122
 AliFlowAnalysisWithMultiparticleCorrelations.h:123
 AliFlowAnalysisWithMultiparticleCorrelations.h:124
 AliFlowAnalysisWithMultiparticleCorrelations.h:125
 AliFlowAnalysisWithMultiparticleCorrelations.h:126
 AliFlowAnalysisWithMultiparticleCorrelations.h:127
 AliFlowAnalysisWithMultiparticleCorrelations.h:128
 AliFlowAnalysisWithMultiparticleCorrelations.h:129
 AliFlowAnalysisWithMultiparticleCorrelations.h:130
 AliFlowAnalysisWithMultiparticleCorrelations.h:131
 AliFlowAnalysisWithMultiparticleCorrelations.h:132
 AliFlowAnalysisWithMultiparticleCorrelations.h:133
 AliFlowAnalysisWithMultiparticleCorrelations.h:134
 AliFlowAnalysisWithMultiparticleCorrelations.h:135
 AliFlowAnalysisWithMultiparticleCorrelations.h:136
 AliFlowAnalysisWithMultiparticleCorrelations.h:137
 AliFlowAnalysisWithMultiparticleCorrelations.h:138
 AliFlowAnalysisWithMultiparticleCorrelations.h:139
 AliFlowAnalysisWithMultiparticleCorrelations.h:140
 AliFlowAnalysisWithMultiparticleCorrelations.h:141
 AliFlowAnalysisWithMultiparticleCorrelations.h:142
 AliFlowAnalysisWithMultiparticleCorrelations.h:143
 AliFlowAnalysisWithMultiparticleCorrelations.h:144
 AliFlowAnalysisWithMultiparticleCorrelations.h:145
 AliFlowAnalysisWithMultiparticleCorrelations.h:146
 AliFlowAnalysisWithMultiparticleCorrelations.h:147
 AliFlowAnalysisWithMultiparticleCorrelations.h:148
 AliFlowAnalysisWithMultiparticleCorrelations.h:149
 AliFlowAnalysisWithMultiparticleCorrelations.h:150
 AliFlowAnalysisWithMultiparticleCorrelations.h:151
 AliFlowAnalysisWithMultiparticleCorrelations.h:152
 AliFlowAnalysisWithMultiparticleCorrelations.h:153
 AliFlowAnalysisWithMultiparticleCorrelations.h:154
 AliFlowAnalysisWithMultiparticleCorrelations.h:155
 AliFlowAnalysisWithMultiparticleCorrelations.h:156
 AliFlowAnalysisWithMultiparticleCorrelations.h:157
 AliFlowAnalysisWithMultiparticleCorrelations.h:158
 AliFlowAnalysisWithMultiparticleCorrelations.h:159
 AliFlowAnalysisWithMultiparticleCorrelations.h:160
 AliFlowAnalysisWithMultiparticleCorrelations.h:161
 AliFlowAnalysisWithMultiparticleCorrelations.h:162
 AliFlowAnalysisWithMultiparticleCorrelations.h:163
 AliFlowAnalysisWithMultiparticleCorrelations.h:164
 AliFlowAnalysisWithMultiparticleCorrelations.h:165
 AliFlowAnalysisWithMultiparticleCorrelations.h:166
 AliFlowAnalysisWithMultiparticleCorrelations.h:167
 AliFlowAnalysisWithMultiparticleCorrelations.h:168
 AliFlowAnalysisWithMultiparticleCorrelations.h:169
 AliFlowAnalysisWithMultiparticleCorrelations.h:170
 AliFlowAnalysisWithMultiparticleCorrelations.h:171
 AliFlowAnalysisWithMultiparticleCorrelations.h:172
 AliFlowAnalysisWithMultiparticleCorrelations.h:173
 AliFlowAnalysisWithMultiparticleCorrelations.h:174
 AliFlowAnalysisWithMultiparticleCorrelations.h:175
 AliFlowAnalysisWithMultiparticleCorrelations.h:176
 AliFlowAnalysisWithMultiparticleCorrelations.h:177
 AliFlowAnalysisWithMultiparticleCorrelations.h:178
 AliFlowAnalysisWithMultiparticleCorrelations.h:179
 AliFlowAnalysisWithMultiparticleCorrelations.h:180
 AliFlowAnalysisWithMultiparticleCorrelations.h:181
 AliFlowAnalysisWithMultiparticleCorrelations.h:182
 AliFlowAnalysisWithMultiparticleCorrelations.h:183
 AliFlowAnalysisWithMultiparticleCorrelations.h:184
 AliFlowAnalysisWithMultiparticleCorrelations.h:185
 AliFlowAnalysisWithMultiparticleCorrelations.h:186
 AliFlowAnalysisWithMultiparticleCorrelations.h:187
 AliFlowAnalysisWithMultiparticleCorrelations.h:188
 AliFlowAnalysisWithMultiparticleCorrelations.h:189
 AliFlowAnalysisWithMultiparticleCorrelations.h:190
 AliFlowAnalysisWithMultiparticleCorrelations.h:191
 AliFlowAnalysisWithMultiparticleCorrelations.h:192
 AliFlowAnalysisWithMultiparticleCorrelations.h:193
 AliFlowAnalysisWithMultiparticleCorrelations.h:194
 AliFlowAnalysisWithMultiparticleCorrelations.h:195
 AliFlowAnalysisWithMultiparticleCorrelations.h:196
 AliFlowAnalysisWithMultiparticleCorrelations.h:197
 AliFlowAnalysisWithMultiparticleCorrelations.h:198
 AliFlowAnalysisWithMultiparticleCorrelations.h:199
 AliFlowAnalysisWithMultiparticleCorrelations.h:200
 AliFlowAnalysisWithMultiparticleCorrelations.h:201
 AliFlowAnalysisWithMultiparticleCorrelations.h:202
 AliFlowAnalysisWithMultiparticleCorrelations.h:203
 AliFlowAnalysisWithMultiparticleCorrelations.h:204
 AliFlowAnalysisWithMultiparticleCorrelations.h:205
 AliFlowAnalysisWithMultiparticleCorrelations.h:206
 AliFlowAnalysisWithMultiparticleCorrelations.h:207
 AliFlowAnalysisWithMultiparticleCorrelations.h:208
 AliFlowAnalysisWithMultiparticleCorrelations.h:209
 AliFlowAnalysisWithMultiparticleCorrelations.h:210
 AliFlowAnalysisWithMultiparticleCorrelations.h:211
 AliFlowAnalysisWithMultiparticleCorrelations.h:212
 AliFlowAnalysisWithMultiparticleCorrelations.h:213
 AliFlowAnalysisWithMultiparticleCorrelations.h:214
 AliFlowAnalysisWithMultiparticleCorrelations.h:215
 AliFlowAnalysisWithMultiparticleCorrelations.h:216
 AliFlowAnalysisWithMultiparticleCorrelations.h:217
 AliFlowAnalysisWithMultiparticleCorrelations.h:218
 AliFlowAnalysisWithMultiparticleCorrelations.h:219
 AliFlowAnalysisWithMultiparticleCorrelations.h:220
 AliFlowAnalysisWithMultiparticleCorrelations.h:221
 AliFlowAnalysisWithMultiparticleCorrelations.h:222
 AliFlowAnalysisWithMultiparticleCorrelations.h:223
 AliFlowAnalysisWithMultiparticleCorrelations.h:224
 AliFlowAnalysisWithMultiparticleCorrelations.h:225
 AliFlowAnalysisWithMultiparticleCorrelations.h:226
 AliFlowAnalysisWithMultiparticleCorrelations.h:227
 AliFlowAnalysisWithMultiparticleCorrelations.h:228
 AliFlowAnalysisWithMultiparticleCorrelations.h:229
 AliFlowAnalysisWithMultiparticleCorrelations.h:230
 AliFlowAnalysisWithMultiparticleCorrelations.h:231
 AliFlowAnalysisWithMultiparticleCorrelations.h:232
 AliFlowAnalysisWithMultiparticleCorrelations.h:233
 AliFlowAnalysisWithMultiparticleCorrelations.h:234
 AliFlowAnalysisWithMultiparticleCorrelations.h:235
 AliFlowAnalysisWithMultiparticleCorrelations.h:236
 AliFlowAnalysisWithMultiparticleCorrelations.h:237
 AliFlowAnalysisWithMultiparticleCorrelations.h:238
 AliFlowAnalysisWithMultiparticleCorrelations.h:239
 AliFlowAnalysisWithMultiparticleCorrelations.h:240
 AliFlowAnalysisWithMultiparticleCorrelations.h:241
 AliFlowAnalysisWithMultiparticleCorrelations.h:242
 AliFlowAnalysisWithMultiparticleCorrelations.h:243
 AliFlowAnalysisWithMultiparticleCorrelations.h:244
 AliFlowAnalysisWithMultiparticleCorrelations.h:245
 AliFlowAnalysisWithMultiparticleCorrelations.h:246
 AliFlowAnalysisWithMultiparticleCorrelations.h:247
 AliFlowAnalysisWithMultiparticleCorrelations.h:248
 AliFlowAnalysisWithMultiparticleCorrelations.h:249
 AliFlowAnalysisWithMultiparticleCorrelations.h:250
 AliFlowAnalysisWithMultiparticleCorrelations.h:251
 AliFlowAnalysisWithMultiparticleCorrelations.h:252
 AliFlowAnalysisWithMultiparticleCorrelations.h:253
 AliFlowAnalysisWithMultiparticleCorrelations.h:254
 AliFlowAnalysisWithMultiparticleCorrelations.h:255
 AliFlowAnalysisWithMultiparticleCorrelations.h:256
 AliFlowAnalysisWithMultiparticleCorrelations.h:257
 AliFlowAnalysisWithMultiparticleCorrelations.h:258
 AliFlowAnalysisWithMultiparticleCorrelations.h:259
 AliFlowAnalysisWithMultiparticleCorrelations.h:260
 AliFlowAnalysisWithMultiparticleCorrelations.h:261
 AliFlowAnalysisWithMultiparticleCorrelations.h:262
 AliFlowAnalysisWithMultiparticleCorrelations.h:263
 AliFlowAnalysisWithMultiparticleCorrelations.h:264
 AliFlowAnalysisWithMultiparticleCorrelations.h:265
 AliFlowAnalysisWithMultiparticleCorrelations.h:266
 AliFlowAnalysisWithMultiparticleCorrelations.h:267
 AliFlowAnalysisWithMultiparticleCorrelations.h:268
 AliFlowAnalysisWithMultiparticleCorrelations.h:269
 AliFlowAnalysisWithMultiparticleCorrelations.h:270
 AliFlowAnalysisWithMultiparticleCorrelations.h:271
 AliFlowAnalysisWithMultiparticleCorrelations.h:272
 AliFlowAnalysisWithMultiparticleCorrelations.h:273
 AliFlowAnalysisWithMultiparticleCorrelations.h:274
 AliFlowAnalysisWithMultiparticleCorrelations.h:275
 AliFlowAnalysisWithMultiparticleCorrelations.h:276
 AliFlowAnalysisWithMultiparticleCorrelations.h:277
 AliFlowAnalysisWithMultiparticleCorrelations.h:278
 AliFlowAnalysisWithMultiparticleCorrelations.h:279
 AliFlowAnalysisWithMultiparticleCorrelations.h:280
 AliFlowAnalysisWithMultiparticleCorrelations.h:281
 AliFlowAnalysisWithMultiparticleCorrelations.h:282
 AliFlowAnalysisWithMultiparticleCorrelations.h:283
 AliFlowAnalysisWithMultiparticleCorrelations.h:284
 AliFlowAnalysisWithMultiparticleCorrelations.h:285
 AliFlowAnalysisWithMultiparticleCorrelations.h:286
 AliFlowAnalysisWithMultiparticleCorrelations.h:287
 AliFlowAnalysisWithMultiparticleCorrelations.h:288
 AliFlowAnalysisWithMultiparticleCorrelations.h:289
 AliFlowAnalysisWithMultiparticleCorrelations.h:290
 AliFlowAnalysisWithMultiparticleCorrelations.h:291
 AliFlowAnalysisWithMultiparticleCorrelations.h:292
 AliFlowAnalysisWithMultiparticleCorrelations.h:293
 AliFlowAnalysisWithMultiparticleCorrelations.h:294
 AliFlowAnalysisWithMultiparticleCorrelations.h:295
 AliFlowAnalysisWithMultiparticleCorrelations.h:296
 AliFlowAnalysisWithMultiparticleCorrelations.h:297
 AliFlowAnalysisWithMultiparticleCorrelations.h:298
 AliFlowAnalysisWithMultiparticleCorrelations.h:299
 AliFlowAnalysisWithMultiparticleCorrelations.h:300
 AliFlowAnalysisWithMultiparticleCorrelations.h:301
 AliFlowAnalysisWithMultiparticleCorrelations.h:302
 AliFlowAnalysisWithMultiparticleCorrelations.h:303
 AliFlowAnalysisWithMultiparticleCorrelations.h:304
 AliFlowAnalysisWithMultiparticleCorrelations.h:305
 AliFlowAnalysisWithMultiparticleCorrelations.h:306
 AliFlowAnalysisWithMultiparticleCorrelations.h:307
 AliFlowAnalysisWithMultiparticleCorrelations.h:308
 AliFlowAnalysisWithMultiparticleCorrelations.h:309
 AliFlowAnalysisWithMultiparticleCorrelations.h:310
 AliFlowAnalysisWithMultiparticleCorrelations.h:311
 AliFlowAnalysisWithMultiparticleCorrelations.h:312
 AliFlowAnalysisWithMultiparticleCorrelations.h:313
 AliFlowAnalysisWithMultiparticleCorrelations.h:314
 AliFlowAnalysisWithMultiparticleCorrelations.h:315
 AliFlowAnalysisWithMultiparticleCorrelations.h:316
 AliFlowAnalysisWithMultiparticleCorrelations.h:317
 AliFlowAnalysisWithMultiparticleCorrelations.h:318
 AliFlowAnalysisWithMultiparticleCorrelations.h:319
 AliFlowAnalysisWithMultiparticleCorrelations.h:320
 AliFlowAnalysisWithMultiparticleCorrelations.h:321
 AliFlowAnalysisWithMultiparticleCorrelations.h:322
 AliFlowAnalysisWithMultiparticleCorrelations.h:323
 AliFlowAnalysisWithMultiparticleCorrelations.h:324
 AliFlowAnalysisWithMultiparticleCorrelations.h:325
 AliFlowAnalysisWithMultiparticleCorrelations.h:326
 AliFlowAnalysisWithMultiparticleCorrelations.h:327
 AliFlowAnalysisWithMultiparticleCorrelations.h:328
 AliFlowAnalysisWithMultiparticleCorrelations.h:329
 AliFlowAnalysisWithMultiparticleCorrelations.h:330
 AliFlowAnalysisWithMultiparticleCorrelations.h:331
 AliFlowAnalysisWithMultiparticleCorrelations.h:332
 AliFlowAnalysisWithMultiparticleCorrelations.h:333
 AliFlowAnalysisWithMultiparticleCorrelations.h:334
 AliFlowAnalysisWithMultiparticleCorrelations.h:335
 AliFlowAnalysisWithMultiparticleCorrelations.h:336
 AliFlowAnalysisWithMultiparticleCorrelations.h:337
 AliFlowAnalysisWithMultiparticleCorrelations.h:338
 AliFlowAnalysisWithMultiparticleCorrelations.h:339
 AliFlowAnalysisWithMultiparticleCorrelations.h:340
 AliFlowAnalysisWithMultiparticleCorrelations.h:341
 AliFlowAnalysisWithMultiparticleCorrelations.h:342
 AliFlowAnalysisWithMultiparticleCorrelations.h:343
 AliFlowAnalysisWithMultiparticleCorrelations.h:344
 AliFlowAnalysisWithMultiparticleCorrelations.h:345
 AliFlowAnalysisWithMultiparticleCorrelations.h:346
 AliFlowAnalysisWithMultiparticleCorrelations.h:347
 AliFlowAnalysisWithMultiparticleCorrelations.h:348
 AliFlowAnalysisWithMultiparticleCorrelations.h:349
 AliFlowAnalysisWithMultiparticleCorrelations.h:350
 AliFlowAnalysisWithMultiparticleCorrelations.h:351
 AliFlowAnalysisWithMultiparticleCorrelations.h:352
 AliFlowAnalysisWithMultiparticleCorrelations.h:353
 AliFlowAnalysisWithMultiparticleCorrelations.h:354
 AliFlowAnalysisWithMultiparticleCorrelations.h:355
 AliFlowAnalysisWithMultiparticleCorrelations.h:356
 AliFlowAnalysisWithMultiparticleCorrelations.h:357
 AliFlowAnalysisWithMultiparticleCorrelations.h:358
 AliFlowAnalysisWithMultiparticleCorrelations.h:359
 AliFlowAnalysisWithMultiparticleCorrelations.h:360
 AliFlowAnalysisWithMultiparticleCorrelations.h:361
 AliFlowAnalysisWithMultiparticleCorrelations.h:362
 AliFlowAnalysisWithMultiparticleCorrelations.h:363
 AliFlowAnalysisWithMultiparticleCorrelations.h:364
 AliFlowAnalysisWithMultiparticleCorrelations.h:365
 AliFlowAnalysisWithMultiparticleCorrelations.h:366
 AliFlowAnalysisWithMultiparticleCorrelations.h:367
 AliFlowAnalysisWithMultiparticleCorrelations.h:368
 AliFlowAnalysisWithMultiparticleCorrelations.h:369
 AliFlowAnalysisWithMultiparticleCorrelations.h:370
 AliFlowAnalysisWithMultiparticleCorrelations.h:371
 AliFlowAnalysisWithMultiparticleCorrelations.h:372
 AliFlowAnalysisWithMultiparticleCorrelations.h:373
 AliFlowAnalysisWithMultiparticleCorrelations.h:374
 AliFlowAnalysisWithMultiparticleCorrelations.h:375
 AliFlowAnalysisWithMultiparticleCorrelations.h:376
 AliFlowAnalysisWithMultiparticleCorrelations.h:377
 AliFlowAnalysisWithMultiparticleCorrelations.h:378
 AliFlowAnalysisWithMultiparticleCorrelations.h:379
 AliFlowAnalysisWithMultiparticleCorrelations.h:380
 AliFlowAnalysisWithMultiparticleCorrelations.h:381
 AliFlowAnalysisWithMultiparticleCorrelations.h:382
 AliFlowAnalysisWithMultiparticleCorrelations.h:383
 AliFlowAnalysisWithMultiparticleCorrelations.h:384
 AliFlowAnalysisWithMultiparticleCorrelations.h:385
 AliFlowAnalysisWithMultiparticleCorrelations.h:386
 AliFlowAnalysisWithMultiparticleCorrelations.h:387
 AliFlowAnalysisWithMultiparticleCorrelations.h:388
 AliFlowAnalysisWithMultiparticleCorrelations.h:389
 AliFlowAnalysisWithMultiparticleCorrelations.h:390
 AliFlowAnalysisWithMultiparticleCorrelations.h:391
 AliFlowAnalysisWithMultiparticleCorrelations.h:392
 AliFlowAnalysisWithMultiparticleCorrelations.h:393
 AliFlowAnalysisWithMultiparticleCorrelations.h:394
 AliFlowAnalysisWithMultiparticleCorrelations.h:395
 AliFlowAnalysisWithMultiparticleCorrelations.h:396
 AliFlowAnalysisWithMultiparticleCorrelations.h:397
 AliFlowAnalysisWithMultiparticleCorrelations.h:398
 AliFlowAnalysisWithMultiparticleCorrelations.h:399
 AliFlowAnalysisWithMultiparticleCorrelations.h:400
 AliFlowAnalysisWithMultiparticleCorrelations.h:401
 AliFlowAnalysisWithMultiparticleCorrelations.h:402
 AliFlowAnalysisWithMultiparticleCorrelations.h:403
 AliFlowAnalysisWithMultiparticleCorrelations.h:404
 AliFlowAnalysisWithMultiparticleCorrelations.h:405
 AliFlowAnalysisWithMultiparticleCorrelations.h:406
 AliFlowAnalysisWithMultiparticleCorrelations.h:407
 AliFlowAnalysisWithMultiparticleCorrelations.h:408
 AliFlowAnalysisWithMultiparticleCorrelations.h:409
 AliFlowAnalysisWithMultiparticleCorrelations.h:410
 AliFlowAnalysisWithMultiparticleCorrelations.h:411
 AliFlowAnalysisWithMultiparticleCorrelations.h:412
 AliFlowAnalysisWithMultiparticleCorrelations.h:413
 AliFlowAnalysisWithMultiparticleCorrelations.h:414
 AliFlowAnalysisWithMultiparticleCorrelations.h:415
 AliFlowAnalysisWithMultiparticleCorrelations.h:416
 AliFlowAnalysisWithMultiparticleCorrelations.h:417
 AliFlowAnalysisWithMultiparticleCorrelations.h:418
 AliFlowAnalysisWithMultiparticleCorrelations.h:419
 AliFlowAnalysisWithMultiparticleCorrelations.h:420
 AliFlowAnalysisWithMultiparticleCorrelations.h:421
 AliFlowAnalysisWithMultiparticleCorrelations.h:422
 AliFlowAnalysisWithMultiparticleCorrelations.h:423
 AliFlowAnalysisWithMultiparticleCorrelations.h:424
 AliFlowAnalysisWithMultiparticleCorrelations.h:425
 AliFlowAnalysisWithMultiparticleCorrelations.h:426
 AliFlowAnalysisWithMultiparticleCorrelations.h:427
 AliFlowAnalysisWithMultiparticleCorrelations.h:428
 AliFlowAnalysisWithMultiparticleCorrelations.h:429
 AliFlowAnalysisWithMultiparticleCorrelations.h:430
 AliFlowAnalysisWithMultiparticleCorrelations.h:431