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

/**********************************
 * analysis task for nested loops * 
 *                                * 
 * authors: Naomi van der Kolk    *
 *           (kolk@nikhef.nl)     *  
 *          Raimond Snellings     *
 *           (snelling@nikhef.nl) * 
 *          Ante Bilandzic        *
 *           (anteb@nikhef.nl)    * 
 * *******************************/

#ifndef ALIANALYSISTASKNESTEDLOOPS_H
#define ALIANALYSISTASKNESTEDLOOPS_H

#include "TString.h"
#include "AliAnalysisTaskSE.h"

class TString;
class TList;
class AliFlowEventSimple;
class AliFlowAnalysisWithNestedLoops;

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

class AliAnalysisTaskNestedLoops : public AliAnalysisTaskSE{
 public:
  AliAnalysisTaskNestedLoops();
  AliAnalysisTaskNestedLoops(const char *name, Bool_t useParticleWeights=kFALSE);
  virtual ~AliAnalysisTaskNestedLoops(){}; 
  
  virtual void UserCreateOutputObjects();
  virtual void UserExec(Option_t *option);
  virtual void Terminate(Option_t *);
  
  // Setters and getters:
  // 0.) Common:
  void SetHarmonic(Int_t const h) {this->fHarmonic = h;};
  Int_t GetHarmonic() const {return this->fHarmonic;}; 
  void SetOppositeChargesPOI(Bool_t const ocp) {this->fOppositeChargesPOI = ocp;};
  Bool_t GetOppositeChargesPOI() const {return this->fOppositeChargesPOI;}; 
  void SetEvaluateDifferential3pCorrelator(Bool_t const ed3pc) {this->fEvaluateDifferential3pCorrelator = ed3pc;};
  Bool_t GetEvaluateDifferential3pCorrelator() const {return this->fEvaluateDifferential3pCorrelator;};       
  // 1.) Particle weights:
  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;};
  // 2.) Nested loops for relative angle distribution (RAD): 
  void SetEvaluateNestedLoopsForRAD(Bool_t const enlfRAD) {this->fEvaluateNestedLoopsForRAD = enlfRAD;};
  Bool_t GetEvaluateNestedLoopsForRAD() const {return this->fEvaluateNestedLoopsForRAD;};
  // 3.) Debugging and cross-checking Q-cumulants:
  void SetEvaluateNestedLoopsForQC(Bool_t const enlfQC) {this->fEvaluateNestedLoopsForQC = enlfQC;};
  Bool_t GetEvaluateNestedLoopsForQC() const {return this->fEvaluateNestedLoopsForQC;};
  // 4.) Debugging and cross-checking mixed harmonics:
  void SetEvaluateNestedLoopsForMH(Bool_t const enlfMH) {this->fEvaluateNestedLoopsForMH = enlfMH;};
  Bool_t GetEvaluateNestedLoopsForMH() const {return this->fEvaluateNestedLoopsForMH;};
 
 private:
  AliAnalysisTaskNestedLoops(const AliAnalysisTaskNestedLoops& aatmh);
  AliAnalysisTaskNestedLoops& operator=(const AliAnalysisTaskNestedLoops& aatmh);
  
  AliFlowEventSimple *fEvent; // the input event
  AliFlowAnalysisWithNestedLoops *fNL; // nested loops object
  TList *fListHistos; // collection of output 
  Int_t fHarmonic; // integer n in correlators  
  Bool_t fOppositeChargesPOI; // two POIs, psi1 and psi2, in correlator <<cos[psi1+psi2-2phi3)]>> will be taken with opposite charges 
  Bool_t fEvaluateDifferential3pCorrelator; // evaluate <<cos[psi1+psi2-2phi3)]>>, where psi1 and psi2 are two POIs      
  // Particle weights:
  Bool_t fUseParticleWeights; // use any particle weights
  Bool_t fUsePhiWeights; // use phi weights
  Bool_t fUsePtWeights; // use pt weights
  Bool_t fUseEtaWeights; // use eta weights  
  TList *fWeightsList; // list with weights
  // Nested loops for relative angle distribution (RAD):
  Bool_t fEvaluateNestedLoopsForRAD; // evaluate nested loops for relative angle distribution (RAD)
  // Debugging and cross-checking Q-cumulants:
  Bool_t fEvaluateNestedLoopsForQC; // evaluate nested loops for Q-cumulants
  // Debugging and cross-checking mixed harmonics:
  Bool_t fEvaluateNestedLoopsForMH; // evaluate nested loops for mixed harmonics
  
  ClassDef(AliAnalysisTaskNestedLoops, 1); 
};

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

#endif











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