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