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