]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/Correlations/DPhi/AliAnalysisTaskDptDptQA.cxx
Update from Prabhat and Debojit
[u/mrichter/AliRoot.git] / PWGCF / Correlations / DPhi / AliAnalysisTaskDptDptQA.cxx
CommitLineData
349d46ce 1#include "TChain.h"
2#include "TList.h"
3#include "TFile.h"
4#include "TTree.h"
5#include "TH1D.h"
6#include "TH2D.h"
7#include "TH3D.h"
8#include "THnSparse.h"
9#include "TCanvas.h"
10
11#include <TROOT.h>
12#include <TChain.h>
13#include <TFile.h>
14#include <TList.h>
15#include <TMath.h>
16#include <TTree.h>
17#include <TH1F.h>
18#include <TH2F.h>
19#include <TH3F.h>
20#include <TProfile.h>
21#include <TH1D.h>
22#include <TH2D.h>
23#include <TH3D.h>
24#include <TRandom.h>
25#include "AliAnalysisManager.h"
26
27#include "AliAODHandler.h"
28#include "AliAODInputHandler.h"
29#include "AliInputEventHandler.h"
30#include "AliLog.h"
31#include "AliESDEvent.h"
32#include "AliESDInputHandler.h"
33#include "AliMultiplicity.h"
34#include "AliCentrality.h"
35#include "AliAnalysisTaskDptDptQA.h"
36
37#include "AliPID.h"
38#include "AliPIDResponse.h"
39
40#include "AliESDVertex.h"
41#include "AliESDEvent.h"
42#include "AliESDInputHandler.h"
43#include "AliAODEvent.h"
44#include "AliAODTrack.h"
45#include "AliAODInputHandler.h"
46#include "AliESD.h"
47#include "AliESDEvent.h"
48#include "AliAODEvent.h"
49#include "AliStack.h"
50#include "AliESDtrackCuts.h"
51#include "AliAODMCHeader.h"
52
53
54#include "AliGenHijingEventHeader.h"
55#include "AliGenEventHeader.h"
56#include "AliPID.h"
57#include "AliAODPid.h"
58#include "AliPIDResponse.h"
59#include "AliAODpidUtil.h"
60#include "AliPIDCombined.h"
61
62
63
64ClassImp(AliAnalysisTaskDptDptQA)
65
66AliAnalysisTaskDptDptQA::AliAnalysisTaskDptDptQA()
67: AliAnalysisTaskSE(),
68fAODEvent(0),
69fESDEvent(0), //! ESD Event
70fInputHandler(0),
71fPIDResponse(0x0),
72_outputHistoList(0),
73_twoPi ( 2.0 * 3.1415927),
74_eventCount ( 0),
75_debugLevel ( 0),
76_singlesOnly ( 0),
77_useWeights ( 0),
78_sameFilter ( false),
79_rejectPileup ( 1),
80_rejectPairConversion ( 0),
81_vertexZMin ( -10),
82_vertexZMax ( 10),
83_vertexXYMin ( -10),
84_vertexXYMax ( 10),
85_centralityMethod ( 4),
86_centralityMin ( 0.),
87_centralityMax ( 0.),
88_requestedCharge_1 ( 1),
89_requestedCharge_2 ( -1),
90_dcaZMin ( -3),
91_dcaZMax ( 3.),
92_dcaXYMin ( -2.4),
93_dcaXYMax ( 2.4),
94_dedxMin ( 0),
95_dedxMax ( 100000),
96_nClusterMin ( 80),
97_trackFilterBit (0),
98fNSigmaCut (3.),
99_field ( 1.),
100_nTracks ( 0 ),
101_mult0 ( 0 ),
102_mult1 ( 0 ),
103_mult2 ( 0 ),
104_mult3 ( 0 ),
105_mult4 ( 0 ),
106_mult4a ( 0 ),
107_mult5 ( 0 ),
108_mult6 ( 0 ),
109arraySize ( 2000),
110_id_1(0),
111_charge_1(0),
112_iEtaPhi_1(0),
113_iPt_1(0),
114_pt_1(0),
115_px_1(0),
116_py_1(0),
117_pz_1(0),
118_correction_1(0),
119_dedx_1(0),
120_id_2(0),
121_charge_2(0),
122_iEtaPhi_2(0),
123_iPt_2(0),
124_pt_2(0),
125_px_2(0),
126_py_2(0),
127_pz_2(0),
128_correction_2(0),
129_dedx_2(0),
130_correctionWeight_1(0),
131_correctionWeight_2(0),
132_nBins_M0(500), _min_M0(0), _max_M0(10000), _width_M0(20),
133_nBins_M1(500), _min_M1(0), _max_M1(10000), _width_M1(20),
134_nBins_M2(500), _min_M2(0), _max_M2(10000), _width_M2(20),
135_nBins_M3(500), _min_M3(0), _max_M3(10000), _width_M3(20),
136_nBins_M4(100), _min_M4(0), _max_M4(1), _width_M4(0.01),
137_nBins_M5(100), _min_M5(0), _max_M5(1), _width_M5(0.01),
138_nBins_M6(100), _min_M6(0), _max_M6(1), _width_M6(0.01),
139_nBins_vertexZ(40), _min_vertexZ(-10), _max_vertexZ(10), _width_vertexZ(0.5),
140
141_nBins_pt_1(18), _min_pt_1(0.2), _max_pt_1(2.0), _width_pt_1(0.1),
142_nBins_phi_1(72), _min_phi_1(0), _max_phi_1(2.*3.1415927),_width_phi_1(2.*3.1415927/72.),
143_nBins_eta_1(0), _min_eta_1(0), _max_eta_1(0), _width_eta_1(0.1),
144
145_nBins_etaPhi_1(0),
146_nBins_etaPhiPt_1(0),
147_nBins_zEtaPhiPt_1(0),
148
149_nBins_pt_2(18), _min_pt_2(0.2), _max_pt_2(2.0), _width_pt_2(0.1),
150_nBins_phi_2(72), _min_phi_2(0), _max_phi_2(2.*3.1415927),_width_phi_2(2.*3.1415927/72),
151_nBins_eta_2(0), _min_eta_2(0), _max_eta_2(0), _width_eta_2(0.1),
152
153_nBins_etaPhi_2(0),
154_nBins_etaPhiPt_2(0),
155_nBins_zEtaPhiPt_2(0),
156_nBins_etaPhi_12(0),
157__n1_1(0),
158__n1_2(0),
159__n2_12(0),
160__s1pt_1(0),
161__s1pt_2(0),
162__s2ptpt_12(0),
163__s2NPt_12(0),
164__s2PtN_12(0),
165__n1Nw_1(0),
166__n1Nw_2(0),
167__n2Nw_12(0),
168__s1ptNw_1(0),
169__s1ptNw_2(0),
170__s2ptptNw_12(0),
171__s2NPtNw_12(0),
172__s2PtNNw_12(0),
173__n1_1_vsPt(0),
174__n1_1_vsEtaPhi(0),
175__s1pt_1_vsEtaPhi(0),
176__n1_1_vsZEtaPhiPt(0),
177__n1_2_vsPt(0),
178__n1_2_vsEtaPhi(0),
179__s1pt_2_vsEtaPhi(0),
180__n1_2_vsZEtaPhiPt(0),
181__n2_12_vsPtPt(0),
182__n2_12_vsEtaPhi(0),
183__s2ptpt_12_vsEtaPhi(0),
184__s2PtN_12_vsEtaPhi(0),
185__s2NPt_12_vsEtaPhi(0),
186_weight_1 ( 0 ),
187_weight_2 ( 0 ),
188_eventAccounting ( 0),
189_m0 ( 0),
190_m1 ( 0),
191_m2 ( 0),
192_m3 ( 0),
193_m4 ( 0),
194_m5 ( 0),
195_m6 ( 0),
196_vertexZ ( 0),
197
198_Ncluster1 ( 0),
199_Ncluster2 ( 0),
200_etadis ( 0),
201_phidis ( 0),
202_dcaz ( 0),
203_dcaxy ( 0),
204_spectra ( 0),
205_n1_1_vsPt ( 0),
206_n1_1_vsEtaVsPhi ( 0),
207_s1pt_1_vsEtaVsPhi ( 0),
208_n1_1_vsZVsEtaVsPhiVsPt ( 0),
209_n1_1_vsM ( 0),
210_s1pt_1_vsM ( 0),
211_n1Nw_1_vsM ( 0),
212_s1ptNw_1_vsM ( 0),
213_dedxVsP_1 ( 0),
214_corrDedxVsP_1 ( 0),
215_betaVsP_1 ( 0),
216_n1_2_vsPt ( 0),
217_n1_2_vsEtaVsPhi ( 0),
218_s1pt_2_vsEtaVsPhi ( 0),
219_n1_2_vsZVsEtaVsPhiVsPt ( 0),
220_n1_2_vsM ( 0),
221_s1pt_2_vsM ( 0),
222_n1Nw_2_vsM ( 0),
223_s1ptNw_2_vsM ( 0),
224_dedxVsP_2 ( 0),
225_corrDedxVsP_2 ( 0),
226_betaVsP_2 ( 0),
227_n2_12_vsEtaPhi ( 0),
228_n2_12_vsPtVsPt ( 0),
229_s2PtPt_12_vsEtaPhi( 0),
230_s2PtN_12_vsEtaPhi ( 0),
231_s2NPt_12_vsEtaPhi ( 0),
232_n2_12_vsM ( 0),
233_s2PtPt_12_vsM ( 0),
234_s2PtN_12_vsM ( 0),
235_s2NPt_12_vsM ( 0),
236_n2Nw_12_vsM ( 0),
237_s2PtPtNw_12_vsM ( 0),
238_s2PtNNw_12_vsM ( 0),
239_s2NPtNw_12_vsM ( 0),
240_invMass ( 0),
241n1Name("NA"),
242n1NwName("NA"),
243n2Name("NA"),
244n2NwName("NA"),
245n3Name("NA"),
246n1n1Name("NA"),
247n1n1n1Name("NA"),
248n2n1Name("NA"),
249r1Name("NA"),
250r2Name("NA"),
251r3Name("NA"),
252r2r1Name("NA"),
253c2Name("NA"),
254c3Name("NA"),
255d3Name("NA"),
256p3Name("NA"),
257cName("NA"),
258
259intR2Name("NA"),
260binCorrName("NA"),
261intBinCorrName("NA"),
262
263countsName("NA"),
264part_1_Name("NA"),
265part_2_Name("NA"),
266part_3_Name("NA"),
267pair_12_Name("NA"),
268pair_13_Name("NA"),
269pair_23_Name("NA"),
270tripletName("NA"),
271
272avg("NA"),
273avgName("NA"),
274sumName("NA"),
275s1ptName("NA"),
276s1ptNwName("NA"),
277s1DptName("NA"),
278
279s2PtPtName("NA"),
280s2NPtName("NA"),
281s2PtNName("NA"),
282s2DptDptName("NA"),
283
284s2PtPtNwName("NA"),
285s2NPtNwName("NA"),
286s2PtNNwName("NA"),
287
288ptName("NA"),
289ptptName("NA"),
290pt1pt1Name("NA"),
291DptName("NA"),
292DptDptName("NA"),
293RDptDptName("NA"),
294nPtName("NA"),
295ptNName("NA"),
296seanName("NA"),
297
298_title_counts("NA"),
299
300_title_m0("NA"),
301_title_m1("NA"),
302_title_m2("NA"),
303_title_m3("NA"),
304_title_m4("NA"),
305_title_m5("NA"),
306_title_m6("NA"),
307
308_title_eta_1("NA"),
309_title_phi_1("NA"),
310_title_pt_1("NA"),
311_title_etaPhi_1("NA"),
312_title_n_1("NA"),
313_title_SumPt_1("NA"),
314_title_AvgPt_1("NA"),
315_title_AvgN_1("NA"),
316_title_AvgSumPt_1("NA"),
317
318_title_eta_2("NA"),
319_title_phi_2("NA"),
320_title_pt_2("NA"),
321_title_etaPhi_2("NA"),
322_title_n_2("NA"),
323_title_SumPt_2("NA"),
324_title_AvgPt_2("NA"),
325_title_AvgN_2("NA"),
326_title_AvgSumPt_2("NA"),
327
328_title_etaPhi_12("NA"),
329
330_title_AvgN2_12("NA"),
331_title_AvgSumPtPt_12("NA"),
332_title_AvgSumPtN_12("NA"),
333_title_AvgNSumPt_12("NA"),
334
335vsZ("NA"),
336vsM("NA"),
337vsPt("NA"),
338vsPhi("NA"),
339vsEta("NA"),
340vsEtaPhi("NA"),
341vsPtVsPt("NA")
342{
343 printf("Default constructor called \n");
344
345 printf("passed \n ");
346
347}
348
349AliAnalysisTaskDptDptQA::AliAnalysisTaskDptDptQA(const TString & name)
350: AliAnalysisTaskSE(name),
351fAODEvent(0),
352fESDEvent(0),
353fInputHandler(0),
354fPIDResponse(0),
355_outputHistoList(0),
356_twoPi ( 2.0 * 3.1415927),
357_eventCount ( 0),
358_debugLevel ( 0),
359_singlesOnly ( 0),
360_useWeights ( 0),
361_sameFilter ( false),
362_rejectPileup ( 1),
363_rejectPairConversion ( 0),
364_vertexZMin ( -10.),
365_vertexZMax ( 10.),
366_vertexXYMin ( -10.),
367_vertexXYMax ( 10.),
368_centralityMethod ( 4),
369_centralityMin ( 0.),
370_centralityMax ( 1.),
371_requestedCharge_1 ( 1),
372_requestedCharge_2 ( -1),
373_dcaZMin ( -3),
374_dcaZMax ( 3.),
375_dcaXYMin ( -2.4),
376_dcaXYMax ( 2.4),
377_dedxMin ( 0),
378_dedxMax ( 100000),
379_nClusterMin ( 80),
380_trackFilterBit ( 0),
381fNSigmaCut ( 3.),
382_field ( 1.),
383_nTracks ( 0 ),
384_mult0 ( 0 ),
385_mult1 ( 0 ),
386_mult2 ( 0 ),
387_mult3 ( 0 ),
388_mult4 ( 0 ),
389_mult4a ( 0 ),
390_mult5 ( 0 ),
391_mult6 ( 0 ),
392arraySize ( 2000),
393_id_1(0),
394_charge_1(0),
395_iEtaPhi_1(0),
396_iPt_1(0),
397_pt_1(0),
398_px_1(0),
399_py_1(0),
400_pz_1(0),
401_correction_1(0),
402_dedx_1(0),
403_id_2(0),
404_charge_2(0),
405_iEtaPhi_2(0),
406_iPt_2(0),
407_pt_2(0),
408_px_2(0),
409_py_2(0),
410_pz_2(0),
411_correction_2(0),
412_dedx_2(0),
413_correctionWeight_1(0),
414_correctionWeight_2(0),
415_nBins_M0(500), _min_M0(0), _max_M0(10000), _width_M0(20),
416_nBins_M1(500), _min_M1(0), _max_M1(10000), _width_M1(20),
417_nBins_M2(500), _min_M2(0), _max_M2(10000), _width_M2(20),
418_nBins_M3(500), _min_M3(0), _max_M3(10000), _width_M3(20),
419_nBins_M4(100), _min_M4(0), _max_M4(1), _width_M4(0.01),
420_nBins_M5(100), _min_M5(0), _max_M5(1), _width_M5(0.01),
421_nBins_M6(100), _min_M6(0), _max_M6(1), _width_M6(0.01),
422_nBins_vertexZ(40), _min_vertexZ(-10), _max_vertexZ(10), _width_vertexZ(0.5),
423
424_nBins_pt_1(18), _min_pt_1(0.2), _max_pt_1(2.0), _width_pt_1(0.1),
425_nBins_phi_1(72), _min_phi_1(0), _max_phi_1(2.*3.1415927),_width_phi_1(2.*3.1415927/72.),
426_nBins_eta_1(0), _min_eta_1(0), _max_eta_1(0), _width_eta_1(0.1),
427
428_nBins_etaPhi_1(0),
429_nBins_etaPhiPt_1(0),
430_nBins_zEtaPhiPt_1(0),
431
432_nBins_pt_2(18), _min_pt_2(0.2), _max_pt_2(2.0), _width_pt_2(0.1),
433_nBins_phi_2(72), _min_phi_2(0), _max_phi_2(2.*3.1415927),_width_phi_2(2.*3.1415927/72),
434_nBins_eta_2(0), _min_eta_2(0), _max_eta_2(0), _width_eta_2(0.1),
435
436_nBins_etaPhi_2(0),
437_nBins_etaPhiPt_2(0),
438_nBins_zEtaPhiPt_2(0),
439_nBins_etaPhi_12(0),
440__n1_1(0),
441__n1_2(0),
442__n2_12(0),
443__s1pt_1(0),
444__s1pt_2(0),
445__s2ptpt_12(0),
446__s2NPt_12(0),
447__s2PtN_12(0),
448__n1Nw_1(0),
449__n1Nw_2(0),
450__n2Nw_12(0),
451__s1ptNw_1(0),
452__s1ptNw_2(0),
453__s2ptptNw_12(0),
454__s2NPtNw_12(0),
455__s2PtNNw_12(0),
456__n1_1_vsPt(0),
457__n1_1_vsEtaPhi(0),
458__s1pt_1_vsEtaPhi(0),
459__n1_1_vsZEtaPhiPt(0),
460__n1_2_vsPt(0),
461__n1_2_vsEtaPhi(0),
462__s1pt_2_vsEtaPhi(0),
463__n1_2_vsZEtaPhiPt(0),
464__n2_12_vsPtPt(0),
465__n2_12_vsEtaPhi(0),
466__s2ptpt_12_vsEtaPhi(0),
467__s2PtN_12_vsEtaPhi(0),
468__s2NPt_12_vsEtaPhi(0),
469_weight_1 ( 0 ),
470_weight_2 ( 0 ),
471_eventAccounting ( 0),
472_m0 ( 0),
473_m1 ( 0),
474_m2 ( 0),
475_m3 ( 0),
476_m4 ( 0),
477_m5 ( 0),
478_m6 ( 0),
479_vertexZ ( 0),
480_Ncluster1 ( 0),
481_Ncluster2 ( 0),
482_etadis ( 0),
483_phidis ( 0),
484
485_dcaz ( 0),
486_dcaxy ( 0),
487_spectra ( 0),
488_n1_1_vsPt ( 0),
489_n1_1_vsEtaVsPhi ( 0),
490_s1pt_1_vsEtaVsPhi ( 0),
491_n1_1_vsZVsEtaVsPhiVsPt ( 0),
492_n1_1_vsM ( 0),
493_s1pt_1_vsM ( 0),
494_n1Nw_1_vsM ( 0),
495_s1ptNw_1_vsM ( 0),
496_dedxVsP_1 ( 0),
497_corrDedxVsP_1 ( 0),
498_betaVsP_1 ( 0),
499_n1_2_vsPt ( 0),
500_n1_2_vsEtaVsPhi ( 0),
501_s1pt_2_vsEtaVsPhi ( 0),
502_n1_2_vsZVsEtaVsPhiVsPt ( 0),
503_n1_2_vsM ( 0),
504_s1pt_2_vsM ( 0),
505_n1Nw_2_vsM ( 0),
506_s1ptNw_2_vsM ( 0),
507_dedxVsP_2 ( 0),
508_corrDedxVsP_2 ( 0),
509_betaVsP_2 ( 0),
510_n2_12_vsEtaPhi ( 0),
511_n2_12_vsPtVsPt ( 0),
512_s2PtPt_12_vsEtaPhi( 0),
513_s2PtN_12_vsEtaPhi ( 0),
514_s2NPt_12_vsEtaPhi ( 0),
515_n2_12_vsM ( 0),
516_s2PtPt_12_vsM ( 0),
517_s2PtN_12_vsM ( 0),
518_s2NPt_12_vsM ( 0),
519_n2Nw_12_vsM ( 0),
520_s2PtPtNw_12_vsM ( 0),
521_s2PtNNw_12_vsM ( 0),
522_s2NPtNw_12_vsM ( 0),
523_invMass ( 0),
524n1Name("NA"),
525n1NwName("NA"),
526n2Name("NA"),
527n2NwName("NA"),
528n3Name("NA"),
529n1n1Name("NA"),
530n1n1n1Name("NA"),
531n2n1Name("NA"),
532r1Name("NA"),
533r2Name("NA"),
534r3Name("NA"),
535r2r1Name("NA"),
536c2Name("NA"),
537c3Name("NA"),
538d3Name("NA"),
539p3Name("NA"),
540cName("NA"),
541
542intR2Name("NA"),
543binCorrName("NA"),
544intBinCorrName("NA"),
545
546countsName("NA"),
547part_1_Name("NA"),
548part_2_Name("NA"),
549part_3_Name("NA"),
550pair_12_Name("NA"),
551pair_13_Name("NA"),
552pair_23_Name("NA"),
553tripletName("NA"),
554
555avg("NA"),
556avgName("NA"),
557sumName("NA"),
558s1ptName("NA"),
559s1ptNwName("NA"),
560s1DptName("NA"),
561
562s2PtPtName("NA"),
563s2NPtName("NA"),
564s2PtNName("NA"),
565s2DptDptName("NA"),
566
567s2PtPtNwName("NA"),
568s2NPtNwName("NA"),
569s2PtNNwName("NA"),
570
571ptName("NA"),
572ptptName("NA"),
573pt1pt1Name("NA"),
574DptName("NA"),
575DptDptName("NA"),
576RDptDptName("NA"),
577nPtName("NA"),
578ptNName("NA"),
579seanName("NA"),
580
581_title_counts("NA"),
582
583_title_m0("NA"),
584_title_m1("NA"),
585_title_m2("NA"),
586_title_m3("NA"),
587_title_m4("NA"),
588_title_m5("NA"),
589_title_m6("NA"),
590
591_title_eta_1("NA"),
592_title_phi_1("NA"),
593_title_pt_1("NA"),
594_title_etaPhi_1("NA"),
595_title_n_1("NA"),
596_title_SumPt_1("NA"),
597_title_AvgPt_1("NA"),
598_title_AvgN_1("NA"),
599_title_AvgSumPt_1("NA"),
600
601_title_eta_2("NA"),
602_title_phi_2("NA"),
603_title_pt_2("NA"),
604_title_etaPhi_2("NA"),
605_title_n_2("NA"),
606_title_SumPt_2("NA"),
607_title_AvgPt_2("NA"),
608_title_AvgN_2("NA"),
609_title_AvgSumPt_2("NA"),
610
611_title_etaPhi_12("NA"),
612
613_title_AvgN2_12("NA"),
614_title_AvgSumPtPt_12("NA"),
615_title_AvgSumPtN_12("NA"),
616_title_AvgNSumPt_12("NA"),
617
618vsZ("NA"),
619vsM("NA"),
620vsPt("NA"),
621vsPhi("NA"),
622vsEta("NA"),
623vsEtaPhi("NA"),
624vsPtVsPt("NA")
625{
626 printf("2nd constructor called ");
627
628 DefineOutput(0, TList::Class());
629
630 printf("passed ");
631
632}
633
634AliAnalysisTaskDptDptQA::~AliAnalysisTaskDptDptQA()
635{
636
637}
638
639void AliAnalysisTaskDptDptQA::UserCreateOutputObjects()
640{
641 OpenFile(0);
642 _outputHistoList = new TList();
643 _outputHistoList->SetOwner();
644
645 _nBins_M0 = 500; _min_M0 = 0.; _max_M0 = 5000.; _width_M0 = (_max_M0-_min_M0)/_nBins_M0;
646 _nBins_M1 = 500; _min_M1 = 0.; _max_M1 = 5000.; _width_M1 = (_max_M1-_min_M1)/_nBins_M1;
647 _nBins_M2 = 500; _min_M2 = 0.; _max_M2 = 5000.; _width_M2 = (_max_M2-_min_M2)/_nBins_M2;
648 _nBins_M3 = 500; _min_M3 = 0.; _max_M3 = 5000.; _width_M3 = (_max_M3-_min_M3)/_nBins_M3;
649 _nBins_M4 = 100; _min_M4 = 0.; _max_M4 = 100.; _width_M4 = (_max_M4-_min_M4)/_nBins_M4;
650 _nBins_M5 = 100; _min_M5 = 0.; _max_M5 = 100.; _width_M5 = (_max_M5-_min_M5)/_nBins_M5;
651 _nBins_M6 = 100; _min_M6 = 0.; _max_M6 = 100.; _width_M6 = (_max_M6-_min_M6)/_nBins_M6;
652
653 _min_vertexZ = _vertexZMin;
654 _max_vertexZ = _vertexZMax;
655 _width_vertexZ = 0.5;
656 _nBins_vertexZ = int(0.5+ (_max_vertexZ - _min_vertexZ)/_width_vertexZ);
657 _nBins_pt_1 = int(0.5+ (_max_pt_1 -_min_pt_1 )/_width_pt_1);
658 _nBins_eta_1 = int(0.5+ (_max_eta_1-_min_eta_1)/_width_eta_1);
659 _width_phi_1 = (_max_phi_1 - _min_phi_1) /_nBins_phi_1;
660 _nBins_etaPhi_1 = _nBins_phi_1 * _nBins_eta_1;
661 _nBins_etaPhiPt_1 = _nBins_etaPhi_1 * _nBins_pt_1;
662 _nBins_zEtaPhiPt_1 = _nBins_vertexZ * _nBins_etaPhiPt_1;
663
664 _nBins_pt_2 = int(0.5+ (_max_pt_2 -_min_pt_2 )/_width_pt_2);
665 _nBins_eta_2 = int(0.5+ (_max_eta_2-_min_eta_2)/_width_eta_2);
666 _width_phi_2 = (_max_phi_2 - _min_phi_2) /_nBins_phi_2;
667 _nBins_etaPhi_2 = _nBins_phi_2 * _nBins_eta_2;
668 _nBins_etaPhiPt_2 = _nBins_etaPhi_2 * _nBins_pt_2;
669 _nBins_zEtaPhiPt_2 = _nBins_vertexZ * _nBins_etaPhiPt_2;
670 _nBins_etaPhi_12 = _nBins_etaPhi_1 * _nBins_etaPhi_2;
671
672 _id_1 = new int[arraySize];
673 _charge_1 = new int[arraySize];
674 _iEtaPhi_1 = new int[arraySize];
675 _iPt_1 = new int[arraySize];
676 _pt_1 = new float[arraySize];
677 _px_1 = new float[arraySize];
678 _py_1 = new float[arraySize];
679 _pz_1 = new float[arraySize];
680 _correction_1 = new float[arraySize];
681
682 __n1_1_vsPt = getDoubleArray(_nBins_pt_1, 0.);
683 __n1_1_vsEtaPhi = getDoubleArray(_nBins_etaPhi_1, 0.);
684 __s1pt_1_vsEtaPhi = getDoubleArray(_nBins_etaPhi_1, 0.);
685 __n1_1_vsZEtaPhiPt = getFloatArray(_nBins_zEtaPhiPt_1, 0.);
686
687
688 if (_requestedCharge_2!=_requestedCharge_1)
689 {
690 _sameFilter = 0;
691 //particle 2
692 _id_2 = new int[arraySize];
693 _charge_2 = new int[arraySize];
694 _iEtaPhi_2 = new int[arraySize];
695 _iPt_2 = new int[arraySize];
696 _pt_2 = new float[arraySize];
697 _px_2 = new float[arraySize];
698 _py_2 = new float[arraySize];
699 _pz_2 = new float[arraySize];
700 _correction_2 = new float[arraySize];
701
702 __n1_2_vsPt = getDoubleArray(_nBins_pt_2, 0.);
703 __n1_2_vsEtaPhi = getDoubleArray(_nBins_etaPhi_2, 0.);
704 __s1pt_2_vsEtaPhi = getDoubleArray(_nBins_etaPhi_2, 0.);
705 __n1_2_vsZEtaPhiPt = getFloatArray(_nBins_zEtaPhiPt_2, 0.);
706
707 }
708
709 __n2_12_vsPtPt = getDoubleArray(_nBins_pt_1*_nBins_pt_2,0.);
710 __n2_12_vsEtaPhi = getFloatArray(_nBins_etaPhi_12, 0.);
711 __s2ptpt_12_vsEtaPhi = getFloatArray(_nBins_etaPhi_12, 0.);
712 __s2PtN_12_vsEtaPhi = getFloatArray(_nBins_etaPhi_12, 0.);
713 __s2NPt_12_vsEtaPhi = getFloatArray(_nBins_etaPhi_12, 0.);
714
715 // Setup all the labels needed.
716
717 part_1_Name = "_1";
718 part_2_Name = "_2";
719 pair_12_Name = "_12";
720
721 n1Name = "n1";
722 n2Name = "n2";
723 n1NwName = "n1Nw";
724 n2NwName = "n2Nw";
725 r1Name = "r1";
726 r2Name = "r2";
727 r3Name = "r3";
728 r2r1Name = "r2r1";
729 c2Name = "c2";
730 c3Name = "c3";
731 d3Name = "d3";
732 p3Name = "p3";
733 cName = "sean";
734
735 intR2Name = "intR2";
736 binCorrName = "binCorr";
737 intBinCorrName = "intBinCorr";
738
739 avgName = "avg";
740 sumName = "sum";
741 s1ptName = "sumPt";
742 s1ptNwName = "sumPtNw";
743 s1DptName = "sumDpt";
744 s2PtPtName = "sumPtPt";
745 s2PtPtNwName = "sumPtPtNw";
746 s2DptDptName = "sumDptDpt";
747 s2NPtName = "sumNPt";
748 s2NPtNwName = "sumNPtNw";
749 s2PtNName = "sumPtN";
750 s2NPtNwName = "sumNPtNw";
751 s2PtNNwName = "sumPtNNw";
752 ptName = "avgPt";
753 ptptName = "avgPtPt";
754 pt1pt1Name = "avgPtavgPt";
755 DptName = "avgDpt";
756 DptDptName = "avgDptDpt";
757 RDptDptName = "relDptDpt"; // ratio of avgDptDpt by avgPt*avgPt
758 nPtName = "avgNpt";
759 ptNName = "avgPtN";
760 seanName = "seanC";
761
762 _title_counts = "yield";
763
764 _title_m0 = "M_{0}";
765 _title_m1 = "M_{1}";
766 _title_m2 = "M_{2}";
767 _title_m3 = "M_{3}";
768 _title_m4 = "V0Centrality";
769 _title_m5 = "TrkCentrality";
770 _title_m6 = "SpdCentrality";
771
772 _title_eta_1 = "#eta_{1}";
773 _title_phi_1 = "#varphi_{1} (radian)";
774 _title_etaPhi_1 = "#eta_{1}#times#varphi_{1}";
775 _title_pt_1 = "p_{t,1} (GeV/c)";
776 _title_n_1 = "n_{1}";
777 _title_SumPt_1 = "#Sigma p_{t,1} (GeV/c)";
778 _title_AvgPt_1 = "#LT p_{t,1} #GT (GeV/c)";
779 _title_AvgN_1 = "#LT n_{1} #GT";
780 _title_AvgSumPt_1 = "#LT #Sigma p_{t,1} #GT (GeV/c)";
781
782 _title_eta_2 = "#eta_{2}";
783 _title_phi_2 = "#varphi_{2} (radian)";
784 _title_etaPhi_2 = "#eta_{2}#times#varphi_{2}";
785 _title_pt_2 = "p_{t,2} (GeV/c)";
786 _title_n_2 = "n_{2}";
787 _title_SumPt_2 = "#Sigma p_{t,1} (GeV/c)";
788 _title_AvgPt_2 = "#LT p_{t,2} #GT (GeV/c)";
789 _title_AvgN_2 = "#LT n_{2} #GT";
790 _title_AvgSumPt_2 = "#LT #Sigma p_{t,2} #GT (GeV/c)";
791
792 _title_etaPhi_12 = "#eta_{1}#times#varphi_{1}#times#eta_{2}#times#varphi_{2}";
793
794 _title_AvgN2_12 = "#LT n_{2} #GT";;
795 _title_AvgSumPtPt_12 = "#LT #Sigma p_{t,1}p_{t,2} #GT";;
796 _title_AvgSumPtN_12 = "#LT #Sigma p_{t,1}N #GT";;
797 _title_AvgNSumPt_12 = "#LT N#Sigma p_{t,2} #GT";;
798
799
800 vsZ = "_vsZ";
801 vsM = "_vsM";
802 vsPt = "_vsPt";
803 vsPhi = "_vsPhi";
804 vsEta = "_vsEta";
805 vsEtaPhi = "_vsEtaPhi";
806 vsPtVsPt = "_vsPtVsPt";
807
808
809 if (_useWeights)
810 {
811 int iZ, iEtaPhi, iPt;
812 int iZ1,iEtaPhi1,iPt1;
813 int a, b;
814 if (_weight_1)
815 {
816 _correctionWeight_1 = new float[_nBins_vertexZ*_nBins_etaPhi_1*_nBins_pt_1];
817 a = _nBins_pt_1;
818 b = _nBins_etaPhi_1*_nBins_pt_1;
819 for (iZ=0,iZ1=1; iZ<_nBins_vertexZ; iZ++, iZ1++)
820 {
821 for (iEtaPhi=0,iEtaPhi1=1; iEtaPhi<_nBins_etaPhi_1; iEtaPhi++, iEtaPhi1++)
822 {
823 for (iPt=0,iPt1=1; iPt<_nBins_pt_1; iPt++, iPt1++)
824 {
825 _correctionWeight_1[iZ*b+iEtaPhi*a+iPt] = _weight_1->GetBinContent(iZ1,iEtaPhi1,iPt1);
826 }
827 }
828 }
829 } // _weight_1
830 else
831 {
832 AliError("AliAnalysisTaskDptDptQA:: _weight_1 is a null pointer.");
833 return;
834 }
835 if (!_sameFilter)
836 {
837 if (_weight_2)
838 {
839 _correctionWeight_2 = new float[_nBins_vertexZ*_nBins_etaPhi_2*_nBins_pt_2];
840 a = _nBins_pt_2;
841 b = _nBins_etaPhi_2*_nBins_pt_2;
842 for (iZ=0,iZ1=1; iZ<_nBins_vertexZ; iZ++, iZ1++)
843 {
844 for (iEtaPhi=0,iEtaPhi1=1; iEtaPhi<_nBins_etaPhi_2; iEtaPhi++, iEtaPhi1++)
845 {
846 for (iPt=0,iPt1=1; iPt<_nBins_pt_2; iPt++, iPt1++)
847 {
848 _correctionWeight_2[iZ*b+iEtaPhi*a+iPt] = _weight_2->GetBinContent(iZ1,iEtaPhi1,iPt1);
849 }
850 }
851 }
852 } // _weight_2
853 else
854 {
855 AliError("AliAnalysisTaskDptDptQA:: _weight_1 is a null pointer.");
856 return;
857 }
858 }
859 }
860
861 createHistograms();
862 PostData(0,_outputHistoList);
863
864 //cout<< "AliAnalysisTaskDptDptQA::CreateOutputObjects() DONE " << endl;
865
866}
867
868void AliAnalysisTaskDptDptQA::createHistograms()
869{
870 AliInfo(" AliAnalysisTaskDptDptQA::createHistoHistograms() Creating Event Histos");
871 TString name;
872
873 name = "eventAccounting";
874
875 _eventAccounting = createHisto1D(name,name,10, -0.5, 9.5, "event Code", _title_counts);
876
877 name = "m0"; _m0 = createHisto1D(name,name,_nBins_M1, _min_M1, _max_M1, _title_m0, _title_counts);
878 name = "m1"; _m1 = createHisto1D(name,name,_nBins_M1, _min_M1, _max_M1, _title_m1, _title_counts);
879 name = "m2"; _m2 = createHisto1D(name,name,_nBins_M2, _min_M2, _max_M2, _title_m2, _title_counts);
880 name = "m3"; _m3 = createHisto1D(name,name,_nBins_M3, _min_M3, _max_M3, _title_m3, _title_counts);
881 name = "m4"; _m4 = createHisto1D(name,name,_nBins_M4, _min_M4, _max_M4, _title_m4, _title_counts);
882 name = "m5"; _m5 = createHisto1D(name,name,_nBins_M5, _min_M5, _max_M5, _title_m5, _title_counts);
883 name = "m6"; _m6 = createHisto1D(name,name,_nBins_M6, _min_M6, _max_M6, _title_m6, _title_counts);
884 name = "zV"; _vertexZ = createHisto1D(name,name,100, -10, 10, "z-Vertex (cm)", _title_counts);
885
886
887 name = "Eta"; _etadis = createHisto1F(name,name, 200, -1.0, 1.0, "#eta","counts");
888 name = "Phi"; _phidis = createHisto1F(name,name, 360, 0.0, 6.4, "#phi","counts");
889 name = "DCAz"; _dcaz = createHisto1F(name,name, 500, -5.0, 5.0, "dcaZ","counts");
890 name = "DCAxy"; _dcaxy = createHisto1F(name,name, 500, -5.0, 5.0, "dcaXY","counts");
891 name = "pTspectra"; _spectra = createHisto1F(name,name, 300, 0.1, 2.5, "pT","counts");
892
893 //name = "Nclus1"; _Ncluster1 = createHisto1F(name,name, 200, 0, 200, "Ncluster1","counts");
894 //name = "Nclus2"; _Ncluster2 = createHisto1F(name,name, 200, 0, 200, "Ncluster2","counts");
895
896 if (_singlesOnly)
897 {
898 name = n1Name+part_1_Name+vsPt; _n1_1_vsPt = createHisto1F(name,name, _nBins_pt_1, _min_pt_1, _max_pt_1, _title_pt_1, _title_AvgN_1);
899 name = n1Name+part_1_Name+vsZ+vsEtaPhi+vsPt; _n1_1_vsZVsEtaVsPhiVsPt = createHisto3F(name,name, _nBins_vertexZ,_min_vertexZ,_max_vertexZ, _nBins_etaPhi_1, 0., double(_nBins_etaPhi_1), _nBins_pt_1, _min_pt_1, _max_pt_1, "zVertex", _title_etaPhi_1, _title_pt_1);
900
901 name = n1Name+part_2_Name+vsPt; _n1_2_vsPt = createHisto1F(name,name, _nBins_pt_2, _min_pt_2, _max_pt_2, _title_pt_2, _title_AvgN_2);
902 name = n1Name+part_2_Name+vsZ+vsEtaPhi+vsPt; _n1_2_vsZVsEtaVsPhiVsPt = createHisto3F(name,name, _nBins_vertexZ,_min_vertexZ,_max_vertexZ, _nBins_etaPhi_2, 0., double(_nBins_etaPhi_2), _nBins_pt_2, _min_pt_2, _max_pt_2, "zVertex", _title_etaPhi_2, _title_pt_2);
903
904 }
905 else
906 {
907 name = n1Name+part_1_Name+vsEtaPhi; _n1_1_vsEtaVsPhi = createHisto2F(name,name, _nBins_eta_1, _min_eta_1, _max_eta_1, _nBins_phi_1, _min_phi_1, _max_phi_1, _title_eta_1, _title_phi_1, _title_AvgN_1);
908 name = s1ptName+part_1_Name+vsEtaPhi; _s1pt_1_vsEtaVsPhi = createHisto2F(name,name, _nBins_eta_1, _min_eta_1, _max_eta_1, _nBins_phi_1, _min_phi_1, _max_phi_1, _title_eta_1, _title_phi_1, _title_AvgSumPt_1);
909 name = n1Name+part_1_Name+vsM; _n1_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_1);
910 name = s1ptName+part_1_Name+vsM; _s1pt_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_1);
911 name = n1NwName+part_1_Name+vsM; _n1Nw_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_1);
912 name = s1ptNwName+part_1_Name+vsM; _s1ptNw_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_1);
913
914 name = n1Name+part_2_Name+vsEtaPhi; _n1_2_vsEtaVsPhi = createHisto2F(name,name, _nBins_eta_2, _min_eta_2, _max_eta_2, _nBins_phi_2, _min_phi_2, _max_phi_2, _title_eta_2, _title_phi_2, _title_AvgN_2);
915 name = s1ptName+part_2_Name+vsEtaPhi; _s1pt_2_vsEtaVsPhi = createHisto2F(name,name, _nBins_eta_2, _min_eta_2, _max_eta_2, _nBins_phi_2, _min_phi_2, _max_phi_2, _title_eta_2, _title_phi_2, _title_AvgSumPt_2);
916 name = n1Name+part_2_Name + vsM; _n1_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_2);
917 name = s1ptName+part_2_Name + vsM; _s1pt_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_2);
918 name = n1NwName+part_2_Name+vsM; _n1Nw_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_1);
919 name = s1ptNwName+part_2_Name+vsM; _s1ptNw_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_1);
920
921 name = n2Name+pair_12_Name+vsEtaPhi; _n2_12_vsEtaPhi = createHisto1F(name,name, _nBins_etaPhi_12, 0., double(_nBins_etaPhi_12), _title_etaPhi_12, _title_AvgN2_12);
922 name = s2PtPtName+pair_12_Name + vsEtaPhi;_s2PtPt_12_vsEtaPhi = createHisto1F(name,name, _nBins_etaPhi_12, 0., double(_nBins_etaPhi_12), _title_etaPhi_12, _title_AvgSumPtPt_12);
923 name = s2PtNName+pair_12_Name + vsEtaPhi; _s2PtN_12_vsEtaPhi = createHisto1F(name,name, _nBins_etaPhi_12, 0., double(_nBins_etaPhi_12), _title_etaPhi_12, _title_AvgSumPtN_12);
924 name = s2NPtName+pair_12_Name + vsEtaPhi; _s2NPt_12_vsEtaPhi = createHisto1F(name,name, _nBins_etaPhi_12, 0., double(_nBins_etaPhi_12), _title_etaPhi_12, _title_AvgNSumPt_12);
925 name = n2Name+pair_12_Name+vsPtVsPt; _n2_12_vsPtVsPt = createHisto2F(name,name, _nBins_pt_1, _min_pt_1, _max_pt_1, _nBins_pt_2, _min_pt_2, _max_pt_2, _title_pt_1, _title_pt_2, _title_AvgN2_12);
926
927 name = n2Name+pair_12_Name + vsM; _n2_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN2_12);
928 name = s2PtPtName+pair_12_Name + vsM; _s2PtPt_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtPt_12);
929 name = s2PtNName+pair_12_Name + vsM; _s2PtN_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtN_12);
930 name = s2NPtName+pair_12_Name + vsM; _s2NPt_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgNSumPt_12);
931
932 name = n2NwName+pair_12_Name + vsM; _n2Nw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN2_12);
933 name = s2PtPtNwName+pair_12_Name + vsM; _s2PtPtNw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtPt_12);
934 name = s2PtNNwName+pair_12_Name + vsM; _s2PtNNw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtN_12);
935 name = s2NPtNwName+pair_12_Name + vsM; _s2NPtNw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgNSumPt_12);
936
937 name = "mInv"; _invMass = createHisto2F(name,name, 10, 0.0, 2.0, 200, 0.4, 0.6, "pT","InvMass","ptvsmass");
938
939 }
940
941 AliInfo(" AliAnalysisTaskDptDptQA::createHistoHistograms() All Done");
942}
943//-----------------------//
944
945void AliAnalysisTaskDptDptQA::finalizeHistograms()
946{
947
948 AliInfo("AliAnalysisTaskDptDptQA::finalizeHistograms() starting");
949 AliInfo(Form("CorrelationAnalyzers::finalizeHistograms() _eventCount : %d",int(_eventCount)));
950
951 AliInfo("AliAnalysisTaskDptDptQA::finalizeHistograms() Done ");
952}
953//--------------//
954
955
956void AliAnalysisTaskDptDptQA::UserExec(Option_t */*option*/)
957{
958
959 int k1,k2;
960 int charge;
961 float q, phi, pt, eta, px, py, pz;
962 //int ij;
963 //int id_1, q_1, iPt_1;
964 //float pt_1, px_1, py_1, pz_1, corr_1;
965 //int id_2, q_2, iPt_2;
966 //float pt_2, px_2, py_2, pz_2, corr_2;
967 //float ptpt;
968 int iVertex, iVertexP1, iVertexP2;
969 //int iZEtaPhiPt;
970 //float massElecSq = 1.94797849000000016e-02;
971 //double b[2];
972 //double bCov[3];
973 const AliAODVertex* vertex;
974 bool bitOK;
975
976 AliAnalysisManager* manager = AliAnalysisManager::GetAnalysisManager();
977 if (!manager) {
978 return;
979 }
980 AliAODInputHandler* inputHandler = dynamic_cast<AliAODInputHandler*> (manager->GetInputEventHandler());
981 if (!inputHandler) {
982 return;
983 }
984
985 fAODEvent = dynamic_cast<AliAODEvent*>(InputEvent());
986 //AliAODEvent* fAODEvent = dynamic_cast<AliAODEvent*>(InputEvent());
987
988 if (!fAODEvent)
989 {
990 return;
991 }
992 fPIDResponse =inputHandler->GetPIDResponse();
993 if (!fPIDResponse){
994 AliFatal("This Task needs the PID response attached to the inputHandler");
995 return;
996 }
997
998 // count all events looked at here
999 _eventCount++;
1000
1001 if (_eventAccounting)
1002 {
1003 _eventAccounting->Fill(0);// count all calls to this function
1004 }
1005 else
1006 {
1007
1008 return;
1009 }
1010
1011 _eventAccounting->Fill(1);// count all calls to this function with a valid pointer
1012 //reset single particle counters
1013 k1 = k2 = 0;
1014 __n1_1 = __n1_2 = __s1pt_1 = __s1pt_2 = __n1Nw_1 = __n1Nw_2 = __s1ptNw_1 = __s1ptNw_2 = 0;
1015
1016 float v0Centr = -999.;
1017 float v0ACentr = -999.;
1018 float trkCentr = -999.;
1019 float spdCentr = -999.;
1020
1021 float vertexX = -999;
1022 float vertexY = -999;
1023 float vertexZ = -999;
1024 //float vertexXY = -999;
1025 // float dcaZ = -999;
1026 //float dcaXY = -999;
1027 float centrality = -999;
1028
1029 float Kaon1Charge[50000];
1030 float Kaon1Px[50000];
1031 float Kaon1Py[50000];
1032 float Kaon1Pz[50000];
1033 float Kaon2Charge[50000];
1034 float Kaon2Px[50000];
1035 float Kaon2Py[50000];
1036 float Kaon2Pz[50000];
1037
1038 int nKaon1s = 0;
1039 int nKaon2s = 0;
1040
1041 //k1Mass = 0.139570;
1042 //kMass = 0.139570;
1043
1044
1045 if(fAODEvent)
1046 {
1047 //Centrality
1048 AliCentrality* centralityObject = fAODEvent->GetHeader()->GetCentralityP();
1049 if (centralityObject)
1050 {
1051 //cout << "AliAnalysisTaskDptDptQA::UserExec(Option_t *option) - 6" << endl;
1052
1053 v0Centr = centralityObject->GetCentralityPercentile("V0M");
1054 v0ACentr = centralityObject->GetCentralityPercentile("V0A");
1055 trkCentr = centralityObject->GetCentralityPercentile("TRK");
1056 spdCentr = centralityObject->GetCentralityPercentile("CL1");
1057
1058 }
1059
1060 _nTracks =fAODEvent->GetNumberOfTracks();//NEW Test
1061
1062 _mult3 = _nTracks;
1063 _mult4 = v0Centr;
1064 _mult4a = v0ACentr;
1065 _mult5 = trkCentr;
1066 _mult6 = spdCentr;
1067 _field = fAODEvent->GetMagneticField();
1068
1069 //_centralityMethod
1070 switch (_centralityMethod)
1071 {
1072 case 0: centrality = _mult0; break;
1073 case 1: centrality = _mult1; break;
1074 case 2: centrality = _mult2; break;
1075 case 3: centrality = _mult3; break;
1076 case 4: centrality = _mult4; break;
1077 case 5: centrality = _mult5; break;
1078 case 6: centrality = _mult6; break;
1079 case 7: centrality = _mult4a; break;
1080 }
1081
1082
1083 if ( centrality < _centralityMin || centrality > _centralityMax )
1084 {
1085 return;
1086 }
1087 _eventAccounting->Fill(2);// count all events with right centrality
1088
1089 // filter on z and xy vertex
1090 vertex = (AliAODVertex*) fAODEvent->GetPrimaryVertex();
1091 // Double_t V[2];
1092 //vertex->GetXYZ(V);
1093
1094 if(vertex)
1095 {
1096 Double32_t fCov[6];
1097 vertex->GetCovarianceMatrix(fCov);
1098 if(vertex->GetNContributors() > 0)
1099 {
1100 if(fCov[5] != 0)
1101 {
1102 vertexX = vertex->GetX();
1103 vertexY = vertex->GetY();
1104 vertexZ = vertex->GetZ();
1105
1106 if(TMath::Abs(vertexZ) > 10)
1107 {
1108 return;
1109 } // Z-Vertex Cut
1110 }
1111 }
1112 }
1113
1114 _vertexZ->Fill(vertexZ);
1115
1116 iVertex = int((vertexZ-_min_vertexZ)/_width_vertexZ);
1117 iVertexP1 = iVertex*_nBins_etaPhiPt_1;
1118 iVertexP2 = iVertex*_nBins_etaPhiPt_2;
1119 if (iVertex<0 || iVertex>=_nBins_vertexZ)
1120 {
1121 AliError("AliAnalysisTaskDptDptQA::Exec(Option_t *option) iVertex<0 || iVertex>=_nBins_vertexZ ");
1122 return;
1123 }
1124 _eventAccounting->Fill(3);// count all calls to this function with a valid pointer
1125 //======================
1126
1127 //*********************************************************
1128 TExMap *trackMap = new TExMap();//Mapping matrix----
1129 //1st loop track
1130 for(Int_t i = 0; i < _nTracks; i++)
1131 {
1132 AliAODTrack* aodTrack = dynamic_cast<AliAODTrack *>(fAODEvent->GetTrack(i));
1133 if(!aodTrack) {
1134 AliError(Form("ERROR: Could not retrieve AODtrack %d",i));
1135 continue;
1136 }
1137 Int_t gID = aodTrack->GetID();
1138 if (aodTrack->TestFilterBit(1)) trackMap->Add(gID, i);//Global tracks
1139 }
1140
1141 AliAODTrack* newAodTrack;
1142
1143 //Track Loop starts here
1144 for (int iTrack=0; iTrack< _nTracks; iTrack++)
1145 {
1146 AliAODTrack* t = dynamic_cast<AliAODTrack *>(fAODEvent->GetTrack(iTrack));
1147 if (!t) {
1148 AliError(Form("Could not receive track %d", iTrack));
1149 continue;
1150 }
1151
1152 bitOK = t->TestFilterBit(_trackFilterBit);
1153 if (!bitOK) continue; //128bit or 272bit
1154
1155 Int_t gID = t->GetID();
1156 newAodTrack = gID >= 0 ?t : fAODEvent->GetTrack(trackMap->GetValue(-1-gID));
1157
1158 q = t->Charge();
1159 charge = int(q);
1160 phi = t->Phi();
1161 pt = t->Pt();
1162 px = t->Px();
1163 py = t->Py();
1164 pz = t->Pz();
1165 eta = t->Eta();
1166 //dcaXY = t->DCA();
1167 //dcaZ = t->ZAtDCA();
1168
1169 TVector3 mom(px, py, pz);
1170
1171 //Double_t nsigmaelectron = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kElectron));
1172 Double_t nsigmapion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kPion));
1173 //Double_t nsigmakaon = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kKaon));
1174 //Double_t nsigmaproton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kProton));
1175
1176 if(charge == 0) continue;
1177
1178 // Kinematics cuts used
1179 if( pt < _min_pt_1 || pt > _max_pt_1) continue;
1180 if( eta < _min_eta_1 || eta > _max_eta_1) continue;
1181
1182 Double_t pos[3];
1183 newAodTrack->GetXYZ(pos);
1184
1185 Double_t DCAX = pos[0] - vertexX;
1186 Double_t DCAY = pos[1] - vertexY;
1187 Double_t DCAZ = pos[2] - vertexZ;
1188
1189 Double_t DCAXY = TMath::Sqrt((DCAX*DCAX) + (DCAY*DCAY));
1190
1191 if (DCAZ < _dcaZMin ||
1192 DCAZ > _dcaZMax ||
1193 DCAXY > _dcaXYMax ) continue;
1194
1195 //==== QA ===========================
1196 _dcaz->Fill(DCAZ);
1197 _dcaxy->Fill(DCAXY);
1198 _etadis->Fill(eta);
1199 _phidis->Fill(phi);
1200 _spectra->Fill(pt);
1201 //===================================
1202
1203 if(TMath::Abs(nsigmapion) < fNSigmaCut && charge == -1) {
1204 Kaon1Charge[nKaon1s] = q;
1205 Kaon1Px[nKaon1s] = mom.X();
1206 Kaon1Py[nKaon1s] = mom.Y();
1207 Kaon1Pz[nKaon1s] = mom.Z();
1208 nKaon1s++;
1209
1210 }
1211 if(TMath::Abs(nsigmapion) < fNSigmaCut && charge == 1) {
1212 Kaon2Charge[nKaon2s] = q;
1213 Kaon2Px[nKaon1s] = mom.X();
1214 Kaon2Py[nKaon1s] = mom.Y();
1215 Kaon2Pz[nKaon1s] = mom.Z();
1216 nKaon2s++;
1217
1218 }
1219
1220 TLorentzVector pion1(0,0,0,0);
1221 TLorentzVector pion2(0,0,0,0);
1222 TLorentzVector Kaon(0,0,0,0);
1223
1224 for(int i=0; i<nKaon1s; i++)
1225 {
1226 pion1.SetXYZM(Kaon1Px[i],Kaon1Py[i],Kaon1Pz[i],0.139570);
1227 for(int j=0; j<nKaon2s; j++)
1228 {
1229 pion2.SetXYZM(Kaon2Px[j],Kaon2Py[j],Kaon2Pz[j],0.139570);
1230 Kaon = pion1 + pion2;
1231 float rapidity = Kaon.Rapidity();
1232 float pairpt = Kaon.Pt();
1233 if( rapidity < -0.50 || rapidity > 0.50 ) continue;
1234 _invMass->Fill(pairpt, Kaon.M());
1235 }
1236 }
1237
1238 } //iTrack
1239 } //aod
1240}
1241
1242void AliAnalysisTaskDptDptQA::FinishTaskOutput()
1243{
1244 AliInfo("AliAnalysisTaskDptDptQA::FinishTaskOutput() Starting.");
1245 Printf("= 0 ====================================================================");
1246 finalizeHistograms();
1247 AliInfo("= 1 ====================================================================");
1248 PostData(0,_outputHistoList);
1249 AliInfo("= 2 ====================================================================");
1250 AliInfo("AliAnalysisTaskDptDptQA::FinishTaskOutput() Done.");
1251}
1252
1253void AliAnalysisTaskDptDptQA::Terminate(Option_t* /*option*/)
1254{
1255 AliInfo("AliAnalysisTaskDptDptQA::Terminate() Starting/Done.");
1256}
1257
1258
1259//Tools
1260//===================================================================================================
1261void AliAnalysisTaskDptDptQA::fillHistoWithArray(TH1 * h, float * array, int size)
1262{
1263 int i, i1;
1264 float v1, ev1, v2, ev2, sum, esum;
1265 for (i=0, i1=1; i<size; ++i,++i1)
1266 {
1267 v1 = array[i]; ev1 = sqrt(v1);
1268 v2 = h->GetBinContent(i1);
1269 ev2 = h->GetBinError(i1);
1270 sum = v1 + v2;
1271 esum = sqrt(ev1*ev1+ev2*ev2);
1272 h->SetBinContent(i1,sum);
1273 h->SetBinError(i1,esum);
1274 }
1275}
1276
1277void AliAnalysisTaskDptDptQA::fillHistoWithArray(TH2 * h, float * array, int size1, int size2)
1278{
1279 int i, i1;
1280 int j, j1;
1281 float v1, ev1, v2, ev2, sum, esum;
1282 for (i=0, i1=1; i<size1; ++i,++i1)
1283 {
1284 for (j=0, j1=1; j<size2; ++j,++j1)
1285 {
1286 v1 = array[i*size2+j]; ev1 = sqrt(v1);
1287 v2 = h->GetBinContent(i1,j1);
1288 ev2 = h->GetBinError(i1,j1);
1289 sum = v1 + v2;
1290 esum = sqrt(ev1*ev1+ev2*ev2);
1291 h->SetBinContent(i1,j1,sum);
1292 h->SetBinError(i1,j1,esum);
1293 }
1294 }
1295}
1296
1297void AliAnalysisTaskDptDptQA::fillHistoWithArray(TH3 * h, float * array, int size1, int size2, int size3)
1298{
1299 int i, i1;
1300 int j, j1;
1301 int k, k1;
1302 float v1, ev1, v2, ev2, sum, esum;
1303 int size23 = size2*size3;
1304 for (i=0, i1=1; i<size1; ++i,++i1)
1305 {
1306 for (j=0, j1=1; j<size2; ++j,++j1)
1307 {
1308 for (k=0, k1=1; k<size3; ++k,++k1)
1309 {
1310 v1 = array[i*size23+j*size3+k]; ev1 = sqrt(v1);
1311 v2 = h->GetBinContent(i1,j1,k1);
1312 ev2 = h->GetBinError(i1,j1,k1);
1313 sum = v1 + v2;
1314 esum = sqrt(ev1*ev1+ev2*ev2);
1315 h->SetBinContent(i1,j1,k1,sum);
1316 h->SetBinError(i1,j1,k1,esum);
1317 }
1318 }
1319 }
1320}
1321
1322void AliAnalysisTaskDptDptQA::fillHistoWithArray(TH1 * h, double * array, int size)
1323{
1324 int i, i1;
1325 double v1, ev1, v2, ev2, sum, esum;
1326 for (i=0, i1=1; i<size; ++i,++i1)
1327 {
1328 v1 = array[i]; ev1 = sqrt(v1);
1329 v2 = h->GetBinContent(i1);
1330 ev2 = h->GetBinError(i1);
1331 sum = v1 + v2;
1332 esum = sqrt(ev1*ev1+ev2*ev2);
1333 h->SetBinContent(i1,sum);
1334 h->SetBinError(i1,esum);
1335 }
1336}
1337
1338void AliAnalysisTaskDptDptQA::fillHistoWithArray(TH2 * h, double * array, int size1, int size2)
1339{
1340 int i, i1;
1341 int j, j1;
1342 double v1, ev1, v2, ev2, sum, esum;
1343 for (i=0, i1=1; i<size1; ++i,++i1)
1344 {
1345 for (j=0, j1=1; j<size2; ++j,++j1)
1346 {
1347 v1 = array[i*size2+j]; ev1 = sqrt(v1);
1348 v2 = h->GetBinContent(i1,j1);
1349 ev2 = h->GetBinError(i1,j1);
1350 sum = v1 + v2;
1351 esum = sqrt(ev1*ev1+ev2*ev2);
1352 h->SetBinContent(i1,j1,sum);
1353 h->SetBinError(i1,j1,esum);
1354 }
1355 }
1356}
1357
1358void AliAnalysisTaskDptDptQA::fillHistoWithArray(TH3 * h, double * array, int size1, int size2, int size3)
1359{
1360 int i, i1;
1361 int j, j1;
1362 int k, k1;
1363 double v1, ev1, v2, ev2, sum, esum;
1364 int size23 = size2*size3;
1365 for (i=0, i1=1; i<size1; ++i,++i1)
1366 {
1367 for (j=0, j1=1; j<size2; ++j,++j1)
1368 {
1369 for (k=0, k1=1; k<size3; ++k,++k1)
1370 {
1371 v1 = array[i*size23+j*size3+k]; ev1 = sqrt(v1);
1372 v2 = h->GetBinContent(i1,j1,k1);
1373 ev2 = h->GetBinError(i1,j1,k1);
1374 sum = v1 + v2;
1375 esum = sqrt(ev1*ev1+ev2*ev2);
1376 h->SetBinContent(i1,j1,k1,sum);
1377 h->SetBinError(i1,j1,k1,esum);
1378 }
1379 }
1380 }
1381}
1382
1383//________________________________________________________________________
1384double * AliAnalysisTaskDptDptQA::getDoubleArray(int size, double v)
1385{
1386 /// Allocate an array of type double with n values
1387 /// Initialize the array to the given value
1388 double * array = new double [size];
1389 for (int i=0;i<size;++i) array[i]=v;
1390 return array;
1391}
1392
1393//________________________________________________________________________
1394float * AliAnalysisTaskDptDptQA::getFloatArray(int size, float v)
1395{
1396 /// Allocate an array of type float with n values
1397 /// Initialize the array to the given value
1398 float * array = new float [size];
1399 for (int i=0;i<size;++i) array[i]=v;
1400 return array;
1401}
1402
1403
1404//________________________________________________________________________
1405TH1D * AliAnalysisTaskDptDptQA::createHisto1D(const TString & name, const TString & title,
1406 int n, double xMin, double xMax,
1407 const TString & xTitle, const TString & yTitle)
1408{
1409 //CreateHisto new 1D historgram
1410 AliInfo(Form("createHisto 1D histo %s nBins: %d xMin: %f xMax: %f",name.Data(),n,xMin,xMax));
1411 TH1D * h = new TH1D(name,title,n,xMin,xMax);
1412 h->GetXaxis()->SetTitle(xTitle);
1413 h->GetYaxis()->SetTitle(yTitle);
1414 addToList(h);
1415 return h;
1416}
1417
1418
1419//________________________________________________________________________
1420TH1D * AliAnalysisTaskDptDptQA::createHisto1D(const TString & name, const TString & title,
1421 int n, double * bins,
1422 const TString & xTitle, const TString & yTitle)
1423{
1424 AliInfo(Form("createHisto 1D histo %s with %d non uniform nBins",name.Data(),n));
1425 TH1D * h = new TH1D(name,title,n,bins);
1426 h->GetXaxis()->SetTitle(xTitle);
1427 h->GetYaxis()->SetTitle(yTitle);
1428 addToList(h);
1429 return h;
1430}
1431
1432
1433//________________________________________________________________________
1434TH2D * AliAnalysisTaskDptDptQA::createHisto2D(const TString & name, const TString & title,
1435 int nx, double xMin, double xMax, int ny, double yMin, double yMax,
1436 const TString & xTitle, const TString & yTitle, const TString & zTitle)
1437{
1438 AliInfo(Form("createHisto 2D histo %s nx: %d xMin: %f10.4 xMax: %f10.4 ny: %d yMin: %f10.4 yMax: %f10.4",name.Data(),nx,xMin,xMax,ny,yMin,yMax));
1439 TH2D * h = new TH2D(name,title,nx,xMin,xMax,ny,yMin,yMax);
1440 h->GetXaxis()->SetTitle(xTitle);
1441 h->GetYaxis()->SetTitle(yTitle);
1442 h->GetZaxis()->SetTitle(zTitle);
1443 addToList(h);
1444 return h;
1445}
1446
1447//________________________________________________________________________
1448TH2D * AliAnalysisTaskDptDptQA::createHisto2D(const TString & name, const TString & title,
1449 int nx, double* xbins, int ny, double yMin, double yMax,
1450 const TString & xTitle, const TString & yTitle, const TString & zTitle)
1451{
1452 AliInfo(Form("createHisto 2D histo %s with %d non uniform nBins",name.Data(),nx));
1453 TH2D * h;
1454 h = new TH2D(name,title,nx,xbins,ny,yMin,yMax);
1455 h->GetXaxis()->SetTitle(xTitle);
1456 h->GetYaxis()->SetTitle(yTitle);
1457 h->GetZaxis()->SetTitle(zTitle);
1458 addToList(h);
1459 return h;
1460}
1461
1462//// F /////
1463//________________________________________________________________________
1464TH1F * AliAnalysisTaskDptDptQA::createHisto1F(const TString & name, const TString & title,
1465 int n, double xMin, double xMax,
1466 const TString & xTitle, const TString & yTitle)
1467{
1468 //CreateHisto new 1D historgram
1469 AliInfo(Form("createHisto 1D histo %s nBins: %d xMin: %f xMax: %f",name.Data(),n,xMin,xMax));
1470 TH1F * h = new TH1F(name,title,n,xMin,xMax);
1471 h->GetXaxis()->SetTitle(xTitle);
1472 h->GetYaxis()->SetTitle(yTitle);
1473 addToList(h);
1474 return h;
1475}
1476
1477
1478//________________________________________________________________________
1479TH1F * AliAnalysisTaskDptDptQA::createHisto1F(const TString & name, const TString & title,
1480 int n, double * bins,
1481 const TString & xTitle, const TString & yTitle)
1482{
1483 AliInfo(Form("createHisto 1D histo %s with %d non uniform nBins",name.Data(),n));
1484 TH1F * h = new TH1F(name,title,n,bins);
1485 h->GetXaxis()->SetTitle(xTitle);
1486 h->GetYaxis()->SetTitle(yTitle);
1487 addToList(h);
1488 return h;
1489}
1490
1491
1492//________________________________________________________________________
1493TH2F * AliAnalysisTaskDptDptQA::createHisto2F(const TString & name, const TString & title,
1494 int nx, double xMin, double xMax, int ny, double yMin, double yMax,
1495 const TString & xTitle, const TString & yTitle, const TString & zTitle)
1496{
1497 AliInfo(Form("createHisto 2D histo %s nx: %d xMin: %f10.4 xMax: %f10.4 ny: %d yMin: %f10.4 yMax: %f10.4",name.Data(),nx,xMin,xMax,ny,yMin,yMax));
1498 TH2F * h = new TH2F(name,title,nx,xMin,xMax,ny,yMin,yMax);
1499 h->GetXaxis()->SetTitle(xTitle);
1500 h->GetYaxis()->SetTitle(yTitle);
1501 h->GetZaxis()->SetTitle(zTitle);
1502 addToList(h);
1503 return h;
1504}
1505
1506//________________________________________________________________________
1507TH2F * AliAnalysisTaskDptDptQA::createHisto2F(const TString & name, const TString & title,
1508 int nx, double* xbins, int ny, double yMin, double yMax,
1509 const TString & xTitle, const TString & yTitle, const TString & zTitle)
1510{
1511 AliInfo(Form("createHisto 2D histo %s with %d non uniform nBins",name.Data(),nx));
1512 TH2F * h;
1513 h = new TH2F(name,title,nx,xbins,ny,yMin,yMax);
1514 h->GetXaxis()->SetTitle(xTitle);
1515 h->GetYaxis()->SetTitle(yTitle);
1516 h->GetZaxis()->SetTitle(zTitle);
1517 addToList(h);
1518 return h;
1519}
1520
1521
1522//________________________________________________________________________
1523TH3F * AliAnalysisTaskDptDptQA::createHisto3F(const TString & name, const TString & title,
1524 int nx, double xMin, double xMax,
1525 int ny, double yMin, double yMax,
1526 int nz, double zMin, double zMax,
1527 const TString & xTitle, const TString & yTitle, const TString & zTitle)
1528{
1529 AliInfo(Form("createHisto 2D histo %s nx: %d xMin: %f10.4 xMax: %f10.4 ny: %d yMin: %f10.4 yMax: %f10.4 nz: %d zMin: %f10.4 zMax: %f10.4",name.Data(),nx,xMin,xMax,ny,yMin,yMax,nz,zMin,zMax));
1530 TH3F * h = new TH3F(name,title,nx,xMin,xMax,ny,yMin,yMax,nz,zMin,zMax);
1531 h->GetXaxis()->SetTitle(xTitle);
1532 h->GetYaxis()->SetTitle(yTitle);
1533 h->GetZaxis()->SetTitle(zTitle);
1534 addToList(h);
1535 return h;
1536}
1537
1538
1539//________________________________________________________________________
1540TProfile * AliAnalysisTaskDptDptQA::createProfile(const TString & name, const TString & description,
1541 int nx,double xMin,double xMax,
1542 const TString & xTitle, const TString & yTitle)
1543{
1544 AliInfo(Form("createHisto 1D profile %s nBins: %d xMin: %f10.4 xMax: %f10.4",name.Data(),nx,xMin,xMax));
1545 TProfile * h = new TProfile(name,description,nx,xMin,xMax);
1546 h->GetXaxis()->SetTitle(xTitle);
1547 h->GetYaxis()->SetTitle(yTitle);
1548 addToList(h);
1549 return h;
1550}
1551
1552//________________________________________________________________________
1553TProfile * AliAnalysisTaskDptDptQA::createProfile(const TString & name,const TString & description,
1554 int nx, double* bins,
1555 const TString & xTitle, const TString & yTitle)
1556{
1557 AliInfo(Form("createHisto 1D profile %s with %d non uniform bins",name.Data(),nx));
1558 TProfile * h = new TProfile(name,description,nx,bins);
1559 h->GetXaxis()->SetTitle(xTitle);
1560 h->GetYaxis()->SetTitle(yTitle);
1561 addToList(h);
1562 return h;
1563}
1564
1565
1566void AliAnalysisTaskDptDptQA::addToList(TH1 *h)
1567{
1568 if (_outputHistoList)
1569 {
1570 _outputHistoList->Add(h);
1571 }
1572 else
1573 AliInfo("addToList(TH1 *h) _outputHistoList is null!!!!! Should abort ship");
1574
1575}
1576
1577
1578