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