]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/Correlations/DPhi/AliAnalysisTaskDptDptQA.cxx
Adding PWGCF/Correlations/DPhi/AliAnalysisTaskDptDptQA.cxx
[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       _mult3    = _nTracks; 
1062       _mult4    = v0Centr;
1063       _mult4a    = v0ACentr;
1064       _mult5    = trkCentr;
1065       _mult6    = spdCentr;
1066       _field    = fAODEvent->GetMagneticField(); 
1067       
1068       //_centralityMethod
1069       switch (_centralityMethod)
1070         {
1071         case 0: centrality = _mult0; break;
1072         case 1: centrality = _mult1; break;
1073         case 2: centrality = _mult2; break;
1074         case 3: centrality = _mult3; break;
1075         case 4: centrality = _mult4; break;
1076         case 5: centrality = _mult5; break;
1077         case 6: centrality = _mult6; break;
1078         case 7: centrality = _mult4a; break;
1079         }
1080       
1081       
1082       if ( centrality < _centralityMin ||  centrality > _centralityMax )
1083         {
1084           return;
1085         }
1086       _eventAccounting->Fill(2);// count all events with right centrality
1087       
1088       // filter on z and xy vertex
1089       vertex = (AliAODVertex*) fAODEvent->GetPrimaryVertex();
1090       // Double_t V[2];
1091       //vertex->GetXYZ(V);      
1092
1093       if(vertex)
1094         {
1095           Double32_t fCov[6];
1096           vertex->GetCovarianceMatrix(fCov);
1097           if(vertex->GetNContributors() > 0)
1098             {
1099               if(fCov[5] != 0)
1100                 {
1101                   vertexX = vertex->GetX();
1102                   vertexY = vertex->GetY();
1103                   vertexZ = vertex->GetZ();
1104                   
1105                   if(TMath::Abs(vertexZ) > 10)
1106                     {
1107                       return;
1108                     } // Z-Vertex Cut  
1109                 }
1110             }
1111         }
1112       
1113       _vertexZ->Fill(vertexZ);
1114       
1115       iVertex = int((vertexZ-_min_vertexZ)/_width_vertexZ);
1116       iVertexP1 = iVertex*_nBins_etaPhiPt_1;
1117       iVertexP2 = iVertex*_nBins_etaPhiPt_2;
1118       if (iVertex<0 || iVertex>=_nBins_vertexZ)
1119         {
1120           AliError("AliAnalysisTaskDptDptQA::Exec(Option_t *option) iVertex<0 || iVertex>=_nBins_vertexZ ");
1121           return;
1122         }
1123       _eventAccounting->Fill(3);// count all calls to this function with a valid pointer
1124       //====================== 
1125       
1126       //*********************************************************
1127       TExMap *trackMap = new TExMap();//Mapping matrix----                                            
1128       //1st loop track                                                                                
1129       for(Int_t i = 0; i < _nTracks; i++)
1130         {
1131           AliAODTrack* aodTrack = dynamic_cast<AliAODTrack *>(fAODEvent->GetTrack(i));
1132           if(!aodTrack) {
1133             AliError(Form("ERROR: Could not retrieve AODtrack %d",i));
1134             continue;
1135           }
1136           Int_t gID = aodTrack->GetID();
1137           if (aodTrack->TestFilterBit(1)) trackMap->Add(gID, i);//Global tracks                       
1138         }
1139            
1140       AliAODTrack* newAodTrack;
1141       
1142       //Track Loop starts here
1143       for (int iTrack=0; iTrack< _nTracks; iTrack++)
1144         {
1145           AliAODTrack* t = dynamic_cast<AliAODTrack *>(fAODEvent->GetTrack(iTrack));
1146           if (!t) {
1147             AliError(Form("Could not receive track %d", iTrack));
1148             continue;
1149           }
1150           
1151           bitOK  = t->TestFilterBit(_trackFilterBit);
1152           if (!bitOK) continue; //128bit or 272bit
1153                   
1154           Int_t gID = t->GetID();
1155           newAodTrack = gID >= 0 ?t : fAODEvent->GetTrack(trackMap->GetValue(-1-gID));
1156           
1157           q      = t->Charge();
1158           charge = int(q);
1159           phi    = t->Phi();
1160           pt     = t->Pt();
1161           px     = t->Px();
1162           py     = t->Py();
1163           pz     = t->Pz();
1164           eta    = t->Eta();
1165           //dcaXY = t->DCA(); 
1166           //dcaZ  = t->ZAtDCA();  
1167
1168           TVector3 mom(px, py, pz);
1169
1170           //Double_t nsigmaelectron = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kElectron));
1171           Double_t nsigmapion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kPion));
1172           //Double_t nsigmakaon = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kKaon));
1173           //Double_t nsigmaproton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kProton));
1174           
1175           if(charge == 0) continue;
1176           
1177           // Kinematics cuts used                                                                                        
1178           if( pt < _min_pt_1 || pt > _max_pt_1) continue;
1179           if( eta < _min_eta_1 || eta > _max_eta_1) continue;
1180
1181           Double_t pos[3];
1182           newAodTrack->GetXYZ(pos);
1183
1184           Double_t DCAX = pos[0] - vertexX;
1185           Double_t DCAY = pos[1] - vertexY;
1186           Double_t DCAZ = pos[2] - vertexZ;
1187                 
1188           Double_t DCAXY = TMath::Sqrt((DCAX*DCAX) + (DCAY*DCAY));
1189           
1190           if (DCAZ     <  _dcaZMin || 
1191               DCAZ     >  _dcaZMax ||
1192               DCAXY    >  _dcaXYMax ) continue; 
1193           
1194           //==== QA ===========================
1195           _dcaz->Fill(DCAZ);
1196           _dcaxy->Fill(DCAXY);
1197           _etadis->Fill(eta);
1198           _phidis->Fill(phi);
1199           _spectra->Fill(pt);
1200           //===================================
1201
1202           if(TMath::Abs(nsigmapion) < fNSigmaCut && charge == -1) {
1203             Kaon1Charge[nKaon1s] = q;
1204             Kaon1Px[nKaon1s] = mom.X();
1205             Kaon1Py[nKaon1s] = mom.Y();
1206             Kaon1Pz[nKaon1s] = mom.Z();
1207             nKaon1s++;
1208
1209           }
1210           if(TMath::Abs(nsigmapion) < fNSigmaCut && charge == 1) {
1211             Kaon2Charge[nKaon2s] = q;
1212             Kaon2Px[nKaon1s] = mom.X();
1213             Kaon2Py[nKaon1s] = mom.Y();
1214             Kaon2Pz[nKaon1s] = mom.Z();
1215             nKaon2s++;
1216
1217           }
1218         
1219           TLorentzVector pion1(0,0,0,0);
1220           TLorentzVector pion2(0,0,0,0);
1221           TLorentzVector Kaon(0,0,0,0);
1222
1223           for(int i=0; i<nKaon1s; i++)
1224             {
1225               pion1.SetXYZM(Kaon1Px[i],Kaon1Py[i],Kaon1Pz[i],0.139570);
1226               for(int j=0; j<nKaon2s; j++)
1227                 {
1228                   pion2.SetXYZM(Kaon2Px[j],Kaon2Py[j],Kaon2Pz[j],0.139570);
1229                   Kaon = pion1 + pion2;
1230                   float rapidity = Kaon.Rapidity();
1231                   float pairpt = Kaon.Pt();
1232                   if( rapidity < -0.50 || rapidity > 0.50 ) continue;
1233                   _invMass->Fill(pairpt, Kaon.M());
1234                 }
1235             }
1236   
1237           } //iTrack
1238     } //aod 
1239 }
1240
1241 void   AliAnalysisTaskDptDptQA::FinishTaskOutput()
1242 {
1243   AliInfo("AliAnalysisTaskDptDptQA::FinishTaskOutput() Starting.");
1244   Printf("= 0 ====================================================================");
1245   finalizeHistograms();
1246   AliInfo("= 1 ====================================================================");
1247   PostData(0,_outputHistoList);
1248   AliInfo("= 2 ====================================================================");
1249   AliInfo("AliAnalysisTaskDptDptQA::FinishTaskOutput() Done.");
1250 }
1251
1252 void   AliAnalysisTaskDptDptQA::Terminate(Option_t* /*option*/)
1253 {
1254   AliInfo("AliAnalysisTaskDptDptQA::Terminate() Starting/Done.");
1255 }
1256
1257
1258 //Tools
1259 //===================================================================================================
1260 void  AliAnalysisTaskDptDptQA::fillHistoWithArray(TH1 * h, float * array, int size)
1261 {
1262   int i, i1;
1263   float v1, ev1, v2, ev2, sum, esum;
1264   for (i=0, i1=1; i<size; ++i,++i1)
1265     {
1266     v1  = array[i]; ev1 = sqrt(v1);
1267     v2  = h->GetBinContent(i1);
1268     ev2 = h->GetBinError(i1);
1269     sum = v1 + v2;
1270     esum = sqrt(ev1*ev1+ev2*ev2);
1271     h->SetBinContent(i1,sum);
1272     h->SetBinError(i1,esum);
1273     }
1274 }
1275
1276 void  AliAnalysisTaskDptDptQA::fillHistoWithArray(TH2 * h, float * array, int size1, int size2)
1277 {
1278   int i, i1;
1279   int j, j1;
1280   float v1, ev1, v2, ev2, sum, esum;
1281   for (i=0, i1=1; i<size1; ++i,++i1)
1282     {
1283     for (j=0, j1=1; j<size2; ++j,++j1)
1284       {
1285       v1  = array[i*size2+j]; ev1 = sqrt(v1);
1286       v2  = h->GetBinContent(i1,j1);
1287       ev2 = h->GetBinError(i1,j1);
1288       sum = v1 + v2;
1289       esum = sqrt(ev1*ev1+ev2*ev2);
1290       h->SetBinContent(i1,j1,sum);
1291       h->SetBinError(i1,j1,esum);
1292       }
1293     }
1294 }
1295
1296 void  AliAnalysisTaskDptDptQA::fillHistoWithArray(TH3 * h, float * array, int size1, int size2, int size3)
1297 {
1298   int i, i1;
1299   int j, j1;
1300   int k, k1;
1301   float v1, ev1, v2, ev2, sum, esum;
1302   int size23 = size2*size3;
1303   for (i=0, i1=1; i<size1; ++i,++i1)
1304     {
1305     for (j=0, j1=1; j<size2; ++j,++j1)
1306       {
1307       for (k=0, k1=1; k<size3; ++k,++k1)
1308         {
1309         v1  = array[i*size23+j*size3+k]; ev1 = sqrt(v1);
1310         v2  = h->GetBinContent(i1,j1,k1);
1311         ev2 = h->GetBinError(i1,j1,k1);
1312         sum = v1 + v2;
1313         esum = sqrt(ev1*ev1+ev2*ev2);
1314         h->SetBinContent(i1,j1,k1,sum);
1315         h->SetBinError(i1,j1,k1,esum);
1316         }
1317       }
1318     }
1319 }
1320
1321 void  AliAnalysisTaskDptDptQA::fillHistoWithArray(TH1 * h, double * array, int size)
1322 {
1323   int i, i1;
1324   double v1, ev1, v2, ev2, sum, esum;
1325   for (i=0, i1=1; i<size; ++i,++i1)
1326     {
1327     v1  = array[i]; ev1 = sqrt(v1);
1328     v2  = h->GetBinContent(i1);
1329     ev2 = h->GetBinError(i1);
1330     sum = v1 + v2;
1331     esum = sqrt(ev1*ev1+ev2*ev2);
1332     h->SetBinContent(i1,sum);
1333     h->SetBinError(i1,esum);
1334     }
1335 }
1336
1337 void  AliAnalysisTaskDptDptQA::fillHistoWithArray(TH2 * h, double * array, int size1, int size2)
1338 {
1339   int i, i1;
1340   int j, j1;
1341   double v1, ev1, v2, ev2, sum, esum;
1342   for (i=0, i1=1; i<size1; ++i,++i1)
1343     {
1344     for (j=0, j1=1; j<size2; ++j,++j1)
1345       {
1346       v1  = array[i*size2+j]; ev1 = sqrt(v1);
1347       v2  = h->GetBinContent(i1,j1);
1348       ev2 = h->GetBinError(i1,j1);
1349       sum = v1 + v2;
1350       esum = sqrt(ev1*ev1+ev2*ev2);
1351       h->SetBinContent(i1,j1,sum);
1352       h->SetBinError(i1,j1,esum);
1353       }
1354     }
1355 }
1356
1357 void  AliAnalysisTaskDptDptQA::fillHistoWithArray(TH3 * h, double * array, int size1, int size2, int size3)
1358 {
1359   int i, i1;
1360   int j, j1;
1361   int k, k1;
1362   double v1, ev1, v2, ev2, sum, esum;
1363   int size23 = size2*size3;
1364   for (i=0, i1=1; i<size1; ++i,++i1)
1365     {
1366     for (j=0, j1=1; j<size2; ++j,++j1)
1367       {
1368       for (k=0, k1=1; k<size3; ++k,++k1)
1369         {
1370         v1  = array[i*size23+j*size3+k]; ev1 = sqrt(v1);
1371         v2  = h->GetBinContent(i1,j1,k1);
1372         ev2 = h->GetBinError(i1,j1,k1);
1373         sum = v1 + v2;
1374         esum = sqrt(ev1*ev1+ev2*ev2);
1375         h->SetBinContent(i1,j1,k1,sum);
1376         h->SetBinError(i1,j1,k1,esum);
1377         }
1378       }
1379     }
1380 }
1381
1382 //________________________________________________________________________
1383 double *  AliAnalysisTaskDptDptQA::getDoubleArray(int size, double v)
1384 {
1385   /// Allocate an array of type double with n values
1386   /// Initialize the array to the given value
1387   double * array = new double [size];
1388   for (int i=0;i<size;++i) array[i]=v;
1389   return array;
1390 }
1391
1392 //________________________________________________________________________
1393 float *  AliAnalysisTaskDptDptQA::getFloatArray(int size, float v)
1394 {
1395   /// Allocate an array of type float with n values
1396   /// Initialize the array to the given value
1397   float * array = new float [size];
1398   for (int i=0;i<size;++i) array[i]=v;
1399   return array;
1400 }
1401
1402
1403 //________________________________________________________________________
1404 TH1D * AliAnalysisTaskDptDptQA::createHisto1D(const TString &  name, const TString &  title, 
1405                                                       int n, double xMin, double xMax, 
1406                                                       const TString &  xTitle, const TString &  yTitle)
1407 {
1408   //CreateHisto new 1D historgram
1409   AliInfo(Form("createHisto 1D histo %s   nBins: %d  xMin: %f   xMax: %f",name.Data(),n,xMin,xMax));
1410   TH1D * h = new TH1D(name,title,n,xMin,xMax);
1411   h->GetXaxis()->SetTitle(xTitle);
1412   h->GetYaxis()->SetTitle(yTitle);
1413   addToList(h);
1414   return h;
1415 }
1416
1417
1418 //________________________________________________________________________
1419 TH1D * AliAnalysisTaskDptDptQA::createHisto1D(const TString &  name, const TString &  title, 
1420                                                       int n, double * bins, 
1421                                                       const TString &  xTitle, const TString &  yTitle)
1422 {
1423   AliInfo(Form("createHisto 1D histo %s   with %d non uniform nBins",name.Data(),n));
1424   TH1D * h = new TH1D(name,title,n,bins);
1425   h->GetXaxis()->SetTitle(xTitle);
1426   h->GetYaxis()->SetTitle(yTitle);
1427   addToList(h);
1428   return h;
1429 }
1430
1431
1432 //________________________________________________________________________
1433 TH2D * AliAnalysisTaskDptDptQA::createHisto2D(const TString &  name, const TString &  title, 
1434                                                       int nx, double xMin, double xMax, int ny, double yMin, double yMax, 
1435                                                       const TString &  xTitle, const TString &  yTitle, const TString &  zTitle)
1436 {
1437   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));
1438   TH2D * h = new TH2D(name,title,nx,xMin,xMax,ny,yMin,yMax);
1439   h->GetXaxis()->SetTitle(xTitle);
1440   h->GetYaxis()->SetTitle(yTitle);
1441   h->GetZaxis()->SetTitle(zTitle);
1442   addToList(h);
1443   return h;
1444 }
1445
1446 //________________________________________________________________________
1447 TH2D * AliAnalysisTaskDptDptQA::createHisto2D(const TString &  name, const TString &  title, 
1448                                                       int nx, double* xbins, int ny, double yMin, double yMax, 
1449                                                       const TString &  xTitle, const TString &  yTitle, const TString &  zTitle)
1450 {
1451   AliInfo(Form("createHisto 2D histo %s   with %d non uniform nBins",name.Data(),nx));
1452   TH2D * h;
1453   h = new TH2D(name,title,nx,xbins,ny,yMin,yMax);
1454   h->GetXaxis()->SetTitle(xTitle);
1455   h->GetYaxis()->SetTitle(yTitle);
1456   h->GetZaxis()->SetTitle(zTitle);
1457   addToList(h);
1458   return h;
1459 }
1460
1461 //// F /////
1462 //________________________________________________________________________
1463 TH1F * AliAnalysisTaskDptDptQA::createHisto1F(const TString &  name, const TString &  title, 
1464                                                         int n, double xMin, double xMax, 
1465                                                         const TString &  xTitle, const TString &  yTitle)
1466 {
1467   //CreateHisto new 1D historgram
1468   AliInfo(Form("createHisto 1D histo %s   nBins: %d  xMin: %f   xMax: %f",name.Data(),n,xMin,xMax));
1469   TH1F * h = new TH1F(name,title,n,xMin,xMax);
1470   h->GetXaxis()->SetTitle(xTitle);
1471   h->GetYaxis()->SetTitle(yTitle);
1472   addToList(h);
1473   return h;
1474 }
1475
1476
1477 //________________________________________________________________________
1478 TH1F * AliAnalysisTaskDptDptQA::createHisto1F(const TString &  name, const TString &  title, 
1479                                                         int n, double * bins, 
1480                                                         const TString &  xTitle, const TString &  yTitle)
1481 {
1482   AliInfo(Form("createHisto 1D histo %s   with %d non uniform nBins",name.Data(),n));
1483   TH1F * h = new TH1F(name,title,n,bins);
1484   h->GetXaxis()->SetTitle(xTitle);
1485   h->GetYaxis()->SetTitle(yTitle);
1486   addToList(h);
1487   return h;
1488 }
1489
1490
1491 //________________________________________________________________________
1492 TH2F * AliAnalysisTaskDptDptQA::createHisto2F(const TString &  name, const TString &  title, 
1493                                                         int nx, double xMin, double xMax, int ny, double yMin, double yMax, 
1494                                                         const TString &  xTitle, const TString &  yTitle, const TString &  zTitle)
1495 {
1496   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));
1497   TH2F * h = new TH2F(name,title,nx,xMin,xMax,ny,yMin,yMax);
1498   h->GetXaxis()->SetTitle(xTitle);
1499   h->GetYaxis()->SetTitle(yTitle);
1500   h->GetZaxis()->SetTitle(zTitle);
1501   addToList(h);
1502   return h;
1503 }
1504
1505 //________________________________________________________________________
1506 TH2F * AliAnalysisTaskDptDptQA::createHisto2F(const TString &  name, const TString &  title, 
1507                                                         int nx, double* xbins, int ny, double yMin, double yMax, 
1508                                                         const TString &  xTitle, const TString &  yTitle, const TString &  zTitle)
1509 {
1510   AliInfo(Form("createHisto 2D histo %s   with %d non uniform nBins",name.Data(),nx));
1511   TH2F * h;
1512   h = new TH2F(name,title,nx,xbins,ny,yMin,yMax);
1513   h->GetXaxis()->SetTitle(xTitle);
1514   h->GetYaxis()->SetTitle(yTitle);
1515   h->GetZaxis()->SetTitle(zTitle);
1516   addToList(h);
1517   return h;
1518 }
1519
1520
1521 //________________________________________________________________________
1522 TH3F * AliAnalysisTaskDptDptQA::createHisto3F(const TString &  name, const TString &  title, 
1523                                                       int nx, double xMin, double xMax, 
1524                                                       int ny, double yMin, double yMax, 
1525                                                       int nz, double zMin, double zMax, 
1526                                                       const TString &  xTitle, const TString &  yTitle, const TString &  zTitle)
1527 {
1528   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));
1529   TH3F * h = new TH3F(name,title,nx,xMin,xMax,ny,yMin,yMax,nz,zMin,zMax);
1530   h->GetXaxis()->SetTitle(xTitle);
1531   h->GetYaxis()->SetTitle(yTitle);
1532   h->GetZaxis()->SetTitle(zTitle);
1533   addToList(h);
1534   return h;
1535 }
1536
1537
1538 //________________________________________________________________________
1539 TProfile * AliAnalysisTaskDptDptQA::createProfile(const TString & name, const TString & description, 
1540                                                             int nx,double xMin,double xMax,
1541                                                             const TString &  xTitle, const TString &  yTitle)
1542 {
1543   AliInfo(Form("createHisto 1D profile %s   nBins: %d  xMin: %f10.4 xMax: %f10.4",name.Data(),nx,xMin,xMax));
1544   TProfile * h = new TProfile(name,description,nx,xMin,xMax);
1545   h->GetXaxis()->SetTitle(xTitle);
1546   h->GetYaxis()->SetTitle(yTitle);
1547   addToList(h);
1548   return h;  
1549 }
1550
1551 //________________________________________________________________________
1552 TProfile * AliAnalysisTaskDptDptQA::createProfile(const TString &  name,const TString &  description, 
1553                                                             int nx,  double* bins,
1554                                                             const TString &  xTitle, const TString &  yTitle)
1555 {
1556   AliInfo(Form("createHisto 1D profile %s  with %d non uniform bins",name.Data(),nx));
1557   TProfile * h = new TProfile(name,description,nx,bins);
1558   h->GetXaxis()->SetTitle(xTitle);
1559   h->GetYaxis()->SetTitle(yTitle);
1560   addToList(h);
1561   return h;
1562 }
1563
1564
1565 void   AliAnalysisTaskDptDptQA::addToList(TH1 *h)
1566 {
1567   if (_outputHistoList)
1568     {
1569     _outputHistoList->Add(h);
1570     }
1571   else
1572     AliInfo("addToList(TH1 *h) _outputHistoList is null!!!!! Should abort ship");
1573
1574 }
1575
1576
1577