]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FLOW/AliFlowTasks/AliAnalysisTaskQCumulants.cxx
small mods for separate task
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowTasks / AliAnalysisTaskQCumulants.cxx
CommitLineData
bc92c0cb 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* *
52021ae2 7* Permission to use, copy, modify and distribute this software and its *
bc92c0cb 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 Q-cumulants *
18 * *
19 * authors: Naomi van der Kolk *
20 * (kolk@nikhef.nl) *
21 * Raimond Snellings *
22 * (snelling@nikhef.nl) *
23 * Ante Bilandzic *
24 * (anteb@nikhef.nl) *
25 * ***********************************/
26
27#include "Riostream.h"
28#include "TChain.h"
29#include "TTree.h"
30#include "TFile.h"
31#include "TList.h"
32#include "TH1.h"
e085f1a9 33#include "TGraph.h"
bc92c0cb 34#include "TProfile.h"
35#include "TProfile2D.h"
36#include "TProfile3D.h"
37
38#include "AliAnalysisTask.h"
39#include "AliAnalysisDataSlot.h"
40#include "AliAnalysisDataContainer.h"
41#include "AliAnalysisManager.h"
42
43#include "AliESDEvent.h"
44#include "AliESDInputHandler.h"
45
46#include "AliAODEvent.h"
47#include "AliAODInputHandler.h"
48
49#include "AliMCEventHandler.h"
50#include "AliMCEvent.h"
51
29b61d43 52#include "AliCFManager.h"
bc92c0cb 53
54#include "AliAnalysisTaskQCumulants.h"
55#include "AliFlowEventSimpleMaker.h"
56#include "AliFlowAnalysisWithQCumulants.h"
57#include "AliFlowCumuConstants.h"
58#include "AliFlowCommonConstants.h"
7e58a232 59#include "AliFlowCommonHist.h"
bc92c0cb 60#include "AliFlowCommonHistResults.h"
61#include "AliQCumulantsFunctions.h"
62
63ClassImp(AliAnalysisTaskQCumulants)
64
65//================================================================================================================
66
e04e4ec5 67AliAnalysisTaskQCumulants::AliAnalysisTaskQCumulants(const char *name, Bool_t on, Bool_t useWeights):
bc92c0cb 68 AliAnalysisTask(name,""),
69 fESD(NULL),
70 fAOD(NULL),
71 fQCA(NULL),//Q-cumulant Analysis (QCA) object
72 fEventMaker(NULL),
73 fAnalysisType("ESD"),
74 fCFManager1(NULL),
75 fCFManager2(NULL),
76 fListHistos(NULL),
77 fQAInt(NULL),
78 fQADiff(NULL),
e04e4ec5 79 fQA(on),
80 fUseWeights(useWeights),
81 fUsePhiWeights(kFALSE),
82 fUsePtWeights(kFALSE),
83 fUseEtaWeights(kFALSE),
84 fListWeights(NULL)
bc92c0cb 85{
86 //constructor
87 cout<<"AliAnalysisTaskQCumulants::AliAnalysisTaskQCumulants(const char *name)"<<endl;
88
89 // Define input and output slots here
90 // Input slot #0 works with a TChain
91 DefineInput(0, TChain::Class());
92
e04e4ec5 93 // Input slot #1 is needed for the weights
94 if(useWeights)
95 {
96 DefineInput(1, TList::Class());
97 }
98
bc92c0cb 99 // Output slot #0 writes into a TList container
100 DefineOutput(0, TList::Class());
101 if(on)
102 {
103 DefineOutput(1, TList::Class());
104 DefineOutput(2, TList::Class());
105 }
e04e4ec5 106
bc92c0cb 107}
108
109AliAnalysisTaskQCumulants::AliAnalysisTaskQCumulants():
110 fESD(NULL),
111 fAOD(NULL),
112 fQCA(NULL),//Q-cumulant Analysis (QCA) object
113 fEventMaker(NULL),
114 fAnalysisType("ESD"),
115 fCFManager1(NULL),
116 fCFManager2(NULL),
117 fListHistos(NULL),
118 fQAInt(NULL),
119 fQADiff(NULL),
e04e4ec5 120 fQA(kFALSE),
121 fUseWeights(kFALSE),
122 fUsePhiWeights(kFALSE),
123 fUsePtWeights(kFALSE),
124 fUseEtaWeights(kFALSE),
125 fListWeights(NULL)
bc92c0cb 126{
127 //dummy constructor
128 cout<<"AliAnalysisTaskQCumulants::AliAnalysisTaskQCumulants()"<<endl;
129}
130
131//================================================================================================================
132
133void AliAnalysisTaskQCumulants::ConnectInputData(Option_t *)
134{
135 //connect ESD or AOD (called once)
136 cout<<"AliAnalysisTaskQCumulants::ConnectInputData(Option_t *)"<<endl;
137
138 TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
139 if (!tree)
140 {
141 Printf("ERROR: Could not read chain from input slot 0");
142 }
143 else
144 {
145 //disable all branches and enable only the needed ones
146 if (fAnalysisType == "MC") {
147 // we want to process only MC
148 tree->SetBranchStatus("*", kFALSE);
149
150 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
151
152 if (!esdH) {
153 Printf("ERROR: Could not get ESDInputHandler");
154 } else {
155 fESD = esdH->GetEvent();
156 }
157 }
158 else if (fAnalysisType == "ESD" || fAnalysisType == "ESDMC0" || fAnalysisType == "ESDMC1" ) {
159 tree->SetBranchStatus("*", kFALSE);
160 tree->SetBranchStatus("Tracks.*", kTRUE);
161
162 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
163
164 if (!esdH) {
165 Printf("ERROR: Could not get ESDInputHandler");
166 } else
167 fESD = esdH->GetEvent();
168 }
169 else if (fAnalysisType == "AOD") {
170 AliAODInputHandler *aodH = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
171
172 if (!aodH) {
173 Printf("ERROR: Could not get AODInputHandler");
174 }
175 else {
176 fAOD = aodH->GetEvent();
177 }
178 }
179 else {
180 Printf("Wrong analysis type: Only ESD, ESDMC0, ESDMC1, AOD and MC types are allowed!");
181
182 }
183 }
184}
185
186//================================================================================================================
187
188void AliAnalysisTaskQCumulants::CreateOutputObjects()
189{
190 //called at every worker node to initialize
191 cout<<"AliAnalysisTaskQCumulants::CreateOutputObjects()"<<endl;
192
193
194 //OpenFile(0);
195
196
197 if(!(fAnalysisType == "AOD" || fAnalysisType == "ESD" || fAnalysisType == "ESDMC0" || fAnalysisType == "ESDMC1" || fAnalysisType == "MC"))
198 {
199 cout<<"WRONG ANALYSIS TYPE! only ESD, ESDMC0, ESDMC1, AOD and MC are allowed."<<endl;
200 exit(1);
201 }
202
203 //event maker
204 fEventMaker = new AliFlowEventSimpleMaker();
8842fb2b 205
bc92c0cb 206 //analyser
207 fQCA = new AliFlowAnalysisWithQCumulants();
e085f1a9 208 fQCA->Init();
e04e4ec5 209
210 //weights:
211 if(fUseWeights)
212 {
213 //pass the flags to class:
214 if(fUsePhiWeights) fQCA->SetUsePhiWeights(fUsePhiWeights);
215 if(fUsePtWeights) fQCA->SetUsePtWeights(fUsePtWeights);
216 if(fUseEtaWeights) fQCA->SetUseEtaWeights(fUseEtaWeights);
217 //get data from input slot #1 which is used for weights:
218 if(GetNinputs()==2)
219 {
220 fListWeights = (TList*)GetInputData(1);
221 }
222 //pass the list with weights to class:
223 if(fListWeights) fQCA->SetWeightsList(fListWeights);
224 }
225
bc92c0cb 226 if(fQCA->GetHistList())
227 {
228 fListHistos = fQCA->GetHistList();
229 //fListHistos->Print();
230 }
231 else
232 {
233 Printf("ERROR: Could not retrieve histogram list");
234 }
e04e4ec5 235
bc92c0cb 236 //PostData(0,fListHistos);
237
238}
239
240//================================================================================================================
241
242void AliAnalysisTaskQCumulants::Exec(Option_t *)
243{
244 //main loop (called for each event)
245 if (fAnalysisType == "MC") {
246 // Process MC truth, therefore we receive the AliAnalysisManager and ask it for the AliMCEventHandler
247 // This handler can return the current MC event
248
249 AliMCEventHandler* eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
250 if (!eventHandler) {
251 Printf("ERROR: Could not retrieve MC event handler");
252 return;
253 }
254
255 AliMCEvent* mcEvent = eventHandler->MCEvent();
256 if (!mcEvent) {
257 Printf("ERROR: Could not retrieve MC event");
258 return;
259 }
260
261 Printf("MC particles: %d", mcEvent->GetNumberOfTracks());
262 fCFManager1->SetEventInfo(mcEvent);
263 fCFManager2->SetEventInfo(mcEvent);
264
265 //Q-cumulant analysis
266 AliFlowEventSimple* fEvent = fEventMaker->FillTracks(mcEvent,fCFManager1,fCFManager2);
267 fQCA->Make(fEvent);
268 delete fEvent;
269 }
270 else if (fAnalysisType == "ESD") {
271 if (!fESD) {
272 Printf("ERROR: fESD not available");
273 return;
274 }
275 Printf("There are %d tracks in this event", fESD->GetNumberOfTracks());
276
1315fe58 277 //Q-cumulant analysis
1dfa3c16 278 AliFlowEventSimple* fEvent = fEventMaker->FillTracks(fESD,fCFManager1,fCFManager2);//cuts
1315fe58 279 //AliFlowEventSimple* fEvent = fEventMaker->FillTracks(fESD);
8842fb2b 280
1315fe58 281 fQCA->Make(fEvent);
8842fb2b 282
bc92c0cb 283 delete fEvent;
284 }
285 else if (fAnalysisType == "ESDMC0") {
286 if (!fESD) {
287 Printf("ERROR: fESD not available");
288 return;
289 }
290 Printf("There are %d tracks in this event", fESD->GetNumberOfTracks());
291
292 AliMCEventHandler* eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
293 if (!eventHandler) {
294 Printf("ERROR: Could not retrieve MC event handler");
295 return;
296 }
297
298 AliMCEvent* mcEvent = eventHandler->MCEvent();
299 if (!mcEvent) {
300 Printf("ERROR: Could not retrieve MC event");
301 return;
302 }
303
304 fCFManager1->SetEventInfo(mcEvent);
305 fCFManager2->SetEventInfo(mcEvent);
306
307 //Q-cumulant analysis
308 AliFlowEventSimple* fEvent=NULL;
309 if (fAnalysisType == "ESDMC0") {
310 fEvent = fEventMaker->FillTracks(fESD, mcEvent, fCFManager1, fCFManager2, 0); //0 = kine from ESD, 1 = kine from MC
311 } else if (fAnalysisType == "ESDMC1") {
312 fEvent = fEventMaker->FillTracks(fESD, mcEvent, fCFManager1, fCFManager2, 1); //0 = kine from ESD, 1 = kine from MC
313 }
314 fQCA->Make(fEvent);
315 delete fEvent;
316 //delete mcEvent;
317 }
318
319 else if (fAnalysisType == "AOD") {
320 if (!fAOD) {
321 Printf("ERROR: fAOD not available");
322 return;
323 }
324 Printf("There are %d tracks in this event", fAOD->GetNumberOfTracks());
325
326 // analysis
327 //For the moment don't use CF //AliFlowEventSimple* fEvent = fEventMaker->FillTracks(fAOD,fCFManager1,fCFManager2);
328 AliFlowEventSimple* fEvent = fEventMaker->FillTracks(fAOD);
329 fQCA->Make(fEvent);
330 delete fEvent;
331 }
332
333 PostData(0,fListHistos);
334 if(fQA)
335 {
336 PostData(1,fQAInt);
337 PostData(2,fQADiff);
e04e4ec5 338 }
bc92c0cb 339}
340
341//================================================================================================================
342
343void AliAnalysisTaskQCumulants::Terminate(Option_t *)
8842fb2b 344{
bc92c0cb 345 //accessing the output list which contains the merged 2D and 3D profiles from all worker nodes
346 fListHistos = (TList*)GetOutputData(0);
347 //fListHistos->Print();
e04e4ec5 348
bc92c0cb 349 if(fListHistos)
350 {
8842fb2b 351 //final results (integrated flow)
1315fe58 352 TH1D *intFlowResults = dynamic_cast<TH1D*>(fListHistos->FindObject("fIntFlowResultsQC"));
bc92c0cb 353
8842fb2b 354 //final results (differential flow)
1315fe58 355 TH1D *diffFlowResults2ndOrder = dynamic_cast<TH1D*>(fListHistos->FindObject("fDiffFlowResults2ndOrderQC"));
356 TH1D *diffFlowResults4thOrder = dynamic_cast<TH1D*>(fListHistos->FindObject("fDiffFlowResults4thOrderQC"));
bc92c0cb 357
8842fb2b 358 //final results for covariances (1st bin <2*4>-<2>*<4>, 2nd bin <2*6>-<2>*<6>, ...)
1315fe58 359 TH1D *covariances = dynamic_cast<TH1D*>(fListHistos->FindObject("fCovariances"));
bc92c0cb 360
7e58a232 361 //common control histograms (taking into account only the events with 2 and more particles)
362 AliFlowCommonHist *commonHist2nd = dynamic_cast<AliFlowCommonHist*>(fListHistos->FindObject("AliFlowCommonHist2ndOrderQC"));
363
364 //common control histograms (taking into account only the events with 4 and more particles)
365 AliFlowCommonHist *commonHist4th = dynamic_cast<AliFlowCommonHist*>(fListHistos->FindObject("AliFlowCommonHist4thOrderQC"));
366
367 //common control histograms (taking into account only the events with 6 and more particles)
368 AliFlowCommonHist *commonHist6th = dynamic_cast<AliFlowCommonHist*>(fListHistos->FindObject("AliFlowCommonHist6thOrderQC"));
369
370 //common control histograms (taking into account only the events with 8 and more particles)
371 AliFlowCommonHist *commonHist8th = dynamic_cast<AliFlowCommonHist*>(fListHistos->FindObject("AliFlowCommonHist8thOrderQC"));
372
8842fb2b 373 //common histograms to store the final results for the 2nd order integrated and differential flow
374 AliFlowCommonHistResults *commonHistRes2nd = dynamic_cast<AliFlowCommonHistResults*>(fListHistos->FindObject("AliFlowCommonHistResults2ndOrderQC"));
bc92c0cb 375
8842fb2b 376 //common histograms to store the final results for the 4th order integrated and differential flow
377 AliFlowCommonHistResults *commonHistRes4th = dynamic_cast<AliFlowCommonHistResults*>(fListHistos->FindObject("AliFlowCommonHistResults4thOrderQC"));
bc92c0cb 378
8842fb2b 379 //common histograms to store the final results for the 6th order integrated and differential flow
380 AliFlowCommonHistResults *commonHistRes6th = dynamic_cast<AliFlowCommonHistResults*>(fListHistos->FindObject("AliFlowCommonHistResults6thOrderQC"));
bc92c0cb 381
8842fb2b 382 //common histograms to store the final results for the 8th order integrated and differential flow
383 AliFlowCommonHistResults *commonHistRes8th = dynamic_cast<AliFlowCommonHistResults*>(fListHistos->FindObject("AliFlowCommonHistResults8thOrderQC"));
bc92c0cb 384
8842fb2b 385 //average selected multiplicity (for int. flow)
386 TProfile *AvMult = dynamic_cast<TProfile*>(fListHistos->FindObject("fAvMultIntFlowQC"));
bc92c0cb 387
e085f1a9 388 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
389 // !!!! to be removed !!!!
390 //profiles containing the Q-vectors from all events
391 TProfile *qvectorForEachEventX = dynamic_cast<TProfile*>(fListHistos->FindObject("fQvectorForEachEventX"));
392 TProfile *qvectorForEachEventY = dynamic_cast<TProfile*>(fListHistos->FindObject("fQvectorForEachEventY"));
393 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
394
8842fb2b 395 //multi-particle correlations calculated from Q-vectors
396 TProfile *QCorrelations = dynamic_cast<TProfile*>(fListHistos->FindObject("fQCorrelations"));
bc92c0cb 397
8842fb2b 398 //average of products: 1st bin: <2*4>, 2nd bin: <2*6>, ...
399 TProfile *QProduct = dynamic_cast<TProfile*>(fListHistos->FindObject("fQProduct"));
bc92c0cb 400
1dfa3c16 401 //average 2-, 3- and 4-particle correlations per pt-bin
ae733b3b 402 TProfile *binnedPt2p1n1nRP = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f2PerPtBin1n1nRP"));
403 TProfile *binnedPt2p2n2nRP = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f2PerPtBin2n2nRP"));
404 TProfile *binnedPt3p2n1n1nRP = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f3PerPtBin2n1n1nRP"));
405 TProfile *binnedPt3p1n1n2nRP = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f3PerPtBin1n1n2nRP"));
406 TProfile *binnedPt4p1n1n1n1nRP = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f4PerPtBin1n1n1n1nRP"));
1dfa3c16 407
408 //average 2-, 3- and 4-particle correlations per eta-bin
ae733b3b 409 TProfile *binnedEta2p1n1nRP = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f2PerEtaBin1n1nRP"));
410 TProfile *binnedEta2p2n2nRP = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f2PerEtaBin2n2nRP"));
411 TProfile *binnedEta3p2n1n1nRP = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f3PerEtaBin2n1n1nRP"));
412 TProfile *binnedEta3p1n1n2nRP = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f3PerEtaBin1n1n2nRP"));
413 TProfile *binnedEta4p1n1n1n1nRP = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f4PerEtaBin1n1n1n1nRP"));
1dfa3c16 414
415 //average 2-, 3- and 4-particle correlations per pt-bin
ae733b3b 416 TProfile *binnedPt2p1n1nPOI = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f2PerPtBin1n1nPOI"));
417 TProfile *binnedPt2p2n2nPOI = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f2PerPtBin2n2nPOI"));
418 TProfile *binnedPt3p2n1n1nPOI = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f3PerPtBin2n1n1nPOI"));
419 TProfile *binnedPt3p1n1n2nPOI = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f3PerPtBin1n1n2nPOI"));
420 TProfile *binnedPt4p1n1n1n1nPOI = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f4PerPtBin1n1n1n1nPOI"));
1dfa3c16 421
422 //average 2-, 3- and 4-particle correlations per eta-bin
ae733b3b 423 TProfile *binnedEta2p1n1nPOI = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f2PerEtaBin1n1nPOI"));
424 TProfile *binnedEta2p2n2nPOI = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f2PerEtaBin2n2nPOI"));
425 TProfile *binnedEta3p2n1n1nPOI = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f3PerEtaBin2n1n1nPOI"));
426 TProfile *binnedEta3p1n1n2nPOI = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f3PerEtaBin1n1n2nPOI"));
427 TProfile *binnedEta4p1n1n1n1nPOI = dynamic_cast<TProfile*>((dynamic_cast<TList*>(fListHistos->FindObject("DifferentialFlow")))->FindObject("f4PerEtaBin1n1n1n1nPOI"));
e085f1a9 428
8842fb2b 429 //average values of Q-vector components (1st bin: <Q_x>, 2nd bin: <Q_y>, 3rd bin: <(Q_x)^2>, 4th bin: <(Q_y)^2>)
430 TProfile *QVectorComponents = dynamic_cast<TProfile*>(fListHistos->FindObject("fQvectorComponents"));
431
432 //multi-particle correlations calculated with nested loop
433 TProfile *DirectCorrelations = dynamic_cast<TProfile*>(fListHistos->FindObject("fDirectCorrelations"));
434
52021ae2 435 //----------------------------------------------------
8842fb2b 436
437 fQCA = new AliFlowAnalysisWithQCumulants();
438
439 fQCA->SetIntFlowResults(intFlowResults);
440 fQCA->SetDiffFlowResults2nd(diffFlowResults2ndOrder);
441 fQCA->SetDiffFlowResults4th(diffFlowResults4thOrder);
442 fQCA->SetCovariances(covariances);
7e58a232 443
444 fQCA->SetCommonHists2nd(commonHist2nd);
445 fQCA->SetCommonHists4th(commonHist4th);
446 fQCA->SetCommonHists6th(commonHist6th);
447 fQCA->SetCommonHists8th(commonHist8th);
8842fb2b 448
449 fQCA->SetCommonHistsResults2nd(commonHistRes2nd);
450 fQCA->SetCommonHistsResults4th(commonHistRes4th);
451 fQCA->SetCommonHistsResults6th(commonHistRes6th);
452 fQCA->SetCommonHistsResults8th(commonHistRes8th);
453
454 fQCA->SetAverageMultiplicity(AvMult);
e085f1a9 455 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
456 // !!!! to be removed !!!!
457 fQCA->SetQvectorForEachEventX(qvectorForEachEventX);
458 fQCA->SetQvectorForEachEventY(qvectorForEachEventY);
459 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
8842fb2b 460 fQCA->SetQCorrelations(QCorrelations);
461 fQCA->SetQProduct(QProduct);
462 fQCA->SetQVectorComponents(QVectorComponents);
463
1dfa3c16 464 fQCA->SetTwo1n1nPerPtBinRP(binnedPt2p1n1nRP);
465 fQCA->SetTwo2n2nPerPtBinRP(binnedPt2p2n2nRP);
466 fQCA->SetThree2n1n1nPerPtBinRP(binnedPt3p2n1n1nRP);
467 fQCA->SetThree1n1n2nPerPtBinRP(binnedPt3p1n1n2nRP);
468 fQCA->SetFour1n1n1n1nPerPtBinRP(binnedPt4p1n1n1n1nRP);
469
470 fQCA->SetTwo1n1nPerEtaBinRP(binnedEta2p1n1nRP);
471 fQCA->SetTwo2n2nPerEtaBinRP(binnedEta2p2n2nRP);
472 fQCA->SetThree2n1n1nPerEtaBinRP(binnedEta3p2n1n1nRP);
473 fQCA->SetThree1n1n2nPerEtaBinRP(binnedEta3p1n1n2nRP);
474 fQCA->SetFour1n1n1n1nPerEtaBinRP(binnedEta4p1n1n1n1nRP);
475
476 fQCA->SetTwo1n1nPerPtBinPOI(binnedPt2p1n1nPOI);
477 fQCA->SetTwo2n2nPerPtBinPOI(binnedPt2p2n2nPOI);
478 fQCA->SetThree2n1n1nPerPtBinPOI(binnedPt3p2n1n1nPOI);
479 fQCA->SetThree1n1n2nPerPtBinPOI(binnedPt3p1n1n2nPOI);
480 fQCA->SetFour1n1n1n1nPerPtBinPOI(binnedPt4p1n1n1n1nPOI);
481
482 fQCA->SetTwo1n1nPerEtaBinPOI(binnedEta2p1n1nPOI);
483 fQCA->SetTwo2n2nPerEtaBinPOI(binnedEta2p2n2nPOI);
484 fQCA->SetThree2n1n1nPerEtaBinPOI(binnedEta3p2n1n1nPOI);
485 fQCA->SetThree1n1n2nPerEtaBinPOI(binnedEta3p1n1n2nPOI);
486 fQCA->SetFour1n1n1n1nPerEtaBinPOI(binnedEta4p1n1n1n1nPOI);
bc92c0cb 487
8842fb2b 488 fQCA->SetDirectCorrelations(DirectCorrelations);
bc92c0cb 489
8842fb2b 490 fQCA->Finish();
52021ae2 491
492 //----------------------------------------------------
bc92c0cb 493 }
494 else
495 {
ae733b3b 496 cout<<" WARNING: QC histogram list pointer is NULL."<<endl;
497 cout<<endl;
bc92c0cb 498 }
499}
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520