AliPhysics  7c9d977 (7c9d977)
AliAnalysisTaskCmeEse.cxx
Go to the documentation of this file.
2 
3 // ROOT includes
4 #include <TList.h>
5 #include <TFile.h>
6 #include <TMath.h>
7 #include <TH1.h>
8 #include <TH2.h>
9 #include <TProfile.h>
10 #include <TMatrixDSym.h>
11 #include <TF1.h>
12 #include <TRandom.h>
13 #include <TSpline.h>
14 #include <TGrid.h>
15 #include <THnSparse.h>
16 
17 // AliRoot includes
18 #include "AliAnalysisManager.h"
19 #include "AliInputEventHandler.h"
20 #include "AliLog.h"
21 #include "AliAODEvent.h"
22 #include "AliAODVertex.h"
23 #include "AliAODTrack.h"
24 #include "AliAODHeader.h"
25 #include "AliAODVZERO.h"
26 #include "AliVHeader.h"
27 #include "AliVVertex.h"
28 #include "AliVEvent.h"
29 #include "AliVTrack.h"
30 #include "AliESDtrack.h"
31 #include "AliESDEvent.h"
32 #include "AliAODMCParticle.h"
33 #include "AliCentrality.h"
34 #include "AliOADBContainer.h"
35 
36 // STL includes
37 #include <iostream>
38 #include <ctime>
39 #include <sys/time.h>
40 using std::cout;
41 using std::endl;
42 
43 ClassImp(AliAnalysisTaskCmeEse)
44  //_____________________________________________________________________________
47  fAOD(0),
48  fRun(-1),
49  fMultV0(0),
50  fQx2mV0A(0),
51  fQy2mV0A(0),
52  fQx2sV0A(0),
53  fQy2sV0A(0),
54  fQx2mV0C(0),
55  fQy2mV0C(0),
56  fQx2sV0C(0),
57  fQy2sV0C(0),
58  fFitRecLow(0),
59  fFitRecHigh(0),
60  fRecEff(0),
61  fVtxCut(10.0),
62  fFilterbit(128),
63  fEtaCut(0.8),
64  fNoClus(70),
65  fMinPt(0.2),
66  fMaxPt(20.0),
67  fLHC10h(kTRUE),
68  fPileUp(kTRUE),
69  fCent(0),
70  fQAV0(kFALSE),
71  fTrkQA(kFALSE),
72  fListOfObjects(0),
73  fVtx(0), fVtxBeforeCuts(0), fVtxAfterCuts(0), fMultCorBeforeCuts(0), fMultCorAfterCuts(0), fPercqc2(0), fAllQA(0),
74  fQxavsV0Bef(0), fQyavsV0Bef(0), fQxcvsV0Bef(0), fQycvsV0Bef(0),
75  fQxavsVtxZBef(0), fQyavsVtxZBef(0), fQxcvsVtxZBef(0), fQycvsVtxZBef(0),
76  fQxavsV0Aft(0), fQyavsV0Aft(0), fQxcvsV0Aft(0), fQycvsV0Aft(0),
77  fQxavsVtxZAft(0), fQyavsVtxZAft(0), fQxcvsVtxZAft(0), fQycvsVtxZAft(0),
78  fV2A(0), fV0AV0Cv2(0), fV0ATPCv2(0), fV0CTPCv2(0),
79  fCMESameQPos(0), fCMESameQNeg(0), fCMEOppQ(0), fCMESameQPosCos(0), fCMESameQPosSin(0), fCMESameQPosv1(0), fCMESameQNegCos(0), fCMESameQNegSin(0), fCMESameQNegv1(0), fCMEOppQCos(0), fCMEOppQSin(0), fCMEOppQv1(0)
80 {
81 
82  for (Int_t i = 0; i < 90; i++){
83 
84  fSplQ2c[i] = 0;
85 
86  if (i < 10){
87 
88  fV2Aqc2[i] = 0;
89  fV0AV0Cv2qc2[i] = 0;
90  fV0ATPCv2qc2[i] = 0;
91  fV0CTPCv2qc2[i] = 0;
92  fCMESameQPosqc2[i] = 0;
93  fCMESameQNegqc2[i] = 0;
94  fCMEOppQqc2[i] = 0;
95  fCMESameQPosCosqc2[i] = 0;
96  fCMESameQPosSinqc2[i] = 0;
97  fCMESameQPosv1qc2[i] = 0;
98  fCMESameQNegCosqc2[i] = 0;
99  fCMESameQNegSinqc2[i] = 0;
100  fCMESameQNegv1qc2[i] = 0;
101  fCMEOppQCosqc2[i] = 0;
102  fCMEOppQSinqc2[i] = 0;
103  fCMEOppQv1qc2[i] = 0;
104  }
105 
106  if (i < 9){
107 
108  fV2Pt[i] = 0;
109 
110  fCMESameQPosEta[i] = 0;
111  fCMESameQPosPtDif[i] = 0;
112  fCMESameQPosPtSum[i] = 0;
113 
114  fCMESameQNegEta[i] = 0;
115  fCMESameQNegPtDif[i] = 0;
116  fCMESameQNegPtSum[i] = 0;
117 
118  fCMEOppQEta[i] = 0;
119  fCMEOppQPtDif[i] = 0;
120  fCMEOppQPtSum[i] = 0;
121 
122  fPsiA[i] = 0;
123  fPsiC[i] = 0;
124  fPsiAvsPsiC[i] = 0;
125 
126 
127  for (Int_t j = 0; j < 10; j++){
128 
129  fV2Ptqc2[i][j] = 0;
130 
131  fCMESameQPosEtaqc2[i][j] = 0;
132  fCMESameQPosPtDifqc2[i][j] = 0;
133  fCMESameQPosPtSumqc2[i][j] = 0;
134 
135  fCMESameQNegEtaqc2[i][j] = 0;
136  fCMESameQNegPtDifqc2[i][j] = 0;
137  fCMESameQNegPtSumqc2[i][j] = 0;
138 
139  fCMEOppQEtaqc2[i][j] = 0;
140  fCMEOppQPtDifqc2[i][j] = 0;
141  fCMEOppQPtSumqc2[i][j] = 0;
142  }
143 
144  }
145 
146  }
147 
148 }
149 
150 //______________________________________________________________________________
152  AliAnalysisTaskSE(name),
153  fAOD(0),
154  fRun(-1),
155  fMultV0(0),
156  fQx2mV0A(0),
157  fQy2mV0A(0),
158  fQx2sV0A(0),
159  fQy2sV0A(0),
160  fQx2mV0C(0),
161  fQy2mV0C(0),
162  fQx2sV0C(0),
163  fQy2sV0C(0),
164  fFitRecLow(0),
165  fFitRecHigh(0),
166  fRecEff(0),
167  fVtxCut(10.0),
168  fFilterbit(128),
169  fEtaCut(0.8),
170  fNoClus(70),
171  fMinPt(0.2),
172  fMaxPt(20.0),
173  fLHC10h(kTRUE),
174  fPileUp(kTRUE),
175  fCent(0),
176  fQAV0(kFALSE),
177  fTrkQA(kFALSE),
178  fListOfObjects(0),
179  fVtx(0), fVtxBeforeCuts(0), fVtxAfterCuts(0), fMultCorBeforeCuts(0), fMultCorAfterCuts(0), fPercqc2(0), fAllQA(0),
180  fQxavsV0Bef(0), fQyavsV0Bef(0), fQxcvsV0Bef(0), fQycvsV0Bef(0),
181  fQxavsVtxZBef(0), fQyavsVtxZBef(0), fQxcvsVtxZBef(0), fQycvsVtxZBef(0),
182  fQxavsV0Aft(0), fQyavsV0Aft(0), fQxcvsV0Aft(0), fQycvsV0Aft(0),
183  fQxavsVtxZAft(0), fQyavsVtxZAft(0), fQxcvsVtxZAft(0), fQycvsVtxZAft(0),
184  fV2A(0), fV0AV0Cv2(0), fV0ATPCv2(0), fV0CTPCv2(0),
185  fCMESameQPos(0), fCMESameQNeg(0), fCMEOppQ(0), fCMESameQPosCos(0), fCMESameQPosSin(0), fCMESameQPosv1(0), fCMESameQNegCos(0), fCMESameQNegSin(0), fCMESameQNegv1(0), fCMEOppQCos(0), fCMEOppQSin(0), fCMEOppQv1(0)
186 {
187 
188  for (Int_t i = 0; i < 90; i++){
189 
190  fSplQ2c[i] = 0;
191 
192  if (i < 10){
193 
194  fV2Aqc2[i] = 0;
195  fV0AV0Cv2qc2[i] = 0;
196  fV0ATPCv2qc2[i] = 0;
197  fV0CTPCv2qc2[i] = 0;
198  fCMESameQPosqc2[i] = 0;
199  fCMESameQNegqc2[i] = 0;
200  fCMEOppQqc2[i] = 0;
201  fCMESameQPosCosqc2[i] = 0;
202  fCMESameQPosSinqc2[i] = 0;
203  fCMESameQPosv1qc2[i] = 0;
204  fCMESameQNegCosqc2[i] = 0;
205  fCMESameQNegSinqc2[i] = 0;
206  fCMESameQNegv1qc2[i] = 0;
207  fCMEOppQCosqc2[i] = 0;
208  fCMEOppQSinqc2[i] = 0;
209  fCMEOppQv1qc2[i] = 0;
210  }
211 
212  if (i < 9){
213 
214  fV2Pt[i] = 0;
215 
216  fCMESameQPosEta[i] = 0;
217  fCMESameQPosPtDif[i] = 0;
218  fCMESameQPosPtSum[i] = 0;
219 
220  fCMESameQNegEta[i] = 0;
221  fCMESameQNegPtDif[i] = 0;
222  fCMESameQNegPtSum[i] = 0;
223 
224  fCMEOppQEta[i] = 0;
225  fCMEOppQPtDif[i] = 0;
226  fCMEOppQPtSum[i] = 0;
227 
228  fPsiA[i] = 0;
229  fPsiC[i] = 0;
230  fPsiAvsPsiC[i] = 0;
231 
232 
233  for (Int_t j = 0; j < 10; j++){
234 
235  fV2Ptqc2[i][j] = 0;
236 
237  fCMESameQPosEtaqc2[i][j] = 0;
238  fCMESameQPosPtDifqc2[i][j] = 0;
239  fCMESameQPosPtSumqc2[i][j] = 0;
240 
241  fCMESameQNegEtaqc2[i][j] = 0;
242  fCMESameQNegPtDifqc2[i][j] = 0;
243  fCMESameQNegPtSumqc2[i][j] = 0;
244 
245  fCMEOppQEtaqc2[i][j] = 0;
246  fCMEOppQPtDifqc2[i][j] = 0;
247  fCMEOppQPtSumqc2[i][j] = 0;
248  }
249 
250  }
251 
252  }
253 
254  // Output slot #1 writes into a TTree
255  DefineOutput(1, TList::Class());
256 
257 }
258 
259 //_____________________________________________________________________________
261 {
262  // Destructor
263  if (fListOfObjects)
264  delete fListOfObjects;
265 
266 }
267 
268 //______________________________________________________________________________
270 {
271 
272  if (!gGrid) {
273  TGrid::Connect("alien://");
274  }
275 
276 
277  TFile* fRecEf = TFile::Open("alien:///alice/cern.ch/user/a/adobrin/hist_recEff_pbpb_run1.root");
278  if (!fRecEf){
279  printf("Rec eff file cannot be opened \n");
280  return;
281  }
282  fFitRecLow = (TF1*)fRecEf->Get("fitEff1_0");
283  fFitRecHigh = (TF1*)fRecEf->Get("fitEff2_0");
284 
285 
286 
287  TFile* fSpl = TFile::Open("alien:///alice/cern.ch/user/a/adobrin/calibSpV0CRun1.root");
288  if (!fSpl){
289  printf("Spline file cannot be opened \n");
290  return;
291  }
292  for (Int_t isp = 0; isp < 90; isp++)
293  fSplQ2c[isp] = (TSpline3*)fSpl->Get(Form("hqc2Int_%d", isp));
294 
295 
296 
297  timeval a;
298  gettimeofday(&a, 0);
299  Int_t randomSeed = a.tv_usec;
300  gRandom->SetSeed(randomSeed);
301 
302 
303 
304  OpenFile(1);
305  fListOfObjects = new TList();
306  fListOfObjects->SetOwner();
307 
308 
309  // Histograms
310  fVtx = new TH1I("fVtx","Vtx info (0=no, 1=yes); Vtx; Counts", 2, -0.5, 1.5);
311  fListOfObjects->Add(fVtx);
312 
313  fVtxBeforeCuts = new TH1F("fVtxBeforeCuts", "Vtx distribution (before cuts); Vtx z [cm]; Counts", 120, -30, 30);
315 
316  fVtxAfterCuts = new TH1F("fVtxAfterCuts", "Vtx distribution (after cuts); Vtx z [cm]; Counts", 120, -30, 30);
318 
319  fMultCorBeforeCuts = new TH2F("fMultCorBeforeCuts", "TPC vs Global multiplicity (Before cuts); Global multiplicity; TPC multiplicity", 100, 0, 3000, 100, 0, 3000);
321 
322  fMultCorAfterCuts = new TH2F("fMultCorAfterCuts", "TPC vs Global multiplicity (After cuts); Global multiplicity; TPC multiplicity", 100, 0, 3000, 100, 0, 3000);
324 
325 
326  fPercqc2 = new TH2D("fPercqc2", "; centrality percentile; q_{2} percentile", 100, 0, 100, 100, 0, 100);
327  fListOfObjects->Add(fPercqc2);
328 
329 
330 
331  const Int_t nCenB = 9;
332  Float_t cenBins[nCenB+1] = {0, 5., 10., 20., 30., 40., 50., 60., 70., 80.};
333 
334  const Int_t nPtB = 23;
335  Double_t ptBins[nPtB+1] = {0., 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.25, 2.5, 2.75, 3.0, 3.25, 3.5, 4.0, 4.5, 5.0};
336 
337 
338  if (fTrkQA){
339 
340  Int_t binsAll[5] = { nCenB, nPtB, 3, 18, 72};
341  Double_t xminAll[5] = { -0.5, 0, -1.5, -0.9, 0};
342  Double_t xmaxAll[5] = { nCenB-0.5, 5., 1.5, 0.9, 2.*TMath::Pi()};
343 
344  fAllQA = new THnSparseF("fAllQA", "cent:pT:q:eta:phi", 5, binsAll, xminAll, xmaxAll);
345  fAllQA->SetBinEdges(1, ptBins);
346  fAllQA->GetAxis(0)->SetTitle("centrality");
347  fAllQA->GetAxis(1)->SetTitle("p_{T} (Gev/c");
348  fAllQA->GetAxis(2)->SetTitle("q");
349  fAllQA->GetAxis(3)->SetTitle("#eta");
350  fAllQA->GetAxis(4)->SetTitle("#varphi");
351  fListOfObjects->Add(fAllQA);
352 
353  }
354 
355 
356 
357  if (fQAV0){
358 
359  fQxavsV0Bef = new TH2D("fQxavsV0Bef", " ; centrality (V0); Q_{x} (V0A)", 100, 0, 100, 1400, -1400., 1400.);
361 
362  fQyavsV0Bef = new TH2D("fQyavsV0Bef", " ; centrality (V0); Q_{y} (V0A)", 100, 0, 100, 1400, -1400., 1400.);
364 
365  fQxcvsV0Bef = new TH2D("fQxcvsV0Bef", " ; centrality (V0); Q_{x} (V0C)", 100, 0, 100, 1400, -1400., 1400.);
367 
368  fQycvsV0Bef = new TH2D("fQycvsV0Bef", " ; centrality (V0); Q_{y} (V0C)", 100, 0, 100, 1400, -1400., 1400.);
370 
371 
372  fQxavsVtxZBef = new TH2D("fQxavsVtxZBef", " ; vertexZ; Q_{x} (V0A)", 20, -10., 10., 1400, -1400., 1400.);
374 
375  fQyavsVtxZBef = new TH2D("fQyavsVtxZBef", " ; vertexZ; Q_{y} (V0A)", 20, -10., 10., 1400, -1400., 1400.);
377 
378  fQxcvsVtxZBef = new TH2D("fQxcvsVtxZBef", " ; vertexZ; Q_{x} (V0C)", 20, -10., 10., 1400, -1400., 1400.);
380 
381  fQycvsVtxZBef = new TH2D("fQycvsVtxZBef", " ; vertexZ; Q_{y} (V0C)", 20, -10., 10., 1400, -1400., 1400.);
383 
384 
385  fQxavsV0Aft = new TH2D("fQxavsV0Aft", " ; centrality (V0); Q_{x} (V0A)", 100, 0, 100, 200, -10., 10.);
387 
388  fQyavsV0Aft = new TH2D("fQyavsV0Aft", " ; centrality (V0); Q_{y} (V0A)", 100, 0, 100, 200, -10., 10.);
390 
391  fQxcvsV0Aft = new TH2D("fQxcvsV0Aft", " ; centrality (V0); Q_{x} (V0C)", 100, 0, 100, 200, -10., 10.);
393 
394  fQycvsV0Aft = new TH2D("fQycvsV0Aft", " ; centrality (V0); Q_{y} (V0C)", 100, 0, 100, 200, -10., 10.);
396 
397 
398  fQxavsVtxZAft = new TH2D("fQxavsVtxZAft", " ; vertexZ; Q_{x} (V0A)", 20, -10., 10., 200, -10., 10);
400 
401  fQyavsVtxZAft = new TH2D("fQyavsVtxZAft", " ; vertexZ; Q_{y} (V0A)", 20, -10., 10., 200, -10., 10);
403 
404  fQxcvsVtxZAft = new TH2D("fQxcvsVtxZAft", " ; vertexZ; Q_{x} (V0C)", 20, -10., 10., 200, -10., 10);
406 
407  fQycvsVtxZAft = new TH2D("fQycvsVtxZAft", " ; vertexZ; Q_{y} (V0C)", 20, -10., 10., 200, -10., 10);
409 
410  }
411 
412 
413 
414  fV2A = new TProfile("fV2A", "; centrality percentile; v_{2}{EP V0A}", nCenB, cenBins);
415  fListOfObjects->Add(fV2A);
416 
417  fV0AV0Cv2 = new TProfile("fV0AV0Cv2", "; centrality percentile; V0A-V0C correlations", nCenB, cenBins);
419 
420  fV0ATPCv2 = new TProfile("fV0ATPCv2", "; centrality percentile; V0A-TPC correlations", nCenB, cenBins);
422 
423  fV0CTPCv2 = new TProfile("fV0CTPCv2", "; centrality percentile; V0C-TPC correlations", nCenB, cenBins);
425 
426 
427  fCMESameQPos = new TProfile("fCMESameQPos", "; centrality percentile; #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", nCenB, cenBins);
429 
430  fCMESameQNeg = new TProfile("fCMESameQNeg", "; centrality percentile; #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", nCenB, cenBins);
432 
433  fCMEOppQ = new TProfile("fCMEOppQ", "; centrality percentile; #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", nCenB, cenBins);
434  fListOfObjects->Add(fCMEOppQ);
435 
436 
437  fCMESameQPosCos = new TProfile("fCMESameQPosCos", "; centrality percentile; #LT cos(#varphi_1)cos(#varphi_2) #GT", nCenB, cenBins);
439 
440  fCMESameQPosSin = new TProfile("fCMESameQPosSin", "; centrality percentile; #LT sin(#varphi_{1})sin(#varphi_{2}) #GT", nCenB, cenBins);
442 
443  fCMESameQPosv1 = new TProfile("fCMESameQPosv1", "; centrality percentile; #LT cos(#varphi_{1} - #varphi_{2}) #GT", nCenB, cenBins);
445 
446 
447  fCMESameQNegCos = new TProfile("fCMESameQNegCos", "; centrality percentile; #LT cos(#varphi_{1})cos(#varphi_{2}) #GT", nCenB, cenBins);
449 
450  fCMESameQNegSin = new TProfile("fCMESameQNegSin", "; centrality percentile; #LT sin(#varphi_{1})sin(#varphi_{2}) #GT", nCenB, cenBins);
452 
453  fCMESameQNegv1 = new TProfile("fCMESameQNegv1", "; centrality percentile; #LT cos(#varphi_{1} - #varphi_{2}) #GT", nCenB, cenBins);
455 
456 
457  fCMEOppQCos = new TProfile("fCMEOppQCos", "; centrality percentile; #LT cos(#varphi_{1})cos(#varphi_{2}) #GT", nCenB, cenBins);
459 
460  fCMEOppQSin = new TProfile("fCMEOppQSin", "; centrality percentile; #LT sin(#varphi_{1})sin(#varphi_{2}) #GT", nCenB, cenBins);
462 
463  fCMEOppQv1 = new TProfile("fCMEOppQv1", "; centrality percentile; #LT cos(#varphi_{1} - #varphi_{2}) #GT", nCenB, cenBins);
465 
466 
467  for (Int_t i = 0 ; i < 10; i++){
468 
469  fV2Aqc2[i] = new TProfile(Form("fV2Aqc2_%d", i), "; centrality percentile; v_{2}{EP V0A}", nCenB, cenBins);
470  fListOfObjects->Add(fV2Aqc2[i]);
471 
472  fV0AV0Cv2qc2[i] = new TProfile(Form("fV0AV0Cv2qc2_%d", i), "; centrality percentile; V0A-V0C correlations", nCenB, cenBins);
473  fListOfObjects->Add(fV0AV0Cv2qc2[i]);
474 
475  fV0ATPCv2qc2[i] = new TProfile(Form("fV0ATPCv2qc2_%d", i), "; centrality percentile; V0A-TPC correlations", nCenB, cenBins);
476  fListOfObjects->Add(fV0ATPCv2qc2[i]);
477 
478  fV0CTPCv2qc2[i] = new TProfile(Form("fV0CTPCv2qc2_%d", i), "; centrality percentile; V0C-TPC correlations", nCenB, cenBins);
479  fListOfObjects->Add(fV0CTPCv2qc2[i]);
480 
481 
482 
483  fCMESameQPosqc2[i] = new TProfile(Form("fCMESameQPosqc2_%d", i), "; centrality percentile; #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", nCenB, cenBins);
485 
486  fCMESameQNegqc2[i] = new TProfile(Form("fCMESameQNegqc2_%d", i), "; centrality percentile; #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", nCenB, cenBins);
488 
489  fCMEOppQqc2[i] = new TProfile(Form("fCMEOppQqc2_%d", i), "; centrality percentile; #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", nCenB, cenBins);
490  fListOfObjects->Add(fCMEOppQqc2[i]);
491 
492 
493  fCMESameQPosCosqc2[i] = new TProfile(Form("fCMESameQPosCosqc2_%d", i), "; centrality percentile; #LT cos(#varphi_{1})cos(#varphi_{2}) #GT", nCenB, cenBins);
495 
496  fCMESameQPosSinqc2[i] = new TProfile(Form("fCMESameQPosSinqc2_%d", i), "; centrality percentile; #LT sin(#varphi_{1})sin(#varphi_{2}) #GT", nCenB, cenBins);
498 
499  fCMESameQPosv1qc2[i] = new TProfile(Form("fCMESameQPosv1qc2_%d", i), "; centrality percentile; #LT cos(#varphi_{1} - #varphi_{2}) #GT", nCenB, cenBins);
501 
502 
503  fCMESameQNegCosqc2[i] = new TProfile(Form("fCMESameQNegCosqc2_%d", i), "; centrality percentile; #LT cos(#varphi_{1})cos(#varphi_{2}) #GT", nCenB, cenBins);
505 
506  fCMESameQNegSinqc2[i] = new TProfile(Form("fCMESameQNegSinqc2_%d", i), "; centrality percentile; #LT sin(#varphi_{1})sin(#varphi_{2}) #GT", nCenB, cenBins);
508 
509  fCMESameQNegv1qc2[i] = new TProfile(Form("fCMESameQNegv1qc2_%d", i), "; centrality percentile; #LT cos(#varphi_{1} - #varphi_{2}) #GT", nCenB, cenBins);
511 
512 
513  fCMEOppQCosqc2[i] = new TProfile(Form("fCMEOppQCosqc2_%d", i), "; centrality percentile; #LT cos(#varphi_{1})cos(#varphi_{2}) #GT", nCenB, cenBins);
515 
516  fCMEOppQSinqc2[i] = new TProfile(Form("fCMEOppQSinqc2_%d", i), "; centrality percentile; #LT sin(#varphi_{1})sin(#varphi_{2}) #GT", nCenB, cenBins);
518 
519  fCMEOppQv1qc2[i] = new TProfile(Form("fCMEOppQv1qc2_%d", i), "; centrality percentile; #LT cos(#varphi_{1} - #varphi_{2}) #GT", nCenB, cenBins);
520  fListOfObjects->Add(fCMEOppQv1qc2[i]);
521 
522 
523 
524  if (i < 9){
525 
526  fV2Pt[i] = new TProfile(Form("fV2Pt_%d", i), "; p_{T} (GeV/c); v_{2}", nPtB, ptBins);
527  fListOfObjects->Add(fV2Pt[i]);
528 
529  fCMESameQPosEta[i] = new TProfile(Form("fCMESameQPosEta_%d", i), "; #Delta#eta = |#eta_{1} - #eta_{2}|; #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", 8, 0, 1.6);
531 
532  fCMESameQPosPtDif[i] = new TProfile(Form("fCMESameQPosPtDif_%d", i), "; |p_{T}^{1} - p_{T}^{2}| (GeV/c); #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", 7, 0, 2.8);
534 
535  fCMESameQPosPtSum[i] = new TProfile(Form("fCMESameQPosPtSum_%d", i), "; (p_{T}^{1} + p_{T}^{2})/2 (GeV/c); #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", 7, 0, 2.8);
537 
538 
539  fCMESameQNegEta[i] = new TProfile(Form("fCMESameQNegEta_%d", i), "; #Delta#eta = |#eta_{1} - #eta_{2}|; #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", 8, 0, 1.6);
541 
542  fCMESameQNegPtDif[i] = new TProfile(Form("fCMESameQNegPtDif_%d", i), "; |p_{T}^{1} - p_{T}^{2}| (GeV/c); #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", 7, 0, 2.8);
544 
545  fCMESameQNegPtSum[i] = new TProfile(Form("fCMESameQNegPtSum_%d", i), "; (p_{T}^{1} + p_{T}^{2})/2 (GeV/c); #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", 7, 0, 2.8);
547 
548 
549  fCMEOppQEta[i] = new TProfile(Form("fCMEOppQEta_%d", i), "; #Delta#eta = |#eta_{1} - #eta_{2}|; #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", 8, 0, 1.6);
550  fListOfObjects->Add(fCMEOppQEta[i]);
551 
552  fCMEOppQPtDif[i] = new TProfile(Form("fCMEOppQPtDif_%d", i), "; |p_{T}^{1} - p_{T}^{2}| (GeV/c); #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", 7, 0, 2.8);
553  fListOfObjects->Add(fCMEOppQPtDif[i]);
554 
555  fCMEOppQPtSum[i] = new TProfile(Form("fCMEOppQPtSum_%d", i), "; (p_{T}^{1} + p_{T}^{2})/2 (GeV/c); #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", 7, 0, 2.8);
556  fListOfObjects->Add(fCMEOppQPtSum[i]);
557 
558 
559  if (fQAV0){
560 
561  fPsiA[i] = new TH1D(Form("fPsiA_%d", i), "; #Psi_{n} (V0A); Counts", 80, -2., 2.);
562  fListOfObjects->Add(fPsiA[i]);
563 
564  fPsiC[i] = new TH1D(Form("fPsiC_%d", i), "; #Psi_{n} (V0C); Counts", 80, -2., 2.);
565  fListOfObjects->Add(fPsiC[i]);
566 
567  fPsiAvsPsiC[i] = new TH2D(Form("fPsiAvsPsiC_%d", i), "; #Psi_{n} (V0A); #Psi_{n} (V0C)", 36, -1.8, 1.8, 36, -1.8, 1.8);
568  fListOfObjects->Add(fPsiAvsPsiC[i]);
569 
570  }
571 
572 
573 
574  for (Int_t j = 0; j < 10; j++){
575 
576  fV2Ptqc2[i][j] = new TProfile(Form("fV2Ptqc2_%d_%d", i, j), "; p_{T} (GeV/c); v_{2}", nPtB, ptBins);
577  fListOfObjects->Add(fV2Ptqc2[i][j]);
578 
579  fCMESameQPosEtaqc2[i][j] = new TProfile(Form("fCMESameQPosEtaqc2_%d_%d", i, j), "; #Delta#eta = |#eta_{1} - #eta_{2}|; #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", 8, 0, 1.6);
581 
582  fCMESameQPosPtDifqc2[i][j] = new TProfile(Form("fCMESameQPosPtDifqc2_%d_%d", i, j), "; |p_{T}^{1} - p_{T}^{2}| (GeV/c); #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", 7, 0, 2.8);
584 
585  fCMESameQPosPtSumqc2[i][j] = new TProfile(Form("fCMESameQPosPtSumqc2_%d_%d", i, j), "; (p_{T}^{1} + p_{T}^{2})/2 (GeV/c); #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", 7, 0, 2.8);
587 
588 
589  fCMESameQNegEtaqc2[i][j] = new TProfile(Form("fCMESameQNegEtaqc2_%d_%d", i, j), "; #Delta#eta = |#eta_{1} - #eta_{2}|; #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", 8, 0, 1.6);
591 
592  fCMESameQNegPtDifqc2[i][j] = new TProfile(Form("fCMESameQNegPtDifqc2_%d_%d", i, j), "; |p_{T}^{1} - p_{T}^{2}| (GeV/c); #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", 7, 0, 2.8);
594 
595  fCMESameQNegPtSumqc2[i][j] = new TProfile(Form("fCMESameQNegPtSumqc2_%d_%d", i, j), "; (p_{T}^{1} + p_{T}^{2})/2 (GeV/c); #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", 7, 0, 2.8);
597 
598 
599  fCMEOppQEtaqc2[i][j] = new TProfile(Form("fCMEOppQEtaqc2_%d_%d", i, j), "; #Delta#eta = |#eta_{1} - #eta_{2}|; #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", 8, 0, 1.6);
600  fListOfObjects->Add(fCMEOppQEtaqc2[i][j]);
601 
602  fCMEOppQPtDifqc2[i][j] = new TProfile(Form("fCMEOppQPtDifqc2_%d_%d", i, j), "; |p_{T}^{1} - p_{T}^{2}| (GeV/c); #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", 7, 0, 2.8);
603  fListOfObjects->Add(fCMEOppQPtDifqc2[i][j]);
604 
605  fCMEOppQPtSumqc2[i][j] = new TProfile(Form("fCMEOppQPtSumqc2_%d_%d", i, j), "; (p_{T}^{1} + p_{T}^{2})/2 (GeV/c); #LT cos(#varphi_{1} + #varphi_{2} - 2*#Psi_{2}) #GT", 7, 0, 2.8);
606  fListOfObjects->Add(fCMEOppQPtSumqc2[i][j]);
607 
608  }
609 
610  }
611 
612  }
613 
614 
615  // Post output data.
616  PostData(1, fListOfObjects);
617 }
618 
619 //______________________________________________________________________________
621 {
622  // Main loop
623  // Called for each event
624  fAOD = dynamic_cast<AliAODEvent*>(InputEvent());
625  if(!fAOD || !fAOD->GetHeader()){
626  Printf("%s:%d AODEvent not found in Input Manager",(char*)__FILE__,__LINE__);
627  this->Dump();
628  return;
629  }
630 
631  Int_t run = fAOD->GetRunNumber();
632  if(run != fRun){
633  // Load the calibrations run dependent
634  OpenInfoCalbration(run);
635  fRun = run;
636  }
637 
638  Float_t zvtx = GetVertex(fAOD);
639 
640  if(zvtx< -990){
641  fVtx->Fill(0);
642  } else {
643  fVtx->Fill(1);
644  fVtxBeforeCuts->Fill(zvtx);
645  if (TMath::Abs(zvtx) < fVtxCut) {
647 
648  if (fPileUp){
649 
650  if (plpMV(fAOD))
651  return;
652 
653  if (((AliAODHeader*)fAOD->GetHeader())->GetRefMultiplicityComb08() < 0)
654  return;
655 
656  if ((fLHC10h) && ((fFilterbit == 128) || (fFilterbit == 1)) && ((Float_t(GetTPCMult(fAOD)) < (-40.3+1.22*GetGlobalMult(fAOD))) || (Float_t(GetTPCMult(fAOD)) > (32.1+1.59*GetGlobalMult(fAOD))) ) )
657  return;
658 
659  if ((!fLHC10h) && ((fFilterbit == 128) || (fFilterbit == 1)) && ((Float_t(GetTPCMult(fAOD)) < (-36.73+1.48*GetGlobalMult(fAOD))) || (Float_t(GetTPCMult(fAOD)) > (62.87+1.78*GetGlobalMult(fAOD))) ) )
660  return;
661 
662  }
663 
665  Analyze(fAOD, zvtx);
666  fVtxAfterCuts->Fill(zvtx);
667 
668  }
669 
670  }
671 
672  // Post output data.
673  PostData(1, fListOfObjects);
674 }
675 
676 //________________________________________________________________________
678 {
679 
680 
681  AliCentrality* centrality = ((AliAODHeader*)aod->GetHeader())->GetCentralityP();
682  if (!centrality){
683  //Printf("No centrality - abort \n");
684  return;
685  }
686  Double_t centTrk = centrality->GetCentralityPercentile("TRK");
687  Double_t centV0 = centrality->GetCentralityPercentile("V0M");
688  Double_t centSPD = centrality->GetCentralityPercentile("CL1");
689 
690  if (TMath::Abs(centV0 - centTrk) > 7.5 || centV0 >= 80 || centV0 <= 0)
691  return;
692 
693 
694  Int_t iCentV0 = (Int_t)centV0;
695 
696  if (fCent == 1)
697  centV0 = centTrk;
698  else if (fCent == 2)
699  centV0 = centSPD;
700 
701  Int_t iCentSPD = (Int_t)centSPD;
702  if (iCentSPD >= 90)
703  return;
704 
705  Short_t centrCode = -10;
706  if ((centV0 > 0) && (centV0 < 5.))
707  centrCode = 0;
708  else if ((centV0 >= 5.) && (centV0 < 10.))
709  centrCode = 1;
710  else if ((centV0 >= 10.) && (centV0 < 20.))
711  centrCode = 2;
712  else if ((centV0 >= 20.) && (centV0 < 30.))
713  centrCode = 3;
714  else if ((centV0 >= 30.) && (centV0 < 40.))
715  centrCode = 4;
716  else if ((centV0 >= 40.) && (centV0 < 50.))
717  centrCode = 5;
718  else if ((centV0 >= 50.) && (centV0 < 60.))
719  centrCode = 6;
720  else if ((centV0 >= 60.) && (centV0 < 70.))
721  centrCode = 7;
722  else if ((centV0 >= 70.) && (centV0 < 80.))
723  centrCode = 8;
724 
725  if (centrCode < 0)
726  return;
727 
728 
729  //V0 info
730  Double_t Qxa2 = 0, Qya2 = 0;
731  Double_t Qxc2 = 0, Qyc2 = 0;
732  Double_t sumMa = 0, sumMc = 0;
733 
734  AliAODVZERO* aodV0 = aod->GetVZEROData();
735 
736  for (Int_t iV0 = 0; iV0 < 64; iV0++) {
737 
738  Double_t phiV0 = TMath::PiOver4()*(0.5 + iV0 % 8);
739 
740  Float_t multv0 = aodV0->GetMultiplicity(iV0);
741 
742  if (iV0 < 32){
743 
744  Double_t multCorC = -10;
745 
746  if (iV0 < 8)
747  multCorC = multv0/fMultV0->GetBinContent(iV0+1)*fMultV0->GetBinContent(1);
748  else if (iV0 >= 8 && iV0 < 16)
749  multCorC = multv0/fMultV0->GetBinContent(iV0+1)*fMultV0->GetBinContent(9);
750  else if (iV0 >= 16 && iV0 < 24)
751  multCorC = multv0/fMultV0->GetBinContent(iV0+1)*fMultV0->GetBinContent(17);
752  else if (iV0 >= 24 && iV0 < 32)
753  multCorC = multv0/fMultV0->GetBinContent(iV0+1)*fMultV0->GetBinContent(25);
754 
755  if (multCorC < 0){
756  //cout<<"Problem with multiplicity in V0C"<<endl;
757  continue;
758  }
759 
760  Qxc2 += TMath::Cos(2.*phiV0) * multCorC;
761  Qyc2 += TMath::Sin(2.*phiV0) * multCorC;
762 
763  sumMc = sumMc + multCorC;
764 
765  } else {
766 
767  Double_t multCorA = -10;
768 
769  if (iV0 >= 32 && iV0 < 40)
770  multCorA = multv0/fMultV0->GetBinContent(iV0+1)*fMultV0->GetBinContent(33);
771  else if (iV0 >= 40 && iV0 < 48)
772  multCorA = multv0/fMultV0->GetBinContent(iV0+1)*fMultV0->GetBinContent(41);
773  else if (iV0 >= 48 && iV0 < 56)
774  multCorA = multv0/fMultV0->GetBinContent(iV0+1)*fMultV0->GetBinContent(49);
775  else if (iV0 >= 56 && iV0 < 64)
776  multCorA = multv0/fMultV0->GetBinContent(iV0+1)*fMultV0->GetBinContent(57);
777 
778  if (multCorA < 0){
779  //cout<<"Problem with multiplicity in V0A"<<endl;
780  continue;
781  }
782 
783  Qxa2 += TMath::Cos(2.*phiV0) * multCorA;
784  Qya2 += TMath::Sin(2.*phiV0) * multCorA;
785 
786  sumMa = sumMa + multCorA;
787 
788  }
789  }
790 
791 
792  if (sumMa <= 0 || sumMc <= 0)
793  return;
794 
795 
796  Double_t Qxa2Cor = (Qxa2 - fQx2mV0A->GetBinContent(iCentSPD+1))/fQx2sV0A->GetBinContent(iCentSPD+1);
797  Double_t Qya2Cor = (Qya2 - fQy2mV0A->GetBinContent(iCentSPD+1))/fQy2sV0A->GetBinContent(iCentSPD+1);
798  Double_t Qxc2Cor = (Qxc2 - fQx2mV0C->GetBinContent(iCentSPD+1))/fQx2sV0C->GetBinContent(iCentSPD+1);
799  Double_t Qyc2Cor = (Qyc2 - fQy2mV0C->GetBinContent(iCentSPD+1))/fQy2sV0C->GetBinContent(iCentSPD+1);
800 
801  Double_t evPlAngV0A = TMath::ATan2(Qya2Cor, Qxa2Cor)/2.;
802  Double_t evPlAngV0C = TMath::ATan2(Qyc2Cor, Qxc2Cor)/2.;
803 
804 
805  if (fQAV0){
806 
807  fPsiA[centrCode]->Fill(evPlAngV0A);
808  fPsiC[centrCode]->Fill(evPlAngV0C);
809  fPsiAvsPsiC[centrCode]->Fill(evPlAngV0A, evPlAngV0C);
810 
811  fQxavsV0Bef->Fill(centV0, Qxa2);
812  fQyavsV0Bef->Fill(centV0, Qya2);
813  fQxcvsV0Bef->Fill(centV0, Qxc2);
814  fQycvsV0Bef->Fill(centV0, Qyc2);
815 
816  fQxavsVtxZBef->Fill(vtxZ, Qxa2);
817  fQyavsVtxZBef->Fill(vtxZ, Qya2);
818  fQxcvsVtxZBef->Fill(vtxZ, Qxc2);
819  fQycvsVtxZBef->Fill(vtxZ, Qyc2);
820 
821  fQxavsV0Aft->Fill(centV0, Qxa2Cor);
822  fQyavsV0Aft->Fill(centV0, Qya2Cor);
823  fQxcvsV0Aft->Fill(centV0, Qxc2Cor);
824  fQycvsV0Aft->Fill(centV0, Qyc2Cor);
825 
826  fQxavsVtxZAft->Fill(vtxZ, Qxa2Cor);
827  fQyavsVtxZAft->Fill(vtxZ, Qya2Cor);
828  fQxcvsVtxZAft->Fill(vtxZ, Qxc2Cor);
829  fQycvsVtxZAft->Fill(vtxZ, Qyc2Cor);
830 
831  }
832 
833 
834  Double_t Qxc2Corese = Qxc2 - fQx2mV0C->GetBinContent(iCentSPD+1);
835  Double_t Qyc2Corese = Qyc2 - fQy2mV0C->GetBinContent(iCentSPD+1);
836 
837  Double_t qc2 = TMath::Sqrt((Qxc2Corese*Qxc2Corese + Qyc2Corese*Qyc2Corese)/sumMc);
838 
839  Double_t percqc2 = 100.*fSplQ2c[iCentV0]->Eval(qc2);
840  Short_t percCqc2 = GetPercCode(percqc2);
841  if (percCqc2 < 0){
842  //Printf("Problem with percentile: negative code! \n");
843  return;
844  }
845 
846  fPercqc2->Fill(centV0, percqc2);
847 
848 
849  const Int_t nAODTracks = aod->GetNumberOfTracks();
850 
851  AliAODTrack* trkV[nAODTracks];
852  Double_t Qxt2 = 0, Qyt2 = 0;
853  Int_t sumMt = 0;
854 
855 
856  for (Int_t it1 = 0; it1 < nAODTracks; it1++) {
857 
858  AliAODTrack* aodTrk1 = (AliAODTrack*)aod->GetTrack(it1);
859 
860  if (!aodTrk1){
861  delete aodTrk1;
862  continue;
863  }
864 
865  if (!(aodTrk1->TestFilterBit(fFilterbit)))
866  continue;
867 
868  if ((TMath::Abs(aodTrk1->Eta()) > fEtaCut) || (aodTrk1->GetTPCNcls() < fNoClus) || (aodTrk1->Pt() < fMinPt) || (aodTrk1->Pt() > fMaxPt))
869  continue;
870 
871 
872  if (fRecEff){
873 
874  Double_t eff = -1.;
875  if (aodTrk1->Pt() < 3.5)
876  eff = fFitRecLow->Eval(aodTrk1->Pt());
877  else
878  eff = fFitRecHigh->Eval(aodTrk1->Pt());
879 
880  if (eff < 0){
881  cout<<"Problem with reconstruction efficiency"<<endl;
882  continue;
883  }
884 
885  Double_t rnd = gRandom->Rndm();
886  Double_t minRec = fFitRecLow->Eval(0.2);
887 
888  if (rnd > minRec/eff){
889  //cout<<"Track rejected: "<<it1<<" from "<<nAODTracks<<endl;
890  continue;
891  }
892 
893  }
894 
895 
896  trkV[sumMt] = aodTrk1;
897 
898  Qxt2 += TMath::Cos(2.*aodTrk1->Phi());
899  Qyt2 += TMath::Sin(2.*aodTrk1->Phi());
900 
901  sumMt++;
902 
903  Double_t v2a = TMath::Cos(2.*(aodTrk1->Phi() - evPlAngV0A));
904  fV2A->Fill(centV0, v2a);
905  fV2Pt[centrCode]->Fill(aodTrk1->Pt(), v2a);
906  fV2Aqc2[percCqc2]->Fill(centV0, v2a);
907  fV2Ptqc2[centrCode][percCqc2]->Fill(aodTrk1->Pt(), v2a);
908 
909  if (fTrkQA){
910 
911  Double_t allQA[5] = {Double_t(centrCode),
912  aodTrk1->Pt(),
913  Double_t(aodTrk1->Charge()),
914  aodTrk1->Eta(),
915  aodTrk1->Phi()};
916  fAllQA->Fill(allQA);
917  }
918 
919  }
920 
921 
922  Double_t evPlAngTPC = TMath::ATan2(Qyt2, Qxt2)/2.;
923 
924 
925  fV0AV0Cv2->Fill(centV0, TMath::Cos(2.*(evPlAngV0A - evPlAngV0C)));
926  fV0ATPCv2->Fill(centV0, TMath::Cos(2.*(evPlAngV0A - evPlAngTPC)));
927  fV0CTPCv2->Fill(centV0, TMath::Cos(2.*(evPlAngV0C - evPlAngTPC)));
928 
929  fV0AV0Cv2qc2[percCqc2]->Fill(centV0, TMath::Cos(2.*(evPlAngV0A - evPlAngV0C)));
930  fV0ATPCv2qc2[percCqc2]->Fill(centV0, TMath::Cos(2.*(evPlAngV0A - evPlAngTPC)));
931  fV0CTPCv2qc2[percCqc2]->Fill(centV0, TMath::Cos(2.*(evPlAngV0C - evPlAngTPC)));
932 
933 
934 
935  for (Int_t it = 0; it < sumMt-1; it++){
936 
937  for (Int_t jt = it+1; jt < sumMt; jt++){
938 
939  if (trkV[it]->Charge() > 0 && trkV[jt]->Charge() > 0){
940 
941  fCMESameQPos->Fill(centV0, TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
942  fCMESameQPosqc2[percCqc2]->Fill(centV0, TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
943 
944  fCMESameQPosCos->Fill(centV0, TMath::Cos(trkV[it]->Phi() - evPlAngV0A)*TMath::Cos(trkV[jt]->Phi() - evPlAngV0A));
945  fCMESameQPosCosqc2[percCqc2]->Fill(centV0, TMath::Cos(trkV[it]->Phi() - evPlAngV0A)*TMath::Cos(trkV[jt]->Phi() - evPlAngV0A));
946 
947  fCMESameQPosSin->Fill(centV0, TMath::Sin(trkV[it]->Phi() - evPlAngV0A)*TMath::Sin(trkV[jt]->Phi() - evPlAngV0A));
948  fCMESameQPosSinqc2[percCqc2]->Fill(centV0, TMath::Sin(trkV[it]->Phi() - evPlAngV0A)*TMath::Sin(trkV[jt]->Phi() - evPlAngV0A));
949 
950  fCMESameQPosv1->Fill(centV0, TMath::Cos(trkV[it]->Phi() - trkV[jt]->Phi()));
951  fCMESameQPosv1qc2[percCqc2]->Fill(centV0, TMath::Cos(trkV[it]->Phi() - trkV[jt]->Phi()));
952 
953 
954  fCMESameQPosEta[centrCode]->Fill(TMath::Abs(trkV[it]->Eta() - trkV[jt]->Eta()), TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
955  fCMESameQPosPtDif[centrCode]->Fill(TMath::Abs(trkV[it]->Pt() - trkV[jt]->Pt()), TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
956  fCMESameQPosPtSum[centrCode]->Fill((trkV[it]->Pt() + trkV[jt]->Pt())/2., TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
957 
958 
959  fCMESameQPosEtaqc2[centrCode][percCqc2]->Fill(TMath::Abs(trkV[it]->Eta() - trkV[jt]->Eta()), TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
960  fCMESameQPosPtDifqc2[centrCode][percCqc2]->Fill(TMath::Abs(trkV[it]->Pt() - trkV[jt]->Pt()), TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
961  fCMESameQPosPtSumqc2[centrCode][percCqc2]->Fill((trkV[it]->Pt() + trkV[jt]->Pt())/2., TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
962 
963  }
964 
965 
966  if (trkV[it]->Charge() < 0 && trkV[jt]->Charge() < 0){
967 
968  fCMESameQNeg->Fill(centV0, TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
969  fCMESameQNegqc2[percCqc2]->Fill(centV0, TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
970 
971  fCMESameQNegCos->Fill(centV0, TMath::Cos(trkV[it]->Phi() - evPlAngV0A)*TMath::Cos(trkV[jt]->Phi() - evPlAngV0A));
972  fCMESameQNegCosqc2[percCqc2]->Fill(centV0, TMath::Cos(trkV[it]->Phi() - evPlAngV0A)*TMath::Cos(trkV[jt]->Phi() - evPlAngV0A));
973 
974  fCMESameQNegSin->Fill(centV0, TMath::Sin(trkV[it]->Phi() - evPlAngV0A)*TMath::Sin(trkV[jt]->Phi() - evPlAngV0A));
975  fCMESameQNegSinqc2[percCqc2]->Fill(centV0, TMath::Sin(trkV[it]->Phi() - evPlAngV0A)*TMath::Sin(trkV[jt]->Phi() - evPlAngV0A));
976 
977  fCMESameQNegv1->Fill(centV0, TMath::Cos(trkV[it]->Phi() - trkV[jt]->Phi()));
978  fCMESameQNegv1qc2[percCqc2]->Fill(centV0, TMath::Cos(trkV[it]->Phi() - trkV[jt]->Phi()));
979 
980 
981  fCMESameQNegEta[centrCode]->Fill(TMath::Abs(trkV[it]->Eta() - trkV[jt]->Eta()), TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
982  fCMESameQNegPtDif[centrCode]->Fill(TMath::Abs(trkV[it]->Pt() - trkV[jt]->Pt()), TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
983  fCMESameQNegPtSum[centrCode]->Fill((trkV[it]->Pt() + trkV[jt]->Pt())/2., TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
984 
985 
986  fCMESameQNegEtaqc2[centrCode][percCqc2]->Fill(TMath::Abs(trkV[it]->Eta() - trkV[jt]->Eta()), TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
987  fCMESameQNegPtDifqc2[centrCode][percCqc2]->Fill(TMath::Abs(trkV[it]->Pt() - trkV[jt]->Pt()), TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
988  fCMESameQNegPtSumqc2[centrCode][percCqc2]->Fill((trkV[it]->Pt() + trkV[jt]->Pt())/2., TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
989 
990  }
991 
992 
993 
994  if ((trkV[it]->Charge() < 0 && trkV[jt]->Charge() > 0) || (trkV[it]->Charge() > 0 && trkV[jt]->Charge() < 0)){
995 
996  fCMEOppQ->Fill(centV0, TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
997  fCMEOppQqc2[percCqc2]->Fill(centV0, TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
998 
999  fCMEOppQCos->Fill(centV0, TMath::Cos(trkV[it]->Phi() - evPlAngV0A)*TMath::Cos(trkV[jt]->Phi() - evPlAngV0A));
1000  fCMEOppQCosqc2[percCqc2]->Fill(centV0, TMath::Cos(trkV[it]->Phi() - evPlAngV0A)*TMath::Cos(trkV[jt]->Phi() - evPlAngV0A));
1001 
1002  fCMEOppQSin->Fill(centV0, TMath::Sin(trkV[it]->Phi() - evPlAngV0A)*TMath::Sin(trkV[jt]->Phi() - evPlAngV0A));
1003  fCMEOppQSinqc2[percCqc2]->Fill(centV0, TMath::Sin(trkV[it]->Phi() - evPlAngV0A)*TMath::Sin(trkV[jt]->Phi() - evPlAngV0A));
1004 
1005  fCMEOppQv1->Fill(centV0, TMath::Cos(trkV[it]->Phi() - trkV[jt]->Phi()));
1006  fCMEOppQv1qc2[percCqc2]->Fill(centV0, TMath::Cos(trkV[it]->Phi() - trkV[jt]->Phi()));
1007 
1008 
1009  fCMEOppQEta[centrCode]->Fill(TMath::Abs(trkV[it]->Eta() - trkV[jt]->Eta()), TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
1010  fCMEOppQPtDif[centrCode]->Fill(TMath::Abs(trkV[it]->Pt() - trkV[jt]->Pt()), TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
1011  fCMEOppQPtSum[centrCode]->Fill((trkV[it]->Pt() + trkV[jt]->Pt())/2., TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
1012 
1013 
1014  fCMEOppQEtaqc2[centrCode][percCqc2]->Fill(TMath::Abs(trkV[it]->Eta() - trkV[jt]->Eta()), TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
1015  fCMEOppQPtDifqc2[centrCode][percCqc2]->Fill(TMath::Abs(trkV[it]->Pt() - trkV[jt]->Pt()), TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
1016  fCMEOppQPtSumqc2[centrCode][percCqc2]->Fill((trkV[it]->Pt() + trkV[jt]->Pt())/2., TMath::Cos(trkV[it]->Phi() + trkV[jt]->Phi() - 2.*evPlAngV0A));
1017 
1018  }
1019 
1020  }
1021  }
1022 
1023 }
1024 
1025 //_____________________________________________________________________________
1027 {
1028 
1029  if (!gGrid) {
1030  TGrid::Connect("alien://");
1031  }
1032 
1033  TFile* foadb = TFile::Open("alien:///alice/cern.ch/user/a/adobrin/calibV0Run1.root");
1034 
1035  if(!foadb){
1036  printf("OADB V0 calibration file cannot be opened\n");
1037  return;
1038  }
1039 
1040  AliOADBContainer* cont = (AliOADBContainer*) foadb->Get("hMultV0BefCorPfpx");
1041  if(!cont){
1042  printf("OADB object hMultV0BefCorr is not available in the file\n");
1043  return;
1044  }
1045  if(!(cont->GetObject(run))){
1046  printf("OADB object hMultV0BefCorPfpx is not available for run %i\n", run);
1047  return;
1048  }
1049  fMultV0 = ((TH1D*) cont->GetObject(run));
1050 
1051 
1052 
1053  AliOADBContainer* contQx2am = (AliOADBContainer*) foadb->Get("fqxa2m");
1054  if(!contQx2am){
1055  printf("OADB object fqxa2m is not available in the file\n");
1056  return;
1057  }
1058  if(!(contQx2am->GetObject(run))){
1059  printf("OADB object fqxa2m is not available for run %i\n", run);
1060  return;
1061  }
1062  fQx2mV0A = ((TH1D*) contQx2am->GetObject(run));
1063 
1064 
1065  AliOADBContainer* contQy2am = (AliOADBContainer*) foadb->Get("fqya2m");
1066  if(!contQy2am){
1067  printf("OADB object fqya2m is not available in the file\n");
1068  return;
1069  }
1070  if(!(contQy2am->GetObject(run))){
1071  printf("OADB object fqya2m is not available for run %i\n", run);
1072  return;
1073  }
1074  fQy2mV0A = ((TH1D*) contQy2am->GetObject(run));
1075 
1076 
1077  AliOADBContainer* contQx2as = (AliOADBContainer*) foadb->Get("fqxa2s");
1078  if(!contQx2as){
1079  printf("OADB object fqxa2s is not available in the file\n");
1080  return;
1081  }
1082  if(!(contQx2as->GetObject(run))){
1083  printf("OADB object fqxa2s is not available for run %i\n", run);
1084  return;
1085  }
1086  fQx2sV0A = ((TH1D*) contQx2as->GetObject(run));
1087 
1088 
1089  AliOADBContainer* contQy2as = (AliOADBContainer*) foadb->Get("fqya2s");
1090  if(!contQy2as){
1091  printf("OADB object fqya2s is not available in the file\n");
1092  return;
1093  }
1094  if(!(contQy2as->GetObject(run))){
1095  printf("OADB object fqya2s is not available for run %i\n", run);
1096  return;
1097  }
1098  fQy2sV0A = ((TH1D*) contQy2as->GetObject(run));
1099 
1100 
1101 
1102  AliOADBContainer* contQx2cm = (AliOADBContainer*) foadb->Get("fqxc2m");
1103  if(!contQx2cm){
1104  printf("OADB object fqxc2m is not available in the file\n");
1105  return;
1106  }
1107  if(!(contQx2cm->GetObject(run))){
1108  printf("OADB object fqxc2m is not available for run %i\n", run);
1109  return;
1110  }
1111  fQx2mV0C = ((TH1D*) contQx2cm->GetObject(run));
1112 
1113 
1114  AliOADBContainer* contQy2cm = (AliOADBContainer*) foadb->Get("fqyc2m");
1115  if(!contQy2cm){
1116  printf("OADB object fqyc2m is not available in the file\n");
1117  return;
1118  }
1119  if(!(contQy2cm->GetObject(run))){
1120  printf("OADB object fqyc2m is not available for run %i\n", run);
1121  return;
1122  }
1123  fQy2mV0C = ((TH1D*) contQy2cm->GetObject(run));
1124 
1125 
1126 
1127  AliOADBContainer* contQx2cs = (AliOADBContainer*) foadb->Get("fqxc2s");
1128  if(!contQx2cs){
1129  printf("OADB object fqxc2s is not available in the file\n");
1130  return;
1131  }
1132  if(!(contQx2cs->GetObject(run))){
1133  printf("OADB object fqxc2s is not available for run %i\n", run);
1134  return;
1135  }
1136  fQx2sV0C = ((TH1D*) contQx2cs->GetObject(run));
1137 
1138 
1139  AliOADBContainer* contQy2cs = (AliOADBContainer*) foadb->Get("fqyc2s");
1140  if(!contQy2cs){
1141  printf("OADB object fqyc2m is not available in the file\n");
1142  return;
1143  }
1144  if(!(contQy2cs->GetObject(run))){
1145  printf("OADB object fqyc2s is not available for run %i\n", run);
1146  return;
1147  }
1148  fQy2sV0C = ((TH1D*) contQy2cs->GetObject(run));
1149 
1150 }
1151 
1152 
1153 //____________________________________________________________________
1155 {
1156 
1157  Int_t multTPC = 0;
1158 
1159  AliAODEvent* aod = (AliAODEvent*)ev;
1160 
1161  const Int_t nGoodTracks = aod->GetNumberOfTracks();
1162 
1163  for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) {
1164 
1165  AliAODTrack* trackAOD = (AliAODTrack*)aod->GetTrack(iTracks);
1166 
1167  if (!trackAOD){
1168  delete trackAOD;
1169  continue;
1170  }
1171 
1172  if (!(trackAOD->TestFilterBit(1)))
1173  continue;
1174 
1175  if ((trackAOD->Pt() < fMinPt) || (trackAOD->Pt() > 5.0) || (TMath::Abs(trackAOD->Eta()) > fEtaCut) || (trackAOD->GetTPCNcls() < 70) || (trackAOD->GetDetPid()->GetTPCsignal() < 10.0))
1176  continue;
1177 
1178  multTPC++;
1179 
1180  }
1181 
1182  return multTPC;
1183 
1184 }
1185 
1186 //____________________________________________________________________
1188 {
1189 
1190  Int_t multGlobal = 0;
1191 
1192  AliAODEvent* aod = (AliAODEvent*)ev;
1193 
1194  const Int_t nGoodTracks = aod->GetNumberOfTracks();
1195 
1196  for(Int_t iTracks = 0; iTracks < nGoodTracks; iTracks++) {
1197 
1198  AliAODTrack* trackAOD = (AliAODTrack*)aod->GetTrack(iTracks);
1199 
1200  if (!trackAOD){
1201  delete trackAOD;
1202  continue;
1203  }
1204 
1205  if (!(trackAOD->TestFilterBit(16)))
1206  continue;
1207 
1208  if ((trackAOD->Pt() < fMinPt) || (trackAOD->Pt() > 5.0) || (TMath::Abs(trackAOD->Eta()) > fEtaCut) || (trackAOD->GetTPCNcls() < 70) || (trackAOD->GetDetPid()->GetTPCsignal() < 10.0) )
1209  continue;
1210 
1211 
1212  // clone for constraining
1213  Double_t b[2] = { -99., -99.};
1214  Double_t bCov[3] = { -99., -99., -99.};
1215 
1216  AliAODTrack* trackAODC = new AliAODTrack(*trackAOD);
1217  if (!trackAODC) {
1218  AliWarning("Clone of AOD track failed.");
1219  delete trackAODC;
1220  continue;
1221  }
1222 
1223  if (!trackAODC->PropagateToDCA(aod->GetPrimaryVertex(), aod->GetMagneticField(), 100., b, bCov)){
1224  delete trackAODC;
1225  continue;
1226  } else {
1227  delete trackAODC;
1228  }
1229 
1230 
1231  if ((TMath::Abs(b[0]) > 0.3) || (TMath::Abs(b[1]) > 0.3))
1232  continue;
1233 
1234  multGlobal++;
1235 
1236  }//track loop
1237 
1238  return multGlobal;
1239 
1240 }
1241 
1242 
1243 //_____________________________________________________________________________
1245 {
1246 
1247  Float_t vtxz = -999;
1248 
1249  const AliAODVertex* trkVtx = aod->GetPrimaryVertex();
1250  if (!trkVtx || trkVtx->GetNContributors()<=0)
1251  return vtxz;
1252  TString vtxTtl = trkVtx->GetTitle();
1253  if (!vtxTtl.Contains("VertexerTracks"))
1254  return vtxz;
1255  const AliAODVertex* spdVtx = aod->GetPrimaryVertexSPD();
1256  if (!spdVtx || spdVtx->GetNContributors()<=0)
1257  return vtxz;
1258  TString vtxTyp = spdVtx->GetTitle();
1259  Double_t cov[6]={0};
1260  spdVtx->GetCovarianceMatrix(cov);
1261  Double_t zRes = TMath::Sqrt(cov[5]);
1262  if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25))
1263  return vtxz;
1264  if (TMath::Abs(spdVtx->GetZ() - trkVtx->GetZ())>0.5)
1265  return vtxz;
1266 
1267  vtxz = trkVtx->GetZ();
1268 
1269  return vtxz;
1270 }
1271 
1272 //_____________________________________________________________________________
1274 {
1275 
1276  Short_t percCode = -1;
1277 
1278  if ((perc >= 0) && (perc <= 10.0))
1279  percCode = 0;
1280  else if ((perc > 10.0) && (perc <= 20.0))
1281  percCode = 1;
1282  else if ((perc > 20.0) && (perc <= 30.0))
1283  percCode = 2;
1284  else if ((perc > 30.0) && (perc <= 40.0))
1285  percCode = 3;
1286  else if ((perc > 40.0) && (perc <= 50.0))
1287  percCode = 4;
1288  else if ((perc > 50.0) && (perc <= 60.0))
1289  percCode = 5;
1290  else if ((perc > 60.0) && (perc <= 70.0))
1291  percCode = 6;
1292  else if ((perc > 70.0) && (perc <= 80.0))
1293  percCode = 7;
1294  else if ((perc > 80.0) && (perc <= 90.0))
1295  percCode = 8;
1296  else if (perc > 90.0)
1297  percCode = 9;
1298 
1299  return percCode;
1300 
1301 }
1302 
1303 //_____________________________________________________________________________
1304 Double_t AliAnalysisTaskCmeEse::GetWDist(const AliVVertex* v0, const AliVVertex* v1)
1305 {
1306 
1307  // calculate sqrt of weighted distance to other vertex
1308  if (!v0 || !v1) {
1309  printf("One of vertices is not valid\n");
1310  return 0;
1311  }
1312  static TMatrixDSym vVb(3);
1313  double dist = -1;
1314  double dx = v0->GetX()-v1->GetX();
1315  double dy = v0->GetY()-v1->GetY();
1316  double dz = v0->GetZ()-v1->GetZ();
1317  double cov0[6],cov1[6];
1318  v0->GetCovarianceMatrix(cov0);
1319  v1->GetCovarianceMatrix(cov1);
1320  vVb(0,0) = cov0[0]+cov1[0];
1321  vVb(1,1) = cov0[2]+cov1[2];
1322  vVb(2,2) = cov0[5]+cov1[5];
1323  vVb(1,0) = vVb(0,1) = cov0[1]+cov1[1];
1324  vVb(0,2) = vVb(1,2) = vVb(2,0) = vVb(2,1) = 0.;
1325  vVb.InvertFast();
1326  if (!vVb.IsValid()) {printf("Singular Matrix\n"); return dist;}
1327  dist = vVb(0,0)*dx*dx + vVb(1,1)*dy*dy + vVb(2,2)*dz*dz
1328  + 2*vVb(0,1)*dx*dy + 2*vVb(0,2)*dx*dz + 2*vVb(1,2)*dy*dz;
1329  return dist>0 ? TMath::Sqrt(dist) : -1;
1330 
1331 }
1332 
1333 
1334 //_____________________________________________________________________________
1335 Bool_t AliAnalysisTaskCmeEse::plpMV(const AliVEvent *event)
1336 {
1337  // check for multi-vertexer pile-up
1338  const AliAODEvent *aod = (const AliAODEvent*)event;
1339  const AliESDEvent *esd = (const AliESDEvent*)event;
1340  //
1341  const int kMinPlpContrib = 5;
1342  const double kMaxPlpChi2 = 5.0;
1343  const double kMinWDist = 15;
1344  //
1345  if (!aod && !esd) {
1346  printf("Event is neither of AOD nor ESD\n");
1347  exit(1);
1348  }
1349  //
1350  const AliVVertex* vtPrm = 0;
1351  const AliVVertex* vtPlp = 0;
1352  int nPlp = 0;
1353  //
1354  if (aod) {
1355  if ( !(nPlp=aod->GetNumberOfPileupVerticesTracks()) ) return kFALSE;
1356  vtPrm = aod->GetPrimaryVertex();
1357  if (vtPrm == aod->GetPrimaryVertexSPD()) return kTRUE; // there are pile-up vertices but no primary
1358  }
1359  else {
1360  if ( !(nPlp=esd->GetNumberOfPileupVerticesTracks())) return kFALSE;
1361  vtPrm = esd->GetPrimaryVertexTracks();
1362  if (((AliESDVertex*)vtPrm)->GetStatus()!=1) return kTRUE; // there are pile-up vertices but no primary
1363  }
1364 
1365  //int bcPrim = vtPrm->GetBC();
1366  //
1367  for (int ipl=0;ipl<nPlp;ipl++) {
1368  vtPlp = aod ? (const AliVVertex*)aod->GetPileupVertexTracks(ipl) : (const AliVVertex*)esd->GetPileupVertexTracks(ipl);
1369  //
1370  if (vtPlp->GetNContributors() < kMinPlpContrib) continue;
1371  if (vtPlp->GetChi2perNDF() > kMaxPlpChi2) continue;
1372  // int bcPlp = vtPlp->GetBC();
1373  // if (bcPlp!=AliVTrack::kTOFBCNA && TMath::Abs(bcPlp-bcPrim)>2) return kTRUE; // pile-up from other BC
1374  //
1375  double wDst = GetWDist(vtPrm,vtPlp);
1376  if (wDst<kMinWDist) continue;
1377  //
1378  return kTRUE; // pile-up: well separated vertices
1379  }
1380  //
1381  return kFALSE;
1382  //
1383 }
1384 
1385 //_____________________________________________________________________________
1387 {
1388  // Terminate loop
1389  Printf("Terminate()");
1390 }
TProfile * fCMESameQNegEta[9]
cme same charge pos pt sum
TProfile * fCMESameQPosEta[9]
v2 pt unbiased
double Double_t
Definition: External.C:58
TH1F * fVtxAfterCuts
Vertex z dist before cuts.
Definition: External.C:236
TProfile * fCMESameQNeg
cme same charge pos
TProfile * fV2Pt[9]
cme opp charge v1
TH2D * fQxavsV0Aft
corrected Qx V0C vtx
virtual Int_t GetGlobalMult(AliVEvent *ev) const
TH1D * fPsiA[10]
cme opp charge pt sum
TProfile * fV2A
corrected Qx V0C vtx
TProfile * fCMESameQNegPtDif[9]
cme same charge neg eta
TProfile * fCMEOppQSin
cme opp charge <cos*cos>
TProfile * fCMESameQNegPtDifqc2[9][10]
cme same charge neg ESE
virtual Float_t GetVertex(AliAODEvent *aod) const
centrality
TProfile * fCMESameQPosSin
cme same charge pos <cos*cos>
TProfile * fV0CTPCv2
correlation V0A-TPC for resolution
TProfile * fCMEOppQCos
cme same charge neg v1
TProfile * fCMEOppQv1qc2[10]
cme opp charge <sin*sin>
TProfile * fCMESameQNegCosqc2[10]
cme same charge pos v1
TProfile * fCMESameQNegSin
cme same charge neg <cos*cos>
TProfile * fCMEOppQPtSumqc2[9][10]
cme opp charge ESE
TProfile * fCMEOppQPtDifqc2[9][10]
cme opp charge ESE
TProfile * fCMESameQPosPtSumqc2[9][10]
cme same charge pos ESE
virtual void UserCreateOutputObjects()
TH2D * fQycvsVtxZBef
corrected Qx V0C vtx
TRandom * gRandom
Bool_t plpMV(const AliVEvent *event)
TH2D * fQycvsV0Bef
corrected Qx V0C cent
TProfile * fCMEOppQEtaqc2[9][10]
cme same charge neg ESE
TProfile * fCMESameQPosqc2[10]
correlation V0C-TPC for resolution ESE
TProfile * fCMESameQPos
correlation V0C-TPC for resolution
TProfile * fCMEOppQPtSum[9]
cme opp charge pt dif
TH1F * fVtxBeforeCuts
Event vertex info.
TProfile * fCMEOppQ
cme same charge neg
TH2D * fQxcvsVtxZAft
corrected Qy V0A vtx
THnSparseF * fAllQA
percentile distribution
TProfile * fCMEOppQCosqc2[10]
cme same charge neg v1
TH2D * fQycvsVtxZAft
corrected Qx V0C vtx
int Int_t
Definition: External.C:63
TProfile * fV0ATPCv2qc2[10]
correlation V0A-V0C for resolution ESE
TProfile * fCMESameQNegCos
cme same charge pos v1
TProfile * fCMEOppQPtDif[9]
cme opp charge eta
Definition: External.C:204
virtual Int_t GetTPCMult(AliVEvent *ev) const
TH2D * fQyavsVtxZAft
corrected Qx V0A vtx
TH2D * fPsiAvsPsiC[10]
Psi V0C.
TH2D * fQycvsV0Aft
corrected Qx V0C cent
float Float_t
Definition: External.C:68
TH1D * fPsiC[10]
Psi V0A.
TProfile * fV0CTPCv2qc2[10]
correlation V0A-TPC for resolution ESE
TH2D * fQxcvsV0Aft
corrected Qy V0A cent
TProfile * fCMESameQPosPtDifqc2[9][10]
cme same charge pos ESE
TProfile * fCMESameQPosSinqc2[10]
cme same charge pos <cos*cos>
TProfile * fV0AV0Cv2qc2[10]
v2 V0A ESE
Definition: External.C:228
Definition: External.C:212
TH2D * fQxavsVtxZBef
corrected Qx V0C cent
TProfile * fCMESameQPosEtaqc2[9][10]
v2 pt ESE
virtual void Analyze(AliAODEvent *aod, Float_t vtxZ)
TH2D * fPercqc2
correlation between TPC and global track multiplicity after cuts
TProfile * fCMESameQPosPtSum[9]
cme same charge pos pt dif
virtual void UserExec(Option_t *option)
TProfile * fV0ATPCv2
correlation V0A-V0C for resolution
TProfile * fCMESameQPosPtDif[9]
cme same charge pos eta
TProfile * fCMESameQPosv1
cme same charge pos <sin*sin>
TH2D * fQxavsVtxZAft
corrected Qx V0C cent
short Short_t
Definition: External.C:23
TH2D * fQxavsV0Bef
qa histo for tracks
TProfile * fCMEOppQv1
cme opp charge <sin*sin>
TProfile * fCMESameQPosCosqc2[10]
cme opp charge ESE
TH1I * fVtx
Output list of objects.
TProfile * fCMESameQNegv1
cme same charge neg <sin*sin>
TProfile * fCMEOppQSinqc2[10]
cme opp charge <cos*cos>
TProfile * fCMESameQNegPtSum[9]
cme same charge neg pt dif
TH2D * fQxcvsV0Bef
corrected Qy V0A cent
TProfile * fCMESameQNegqc2[10]
cme same charge pos ESE
TProfile * fV2Aqc2[10]
cme opp charge v1
Double_t GetWDist(const AliVVertex *v0, const AliVVertex *v1)
TH2F * fMultCorAfterCuts
correlation between TPC and global track multiplicity before cuts
TProfile * fCMESameQNegSinqc2[10]
cme same charge neg <cos*cos>
const char Option_t
Definition: External.C:48
TProfile * fCMEOppQEta[9]
cme same charge neg pt sum
TH2D * fQxcvsVtxZBef
corrected Qy V0A vtx
Short_t GetPercCode(Double_t perc) const
TProfile * fCMESameQNegv1qc2[10]
cme same charge neg <sin*sin>
bool Bool_t
Definition: External.C:53
TH2D * fQyavsV0Bef
corrected Qx V0A cent
TProfile * fCMESameQNegPtSumqc2[9][10]
cme same charge neg ESE
TProfile * fCMESameQPosv1qc2[10]
cme same charge pos <sin*sin>
TProfile * fCMEOppQqc2[10]
cme same charge neg ESE
TProfile * fV2Ptqc2[9][10]
correlation PsiA-PsiC
virtual void Terminate(Option_t *)
TH2D * fQyavsV0Aft
corrected Qx V0A cent
TProfile * fCMESameQPosCos
cme opp charge
TProfile * fCMESameQNegEtaqc2[9][10]
cme same charge pos ESE
TH2D * fQyavsVtxZBef
corrected Qx V0A vtx
TH2F * fMultCorBeforeCuts
Vertex z dist after cuts.
TList * OpenFile(const char *fname)
Definition: DrawAnaELoss.C:65