AliPhysics  f9b5d69 (f9b5d69)
AliAnalysisTaskCMEV0.cxx
Go to the documentation of this file.
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 
17 // CME correlator study using VO.
18 // Author: Rihan Haque (mhaque@cern.ch)
20 
21 
22 
23 #include <TGrid.h>
24 #include <TFile.h>
25 #include <TList.h>
26 #include "TMatrixDSym.h"
27 #include "Riostream.h"
28 #include "AliAnalysisManager.h"
29 #include "AliInputEventHandler.h"
30 #include "AliOADBContainer.h"
31 #include "AliMultSelection.h"
32 #include "AliMultiplicity.h"
33 #include "AliAnalysisUtils.h"
34 #include "AliVVertex.h"
35 #include "AliAODTrack.h"
36 #include "AliAODEvent.h"
37 #include "AliAODHeader.h"
38 #include "AliAODVertex.h"
39 #include "AliAODVZERO.h"
40 #include "AliAODZDC.h"
41 #include "AliFlowEvent.h"
42 #include "AliFlowEventSimple.h"
43 #include "AliAnalysisTaskCMEV0.h"
44 
45 
46 using std::endl;
47 using std::cout;
48 
49 ClassImp(AliAnalysisTaskCMEV0)
50 
52  fEvent(NULL),
53  fMultSelection(NULL),
54  fAnalysisUtil(NULL),
55  fListHistos(NULL),
56  fListCalibs(NULL),
57  fListNUAHist(NULL),
58  fListFBHijing(NULL),
59  fListNUACorr(NULL),
60  fListZDNCorr(NULL),
61  fListV0MCorr(NULL),
62  fRejectPileUp(kTRUE),
63  fRejectPileUpTight(kTRUE),
64  bFillAvgTPCQn(kFALSE),
65  bFillEtaPhiNUA(kFALSE),
66  bApplyNUACorr(kFALSE),
67  bApplyZDCCorr(kFALSE),
68  bApplyNUAforEP(kFALSE),
69  bFillZDCinfo(kFALSE),
70  bSkipNestedTrk(kFALSE),
71  bRemNegTrkRndm(kFALSE),
72  bApplyV0MCorr(kFALSE),
73  sDataSet("2015"),
74  sAnalysisSet("DoGainEq"),
75  sCentEstimator("V0"),
76  sFileNUA("NewR"),
77  sMCdimension("1D"),
78  fRunFlag(0),
79  fOldRunNum(0),
80  fievent(0),
81  EvtCent(0.0),
82  fHarmonicN(1),
83  fHarmonicM(1),
84  fHarmonicPsi(2),
85  fPileUpSlopeParm(3.43),
86  fPileUpConstParm(43),
87  fHist_Event_count(NULL),
88  fPileUpMultSelCount(NULL),
89  fPileUpCount(NULL),
90  fTaskConfigParm(NULL),
91  fMultV0(NULL),
92  fQxnmV0A(NULL),
93  fQynmV0A(NULL),
94  fQxnsV0A(NULL),
95  fQynsV0A(NULL),
96  fQxnmV0C(NULL),
97  fQynmV0C(NULL),
98  fQxnsV0C(NULL),
99  fQynsV0C(NULL),
100  fHV0AEventPlaneVsCent(NULL),
101  fHV0CEventPlaneVsCent(NULL),
102  fHTPCEventPlaneVsCent(NULL),
103  fHEnergyZNCvsCent(NULL),
104  fHEnergyZNAvsCent(NULL),
105  fHEnergyZPCvsCent(NULL),
106  fHEnergyZPAvsCent(NULL),
107  fHEnergyZNCvsCentRun(NULL),
108  fHEnergyZNAvsCentRun(NULL),
109  fHEnergyZPCvsCentRun(NULL),
110  fHEnergyZPAvsCentRun(NULL),
111  fHEnergyZPCvsZPA(NULL),
112  fHEnergyZNCvsZNA(NULL),
113  hUnderOverBinNUApos(NULL),
114  hUnderOverBinNUAneg(NULL),
115  fHCentBinTrkRecenter(NULL),
116  fHCorrectZDNP(NULL),
117  fV0AQ2xVsCentRun(NULL),
118  fV0AQ2yVsCentRun(NULL),
119  fV0CQ2xVsCentRun(NULL),
120  fV0CQ2yVsCentRun(NULL),
121  fV0AQ3xVsCentRun(NULL),
122  fV0AQ3yVsCentRun(NULL),
123  fV0CQ3xVsCentRun(NULL),
124  fV0CQ3yVsCentRun(NULL),
125  fTPCQ2xVsCentRun(NULL),
126  fTPCQ2yVsCentRun(NULL),
127  mListNUAPos(NULL),
128  mListNUANeg(NULL),
129  fileNUApos(NULL),
130  fileNUAneg(NULL),
131  fAvgMultCentRun(NULL),
132  fAvgWgtMultCentRun(NULL),
133  fAvgPOIposCentRun(NULL),
134  fAvgPOInegCentRun(NULL),
135  fAvgPOIPPCentRun(NULL),
136  fAvgPOINNCentRun(NULL),
137  fAvgPOIOSCentRun(NULL),
138  fV0MultChVsRun(NULL),
139  fEventStatvsRun(NULL),
140  fEtaBinFinderForQA(NULL),
141  fVzBinFinderForNUA(NULL),
142  fHistVtxZvsRun(NULL),
143  fHistVtxXvsRun(NULL),
144  fHistVtxYvsRun(NULL),
145  fRejectRatioVsCR(NULL),
146  fCentDistvsRun(NULL),
147  fHCorrectV0M(NULL),
148  fCentV0MvsVzRun(NULL),
149  fCent3pvsVzRun(NULL),
150  fTPCvsGlobalTrk(NULL),
151  fTPCuncutvsGlobal(NULL),
152  fGlobalTracks(NULL),
153  fTPCvsITSfb96(NULL),
154  fTPCvsITSfb32(NULL),
155  fTPCFEvsITSfb96(NULL),
156  fCentCL1vsVzRun(NULL),
157  fVzDistribuion(NULL)
158 {
159  for(int i=0;i<5;i++){
160  fHCorrectNUApos[i] = NULL;
161  fHCorrectNUAneg[i] = NULL;
162  }
163  for(int i=0;i<90;i++){
164  runNums[i] = 0;
165  for(int j=0;j<5;j++){
166  fHist3DEtaPhiVz_Pos_Run[j][i] = NULL;
167  fHist3DEtaPhiVz_Neg_Run[j][i] = NULL;
168  }
169  }
170  for(int i=0;i<10;i++){
171  fFB_Efficiency_Cent[i] = NULL;
172  fFB_Efficiency_Pos[i] = NULL;
173  fFB_Efficiency_Neg[i] = NULL;
174  }
175  for(int i=0;i<2;i++){
176  for(int j=0;j<3;j++){
177  fHist_Corr3p_SP_Norm_PN[i][j] = NULL;
178  fHist_Corr3p_SP_Norm_PP[i][j] = NULL;
179  fHist_Corr3p_SP_Norm_NN[i][j] = NULL;
180  fHist_Reso2n_SP_Norm_Det[i][j] = NULL;
181  }
182  }
183  for(int i=0;i<2;i++){
184  for(int j=0;j<3;j++){
185  fHist_Corr3p_EP_Norm_PN[i][j] = NULL;
186  fHist_Corr3p_EP_Norm_PP[i][j] = NULL;
187  fHist_Corr3p_EP_Norm_NN[i][j] = NULL;
188  fHist_Reso2n_EP_Norm_Det[i][j] = NULL;
189  }
190  }
191  for(int i=0;i<2;i++){
192  fHist_Corr3p_vsRun_EP_PN[i] = NULL;
193  fHist_Corr3p_vsRun_EP_PP[i] = NULL;
194  fHist_Corr3p_vsRun_EP_NN[i] = NULL;
195  }
196  for(int i=0;i<3;i++){
197  fHist_Corr3p_ZDN_SP_PN[i] = NULL;
198  fHist_Corr3p_ZDN_SP_PP[i] = NULL;
199  fHist_Corr3p_ZDN_SP_NN[i] = NULL;
200  fHist_Reso2n_ZDN_SP_Det[i] = NULL;
201  }
202  for(int i=0;i<2;i++){
203  for(int j=0;j<6;j++){
204  fHist_Corr3p_pTSum_EP_V0A_PN[i][j] = NULL;
205  fHist_Corr3p_pTSum_EP_V0A_PP[i][j] = NULL;
206  fHist_Corr3p_pTSum_EP_V0A_NN[i][j] = NULL;
207  fHist_Corr3p_pTSum_EP_V0C_PN[i][j] = NULL;
208  fHist_Corr3p_pTSum_EP_V0C_PP[i][j] = NULL;
209  fHist_Corr3p_pTSum_EP_V0C_NN[i][j] = NULL;
210 
211  fHist_Corr3p_pTDiff_EP_V0A_PN[i][j] = NULL;
212  fHist_Corr3p_pTDiff_EP_V0A_PP[i][j] = NULL;
213  fHist_Corr3p_pTDiff_EP_V0A_NN[i][j] = NULL;
214  fHist_Corr3p_pTDiff_EP_V0C_PN[i][j] = NULL;
215  fHist_Corr3p_pTDiff_EP_V0C_PP[i][j] = NULL;
216  fHist_Corr3p_pTDiff_EP_V0C_NN[i][j] = NULL;
217 
218  fHist_Corr3p_EtaDiff_EP_V0A_PN[i][j] = NULL;
219  fHist_Corr3p_EtaDiff_EP_V0A_PP[i][j] = NULL;
220  fHist_Corr3p_EtaDiff_EP_V0A_NN[i][j] = NULL;
221  fHist_Corr3p_EtaDiff_EP_V0C_PN[i][j] = NULL;
222  fHist_Corr3p_EtaDiff_EP_V0C_PP[i][j] = NULL;
223  fHist_Corr3p_EtaDiff_EP_V0C_NN[i][j] = NULL;
224  }
225  }
226  for(int i=0;i<10;i++){
227  fHistChPosvsEtaPtRun[i] = NULL;
228  fHistChNegvsEtaPtRun[i] = NULL;
229  }
230  for(int i=0;i<2;i++){
231  fHist_Corr3p_QAEta_SP_V0A_PN[i] = NULL;
232  fHist_Corr3p_QAEta_SP_V0A_PP[i] = NULL;
233  fHist_Corr3p_QAEta_SP_V0A_NN[i] = NULL;
234  }
235  for(int i=0;i<2;i++){
236  fHist_Corr3p_QAEta_SP_V0C_PN[i] = NULL;
237  fHist_Corr3p_QAEta_SP_V0C_PP[i] = NULL;
238  fHist_Corr3p_QAEta_SP_V0C_NN[i] = NULL;
239  }
240  for(int i=0;i<4;i++){
241  fHCos1nPosChEtaVz[i] = NULL;
242  fHCos2nPosChEtaVz[i] = NULL;
243  fHCos3nPosChEtaVz[i] = NULL;
244  fHCos4nPosChEtaVz[i] = NULL;
245  fHSin1nPosChEtaVz[i] = NULL;
246  fHSin2nPosChEtaVz[i] = NULL;
247  fHSin3nPosChEtaVz[i] = NULL;
248  fHSin4nPosChEtaVz[i] = NULL;
249 
250  fHCos1nNegChEtaVz[i] = NULL;
251  fHCos2nNegChEtaVz[i] = NULL;
252  fHCos3nNegChEtaVz[i] = NULL;
253  fHCos4nNegChEtaVz[i] = NULL;
254  fHSin1nNegChEtaVz[i] = NULL;
255  fHSin2nNegChEtaVz[i] = NULL;
256  fHSin3nNegChEtaVz[i] = NULL;
257  fHSin4nNegChEtaVz[i] = NULL;
258 
259  fHCos2nDWPosChEtaVz[i] = NULL;
260  fHSin2nDWPosChEtaVz[i] = NULL;
261  fHCos2nDWNegChEtaVz[i] = NULL;
262  fHSin2nDWNegChEtaVz[i] = NULL;
263  }
264  for(int i=0;i<2;i++){
265  fHist_NonIso_SP_PP_Mag0[i] = NULL;
266  fHist_NonIso_SP_NN_Mag0[i] = NULL;
267  fHist_NonIso_SP_PP_Mag1[i] = NULL;
268  fHist_NonIso_SP_NN_Mag1[i] = NULL;
269  }
270  for(int i=0;i<2;i++){
271  fHist_Corr2p_EP_Norm_PN[i] = NULL;
272  fHist_Corr2p_EP_Norm_PP[i] = NULL;
273  fHist_Corr2p_EP_Norm_NN[i] = NULL;
274  }
275 
276  DefineInput(1, AliFlowEventSimple::Class()); // Input slot #1: AliFlowEventSimple
277 
278  DefineOutput(1,TList::Class());
279  DefineOutput(2,TList::Class());
280  DefineOutput(3,TList::Class());
281 
282 }//-------- real ---------
283 
285  fEvent(NULL),
286  fMultSelection(NULL),
287  fAnalysisUtil(NULL),
288  fListHistos(NULL),
289  fListCalibs(NULL),
290  fListNUAHist(NULL),
291  fListFBHijing(NULL),
292  fListNUACorr(NULL),
293  fListZDNCorr(NULL),
294  fListV0MCorr(NULL),
295  fRejectPileUp(kTRUE),
296  fRejectPileUpTight(kTRUE),
297  bFillAvgTPCQn(kFALSE),
298  bFillEtaPhiNUA(kFALSE),
299  bApplyNUACorr(kFALSE),
300  bApplyZDCCorr(kFALSE),
301  bApplyNUAforEP(kFALSE),
302  bFillZDCinfo(kFALSE),
303  bSkipNestedTrk(kFALSE),
304  bRemNegTrkRndm(kFALSE),
305  bApplyV0MCorr(kFALSE),
306  sDataSet("2015"),
307  sAnalysisSet("DoGainEq"),
308  sCentEstimator("V0"),
309  sFileNUA("NewR"),
310  sMCdimension("1D"),
311  fRunFlag(0),
312  fOldRunNum(0),
313  fievent(0),
314  EvtCent(0.0),
315  fHarmonicN(1),
316  fHarmonicM(1),
317  fHarmonicPsi(2),
318  fPileUpSlopeParm(3.43),
319  fPileUpConstParm(43),
320  fHist_Event_count(NULL),
321  fPileUpMultSelCount(NULL),
322  fPileUpCount(NULL),
323  fTaskConfigParm(NULL),
324  fMultV0(NULL),
325  fQxnmV0A(NULL),
326  fQynmV0A(NULL),
327  fQxnsV0A(NULL),
328  fQynsV0A(NULL),
329  fQxnmV0C(NULL),
330  fQynmV0C(NULL),
331  fQxnsV0C(NULL),
332  fQynsV0C(NULL),
333  fHV0AEventPlaneVsCent(NULL),
334  fHV0CEventPlaneVsCent(NULL),
335  fHTPCEventPlaneVsCent(NULL),
336  fHEnergyZNCvsCent(NULL),
337  fHEnergyZNAvsCent(NULL),
338  fHEnergyZPCvsCent(NULL),
339  fHEnergyZPAvsCent(NULL),
340  fHEnergyZNCvsCentRun(NULL),
341  fHEnergyZNAvsCentRun(NULL),
342  fHEnergyZPCvsCentRun(NULL),
343  fHEnergyZPAvsCentRun(NULL),
344  fHEnergyZPCvsZPA(NULL),
345  fHEnergyZNCvsZNA(NULL),
346  hUnderOverBinNUApos(NULL),
347  hUnderOverBinNUAneg(NULL),
348  fHCentBinTrkRecenter(NULL),
349  fHCorrectZDNP(NULL),
350  fV0AQ2xVsCentRun(NULL),
351  fV0AQ2yVsCentRun(NULL),
352  fV0CQ2xVsCentRun(NULL),
353  fV0CQ2yVsCentRun(NULL),
354  fV0AQ3xVsCentRun(NULL),
355  fV0AQ3yVsCentRun(NULL),
356  fV0CQ3xVsCentRun(NULL),
357  fV0CQ3yVsCentRun(NULL),
358  fTPCQ2xVsCentRun(NULL),
359  fTPCQ2yVsCentRun(NULL),
360  mListNUAPos(NULL),
361  mListNUANeg(NULL),
362  fileNUApos(NULL),
363  fileNUAneg(NULL),
364  fAvgMultCentRun(NULL),
365  fAvgWgtMultCentRun(NULL),
366  fAvgPOIposCentRun(NULL),
367  fAvgPOInegCentRun(NULL),
368  fAvgPOIPPCentRun(NULL),
369  fAvgPOINNCentRun(NULL),
370  fAvgPOIOSCentRun(NULL),
371  fV0MultChVsRun(NULL),
372  fEventStatvsRun(NULL),
373  fEtaBinFinderForQA(NULL),
374  fVzBinFinderForNUA(NULL),
375  fHistVtxZvsRun(NULL),
376  fHistVtxXvsRun(NULL),
377  fHistVtxYvsRun(NULL),
378  fRejectRatioVsCR(NULL),
379  fCentDistvsRun(NULL),
380  fHCorrectV0M(NULL),
381  fCentV0MvsVzRun(NULL),
382  fCent3pvsVzRun(NULL),
383  fTPCvsGlobalTrk(NULL),
384  fTPCuncutvsGlobal(NULL),
385  fGlobalTracks(NULL),
386  fTPCvsITSfb96(NULL),
387  fTPCvsITSfb32(NULL),
388  fTPCFEvsITSfb96(NULL),
389  fCentCL1vsVzRun(NULL),
390  fVzDistribuion(NULL)
391 {
392  for(int i=0;i<5;i++){
393  fHCorrectNUApos[i] = NULL;
394  fHCorrectNUAneg[i] = NULL;
395  }
396  for(int i=0;i<90;i++){
397  runNums[i] = 0;
398  for(int j=0;j<5;j++){
399  fHist3DEtaPhiVz_Pos_Run[j][i] = NULL;
400  fHist3DEtaPhiVz_Neg_Run[j][i] = NULL;
401  }
402  }
403  for(int i=0;i<10;i++){
404  fFB_Efficiency_Cent[i] = NULL;
405  fFB_Efficiency_Pos[i] = NULL;
406  fFB_Efficiency_Neg[i] = NULL;
407  }
408  for(int i=0;i<2;i++){
409  for(int j=0;j<3;j++){
410  fHist_Corr3p_SP_Norm_PN[i][j] = NULL;
411  fHist_Corr3p_SP_Norm_PP[i][j] = NULL;
412  fHist_Corr3p_SP_Norm_NN[i][j] = NULL;
413  fHist_Reso2n_SP_Norm_Det[i][j] = NULL;
414  }
415  }
416  for(int i=0;i<2;i++){
417  for(int j=0;j<3;j++){
418  fHist_Corr3p_EP_Norm_PN[i][j] = NULL;
419  fHist_Corr3p_EP_Norm_PP[i][j] = NULL;
420  fHist_Corr3p_EP_Norm_NN[i][j] = NULL;
421  fHist_Reso2n_EP_Norm_Det[i][j] = NULL;
422  }
423  }
424  for(int i=0;i<2;i++){
425  fHist_Corr3p_vsRun_EP_PN[i] = NULL;
426  fHist_Corr3p_vsRun_EP_PP[i] = NULL;
427  fHist_Corr3p_vsRun_EP_NN[i] = NULL;
428  }
429  for(int i=0;i<3;i++){
430  fHist_Corr3p_ZDN_SP_PN[i] = NULL;
431  fHist_Corr3p_ZDN_SP_PP[i] = NULL;
432  fHist_Corr3p_ZDN_SP_NN[i] = NULL;
433  fHist_Reso2n_ZDN_SP_Det[i] = NULL;
434  }
435  for(int i=0;i<2;i++){
436  for(int j=0;j<6;j++){
437  fHist_Corr3p_pTSum_EP_V0A_PN[i][j] = NULL;
438  fHist_Corr3p_pTSum_EP_V0A_PP[i][j] = NULL;
439  fHist_Corr3p_pTSum_EP_V0A_NN[i][j] = NULL;
440  fHist_Corr3p_pTSum_EP_V0C_PN[i][j] = NULL;
441  fHist_Corr3p_pTSum_EP_V0C_PP[i][j] = NULL;
442  fHist_Corr3p_pTSum_EP_V0C_NN[i][j] = NULL;
443 
444  fHist_Corr3p_pTDiff_EP_V0A_PN[i][j] = NULL;
445  fHist_Corr3p_pTDiff_EP_V0A_PP[i][j] = NULL;
446  fHist_Corr3p_pTDiff_EP_V0A_NN[i][j] = NULL;
447  fHist_Corr3p_pTDiff_EP_V0C_PN[i][j] = NULL;
448  fHist_Corr3p_pTDiff_EP_V0C_PP[i][j] = NULL;
449  fHist_Corr3p_pTDiff_EP_V0C_NN[i][j] = NULL;
450 
451  fHist_Corr3p_EtaDiff_EP_V0A_PN[i][j] = NULL;
452  fHist_Corr3p_EtaDiff_EP_V0A_PP[i][j] = NULL;
453  fHist_Corr3p_EtaDiff_EP_V0A_NN[i][j] = NULL;
454  fHist_Corr3p_EtaDiff_EP_V0C_PN[i][j] = NULL;
455  fHist_Corr3p_EtaDiff_EP_V0C_PP[i][j] = NULL;
456  fHist_Corr3p_EtaDiff_EP_V0C_NN[i][j] = NULL;
457  }
458  }
459  for(int i=0;i<10;i++){
460  fHistChPosvsEtaPtRun[i] = NULL;
461  fHistChNegvsEtaPtRun[i] = NULL;
462  }
463  for(int i=0;i<2;i++){
467  }
468  for(int i=0;i<2;i++){
472  }
473  for(int i=0;i<4;i++){
474  fHCos1nPosChEtaVz[i] = NULL;
475  fHCos2nPosChEtaVz[i] = NULL;
476  fHCos3nPosChEtaVz[i] = NULL;
477  fHCos4nPosChEtaVz[i] = NULL;
478  fHSin1nPosChEtaVz[i] = NULL;
479  fHSin2nPosChEtaVz[i] = NULL;
480  fHSin3nPosChEtaVz[i] = NULL;
481  fHSin4nPosChEtaVz[i] = NULL;
482 
483  fHCos1nNegChEtaVz[i] = NULL;
484  fHCos2nNegChEtaVz[i] = NULL;
485  fHCos3nNegChEtaVz[i] = NULL;
486  fHCos4nNegChEtaVz[i] = NULL;
487  fHSin1nNegChEtaVz[i] = NULL;
488  fHSin2nNegChEtaVz[i] = NULL;
489  fHSin3nNegChEtaVz[i] = NULL;
490  fHSin4nNegChEtaVz[i] = NULL;
491 
492  fHCos2nDWPosChEtaVz[i] = NULL;
493  fHSin2nDWPosChEtaVz[i] = NULL;
494  fHCos2nDWNegChEtaVz[i] = NULL;
495  fHSin2nDWNegChEtaVz[i] = NULL;
496  }
497  for(int i=0;i<2;i++){
498  fHist_NonIso_SP_PP_Mag0[i] = NULL;
499  fHist_NonIso_SP_NN_Mag0[i] = NULL;
500  fHist_NonIso_SP_PP_Mag1[i] = NULL;
501  fHist_NonIso_SP_NN_Mag1[i] = NULL;
502  }
503  for(int i=0;i<2;i++){
504  fHist_Corr2p_EP_Norm_PN[i] = NULL;
505  fHist_Corr2p_EP_Norm_PP[i] = NULL;
506  fHist_Corr2p_EP_Norm_NN[i] = NULL;
507  }
508 
509 }//-----------
510 
511 
512 
513 
515 {
517 
518  fAnalysisUtil = new AliAnalysisUtils();
519  fAnalysisUtil->SetUseMVPlpSelection(kTRUE);
520  fAnalysisUtil->SetUseOutOfBunchPileUp(kTRUE);
521 
522 
523  if(fListFBHijing) {
524  if(sMCdimension=="1D"){
525  for(int i=0;i<10;i++) {
526  fFB_Efficiency_Cent[i] = (TH1D *) fListFBHijing->FindObject(Form("eff_unbiased_%d",i));
527  }
528  }
529  else if(sMCdimension=="3D"){
530  Int_t centFB[11] = {0,5,10,20,30,40,50,60,70,80,90};
531  for(int i=0;i<10;i++) {
532  fFB_Efficiency_Pos[i] = (TH3F *) fListFBHijing->FindObject(Form("fHistCorrectionPlus%d-%d",centFB[i],centFB[i+1]));
533  fFB_Efficiency_Neg[i] = (TH3F *) fListFBHijing->FindObject(Form("fHistCorrectionMinus%d-%d",centFB[i],centFB[i+1]));
534  }
535  }
536  else{
537  printf("\n\n!!***** Warning *****!!\n Enter correct Dimention !!\n\n"); exit(1);
538  }
539  }
540  else{ // if MC efficiency not found then use weight = 1.
541  printf("\n\n!!***** Warning *****!!\n FilterBit efficiency not found, use = 1.0 !!\n\n");
542  for(int i=0;i<10;i++){
543  fFB_Efficiency_Cent[i] = new TH1D(Form("eff_unbiased_%d",i),"",1,0,50.);
544  fFB_Efficiency_Cent[i]->SetBinContent(1,1.0);
545  fFB_Efficiency_Pos[i] = new TH3F(Form("eff_unbiased_Pos_%d",i),"",1,-0.9,0.9,1,0,50,1,0,7);
546  fFB_Efficiency_Pos[i]->SetBinContent(1,1,1,1.0);
547  fFB_Efficiency_Neg[i] = new TH3F(Form("eff_unbiased_Neg_%d",i),"",1,-0.9,0.9,1,0,50,1,0,7);
548  fFB_Efficiency_Neg[i]->SetBinContent(1,1,1,1.0);
549  }
550  }
551 
552 
553 
554  fListHistos = new TList();
555  fListHistos->SetOwner(kTRUE);
556 
557  fListCalibs = new TList();
558  fListCalibs->SetOwner(kTRUE);
559 
560  fListNUAHist = new TList();
561  fListNUAHist->SetOwner(kTRUE);
562 
563  this->DefineHistograms();
564 
565  if(fListFBHijing){
566  fTaskConfigParm->SetBinContent(11,1.0);
567  }
568  if(bApplyNUACorr){
569  fTaskConfigParm->SetBinContent(12,1.0);
570  }
571  if(bApplyV0MCorr){
572  fTaskConfigParm->SetBinContent(13,1.0);
573  }
574  if(bApplyZDCCorr){
575  fTaskConfigParm->SetBinContent(14,1.0);
576  }
577 
578  fTaskConfigParm->SetBinContent(15,fHarmonicN);
579  fTaskConfigParm->SetBinContent(16,fHarmonicM);
580  fTaskConfigParm->SetBinContent(17,fHarmonicPsi);
581 
582 
583  PostData(1,fListHistos);
584  PostData(2,fListCalibs);
585  PostData(3,fListNUAHist);
586 }
587 
589 {
590  delete fListHistos;
591  delete fListCalibs;
592  delete fListNUAHist;
593 
594  if(fAnalysisUtil) delete fAnalysisUtil; // it is '= new' !!!
595 
596  delete fHCentBinTrkRecenter;
597 
598  if(fHCorrectV0M) delete fHCorrectV0M;
599  if(fHCorrectZDNP) delete fHCorrectZDNP;
600 
601  for(int i=0;i<5;i++){
602  if(fHCorrectNUApos[i]) delete fHCorrectNUApos[i];
603  if(fHCorrectNUAneg[i]) delete fHCorrectNUAneg[i];
604  }
605  for(int i=0;i<10;i++){
606  if(fFB_Efficiency_Cent[i]) delete fFB_Efficiency_Cent[i];
607  if(fFB_Efficiency_Pos[i]) delete fFB_Efficiency_Pos[i];
608  if(fFB_Efficiency_Neg[i]) delete fFB_Efficiency_Neg[i];
609  }
610 }
611 
612 
613 
614 
615 
616 
617 
619 {
620 
621  Float_t stepCount = 0.5;
622  fHist_Event_count->Fill(stepCount); //1
623  stepCount++;
624 
625  AliAODEvent *aod = dynamic_cast<AliAODEvent*>(InputEvent());
626  fEvent = dynamic_cast<AliFlowEventSimple*>(GetInputData(1));
627 
628  if(!aod || !fEvent){
629  printf("\n ... ::UserExec = no AOD or Flow Event, \n.... EXIT ..... \n");
630  return;
631  }
632 
633  fHist_Event_count->Fill(stepCount); //2
634  stepCount++;
635 
636 
637  //---------pileup rejection: --------
638 
639  Bool_t kPileupEvent = kFALSE;
640 
641  kPileupEvent = CheckEventIsPileUp(aod);
642 
643  if(kPileupEvent) return;
644 
645 
646 
647  fHist_Event_count->Fill(stepCount); //3
648  stepCount++;
649 
650 
651 
652  Double_t centrV0M = -1;
653  Double_t centrCL1 = -1;
654  Double_t centrCL0 = -1;
655  Double_t centrTRK = -1;
656  EvtCent = -1;
657 
658  if(sDataSet=="2010"||sDataSet=="2011"){
659  centrV0M = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile("V0M");
660  centrCL1 = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile("CL1");
661  centrCL0 = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile("CL0");
662  centrTRK = ((AliVAODHeader*)aod->GetHeader())->GetCentralityP()->GetCentralityPercentile("TRK");
663  }
664  else{
665  fMultSelection = (AliMultSelection*) InputEvent()->FindListObject("MultSelection");
666  if(!fMultSelection) {
667  printf("\n\n **WARNING** ::UserExec() AliMultSelection object not found.\n\n");
668  exit(1);
669  }
670  centrV0M = fMultSelection->GetMultiplicityPercentile("V0M");
671  centrCL1 = fMultSelection->GetMultiplicityPercentile("CL1");
672  centrCL0 = fMultSelection->GetMultiplicityPercentile("CL0");
673  centrTRK = fMultSelection->GetMultiplicityPercentile("TRK");
674  }
675 
676 
677 
678  if(sCentEstimator=="V0" || sCentEstimator=="V0M"){
679  EvtCent = centrV0M;
680  }
681  else{
682  EvtCent = centrCL1;
683  }
684 
685 
686  Int_t iCentSPD = centrCL1;
687 
688  if(iCentSPD > 90) return;
689 
690  fHist_Event_count->Fill(stepCount); //4
691  stepCount++;
692 
693 
694 
695 
696  Int_t cIndex = 0;
697  Int_t cForNUA = 0;
698  Int_t cInputNUA = 0;
699 
700  if(EvtCent<5.0) {
701  cIndex = 0;
702  cForNUA = 0; //0=0-5,
703  cInputNUA = 0;
704  }
705  else if(EvtCent>=5.0 && EvtCent<10){
706  cIndex = 1;
707  cForNUA = 1; // 1=5-10,
708  cInputNUA = 1;
709  }
710  else if(EvtCent>=10.0) {
711  cIndex = abs(EvtCent/10.0) + 1;
712  cForNUA = cIndex; //2 = 10-20,
713 
714  if(EvtCent>=10 && EvtCent<40.0)
715  cInputNUA = 2;
716 
717  if(EvtCent>=20 && EvtCent<40.0){
718  cForNUA = 3; // 3=20-40
719  }
720  if(EvtCent>=40.0){
721  cForNUA = 4; // 4=40-90
722  cInputNUA = 3;
723  }
724  }
725 
726 
727 
728  //------- load v0 calib file of Alex --------
729  Int_t runindex = -111;
730  Int_t runNumber = aod->GetRunNumber();
731  Float_t psiN = fHarmonicPsi;
732  runindex = GetCurrentRunIndex(runNumber);
733 
734  if(runNumber!=fOldRunNum){
735 
736 
737  if(sDataSet=="2015" || sDataSet=="2015HI"){
738  OpenInfoCalbration(runNumber, psiN);
739  }
740  if(bApplyV0MCorr){
741  GetV0MCorrectionHist(runNumber);
742  }
743  if(bApplyNUACorr){
744  GetNUACorrectionHist(runNumber,sFileNUA);
745  }
747  GetZDCCorrectionHist(runNumber);
748  }
749 
750  fOldRunNum = runNumber;
751  }
752 
753 
754 
755 
756  Double_t fMagField = aod->GetMagneticField();
757  Int_t QAindex = -1;
758 
759  if(fMagField<0)
760  QAindex = 0;
761  else if(fMagField>0)
762  QAindex = 1;
763 
764 //-------- V0 info ---------------
765  const AliAODVZERO *fAODV0 = aod->GetVZEROData();
766 
767 
768  Double_t QyanCor = 0., QycnCor = 0.;
769  Double_t QxanCor = 0., QxcnCor = 0.;
770  Double_t Qxan2 = 0., Qyan2 = 0.;
771  Double_t Qxcn2 = 0., Qycn2 = 0.;
772  Double_t sumMa = 0., sumMc = 0.;
773  Double_t fMultv0 = 0.;
774  Double_t phiV0 = 0.;
775 
776 
777  if(sDataSet=="2015" || sDataSet=="2015HI") {
778  GetV0QvectAndMult(fAODV0, psiN, Qxan2, Qyan2, sumMa, Qxcn2, Qycn2, sumMc);
779 
780  QyanCor = (Qyan2 - fQynmV0A->GetBinContent(iCentSPD+1))/fQynsV0A->GetBinContent(iCentSPD+1);
781  QycnCor = (Qycn2 - fQynmV0C->GetBinContent(iCentSPD+1))/fQynsV0C->GetBinContent(iCentSPD+1);
782 
783  QxanCor = Qxan2;
784  QxcnCor = Qxcn2;
785 
786  if(psiN != 4.){
787  QxanCor = (Qxan2 - fQxnmV0A->GetBinContent(iCentSPD+1))/fQxnsV0A->GetBinContent(iCentSPD+1);
788  QxcnCor = (Qxcn2 - fQxnmV0C->GetBinContent(iCentSPD+1))/fQxnsV0C->GetBinContent(iCentSPD+1);
789  }
790  }
791  //else{
792 
793  Double_t Qxan3 = 0., Qyan3 = 0.;
794  Double_t Qxcn3 = 0., Qycn3 = 0.;
795  Qxan2 = 0., Qyan2 = 0.;
796  Qxcn2 = 0., Qycn2 = 0.;
797 
798  for(int iV0 = 0; iV0 < 64; iV0++) { //0-31 is V0C, 32-63 VOA
799 
800  fMultv0 = fAODV0->GetMultiplicity(iV0);
801 
802  if(fHCorrectV0M){
803  fMultv0 = fMultv0 * fHCorrectV0M->GetBinContent(iV0+1); // Gain Correction
804  }
805 
806  fV0MultChVsRun->Fill(iV0+0.5,runindex,fMultv0);
807 
808  phiV0 = TMath::PiOver4()*(0.5 + iV0 % 8);
809 
810  if(iV0 < 32){
811  Qxcn2 += TMath::Cos(2*phiV0) * fMultv0;
812  Qycn2 += TMath::Sin(2*phiV0) * fMultv0;
813  Qxcn3 += TMath::Cos(3*phiV0) * fMultv0;
814  Qycn3 += TMath::Sin(3*phiV0) * fMultv0;
815  sumMc += fMultv0;
816  }
817  else if(iV0 >= 32){
818  Qxan2 += TMath::Cos(2*phiV0) * fMultv0;
819  Qyan2 += TMath::Sin(2*phiV0) * fMultv0;
820  Qxan3 += TMath::Cos(3*phiV0) * fMultv0;
821  Qyan3 += TMath::Sin(3*phiV0) * fMultv0;
822  sumMa += fMultv0;
823  }
824  }//channel loop
825 
826  //For V0-Qn Recenter
827  fV0CQ2xVsCentRun->Fill(centrCL1,runindex,Qxcn2);
828  fV0CQ2yVsCentRun->Fill(centrCL1,runindex,Qycn2);
829  fV0AQ2xVsCentRun->Fill(centrCL1,runindex,Qxan2);
830  fV0AQ2yVsCentRun->Fill(centrCL1,runindex,Qyan2);
831 
832  fV0CQ3xVsCentRun->Fill(centrCL1,runindex,Qxcn3);
833  fV0CQ3yVsCentRun->Fill(centrCL1,runindex,Qycn3);
834  fV0AQ3xVsCentRun->Fill(centrCL1,runindex,Qxan3);
835  fV0AQ3yVsCentRun->Fill(centrCL1,runindex,Qyan3);
836 
837  /*QxanCor = Qxan; //QxanCor are used for event plane.
838  QxcnCor = Qxcn;
839  QyanCor = Qyan;
840  QycnCor = Qycn;*/
841 
842  //} else (other than 2015o_pass1 HI data)
843 
844 
845 
846  //Fill V0M Mult for all System: filled above
847  /*for(int iV0 = 0; iV0 < 64; iV0++) { //0-31 is V0C, 32-63 VOA
848  fMultv0 = fAODV0->GetMultiplicity(iV0);
849  fV0MultChVsRun->Fill(iV0+0.5,runindex,fMultv0);
850  }*/
851 
852 
853 
854 
855 
856  if(sumMa <= 0 || sumMc <= 0) return;
857  fHist_Event_count->Fill(stepCount); //5
858  stepCount++;
859 
860 
861  AliAODVertex *pVertex = aod->GetPrimaryVertex();
862  Double_t VtxZ = pVertex->GetZ();
863  Double_t VtxX = pVertex->GetX();
864  Double_t VtxY = pVertex->GetY();
865 
866  fVzDistribuion->Fill(VtxZ);
867 
868  if(sDataSet=="2015pPb" || sDataSet=="pPb"){
869 
870  if(VtxZ < 1.e-4 && VtxX < 1.e-4 && VtxY < 1.e-4)
871  return;
872 
873  fHistVtxZvsRun->Fill(runindex,VtxZ);
874  fHistVtxXvsRun->Fill(runindex,VtxX);
875  fHistVtxYvsRun->Fill(runindex,VtxY);
876  }
877 
878 
879  //------------- Load ZDC info: -----------
880  Double_t energyZNC=0.,energyZNA=0.,energyZPC=0.,energyZPA=0.;
881 
882  energyZNC = ((AliVAODHeader*)aod->GetHeader())->GetZDCN1Energy();
883  energyZNA = ((AliVAODHeader*)aod->GetHeader())->GetZDCN2Energy();
884  energyZPC = ((AliVAODHeader*)aod->GetHeader())->GetZDCP1Energy();
885  energyZPA = ((AliVAODHeader*)aod->GetHeader())->GetZDCP2Energy();
886 
887 
888  //Apply Gain Correction:
889  if(fHCorrectZDNP){
890  energyZNC = energyZNC * fHCorrectZDNP->GetBinContent((abs(EvtCent)+1),1);
891  energyZNA = energyZNA * fHCorrectZDNP->GetBinContent((abs(EvtCent)+1),2);
892  energyZPC = energyZPC * fHCorrectZDNP->GetBinContent((abs(EvtCent)+1),3);
893  energyZPA = energyZPA * fHCorrectZDNP->GetBinContent((abs(EvtCent)+1),4);
894  }
895 
896  //fill ZDC info: Uses
897  if(bFillZDCinfo){
898 
899  fHEnergyZNCvsCentRun->Fill(EvtCent,runindex,energyZNC);
900  fHEnergyZNAvsCentRun->Fill(EvtCent,runindex,energyZNA);
901  fHEnergyZPCvsCentRun->Fill(EvtCent,runindex,energyZPC);
902  fHEnergyZPAvsCentRun->Fill(EvtCent,runindex,energyZPA);
903 
904  //if(EvtCent>30. && EvtCent<40.){
905  //fHEnergyZPCvsZPA->Fill(energyZPC,energyZPA);
906  //fHEnergyZNCvsZNA->Fill(energyZNC,energyZNA);
907  //}
908  }
909 
910 
911 
912 
913 
914  Int_t BadRuns[10] = {246871,246870,246867,246865,246864,246859,246858,246676,246675,246540};
915  Int_t iBadrun = 10;
916  Int_t isBadRun = 0;
917 
918  for(int ib=0;ib<iBadrun;ib++){
919  if(runNumber==BadRuns[ib]){
920  isBadRun = 1;
921  break;
922  }
923  }
924 
925 
926 
927  //Store Qvector for tracks:
928  Double_t QxPos[2] = {0.,}; //[0]=n*phi,[1]=2*n*phi
929  Double_t QyPos[2] = {0.,};
930  Double_t QxNeg[2] = {0.,};
931  Double_t QyNeg[2] = {0.,};
932 
933  //Store Qvector for Auto-correlations
934  Double_t QxAutoPos[2] = {0.,};
935  Double_t QyAutoPos[2] = {0.,};
936  Double_t QxAutoNeg[2] = {0.,};
937  Double_t QyAutoNeg[2] = {0.,};
938 
939 
940  //temp: for QA only
941  Double_t QxPosQAEta[16] = {0.,};
942  Double_t QyPosQAEta[16] = {0.,};
943  Double_t QxNegQAEta[16] = {0.,};
944  Double_t QyNegQAEta[16] = {0.,};
945  Double_t QxAutoPosQAEta[16] = {0.,};
946  Double_t QyAutoPosQAEta[16] = {0.,};
947  Double_t QxAutoNegQAEta[16] = {0.,};
948  Double_t QyAutoNegQAEta[16] = {0.,};
949  Double_t MPOIposQAEta[16] = {0.,};
950  Double_t MPOInegQAEta[16] = {0.,};
951  Int_t iEtaQA = -1;
952 
953  Double_t AvgCos1n=0.,AvgSin1n=0.;
954  //Double_t AvgCos2n=0.,AvgSin2n=0.;
955  Double_t AvgDWCos2n=0.,AvgDWSin2n=0.;
956 
957 
958 
959 
960 
961  //Multiplicity of POIs:
962  Double_t MPOIpos = 0;
963  Double_t MPOIneg = 0;
964  Double_t McorrPos = 0.;
965  Double_t McorrNeg = 0.;
966 
967  //TPC Event plane Qvectors:
968  Double_t QxTPC[2] = {0.,};
969  Double_t QyTPC[2] = {0.,};
970 
971  Int_t ptBin;
972  Int_t nRefMult = 0;
973  Int_t n = fHarmonicN;
974  Int_t m = fHarmonicM;
975  Int_t p = (fHarmonicN+fHarmonicM); // cos(nphi1 + mphi2 - p*Psi)
976 
977  Double_t nRefMultWgt = 0.;
978 
979 
980 
981 
982  //Int_t iCentRec = 0; //centrality bin for track recenter
983  //iCentRec = fHCentBinTrkRecenter->FindBin(EvtCent);
984 
985  //Int_t nBinVz=1,nBinPhi=1,nBinEta=1;
986 
987  //CME using Event plane:
988  Double_t pi = TMath::Pi();
989  Double_t Psi2V0C = 1./psiN*TMath::ATan2(QycnCor,QxcnCor);
990  if(Psi2V0C<0.) Psi2V0C += 2*pi/psiN;
991 
992  Double_t Psi2V0A = 1./psiN*TMath::ATan2(QyanCor,QxanCor);
993  if(Psi2V0A<0.) Psi2V0A += 2*pi/psiN;
994 
995  /*
996  fV0AQ2xVsCentRun->Fill(centrCL1,runindex,QycnCor); // For V0-Q Recenter QA.
997  fV0AQ2yVsCentRun->Fill(centrCL1,runindex,QyanCor);
998  fV0CQ2xVsCentRun->Fill(centrCL1,runindex,QxcnCor);
999  fV0CQ2yVsCentRun->Fill(centrCL1,runindex,QycnCor);*/
1000 
1001 
1002 
1003  Int_t iBinNUA = 1;
1004  Int_t iVzNUA = -1;
1005  iVzNUA = fVzBinFinderForNUA->FindBin(VtxZ) - 1;
1006 
1007 
1008 
1009  Int_t iTracks = fEvent->NumberOfTracks();
1010 
1011  Int_t icReject = 0;
1012 
1013 
1014  AliFlowTrackSimple* pTrack1 = NULL;
1015  AliFlowTrackSimple* pTrack2 = NULL;
1016 
1017  Double_t dPhi1,dPt1,dEta1,dChrg1;
1018  Double_t dPhi2,dPt2,dEta2,dChrg2;
1019  Double_t WgtEP = 1.0;
1020 
1021  Double_t ptw1 = 1.0, w1NUA = 1.0;
1022  Double_t ptw2 = 1.0;
1023  Double_t w2NUA = 1.0;
1024 
1025 
1026  for(int i=0; i<iTracks; i++) {
1027  pTrack1 = fEvent->GetTrack(i);
1028  if(!pTrack1) continue;
1029  dPhi1 = pTrack1->Phi(); //0-2pi range
1030  dPt1 = pTrack1-> Pt();
1031  dEta1 = pTrack1->Eta();
1032  dChrg1 = pTrack1->Charge();
1033 
1034  if(!pTrack1->InPOISelection())
1035  continue;
1036 
1037  //remove randomly -Ve tracks:
1038  //if(bRemNegTrkRndm && dChrg1<0 && fRand.Rndm()<0.15){
1039  //icReject++;
1040  //continue;
1041  //}
1042 
1043 
1044  if(bFillEtaPhiNUA){
1045  if(dChrg1>0){
1046  fHist3DEtaPhiVz_Pos_Run[cForNUA][runindex]->Fill(VtxZ,dPhi1,dEta1);
1047  }
1048  else if(dChrg1<0){
1049  fHist3DEtaPhiVz_Neg_Run[cForNUA][runindex]->Fill(VtxZ,dPhi1,dEta1);
1050  }
1051  }
1052  /*
1053  if(bFillEtaPhiNUA){
1054  if(dChrg1>0){
1055  fHist3DEtaPhiVz_Pos_Run[iVzNUA][runindex]->Fill(dPt1,dPhi1,dEta1);
1056  }
1057  else if(dChrg1<0){
1058  fHist3DEtaPhiVz_Neg_Run[iVzNUA][runindex]->Fill(dPt1,dPhi1,dEta1);
1059  }
1060  }*/
1061 
1062  if(bApplyNUACorr){
1063  //get NUA weights:
1064  if(sFileNUA=="New2018"){
1065  if(dChrg1>0){
1066  iBinNUA = fHCorrectNUApos[cForNUA]->FindBin(VtxZ,dPhi1,dEta1);
1067  w1NUA = fHCorrectNUApos[cForNUA]->GetBinContent(iBinNUA);
1068  }
1069  else if(dChrg1<0){
1070  iBinNUA = fHCorrectNUAneg[cForNUA]->FindBin(VtxZ,dPhi1,dEta1);
1071  w1NUA = fHCorrectNUAneg[cForNUA]->GetBinContent(iBinNUA);
1072  }
1073  }
1074  else if(sFileNUA=="OldJ"||sFileNUA=="NewR"){
1075  if(dChrg1>0){
1076  iBinNUA = fHCorrectNUApos[cInputNUA]->FindBin(VtxZ,dPhi1,dEta1);
1077  w1NUA = fHCorrectNUApos[cInputNUA]->GetBinContent(iBinNUA);
1078  }
1079  else if(dChrg1<0){
1080  iBinNUA = fHCorrectNUAneg[cInputNUA]->FindBin(VtxZ,dPhi1,dEta1);
1081  w1NUA = fHCorrectNUAneg[cInputNUA]->GetBinContent(iBinNUA);
1082  }
1083  if(sFileNUA=="OldJ") w1NUA = 1./w1NUA;
1084  }
1085  else if(sFileNUA=="NewPt"||sFileNUA=="NewpT"){
1086  if(dChrg1>0){
1087  iBinNUA = fHCorrectNUApos[iVzNUA]->FindBin(dPt1,dPhi1,dEta1);
1088  w1NUA = fHCorrectNUApos[iVzNUA]->GetBinContent(iBinNUA);
1089  }
1090  else if(dChrg1<0){
1091  iBinNUA = fHCorrectNUAneg[iVzNUA]->FindBin(dPt1,dPhi1,dEta1);
1092  w1NUA = fHCorrectNUAneg[iVzNUA]->GetBinContent(iBinNUA);
1093  }
1094  }
1095  if(w1NUA > 1e3 ) w1NUA = 1.0;
1096  }
1097 
1098 
1099 
1100  if(dChrg1>0){
1101  fHistChPosvsEtaPtRun[cIndex]->Fill(dPt1,dEta1,runindex,w1NUA);
1102  }
1103  else if(dChrg1<0){
1104  fHistChNegvsEtaPtRun[cIndex]->Fill(dPt1,dEta1,runindex,w1NUA);
1105  }
1106 
1107 
1108 
1109  if(sMCdimension=="1D"){
1110  ptBin = fFB_Efficiency_Cent[cIndex]->FindBin(dPt1);
1111  ptw1 = 1.0/fFB_Efficiency_Cent[cIndex]->GetBinContent(ptBin);
1112  }
1113  else if(sMCdimension=="3D"){
1114  if(dChrg1>0){
1115  ptBin = fFB_Efficiency_Pos[cIndex]->FindBin(dEta1,dPt1,dPhi1); //left here
1116  ptw1 = fFB_Efficiency_Pos[cIndex]->GetBinContent(ptBin);
1117  }
1118  else if(dChrg1<0){
1119  ptBin = fFB_Efficiency_Neg[cIndex]->FindBin(dEta1,dPt1,dPhi1); //left here
1120  ptw1 = fFB_Efficiency_Neg[cIndex]->GetBinContent(ptBin);
1121  }
1122  }
1123 
1124  if (ptw1>1e3) ptw1 = 1.0;
1125 
1126  /*
1127  if(bFillAvgTPCQn) { //fill TPC Q-vect:
1128  if(VtxZ>0 && dEta1>=0){
1129  if(dChrg1>0){
1130  fHCos1nPosChEtaVz[0]->Fill(EvtCent,runindex,ptw1*TMath::Cos(dPhi1));
1131  fHSin1nPosChEtaVz[0]->Fill(EvtCent,runindex,ptw1*TMath::Sin(dPhi1));
1132  fHCos2nPosChEtaVz[0]->Fill(EvtCent,runindex,ptw1*TMath::Cos(2.*dPhi1));
1133  fHSin2nPosChEtaVz[0]->Fill(EvtCent,runindex,ptw1*TMath::Sin(2.*dPhi1));
1134  fHCos3nPosChEtaVz[0]->Fill(EvtCent,runindex,ptw1*TMath::Cos(3.*dPhi1));
1135  fHSin3nPosChEtaVz[0]->Fill(EvtCent,runindex,ptw1*TMath::Sin(3.*dPhi1));
1136  fHCos4nPosChEtaVz[0]->Fill(EvtCent,runindex,ptw1*TMath::Cos(4.*dPhi1));
1137  fHSin4nPosChEtaVz[0]->Fill(EvtCent,runindex,ptw1*TMath::Sin(4.*dPhi1));
1138  fHCos2nDWPosChEtaVz[0]->Fill(EvtCent,runindex,ptw1*ptw1*TMath::Cos(2.*dPhi1));
1139  fHSin2nDWPosChEtaVz[0]->Fill(EvtCent,runindex,ptw1*ptw1*TMath::Sin(2.*dPhi1));
1140  }
1141  else if(dChrg1<0){
1142  fHCos1nNegChEtaVz[0]->Fill(EvtCent,runindex,ptw1*TMath::Cos(dPhi1));
1143  fHSin1nNegChEtaVz[0]->Fill(EvtCent,runindex,ptw1*TMath::Sin(dPhi1));
1144  fHCos2nNegChEtaVz[0]->Fill(EvtCent,runindex,ptw1*TMath::Cos(2.*dPhi1));
1145  fHSin2nNegChEtaVz[0]->Fill(EvtCent,runindex,ptw1*TMath::Sin(2.*dPhi1));
1146  fHCos3nNegChEtaVz[0]->Fill(EvtCent,runindex,ptw1*TMath::Cos(3.*dPhi1));
1147  fHSin3nNegChEtaVz[0]->Fill(EvtCent,runindex,ptw1*TMath::Sin(3.*dPhi1));
1148  fHCos4nNegChEtaVz[0]->Fill(EvtCent,runindex,ptw1*TMath::Cos(4.*dPhi1));
1149  fHSin4nNegChEtaVz[0]->Fill(EvtCent,runindex,ptw1*TMath::Sin(4.*dPhi1));
1150  fHCos2nDWNegChEtaVz[0]->Fill(EvtCent,runindex,ptw1*ptw1*TMath::Cos(2.*dPhi1));
1151  fHSin2nDWNegChEtaVz[0]->Fill(EvtCent,runindex,ptw1*ptw1*TMath::Sin(2.*dPhi1));
1152  }
1153  }
1154  else if(VtxZ>0 && dEta1<0){
1155  if(dChrg1>0){
1156  fHCos1nPosChEtaVz[1]->Fill(EvtCent,runindex,ptw1*TMath::Cos(dPhi1));
1157  fHSin1nPosChEtaVz[1]->Fill(EvtCent,runindex,ptw1*TMath::Sin(dPhi1));
1158  fHCos2nPosChEtaVz[1]->Fill(EvtCent,runindex,ptw1*TMath::Cos(2.*dPhi1));
1159  fHSin2nPosChEtaVz[1]->Fill(EvtCent,runindex,ptw1*TMath::Sin(2.*dPhi1));
1160  fHCos3nPosChEtaVz[1]->Fill(EvtCent,runindex,ptw1*TMath::Cos(3.*dPhi1));
1161  fHSin3nPosChEtaVz[1]->Fill(EvtCent,runindex,ptw1*TMath::Sin(3.*dPhi1));
1162  fHCos4nPosChEtaVz[1]->Fill(EvtCent,runindex,ptw1*TMath::Cos(4.*dPhi1));
1163  fHSin4nPosChEtaVz[1]->Fill(EvtCent,runindex,ptw1*TMath::Sin(4.*dPhi1));
1164  fHCos2nDWPosChEtaVz[1]->Fill(EvtCent,runindex,ptw1*ptw1*TMath::Cos(2.*dPhi1));
1165  fHSin2nDWPosChEtaVz[1]->Fill(EvtCent,runindex,ptw1*ptw1*TMath::Sin(2.*dPhi1));
1166  }
1167  else if(dChrg1<0){
1168  fHCos1nNegChEtaVz[1]->Fill(EvtCent,runindex,ptw1*TMath::Cos(dPhi1));
1169  fHSin1nNegChEtaVz[1]->Fill(EvtCent,runindex,ptw1*TMath::Sin(dPhi1));
1170  fHCos2nNegChEtaVz[1]->Fill(EvtCent,runindex,ptw1*TMath::Cos(2.*dPhi1));
1171  fHSin2nNegChEtaVz[1]->Fill(EvtCent,runindex,ptw1*TMath::Sin(2.*dPhi1));
1172  fHCos3nNegChEtaVz[1]->Fill(EvtCent,runindex,ptw1*TMath::Cos(3.*dPhi1));
1173  fHSin3nNegChEtaVz[1]->Fill(EvtCent,runindex,ptw1*TMath::Sin(3.*dPhi1));
1174  fHCos4nNegChEtaVz[1]->Fill(EvtCent,runindex,ptw1*TMath::Cos(4.*dPhi1));
1175  fHSin4nNegChEtaVz[1]->Fill(EvtCent,runindex,ptw1*TMath::Sin(4.*dPhi1));
1176  fHCos2nDWNegChEtaVz[1]->Fill(EvtCent,runindex,ptw1*ptw1*TMath::Cos(2.*dPhi1));
1177  fHSin2nDWNegChEtaVz[1]->Fill(EvtCent,runindex,ptw1*ptw1*TMath::Sin(2.*dPhi1));
1178  }
1179  }
1180  else if(VtxZ<0 && dEta1>=0){
1181  if(dChrg1>0){
1182  fHCos1nPosChEtaVz[2]->Fill(EvtCent,runindex,ptw1*TMath::Cos(dPhi1));
1183  fHSin1nPosChEtaVz[2]->Fill(EvtCent,runindex,ptw1*TMath::Sin(dPhi1));
1184  fHCos2nPosChEtaVz[2]->Fill(EvtCent,runindex,ptw1*TMath::Cos(2.*dPhi1));
1185  fHSin2nPosChEtaVz[2]->Fill(EvtCent,runindex,ptw1*TMath::Sin(2.*dPhi1));
1186  fHCos3nPosChEtaVz[2]->Fill(EvtCent,runindex,ptw1*TMath::Cos(3.*dPhi1));
1187  fHSin3nPosChEtaVz[2]->Fill(EvtCent,runindex,ptw1*TMath::Sin(3.*dPhi1));
1188  fHCos4nPosChEtaVz[2]->Fill(EvtCent,runindex,ptw1*TMath::Cos(4.*dPhi1));
1189  fHSin4nPosChEtaVz[2]->Fill(EvtCent,runindex,ptw1*TMath::Sin(4.*dPhi1));
1190  fHCos2nDWPosChEtaVz[2]->Fill(EvtCent,runindex,ptw1*ptw1*TMath::Cos(2.*dPhi1));
1191  fHSin2nDWPosChEtaVz[2]->Fill(EvtCent,runindex,ptw1*ptw1*TMath::Sin(2.*dPhi1));
1192  }
1193  else if(dChrg1<0){
1194  fHCos1nNegChEtaVz[2]->Fill(EvtCent,runindex,ptw1*TMath::Cos(dPhi1));
1195  fHSin1nNegChEtaVz[2]->Fill(EvtCent,runindex,ptw1*TMath::Sin(dPhi1));
1196  fHCos2nNegChEtaVz[2]->Fill(EvtCent,runindex,ptw1*TMath::Cos(2.*dPhi1));
1197  fHSin2nNegChEtaVz[2]->Fill(EvtCent,runindex,ptw1*TMath::Sin(2.*dPhi1));
1198  fHCos3nNegChEtaVz[2]->Fill(EvtCent,runindex,ptw1*TMath::Cos(3.*dPhi1));
1199  fHSin3nNegChEtaVz[2]->Fill(EvtCent,runindex,ptw1*TMath::Sin(3.*dPhi1));
1200  fHCos4nNegChEtaVz[2]->Fill(EvtCent,runindex,ptw1*TMath::Cos(4.*dPhi1));
1201  fHSin4nNegChEtaVz[2]->Fill(EvtCent,runindex,ptw1*TMath::Sin(4.*dPhi1));
1202  fHCos2nDWNegChEtaVz[2]->Fill(EvtCent,runindex,ptw1*ptw1*TMath::Cos(2.*dPhi1));
1203  fHSin2nDWNegChEtaVz[2]->Fill(EvtCent,runindex,ptw1*ptw1*TMath::Sin(2.*dPhi1));
1204  }
1205 
1206  }
1207  else if(VtxZ<0 && dEta1<0){
1208  if(dChrg1>0){
1209  fHCos1nPosChEtaVz[3]->Fill(EvtCent,runindex,ptw1*TMath::Cos(dPhi1));
1210  fHSin1nPosChEtaVz[3]->Fill(EvtCent,runindex,ptw1*TMath::Sin(dPhi1));
1211  fHCos2nPosChEtaVz[3]->Fill(EvtCent,runindex,ptw1*TMath::Cos(2.*dPhi1));
1212  fHSin2nPosChEtaVz[3]->Fill(EvtCent,runindex,ptw1*TMath::Sin(2.*dPhi1));
1213  fHCos3nPosChEtaVz[3]->Fill(EvtCent,runindex,ptw1*TMath::Cos(3.*dPhi1));
1214  fHSin3nPosChEtaVz[3]->Fill(EvtCent,runindex,ptw1*TMath::Sin(3.*dPhi1));
1215  fHCos4nPosChEtaVz[3]->Fill(EvtCent,runindex,ptw1*TMath::Cos(4.*dPhi1));
1216  fHSin4nPosChEtaVz[3]->Fill(EvtCent,runindex,ptw1*TMath::Sin(4.*dPhi1));
1217  fHCos2nDWPosChEtaVz[3]->Fill(EvtCent,runindex,ptw1*ptw1*TMath::Cos(2.*dPhi1));
1218  fHSin2nDWPosChEtaVz[3]->Fill(EvtCent,runindex,ptw1*ptw1*TMath::Sin(2.*dPhi1));
1219  }
1220  else if(dChrg1<0){
1221  fHCos1nNegChEtaVz[3]->Fill(EvtCent,runindex,ptw1*TMath::Cos(dPhi1));
1222  fHSin1nNegChEtaVz[3]->Fill(EvtCent,runindex,ptw1*TMath::Sin(dPhi1));
1223  fHCos2nNegChEtaVz[3]->Fill(EvtCent,runindex,ptw1*TMath::Cos(2.*dPhi1));
1224  fHSin2nNegChEtaVz[3]->Fill(EvtCent,runindex,ptw1*TMath::Sin(2.*dPhi1));
1225  fHCos3nNegChEtaVz[3]->Fill(EvtCent,runindex,ptw1*TMath::Cos(3.*dPhi1));
1226  fHSin3nNegChEtaVz[3]->Fill(EvtCent,runindex,ptw1*TMath::Sin(3.*dPhi1));
1227  fHCos4nNegChEtaVz[3]->Fill(EvtCent,runindex,ptw1*TMath::Cos(4.*dPhi1));
1228  fHSin4nNegChEtaVz[3]->Fill(EvtCent,runindex,ptw1*TMath::Sin(4.*dPhi1));
1229  fHCos2nDWNegChEtaVz[3]->Fill(EvtCent,runindex,ptw1*ptw1*TMath::Cos(2.*dPhi1));
1230  fHSin2nDWNegChEtaVz[3]->Fill(EvtCent,runindex,ptw1*ptw1*TMath::Sin(2.*dPhi1));
1231  }
1232  }
1233  }*/
1234 
1235 
1236  if(isBadRun) continue;
1237 
1238 
1239 
1240  iEtaQA = fEtaBinFinderForQA->FindBin(dEta1) - 1;
1241 
1242  if(dChrg1>0){
1243  QxPos[0] += (ptw1*w1NUA*TMath::Cos(n*dPhi1) - AvgCos1n);
1244  QyPos[0] += (ptw1*w1NUA*TMath::Sin(n*dPhi1) - AvgSin1n);
1245  QxAutoPos[0] += (ptw1*ptw1*w1NUA*w1NUA*TMath::Cos(2.*n*dPhi1) - AvgDWCos2n);
1246  QyAutoPos[0] += (ptw1*ptw1*w1NUA*w1NUA*TMath::Sin(2.*n*dPhi1) - AvgDWSin2n);
1247  MPOIpos += w1NUA*ptw1;
1248  McorrPos += w1NUA*ptw1*w1NUA*ptw1;
1249  //QA: eta dependence
1250  if(EvtCent>=10 && EvtCent<20){
1251  QxPosQAEta[iEtaQA] += (ptw1*w1NUA*TMath::Cos(n*dPhi1) - AvgCos1n);
1252  QyPosQAEta[iEtaQA] += (ptw1*w1NUA*TMath::Sin(n*dPhi1) - AvgSin1n);
1253  QxAutoPosQAEta[iEtaQA] += (ptw1*ptw1*w1NUA*w1NUA*TMath::Cos(2.*n*dPhi1) - AvgDWCos2n);
1254  QyAutoPosQAEta[iEtaQA] += (ptw1*ptw1*w1NUA*w1NUA*TMath::Sin(2.*n*dPhi1) - AvgDWSin2n);
1255  MPOIposQAEta[iEtaQA] += ptw1*w1NUA;
1256  }
1257  }
1258  else if(dChrg1<0){
1259  QxNeg[0] += (ptw1*w1NUA*TMath::Cos(n*dPhi1) - AvgCos1n);
1260  QyNeg[0] += (ptw1*w1NUA*TMath::Sin(n*dPhi1) - AvgSin1n);
1261  QxAutoNeg[0] += (ptw1*ptw1*w1NUA*w1NUA*TMath::Cos(2.*n*dPhi1) - AvgDWCos2n);
1262  QyAutoNeg[0] += (ptw1*ptw1*w1NUA*w1NUA*TMath::Sin(2.*n*dPhi1) - AvgDWSin2n);
1263  MPOIneg += w1NUA*ptw1;
1264  McorrNeg += w1NUA*ptw1*w1NUA*ptw1;
1265  //QA: eta dependence
1266  if(EvtCent>=10 && EvtCent<20){
1267  QxNegQAEta[iEtaQA] += (ptw1*w1NUA*TMath::Cos(n*dPhi1) - AvgCos1n);
1268  QyNegQAEta[iEtaQA] += (ptw1*w1NUA*TMath::Sin(n*dPhi1) - AvgSin1n);
1269  QxAutoNegQAEta[iEtaQA] += (ptw1*ptw1*w1NUA*w1NUA*TMath::Cos(2.*n*dPhi1) - AvgDWCos2n);
1270  QyAutoNegQAEta[iEtaQA] += (ptw1*ptw1*w1NUA*w1NUA*TMath::Sin(2.*n*dPhi1) - AvgDWSin2n);
1271  MPOInegQAEta[iEtaQA] += ptw1*w1NUA;
1272  }
1273  }
1274 
1275  //QxTPC[0] += ptw1*w1NUA*TMath::Cos(n*dPhi1);
1276  //QyTPC[0] += ptw1*w1NUA*TMath::Sin(n*dPhi1);
1277  QxTPC[1] += ptw1*w1NUA*TMath::Cos(psiN*dPhi1);
1278  QyTPC[1] += ptw1*w1NUA*TMath::Sin(psiN*dPhi1);
1279 
1280  nRefMult++;
1281  nRefMultWgt += ptw1*w1NUA;
1282 
1283 
1284  //if(i%10==0)
1285  //cout<<" track "<<i<<" eta = "<<dEta1<<"\tdPhi1 = "<<dPhi1<<"\tptw1 = "<<ptw1<<"\tw1NUA = "<<w1NUA<<"\tAvgCos1n = "<<AvgCos1n<<endl;
1286 
1287 
1288  if(bSkipNestedTrk) continue;
1289 
1290  //2nd track loop:
1291  for(int j=0; j<iTracks; j++) {
1292 
1293  if(j==i) continue; //Auto-correlation removed.
1294 
1295  pTrack2 = fEvent->GetTrack(j);
1296  if(!pTrack2) continue;
1297  dPhi2 = pTrack2->Phi(); //0-2pi range
1298  dPt2 = pTrack2-> Pt();
1299  dEta2 = pTrack2->Eta();
1300  dChrg2 = pTrack2->Charge();
1301 
1302  if(!pTrack2->InPOISelection())
1303  continue;
1304 
1305  //remove randomly -Ve tracks:
1306  //if(bRemNegTrkRndm && dChrg1<0 && fRand.Rndm()<0.15){
1307  //continue;
1308  //}
1309 
1310 
1311  if(sMCdimension=="1D"){
1312  ptBin = fFB_Efficiency_Cent[cIndex]->FindBin(dPt2);
1313  ptw2 = 1.0/fFB_Efficiency_Cent[cIndex]->GetBinContent(ptBin);
1314  }
1315  else if(sMCdimension=="3D"){
1316  if(dChrg2>0){
1317  ptBin = fFB_Efficiency_Pos[cIndex]->FindBin(dEta2,dPt2,dPhi2); //left here
1318  ptw2 = fFB_Efficiency_Pos[cIndex]->GetBinContent(ptBin);
1319  }
1320  else if(dChrg2<0){
1321  ptBin = fFB_Efficiency_Neg[cIndex]->FindBin(dEta2,dPt2,dPhi2); //left here
1322  ptw2 = fFB_Efficiency_Neg[cIndex]->GetBinContent(ptBin);
1323  }
1324  }
1325 
1326  if (ptw2>1e3) ptw1 = 1.0;
1327 
1328 
1329  if(bApplyNUACorr) {
1330  //get NUA weights:
1331  if(sFileNUA=="New2018"){
1332  if(dChrg2>0){
1333  iBinNUA = fHCorrectNUApos[cForNUA]->FindBin(VtxZ,dPhi1,dEta1);
1334  w1NUA = fHCorrectNUApos[cForNUA]->GetBinContent(iBinNUA);
1335  }
1336  else if(dChrg2<0){
1337  iBinNUA = fHCorrectNUAneg[cForNUA]->FindBin(VtxZ,dPhi1,dEta1);
1338  w1NUA = fHCorrectNUAneg[cForNUA]->GetBinContent(iBinNUA);
1339  }
1340  }
1341  else if(sFileNUA=="OldJ"||sFileNUA=="NewR"){
1342  if(dChrg2>0){
1343  iBinNUA = fHCorrectNUApos[cInputNUA]->FindBin(VtxZ,dPhi2,dEta2);
1344  w2NUA = fHCorrectNUApos[cInputNUA]->GetBinContent(iBinNUA);
1345  }
1346  else if(dChrg2<0){
1347  iBinNUA = fHCorrectNUAneg[cInputNUA]->FindBin(VtxZ,dPhi2,dEta2);
1348  w2NUA = fHCorrectNUAneg[cInputNUA]->GetBinContent(iBinNUA);
1349  }
1350  if(sFileNUA=="OldJ") w2NUA = 1./w2NUA;
1351  }
1352  else if(sFileNUA=="NewPt"||sFileNUA=="NewpT"){
1353  if(dChrg2>0){
1354  iBinNUA = fHCorrectNUApos[iVzNUA]->FindBin(dPt2,dPhi2,dEta2);
1355  w2NUA = fHCorrectNUApos[iVzNUA]->GetBinContent(iBinNUA);
1356  }
1357  else if(dChrg2<0){
1358  iBinNUA = fHCorrectNUAneg[iVzNUA]->FindBin(dPt2,dPhi2,dEta2);
1359  w2NUA = fHCorrectNUAneg[iVzNUA]->GetBinContent(iBinNUA);
1360  }
1361  }
1362  if(w2NUA > 1e3 ) w2NUA = 1.0;
1363  }
1364  if(bApplyNUAforEP){
1365  WgtEP = ptw1*ptw2*w1NUA*w2NUA;
1366  }
1367  else{
1368  WgtEP = 1.0;
1369  }
1370 
1371  if(dChrg1!=dChrg2){
1372  fHist_Corr3p_EP_Norm_PN[QAindex][0]->Fill(EvtCent, TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0A),WgtEP);
1373  fHist_Corr3p_EP_Norm_PN[QAindex][1]->Fill(EvtCent, TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0C),WgtEP);
1374 
1375  if(EvtCent>=10. && EvtCent<20){
1376  fCent3pvsVzRun->Fill(VtxZ,runindex,TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0A));
1377  }
1378 
1379  //fHist_Corr3p_vsRun_EP_PN[0]->Fill(EvtCent, runindex, TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0A),WgtEP);
1380  //fHist_Corr3p_vsRun_EP_PN[1]->Fill(EvtCent, runindex, TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0C),WgtEP);
1381 
1382  fHist_Corr2p_EP_Norm_PN[QAindex]->Fill(EvtCent,0.5,TMath::Cos((dPhi1 - dPhi2)),WgtEP);
1383  fHist_Corr2p_EP_Norm_PN[QAindex]->Fill(EvtCent,1.5,TMath::Cos(2.*(dPhi1 - dPhi2)),WgtEP);
1384  fHist_Corr2p_EP_Norm_PN[QAindex]->Fill(EvtCent,2.5,TMath::Cos(3.*(dPhi1 - dPhi2)),WgtEP);
1385  fHist_Corr2p_EP_Norm_PN[QAindex]->Fill(EvtCent,3.5,TMath::Cos(4.*(dPhi1 - dPhi2)),WgtEP);
1386 
1387  if(cIndex<6){
1388  fHist_Corr3p_pTSum_EP_V0A_PN[QAindex][cIndex]->Fill((dPt1+dPt2)*0.5, TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0A),WgtEP);
1389  fHist_Corr3p_pTSum_EP_V0C_PN[QAindex][cIndex]->Fill((dPt1+dPt2)*0.5, TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0C),WgtEP);
1390  fHist_Corr3p_pTDiff_EP_V0A_PN[QAindex][cIndex]->Fill(TMath::Abs(dPt1-dPt2), TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0A),WgtEP);
1391  fHist_Corr3p_pTDiff_EP_V0C_PN[QAindex][cIndex]->Fill(TMath::Abs(dPt1-dPt2), TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0C),WgtEP);
1392  fHist_Corr3p_EtaDiff_EP_V0A_PN[QAindex][cIndex]->Fill(TMath::Abs(dEta1-dEta2), TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0A),WgtEP);
1393  fHist_Corr3p_EtaDiff_EP_V0C_PN[QAindex][cIndex]->Fill(TMath::Abs(dEta1-dEta2), TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0C),WgtEP);
1394  }
1395  }
1396  else if(dChrg1>0 && dChrg2>0){
1397  fHist_Corr3p_EP_Norm_PP[QAindex][0]->Fill(EvtCent, TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0A),WgtEP);
1398  fHist_Corr3p_EP_Norm_PP[QAindex][1]->Fill(EvtCent, TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0C),WgtEP);
1399 
1400  //fHist_Corr3p_vsRun_EP_PP[0]->Fill(EvtCent, runindex, TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0A),WgtEP);
1401  //fHist_Corr3p_vsRun_EP_PP[1]->Fill(EvtCent, runindex, TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0C),WgtEP);
1402 
1403  fHist_Corr2p_EP_Norm_PP[QAindex]->Fill(EvtCent,0.5,TMath::Cos((dPhi1 - dPhi2)),WgtEP);
1404  fHist_Corr2p_EP_Norm_PP[QAindex]->Fill(EvtCent,1.5,TMath::Cos(2.*(dPhi1 - dPhi2)),WgtEP);
1405  fHist_Corr2p_EP_Norm_PP[QAindex]->Fill(EvtCent,2.5,TMath::Cos(3.*(dPhi1 - dPhi2)),WgtEP);
1406  fHist_Corr2p_EP_Norm_PP[QAindex]->Fill(EvtCent,3.5,TMath::Cos(4.*(dPhi1 - dPhi2)),WgtEP);
1407 
1408  if(cIndex<6){
1409  fHist_Corr3p_pTSum_EP_V0A_PP[QAindex][cIndex]->Fill((dPt1+dPt2)*0.5, TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0A),WgtEP);
1410  fHist_Corr3p_pTSum_EP_V0C_PP[QAindex][cIndex]->Fill((dPt1+dPt2)*0.5, TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0C),WgtEP);
1411  fHist_Corr3p_pTDiff_EP_V0A_PP[QAindex][cIndex]->Fill(TMath::Abs(dPt1-dPt2), TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0A),WgtEP);
1412  fHist_Corr3p_pTDiff_EP_V0C_PP[QAindex][cIndex]->Fill(TMath::Abs(dPt1-dPt2), TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0C),WgtEP);
1413  fHist_Corr3p_EtaDiff_EP_V0A_PP[QAindex][cIndex]->Fill(TMath::Abs(dEta1-dEta2), TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0A),WgtEP);
1414  fHist_Corr3p_EtaDiff_EP_V0C_PP[QAindex][cIndex]->Fill(TMath::Abs(dEta1-dEta2), TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0C),WgtEP);
1415  }
1416  }
1417  else if(dChrg1<0 && dChrg2<0){
1418  fHist_Corr3p_EP_Norm_NN[QAindex][0]->Fill(EvtCent, TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0A),WgtEP);
1419  fHist_Corr3p_EP_Norm_NN[QAindex][1]->Fill(EvtCent, TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0C),WgtEP);
1420 
1421  //fHist_Corr3p_vsRun_EP_NN[0]->Fill(EvtCent, runindex, TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0A),WgtEP);
1422  //fHist_Corr3p_vsRun_EP_NN[1]->Fill(EvtCent, runindex, TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0C),WgtEP);
1423 
1424  fHist_Corr2p_EP_Norm_NN[QAindex]->Fill(EvtCent,0.5,TMath::Cos((dPhi1 - dPhi2)),WgtEP);
1425  fHist_Corr2p_EP_Norm_NN[QAindex]->Fill(EvtCent,1.5,TMath::Cos(2.*(dPhi1 - dPhi2)),WgtEP);
1426  fHist_Corr2p_EP_Norm_NN[QAindex]->Fill(EvtCent,2.5,TMath::Cos(3.*(dPhi1 - dPhi2)),WgtEP);
1427  fHist_Corr2p_EP_Norm_NN[QAindex]->Fill(EvtCent,3.5,TMath::Cos(4.*(dPhi1 - dPhi2)),WgtEP);
1428 
1429  if(cIndex<6){
1430  fHist_Corr3p_pTSum_EP_V0A_NN[QAindex][cIndex]->Fill((dPt1+dPt2)*0.5, TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0A),WgtEP);
1431  fHist_Corr3p_pTSum_EP_V0C_NN[QAindex][cIndex]->Fill((dPt1+dPt2)*0.5, TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0C),WgtEP);
1432  fHist_Corr3p_pTDiff_EP_V0A_NN[QAindex][cIndex]->Fill(TMath::Abs(dPt1-dPt2), TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0A),WgtEP);
1433  fHist_Corr3p_pTDiff_EP_V0C_NN[QAindex][cIndex]->Fill(TMath::Abs(dPt1-dPt2), TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0C),WgtEP);
1434  fHist_Corr3p_EtaDiff_EP_V0A_NN[QAindex][cIndex]->Fill(TMath::Abs(dEta1-dEta2), TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0A),WgtEP);
1435  fHist_Corr3p_EtaDiff_EP_V0C_NN[QAindex][cIndex]->Fill(TMath::Abs(dEta1-dEta2), TMath::Cos(n*dPhi1 + m*dPhi2 - p*Psi2V0C),WgtEP);
1436  }
1437  }
1438  }//nested loop ends
1439  }//------ track loop ends ------
1440 
1441  fEventStatvsRun->Fill(runindex);
1442 
1443  fCentDistvsRun->Fill(EvtCent,runindex);
1444 
1445 
1446  if(EvtCent<=20){
1447  fCentV0MvsVzRun->Fill(VtxZ,runindex,EvtCent);
1448  fCentCL1vsVzRun->Fill(VtxZ,runindex,(centrCL1-EvtCent));
1449  }
1450 
1451 
1452  Double_t QTPCRe = QxTPC[1];
1453  Double_t QTPCIm = QyTPC[1];
1454 
1455  Double_t Psi2TPC = 1./psiN*(TMath::ATan2(QTPCIm,QTPCRe));
1456  if(Psi2TPC < 0.) Psi2TPC += 2*pi/psiN;
1457 
1458  fTPCQ2xVsCentRun->Fill(EvtCent,runindex,TMath::Cos(Psi2TPC));
1459  fTPCQ2yVsCentRun->Fill(EvtCent,runindex,TMath::Sin(Psi2TPC));//centrCL1
1460 
1461  PostData(3,fListNUAHist); // Store NUA for all Runs including bad one.
1462 
1463 
1464  if(QTPCRe==0 && QTPCIm==0) return; // is this is one to one with bad run list?
1465  fHist_Event_count->Fill(stepCount); //6
1466  stepCount++;
1467 
1468 
1469  if(isBadRun) return;
1470  fHist_Event_count->Fill(stepCount); //7
1471  stepCount++;
1472 
1473 
1474 
1475  Float_t fNegTracks = iTracks*0.5;
1476  Float_t ratioReject = (Float_t) icReject/fNegTracks;
1477 
1478  fRejectRatioVsCR->Fill(EvtCent,runindex,ratioReject);
1479 
1480 
1481 
1482 
1483 
1484 
1485 
1486 //V0A-V0C EP resolution:
1487  fHist_Reso2n_EP_Norm_Det[QAindex][0]->Fill(EvtCent, TMath::Cos(psiN*(Psi2V0A-Psi2V0C)));
1488 //V0A-TPC EP resolution:
1489  fHist_Reso2n_EP_Norm_Det[QAindex][1]->Fill(EvtCent, TMath::Cos(psiN*(Psi2V0A-Psi2TPC)));
1490 //V0C-TPC EP resolution:
1491  fHist_Reso2n_EP_Norm_Det[QAindex][2]->Fill(EvtCent, TMath::Cos(psiN*(Psi2V0C-Psi2TPC)));
1492 
1493  fHV0AEventPlaneVsCent->Fill(EvtCent,Psi2V0A);
1494  fHV0CEventPlaneVsCent->Fill(EvtCent,Psi2V0C);
1495  fHTPCEventPlaneVsCent->Fill(EvtCent,Psi2TPC);
1496 
1497 
1498 
1499 
1500 
1501 
1502  //------- SP Method -------------
1503 
1504 
1505  Double_t uPRe=0.,uNRe=0.,uPIm=0.,uNIm=0.,uN2Re=0.,uN2Im=0.,uP2Re=0.,uP2Im=0.;
1506  Double_t uPM=0.,uNM=0.;
1507  //Double_t VCIm=0., VPRe=0.,VPIm=0.;
1508 
1509 
1510  uPM = MPOIpos; uNM = MPOIneg;
1511 
1512  uPRe = QxPos[0]; uNRe = QxNeg[0];
1513  uPIm = QyPos[0]; uNIm = QyNeg[0];
1514 
1515  uP2Re = QxAutoPos[0]; uP2Im = QyAutoPos[0];
1516  uN2Re = QxAutoNeg[0]; uN2Im = QyAutoNeg[0];
1517 
1518  Double_t TwoQpQnV = 0.,TwoQpQpV=0.,TwoQnQnV=0.;
1519 
1520  if(uPM > 1 && uNM > 1) {
1521  //CME w.r.t V0A EP:
1522  TwoQpQnV = ((uPRe*uNRe-uPIm*uNIm)*QxanCor + (uPRe*uNIm+uPIm*uNRe)*QyanCor) / (uPM*uNM) ;
1523  TwoQpQpV = ((uPRe*uPRe-uPIm*uPIm-uP2Re)*QxanCor + (2.*uPRe*uPIm-uP2Im)*QyanCor) / (uPM*(uPM-1)) ;
1524  TwoQnQnV = ((uNRe*uNRe-uNIm*uNIm-uN2Re)*QxanCor + (2.*uNRe*uNIm-uN2Im)*QyanCor) / (uNM*(uNM-1)) ;
1525  //Fill profiles:
1526  fHist_Corr3p_SP_Norm_PN[QAindex][0]->Fill(EvtCent, TwoQpQnV, uPM*uNM);
1527  fHist_Corr3p_SP_Norm_PP[QAindex][0]->Fill(EvtCent, TwoQpQpV, (uPM*(uPM-1)));
1528  fHist_Corr3p_SP_Norm_NN[QAindex][0]->Fill(EvtCent, TwoQnQnV, (uNM*(uNM-1)));
1529 
1530  //-------- Fill NonIsotropic terms ------
1531 
1532  Double_t QnNonIsoRe = 0.,QnNonIsoIm=0.;
1533 
1534  if(QAindex==0){ //B < 0
1535  //charge pos:
1536  fHist_NonIso_SP_PP_Mag0[0]->Fill(EvtCent, 0.5,uPRe/uPM,uPM); //<Cos(nPhi)> ChPos
1537  fHist_NonIso_SP_PP_Mag0[0]->Fill(EvtCent, 1.5,uPIm/uPM,uPM); //<Sin(nPhi)> ChPos
1538 
1539  QnNonIsoRe = (uPRe*QxanCor + uPIm*QyanCor)/uPM;
1540  QnNonIsoIm = (uPIm*QxanCor - uPRe*QyanCor)/uPM;
1541  fHist_NonIso_SP_PP_Mag0[0]->Fill(EvtCent, 2.5,QnNonIsoRe,uPM); //<Cos(nPhi-mPsi)> ChPos
1542  fHist_NonIso_SP_PP_Mag0[0]->Fill(EvtCent, 3.5,QnNonIsoIm,uPM); //<Sin(nPhi-mPsi)> ChPos
1543 
1544  QnNonIsoRe = (uPRe*uPRe-uPIm*uPIm-uP2Re)/(uPM*(uPM-1));
1545  QnNonIsoIm = (2.*uPRe*uPIm-uP2Im)/(uPM*(uPM-1));
1546  fHist_NonIso_SP_PP_Mag0[0]->Fill(EvtCent, 4.5,QnNonIsoRe,(uPM*(uPM-1))); //<Cos(nPhi1+nPhi2)> ChPos
1547  fHist_NonIso_SP_PP_Mag0[0]->Fill(EvtCent, 5.5,QnNonIsoIm,(uPM*(uPM-1))); //<Sin(nPhi1+nPhi2)> ChPos
1548 
1549  QnNonIsoRe = (uPRe*uNRe-uPIm*uNIm)/(uPM*uNM);
1550  QnNonIsoIm = (uPRe*uNIm+uPIm*uNRe)/(uPM*uNM);
1551  fHist_NonIso_SP_PP_Mag0[0]->Fill(EvtCent, 6.5,QnNonIsoRe,(uPM*uNM)); //<Cos(nPhi1+nPhi2)> phi1,phi2 opposite charge
1552  fHist_NonIso_SP_PP_Mag0[0]->Fill(EvtCent, 7.5,QnNonIsoIm,(uPM*uNM)); //<Sin(nPhi1+nPhi2)> phi1,phi2 opposite charge
1553 
1554  fHist_NonIso_SP_PP_Mag0[0]->Fill(EvtCent, 8.5,QxanCor,uPM); //<Cos(mPsiEP)>
1555  fHist_NonIso_SP_PP_Mag0[0]->Fill(EvtCent, 9.5,QyanCor,uPM); //<Sin(mPsiEP)>
1556 
1557  //charge neg:
1558  fHist_NonIso_SP_NN_Mag0[0]->Fill(EvtCent, 0.5,uNRe/uNM,uNM); //<Cos(nPhi)> ChNeg
1559  fHist_NonIso_SP_NN_Mag0[0]->Fill(EvtCent, 1.5,uNIm/uNM,uNM); //<Sin(nPhi)> ChNeg
1560 
1561  QnNonIsoRe = (uNRe*QxanCor + uNIm*QyanCor)/uNM;
1562  QnNonIsoIm = (uNIm*QxanCor - uNRe*QyanCor)/uNM;
1563  fHist_NonIso_SP_NN_Mag0[0]->Fill(EvtCent, 2.5,QnNonIsoRe,uNM); //<Cos(nPhi-mPsi)> ChNeg
1564  fHist_NonIso_SP_NN_Mag0[0]->Fill(EvtCent, 3.5,QnNonIsoIm,uNM); //<Cos(nPhi-mPsi)> ChNeg
1565 
1566  QnNonIsoRe = (uNRe*uNRe-uNIm*uNIm-uN2Re)/(uNM*(uNM-1));
1567  QnNonIsoIm = (2.*uNRe*uNIm-uN2Im)/(uNM*(uNM-1));
1568  fHist_NonIso_SP_NN_Mag0[0]->Fill(EvtCent, 4.5,QnNonIsoRe,(uNM*(uNM-1))); //<Cos(nPhi1+nPhi2)> ChNeg
1569  fHist_NonIso_SP_NN_Mag0[0]->Fill(EvtCent, 5.5,QnNonIsoIm,(uNM*(uNM-1))); //<Sin(nPhi1+nPhi2)> ChNeg
1570 
1571  QnNonIsoRe = (uPRe*uNRe-uPIm*uNIm)/(uPM*uNM);
1572  QnNonIsoIm = (uPRe*uNIm+uPIm*uNRe)/(uPM*uNM);
1573  fHist_NonIso_SP_NN_Mag0[0]->Fill(EvtCent, 6.5,QnNonIsoRe,(uPM*uNM)); //<Cos(nPhi1+nPhi2)> phi1,phi2 opposite charge
1574  fHist_NonIso_SP_NN_Mag0[0]->Fill(EvtCent, 7.5,QnNonIsoIm,(uPM*uNM)); //<Sin(nPhi1+nPhi2)> phi1,phi2 opposite charge
1575 
1576  fHist_NonIso_SP_NN_Mag0[0]->Fill(EvtCent, 8.5,QxanCor,uNM); //<Cos(mPsiEP)>
1577  fHist_NonIso_SP_NN_Mag0[0]->Fill(EvtCent, 9.5,QyanCor,uNM); //<Sin(mPsiEP)>
1578  }
1579  else if(QAindex==1){ //B > 0
1580  //charge pos:
1581  fHist_NonIso_SP_PP_Mag1[0]->Fill(EvtCent, 0.5,uPRe/uPM,uPM); //<Cos(nPhi)> ChPos
1582  fHist_NonIso_SP_PP_Mag1[0]->Fill(EvtCent, 1.5,uPIm/uPM,uPM); //<Sin(nPhi)> ChPos
1583 
1584  QnNonIsoRe = (uPRe*QxanCor + uPIm*QyanCor)/uPM;
1585  QnNonIsoIm = (uPIm*QxanCor - uPRe*QyanCor)/uPM;
1586  fHist_NonIso_SP_PP_Mag1[0]->Fill(EvtCent, 2.5,QnNonIsoRe,uPM); //<Cos(nPhi-mPsi)> ChPos
1587  fHist_NonIso_SP_PP_Mag1[0]->Fill(EvtCent, 3.5,QnNonIsoIm,uPM); //<Sin(nPhi-mPsi)> ChPos
1588 
1589  QnNonIsoRe = (uPRe*uPRe-uPIm*uPIm-uP2Re)/(uPM*(uPM-1));
1590  QnNonIsoIm = (2.*uPRe*uPIm-uP2Im)/(uPM*(uPM-1));
1591  fHist_NonIso_SP_PP_Mag1[0]->Fill(EvtCent, 4.5,QnNonIsoRe,(uPM*(uPM-1))); //<Cos(nPhi1+nPhi2)> ChPos
1592  fHist_NonIso_SP_PP_Mag1[0]->Fill(EvtCent, 5.5,QnNonIsoIm,(uPM*(uPM-1))); //<Sin(nPhi1+nPhi2)> ChPos
1593 
1594  QnNonIsoRe = (uPRe*uNRe-uPIm*uNIm)/(uPM*uNM);
1595  QnNonIsoIm = (uPRe*uNIm+uPIm*uNRe)/(uPM*uNM);
1596  fHist_NonIso_SP_PP_Mag1[0]->Fill(EvtCent, 6.5,QnNonIsoRe,(uPM*uNM)); //<Cos(nPhi1+nPhi2)> phi1,phi2 opposite charge
1597  fHist_NonIso_SP_PP_Mag1[0]->Fill(EvtCent, 7.5,QnNonIsoIm,(uPM*uNM)); //<Sin(nPhi1+nPhi2)> phi1,phi2 opposite charge
1598 
1599  fHist_NonIso_SP_PP_Mag1[0]->Fill(EvtCent, 8.5,QxanCor,uPM); //<Cos(mPsiEP)>
1600  fHist_NonIso_SP_PP_Mag1[0]->Fill(EvtCent, 9.5,QyanCor,uPM); //<Sin(mPsiEP)>
1601 
1602  //charge neg:
1603  fHist_NonIso_SP_NN_Mag1[0]->Fill(EvtCent, 0.5,uNRe/uNM,uNM); //<Cos(nPhi)> ChNeg
1604  fHist_NonIso_SP_NN_Mag1[0]->Fill(EvtCent, 1.5,uNIm/uNM,uNM); //<Sin(nPhi)> ChNeg
1605 
1606  QnNonIsoRe = (uNRe*QxanCor + uNIm*QyanCor)/uNM;
1607  QnNonIsoIm = (uNIm*QxanCor - uNRe*QyanCor)/uNM;
1608  fHist_NonIso_SP_NN_Mag1[0]->Fill(EvtCent, 2.5,QnNonIsoRe,uNM); //<Cos(nPhi-mPsi)> ChNeg
1609  fHist_NonIso_SP_NN_Mag1[0]->Fill(EvtCent, 3.5,QnNonIsoIm,uNM); //<Cos(nPhi-mPsi)> ChNeg
1610 
1611  QnNonIsoRe = (uNRe*uNRe-uNIm*uNIm-uN2Re)/(uNM*(uNM-1));
1612  QnNonIsoIm = (2.*uNRe*uNIm-uN2Im)/(uNM*(uNM-1));
1613  fHist_NonIso_SP_NN_Mag1[0]->Fill(EvtCent, 4.5,QnNonIsoRe,(uNM*(uNM-1))); //<Cos(nPhi1+nPhi2)> ChNeg
1614  fHist_NonIso_SP_NN_Mag1[0]->Fill(EvtCent, 5.5,QnNonIsoIm,(uNM*(uNM-1))); //<Sin(nPhi1+nPhi2)> ChNeg
1615 
1616  QnNonIsoRe = (uPRe*uNRe-uPIm*uNIm)/(uPM*uNM);
1617  QnNonIsoIm = (uPRe*uNIm+uPIm*uNRe)/(uPM*uNM);
1618  fHist_NonIso_SP_NN_Mag1[0]->Fill(EvtCent, 6.5,QnNonIsoRe,(uPM*uNM)); //<Cos(nPhi1+nPhi2)> phi1,phi2 opposite charge
1619  fHist_NonIso_SP_NN_Mag1[0]->Fill(EvtCent, 7.5,QnNonIsoIm,(uPM*uNM)); //<Sin(nPhi1+nPhi2)> phi1,phi2 opposite charge
1620 
1621  fHist_NonIso_SP_NN_Mag1[0]->Fill(EvtCent, 8.5,QxanCor,uNM); //<Cos(mPsiEP)>
1622  fHist_NonIso_SP_NN_Mag1[0]->Fill(EvtCent, 9.5,QyanCor,uNM); //<Sin(mPsiEP)>
1623  }
1624 
1625 
1626  //-------- CME - ZDN correlators:---------
1627  fHist_Corr3p_ZDN_SP_PN[0]->Fill(EvtCent, 0., TwoQpQnV, uPM*uNM);
1628  fHist_Corr3p_ZDN_SP_PN[0]->Fill(EvtCent, 1., energyZPA, 1.);
1629  fHist_Corr3p_ZDN_SP_PN[0]->Fill(EvtCent, 2., energyZPC, 1.);
1630  fHist_Corr3p_ZDN_SP_PN[0]->Fill(EvtCent, 3., (energyZPA+energyZPC), 1.);
1631  fHist_Corr3p_ZDN_SP_PN[0]->Fill(EvtCent, 4., energyZNA, 1.);
1632  fHist_Corr3p_ZDN_SP_PN[0]->Fill(EvtCent, 5., energyZNC, 1.);
1633  fHist_Corr3p_ZDN_SP_PN[0]->Fill(EvtCent, 6., (energyZNA+energyZNC), 1.);
1634  fHist_Corr3p_ZDN_SP_PN[0]->Fill(EvtCent, 7., TwoQpQnV*energyZPA, uPM*uNM);
1635  fHist_Corr3p_ZDN_SP_PN[0]->Fill(EvtCent, 8., TwoQpQnV*energyZPC, uPM*uNM);
1636  fHist_Corr3p_ZDN_SP_PN[0]->Fill(EvtCent, 9., TwoQpQnV*(energyZPC+energyZPA), uPM*uNM);
1637  fHist_Corr3p_ZDN_SP_PN[0]->Fill(EvtCent, 10., TwoQpQnV*energyZNA, uPM*uNM);
1638  fHist_Corr3p_ZDN_SP_PN[0]->Fill(EvtCent, 11., TwoQpQnV*energyZNC, uPM*uNM);
1639  fHist_Corr3p_ZDN_SP_PN[0]->Fill(EvtCent, 12., TwoQpQnV*(energyZNC+energyZNA), uPM*uNM);
1640 
1641  fHist_Corr3p_ZDN_SP_PP[0]->Fill(EvtCent, 0., TwoQpQpV, (uPM*(uPM-1)));
1642  //fHist_Corr3p_ZDN_SP_PP[0]->Fill(EvtCent, 1., energyZPA, 1.);
1643  //fHist_Corr3p_ZDN_SP_PP[0]->Fill(EvtCent, 2., energyZPC, 1.);
1644  //fHist_Corr3p_ZDN_SP_PP[0]->Fill(EvtCent, 3., (energyZPA+energyZPC), 1.);
1645  //fHist_Corr3p_ZDN_SP_PP[0]->Fill(EvtCent, 4., energyZNA, 1.);
1646  //fHist_Corr3p_ZDN_SP_PP[0]->Fill(EvtCent, 5., energyZNC, 1.);
1647  //fHist_Corr3p_ZDN_SP_PP[0]->Fill(EvtCent, 6., (energyZNA+energyZNC), 1.);
1648  fHist_Corr3p_ZDN_SP_PP[0]->Fill(EvtCent, 7., TwoQpQpV*energyZPA, (uPM*(uPM-1)));
1649  fHist_Corr3p_ZDN_SP_PP[0]->Fill(EvtCent, 8., TwoQpQpV*energyZPC, (uPM*(uPM-1)));
1650  fHist_Corr3p_ZDN_SP_PP[0]->Fill(EvtCent, 9., TwoQpQpV*(energyZPC+energyZPA), (uPM*(uPM-1)));
1651  fHist_Corr3p_ZDN_SP_PP[0]->Fill(EvtCent, 10., TwoQpQpV*energyZNA, (uPM*(uPM-1)));
1652  fHist_Corr3p_ZDN_SP_PP[0]->Fill(EvtCent, 11., TwoQpQpV*energyZNC, (uPM*(uPM-1)));
1653  fHist_Corr3p_ZDN_SP_PP[0]->Fill(EvtCent, 12., TwoQpQpV*(energyZNC+energyZNA), (uPM*(uPM-1)));
1654 
1655  fHist_Corr3p_ZDN_SP_NN[0]->Fill(EvtCent, 0., TwoQnQnV, (uNM*(uNM-1)));
1656  //fHist_Corr3p_ZDN_SP_NN[0]->Fill(EvtCent, 1., energyZPA, 1.);
1657  //fHist_Corr3p_ZDN_SP_NN[0]->Fill(EvtCent, 2., energyZPC, 1.);
1658  //fHist_Corr3p_ZDN_SP_NN[0]->Fill(EvtCent, 3., (energyZPA+energyZPC), 1.);
1659  //fHist_Corr3p_ZDN_SP_NN[0]->Fill(EvtCent, 4., energyZNA, 1.);
1660  //fHist_Corr3p_ZDN_SP_NN[0]->Fill(EvtCent, 5., energyZNC, 1.);
1661  //fHist_Corr3p_ZDN_SP_NN[0]->Fill(EvtCent, 6., (energyZNA+energyZNC), 1.);
1662  fHist_Corr3p_ZDN_SP_NN[0]->Fill(EvtCent, 7., TwoQnQnV*energyZPA, (uNM*(uNM-1)));
1663  fHist_Corr3p_ZDN_SP_NN[0]->Fill(EvtCent, 8., TwoQnQnV*energyZPC, (uNM*(uNM-1)));
1664  fHist_Corr3p_ZDN_SP_NN[0]->Fill(EvtCent, 9., TwoQnQnV*(energyZPC+energyZPA), (uNM*(uNM-1)));
1665  fHist_Corr3p_ZDN_SP_NN[0]->Fill(EvtCent, 10., TwoQnQnV*energyZNA, (uNM*(uNM-1)));
1666  fHist_Corr3p_ZDN_SP_NN[0]->Fill(EvtCent, 11., TwoQnQnV*energyZNC, (uNM*(uNM-1)));
1667  fHist_Corr3p_ZDN_SP_NN[0]->Fill(EvtCent, 12., TwoQnQnV*(energyZNC+energyZNA), (uNM*(uNM-1)));
1668  //-----------------------------------------
1669 
1670 
1671 
1672 
1673  //CME w.r.t V0C EP:
1674  TwoQpQnV = 0.; TwoQpQpV = 0.; TwoQnQnV = 0.;
1675  TwoQpQnV = ((uPRe*uNRe-uPIm*uNIm)*QxcnCor + (uPRe*uNIm+uPIm*uNRe)*QycnCor) / (uPM*uNM) ;
1676  TwoQpQpV = ((uPRe*uPRe-uPIm*uPIm-uP2Re)*QxcnCor + (2.*uPRe*uPIm-uP2Im)*QycnCor) / (uPM*(uPM-1)) ;
1677  TwoQnQnV = ((uNRe*uNRe-uNIm*uNIm-uN2Re)*QxcnCor + (2.*uNRe*uNIm-uN2Im)*QycnCor) / (uNM*(uNM-1)) ;
1678 
1679  //Fill profiles:
1680  fHist_Corr3p_SP_Norm_PN[QAindex][1]->Fill(EvtCent, TwoQpQnV, uPM*uNM);
1681  fHist_Corr3p_SP_Norm_PP[QAindex][1]->Fill(EvtCent, TwoQpQpV, (uPM*(uPM-1)));
1682  fHist_Corr3p_SP_Norm_NN[QAindex][1]->Fill(EvtCent, TwoQnQnV, (uNM*(uNM-1)));
1683 
1684  if(QAindex==0){ //B < 0
1685  //charge pos:
1686  fHist_NonIso_SP_PP_Mag0[1]->Fill(EvtCent, 0.5,uPRe/uPM,uPM); //<Cos(nPhi)> ChPos
1687  fHist_NonIso_SP_PP_Mag0[1]->Fill(EvtCent, 1.5,uPIm/uPM,uPM); //<Sin(nPhi)> ChPos
1688 
1689  QnNonIsoRe = (uPRe*QxcnCor + uPIm*QycnCor)/uPM;
1690  QnNonIsoIm = (uPIm*QxcnCor - uPRe*QycnCor)/uPM;
1691  fHist_NonIso_SP_PP_Mag0[1]->Fill(EvtCent, 2.5,QnNonIsoRe,uPM); //<Cos(nPhi-mPsi)> ChPos
1692  fHist_NonIso_SP_PP_Mag0[1]->Fill(EvtCent, 3.5,QnNonIsoIm,uPM); //<Sin(nPhi-mPsi)> ChPos
1693 
1694  QnNonIsoRe = (uPRe*uPRe-uPIm*uPIm-uP2Re)/(uPM*(uPM-1));
1695  QnNonIsoIm = (2.*uPRe*uPIm-uP2Im)/(uPM*(uPM-1));
1696  fHist_NonIso_SP_PP_Mag0[1]->Fill(EvtCent, 4.5,QnNonIsoRe,(uPM*(uPM-1))); //<Cos(nPhi1+nPhi2)> ChPos
1697  fHist_NonIso_SP_PP_Mag0[1]->Fill(EvtCent, 5.5,QnNonIsoIm,(uPM*(uPM-1))); //<Sin(nPhi1+nPhi2)> ChPos
1698 
1699  QnNonIsoRe = (uPRe*uNRe-uPIm*uNIm)/(uPM*uNM);
1700  QnNonIsoIm = (uPRe*uNIm+uPIm*uNRe)/(uPM*uNM);
1701  fHist_NonIso_SP_PP_Mag0[1]->Fill(EvtCent, 6.5,QnNonIsoRe,(uPM*uNM)); //<Cos(nPhi1+nPhi2)> phi1,phi2 opposite charge
1702  fHist_NonIso_SP_PP_Mag0[1]->Fill(EvtCent, 7.5,QnNonIsoIm,(uPM*uNM)); //<Sin(nPhi1+nPhi2)> phi1,phi2 opposite charge
1703 
1704  fHist_NonIso_SP_PP_Mag0[1]->Fill(EvtCent, 8.5,QxcnCor,uPM); //<Cos(mPsiEP)>
1705  fHist_NonIso_SP_PP_Mag0[1]->Fill(EvtCent, 9.5,QycnCor,uPM); //<Sin(mPsiEP)>
1706 
1707  //charge neg:
1708  fHist_NonIso_SP_NN_Mag0[1]->Fill(EvtCent, 0.5,uNRe/uNM,uNM); //<Cos(nPhi)> ChNeg
1709  fHist_NonIso_SP_NN_Mag0[1]->Fill(EvtCent, 1.5,uNIm/uNM,uNM); //<Sin(nPhi)> ChNeg
1710 
1711  QnNonIsoRe = (uNRe*QxcnCor + uNIm*QycnCor)/uNM;
1712  QnNonIsoIm = (uNIm*QxcnCor - uNRe*QycnCor)/uNM;
1713  fHist_NonIso_SP_NN_Mag0[1]->Fill(EvtCent, 2.5,QnNonIsoRe,uNM); //<Cos(nPhi-mPsi)> ChNeg
1714  fHist_NonIso_SP_NN_Mag0[1]->Fill(EvtCent, 3.5,QnNonIsoIm,uNM); //<Cos(nPhi-mPsi)> ChNeg
1715 
1716  QnNonIsoRe = (uNRe*uNRe-uNIm*uNIm-uN2Re)/(uNM*(uNM-1));
1717  QnNonIsoIm = (2.*uNRe*uNIm-uN2Im)/(uNM*(uNM-1));
1718  fHist_NonIso_SP_NN_Mag0[1]->Fill(EvtCent, 4.5,QnNonIsoRe,(uNM*(uNM-1))); //<Cos(nPhi1+nPhi2)> ChNeg
1719  fHist_NonIso_SP_NN_Mag0[1]->Fill(EvtCent, 5.5,QnNonIsoIm,(uNM*(uNM-1))); //<Sin(nPhi1+nPhi2)> ChNeg
1720 
1721  QnNonIsoRe = (uPRe*uNRe-uPIm*uNIm)/(uPM*uNM);
1722  QnNonIsoIm = (uPRe*uNIm+uPIm*uNRe)/(uPM*uNM);
1723  fHist_NonIso_SP_NN_Mag0[1]->Fill(EvtCent, 6.5,QnNonIsoRe,(uPM*uNM)); //<Cos(nPhi1+nPhi2)> phi1,phi2 opposite charge
1724  fHist_NonIso_SP_NN_Mag0[1]->Fill(EvtCent, 7.5,QnNonIsoIm,(uPM*uNM)); //<Sin(nPhi1+nPhi2)> phi1,phi2 opposite charge
1725 
1726  fHist_NonIso_SP_NN_Mag0[1]->Fill(EvtCent, 8.5,QxcnCor,uNM); //<Cos(mPsiEP)>
1727  fHist_NonIso_SP_NN_Mag0[1]->Fill(EvtCent, 9.5,QycnCor,uNM); //<Sin(mPsiEP)>
1728  }
1729  else if(QAindex==1) { //B > 0
1730  //charge pos:
1731  fHist_NonIso_SP_PP_Mag1[1]->Fill(EvtCent, 0.5,uPRe/uPM,uPM); //<Cos(nPhi)> ChPos
1732  fHist_NonIso_SP_PP_Mag1[1]->Fill(EvtCent, 1.5,uPIm/uPM,uPM); //<Sin(nPhi)> ChPos
1733 
1734  QnNonIsoRe = (uPRe*QxcnCor + uPIm*QycnCor)/uPM;
1735  QnNonIsoIm = (uPIm*QxcnCor - uPRe*QycnCor)/uPM;
1736  fHist_NonIso_SP_PP_Mag1[1]->Fill(EvtCent, 2.5,QnNonIsoRe,uPM); //<Cos(nPhi-mPsi)> ChPos
1737  fHist_NonIso_SP_PP_Mag1[1]->Fill(EvtCent, 3.5,QnNonIsoIm,uPM); //<Sin(nPhi-mPsi)> ChPos
1738 
1739  QnNonIsoRe = (uPRe*uPRe-uPIm*uPIm-uP2Re)/(uPM*(uPM-1));
1740  QnNonIsoIm = (2.*uPRe*uPIm-uP2Im)/(uPM*(uPM-1));
1741  fHist_NonIso_SP_PP_Mag1[1]->Fill(EvtCent, 4.5,QnNonIsoRe,(uPM*(uPM-1))); //<Cos(nPhi1+nPhi2)> ChPos
1742  fHist_NonIso_SP_PP_Mag1[1]->Fill(EvtCent, 5.5,QnNonIsoIm,(uPM*(uPM-1))); //<Sin(nPhi1+nPhi2)> ChPos
1743 
1744  QnNonIsoRe = (uPRe*uNRe-uPIm*uNIm)/(uPM*uNM);
1745  QnNonIsoIm = (uPRe*uNIm+uPIm*uNRe)/(uPM*uNM);
1746  fHist_NonIso_SP_PP_Mag1[1]->Fill(EvtCent, 6.5,QnNonIsoRe,(uPM*uNM)); //<Cos(nPhi1+nPhi2)> phi1,phi2 opposite charge
1747  fHist_NonIso_SP_PP_Mag1[1]->Fill(EvtCent, 7.5,QnNonIsoIm,(uPM*uNM)); //<Sin(nPhi1+nPhi2)> phi1,phi2 opposite charge
1748 
1749  fHist_NonIso_SP_PP_Mag1[1]->Fill(EvtCent, 8.5,QxcnCor,uPM); //<Cos(mPsiEP)>
1750  fHist_NonIso_SP_PP_Mag1[1]->Fill(EvtCent, 9.5,QycnCor,uPM); //<Sin(mPsiEP)>
1751 
1752  //charge neg:
1753  fHist_NonIso_SP_NN_Mag1[1]->Fill(EvtCent, 0.5,uNRe/uNM,uNM); //<Cos(nPhi)> ChNeg
1754  fHist_NonIso_SP_NN_Mag1[1]->Fill(EvtCent, 1.5,uNIm/uNM,uNM); //<Sin(nPhi)> ChNeg
1755 
1756  QnNonIsoRe = (uNRe*QxcnCor + uNIm*QycnCor)/uNM;
1757  QnNonIsoIm = (uNIm*QxcnCor - uNRe*QycnCor)/uNM;
1758  fHist_NonIso_SP_NN_Mag1[1]->Fill(EvtCent, 2.5,QnNonIsoRe,uNM); //<Cos(nPhi-mPsi)> ChNeg
1759  fHist_NonIso_SP_NN_Mag1[1]->Fill(EvtCent, 3.5,QnNonIsoIm,uNM); //<Cos(nPhi-mPsi)> ChNeg
1760 
1761  QnNonIsoRe = (uNRe*uNRe-uNIm*uNIm-uN2Re)/(uNM*(uNM-1));
1762  QnNonIsoIm = (2.*uNRe*uNIm-uN2Im)/(uNM*(uNM-1));
1763  fHist_NonIso_SP_NN_Mag1[1]->Fill(EvtCent, 4.5,QnNonIsoRe,(uNM*(uNM-1))); //<Cos(nPhi1+nPhi2)> ChNeg
1764  fHist_NonIso_SP_NN_Mag1[1]->Fill(EvtCent, 5.5,QnNonIsoIm,(uNM*(uNM-1))); //<Sin(nPhi1+nPhi2)> ChNeg
1765 
1766  QnNonIsoRe = (uPRe*uNRe-uPIm*uNIm)/(uPM*uNM);
1767  QnNonIsoIm = (uPRe*uNIm+uPIm*uNRe)/(uPM*uNM);
1768  fHist_NonIso_SP_NN_Mag1[1]->Fill(EvtCent, 6.5,QnNonIsoRe,(uPM*uNM)); //<Cos(nPhi1+nPhi2)> phi1,phi2 opposite charge
1769  fHist_NonIso_SP_NN_Mag1[1]->Fill(EvtCent, 7.5,QnNonIsoIm,(uPM*uNM)); //<Sin(nPhi1+nPhi2)> phi1,phi2 opposite charge
1770 
1771  fHist_NonIso_SP_NN_Mag1[1]->Fill(EvtCent, 8.5,QxcnCor,uNM); //<Cos(mPsiEP)>
1772  fHist_NonIso_SP_NN_Mag1[1]->Fill(EvtCent, 9.5,QycnCor,uNM); //<Sin(mPsiEP)>
1773  }
1774 
1775 
1776  //-------- CME - ZDN correlators:---------
1777  fHist_Corr3p_ZDN_SP_PN[1]->Fill(EvtCent, 0., TwoQpQnV, uPM*uNM);
1778  fHist_Corr3p_ZDN_SP_PN[1]->Fill(EvtCent, 1., energyZPA, 1.);
1779  fHist_Corr3p_ZDN_SP_PN[1]->Fill(EvtCent, 2., energyZPC, 1.);
1780  fHist_Corr3p_ZDN_SP_PN[1]->Fill(EvtCent, 3., (energyZPA+energyZPC), 1.);
1781  fHist_Corr3p_ZDN_SP_PN[1]->Fill(EvtCent, 4., energyZNA, 1.);
1782  fHist_Corr3p_ZDN_SP_PN[1]->Fill(EvtCent, 5., energyZNC, 1.);
1783  fHist_Corr3p_ZDN_SP_PN[1]->Fill(EvtCent, 6., (energyZNA+energyZNC), 1.);
1784  fHist_Corr3p_ZDN_SP_PN[1]->Fill(EvtCent, 7., TwoQpQnV*energyZPA, uPM*uNM);
1785  fHist_Corr3p_ZDN_SP_PN[1]->Fill(EvtCent, 8., TwoQpQnV*energyZPC, uPM*uNM);
1786  fHist_Corr3p_ZDN_SP_PN[1]->Fill(EvtCent, 9., TwoQpQnV*(energyZPC+energyZPA), uPM*uNM);
1787  fHist_Corr3p_ZDN_SP_PN[1]->Fill(EvtCent, 10., TwoQpQnV*energyZNA, uPM*uNM);
1788  fHist_Corr3p_ZDN_SP_PN[1]->Fill(EvtCent, 11., TwoQpQnV*energyZNC, uPM*uNM);
1789  fHist_Corr3p_ZDN_SP_PN[1]->Fill(EvtCent, 12., TwoQpQnV*(energyZNC+energyZNA), uPM*uNM);
1790 
1791  fHist_Corr3p_ZDN_SP_PP[1]->Fill(EvtCent, 0., TwoQpQpV, (uPM*(uPM-1)));
1792  //fHist_Corr3p_ZDN_SP_PP[1]->Fill(EvtCent, 1., energyZPA, 1.);
1793  //fHist_Corr3p_ZDN_SP_PP[1]->Fill(EvtCent, 2., energyZPC, 1.);
1794  //fHist_Corr3p_ZDN_SP_PP[1]->Fill(EvtCent, 3., (energyZPA+energyZPC), 1.);
1795  //fHist_Corr3p_ZDN_SP_PP[1]->Fill(EvtCent, 4., energyZNA, 1.);
1796  //fHist_Corr3p_ZDN_SP_PP[1]->Fill(EvtCent, 5., energyZNC, 1.);
1797  //fHist_Corr3p_ZDN_SP_PP[1]->Fill(EvtCent, 6., (energyZNA+energyZNC), 1.);
1798  fHist_Corr3p_ZDN_SP_PP[1]->Fill(EvtCent, 7., TwoQpQpV*energyZPA, (uPM*(uPM-1)));
1799  fHist_Corr3p_ZDN_SP_PP[1]->Fill(EvtCent, 8., TwoQpQpV*energyZPC, (uPM*(uPM-1)));
1800  fHist_Corr3p_ZDN_SP_PP[1]->Fill(EvtCent, 9., TwoQpQpV*(energyZPC+energyZPA), (uPM*(uPM-1)));
1801  fHist_Corr3p_ZDN_SP_PP[1]->Fill(EvtCent, 10., TwoQpQpV*energyZNA, (uPM*(uPM-1)));
1802  fHist_Corr3p_ZDN_SP_PP[1]->Fill(EvtCent, 11., TwoQpQpV*energyZNC, (uPM*(uPM-1)));
1803  fHist_Corr3p_ZDN_SP_PP[1]->Fill(EvtCent, 12., TwoQpQpV*(energyZNC+energyZNA), (uPM*(uPM-1)));
1804 
1805  fHist_Corr3p_ZDN_SP_NN[1]->Fill(EvtCent, 0., TwoQnQnV, (uNM*(uNM-1)));
1806  //fHist_Corr3p_ZDN_SP_NN[1]->Fill(EvtCent, 1., energyZPA, 1.);
1807  //fHist_Corr3p_ZDN_SP_NN[1]->Fill(EvtCent, 2., energyZPC, 1.);
1808  //fHist_Corr3p_ZDN_SP_NN[1]->Fill(EvtCent, 3., (energyZPA+energyZPC), 1.);
1809  //fHist_Corr3p_ZDN_SP_NN[1]->Fill(EvtCent, 4., energyZNA, 1.);
1810  //fHist_Corr3p_ZDN_SP_NN[1]->Fill(EvtCent, 5., energyZNC, 1.);
1811  //fHist_Corr3p_ZDN_SP_NN[1]->Fill(EvtCent, 6., (energyZNA+energyZNC), 1.);
1812  fHist_Corr3p_ZDN_SP_NN[1]->Fill(EvtCent, 7., TwoQnQnV*energyZPA, (uNM*(uNM-1)));
1813  fHist_Corr3p_ZDN_SP_NN[1]->Fill(EvtCent, 8., TwoQnQnV*energyZPC, (uNM*(uNM-1)));
1814  fHist_Corr3p_ZDN_SP_NN[1]->Fill(EvtCent, 9., TwoQnQnV*(energyZPC+energyZPA), (uNM*(uNM-1)));
1815  fHist_Corr3p_ZDN_SP_NN[1]->Fill(EvtCent, 10., TwoQnQnV*energyZNA, (uNM*(uNM-1)));
1816  fHist_Corr3p_ZDN_SP_NN[1]->Fill(EvtCent, 11., TwoQnQnV*energyZNC, (uNM*(uNM-1)));
1817  fHist_Corr3p_ZDN_SP_NN[1]->Fill(EvtCent, 12., TwoQnQnV*(energyZNC+energyZNA), (uNM*(uNM-1)));
1818  //-----------------------------------------
1819 
1820 
1821  //Fill Mult, POIs vs cent:
1822 
1823  fAvgMultCentRun->Fill(EvtCent,runindex,nRefMult);
1824  fAvgWgtMultCentRun->Fill(EvtCent,runindex,nRefMultWgt);
1825  fAvgPOIposCentRun->Fill(EvtCent,runindex,uPM);
1826  fAvgPOInegCentRun->Fill(EvtCent,runindex,uNM);
1827  fAvgPOIPPCentRun->Fill(EvtCent,runindex,(uPM*(uPM-1)));
1828  fAvgPOINNCentRun->Fill(EvtCent,runindex,(uNM*(uNM-1)));
1829  fAvgPOIOSCentRun->Fill(EvtCent,runindex,uPM*uNM);
1830 
1831 
1832  //------------ eta depedence -----------------
1833  Double_t fEtaCent = -100.;
1834 
1835  for(int ie=0; ie<16; ie++){
1836 
1837  uPM = MPOIposQAEta[ie];
1838  uNM = MPOInegQAEta[ie];
1839 
1840  if(uPM>1 && uNM>1){
1841 
1842  uPRe = QxPosQAEta[ie];
1843  uNRe = QxNegQAEta[ie];
1844  uPIm = QyPosQAEta[ie];
1845  uNIm = QyNegQAEta[ie];
1846 
1847  uP2Re = QxAutoPosQAEta[ie];
1848  uP2Im = QyAutoPosQAEta[ie];
1849  uN2Re = QxAutoNegQAEta[ie];
1850  uN2Im = QyAutoNegQAEta[ie];
1851 
1852 
1853  fEtaCent = fEtaBinFinderForQA->GetBinCenter(ie+1);
1854 
1855  //w.r.t V0A:
1856  TwoQpQnV = 0.; TwoQpQpV = 0.; TwoQnQnV = 0.;
1857  TwoQpQnV = ((uPRe*uNRe-uPIm*uNIm)*QxanCor + (uPRe*uNIm+uPIm*uNRe)*QyanCor) / (uPM*uNM) ;
1858  TwoQpQpV = ((uPRe*uPRe-uPIm*uPIm-uP2Re)*QxanCor + (2.*uPRe*uPIm-uP2Im)*QyanCor) / (uPM*(uPM-1.)) ;
1859  TwoQnQnV = ((uNRe*uNRe-uNIm*uNIm-uN2Re)*QxanCor + (2.*uNRe*uNIm-uN2Im)*QyanCor) / (uNM*(uNM-1.)) ;
1860 
1861  fHist_Corr3p_QAEta_SP_V0A_PN[QAindex]->Fill(fEtaCent,TwoQpQnV,uPM*uNM);
1862  fHist_Corr3p_QAEta_SP_V0A_PP[QAindex]->Fill(fEtaCent,TwoQpQpV,uPM*(uPM-1.));
1863  fHist_Corr3p_QAEta_SP_V0A_NN[QAindex]->Fill(fEtaCent,TwoQnQnV,uNM*(uNM-1.));
1864 
1865  //w.r.t V0C:
1866  TwoQpQnV = 0.; TwoQpQpV = 0.; TwoQnQnV = 0.;
1867  TwoQpQnV = ((uPRe*uNRe-uPIm*uNIm)*QxcnCor + (uPRe*uNIm+uPIm*uNRe)*QycnCor) / (uPM*uNM) ;
1868  TwoQpQpV = ((uPRe*uPRe-uPIm*uPIm-uP2Re)*QxcnCor + (2.*uPRe*uPIm-uP2Im)*QycnCor) / (uPM*(uPM-1.)) ;
1869  TwoQnQnV = ((uNRe*uNRe-uNIm*uNIm-uN2Re)*QxcnCor + (2.*uNRe*uNIm-uN2Im)*QycnCor) / (uNM*(uNM-1.)) ;
1870 
1871  fHist_Corr3p_QAEta_SP_V0C_PN[QAindex]->Fill(fEtaCent,TwoQpQnV,uPM*uNM);
1872  fHist_Corr3p_QAEta_SP_V0C_PP[QAindex]->Fill(fEtaCent,TwoQpQpV,uPM*(uPM-1.));
1873  fHist_Corr3p_QAEta_SP_V0C_NN[QAindex]->Fill(fEtaCent,TwoQnQnV,uNM*(uNM-1.));
1874  }
1875  }
1876  //---------------------------------------
1877 
1878 
1879 
1880 
1881  if(MPOIpos>1 && MPOIneg>1){
1882  //V0A-V0C SP resolution:
1883  fHist_Reso2n_SP_Norm_Det[QAindex][0]->Fill(EvtCent, (QxcnCor*QxanCor+QycnCor*QyanCor));
1884  //V0A-TPC SP resolution:
1885  fHist_Reso2n_SP_Norm_Det[QAindex][1]->Fill(EvtCent, (QTPCRe*QxanCor+QTPCIm*QyanCor));
1886  //V0C-TPC SP resolution:
1887  fHist_Reso2n_SP_Norm_Det[QAindex][2]->Fill(EvtCent, (QTPCRe*QxcnCor+QTPCIm*QycnCor));
1888 
1889 
1890  //V0A-V0C:
1891  fHist_Reso2n_ZDN_SP_Det[0]->Fill(EvtCent, 0., (QxcnCor*QxanCor+QycnCor*QyanCor));
1892  fHist_Reso2n_ZDN_SP_Det[0]->Fill(EvtCent, 1., (QxcnCor*QxanCor+QycnCor*QyanCor)*energyZPA);
1893  fHist_Reso2n_ZDN_SP_Det[0]->Fill(EvtCent, 2., (QxcnCor*QxanCor+QycnCor*QyanCor)*energyZPC);
1894  fHist_Reso2n_ZDN_SP_Det[0]->Fill(EvtCent, 3., (QxcnCor*QxanCor+QycnCor*QyanCor)*(energyZPA+energyZPC));
1895  fHist_Reso2n_ZDN_SP_Det[0]->Fill(EvtCent, 4., (QxcnCor*QxanCor+QycnCor*QyanCor)*energyZNA);
1896  fHist_Reso2n_ZDN_SP_Det[0]->Fill(EvtCent, 5., (QxcnCor*QxanCor+QycnCor*QyanCor)*energyZNC);
1897  fHist_Reso2n_ZDN_SP_Det[0]->Fill(EvtCent, 6., (QxcnCor*QxanCor+QycnCor*QyanCor)*(energyZNA+energyZNC));
1898 
1899  //V0A-TPC
1900  fHist_Reso2n_ZDN_SP_Det[1]->Fill(EvtCent, 0., (QTPCRe*QxanCor+QTPCIm*QyanCor));
1901  fHist_Reso2n_ZDN_SP_Det[1]->Fill(EvtCent, 1., (QTPCRe*QxanCor+QTPCIm*QyanCor)*energyZPA);
1902  fHist_Reso2n_ZDN_SP_Det[1]->Fill(EvtCent, 2., (QTPCRe*QxanCor+QTPCIm*QyanCor)*energyZPC);
1903  fHist_Reso2n_ZDN_SP_Det[1]->Fill(EvtCent, 3., (QTPCRe*QxanCor+QTPCIm*QyanCor)*(energyZPA+energyZPC));
1904  fHist_Reso2n_ZDN_SP_Det[1]->Fill(EvtCent, 4., (QTPCRe*QxanCor+QTPCIm*QyanCor)*energyZNA);
1905  fHist_Reso2n_ZDN_SP_Det[1]->Fill(EvtCent, 5., (QTPCRe*QxanCor+QTPCIm*QyanCor)*energyZNC);
1906  fHist_Reso2n_ZDN_SP_Det[1]->Fill(EvtCent, 6., (QTPCRe*QxanCor+QTPCIm*QyanCor)*(energyZNA+energyZNC));
1907 
1908  //V0C-TPC
1909  fHist_Reso2n_ZDN_SP_Det[2]->Fill(EvtCent, 0., (QTPCRe*QxcnCor+QTPCIm*QycnCor));
1910  fHist_Reso2n_ZDN_SP_Det[2]->Fill(EvtCent, 1., (QTPCRe*QxcnCor+QTPCIm*QycnCor)*energyZPA);
1911  fHist_Reso2n_ZDN_SP_Det[2]->Fill(EvtCent, 2., (QTPCRe*QxcnCor+QTPCIm*QycnCor)*energyZPC);
1912  fHist_Reso2n_ZDN_SP_Det[2]->Fill(EvtCent, 3., (QTPCRe*QxcnCor+QTPCIm*QycnCor)*(energyZPA+energyZPC));
1913  fHist_Reso2n_ZDN_SP_Det[2]->Fill(EvtCent, 1., (QTPCRe*QxcnCor+QTPCIm*QycnCor)*energyZNA);
1914  fHist_Reso2n_ZDN_SP_Det[2]->Fill(EvtCent, 2., (QTPCRe*QxcnCor+QTPCIm*QycnCor)*energyZNC);
1915  fHist_Reso2n_ZDN_SP_Det[2]->Fill(EvtCent, 3., (QTPCRe*QxcnCor+QTPCIm*QycnCor)*(energyZNA+energyZNC));
1916  }
1917 
1918  }//---- SP method -------
1919 
1920 
1921  PostData(1,fListHistos);
1922  PostData(2,fListCalibs);
1923 
1924  fHist_Event_count->Fill(9.5);
1925 
1926  //if(fievent%100==0) {
1927  //cout<<"irun = "<<runindex<<" n "<<n<<" m = "<<m<<" p = "<<p<<" cent= "<<EvtCent<<"\tiCentSPD = "<<iCentSPD<<"\tQRe= "<<QTPCRe<<"\tQIm= "<<QTPCIm<<"\tpsiN = "<<psiN<<endl;
1928  //cout<<" cent= "<<EvtCent<<"\teZNC= "<<energyZNC<<"\teZPC = "<<energyZPC<<"\teZNA= "<<energyZNA<<"\teZPA = "<<energyZPA<<endl;
1929  //}
1930 
1931  fievent++;
1932 
1933 }
1934 //======================= UserExec done =========================
1935 
1936 
1937 
1939 {
1940  AliDebug(2,"\n ... AliAnalysisTaskCMEV0::Terminate() is being called ... \n");
1941 }
1942 
1943 
1944 
1945 
1946 
1947 
1948 
1949 
1950 
1951 
1952 
1953 
1954 
1955 void AliAnalysisTaskCMEV0::GetV0QvectAndMult(const AliAODVZERO *aodV0,Float_t fHarmonic, Double_t& Qxan,Double_t& Qyan,Double_t& sumMa,Double_t& Qxcn,Double_t& Qycn,Double_t& sumMc)
1956 {
1957  for(Int_t iV0 = 0; iV0 < 64; iV0++) {
1958  /*if(fRemChV0A){
1959  if(iV0 == 46)
1960  continue;
1961  }*/
1962  Double_t phiV0 = TMath::PiOver4()*(0.5 + iV0 % 8);
1963  Float_t multv0 = aodV0->GetMultiplicity(iV0);
1964 
1965  if(iV0 < 32) {
1966  Double_t multCorC = -10;
1967 
1968  if(iV0 < 8)
1969  multCorC = multv0/fMultV0->GetBinContent(iV0+1)*fMultV0->GetBinContent(1);
1970  else if(iV0 >= 8 && iV0 < 16)
1971  multCorC = multv0/fMultV0->GetBinContent(iV0+1)*fMultV0->GetBinContent(9);
1972  else if(iV0 >= 16 && iV0 < 24)
1973  multCorC = multv0/fMultV0->GetBinContent(iV0+1)*fMultV0->GetBinContent(17);
1974  else if(iV0 >= 24 && iV0 < 32)
1975  multCorC = multv0/fMultV0->GetBinContent(iV0+1)*fMultV0->GetBinContent(25);
1976 
1977  if(multCorC < 0){
1978  cout<<"Problem with multiplicity in V0C"<<endl;
1979  continue;
1980  }
1981  Qxcn += TMath::Cos(fHarmonic*phiV0) * multCorC;
1982  Qycn += TMath::Sin(fHarmonic*phiV0) * multCorC;
1983 
1984  sumMc = sumMc + multCorC;
1985  }
1986  else{
1987  Double_t multCorA = -10;
1988 
1989  if(iV0 >= 32 && iV0 < 40)
1990  multCorA = multv0/fMultV0->GetBinContent(iV0+1)*fMultV0->GetBinContent(33);
1991  else if(iV0 >= 40 && iV0 < 48)
1992  multCorA = multv0/fMultV0->GetBinContent(iV0+1)*fMultV0->GetBinContent(41);
1993  else if(iV0 >= 48 && iV0 < 56)
1994  multCorA = multv0/fMultV0->GetBinContent(iV0+1)*fMultV0->GetBinContent(49);
1995  else if(iV0 >= 56 && iV0 < 64)
1996  multCorA = multv0/fMultV0->GetBinContent(iV0+1)*fMultV0->GetBinContent(57);
1997 
1998  if(multCorA < 0){
1999  cout<<"Problem with multiplicity in V0A"<<endl;
2000  continue;
2001  }
2002  Qxan += TMath::Cos(fHarmonic*phiV0) * multCorA;
2003  Qyan += TMath::Sin(fHarmonic*phiV0) * multCorA;
2004 
2005  sumMa = sumMa + multCorA;
2006  }
2007  }
2008 }//-------- Get V0 QVect and Multiplicity -----
2009 
2011 {
2012  if(fListZDNCorr){
2013  fHCorrectZDNP = (TH2D *) fListZDNCorr->FindObject(Form("fHist_ZDC_All_Wgt_VsCent_Run%d",run));
2014  }
2015  else{
2016  fHCorrectZDNP = new TH2D("fHCorrectZDNP","",100,0,100,4,0,4) ;
2017  for(int i=1;i<=100;i++){
2018  for(int j=1;j<=4;j++){
2019  fHCorrectZDNP->SetBinContent(i,j,1.0);
2020  }
2021  }
2022  //printf("\n\n ********** ZDC Wgt Histograms NotFound ***************\n\n");
2023  //exit(1);
2024  }
2025 }
2026 
2028 {
2029 
2030  //old method
2031  /*
2032  Int_t centBin = -1;
2033  if(cent<5.0){ centBin = 0;}
2034  else if(cent>=5.0 && cent<10.0){centBin = 1;}
2035  else if(cent>=10.0 && cent<40.0){centBin = 2;}
2036  else if(cent>=40.0) {centBin = 3;}
2037  if(fListNUACorr){
2038  fHCorrectNUApos = (TH3D *) fListNUACorr->FindObject(Form("fHist_NUA_VzPhiEta_Pos_Cent%d_Run%d",centBin,run));
2039  fHCorrectNUAneg = (TH3D *) fListNUACorr->FindObject(Form("fHist_NUA_VzPhiEta_Neg_Cent%d_Run%d",centBin,run));
2040  } */
2041 
2042  if(sfileNUA=="New2018" && fListNUACorr){
2043  for(int i=0;i<5;i++){
2044  fHCorrectNUApos[i] = (TH3D *) fListNUACorr->FindObject(Form("fHist_NUA_VzPhiEta_Pos_Cent%d_Run%d",i,run));
2045  fHCorrectNUAneg[i] = (TH3D *) fListNUACorr->FindObject(Form("fHist_NUA_VzPhiEta_Neg_Cent%d_Run%d",i,run));
2046  }
2047  //cout<<"\n sfileNUA = "<<sfileNUA<<" opening Rihan's NUA file.\n "<<endl;
2048  }
2049  else if(sfileNUA=="NewR" && fListNUACorr){
2050  for(int i=0;i<4;i++){
2051  fHCorrectNUApos[i] = (TH3D *) fListNUACorr->FindObject(Form("fHist_NUA_VzPhiEta_Pos_Cent%d_Run%d",i,run));
2052  fHCorrectNUAneg[i] = (TH3D *) fListNUACorr->FindObject(Form("fHist_NUA_VzPhiEta_Neg_Cent%d_Run%d",i,run));
2053  }
2054  //cout<<"\n sfileNUA = "<<sfileNUA<<" opening Rihan's NUA file.\n "<<endl;
2055  }
2056  else if(sfileNUA=="NewPt"|| sfileNUA=="NewpT"){
2057  if(fListNUACorr){
2058  for(int i=0;i<4;i++){
2059  fHCorrectNUApos[i] = (TH3D *) fListNUACorr->FindObject(Form("fHist_NUA_pTPhiEta_Pos_Vz%d_Run%d",i,run));
2060  fHCorrectNUAneg[i] = (TH3D *) fListNUACorr->FindObject(Form("fHist_NUA_pTPhiEta_Neg_Vz%d_Run%d",i,run));
2061  }
2062  }
2063  }
2064  else if(sfileNUA=="OldJ") {//from Jacopo's NUA file:
2065  if(!gGrid){
2066  TGrid::Connect("alien://");
2067  }
2068  if(!fileNUApos){
2069  fileNUApos = TFile::Open("alien:///alice/cern.ch/user/m/mhaque/calib_files/15oHI_FB768_PosCh_CenPhiEtaWeights_VtxRbR.root");
2070  mListNUAPos = dynamic_cast<TList*> (fileNUApos->FindObjectAny("CenPhiEta Weights"));
2071  }
2072  if(!fileNUAneg){
2073  fileNUAneg = TFile::Open("alien:///alice/cern.ch/user/m/mhaque/calib_files/15oHI_FB768_NegCh_CenPhiEtaWeights_VtxRbR.root");
2074  mListNUANeg = dynamic_cast<TList*> (fileNUAneg->FindObjectAny("CenPhiEta Weights"));
2075  }
2076  if(mListNUAPos){
2077  for(int i=0;i<4;i++){
2078  fHCorrectNUApos[i] = (TH3D *) mListNUAPos->FindObject(Form("CRCQVecPhiHistVtx[%d][%d]",i,run));
2079  }
2080  }
2081  if(mListNUANeg){
2082  for(int i=0;i<4;i++){
2083  fHCorrectNUAneg[i] = (TH3D *) mListNUANeg->FindObject(Form("CRCQVecPhiHistVtx[%d][%d]",i,run));
2084  }
2085  }
2086  }
2087 
2088 
2089  if(!fHCorrectNUApos[0] || !fHCorrectNUAneg[0]){
2090  printf("\n\n ******** could not open NUA Histograms for run %d, Use Wgt = 1.0 *********\n\n",run);
2091  if(sfileNUA=="New2018"){
2092  for(int i=0;i<5;i++){
2093  fHCorrectNUApos[i] = new TH3D(Form("fHCorrectNUApos_cent%d",i),"",1,-10,10,1,0,6.284,1,-0.9,0.9);
2094  fHCorrectNUAneg[i] = new TH3D(Form("fHCorrectNUAneg_cent%d",i),"",1,-10,10,1,0,6.284,1,-0.9,0.9);
2095  fHCorrectNUApos[i]->SetBinContent(1,1,1,1.0);
2096  fHCorrectNUAneg[i]->SetBinContent(1,1,1,1.0);
2097  //exit(1);
2098  }
2099  }
2100  else if(sfileNUA=="OldJ"|| sfileNUA=="NewR"){
2101  for(int i=0;i<4;i++){
2102  fHCorrectNUApos[i] = new TH3D(Form("fHCorrectNUApos_cent%d",i),"",1,-10,10,1,0,6.284,1,-0.9,0.9);
2103  fHCorrectNUAneg[i] = new TH3D(Form("fHCorrectNUAneg_cent%d",i),"",1,-10,10,1,0,6.284,1,-0.9,0.9);
2104  fHCorrectNUApos[i]->SetBinContent(1,1,1,1.0);
2105  fHCorrectNUAneg[i]->SetBinContent(1,1,1,1.0);
2106  //exit(1);
2107  }
2108  }
2109  else if(sfileNUA=="NewPt"|| sfileNUA=="NewpT"){
2110  for(int i=0;i<4;i++){
2111  fHCorrectNUApos[i] = new TH3D(Form("fHCorrectNUApos_cent%d",i),"",1,0,10,1,0,6.284,1,-0.9,0.9);
2112  fHCorrectNUAneg[i] = new TH3D(Form("fHCorrectNUAneg_cent%d",i),"",1,0,10,1,0,6.284,1,-0.9,0.9);
2113  fHCorrectNUApos[i]->SetBinContent(1,1,1,1.0);
2114  fHCorrectNUAneg[i]->SetBinContent(1,1,1,1.0);
2115  //exit(1);
2116  }
2117  }
2118  }
2119 }
2120 
2121 
2122 
2124 {
2125  if(!gGrid){
2126  TGrid::Connect("alien://");
2127  }
2128 
2129  TFile* foadb = 0;
2130  //if(!fRemChV0A)
2131  foadb = TFile::Open("alien:///alice/cern.ch/user/a/adobrin/calibV0HIR.root");
2132  //else
2133  //foadb = TFile::Open("alien:///alice/cern.ch/user/a/adobrin/calibV0HIRNoCh46V0A.root");
2134 
2135  if(!foadb){
2136  printf("OADB V0 calibration file cannot be opened\n");
2137  return;
2138  }
2139 
2140  AliOADBContainer* cont = (AliOADBContainer*) foadb->Get("hMultV0BefCorPfpx");
2141  if(!cont){
2142  printf("OADB object hMultV0BefCorr is not available in the file\n");
2143  return;
2144  }
2145  if(!(cont->GetObject(run))){
2146  printf("OADB object hMultV0BefCorPfpx is not available for run %i\n", run);
2147  return;
2148  }
2149  fMultV0 = ((TH1D*) cont->GetObject(run));
2150 
2151  AliOADBContainer* contQxnam = 0;
2152  if (fHarmonic == 2.)
2153  contQxnam = (AliOADBContainer*) foadb->Get("fqxa2m");
2154  else
2155  contQxnam = (AliOADBContainer*) foadb->Get("fqxa3m");
2156 
2157  if(!contQxnam){
2158  printf("OADB object fqxanm is not available in the file\n");
2159  return;
2160  }
2161  if(!(contQxnam->GetObject(run))){
2162  printf("OADB object fqxanm is not available for run %i\n", run);
2163  return;
2164  }
2165  fQxnmV0A = ((TH1D*) contQxnam->GetObject(run));
2166 
2167  AliOADBContainer* contQynam = 0;
2168  if (fHarmonic == 2.)
2169  contQynam = (AliOADBContainer*) foadb->Get("fqya2m");
2170  else if (fHarmonic == 3.)
2171  contQynam = (AliOADBContainer*) foadb->Get("fqya3m");
2172  else if (fHarmonic == 4.)
2173  contQynam = (AliOADBContainer*) foadb->Get("fqya4m");
2174 
2175  if(!contQynam){
2176  printf("OADB object fqyanm is not available in the file\n");
2177  return;
2178  }
2179  if(!(contQynam->GetObject(run))){
2180  printf("OADB object fqyanm is not available for run %i\n", run);
2181  return;
2182  }
2183  fQynmV0A = ((TH1D*) contQynam->GetObject(run));
2184 
2185  AliOADBContainer* contQxnas = 0;
2186  if (fHarmonic == 2.)
2187  contQxnas = (AliOADBContainer*) foadb->Get("fqxa2s");
2188  else
2189  contQxnas = (AliOADBContainer*) foadb->Get("fqxa3s");
2190 
2191  if(!contQxnas){
2192  printf("OADB object fqxans is not available in the file\n");
2193  return;
2194  }
2195  if(!(contQxnas->GetObject(run))){
2196  printf("OADB object fqxans is not available for run %i\n", run);
2197  return;
2198  }
2199  fQxnsV0A = ((TH1D*) contQxnas->GetObject(run));
2200 
2201  AliOADBContainer* contQynas = 0;
2202  if (fHarmonic == 2.)
2203  contQynas = (AliOADBContainer*) foadb->Get("fqya2s");
2204  else if (fHarmonic == 3.)
2205  contQynas = (AliOADBContainer*) foadb->Get("fqya3s");
2206  else if (fHarmonic == 4.)
2207  contQynas = (AliOADBContainer*) foadb->Get("fqya4s");
2208 
2209  if(!contQynas){
2210  printf("OADB object fqyans is not available in the file\n");
2211  return;
2212  }
2213  if(!(contQynas->GetObject(run))){
2214  printf("OADB object fqyans is not available for run %i\n", run);
2215  return;
2216  }
2217  fQynsV0A = ((TH1D*) contQynas->GetObject(run));
2218 
2219 
2220 
2221  AliOADBContainer* contQxncm = 0;
2222  if (fHarmonic == 2.)
2223  contQxncm = (AliOADBContainer*) foadb->Get("fqxc2m");
2224  else
2225  contQxncm = (AliOADBContainer*) foadb->Get("fqxc3m");
2226 
2227  if(!contQxncm){
2228  printf("OADB object fqxcnm is not available in the file\n");
2229  return;
2230  }
2231  if(!(contQxncm->GetObject(run))){
2232  printf("OADB object fqxcnm is not available for run %i\n", run);
2233  return;
2234  }
2235  fQxnmV0C = ((TH1D*) contQxncm->GetObject(run));
2236 
2237 
2238 
2239  AliOADBContainer* contQyncm = 0;
2240  if (fHarmonic == 2.)
2241  contQyncm = (AliOADBContainer*) foadb->Get("fqyc2m");
2242  else if (fHarmonic == 3.)
2243  contQyncm = (AliOADBContainer*) foadb->Get("fqyc3m");
2244  else if (fHarmonic == 4.)
2245  contQyncm = (AliOADBContainer*) foadb->Get("fqyc4m");
2246 
2247  if(!contQyncm){
2248  printf("OADB object fqyc2m is not available in the file\n");
2249  return;
2250  }
2251  if(!(contQyncm->GetObject(run))){
2252  printf("OADB object fqyc2m is not available for run %i\n", run);
2253  return;
2254  }
2255  fQynmV0C = ((TH1D*) contQyncm->GetObject(run));
2256 
2257 
2258  AliOADBContainer* contQxncs = 0;
2259  if (fHarmonic == 2.)
2260  contQxncs = (AliOADBContainer*) foadb->Get("fqxc2s");
2261  else
2262  contQxncs = (AliOADBContainer*) foadb->Get("fqxc3s");
2263 
2264  if(!contQxncs){
2265  printf("OADB object fqxc2s is not available in the file\n");
2266  return;
2267  }
2268  if(!(contQxncs->GetObject(run))){
2269  printf("OADB object fqxc2s is not available for run %i\n", run);
2270  return;
2271  }
2272  fQxnsV0C = ((TH1D*) contQxncs->GetObject(run));
2273 
2274 
2275  AliOADBContainer* contQyncs = 0;
2276  if (fHarmonic == 2.)
2277  contQyncs = (AliOADBContainer*) foadb->Get("fqyc2s");
2278  else if (fHarmonic == 3.)
2279  contQyncs = (AliOADBContainer*) foadb->Get("fqyc3s");
2280  else if (fHarmonic == 4.)
2281  contQyncs = (AliOADBContainer*) foadb->Get("fqyc4s");
2282 
2283  if(!contQyncs){
2284  printf("OADB object fqycnm is not available in the file\n");
2285  return;
2286  }
2287  if(!(contQyncs->GetObject(run))){
2288  printf("OADB object fqycns is not available for run %i\n", run);
2289  return;
2290  }
2291  fQynsV0C = ((TH1D*) contQyncs->GetObject(run));
2292 }//------- OADB container ------
2293 
2294 
2295 
2296 
2297 double AliAnalysisTaskCMEV0::GetWDist(const AliVVertex* v0, const AliVVertex* v1)
2298 {
2299  // calculate sqrt of weighted distance to other vertex
2300  if (!v0 || !v1) {
2301  AliDebug(2,"\n\n ::GetWDist => One of vertices is not valid\n\n");
2302  return 0;
2303  }
2304  static TMatrixDSym vVb(3);
2305  double dist = -1;
2306  double dx = v0->GetX()-v1->GetX();
2307  double dy = v0->GetY()-v1->GetY();
2308  double dz = v0->GetZ()-v1->GetZ();
2309  double cov0[6],cov1[6];
2310  v0->GetCovarianceMatrix(cov0);
2311  v1->GetCovarianceMatrix(cov1);
2312  vVb(0,0) = cov0[0]+cov1[0];
2313  vVb(1,1) = cov0[2]+cov1[2];
2314  vVb(2,2) = cov0[5]+cov1[5];
2315  vVb(1,0) = vVb(0,1) = cov0[1]+cov1[1];
2316  vVb(0,2) = vVb(1,2) = vVb(2,0) = vVb(2,1) = 0.;
2317  vVb.InvertFast();
2318  if (!vVb.IsValid()) {
2319  AliDebug(2,"Singular Matrix\n");
2320  return dist;
2321  }
2322  dist = vVb(0,0)*dx*dx + vVb(1,1)*dy*dy + vVb(2,2)*dz*dz
2323  + 2*vVb(0,1)*dx*dy + 2*vVb(0,2)*dx*dz + 2*vVb(1,2)*dy*dz;
2324  return dist>0 ? TMath::Sqrt(dist) : -1;
2325 }
2326 
2328  { // check for multi-vertexer pile-up
2329  const int kMinPlpContrib = 5;
2330  const double kMaxPlpChi2 = 5.0;
2331  const double kMinWDist = 15;
2332 
2333  const AliVVertex* vtPrm = 0;
2334  const AliVVertex* vtPlp = 0;
2335 
2336  int nPlp = 0;
2337 
2338  if(!(nPlp=faod->GetNumberOfPileupVerticesTracks()))
2339  return kFALSE;
2340 
2341  vtPrm = faod->GetPrimaryVertex();
2342  if(vtPrm == faod->GetPrimaryVertexSPD())
2343  return kTRUE; // there are pile-up vertices but no primary
2344 
2345  //int bcPrim = vtPrm->GetBC();
2346 
2347  for(int ipl=0;ipl<nPlp;ipl++) {
2348  vtPlp = (const AliVVertex*)faod->GetPileupVertexTracks(ipl);
2349  if (vtPlp->GetNContributors() < kMinPlpContrib) continue;
2350  if (vtPlp->GetChi2perNDF() > kMaxPlpChi2) continue;
2351  //int bcPlp = vtPlp->GetBC();
2352  //if (bcPlp!=AliVTrack::kTOFBCNA && TMath::Abs(bcPlp-bcPrim)>2)
2353  // return kTRUE; // pile-up from other BC
2354 
2355  double wDst = GetWDist(vtPrm,vtPlp);
2356  if (wDst<kMinWDist) continue;
2357 
2358  return kTRUE; // pile-up: well separated vertices
2359  }
2360  return kFALSE;
2361 }
2362 
2363 
2364 
2366 {
2367 /*
2368  if(!gGrid){
2369  TGrid::Connect("alien://");
2370  }
2371 
2372  TFile *fileV0M = TFile::Open(fFileV0MCorr);
2373  if(!fileV0M){
2374  printf("\n\n ********** File for V0M gain eq. not found ***************\n\n");
2375  }
2376 
2377  TList *mListV0M = dynamic_cast<TList*> (fileV0M->FindObjectAny("fV0MChWgts"));
2378 */
2379  if(fListV0MCorr){
2380  fHCorrectV0M = (TH1D *) fListV0MCorr->FindObject(Form("fHistV0Gain_Run%d",run));
2381  //TH2D *fV0QnAvgTemp = (TH2D *) mListV0M->FindObject(Form("fHistV0_AvgQnAC_Run%d",run));
2382  //fV0Qn_AvgCorr = (TH2D *) fV0QnAvgTemp->Clone("fV0Qn_AvgCorr");
2383  //TH2D *fV0QnSigTemp = (TH2D *) mListV0M->FindObject(Form("fHistV0_SigQnAC_Run%d",run));
2384  //fV0Qn_SigCorr = (TH2D *) fV0QnSigTemp->Clone("fV0Qn_SigCorr");
2385  }
2386  else{
2387  fHCorrectV0M = new TH1D("fHCorrectV0M","",64,0,64);
2388  for(int i=1;i<=64;i++){
2389  fHCorrectV0M->SetBinContent(i,1.0);
2390  }
2391  //fV0Qn_AvgCorr = NULL;
2392  //fV0Qn_SigCorr = NULL;
2393  //printf("\n\n ********** V0M ch wgt Histograms NotFound, use Wgt = 1.0 ***************\n\n");
2394  //exit(1);
2395  }
2396  //fileV0M->Close();
2397 }
2398 
2399 
2400 
2401 
2402 
2404 
2405  Bool_t BisPileup=kFALSE;
2406 
2407  Double_t centrV0M=300;
2408  Double_t centrCL1=300;
2409  Double_t centrCL0=300;
2410  Double_t centrTRK=300;
2411 
2412  if(sDataSet=="2010"||sDataSet=="2011"){
2413  centrV0M = ((AliVAODHeader*)faod->GetHeader())->GetCentralityP()->GetCentralityPercentile("V0M");
2414  centrCL1 = ((AliVAODHeader*)faod->GetHeader())->GetCentralityP()->GetCentralityPercentile("CL1");
2415  centrCL0 = ((AliVAODHeader*)faod->GetHeader())->GetCentralityP()->GetCentralityPercentile("CL0");
2416  centrTRK = ((AliVAODHeader*)faod->GetHeader())->GetCentralityP()->GetCentralityPercentile("TRK");
2417  }
2418  else{
2419  fMultSelection = (AliMultSelection*) InputEvent()->FindListObject("MultSelection");
2420  if(!fMultSelection) {
2421  printf("\n\n **WARNING** ::UserExec() AliMultSelection object not found.\n\n");
2422  exit(1);
2423  }
2424  centrV0M = fMultSelection->GetMultiplicityPercentile("V0M");
2425  centrCL1 = fMultSelection->GetMultiplicityPercentile("CL1");
2426  centrCL0 = fMultSelection->GetMultiplicityPercentile("CL0");
2427  centrTRK = fMultSelection->GetMultiplicityPercentile("TRK");
2428  }// 2015
2429 
2430 
2431  if(fRejectPileUp && InputEvent()) {
2432  //if(!fCutsEvent->IsSelected(InputEvent(),MCEvent())) return;
2433  if(sDataSet!="2015" && sDataSet!="2015LI") {
2434  if(PileUpMultiVertex(faod)) {
2435  fPileUpCount->Fill(0.5);
2436  BisPileup=kTRUE;
2437  }
2438  Int_t isPileup = faod->IsPileupFromSPD(3);
2439  if(isPileup != 0) {
2440  fPileUpCount->Fill(1.5);
2441  //BisPileup=kTRUE; //
2442  }
2443  if(((AliAODHeader*)faod->GetHeader())->GetRefMultiplicityComb08() < 0) {
2444  fPileUpCount->Fill(2.5);
2445  BisPileup=kTRUE;
2446  }
2447  if(faod->IsIncompleteDAQ()) {
2448  fPileUpCount->Fill(3.5);
2449  BisPileup=kTRUE;
2450  }
2451 
2452  //check vertex consistency
2453  const AliAODVertex* vtTrc = faod->GetPrimaryVertex();
2454  const AliAODVertex* vtSPD = faod->GetPrimaryVertexSPD();
2455 
2456  if(vtTrc->GetNContributors() < 2 || vtSPD->GetNContributors()<1) {
2457  fPileUpCount->Fill(5.5);
2458  BisPileup=kTRUE;
2459  }
2460 
2461  double covTrc[6], covSPD[6];
2462  vtTrc->GetCovarianceMatrix(covTrc);
2463  vtSPD->GetCovarianceMatrix(covSPD);
2464 
2465  double dz = vtTrc->GetZ() - vtSPD->GetZ();
2466 
2467  double errTot = TMath::Sqrt(covTrc[5]+covSPD[5]);
2468  double errTrc = TMath::Sqrt(covTrc[5]);
2469  double nsigTot = dz/errTot;
2470  double nsigTrc = dz/errTrc;
2471 
2472  if(TMath::Abs(dz)>0.2 || TMath::Abs(nsigTot)>10 || TMath::Abs(nsigTrc)>20) {
2473  fPileUpCount->Fill(6.5);
2474  BisPileup=kTRUE;
2475  }
2476  if(fAnalysisUtil->IsPileUpEvent(InputEvent())) {
2477  fPileUpCount->Fill(7.5);
2478  BisPileup=kTRUE;
2479  }
2480  }
2481 
2482  else { //------------ pileup for 2015 HI, LI data -----------------
2483  if(!fMultSelection->GetThisEventIsNotPileup())
2484  fPileUpMultSelCount->Fill(0.5);
2485  if(!fMultSelection->GetThisEventIsNotPileupMV())
2486  fPileUpMultSelCount->Fill(1.5);
2487  if(!fMultSelection->GetThisEventIsNotPileupInMultBins())
2488  fPileUpMultSelCount->Fill(2.5);
2489  if(!fMultSelection->GetThisEventHasNoInconsistentVertices())
2490  fPileUpMultSelCount->Fill(3.5);
2491  if(!fMultSelection->GetThisEventPassesTrackletVsCluster())
2492  fPileUpMultSelCount->Fill(4.5);
2493  if(!fMultSelection->GetThisEventIsNotAsymmetricInVZERO())
2494  fPileUpMultSelCount->Fill(5.5);
2495  if(!fMultSelection->GetThisEventIsNotIncompleteDAQ())
2496  fPileUpMultSelCount->Fill(6.5);
2497  if(!fMultSelection->GetThisEventHasGoodVertex2016())
2498  fPileUpMultSelCount->Fill(7.5);
2499 
2500  BisPileup=kFALSE;
2501 
2502  //-- pile-up a la Dobrin for LHC15o -----
2503  if(PileUpMultiVertex(faod)) {
2504  fPileUpCount->Fill(0.5);
2505  BisPileup=kTRUE;
2506  }
2507  Int_t isPileup = faod->IsPileupFromSPD(3);
2508  if(isPileup != 0) {
2509  fPileUpCount->Fill(1.5);
2510  BisPileup=kTRUE;
2511  }
2512  if(((AliAODHeader*)faod->GetHeader())->GetRefMultiplicityComb08() < 0) {
2513  fPileUpCount->Fill(2.5);
2514  BisPileup=kTRUE;
2515  }
2516  if(faod->IsIncompleteDAQ()) {
2517  fPileUpCount->Fill(3.5);
2518  BisPileup=kTRUE;
2519  }
2520  if(fabs(centrV0M-centrCL1)> 5.0) {//default: 7.5
2521  fPileUpCount->Fill(4.5);
2522  BisPileup=kTRUE;
2523  }
2524 
2525  // check vertex consistency
2526  const AliAODVertex* vtTrc = faod->GetPrimaryVertex();
2527  const AliAODVertex* vtSPD = faod->GetPrimaryVertexSPD();
2528 
2529  if(vtTrc->GetNContributors() < 2 || vtSPD->GetNContributors()<1) {
2530  fPileUpCount->Fill(5.5);
2531  BisPileup=kTRUE;
2532  }
2533 
2534  double covTrc[6], covSPD[6];
2535  vtTrc->GetCovarianceMatrix(covTrc);
2536  vtSPD->GetCovarianceMatrix(covSPD);
2537 
2538  double dz = vtTrc->GetZ() - vtSPD->GetZ();
2539 
2540  double errTot = TMath::Sqrt(covTrc[5]+covSPD[5]);
2541  double errTrc = TMath::Sqrt(covTrc[5]);
2542  double nsigTot = dz/errTot;
2543  double nsigTrc = dz/errTrc;
2544 
2545  if(TMath::Abs(dz)>0.2 || TMath::Abs(nsigTot)>10 || TMath::Abs(nsigTrc)>20) {
2546  fPileUpCount->Fill(6.5);
2547  BisPileup=kTRUE;
2548  }
2549 
2550  //cuts on tracks
2551  //Int_t multTrk = 0;
2552  //Int_t multTrkBefC = 0;
2553  //Int_t multTrkTOFBefC = 0;
2554 
2555  Int_t multTPC = 0;
2556  Int_t multITSfb96 = 0;
2557  Int_t multITSfb32 = 0;
2558 
2559  Int_t multTPCFE = 0;
2560  Int_t multGlobal = 0;
2561  Int_t multTPCuncut = 0;
2562 
2563  Int_t multEsd = ((AliAODHeader*)faod->GetHeader())->GetNumberOfESDTracks();
2564 
2565  const Int_t nTracks = faod->GetNumberOfTracks();
2566 
2567  for(Int_t iTracks = 0; iTracks < nTracks; iTracks++) {
2568  //AliNanoAODTrack* track = dynamic_cast<AliNanoAODTrack*>(faod->GetTrack(iTracks));
2569  AliAODTrack* track = (AliAODTrack*)faod->GetTrack(iTracks);
2570  if(!track) continue;
2571  //---------- old method -----------
2572  if(track->TestFilterBit(128))
2573  multTPC++;
2574  if(track->TestFilterBit(96))
2575  multITSfb96++;
2576  //----------------------------------
2577  if(track->TestFilterBit(1)) multTPCuncut++;
2578  if(track->TestFilterBit(32)) multITSfb32++;
2579 
2580 
2581  if(track->Pt()<0.2 || track->Pt()>5.0 || TMath::Abs(track->Eta())>0.8 || track->GetTPCNcls()<70 || track->GetTPCsignal()<10.0)
2582  continue;
2583  if(track->TestFilterBit(1) && track->Chi2perNDF()>0.2) multTPCFE++;
2584  if(!track->TestFilterBit(16) || track->Chi2perNDF()<0.1) continue;
2585 
2586  Double_t b[2] = {-99., -99.};
2587  Double_t bCov[3] = {-99., -99., -99.};
2588 
2589  AliAODTrack copy(*track);
2590  Double_t magField = faod->GetMagneticField();
2591 
2592  if(magField!=0){
2593  if(track->PropagateToDCA(faod->GetPrimaryVertex(), magField, 100., b, bCov) && TMath::Abs(b[0]) < 0.3 && TMath::Abs(b[1]) < 0.3) multGlobal++;
2594  }
2595  }
2596 
2597 
2598  /*
2599  for(Int_t it = 0; it < nTracks; it++) {
2600  AliAODTrack* aodTrk = (AliAODTrack*)faod->GetTrack(it);
2601  if(!aodTrk) {
2602  delete aodTrk;
2603  continue;
2604  }
2605  //if(aodTrk->TestFilterBit(32)){
2606  // multTrkBefC++;
2607  // if(TMath::Abs(aodTrk->GetTOFsignalDz()) <= 10. && aodTrk->GetTOFsignal() >= 12000. && aodTrk->GetTOFsignal() <= 25000.)
2608  // multTrkTOFBefC++;
2609  // if((TMath::Abs(aodTrk->Eta()) < 0.8) && (aodTrk->GetTPCNcls() >= 70) && (aodTrk->Pt() >= 0.2) && (aodTrk->Pt() < 20.))
2610  // multTrk++;
2611  //}
2612  if(aodTrk->TestFilterBit(128))
2613  multTPC++;
2614  if(aodTrk->TestFilterBit(96))
2615  multITSfb96++;
2616  } // end of for AOD track loop
2617 
2618  */
2619 
2620  Double_t multTPCn = multTPC;
2621  Double_t multEsdn = multEsd;
2622 
2623  Double_t multESDTPCDif = multEsdn - fPileUpSlopeParm*multTPCn;
2624  Double_t multTPCGlobDif = multTPCFE - fPileUpSlopeParm*multGlobal;
2625 
2626  fTPCvsITSfb96->Fill(multITSfb96,multTPC); //multITSfb96 = FB 96, multTPC = FB 128
2627  fTPCvsITSfb32->Fill(multITSfb32,multTPC); //multITSfb32 = FB 32
2628  fTPCFEvsITSfb96->Fill(multITSfb96,multTPCFE); //multTPCFE = FB 1
2629 
2630  fGlobalTracks->Fill(multGlobal);
2631  fTPCvsGlobalTrk->Fill(multGlobal,multTPCFE);
2632  fTPCuncutvsGlobal->Fill(multGlobal,multTPCuncut);
2633 
2634 
2635 
2636  /*if(multESDTPCDif > (fRejectPileUpTight?700.:15000.)) {
2637  fPileUpCount->Fill(7.5);
2638  BisPileup=kTRUE;
2639  }*/
2640  /*if(multESDTPCDif > 15000.){ //default: 15000
2641  fPileUpCount->Fill(7.5);
2642  BisPileup=kTRUE;
2643  }*/
2644 
2645  if(fRejectPileUpTight) {
2646  if(multESDTPCDif > fPileUpConstParm) {
2647  fPileUpCount->Fill(7.5);
2648  BisPileup=kTRUE;
2649  }
2650  if(multTPCGlobDif > fPileUpConstParm) {
2651  fPileUpCount->Fill(8.5);
2652  //BisPileup=kTRUE;
2653  }
2654  if(BisPileup==kFALSE) {
2655  if(!fMultSelection->GetThisEventIsNotPileup()) BisPileup=kTRUE;
2656  if(!fMultSelection->GetThisEventIsNotPileupMV()) BisPileup=kTRUE;
2657  if(!fMultSelection->GetThisEventIsNotPileupInMultBins()) BisPileup=kTRUE;
2658  if(!fMultSelection->GetThisEventHasNoInconsistentVertices()) BisPileup=kTRUE;
2659  if(!fMultSelection->GetThisEventPassesTrackletVsCluster()) BisPileup=kTRUE;
2660  if(!fMultSelection->GetThisEventIsNotIncompleteDAQ()) BisPileup=kTRUE;
2661  if(!fMultSelection->GetThisEventHasGoodVertex2016()) BisPileup=kTRUE;
2662  if(BisPileup) fPileUpCount->Fill(9.5);
2663  }
2664  }
2665  }
2666  }
2667 
2668  return BisPileup;
2669 }//-------pile up function ------
2670 
2671 
2672 
2673 
2675 
2676  Int_t irun = -1;
2677 
2678  for(int i=0;i<fRunFlag;i++){
2679  if(run==runNums[i])
2680  {
2681  irun = i;
2682  break;
2683  }
2684  }
2685  if(irun<0) {
2686  printf("\n ... **WARNING** \n::UserExec() runnumber not listed.\n EXIT..\n");
2687  }
2688 
2689  return irun;
2690 }//------ GetCurrentRunIndex --------
2691 
2692 
2694 
2695  Int_t runArray_2010[89] = {139510, 139507, 139505, 139503, 139465, 139438, 139437, 139360, 139329, 139328, 139314, 139310, 139309, 139173, 139107, 139105, 139038, 139037, 139036, 139029, 139028, 138872, 138871, 138870, 138837, 138732, 138730, 138666, 138662, 138653, 138652, 138638, 138624, 138621, 138583, 138582, 138579, 138578, 138534, 138469, 138442, 138439, 138438, 138396, 138364, 138275, 138225, 138201, 138197, 138192, 138190, 137848, 137844, 137752, 137751, 137724, 137722, 137718, 137704, 137693, 137692, 137691, 137686, 137685, 137639, 137638, 137608, 137595, 137549, 137546, 137544, 137541, 137539, 137531, 137530, 137443, 137441, 137440, 137439, 137434, 137432, 137431, 137243, 137236, 137235, 137232, 137231, 137162, 137161};
2696 
2697  Int_t runArray_2011[68] = {167915, 168115, 168460, 169035, 169238, 169859, 170228, 167920, 168310, 168464, 169091, 169411, 169923, 170230, 167985, 168311, 168467, 169094, 169415, 170027, 170268, 167987, 168322, 168511, 169138, 169417, 170081, 170269, 167988, 168325, 168512, 169144, 169835, 170155, 170270, 168069, 168341, 168514, 169145, 169837, 170159, 170306, 168076, 168342, 168777, 169148, 169838, 170163, 170308, 168105, 168361, 168826, 169156, 169846, 170193, 170309, 168107, 168362, 168988, 169160, 169855, 170203, 168108, 168458, 168992, 169167, 169858, 170204};
2698 
2699  Int_t runArray_2015[90] = {246994, 246991, 246989, 246984, 246982, 246980, 246948, 246945, 246928, 246871, 246870, 246867, 246865, 246864, 246859, 246858, 246851, 246847, 246846, 246845, 246844, 246810, 246809, 246808, 246807, 246805, 246804, 246766, 246765, 246763, 246760, 246759, 246758, 246757, 246751, 246750, 246676, 246675, 246540, 246495, 246493, 246488, 246487, 246434, 246431, 246428, 246424, 246276, 246275, 246272, 246271, 246225, 246222, 246217, 246185, 246182, 246181, 246180, 246178, 246153, 246152, 246151, 246148, 246115, 246113, 246089, 246087, 246053, 246052, 246049, 246048, 246042, 246037, 246036, 246012, 246003, 246001, 245963, 245954, 245952, 245949, 245923, 245833, 245831, 245829, 245705, 245702, 245700, 245692, 245683};
2700 
2701  Int_t runArray_2015LI[13] = {244917, 244918, 244975, 244980, 244982, 244983, 245061, 245064, 245066, 245068, 246390, 246391, 246392};
2702 
2703 //Int_t runArray_pPb_13cpass2[14] = {195677, 195675, 195673, 195644, 195635, 195633, 195596, 195593, 195592, 195568, 195567, 195566, 195531, 195529};
2704 
2705  Int_t runArray_pPb_16q_pass1[32] = {265309, 265332, 265334, 265335, 265336, 265338, 265339, 265342, 265343, 265344, 265377, 265378, 265381, 265383, 265384, 265385, 265387, 265388, 265419, 265420, 265421, 265422, 265424, 265425, 265426, 265427, 265435, 265499, 265500, 265501, 265521, 265525};
2706 
2707 
2708 
2709 
2710  if(sPeriod=="2010"){
2711  fRunFlag = 89;
2712  for(int i=0;i<fRunFlag;i++)
2713  runNums[i] = runArray_2010[i];
2714  }
2715  else if(sPeriod=="2011"){
2716  fRunFlag = 68; //<-- 2011 check
2717  for(int i=0;i<fRunFlag;i++)
2718  runNums[i] = runArray_2011[i];
2719  }
2720  else if(sPeriod=="2015" || sPeriod=="2015PbPb"){
2721  fRunFlag = 90;
2722  for(int i=0;i<fRunFlag;i++)
2723  runNums[i] = runArray_2015[i];
2724  }
2725  else if(sPeriod=="2015pPb" || sPeriod=="pPb"){
2726  fRunFlag = 32;
2727  for(int i=0;i<fRunFlag;i++)
2728  runNums[i] = runArray_pPb_16q_pass1[i];
2729  }
2730  else if(sPeriod=="2015LI"){
2731  fRunFlag = 13;
2732  for(int i=0;i<fRunFlag;i++)
2733  runNums[i] = runArray_2015LI[i];
2734  }
2735 
2736 
2737  else{
2738  printf("\n\n ***** Run Number not defined for this data set. *******\n\n Please modify code..\n\n");
2739  exit(1);
2740  }
2741 
2742 }//------- InitializeRunArray ---------
2743 
2744 
2745 
2747 
2748  fHist_Event_count = new TH1F("fHist_Event_count"," ",20,0,20);
2749  fHist_Event_count->GetXaxis()->SetBinLabel(1,"Called Exec()");
2750  fHist_Event_count->GetXaxis()->SetBinLabel(2,"AOD Exist");
2751  fHist_Event_count->GetXaxis()->SetBinLabel(3,"PileUp");
2752  fHist_Event_count->GetXaxis()->SetBinLabel(4,"iCentSPD<90");
2753  fHist_Event_count->GetXaxis()->SetBinLabel(5,"V0 Mult>0");
2754  fHist_Event_count->GetXaxis()->SetBinLabel(6,"TPC Q!=0");
2755  fHist_Event_count->GetXaxis()->SetBinLabel(7,"Bad Runs");
2756  fHist_Event_count->GetXaxis()->SetBinLabel(8,"..TBA..");
2757 
2758  fHist_Event_count->GetXaxis()->SetBinLabel(10,"Final Event");
2760 
2761  fPileUpMultSelCount = new TH1F("fPileUpMultSelCount", "fPileUpMultSelCount", 10, 0., 10.);
2762  fPileUpMultSelCount->GetXaxis()->SetBinLabel(1,"IsNotPileup");
2763  fPileUpMultSelCount->GetXaxis()->SetBinLabel(2,"IsNotPileupMV");
2764  fPileUpMultSelCount->GetXaxis()->SetBinLabel(3,"IsNotPileupInMultBins");
2765  fPileUpMultSelCount->GetXaxis()->SetBinLabel(4,"InconsistentVertices");
2766  fPileUpMultSelCount->GetXaxis()->SetBinLabel(5,"TrackletVsCluster");
2767  fPileUpMultSelCount->GetXaxis()->SetBinLabel(6,"AsymmetricInVZERO");
2768  fPileUpMultSelCount->GetXaxis()->SetBinLabel(7,"IncompleteDAQ");
2769  fPileUpMultSelCount->GetXaxis()->SetBinLabel(8,"GoodVertex2016");
2771 
2772  fPileUpCount = new TH1F("fPileUpCount", "fPileUpCount", 12, 0., 12.);
2773  fPileUpCount->GetXaxis()->SetBinLabel(1,"plpMV");
2774  fPileUpCount->GetXaxis()->SetBinLabel(2,"fromSPD");
2775  fPileUpCount->GetXaxis()->SetBinLabel(3,"RefMultiplicityComb08");
2776  fPileUpCount->GetXaxis()->SetBinLabel(4,"IncompleteDAQ");
2777  fPileUpCount->GetXaxis()->SetBinLabel(5,"abs(V0M-CL1)>5.0");
2778  fPileUpCount->GetXaxis()->SetBinLabel(6,"missingVtx");
2779  fPileUpCount->GetXaxis()->SetBinLabel(7,"inconsistentVtx");
2780  Int_t puConst = fPileUpConstParm;
2781  fPileUpCount->GetXaxis()->SetBinLabel(8,Form("multESDTPCDif>%d",puConst));
2782  fPileUpCount->GetXaxis()->SetBinLabel(9,Form("multGlobTPCDif>%d",puConst));
2783  fPileUpCount->GetXaxis()->SetBinLabel(10,"extraPileUpMultSel");
2784  fListHistos->Add(fPileUpCount);
2785 
2786  //To be implemented fully:
2787  fTaskConfigParm = new TH1F("fTaskConfigParm", "Connfig Values", 20, 0., 20.);
2788  fTaskConfigParm->GetXaxis()->SetBinLabel(1,"CentMin");
2789  fTaskConfigParm->GetXaxis()->SetBinLabel(2,"CentMax");
2790  fTaskConfigParm->GetXaxis()->SetBinLabel(3,"VzMin");
2791  fTaskConfigParm->GetXaxis()->SetBinLabel(4,"VzMax");
2792  fTaskConfigParm->GetXaxis()->SetBinLabel(5,"EtaMin");
2793  fTaskConfigParm->GetXaxis()->SetBinLabel(6,"EtaMax");
2794  fTaskConfigParm->GetXaxis()->SetBinLabel(7,"PtMin");
2795  fTaskConfigParm->GetXaxis()->SetBinLabel(8,"PtMax");
2796  fTaskConfigParm->GetXaxis()->SetBinLabel(9,"DCAxy");
2797  fTaskConfigParm->GetXaxis()->SetBinLabel(10,"DCAz");
2798  fTaskConfigParm->GetXaxis()->SetBinLabel(11,"MCcorrected?");
2799  fTaskConfigParm->GetXaxis()->SetBinLabel(12,"NUACorrected?");
2800  fTaskConfigParm->GetXaxis()->SetBinLabel(13,"V0gainCorr?");
2801  fTaskConfigParm->GetXaxis()->SetBinLabel(14,"ZDCgainCorr?");
2802  fTaskConfigParm->GetXaxis()->SetBinLabel(15,"harmonic N");
2803  fTaskConfigParm->GetXaxis()->SetBinLabel(16,"harmonic M");
2804  fTaskConfigParm->GetXaxis()->SetBinLabel(17,"harmonicPsi");
2806 
2807  if(sDataSet=="2015pPb" || sDataSet=="pPb") {
2808  fHistVtxZvsRun = new TH2F("fHistVtxZvsRun", " Vz (cm) ",fRunFlag,0,fRunFlag,400, -10, 10.);
2810  fHistVtxXvsRun = new TH2F("fHistVtxXvsRun", " Vx (cm) ",fRunFlag,0,fRunFlag,200, -1, 1.);
2812  fHistVtxYvsRun = new TH2F("fHistVtxYvsRun", " Vy (cm) ",fRunFlag,0,fRunFlag,200, -1, 1.);
2814  }
2815 
2816 
2817  //----- CME-ZDN correlator SP method---------
2818  for(int i=0;i<3;i++){ //ZDN_SP
2819  //Detector: 0 = V0A, 1 = V0C, 3 = Q-cumulant
2820  fHist_Corr3p_ZDN_SP_PN[i] = new TProfile2D(Form("fHist_Corr3p_ZDN_SP_PosNeg_Det%d",i+1),"opposit charge correlator",90,0,90,15,0,15,"");
2821  fHist_Corr3p_ZDN_SP_PN[i]->Sumw2();
2823  fHist_Corr3p_ZDN_SP_PP[i] = new TProfile2D(Form("fHist_Corr3p_ZDN_SP_PosPos_Det%d",i+1),"pos-pos charge correlator",90,0,90,15,0,15,"");
2824  fHist_Corr3p_ZDN_SP_PP[i]->Sumw2();
2826  fHist_Corr3p_ZDN_SP_NN[i] = new TProfile2D(Form("fHist_Corr3p_ZDN_SP_NegNeg_Det%d",i+1),"neg-neg charge correlator",90,0,90,15,0,15,"");
2827  fHist_Corr3p_ZDN_SP_NN[i]->Sumw2();
2829  }
2830  //SP Resolution:
2831  for(int i=0;i<3;i++){
2832  //Det: 0 = v0c-v0a, 1 = v0a-TPC, 2 = v0c-TPC,
2833  fHist_Reso2n_ZDN_SP_Det[i] = new TProfile2D(Form("fHist_Reso2n_ZDN_SP_DetComb%d",i+1),"Event plane Resolution",90,0,90,8,0,8,"");
2834  fHist_Reso2n_ZDN_SP_Det[i]->Sumw2();
2836  }
2837  //--------------------------------------------
2838 
2839  Double_t centRange[11] = {0,5,10,20,30,40,50,60,70,80,90};
2840 
2841 
2842  fRejectRatioVsCR = new TProfile2D("fRejectRatioVsCentRun","",10,centRange,fRunFlag,0,fRunFlag);
2844 
2845 
2846 
2847  //----- CME SP method histograms ---------
2848  for(int i=0;i<2;i++){
2849  for(int j=0;j<3;j++){
2850  //Detector: 0 = V0A, 1 = V0C, 3 = Q-cumulant
2851  fHist_Corr3p_SP_Norm_PN[i][j] = new TProfile(Form("fHist_Corr3p_SP_Norm_PosNeg_Mag%d_Det%d",i,j+1),"opposit charge correlator",10,centRange,"");
2852  fHist_Corr3p_SP_Norm_PN[i][j]->Sumw2();
2854  fHist_Corr3p_SP_Norm_PP[i][j] = new TProfile(Form("fHist_Corr3p_SP_Norm_PosPos_Mag%d_Det%d",i,j+1),"pos-pos charge correlator",10,centRange,"");
2855  fHist_Corr3p_SP_Norm_PP[i][j]->Sumw2();
2857  fHist_Corr3p_SP_Norm_NN[i][j] = new TProfile(Form("fHist_Corr3p_SP_Norm_NegNeg_Mag%d_Det%d",i,j+1),"neg-neg charge correlator",10,centRange,"");
2858  fHist_Corr3p_SP_Norm_NN[i][j]->Sumw2();
2860  }
2861  //EP Resolution:
2862  for(int j=0;j<3;j++){
2863  //Det: 0 = v0c-v0a, 1 = v0a-TPC, 2 = v0c-TPC,
2864  fHist_Reso2n_SP_Norm_Det[i][j] = new TProfile(Form("fHist_Reso2n_SP_Norm_Mag%d_DetComb%d",i,j+1),"Event plane Resolution",10,centRange,"");
2865  fHist_Reso2n_SP_Norm_Det[i][j]->Sumw2();
2867  }
2868  }
2869 
2870 
2871 
2872  //----- CME EP method histograms ---------
2873  for(int i=0;i<2;i++){
2874  for(int j=0;j<3;j++){
2875  //Detector: 0 = V0A, 1 = V0C, 3 = Q-cumulant
2876  fHist_Corr3p_EP_Norm_PN[i][j] = new TProfile(Form("fHist_Corr3p_EP_Norm_PosNeg_Mag%d_Det%d",i,j+1),"opposit charge correlator",10,centRange,"");
2877  fHist_Corr3p_EP_Norm_PN[i][j]->Sumw2();
2879  fHist_Corr3p_EP_Norm_PP[i][j] = new TProfile(Form("fHist_Corr3p_EP_Norm_PosPos_Mag%d_Det%d",i,j+1),"pos-pos charge correlator",10,centRange,"");
2880  fHist_Corr3p_EP_Norm_PP[i][j]->Sumw2();
2882  fHist_Corr3p_EP_Norm_NN[i][j] = new TProfile(Form("fHist_Corr3p_EP_Norm_NegNeg_Mag%d_Det%d",i,j+1),"neg-neg charge correlator",10,centRange,"");
2883  fHist_Corr3p_EP_Norm_NN[i][j]->Sumw2();
2885  }
2886  //EP Resolution:
2887  for(int j=0;j<3;j++){
2888  //Det: 0 = v0c-v0a, 1 = v0a-TPC, 2 = v0c-TPC,
2889  fHist_Reso2n_EP_Norm_Det[i][j] = new TProfile(Form("fHist_Reso2n_EP_Norm_Mag%d_DetComb%d",i,j+1),"Event plane Resolution",10,centRange,"");
2890  fHist_Reso2n_EP_Norm_Det[i][j]->Sumw2();
2892  }
2893  }
2894 
2895 
2896 
2897 
2898 
2899 
2900  fHV0AEventPlaneVsCent = new TH2F("fHV0AEventPlaneVsCent","Psi2 from V0A",10,centRange,50,0,3.1415);
2902  fHV0CEventPlaneVsCent = new TH2F("fHV0CEventPlaneVsCent","Psi2 from V0C",10,centRange,50,0,3.1415);
2904  fHTPCEventPlaneVsCent = new TH2F("fHTPCEventPlaneVsCent","Psi2 from TPC",10,centRange,50,0,3.1415);
2906 
2907 
2908 
2909 
2910  //TH1::SetDefaultSumw2();
2911 
2912  Char_t name[100], title[100];
2913 
2914 
2915 
2916  //Differential in pT:
2917  //Double_t pTRange[24] = {0,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.,1.2,1.4,1.6,1.8,2.,2.33,2.66,3.,3.5,4.,5.,6.,8.,10.};
2918 
2919  Double_t pTRange[21] = {0.0,0.2,0.4,0.6,0.8,1.0,1.2,1.4,1.6,1.8,2.0,2.2,2.4,2.6,2.8,3.0,3.2,3.4,3.6,3.8,4.0};
2920 
2921  for(int i=0;i<2;i++){
2922  for(int j=0;j<6;j++){
2923  sprintf(name,"fHist_Corr3p_pTSum_EP_V0A_PN_Mag%d_Cent%d",i,j);
2924  sprintf(title,"PN 3p vs (pT1+pT2)/2, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
2925  fHist_Corr3p_pTSum_EP_V0A_PN[i][j] = new TProfile(name,title,20,pTRange,"");
2926  fHist_Corr3p_pTSum_EP_V0A_PN[i][j]->Sumw2();
2928 
2929  sprintf(name,"fHist_Corr3p_pTSum_EP_V0A_PP_Mag%d_Cent%d",i,j);
2930  sprintf(title,"PP 3p vs (pT1+pT2)/2, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
2931  fHist_Corr3p_pTSum_EP_V0A_PP[i][j] = new TProfile(name,title,20,pTRange,"");
2932  fHist_Corr3p_pTSum_EP_V0A_PP[i][j]->Sumw2();
2934 
2935  sprintf(name,"fHist_Corr3p_pTSum_EP_V0A_NN_Mag%d_Cent%d",i,j);
2936  sprintf(title,"NN 3p vs (pT1+pT2)/2, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
2937  fHist_Corr3p_pTSum_EP_V0A_NN[i][j] = new TProfile(name,title,20,pTRange,"");
2938  fHist_Corr3p_pTSum_EP_V0A_NN[i][j]->Sumw2();
2940  //-----v0c----
2941  sprintf(name,"fHist_Corr3p_pTSum_EP_V0C_PN_Mag%d_Cent%d",i,j);
2942  sprintf(title,"PN 3p vs (pT1+pT2)/2, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
2943  fHist_Corr3p_pTSum_EP_V0C_PN[i][j] = new TProfile(name,title,20,pTRange,"");
2944  fHist_Corr3p_pTSum_EP_V0C_PN[i][j]->Sumw2();
2946 
2947  sprintf(name,"fHist_Corr3p_pTSum_EP_V0C_PP_Mag%d_Cent%d",i,j);
2948  sprintf(title,"PP 3p vs (pT1+pT2)/2, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
2949  fHist_Corr3p_pTSum_EP_V0C_PP[i][j] = new TProfile(name,title,20,pTRange,"");
2950  fHist_Corr3p_pTSum_EP_V0C_PP[i][j]->Sumw2();
2952 
2953  sprintf(name,"fHist_Corr3p_pTSum_EP_V0C_NN_Mag%d_Cent%d",i,j);
2954  sprintf(title,"NN 3p vs (pT1+pT2)/2, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
2955  fHist_Corr3p_pTSum_EP_V0C_NN[i][j] = new TProfile(name,title,20,pTRange,"");
2956  fHist_Corr3p_pTSum_EP_V0C_NN[i][j]->Sumw2();
2958  }
2959  }
2960 
2961  for(int i=0;i<2;i++){
2962  for(int j=0;j<6;j++){
2963  sprintf(name,"fHist_Corr3p_pTDiff_EP_V0A_PN_Mag%d_Cent%d",i,j);
2964  sprintf(title,"PN 3p vs |pT1-pT2|, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
2965  fHist_Corr3p_pTDiff_EP_V0A_PN[i][j] = new TProfile(name,title,20,pTRange,"");
2966  fHist_Corr3p_pTDiff_EP_V0A_PN[i][j]->Sumw2();
2968 
2969  sprintf(name,"fHist_Corr3p_pTDiff_EP_V0A_PP_Mag%d_Cent%d",i,j);
2970  sprintf(title,"PP 3p vs |pT1-pT2|, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
2971  fHist_Corr3p_pTDiff_EP_V0A_PP[i][j] = new TProfile(name,title,20,pTRange,"");
2972  fHist_Corr3p_pTDiff_EP_V0A_PP[i][j]->Sumw2();
2974 
2975  sprintf(name,"fHist_Corr3p_pTDiff_EP_V0A_NN_Mag%d_Cent%d",i,j);
2976  sprintf(title,"NN 3p vs |pT1-pT2|, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
2977  fHist_Corr3p_pTDiff_EP_V0A_NN[i][j] = new TProfile(name,title,20,pTRange,"");
2978  fHist_Corr3p_pTDiff_EP_V0A_NN[i][j]->Sumw2();
2980  //-----v0c----
2981  sprintf(name,"fHist_Corr3p_pTDiff_EP_V0C_PN_Mag%d_Cent%d",i,j);
2982  sprintf(title,"PN 3p vs |pT1-pT2|, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
2983  fHist_Corr3p_pTDiff_EP_V0C_PN[i][j] = new TProfile(name,title,20,pTRange,"");
2984  fHist_Corr3p_pTDiff_EP_V0C_PN[i][j]->Sumw2();
2986 
2987  sprintf(name,"fHist_Corr3p_pTDiff_EP_V0C_PP_Mag%d_Cent%d",i,j);
2988  sprintf(title,"PP 3p vs |pT1-pT2|, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
2989  fHist_Corr3p_pTDiff_EP_V0C_PP[i][j] = new TProfile(name,title,20,pTRange,"");
2990  fHist_Corr3p_pTDiff_EP_V0C_PP[i][j]->Sumw2();
2992 
2993  sprintf(name,"fHist_Corr3p_pTDiff_EP_V0C_NN_Mag%d_Cent%d",i,j);
2994  sprintf(title,"NN 3p vs |pT1-pT2|, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
2995  fHist_Corr3p_pTDiff_EP_V0C_NN[i][j] = new TProfile(name,title,20,pTRange,"");
2996  fHist_Corr3p_pTDiff_EP_V0C_NN[i][j]->Sumw2();
2998  }
2999  }
3000 
3001  Double_t EtaRange[9] = {0.0,0.2,0.4,0.6,0.8,1.0,1.2,1.4,1.6};
3002 
3003  for(int i=0;i<2;i++){
3004  for(int j=0;j<6;j++){
3005  sprintf(name,"fHist_Corr3p_EtaDiff_EP_V0A_PN_Mag%d_Cent%d",i,j);
3006  sprintf(title,"PN 3p vs |Eta1-Eta2|, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
3007  fHist_Corr3p_EtaDiff_EP_V0A_PN[i][j] = new TProfile(name,title,8,EtaRange,"");
3008  fHist_Corr3p_EtaDiff_EP_V0A_PN[i][j]->Sumw2();
3010 
3011  sprintf(name,"fHist_Corr3p_EtaDiff_EP_V0A_PP_Mag%d_Cent%d",i,j);
3012  sprintf(title,"PP 3p vs |Eta1-Eta2|, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
3013  fHist_Corr3p_EtaDiff_EP_V0A_PP[i][j] = new TProfile(name,title,8,EtaRange,"");
3014  fHist_Corr3p_EtaDiff_EP_V0A_PP[i][j]->Sumw2();
3016 
3017  sprintf(name,"fHist_Corr3p_EtaDiff_EP_V0A_NN_Mag%d_Cent%d",i,j);
3018  sprintf(title,"NN 3p vs |Eta1-Eta2|, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
3019  fHist_Corr3p_EtaDiff_EP_V0A_NN[i][j] = new TProfile(name,title,8,EtaRange,"");
3020  fHist_Corr3p_EtaDiff_EP_V0A_NN[i][j]->Sumw2();
3022  //-----v0c----
3023  sprintf(name,"fHist_Corr3p_EtaDiff_EP_V0C_PN_Mag%d_Cent%d",i,j);
3024  sprintf(title,"PN 3p vs |Eta1-Eta2|, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
3025  fHist_Corr3p_EtaDiff_EP_V0C_PN[i][j] = new TProfile(name,title,8,EtaRange,"");
3026  fHist_Corr3p_EtaDiff_EP_V0C_PN[i][j]->Sumw2();
3028 
3029  sprintf(name,"fHist_Corr3p_EtaDiff_EP_V0C_PP_Mag%d_Cent%d",i,j);
3030  sprintf(title,"PP 3p vs |Eta1-Eta2|, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
3031  fHist_Corr3p_EtaDiff_EP_V0C_PP[i][j] = new TProfile(name,title,8,EtaRange,"");
3032  fHist_Corr3p_EtaDiff_EP_V0C_PP[i][j]->Sumw2();
3034 
3035  sprintf(name,"fHist_Corr3p_EtaDiff_EP_V0C_NN_Mag%d_Cent%d",i,j);
3036  sprintf(title,"NN 3p vs |Eta1-Eta2|, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
3037  fHist_Corr3p_EtaDiff_EP_V0C_NN[i][j] = new TProfile(name,title,8,EtaRange,"");
3038  fHist_Corr3p_EtaDiff_EP_V0C_NN[i][j]->Sumw2();
3040  }
3041  }
3042 
3043 
3044 
3045 
3046  //non-Isotropic terms for correction:
3047  for(int i=0;i<2;i++){
3048  fHist_NonIso_SP_PP_Mag0[i] = new TProfile2D(Form("fHist_NonIso_SP_PP_Mag0_Det%d",i),"Non Isotropic terms",10,centRange,10,0,10,"");
3050  fHist_NonIso_SP_NN_Mag0[i] = new TProfile2D(Form("fHist_NonIso_SP_NN_Mag0_Det%d",i),"Non Isotropic terms",10,centRange,10,0,10,"");
3052 
3053  fHist_NonIso_SP_PP_Mag1[i] = new TProfile2D(Form("fHist_NonIso_SP_PP_Mag1_Det%d",i),"Non Isotropic terms",10,centRange,10,0,10,"");
3055  fHist_NonIso_SP_NN_Mag1[i] = new TProfile2D(Form("fHist_NonIso_SP_NN_Mag1_Det%d",i),"Non Isotropic terms",10,centRange,10,0,10,"");
3057  }
3058 
3059  for(int i=0;i<2;i++){
3060  fHist_Corr2p_EP_Norm_PN[i] = new TProfile2D(Form("fHist_Corr2p_EP_Norm_PN_Mag%d",i),"<cos(n(phiA-phiB))>",10,centRange,4,0,4,"");
3062  fHist_Corr2p_EP_Norm_PP[i] = new TProfile2D(Form("fHist_Corr2p_EP_Norm_PP_Mag%d",i),"<cos(n(phiA-phiB))>",10,centRange,4,0,4,"");
3064  fHist_Corr2p_EP_Norm_NN[i] = new TProfile2D(Form("fHist_Corr2p_EP_Norm_NN_Mag%d",i),"<cos(n(phiA-phiB))>",10,centRange,4,0,4,"");
3066  }
3067 
3068 
3069 
3070 
3071 
3072 
3073 
3074 
3075 
3076  //=========== Calibtation Histograms etc ==================
3077 
3078 
3079 
3081 
3082  fVzDistribuion = new TH1F("fVzDistribuion","Vz (cm)",100,-10,10);
3084 
3085  fEventStatvsRun = new TH1F("fEventStatvsRun","Event stat per run",fRunFlag,0,fRunFlag);
3087 
3088  fCentDistvsRun = new TH2F("fCentStatvsRun","Cent Dist. vs run",90,0,90,fRunFlag,0,fRunFlag);
3090 
3091 
3092  fCentV0MvsVzRun = new TProfile2D("fCentV0MvsVzRun","",100,-10,10,fRunFlag,0,fRunFlag);
3094 
3095  fCent3pvsVzRun = new TProfile2D("fCent3pvsVzRun","",100,-10,10,fRunFlag,0,fRunFlag);
3097 
3098  fCentCL1vsVzRun = new TH3F("fCentCL1vsVzRun","",80,-10,10,fRunFlag,0,fRunFlag,20,-10,10);
3100 
3101 
3102 
3103  fTPCvsGlobalTrk = new TH2F("fTPCvsGlobalTrk","ESDTrk vs TPC(FB128)",500,0,5000,500,0,5000);
3105 
3106  fTPCuncutvsGlobal = new TH2F("fTPCuncutvsGlobal","ESDTrk vs ITS(FB96) ",500,0,5000,500,0,5000);
3108 
3109  fTPCvsITSfb96 = new TH2F("fTPCvsITSfb96","FB96 vs TPC(FB128)",500,0,5000,500,0,5000);
3110  fListCalibs->Add(fTPCvsITSfb96);
3111 
3112  fTPCvsITSfb32 = new TH2F("fTPCvsITSfb32","FB32 vs TPC(FB128)",500,0,5000,500,0,5000);
3113  fListCalibs->Add(fTPCvsITSfb32);
3114 
3115  fTPCFEvsITSfb96 = new TH2F("fTPCFEvsITSfb96","FB96 vs TPC(FB1)",500,0,5000,500,0,5000);
3117 
3118  fGlobalTracks = new TH1F("fGlobalTracks","Global Multiplilcity",5000,0,5000);
3119  fListCalibs->Add(fGlobalTracks);
3120 
3121 
3122  //for debug only, remove after stable code
3123  hUnderOverBinNUApos = new TH1F("hUnderOverBinNUApos","",90,0,90);
3125  hUnderOverBinNUAneg = new TH1F("hUnderOverBinNUAneg","",90,0,90);
3127 
3128  Double_t fCentBinQvect[16] = {0.,2.5,5,10,15,20,25,30,35,40,45,50,60,70,80,90};
3129 
3130  fHEnergyZNCvsCent = new TH2F("fHEnergyZNCvsCent","ZNC Energy vs cent",15,fCentBinQvect,4000,0,200000);
3132  fHEnergyZNAvsCent = new TH2F("fHEnergyZNAvsCent","ZNA Energy vs cent",15,fCentBinQvect,4000,0,200000);
3134  fHEnergyZPCvsCent = new TH2F("fHEnergyZPCvsCent","ZPC Energy vs cent",15,fCentBinQvect,2000,0,50000);
3136  fHEnergyZPAvsCent = new TH2F("fHEnergyZPAvsCent","ZPA Energy vs cent",15,fCentBinQvect,2000,0,50000);
3138 
3139  fHEnergyZNCvsCentRun = new TProfile2D("fHEnergyZNCvsCentRun","",90,0,90,fRunFlag,0,fRunFlag);
3141  fHEnergyZNAvsCentRun = new TProfile2D("fHEnergyZNAvsCentRun","",90,0,90,fRunFlag,0,fRunFlag);
3143  fHEnergyZPCvsCentRun = new TProfile2D("fHEnergyZPCvsCentRun","",90,0,90,fRunFlag,0,fRunFlag);
3145  fHEnergyZPAvsCentRun = new TProfile2D("fHEnergyZPAvsCentRun","",90,0,90,fRunFlag,0,fRunFlag);
3147 
3148  fHEnergyZPCvsZPA = new TH2F("fHEnergyZPCvsZPA","ZNC Energy vs cent",500,0,50000,500,0,50000);
3150  fHEnergyZNCvsZNA = new TH2F("fHEnergyZNCvsZNA","ZNC Energy vs cent",500,50000,150000,500,50000,150000);
3152 
3153  fHCentBinTrkRecenter = new TH1F("fHCentBinTrkRecenter","centrality Binning",15,fCentBinQvect);
3154 
3155 
3156 
3157 
3158  Int_t magField[2] = {0,1}; //0 = Neg, 1 = Pos
3159 
3160  for(int i=0;i<2;i++){
3161  fHist_Corr3p_QAEta_SP_V0A_PN[i] = new TProfile(Form("fHist_Corr3p_QAEta_SP_V0A_PN_Mag%d",magField[i]),"PN, Cent 10-20%",16,-0.8,0.8,"");
3162  fHist_Corr3p_QAEta_SP_V0A_PN[i]->Sumw2();
3164  fHist_Corr3p_QAEta_SP_V0A_PP[i] = new TProfile(Form("fHist_Corr3p_QAEta_SP_V0A_PP_Mag%d",magField[i]),"PP, Cent 10-20%",16,-0.8,0.8,"");
3165  fHist_Corr3p_QAEta_SP_V0A_PP[i]->Sumw2();
3167  fHist_Corr3p_QAEta_SP_V0A_NN[i] = new TProfile(Form("fHist_Corr3p_QAEta_SP_V0A_NN_Mag%d",magField[i]),"NN, Cent 10-20%",16,-0.8,0.8,"");
3168  fHist_Corr3p_QAEta_SP_V0A_NN[i]->Sumw2();
3170  }
3171  for(int i=0;i<2;i++){
3172  fHist_Corr3p_QAEta_SP_V0C_PN[i] = new TProfile(Form("fHist_Corr3p_QAEta_SP_V0C_PN_Mag%d",magField[i]),"PN, Cent 10-20%",16,-0.8,0.8,"");
3173  fHist_Corr3p_QAEta_SP_V0C_PN[i]->Sumw2();
3175  fHist_Corr3p_QAEta_SP_V0C_PP[i] = new TProfile(Form("fHist_Corr3p_QAEta_SP_V0C_PP_Mag%d",magField[i]),"PP, Cent 10-20%",16,-0.8,0.8,"");
3176  fHist_Corr3p_QAEta_SP_V0C_PP[i]->Sumw2();
3178  fHist_Corr3p_QAEta_SP_V0C_NN[i] = new TProfile(Form("fHist_Corr3p_QAEta_SP_V0C_NN_Mag%d",magField[i]),"NN, Cent 10-20%",16,-0.8,0.8,"");
3179  fHist_Corr3p_QAEta_SP_V0C_NN[i]->Sumw2();
3181  }
3182 
3183  fEtaBinFinderForQA = new TH1F("fEtaBinFinderForQA","",16,-0.8,0.8);
3185 
3186 
3187 
3188 
3189 
3190 
3191  Int_t suffixEta[4] = {1,0,1,0}; //{"Pos","Neg","Pos","Neg"};
3192  Int_t suffixVz[4] = {1,1,0,0}; //{"Pos","Pos","Neg","Neg"};
3193 
3194  if(bFillAvgTPCQn){
3195  for(int i=0;i<4;i++){
3196  fHCos1nPosChEtaVz[i] = new TProfile2D(Form("fHCos1nPosChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*cos1n>",90,0,90,fRunFlag,0,fRunFlag);
3197  fListCalibs->Add(fHCos1nPosChEtaVz[i]);
3198  fHSin1nPosChEtaVz[i] = new TProfile2D(Form("fHSin1nPosChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*sin1n>",90,0,90,fRunFlag,0,fRunFlag);
3199  fListCalibs->Add(fHSin1nPosChEtaVz[i]);
3200  fHCos1nNegChEtaVz[i] = new TProfile2D(Form("fHCos1nNegChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*cos1n>",90,0,90,fRunFlag,0,fRunFlag);
3201  fListCalibs->Add(fHCos1nNegChEtaVz[i]);
3202  fHSin1nNegChEtaVz[i] = new TProfile2D(Form("fHSin1nNegChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*sin1n>",90,0,90,fRunFlag,0,fRunFlag);
3203  fListCalibs->Add(fHSin1nNegChEtaVz[i]);
3204 
3205  fHCos2nPosChEtaVz[i] = new TProfile2D(Form("fHCos2nPosChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*cos2n>",90,0,90,fRunFlag,0,fRunFlag);
3206  fListCalibs->Add(fHCos2nPosChEtaVz[i]);
3207  fHSin2nPosChEtaVz[i] = new TProfile2D(Form("fHSin2nPosChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*sin2n>",90,0,90,fRunFlag,0,fRunFlag);
3208  fListCalibs->Add(fHSin2nPosChEtaVz[i]);
3209  fHCos2nNegChEtaVz[i] = new TProfile2D(Form("fHCos2nNegChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*cos2n>",90,0,90,fRunFlag,0,fRunFlag);
3210  fListCalibs->Add(fHCos2nNegChEtaVz[i]);
3211  fHSin2nNegChEtaVz[i] = new TProfile2D(Form("fHSin2nNegChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*sin2n>",90,0,90,fRunFlag,0,fRunFlag);
3212  fListCalibs->Add(fHSin2nNegChEtaVz[i]);
3213 
3214  fHCos3nPosChEtaVz[i] = new TProfile2D(Form("fHCos3nPosChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*cos3n>",90,0,90,fRunFlag,0,fRunFlag);
3215  fListCalibs->Add(fHCos3nPosChEtaVz[i]);
3216  fHSin3nPosChEtaVz[i] = new TProfile2D(Form("fHSin3nPosChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*sin3n>",90,0,90,fRunFlag,0,fRunFlag);
3217  fListCalibs->Add(fHSin3nPosChEtaVz[i]);
3218  fHCos3nNegChEtaVz[i] = new TProfile2D(Form("fHCos3nNegChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*cos3n>",90,0,90,fRunFlag,0,fRunFlag);
3219  fListCalibs->Add(fHCos3nNegChEtaVz[i]);
3220  fHSin3nNegChEtaVz[i] = new TProfile2D(Form("fHSin3nNegChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*sin3n>",90,0,90,fRunFlag,0,fRunFlag);
3221  fListCalibs->Add(fHSin3nNegChEtaVz[i]);
3222 
3223  fHCos4nPosChEtaVz[i] = new TProfile2D(Form("fHCos4nPosChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*cos4n>",90,0,90,fRunFlag,0,fRunFlag);
3224  fListCalibs->Add(fHCos4nPosChEtaVz[i]);
3225  fHSin4nPosChEtaVz[i] = new TProfile2D(Form("fHSin4nPosChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*sin4n>",90,0,90,fRunFlag,0,fRunFlag);
3226  fListCalibs->Add(fHSin4nPosChEtaVz[i]);
3227  fHCos4nNegChEtaVz[i] = new TProfile2D(Form("fHCos4nNegChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*cos4n>",90,0,90,fRunFlag,0,fRunFlag);
3228  fListCalibs->Add(fHCos4nNegChEtaVz[i]);
3229  fHSin4nNegChEtaVz[i] = new TProfile2D(Form("fHSin4nNegChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*sin4n>",90,0,90,fRunFlag,0,fRunFlag);
3230  fListCalibs->Add(fHSin4nNegChEtaVz[i]);
3231 
3232  //Double weighted <..>
3233  fHCos2nDWPosChEtaVz[i] = new TProfile2D(Form("fHCos2nDWPosChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*ptw*cos2n>",90,0,90,fRunFlag,0,fRunFlag);
3235  fHSin2nDWPosChEtaVz[i] = new TProfile2D(Form("fHSin2nDWPosChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*ptw*cos2n>",90,0,90,fRunFlag,0,fRunFlag);
3237  fHCos2nDWNegChEtaVz[i] = new TProfile2D(Form("fHCos2nDWNegChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*ptw*cos2n>",90,0,90,fRunFlag,0,fRunFlag);
3239  fHSin2nDWNegChEtaVz[i] = new TProfile2D(Form("fHSin2nDWNegChEta%dVz%d",suffixEta[i],suffixVz[i]),"<ptw*ptw*cos2n>",90,0,90,fRunFlag,0,fRunFlag);
3241  }
3242  }
3243 
3244 
3245 
3246 
3247  //Average Multiplicity, same-sign, opposite-sign pair vs Centrality 1% :
3248 
3249  fAvgMultCentRun = new TProfile2D("fAvgMultCentRun","<Mult> vs cent,Run",90,0,90,fRunFlag,0,fRunFlag,"");
3251  fAvgWgtMultCentRun = new TProfile2D("fAvgWgtMultCentRun","<wgt*Mult> vs cent,Run",90,0,90,fRunFlag,0,fRunFlag,"");
3253  fAvgPOIposCentRun = new TProfile2D("fAvgPOIposCentRun","<wgt*POIs> ch-pos vs cent,Run",90,0,90,fRunFlag,0,fRunFlag,"");
3255  fAvgPOInegCentRun = new TProfile2D("fAvgPOInegCentRun","<wgt*POIs> ch-neg vs cent,Run",90,0,90,fRunFlag,0,fRunFlag,"");
3257  fAvgPOIPPCentRun = new TProfile2D("fAvgPOIPPCentRun","<wgt*POIs> Pos-Pos vs cent,Run",90,0,90,fRunFlag,0,fRunFlag,"");
3259  fAvgPOINNCentRun = new TProfile2D("fAvgPOINNCentRun","<wgt*POIs> Neg-Neg vs cent,Run",90,0,90,fRunFlag,0,fRunFlag,"");
3261  fAvgPOIOSCentRun = new TProfile2D("fAvgPOIOSCentRun","<wgt*POIs> oppo.-sign vs cent,Run",90,0,90,fRunFlag,0,fRunFlag,"");
3263 
3264 
3265 
3266  //Store CME run by Run: Not used for huge memory usage.
3267  /*
3268  for(int i=0;i<2;i++){//0=V0A,1=V0C
3269  fHist_Corr3p_vsRun_EP_PN[i] = new TProfile2D(Form("fHist_Corr3p_vsRun_EP_PN_Det%d",i+1),"opposit charge correlator",90,0,90,fRunFlag,0,fRunFlag,"");
3270  fListHistos->Add(fHist_Corr3p_vsRun_EP_PN[i]);
3271  fHist_Corr3p_vsRun_EP_PP[i] = new TProfile2D(Form("fHist_Corr3p_vsRun_EP_PP_Det%d",i+1),"PosPos charge correlator",90,0,90,fRunFlag,0,fRunFlag,"");
3272  fListHistos->Add(fHist_Corr3p_vsRun_EP_PP[i]);
3273  fHist_Corr3p_vsRun_EP_NN[i] = new TProfile2D(Form("fHist_Corr3p_vsRun_EP_NN_Det%d",i+1),"NegNeg charge correlator",90,0,90,fRunFlag,0,fRunFlag,"");
3274  fListHistos->Add(fHist_Corr3p_vsRun_EP_NN[i]);
3275  }*/
3276 
3277 
3278 
3279 
3280 
3281 
3282 
3283 
3284  //======== Following are all type of NUA written in List: fListNUAHist ================
3285 
3286 
3287  //---------- V0 histograms ---------
3288  fV0MultChVsRun = new TProfile2D("fV0MultChVsRun","1-32 V0C, 33-64 V0A",64,0,64,fRunFlag,0,fRunFlag,"");
3290 
3291  fV0AQ2xVsCentRun = new TProfile2D("fV0ACos2nVsCentRun","<Cos2> vs cent,Run",90,0,90,fRunFlag,0,fRunFlag,"");
3293  fV0AQ2yVsCentRun = new TProfile2D("fV0ASin2nVsCentRun","<Sin2> vs cent,Run",90,0,90,fRunFlag,0,fRunFlag,"");
3295  fV0CQ2xVsCentRun = new TProfile2D("fV0CCos2nVsCentRun","<Cos2> vs cent,Run",90,0,90,fRunFlag,0,fRunFlag,"");
3297  fV0CQ2yVsCentRun = new TProfile2D("fV0CSin2nVsCentRun","<Sin2> vs cent,Run",90,0,90,fRunFlag,0,fRunFlag,"");
3299 
3300  fV0AQ3xVsCentRun = new TProfile2D("fV0ACos3nVsCentRun","<Cos3> vs cent,Run",90,0,90,fRunFlag,0,fRunFlag,"");
3302  fV0AQ3yVsCentRun = new TProfile2D("fV0ASin3nVsCentRun","<Sin3> vs cent,Run",90,0,90,fRunFlag,0,fRunFlag,"");
3304  fV0CQ3xVsCentRun = new TProfile2D("fV0CCos3nVsCentRun","<Cos3> vs cent,Run",90,0,90,fRunFlag,0,fRunFlag,"");
3306  fV0CQ3yVsCentRun = new TProfile2D("fV0CSin3nVsCentRun","<Sin3> vs cent,Run",90,0,90,fRunFlag,0,fRunFlag,"");
3308  //-----------------------------------
3309 
3310 
3311  fTPCQ2xVsCentRun = new TProfile2D("fTPCCos2nVsCentRun","<Cos2> vs cent,Run",90,0,90,fRunFlag,0,fRunFlag,"");
3313  fTPCQ2yVsCentRun = new TProfile2D("fTPCSin2nVsCentRun","<Sin2> vs cent,Run",90,0,90,fRunFlag,0,fRunFlag,"");
3315 
3316 
3317 
3318  for(int i=0;i<10;i++){
3319  sprintf(name,"fHistChPosvsEtaPtRun_Cent%d",i);
3320  sprintf(title,"Pos Ch, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
3321  fHistChPosvsEtaPtRun[i] = new TH3F(name,title,25,0.2,5.2,16,-0.8,0.8,fRunFlag,0,fRunFlag);
3323  sprintf(name,"fHistChNegvsEtaPtRun_Cent%d",i);
3324  sprintf(title,"Neg Ch, Cent %2.0f-%2.0f",centRange[i],centRange[i+1]);
3325  fHistChNegvsEtaPtRun[i] = new TH3F(name,title,25,0.2,5.2,16,-0.8,0.8,fRunFlag,0,fRunFlag);
3327  }
3328 
3329 
3330  Int_t gCentForNUA[6] = {0,5,10,20,40,90};
3331 
3332  if(bFillEtaPhiNUA) {
3333  for(int i=0;i<5;i++){
3334  for(int j=0;j<fRunFlag;j++){
3335  sprintf(name,"fHistEtaPhiVz_Pos_Cent%d_Run%d",i,runNums[j]);
3336  sprintf(title,"eta,phi,Vz Pos Cent%d-%d%%",gCentForNUA[i],gCentForNUA[i+1]);
3337  fHist3DEtaPhiVz_Pos_Run[i][j] = new TH3F(name,title,10,-10,10,50,0,6.283185,16,-0.8,0.8);
3339 
3340  sprintf(name,"fHistEtaPhiVz_Neg_Cent%d_Run%d",i,runNums[j]);
3341  sprintf(title,"eta,phi,Vz Pos Cent%d-%d%%",gCentForNUA[i],gCentForNUA[i+1]);
3342  fHist3DEtaPhiVz_Neg_Run[i][j] = new TH3F(name,title,10,-10,10,50,0,6.283185,16,-0.8,0.8);
3344  }
3345  }
3346  }
3347 
3348  fVzBinFinderForNUA = new TH1F("fVzBinFinderForNUA","",4,-10,10); //only needed for pT dependent NUA.
3350 
3351  /*
3352  // pT Dependent NUA correction:
3353  Double_t pTbinNUA[16] = {0.2,0.4,0.6,0.8,1.0,1.2,1.4,1.6,1.8,2.0,2.4,2.6,3.0,3.5,4.0,5.0};
3354  Double_t etabinNUA[9] = {-0.8,-0.6,-0.4,-0.2,0.0,0.2,0.4,0.6,0.8};
3355  Double_t phibinNUA[51] = {0.,};
3356  Double_t fPhi = 6.2832/50;
3357  for(int i=0;i<51;i++){
3358  phibinNUA[i] = fPhi*i;
3359  }
3360 
3361  if(bFillEtaPhiNUA) {
3362  for(int i=0;i<5;i++){
3363  for(int j=0;j<fRunFlag;j++){
3364  sprintf(name,"fHistEtaPhiPt_Pos_Vz%d_Run%d",i,runNums[j]);
3365  sprintf(title,"eta,phi,Pt Pos Vz%d",i);
3366  fHist3DEtaPhiVz_Pos_Run[i][j] = new TH3F(name,title,15,pTbinNUA,50,phibinNUA,8,etabinNUA);
3367  fListNUAHist->Add(fHist3DEtaPhiVz_Pos_Run[i][j]);
3368 
3369  sprintf(name,"fHistEtaPhiPt_Neg_Vz%d_Run%d",i,runNums[j]);
3370  sprintf(title,"eta,phi,Pt Pos Vz%d",i);
3371  fHist3DEtaPhiVz_Neg_Run[i][j] = new TH3F(name,title,15,pTbinNUA,50,phibinNUA,8,etabinNUA);
3372  fListNUAHist->Add(fHist3DEtaPhiVz_Neg_Run[i][j]);
3373  }
3374  }
3375  } */
3376 
3377 
3378 
3379 }
3380 
3381 
virtual void Terminate(Option_t *)
Bool_t CheckEventIsPileUp(AliAODEvent *faod)
TProfile2D * fHist_Corr3p_ZDN_SP_NN[3]
TProfile * fHist_Corr3p_EtaDiff_EP_V0C_NN[2][6]
TProfile * fHist_Reso2n_EP_Norm_Det[2][3]
TProfile * fHist_Corr3p_EtaDiff_EP_V0A_NN[2][6]
double Double_t
Definition: External.C:58
Definition: External.C:260
TProfile2D * fHist_Corr3p_ZDN_SP_PP[3]
Norm = 10 centrality bins along X.
TProfile2D * fHSin3nPosChEtaVz[4]
TH1D * fQynsV0C
sigma Qx2 V0C
Int_t fOldRunNum
number of total run
Definition: External.C:236
Bool_t PileUpMultiVertex(const AliAODEvent *faod)
const char * title
Definition: MakeQAPdf.C:27
TProfile * fHist_Corr3p_pTSum_EP_V0A_PP[2][6]
TProfile2D * fHCos4nPosChEtaVz[4]
TH1D * fQxnmV0A
profile from V0 multiplicity
AliFlowTrackSimple * GetTrack(Int_t i)
TList * fListHistos
Event selection.
TProfile2D * fHist_Corr2p_EP_Norm_NN[2]
AliAnalysisUtils * fAnalysisUtil
MultSelection (RUN2 centrality estimator)
TProfile * fHist_Corr3p_QAEta_SP_V0C_PP[2]
Pos and Neg Mag field.
TProfile2D * fHCos2nNegChEtaVz[4]
TProfile * fHist_Corr3p_pTDiff_EP_V0C_PN[2][6]
TProfile2D * fHSin1nNegChEtaVz[4]
TList * fListFBHijing
collection of NUA Histograms
char Char_t
Definition: External.C:18
TProfile * fHist_Corr3p_QAEta_SP_V0A_PP[2]
Pos and Neg Mag field.
Int_t GetCurrentRunIndex(Int_t run)
TProfile * fHist_Corr3p_EP_Norm_PP[2][3]
TProfile2D * fHSin3nNegChEtaVz[4]
TProfile2D * fHSin2nPosChEtaVz[4]
TList * fListCalibs
collection of output
TProfile * fHist_Corr3p_EP_Norm_PN[2][3]
TH3F * fFB_Efficiency_Neg[10]
3d correction Map
TProfile * fHist_Corr3p_pTDiff_EP_V0A_NN[2][6]
TProfile2D * fHist_Corr3p_ZDN_SP_PN[3]
TProfile2D * fHCos1nPosChEtaVz[4]
TH1F * hUnderOverBinNUAneg
//temporary Debug, remove for stable code
TProfile * fHist_Corr3p_EP_Norm_NN[2][3]
TProfile2D * fHist_Corr3p_vsRun_EP_PN[2]
TProfile2D * fCentV0MvsVzRun
for V0-Mult Gain Correction per channel.
AliMultSelection * fMultSelection
input event
TH1F * fPileUpMultSelCount
event count with different cuts
TProfile * fHist_Corr3p_pTSum_EP_V0A_PN[2][6]
TProfile2D * fHist_NonIso_SP_PP_Mag0[2]
TProfile * fHist_Corr3p_EtaDiff_EP_V0A_PN[2][6]
TProfile2D * fHCos4nNegChEtaVz[4]
TH3F * fHist3DEtaPhiVz_Neg_Run[5][90]
5 centrality bin 90 Bins for Run. NUA
Double_t Phi() const
TProfile * fHist_Corr3p_QAEta_SP_V0A_PN[2]
TProfile2D * fHCos3nPosChEtaVz[4]
void OpenInfoCalbration(Int_t run, Float_t fHarmonic)
TProfile2D * fHist_Reso2n_ZDN_SP_Det[3]
int Int_t
Definition: External.C:63
TH1D * fQynsV0A
sigma Qx2 V0A
TProfile2D * fHCos2nDWPosChEtaVz[4]
TList * fListNUAHist
collection of Calib Histos
TH1D * fMultV0
Cut parameters which were used.
TProfile2D * fHSin2nNegChEtaVz[4]
float Float_t
Definition: External.C:68
TProfile * fHist_Corr3p_SP_Norm_PP[2][3]
Norm = 10 centrality bins along X.
void GetNUACorrectionHist(Int_t run, TString sfileNUA)
Definition: External.C:252
TProfile * fHist_Corr3p_pTSum_EP_V0A_NN[2][6]
Definition: External.C:228
Definition: External.C:212
TProfile * fHist_Corr3p_pTDiff_EP_V0A_PN[2][6]
TProfile * fHist_Corr3p_pTSum_EP_V0C_PN[2][6]
TProfile2D * fHSin2nDWPosChEtaVz[4]
TProfile2D * fHCos2nDWNegChEtaVz[4]
TProfile2D * fHCos3nNegChEtaVz[4]
TH3F * fHistChNegvsEtaPtRun[10]
10 Centrality Bin
TProfile2D * fHist_NonIso_SP_NN_Mag1[2]
Mag1 = B > 0.
TProfile2D * fHCos2nPosChEtaVz[4]
Int_t fRunFlag
array of runnumbers
TProfile * fHist_Corr3p_QAEta_SP_V0C_NN[2]
AliFlowEventSimple * fEvent
TProfile * fHist_Reso2n_SP_Norm_Det[2][3]
TProfile2D * fHist_Corr2p_EP_Norm_PN[2]
virtual void UserCreateOutputObjects()
TProfile * fHist_Corr3p_pTDiff_EP_V0C_PP[2][6]
TProfile2D * fV0MultChVsRun
opposite sign pairs
void InitializeRunArray(TString sPeriod)
TProfile * fHist_Corr3p_QAEta_SP_V0A_NN[2]
void GetV0MCorrectionHist(Int_t run)
TH1F * fHCentBinTrkRecenter
//temporary Debug, remove for stable code
TProfile2D * fHSin4nNegChEtaVz[4]
TProfile * fHist_Corr3p_pTSum_EP_V0C_NN[2][6]
TProfile2D * fHist_NonIso_SP_PP_Mag1[2]
TProfile * fHist_Corr3p_SP_Norm_PN[2][3]
TProfile2D * fHSin4nPosChEtaVz[4]
TProfile * fHist_Corr3p_EtaDiff_EP_V0C_PP[2][6]
void GetV0QvectAndMult(const AliAODVZERO *aodV0, Float_t fHarmonic, Double_t &Qxan, Double_t &Qyan, Double_t &sumMa, Double_t &Qxcn, Double_t &Qycn, Double_t &sumMc)
TProfile * fHist_Corr3p_EtaDiff_EP_V0A_PP[2][6]
Float_t EvtCent
counter of event for cout
TProfile * fHist_Corr3p_QAEta_SP_V0C_PN[2]
TProfile2D * fHist_Corr3p_vsRun_EP_NN[2]
Int_t fHarmonicN
Event centrality.
TProfile2D * fHist_NonIso_SP_NN_Mag0[2]
Mag0 = B < 0.
TProfile * fHist_Corr3p_EtaDiff_EP_V0C_PN[2][6]
const char Option_t
Definition: External.C:48
void GetZDCCorrectionHist(Int_t run)
TProfile2D * fAvgPOIOSCentRun
same sign Neg-Neg pairs
Bool_t InPOISelection(Int_t poiType=1) const
TH1D * fQxnmV0C
sigma Qy2 V0A
Double_t Eta() const
const Double_t pi
TProfile2D * fHist_Corr3p_vsRun_EP_PP[2]
TProfile * fHist_Corr3p_SP_Norm_NN[2][3]
bool Bool_t
Definition: External.C:53
TProfile2D * fHSin1nPosChEtaVz[4]
TH3D * fHCorrectNUAneg[5]
5 centrality bin
virtual void UserExec(Option_t *option)
TProfile * fHist_Corr3p_pTDiff_EP_V0C_NN[2][6]
TH1D * fFB_Efficiency_Cent[10]
5 centrality bin 90 Bins for Run. NUA
double GetWDist(const AliVVertex *v0, const AliVVertex *v1)
TProfile2D * fHSin2nDWNegChEtaVz[4]
TProfile2D * fAvgPOINNCentRun
same sign Pos-Pos pairs
TH3F * fHist3DEtaPhiVz_Pos_Run[5][90]
5 centrality bin
TProfile * fHist_Corr3p_pTSum_EP_V0C_PP[2][6]
TProfile2D * fHCos1nNegChEtaVz[4]
Int_t NumberOfTracks() const
TProfile * fHist_Corr3p_pTDiff_EP_V0A_PP[2][6]
TProfile2D * fHist_Corr2p_EP_Norm_PP[2]
Two magnetic fields.