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

/**************************************
 *    analysis task for fitting       * 
 *         q-distribution             *
 *                                    * 
 * authors: Naomi van der Kolk        *
 *           (kolk@nikhef.nl)         *  
 *          Raimond Snellings         *
 *           (snelling@nikhef.nl)     * 
 *          Ante Bilandzic            *
 *           (abilandzic@gmail.com)   * 
 * ***********************************/

#ifndef ALIANALYSISTASKFITTINGQDISTRIBUTION_H
#define ALIANALYSISTASKFITTINGQDISTRIBUTION_H

#include "AliAnalysisTaskSE.h"
#include "AliFlowCommonConstants.h"

class TString;
class TList;
class AliFlowEventSimple;
class AliFlowAnalysisWithFittingQDistribution;
class TH2D;

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

class AliAnalysisTaskFittingQDistribution : public AliAnalysisTaskSE{
 public:
  AliAnalysisTaskFittingQDistribution();
  AliAnalysisTaskFittingQDistribution(const char *name, Bool_t useWeights=kFALSE);
  virtual ~AliAnalysisTaskFittingQDistribution(){}; 

  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *option);
  virtual void   Terminate(Option_t *);

  void SetBookOnlyBasicCCH(Bool_t const bobcch) {this->fBookOnlyBasicCCH = bobcch;};
  Bool_t GetBookOnlyBasicCCH() const {return this->fBookOnlyBasicCCH;};   
  void SetUsePhiWeights(Bool_t const uPhiW) {this->fUsePhiWeights = uPhiW;};
  Bool_t GetUsePhiWeights() const {return this->fUsePhiWeights;};
  void SetHarmonic(Int_t const harmonic) {this->fHarmonic = harmonic;};
  Int_t GetHarmonic() const {return this->fHarmonic;};  
  // q-distribution:
  void SetqMin(Double_t const qmin) {this->fqMin = qmin;};
  Double_t GetqMin() const {return this->fqMin;};
  void SetqMax(Double_t const qmax) {this->fqMax = qmax;};
  Double_t GetqMax() const {return this->fqMax;};
  void SetqNbins(Int_t const qNbins) {this->fqNbins = qNbins;};
  Int_t GetqNbins() const {return this->fqNbins;};  
  void SetStoreqDistributionVsMult(Bool_t const sqdvm) {this->fStoreqDistributionVsMult = sqdvm;};
  Bool_t GetStoreqDistributionVsMult() const {return this->fStoreqDistributionVsMult;};  
  void SetqDistributionVsMult(TH2D* const qdvm) {this->fqDistributionVsMult = qdvm;};
  TH2D* GetqDistributionVsMult() const {return this->fqDistributionVsMult;};
  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;};
  void SetnBinsMult(Int_t const nbm) {this->fnBinsMult = nbm;};
  Int_t GetnBinsMult() const {return this->fnBinsMult;};  
  void SetDoFit(Bool_t df) {this->fDoFit = df;};
  Bool_t GetDoFit() const {return this->fDoFit;}; 
  void SetExactNoRPs(Int_t const enr) {this->fExactNoRPs = enr;};
  Int_t GetExactNoRPs() const {return this->fExactNoRPs;};
  void SetMultiplicityIs(AliFlowCommonConstants::ERefMultSource mi) {this->fMultiplicityIs = mi;};
 
 private:
  AliAnalysisTaskFittingQDistribution(const AliAnalysisTaskFittingQDistribution& aatfqd);
  AliAnalysisTaskFittingQDistribution& operator=(const AliAnalysisTaskFittingQDistribution& aatfqd);

  AliFlowEventSimple* fEvent;                    // the input event
  AliFlowAnalysisWithFittingQDistribution* fFQD; // Fitting q-distribution (FQD) object
  TList *fListHistos;                            // collection of output 
     
  Bool_t fBookOnlyBasicCCH;              // book only basis common control histrograms (by default book them all) 
  Bool_t fUseWeights;                    // use any weights
  Bool_t fUsePhiWeights;                 // phi weights
  TList* fListWeights;                   // list with weights  
  Int_t fHarmonic;                       // harmonic   
  Double_t fqMin;                        // lower boundary of TH1D *fqDistribution
  Double_t fqMax;                        // upper boundary of TH1D *fqDistribution
  Int_t fqNbins;                         // number of bins of TH1D *fqDistribution                                             
  Bool_t fStoreqDistributionVsMult;      // store q-distributions vs M
  TH2D *fqDistributionVsMult;            // distribution of Q/sqrt{M} vs multiplicity
  Double_t fMinMult;                     // minimum multiplicity
  Double_t fMaxMult;                     // maximum multiplicity
  Int_t fnBinsMult;                      // number of multiplicity bins
  Bool_t fDoFit;                         // do the final fit
  Int_t fExactNoRPs;                     // when shuffled, select only this number of RPs for the analysis 
  AliFlowCommonConstants::ERefMultSource fMultiplicityIs; // by default kRP
                                                          
  ClassDef(AliAnalysisTaskFittingQDistribution, 1); 
};

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

#endif











 AliAnalysisTaskFittingQDistribution.h:1
 AliAnalysisTaskFittingQDistribution.h:2
 AliAnalysisTaskFittingQDistribution.h:3
 AliAnalysisTaskFittingQDistribution.h:4
 AliAnalysisTaskFittingQDistribution.h:5
 AliAnalysisTaskFittingQDistribution.h:6
 AliAnalysisTaskFittingQDistribution.h:7
 AliAnalysisTaskFittingQDistribution.h:8
 AliAnalysisTaskFittingQDistribution.h:9
 AliAnalysisTaskFittingQDistribution.h:10
 AliAnalysisTaskFittingQDistribution.h:11
 AliAnalysisTaskFittingQDistribution.h:12
 AliAnalysisTaskFittingQDistribution.h:13
 AliAnalysisTaskFittingQDistribution.h:14
 AliAnalysisTaskFittingQDistribution.h:15
 AliAnalysisTaskFittingQDistribution.h:16
 AliAnalysisTaskFittingQDistribution.h:17
 AliAnalysisTaskFittingQDistribution.h:18
 AliAnalysisTaskFittingQDistribution.h:19
 AliAnalysisTaskFittingQDistribution.h:20
 AliAnalysisTaskFittingQDistribution.h:21
 AliAnalysisTaskFittingQDistribution.h:22
 AliAnalysisTaskFittingQDistribution.h:23
 AliAnalysisTaskFittingQDistribution.h:24
 AliAnalysisTaskFittingQDistribution.h:25
 AliAnalysisTaskFittingQDistribution.h:26
 AliAnalysisTaskFittingQDistribution.h:27
 AliAnalysisTaskFittingQDistribution.h:28
 AliAnalysisTaskFittingQDistribution.h:29
 AliAnalysisTaskFittingQDistribution.h:30
 AliAnalysisTaskFittingQDistribution.h:31
 AliAnalysisTaskFittingQDistribution.h:32
 AliAnalysisTaskFittingQDistribution.h:33
 AliAnalysisTaskFittingQDistribution.h:34
 AliAnalysisTaskFittingQDistribution.h:35
 AliAnalysisTaskFittingQDistribution.h:36
 AliAnalysisTaskFittingQDistribution.h:37
 AliAnalysisTaskFittingQDistribution.h:38
 AliAnalysisTaskFittingQDistribution.h:39
 AliAnalysisTaskFittingQDistribution.h:40
 AliAnalysisTaskFittingQDistribution.h:41
 AliAnalysisTaskFittingQDistribution.h:42
 AliAnalysisTaskFittingQDistribution.h:43
 AliAnalysisTaskFittingQDistribution.h:44
 AliAnalysisTaskFittingQDistribution.h:45
 AliAnalysisTaskFittingQDistribution.h:46
 AliAnalysisTaskFittingQDistribution.h:47
 AliAnalysisTaskFittingQDistribution.h:48
 AliAnalysisTaskFittingQDistribution.h:49
 AliAnalysisTaskFittingQDistribution.h:50
 AliAnalysisTaskFittingQDistribution.h:51
 AliAnalysisTaskFittingQDistribution.h:52
 AliAnalysisTaskFittingQDistribution.h:53
 AliAnalysisTaskFittingQDistribution.h:54
 AliAnalysisTaskFittingQDistribution.h:55
 AliAnalysisTaskFittingQDistribution.h:56
 AliAnalysisTaskFittingQDistribution.h:57
 AliAnalysisTaskFittingQDistribution.h:58
 AliAnalysisTaskFittingQDistribution.h:59
 AliAnalysisTaskFittingQDistribution.h:60
 AliAnalysisTaskFittingQDistribution.h:61
 AliAnalysisTaskFittingQDistribution.h:62
 AliAnalysisTaskFittingQDistribution.h:63
 AliAnalysisTaskFittingQDistribution.h:64
 AliAnalysisTaskFittingQDistribution.h:65
 AliAnalysisTaskFittingQDistribution.h:66
 AliAnalysisTaskFittingQDistribution.h:67
 AliAnalysisTaskFittingQDistribution.h:68
 AliAnalysisTaskFittingQDistribution.h:69
 AliAnalysisTaskFittingQDistribution.h:70
 AliAnalysisTaskFittingQDistribution.h:71
 AliAnalysisTaskFittingQDistribution.h:72
 AliAnalysisTaskFittingQDistribution.h:73
 AliAnalysisTaskFittingQDistribution.h:74
 AliAnalysisTaskFittingQDistribution.h:75
 AliAnalysisTaskFittingQDistribution.h:76
 AliAnalysisTaskFittingQDistribution.h:77
 AliAnalysisTaskFittingQDistribution.h:78
 AliAnalysisTaskFittingQDistribution.h:79
 AliAnalysisTaskFittingQDistribution.h:80
 AliAnalysisTaskFittingQDistribution.h:81
 AliAnalysisTaskFittingQDistribution.h:82
 AliAnalysisTaskFittingQDistribution.h:83
 AliAnalysisTaskFittingQDistribution.h:84
 AliAnalysisTaskFittingQDistribution.h:85
 AliAnalysisTaskFittingQDistribution.h:86
 AliAnalysisTaskFittingQDistribution.h:87
 AliAnalysisTaskFittingQDistribution.h:88
 AliAnalysisTaskFittingQDistribution.h:89
 AliAnalysisTaskFittingQDistribution.h:90
 AliAnalysisTaskFittingQDistribution.h:91
 AliAnalysisTaskFittingQDistribution.h:92
 AliAnalysisTaskFittingQDistribution.h:93
 AliAnalysisTaskFittingQDistribution.h:94
 AliAnalysisTaskFittingQDistribution.h:95
 AliAnalysisTaskFittingQDistribution.h:96
 AliAnalysisTaskFittingQDistribution.h:97
 AliAnalysisTaskFittingQDistribution.h:98
 AliAnalysisTaskFittingQDistribution.h:99
 AliAnalysisTaskFittingQDistribution.h:100
 AliAnalysisTaskFittingQDistribution.h:101
 AliAnalysisTaskFittingQDistribution.h:102
 AliAnalysisTaskFittingQDistribution.h:103
 AliAnalysisTaskFittingQDistribution.h:104
 AliAnalysisTaskFittingQDistribution.h:105
 AliAnalysisTaskFittingQDistribution.h:106
 AliAnalysisTaskFittingQDistribution.h:107
 AliAnalysisTaskFittingQDistribution.h:108
 AliAnalysisTaskFittingQDistribution.h:109
 AliAnalysisTaskFittingQDistribution.h:110
 AliAnalysisTaskFittingQDistribution.h:111
 AliAnalysisTaskFittingQDistribution.h:112
 AliAnalysisTaskFittingQDistribution.h:113