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