2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved.
3 * See cxx source for full Copyright notice
7 /****************************************
8 * analysis task for flow analysis with *
9 * multi-particle correlations *
11 * author: Ante Bilandzic *
12 * (abilandzic@gmail.com) *
13 ***************************************/
15 #ifndef ALIANALYSISTASKMULTIPARTICLECORRELATIONS_H
16 #define ALIANALYSISTASKMULTIPARTICLECORRELATIONS_H
18 #include "AliAnalysisTaskSE.h"
19 #include "AliFlowAnalysisWithMultiparticleCorrelations.h"
20 #include "AliFlowEventSimple.h"
22 //================================================================================================================
24 class AliAnalysisTaskMultiparticleCorrelations : public AliAnalysisTaskSE{
26 AliAnalysisTaskMultiparticleCorrelations();
27 AliAnalysisTaskMultiparticleCorrelations(const char *name, Bool_t useParticleWeights=kFALSE);
28 virtual ~AliAnalysisTaskMultiparticleCorrelations(){};
30 virtual void UserCreateOutputObjects();
31 virtual void UserExec(Option_t *option);
32 virtual void Terminate(Option_t *);
35 void SetMinNoRPs(Int_t const min) {fUseInternalFlags = kTRUE; this->fMinNoRPs = min;};
36 Int_t GetMinNoRPs() const {return this->fMinNoRPs;};
37 void SetMaxNoRPs(Int_t const max) {fUseInternalFlags = kTRUE; this->fMaxNoRPs = max;};
38 Int_t GetMaxNoRPs() const {return this->fMaxNoRPs;};
39 void SetExactNoRPs(Int_t const exact) {fUseInternalFlags = kTRUE; this->fExactNoRPs = exact;};
40 Int_t GetExactNoRPs() const {return this->fExactNoRPs;};
42 // Control histograms:
43 void SetFillControlHistograms(Bool_t const fch) {this->fFillControlHistograms = fch;};
44 Bool_t GetFillControlHistograms() const {return this->fFillControlHistograms;};
45 void SetFillKinematicsHist(Bool_t const fkh) {this->fFillKinematicsHist = fkh;};
46 Bool_t GetFillKinematicsHist() const {return this->fFillKinematicsHist;};
47 void SetFillMultDistributionsHist(Bool_t const mdh) {this->fFillMultDistributionsHist = mdh;};
48 Bool_t GetFillMultDistributionsHist() const {return this->fFillMultDistributionsHist;};
49 void SetFillMultCorrelationsHist(Bool_t const mch) {this->fFillMultCorrelationsHist = mch;};
50 Bool_t GetFillMultCorrelationsHist() const {return this->fFillMultCorrelationsHist;};
53 void SetCalculateQvector(Bool_t const cqv) {this->fCalculateQvector = cqv;};
54 Bool_t GetCalculateQvector() const {return this->fCalculateQvector;};
57 void SetPhiWeightsHist(TH1D* const phwh) {phwh->SetDirectory(0);this->fPhiWeightsHist = (TH1D*)phwh->Clone();}; // TBI
58 TH1D* GetPhiWeightsHist() const {return this->fPhiWeightsHist;};
59 void SetPtWeightsHist(TH1D* const ptwh) {ptwh->SetDirectory(0);this->fPtWeightsHist = (TH1D*)ptwh->Clone();}; // TBI
60 TH1D* GetPtWeightsHist() const {return this->fPtWeightsHist;};
61 void SetEtaWeightsHist(TH1D* const ewh) {ewh->SetDirectory(0);this->fEtaWeightsHist = (TH1D*)ewh->Clone();}; // TBI
62 TH1D* GetEtaWeightsHist() const {return this->fEtaWeightsHist;};
65 void SetCalculateCorrelations(Bool_t const cc) {this->fCalculateCorrelations = cc;};
66 Bool_t GetCalculateCorrelations() const {return this->fCalculateCorrelations;};
67 void SetCalculateIsotropic(Bool_t const ci) {this->fCalculateIsotropic = ci;};
68 Bool_t GetCalculateIsotropic() const {return this->fCalculateIsotropic;};
69 void SetCalculateSame(Bool_t const csh) {this->fCalculateSame = csh;};
70 Bool_t GetCalculateSame() const {return this->fCalculateSame;};
71 void SetSkipZeroHarmonics(Bool_t const szh) {this->fSkipZeroHarmonics = szh;};
72 Bool_t GetSkipZeroHarmonics() const {return this->fSkipZeroHarmonics;};
73 void SetCalculateSameIsotropic(Bool_t const csi) {this->fCalculateSameIsotropic = csi;};
74 Bool_t GetCalculateSameIsotropic() const {return this->fCalculateSameIsotropic;};
75 void SetCalculateAll(Bool_t const ca) {this->fCalculateAll = ca;};
76 Bool_t GetCalculateAll() const {return this->fCalculateAll;};
77 void SetDontGoBeyond(Int_t const dgb) {this->fDontGoBeyond = dgb;};
78 Int_t GetDontGoBeyond() const {return this->fDontGoBeyond;};
81 void SetCalculateCumulants(Bool_t const cc) {this->fCalculateCumulants = cc;};
82 Bool_t GetCalculateCumulants() const {return this->fCalculateCumulants;};
85 void SetCrossCheckWithNestedLoops(Bool_t const ccwnl) {this->fCrossCheckWithNestedLoops = ccwnl;};
86 Bool_t GetCrossCheckWithNestedLoops() const {return this->fCrossCheckWithNestedLoops;};
88 // 'Standard candles':
89 void SetCalculateStandardCandles(Bool_t const csc) {this->fCalculateStandardCandles = csc;};
90 Bool_t GetCalculateStandardCandles() const {return this->fCalculateStandardCandles;};
93 AliAnalysisTaskMultiparticleCorrelations(const AliAnalysisTaskMultiparticleCorrelations& aatqc);
94 AliAnalysisTaskMultiparticleCorrelations& operator=(const AliAnalysisTaskMultiparticleCorrelations& aatqc);
96 AliFlowEventSimple *fEvent; // the input event
97 AliFlowAnalysisWithMultiparticleCorrelations *fMPC; // "multi-particle correlations" object
98 TList *fHistList; // base list to hold all output object (a.k.a. grandmother of all lists)
101 Bool_t fUseInternalFlags; // use internal flags (automatically set if some internal flag is used)
102 Int_t fMinNoRPs; // minimum number of RPs required for the analysis
103 Int_t fMaxNoRPs; // maximum number of RPs allowed for the analysis
104 Int_t fExactNoRPs; // exact (randomly shuffled) number of RPs selected for the analysis
106 // Control histograms:
107 Bool_t fFillControlHistograms; // fill or not control histograms (by default they are filled)
108 Bool_t fFillKinematicsHist; // fill or not fKinematicsHist[2][3]
109 Bool_t fFillMultDistributionsHist; // fill or not TH1D *fMultDistributionsHist[3]
110 Bool_t fFillMultCorrelationsHist; // fill or not TH2D *fMultCorrelationsHist[3]
113 Bool_t fCalculateQvector; // to calculate or not to calculate Q-vector components, that's a Boolean...
116 TH1D *fPhiWeightsHist; // histogram holding phi weights
117 TH1D *fPtWeightsHist; // histogram holding pt weights
118 TH1D *fEtaWeightsHist; // histogram holding eta weights
121 Bool_t fCalculateCorrelations; // calculate and store correlations, or perhaps not, if the weather is bad...
122 Bool_t fCalculateIsotropic; // calculate only isotropic correlations
123 Bool_t fCalculateSame; // calculate only 'same abs harmonics' correlations TBI
124 Bool_t fSkipZeroHarmonics; // skip correlations which have some of the harmonicc equal to zero
125 Bool_t fCalculateSameIsotropic; // calculate all isotropic correlations in 'same abs harmonic' TBI this can be implemented better
126 Bool_t fCalculateAll; // calculate all possible correlations
127 Int_t fDontGoBeyond; // do not go beyond fDontGoBeyond-p correlators
130 Bool_t fCalculateCumulants; // calculate and store cumulants, or perhaps not, if the weather is bad...
133 Bool_t fCrossCheckWithNestedLoops; // cross-check results with nested loops
135 // 'Standard candles':
136 Bool_t fCalculateStandardCandles; // calculate and store 'standard candles'
138 ClassDef(AliAnalysisTaskMultiparticleCorrelations,1);
142 //================================================================================================================