25 #include "AliAnalysisManager.h"
27 #include "AliAODHandler.h"
28 #include "AliAODInputHandler.h"
29 #include "AliInputEventHandler.h"
31 #include "AliESDEvent.h"
32 #include "AliESDInputHandler.h"
33 #include "AliMultiplicity.h"
34 #include "AliCentrality.h"
35 #include "AliAnalysisTaskDptDptQA.h"
38 #include "AliPIDResponse.h"
40 #include "AliESDVertex.h"
41 #include "AliESDEvent.h"
42 #include "AliESDInputHandler.h"
43 #include "AliAODEvent.h"
44 #include "AliAODTrack.h"
45 #include "AliAODInputHandler.h"
47 #include "AliESDEvent.h"
48 #include "AliAODEvent.h"
50 #include "AliESDtrackCuts.h"
51 #include "AliAODMCHeader.h"
54 #include "AliGenHijingEventHeader.h"
55 #include "AliGenEventHeader.h"
57 #include "AliAODPid.h"
58 #include "AliPIDResponse.h"
59 #include "AliAODpidUtil.h"
60 #include "AliPIDCombined.h"
64 ClassImp(AliAnalysisTaskDptDptQA)
66 AliAnalysisTaskDptDptQA::AliAnalysisTaskDptDptQA()
67 : AliAnalysisTaskSE(),
69 fESDEvent(0), //! ESD Event
73 _twoPi ( 2.0 * 3.1415927),
80 _rejectPairConversion ( 0),
85 _centralityMethod ( 4),
88 _requestedCharge_1 ( 1),
89 _requestedCharge_2 ( -1),
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),
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),
146 _nBins_etaPhiPt_1(0),
147 _nBins_zEtaPhiPt_1(0),
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),
154 _nBins_etaPhiPt_2(0),
155 _nBins_zEtaPhiPt_2(0),
175 __s1pt_1_vsEtaPhi(0),
176 __n1_1_vsZEtaPhiPt(0),
179 __s1pt_2_vsEtaPhi(0),
180 __n1_2_vsZEtaPhiPt(0),
183 __s2ptpt_12_vsEtaPhi(0),
184 __s2PtN_12_vsEtaPhi(0),
185 __s2NPt_12_vsEtaPhi(0),
188 _eventAccounting ( 0),
206 _n1_1_vsEtaVsPhi ( 0),
207 _s1pt_1_vsEtaVsPhi ( 0),
208 _n1_1_vsZVsEtaVsPhiVsPt ( 0),
217 _n1_2_vsEtaVsPhi ( 0),
218 _s1pt_2_vsEtaVsPhi ( 0),
219 _n1_2_vsZVsEtaVsPhiVsPt ( 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),
237 _s2PtPtNw_12_vsM ( 0),
238 _s2PtNNw_12_vsM ( 0),
239 _s2NPtNw_12_vsM ( 0),
261 intBinCorrName("NA"),
311 _title_etaPhi_1("NA"),
313 _title_SumPt_1("NA"),
314 _title_AvgPt_1("NA"),
316 _title_AvgSumPt_1("NA"),
321 _title_etaPhi_2("NA"),
323 _title_SumPt_2("NA"),
324 _title_AvgPt_2("NA"),
326 _title_AvgSumPt_2("NA"),
328 _title_etaPhi_12("NA"),
330 _title_AvgN2_12("NA"),
331 _title_AvgSumPtPt_12("NA"),
332 _title_AvgSumPtN_12("NA"),
333 _title_AvgNSumPt_12("NA"),
343 printf("Default constructor called \n");
345 printf("passed \n ");
349 AliAnalysisTaskDptDptQA::AliAnalysisTaskDptDptQA(const TString & name)
350 : AliAnalysisTaskSE(name),
356 _twoPi ( 2.0 * 3.1415927),
361 _sameFilter ( false),
363 _rejectPairConversion ( 0),
366 _vertexXYMin ( -10.),
368 _centralityMethod ( 4),
369 _centralityMin ( 0.),
370 _centralityMax ( 1.),
371 _requestedCharge_1 ( 1),
372 _requestedCharge_2 ( -1),
380 _trackFilterBit ( 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),
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),
429 _nBins_etaPhiPt_1(0),
430 _nBins_zEtaPhiPt_1(0),
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),
437 _nBins_etaPhiPt_2(0),
438 _nBins_zEtaPhiPt_2(0),
458 __s1pt_1_vsEtaPhi(0),
459 __n1_1_vsZEtaPhiPt(0),
462 __s1pt_2_vsEtaPhi(0),
463 __n1_2_vsZEtaPhiPt(0),
466 __s2ptpt_12_vsEtaPhi(0),
467 __s2PtN_12_vsEtaPhi(0),
468 __s2NPt_12_vsEtaPhi(0),
471 _eventAccounting ( 0),
489 _n1_1_vsEtaVsPhi ( 0),
490 _s1pt_1_vsEtaVsPhi ( 0),
491 _n1_1_vsZVsEtaVsPhiVsPt ( 0),
500 _n1_2_vsEtaVsPhi ( 0),
501 _s1pt_2_vsEtaVsPhi ( 0),
502 _n1_2_vsZVsEtaVsPhiVsPt ( 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),
520 _s2PtPtNw_12_vsM ( 0),
521 _s2PtNNw_12_vsM ( 0),
522 _s2NPtNw_12_vsM ( 0),
544 intBinCorrName("NA"),
594 _title_etaPhi_1("NA"),
596 _title_SumPt_1("NA"),
597 _title_AvgPt_1("NA"),
599 _title_AvgSumPt_1("NA"),
604 _title_etaPhi_2("NA"),
606 _title_SumPt_2("NA"),
607 _title_AvgPt_2("NA"),
609 _title_AvgSumPt_2("NA"),
611 _title_etaPhi_12("NA"),
613 _title_AvgN2_12("NA"),
614 _title_AvgSumPtPt_12("NA"),
615 _title_AvgSumPtN_12("NA"),
616 _title_AvgNSumPt_12("NA"),
626 printf("2nd constructor called ");
628 DefineOutput(0, TList::Class());
634 AliAnalysisTaskDptDptQA::~AliAnalysisTaskDptDptQA()
639 void AliAnalysisTaskDptDptQA::UserCreateOutputObjects()
642 _outputHistoList = new TList();
643 _outputHistoList->SetOwner();
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;
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;
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;
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];
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.);
688 if (_requestedCharge_2!=_requestedCharge_1)
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];
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.);
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.);
715 // Setup all the labels needed.
719 pair_12_Name = "_12";
736 binCorrName = "binCorr";
737 intBinCorrName = "intBinCorr";
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";
753 ptptName = "avgPtPt";
754 pt1pt1Name = "avgPtavgPt";
756 DptDptName = "avgDptDpt";
757 RDptDptName = "relDptDpt"; // ratio of avgDptDpt by avgPt*avgPt
762 _title_counts = "yield";
768 _title_m4 = "V0Centrality";
769 _title_m5 = "TrkCentrality";
770 _title_m6 = "SpdCentrality";
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)";
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)";
792 _title_etaPhi_12 = "#eta_{1}#times#varphi_{1}#times#eta_{2}#times#varphi_{2}";
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";;
805 vsEtaPhi = "_vsEtaPhi";
806 vsPtVsPt = "_vsPtVsPt";
811 int iZ, iEtaPhi, iPt;
812 int iZ1,iEtaPhi1,iPt1;
816 _correctionWeight_1 = new float[_nBins_vertexZ*_nBins_etaPhi_1*_nBins_pt_1];
818 b = _nBins_etaPhi_1*_nBins_pt_1;
819 for (iZ=0,iZ1=1; iZ<_nBins_vertexZ; iZ++, iZ1++)
821 for (iEtaPhi=0,iEtaPhi1=1; iEtaPhi<_nBins_etaPhi_1; iEtaPhi++, iEtaPhi1++)
823 for (iPt=0,iPt1=1; iPt<_nBins_pt_1; iPt++, iPt1++)
825 _correctionWeight_1[iZ*b+iEtaPhi*a+iPt] = _weight_1->GetBinContent(iZ1,iEtaPhi1,iPt1);
832 AliError("AliAnalysisTaskDptDptQA:: _weight_1 is a null pointer.");
839 _correctionWeight_2 = new float[_nBins_vertexZ*_nBins_etaPhi_2*_nBins_pt_2];
841 b = _nBins_etaPhi_2*_nBins_pt_2;
842 for (iZ=0,iZ1=1; iZ<_nBins_vertexZ; iZ++, iZ1++)
844 for (iEtaPhi=0,iEtaPhi1=1; iEtaPhi<_nBins_etaPhi_2; iEtaPhi++, iEtaPhi1++)
846 for (iPt=0,iPt1=1; iPt<_nBins_pt_2; iPt++, iPt1++)
848 _correctionWeight_2[iZ*b+iEtaPhi*a+iPt] = _weight_2->GetBinContent(iZ1,iEtaPhi1,iPt1);
855 AliError("AliAnalysisTaskDptDptQA:: _weight_1 is a null pointer.");
862 PostData(0,_outputHistoList);
864 //cout<< "AliAnalysisTaskDptDptQA::CreateOutputObjects() DONE " << endl;
868 void AliAnalysisTaskDptDptQA::createHistograms()
870 AliInfo(" AliAnalysisTaskDptDptQA::createHistoHistograms() Creating Event Histos");
873 name = "eventAccounting";
875 _eventAccounting = createHisto1D(name,name,10, -0.5, 9.5, "event Code", _title_counts);
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);
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");
893 //name = "Nclus1"; _Ncluster1 = createHisto1F(name,name, 200, 0, 200, "Ncluster1","counts");
894 //name = "Nclus2"; _Ncluster2 = createHisto1F(name,name, 200, 0, 200, "Ncluster2","counts");
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);
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);
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);
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);
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);
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);
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);
937 name = "mInv"; _invMass = createHisto2F(name,name, 10, 0.0, 2.0, 200, 0.4, 0.6, "pT","InvMass","ptvsmass");
941 AliInfo(" AliAnalysisTaskDptDptQA::createHistoHistograms() All Done");
943 //-----------------------//
945 void AliAnalysisTaskDptDptQA::finalizeHistograms()
948 AliInfo("AliAnalysisTaskDptDptQA::finalizeHistograms() starting");
949 AliInfo(Form("CorrelationAnalyzers::finalizeHistograms() _eventCount : %d",int(_eventCount)));
951 AliInfo("AliAnalysisTaskDptDptQA::finalizeHistograms() Done ");
956 void AliAnalysisTaskDptDptQA::UserExec(Option_t */*option*/)
961 float q, phi, pt, eta, px, py, pz;
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;
968 int iVertex, iVertexP1, iVertexP2;
970 //float massElecSq = 1.94797849000000016e-02;
973 const AliAODVertex* vertex;
976 AliAnalysisManager* manager = AliAnalysisManager::GetAnalysisManager();
980 AliAODInputHandler* inputHandler = dynamic_cast<AliAODInputHandler*> (manager->GetInputEventHandler());
985 fAODEvent = dynamic_cast<AliAODEvent*>(InputEvent());
986 //AliAODEvent* fAODEvent = dynamic_cast<AliAODEvent*>(InputEvent());
992 fPIDResponse =inputHandler->GetPIDResponse();
994 AliFatal("This Task needs the PID response attached to the inputHandler");
998 // count all events looked at here
1001 if (_eventAccounting)
1003 _eventAccounting->Fill(0);// count all calls to this function
1011 _eventAccounting->Fill(1);// count all calls to this function with a valid pointer
1012 //reset single particle counters
1014 __n1_1 = __n1_2 = __s1pt_1 = __s1pt_2 = __n1Nw_1 = __n1Nw_2 = __s1ptNw_1 = __s1ptNw_2 = 0;
1016 float v0Centr = -999.;
1017 float v0ACentr = -999.;
1018 float trkCentr = -999.;
1019 float spdCentr = -999.;
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;
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];
1041 //k1Mass = 0.139570;
1048 AliCentrality* centralityObject = fAODEvent->GetHeader()->GetCentralityP();
1049 if (centralityObject)
1051 //cout << "AliAnalysisTaskDptDptQA::UserExec(Option_t *option) - 6" << endl;
1053 v0Centr = centralityObject->GetCentralityPercentile("V0M");
1054 v0ACentr = centralityObject->GetCentralityPercentile("V0A");
1055 trkCentr = centralityObject->GetCentralityPercentile("TRK");
1056 spdCentr = centralityObject->GetCentralityPercentile("CL1");
1060 _nTracks =fAODEvent->GetNumberOfTracks();//NEW Test
1067 _field = fAODEvent->GetMagneticField();
1070 switch (_centralityMethod)
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;
1083 if ( centrality < _centralityMin || centrality > _centralityMax )
1087 _eventAccounting->Fill(2);// count all events with right centrality
1089 // filter on z and xy vertex
1090 vertex = (AliAODVertex*) fAODEvent->GetPrimaryVertex();
1092 //vertex->GetXYZ(V);
1097 vertex->GetCovarianceMatrix(fCov);
1098 if(vertex->GetNContributors() > 0)
1102 vertexX = vertex->GetX();
1103 vertexY = vertex->GetY();
1104 vertexZ = vertex->GetZ();
1106 if(TMath::Abs(vertexZ) > 10)
1114 _vertexZ->Fill(vertexZ);
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)
1121 AliError("AliAnalysisTaskDptDptQA::Exec(Option_t *option) iVertex<0 || iVertex>=_nBins_vertexZ ");
1124 _eventAccounting->Fill(3);// count all calls to this function with a valid pointer
1125 //======================
1127 //*********************************************************
1128 TExMap *trackMap = new TExMap();//Mapping matrix----
1130 for(Int_t i = 0; i < _nTracks; i++)
1132 AliAODTrack* aodTrack = dynamic_cast<AliAODTrack *>(fAODEvent->GetTrack(i));
1134 AliError(Form("ERROR: Could not retrieve AODtrack %d",i));
1137 Int_t gID = aodTrack->GetID();
1138 if (aodTrack->TestFilterBit(1)) trackMap->Add(gID, i);//Global tracks
1141 AliAODTrack* newAodTrack;
1143 //Track Loop starts here
1144 for (int iTrack=0; iTrack< _nTracks; iTrack++)
1146 AliAODTrack* t = dynamic_cast<AliAODTrack *>(fAODEvent->GetTrack(iTrack));
1148 AliError(Form("Could not receive track %d", iTrack));
1152 bitOK = t->TestFilterBit(_trackFilterBit);
1153 if (!bitOK) continue; //128bit or 272bit
1155 Int_t gID = t->GetID();
1156 newAodTrack = gID >= 0 ?t : fAODEvent->GetTrack(trackMap->GetValue(-1-gID));
1167 //dcaZ = t->ZAtDCA();
1169 TVector3 mom(px, py, pz);
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));
1176 if(charge == 0) continue;
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;
1183 newAodTrack->GetXYZ(pos);
1185 Double_t DCAX = pos[0] - vertexX;
1186 Double_t DCAY = pos[1] - vertexY;
1187 Double_t DCAZ = pos[2] - vertexZ;
1189 Double_t DCAXY = TMath::Sqrt((DCAX*DCAX) + (DCAY*DCAY));
1191 if (DCAZ < _dcaZMin ||
1193 DCAXY > _dcaXYMax ) continue;
1195 //==== QA ===========================
1197 _dcaxy->Fill(DCAXY);
1201 //===================================
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();
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();
1220 TLorentzVector pion1(0,0,0,0);
1221 TLorentzVector pion2(0,0,0,0);
1222 TLorentzVector Kaon(0,0,0,0);
1224 for(int i=0; i<nKaon1s; i++)
1226 pion1.SetXYZM(Kaon1Px[i],Kaon1Py[i],Kaon1Pz[i],0.139570);
1227 for(int j=0; j<nKaon2s; j++)
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());
1242 void AliAnalysisTaskDptDptQA::FinishTaskOutput()
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.");
1253 void AliAnalysisTaskDptDptQA::Terminate(Option_t* /*option*/)
1255 AliInfo("AliAnalysisTaskDptDptQA::Terminate() Starting/Done.");
1260 //===================================================================================================
1261 void AliAnalysisTaskDptDptQA::fillHistoWithArray(TH1 * h, float * array, int size)
1264 float v1, ev1, v2, ev2, sum, esum;
1265 for (i=0, i1=1; i<size; ++i,++i1)
1267 v1 = array[i]; ev1 = sqrt(v1);
1268 v2 = h->GetBinContent(i1);
1269 ev2 = h->GetBinError(i1);
1271 esum = sqrt(ev1*ev1+ev2*ev2);
1272 h->SetBinContent(i1,sum);
1273 h->SetBinError(i1,esum);
1277 void AliAnalysisTaskDptDptQA::fillHistoWithArray(TH2 * h, float * array, int size1, int size2)
1281 float v1, ev1, v2, ev2, sum, esum;
1282 for (i=0, i1=1; i<size1; ++i,++i1)
1284 for (j=0, j1=1; j<size2; ++j,++j1)
1286 v1 = array[i*size2+j]; ev1 = sqrt(v1);
1287 v2 = h->GetBinContent(i1,j1);
1288 ev2 = h->GetBinError(i1,j1);
1290 esum = sqrt(ev1*ev1+ev2*ev2);
1291 h->SetBinContent(i1,j1,sum);
1292 h->SetBinError(i1,j1,esum);
1297 void AliAnalysisTaskDptDptQA::fillHistoWithArray(TH3 * h, float * array, int size1, int size2, int size3)
1302 float v1, ev1, v2, ev2, sum, esum;
1303 int size23 = size2*size3;
1304 for (i=0, i1=1; i<size1; ++i,++i1)
1306 for (j=0, j1=1; j<size2; ++j,++j1)
1308 for (k=0, k1=1; k<size3; ++k,++k1)
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);
1314 esum = sqrt(ev1*ev1+ev2*ev2);
1315 h->SetBinContent(i1,j1,k1,sum);
1316 h->SetBinError(i1,j1,k1,esum);
1322 void AliAnalysisTaskDptDptQA::fillHistoWithArray(TH1 * h, double * array, int size)
1325 double v1, ev1, v2, ev2, sum, esum;
1326 for (i=0, i1=1; i<size; ++i,++i1)
1328 v1 = array[i]; ev1 = sqrt(v1);
1329 v2 = h->GetBinContent(i1);
1330 ev2 = h->GetBinError(i1);
1332 esum = sqrt(ev1*ev1+ev2*ev2);
1333 h->SetBinContent(i1,sum);
1334 h->SetBinError(i1,esum);
1338 void AliAnalysisTaskDptDptQA::fillHistoWithArray(TH2 * h, double * array, int size1, int size2)
1342 double v1, ev1, v2, ev2, sum, esum;
1343 for (i=0, i1=1; i<size1; ++i,++i1)
1345 for (j=0, j1=1; j<size2; ++j,++j1)
1347 v1 = array[i*size2+j]; ev1 = sqrt(v1);
1348 v2 = h->GetBinContent(i1,j1);
1349 ev2 = h->GetBinError(i1,j1);
1351 esum = sqrt(ev1*ev1+ev2*ev2);
1352 h->SetBinContent(i1,j1,sum);
1353 h->SetBinError(i1,j1,esum);
1358 void AliAnalysisTaskDptDptQA::fillHistoWithArray(TH3 * h, double * array, int size1, int size2, int size3)
1363 double v1, ev1, v2, ev2, sum, esum;
1364 int size23 = size2*size3;
1365 for (i=0, i1=1; i<size1; ++i,++i1)
1367 for (j=0, j1=1; j<size2; ++j,++j1)
1369 for (k=0, k1=1; k<size3; ++k,++k1)
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);
1375 esum = sqrt(ev1*ev1+ev2*ev2);
1376 h->SetBinContent(i1,j1,k1,sum);
1377 h->SetBinError(i1,j1,k1,esum);
1383 //________________________________________________________________________
1384 double * AliAnalysisTaskDptDptQA::getDoubleArray(int size, double v)
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;
1393 //________________________________________________________________________
1394 float * AliAnalysisTaskDptDptQA::getFloatArray(int size, float v)
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;
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)
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);
1419 //________________________________________________________________________
1420 TH1D * AliAnalysisTaskDptDptQA::createHisto1D(const TString & name, const TString & title,
1421 int n, double * bins,
1422 const TString & xTitle, const TString & yTitle)
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);
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)
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);
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)
1452 AliInfo(Form("createHisto 2D histo %s with %d non uniform nBins",name.Data(),nx));
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);
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)
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);
1478 //________________________________________________________________________
1479 TH1F * AliAnalysisTaskDptDptQA::createHisto1F(const TString & name, const TString & title,
1480 int n, double * bins,
1481 const TString & xTitle, const TString & yTitle)
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);
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)
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);
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)
1511 AliInfo(Form("createHisto 2D histo %s with %d non uniform nBins",name.Data(),nx));
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);
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)
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);
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)
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);
1552 //________________________________________________________________________
1553 TProfile * AliAnalysisTaskDptDptQA::createProfile(const TString & name,const TString & description,
1554 int nx, double* bins,
1555 const TString & xTitle, const TString & yTitle)
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);
1566 void AliAnalysisTaskDptDptQA::addToList(TH1 *h)
1568 if (_outputHistoList)
1570 _outputHistoList->Add(h);
1573 AliInfo("addToList(TH1 *h) _outputHistoList is null!!!!! Should abort ship");