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