]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - PWG/FLOW/Tasks/AliAnalysisTaskMultiparticleCorrelations.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWG / FLOW / Tasks / AliAnalysisTaskMultiparticleCorrelations.cxx
... / ...
CommitLineData
1/*************************************************************************
2* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
3* *
4* Author: The ALICE Off-line Project. *
5* Contributors are mentioned in the code where appropriate. *
6* *
7* Permission to use, copy, modify and distribute this software and its *
8* documentation strictly for non-commercial purposes is hereby granted *
9* without fee, provided that the above copyright notice appears in all *
10* copies and that both the copyright notice and this permission notice *
11* appear in the supporting documentation. The authors make no claims *
12* about the suitability of this software for any purpose. It is *
13* provided "as is" without express or implied warranty. *
14**************************************************************************/
15
16/****************************************
17 * analysis task for flow analysis with *
18 * multi-particle correlations *
19 * *
20 * author: Ante Bilandzic *
21 * (abilandzic@gmail.com) *
22 ***************************************/
23
24#include "Riostream.h"
25#include "AliFlowEventSimple.h"
26#include "AliAnalysisTaskMultiparticleCorrelations.h"
27#include "AliFlowAnalysisWithMultiparticleCorrelations.h"
28#include "AliLog.h"
29
30using std::cout;
31using std::endl;
32
33ClassImp(AliAnalysisTaskMultiparticleCorrelations)
34
35//================================================================================================================
36
37AliAnalysisTaskMultiparticleCorrelations::AliAnalysisTaskMultiparticleCorrelations(const char *name, Bool_t useParticleWeights):
38 AliAnalysisTaskSE(name),
39 fEvent(NULL),
40 fMPC(NULL),
41 fHistList(NULL),
42 fUseInternalFlags(kFALSE),
43 fMinNoRPs(-44),
44 fMaxNoRPs(-44),
45 fExactNoRPs(-44),
46 fFillControlHistograms(kFALSE),
47 fFillKinematicsHist(kFALSE),
48 fFillMultDistributionsHist(kFALSE),
49 fFillMultCorrelationsHist(kFALSE),
50 fCalculateQvector(kFALSE),
51 fPhiWeightsHist(NULL),
52 fPtWeightsHist(NULL),
53 fEtaWeightsHist(NULL),
54 fCalculateCorrelations(kFALSE),
55 fCalculateIsotropic(kFALSE),
56 fCalculateSame(kFALSE),
57 fSkipZeroHarmonics(kFALSE),
58 fCalculateSameIsotropic(kFALSE),
59 fCalculateAll(kFALSE),
60 fDontGoBeyond(0),
61 fCalculateCumulants(kFALSE),
62 fCrossCheckWithNestedLoops(kFALSE),
63 fCalculateStandardCandles(kFALSE)
64 {
65 // Constructor.
66
67 AliDebug(2,"AliAnalysisTaskMultiparticleCorrelations::AliAnalysisTaskMultiparticleCorrelations(const char *name, Bool_t useParticleWeights)");
68
69 // Define input and output slots here
70 // Input slot #0 works with an AliFlowEventSimple
71 DefineInput(0, AliFlowEventSimple::Class());
72 // Input slot #1 is needed for the weights input file:
73 if(useParticleWeights)
74 {
75 DefineInput(1, TList::Class());
76 }
77 // Output slot #0 is reserved
78 // Output slot #1 writes into a TList container
79 DefineOutput(1, TList::Class());
80
81 // ...
82
83} // AliAnalysisTaskMultiparticleCorrelations::AliAnalysisTaskMultiparticleCorrelations(const char *name, Bool_t useParticleWeights):
84
85//================================================================================================================
86
87AliAnalysisTaskMultiparticleCorrelations::AliAnalysisTaskMultiparticleCorrelations():
88 AliAnalysisTaskSE(),
89 fEvent(NULL),
90 fMPC(NULL),
91 fHistList(NULL),
92 fUseInternalFlags(kFALSE),
93 fMinNoRPs(-44),
94 fMaxNoRPs(-44),
95 fExactNoRPs(-44),
96 fFillControlHistograms(kFALSE),
97 fFillKinematicsHist(kFALSE),
98 fFillMultDistributionsHist(kFALSE),
99 fFillMultCorrelationsHist(kFALSE),
100 fCalculateQvector(kFALSE),
101 fPhiWeightsHist(NULL),
102 fPtWeightsHist(NULL),
103 fEtaWeightsHist(NULL),
104 fCalculateCorrelations(kFALSE),
105 fCalculateIsotropic(kFALSE),
106 fCalculateSame(kFALSE),
107 fSkipZeroHarmonics(kFALSE),
108 fCalculateSameIsotropic(kFALSE),
109 fCalculateAll(kFALSE),
110 fDontGoBeyond(0),
111 fCalculateCumulants(kFALSE),
112 fCrossCheckWithNestedLoops(kFALSE),
113 fCalculateStandardCandles(kFALSE)
114 {
115 // Dummy constructor.
116
117 AliDebug(2,"AliAnalysisTaskMultiparticleCorrelations::AliAnalysisTaskMultiparticleCorrelations()");
118
119 // ...
120
121} // AliAnalysisTaskMultiparticleCorrelations::AliAnalysisTaskMultiparticleCorrelations():
122
123//================================================================================================================
124
125void AliAnalysisTaskMultiparticleCorrelations::UserCreateOutputObjects()
126{
127 // Called at every worker node to initialize.
128
129 AliDebug(2,"AliAnalysisTaskMultiparticleCorrelations::UserCreateOutputObjects()");
130
131 // Analyser:
132 fMPC = new AliFlowAnalysisWithMultiparticleCorrelations();
133
134 // Setters:
135 if(fUseInternalFlags){fMPC->SetMinNoRPs(fMinNoRPs);}
136 if(fUseInternalFlags){fMPC->SetMaxNoRPs(fMaxNoRPs);}
137 if(fUseInternalFlags){fMPC->SetExactNoRPs(fExactNoRPs);}
138 fMPC->SetFillControlHistograms(fFillControlHistograms);
139 fMPC->SetFillKinematicsHist(fFillKinematicsHist);
140 fMPC->SetFillMultDistributionsHist(fFillMultDistributionsHist);
141 fMPC->SetFillMultCorrelationsHist(fFillMultCorrelationsHist);
142 fMPC->SetCalculateQvector(fCalculateQvector);
143 if(fPhiWeightsHist){fMPC->SetPhiWeightsHist(fPhiWeightsHist);} // TBI is this safe enough?
144 if(fPtWeightsHist){fMPC->SetPtWeightsHist(fPtWeightsHist);} // TBI is this safe enough?
145 if(fEtaWeightsHist){fMPC->SetEtaWeightsHist(fEtaWeightsHist);} // TBI is this safe enough?
146 fMPC->SetCalculateCorrelations(fCalculateCorrelations);
147 fMPC->SetCalculateIsotropic(fCalculateIsotropic);
148 fMPC->SetCalculateSame(fCalculateSame);
149 fMPC->SetSkipZeroHarmonics(fSkipZeroHarmonics);
150 fMPC->SetCalculateSameIsotropic(fCalculateSameIsotropic);
151 fMPC->SetCalculateAll(fCalculateAll);
152 fMPC->SetDontGoBeyond(fDontGoBeyond);
153 fMPC->SetCalculateCumulants(fCalculateCumulants);
154 fMPC->SetCrossCheckWithNestedLoops(fCrossCheckWithNestedLoops);
155 fMPC->SetCalculateStandardCandles(fCalculateStandardCandles);
156
157 // Initialize:
158 fMPC->Init();
159 if(fMPC->GetHistList())
160 {
161 fHistList = fMPC->GetHistList();
162 // fHistList->Print();
163 } else
164 {
165 Printf("ERROR: Could not retrieve histogram list (MPC, Task::UserCreateOutputObjects()) !!!!");
166 }
167
168 PostData(1,fHistList);
169
170} // void AliAnalysisTaskMultiparticleCorrelations::UserCreateOutputObjects()
171
172//================================================================================================================
173
174void AliAnalysisTaskMultiparticleCorrelations::UserExec(Option_t *)
175{
176 // Main loop (called for each event).
177
178 fEvent = dynamic_cast<AliFlowEventSimple*>(GetInputData(0));
179
180 // It's time for multi-particle correlations:
181 if(fEvent)
182 {
183 fMPC->Make(fEvent);
184 } else
185 {
186 cout<<" WARNING: No input data (MPC, Task::UserExec()) !!!!"<<endl;
187 cout<<endl;
188 }
189
190 PostData(1,fHistList);
191
192} // void AliAnalysisTaskMultiparticleCorrelations::UserExec(Option_t *)
193
194//================================================================================================================
195
196void AliAnalysisTaskMultiparticleCorrelations::Terminate(Option_t *)
197{
198 // Accessing the merged output list.
199
200 fHistList = (TList*)GetOutputData(1);
201
202 fMPC = new AliFlowAnalysisWithMultiparticleCorrelations();
203
204 if(fHistList)
205 {
206 fMPC->GetOutputHistograms(fHistList);
207 fMPC->Finish();
208 PostData(1,fHistList);
209 } else
210 {
211 cout<<" WARNING: fHistList is NULL (MPC, Task::Terminate()) !!!!"<<endl;
212 cout<<endl;
213 }
214
215} // end of void AliAnalysisTaskMultiparticleCorrelations::Terminate(Option_t *)
216
217//================================================================================================================
218