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