1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
32 #include "AliAnalysisManager.h"
34 #include "AliAODHandler.h"
35 #include "AliAODInputHandler.h"
36 //#include "AliAODMCParticle.h"
37 #include "AliInputEventHandler.h"
39 #include "AliESDEvent.h"
40 #include "AliESDInputHandler.h"
41 #include "AliMultiplicity.h"
42 #include "AliCentrality.h"
43 #include "AliAnalysisTaskDptDptQA.h"
45 ClassImp(AliAnalysisTaskDptDptQA)
47 AliAnalysisTaskDptDptQA::AliAnalysisTaskDptDptQA()
48 : AliAnalysisTaskSE(),
50 fESDEvent(0), //! ESD Event
53 _twoPi ( 2.0 * 3.1415927),
60 _rejectPairConversion ( 0),
65 _centralityMethod ( 4),
68 _requestedCharge_1 ( 1),
69 _requestedCharge_2 ( -1),
77 _trackFilterBit ( 128),
108 _correctionWeight_1(0),
109 _correctionWeight_2(0),
110 _nBins_M0(500), _min_M0(0), _max_M0(10000), _width_M0(20),
111 _nBins_M1(500), _min_M1(0), _max_M1(10000), _width_M1(20),
112 _nBins_M2(500), _min_M2(0), _max_M2(10000), _width_M2(20),
113 _nBins_M3(500), _min_M3(0), _max_M3(10000), _width_M3(20),
114 _nBins_M4(100), _min_M4(0), _max_M4(1), _width_M4(0.01),
115 _nBins_M5(100), _min_M5(0), _max_M5(1), _width_M5(0.01),
116 _nBins_M6(100), _min_M6(0), _max_M6(1), _width_M6(0.01),
117 _nBins_vertexZ(40), _min_vertexZ(-10), _max_vertexZ(10), _width_vertexZ(0.5),
119 _nBins_pt_1(18), _min_pt_1(0.2), _max_pt_1(2.0), _width_pt_1(0.1),
120 _nBins_phi_1(72), _min_phi_1(0), _max_phi_1(2.*3.1415927),_width_phi_1(2.*3.1415927/72.),
121 _nBins_eta_1(0), _min_eta_1(0), _max_eta_1(0), _width_eta_1(0.1),
124 _nBins_etaPhiPt_1(0),
125 _nBins_zEtaPhiPt_1(0),
127 _nBins_pt_2(18), _min_pt_2(0.2), _max_pt_2(2.0), _width_pt_2(0.1),
128 _nBins_phi_2(72), _min_phi_2(0), _max_phi_2(2.*3.1415927),_width_phi_2(2.*3.1415927/72),
129 _nBins_eta_2(0), _min_eta_2(0), _max_eta_2(0), _width_eta_2(0.1),
132 _nBins_etaPhiPt_2(0),
133 _nBins_zEtaPhiPt_2(0),
153 __s1pt_1_vsEtaPhi(0),
154 __n1_1_vsZEtaPhiPt(0),
157 __s1pt_2_vsEtaPhi(0),
158 __n1_2_vsZEtaPhiPt(0),
161 __s2ptpt_12_vsEtaPhi(0),
162 __s2PtN_12_vsEtaPhi(0),
163 __s2NPt_12_vsEtaPhi(0),
166 _eventAccounting ( 0),
180 _n1_1_vsEtaVsPhi ( 0),
181 _s1pt_1_vsEtaVsPhi ( 0),
182 _n1_1_vsZVsEtaVsPhiVsPt ( 0),
183 _n1_1_vsM ( 0), // w/ weight
185 _n1Nw_1_vsM ( 0), // w/o weight
191 _n1_2_vsEtaVsPhi ( 0),
192 _s1pt_2_vsEtaVsPhi ( 0),
193 _n1_2_vsZVsEtaVsPhiVsPt ( 0),
201 _n2_12_vsEtaPhi ( 0),
202 _n2_12_vsPtVsPt ( 0),
203 _s2PtPt_12_vsEtaPhi( 0),
204 _s2PtN_12_vsEtaPhi ( 0),
205 _s2NPt_12_vsEtaPhi ( 0),
211 _s2PtPtNw_12_vsM ( 0),
212 _s2PtNNw_12_vsM ( 0),
213 _s2NPtNw_12_vsM ( 0),
236 intBinCorrName("NA"),
286 _title_etaPhi_1("NA"),
288 _title_SumPt_1("NA"),
289 _title_AvgPt_1("NA"),
291 _title_AvgSumPt_1("NA"),
296 _title_etaPhi_2("NA"),
298 _title_SumPt_2("NA"),
299 _title_AvgPt_2("NA"),
301 _title_AvgSumPt_2("NA"),
303 _title_etaPhi_12("NA"),
305 _title_AvgN2_12("NA"),
306 _title_AvgSumPtPt_12("NA"),
307 _title_AvgSumPtN_12("NA"),
308 _title_AvgNSumPt_12("NA"),
318 printf("Default constructor called \n");
320 printf("passed \n ");
324 AliAnalysisTaskDptDptQA::AliAnalysisTaskDptDptQA(const TString & name)
325 : AliAnalysisTaskSE(name),
330 _twoPi ( 2.0 * 3.1415927),
335 _sameFilter ( false),
337 _rejectPairConversion ( 0),
340 _vertexXYMin ( -10.),
342 _centralityMethod ( 4),
343 _centralityMin ( 0.),
344 _centralityMax ( 1.),
345 _requestedCharge_1 ( 1),
346 _requestedCharge_2 ( -1),
354 _trackFilterBit ( 0),
385 _correctionWeight_1(0),
386 _correctionWeight_2(0),
387 _nBins_M0(500), _min_M0(0), _max_M0(10000), _width_M0(20),
388 _nBins_M1(500), _min_M1(0), _max_M1(10000), _width_M1(20),
389 _nBins_M2(500), _min_M2(0), _max_M2(10000), _width_M2(20),
390 _nBins_M3(500), _min_M3(0), _max_M3(10000), _width_M3(20),
391 _nBins_M4(100), _min_M4(0), _max_M4(1), _width_M4(0.01),
392 _nBins_M5(100), _min_M5(0), _max_M5(1), _width_M5(0.01),
393 _nBins_M6(100), _min_M6(0), _max_M6(1), _width_M6(0.01),
394 _nBins_vertexZ(40), _min_vertexZ(-10), _max_vertexZ(10), _width_vertexZ(0.5),
396 _nBins_pt_1(18), _min_pt_1(0.2), _max_pt_1(2.0), _width_pt_1(0.1),
397 _nBins_phi_1(72), _min_phi_1(0), _max_phi_1(2.*3.1415927),_width_phi_1(2.*3.1415927/72.),
398 _nBins_eta_1(0), _min_eta_1(0), _max_eta_1(0), _width_eta_1(0.1),
401 _nBins_etaPhiPt_1(0),
402 _nBins_zEtaPhiPt_1(0),
404 _nBins_pt_2(18), _min_pt_2(0.2), _max_pt_2(2.0), _width_pt_2(0.1),
405 _nBins_phi_2(72), _min_phi_2(0), _max_phi_2(2.*3.1415927),_width_phi_2(2.*3.1415927/72),
406 _nBins_eta_2(0), _min_eta_2(0), _max_eta_2(0), _width_eta_2(0.1),
409 _nBins_etaPhiPt_2(0),
410 _nBins_zEtaPhiPt_2(0),
430 __s1pt_1_vsEtaPhi(0),
431 __n1_1_vsZEtaPhiPt(0),
434 __s1pt_2_vsEtaPhi(0),
435 __n1_2_vsZEtaPhiPt(0),
438 __s2ptpt_12_vsEtaPhi(0),
439 __s2PtN_12_vsEtaPhi(0),
440 __s2NPt_12_vsEtaPhi(0),
443 _eventAccounting ( 0),
457 _n1_1_vsEtaVsPhi ( 0),
458 _s1pt_1_vsEtaVsPhi ( 0),
459 _n1_1_vsZVsEtaVsPhiVsPt ( 0),
460 _n1_1_vsM ( 0), // w/ weight
462 _n1Nw_1_vsM ( 0), // w/o weight
468 _n1_2_vsEtaVsPhi ( 0),
469 _s1pt_2_vsEtaVsPhi ( 0),
470 _n1_2_vsZVsEtaVsPhiVsPt ( 0),
478 _n2_12_vsEtaPhi ( 0),
479 _n2_12_vsPtVsPt ( 0),
480 _s2PtPt_12_vsEtaPhi( 0),
481 _s2PtN_12_vsEtaPhi ( 0),
482 _s2NPt_12_vsEtaPhi ( 0),
488 _s2PtPtNw_12_vsM ( 0),
489 _s2PtNNw_12_vsM ( 0),
490 _s2NPtNw_12_vsM ( 0),
513 intBinCorrName("NA"),
563 _title_etaPhi_1("NA"),
565 _title_SumPt_1("NA"),
566 _title_AvgPt_1("NA"),
568 _title_AvgSumPt_1("NA"),
573 _title_etaPhi_2("NA"),
575 _title_SumPt_2("NA"),
576 _title_AvgPt_2("NA"),
578 _title_AvgSumPt_2("NA"),
580 _title_etaPhi_12("NA"),
582 _title_AvgN2_12("NA"),
583 _title_AvgSumPtPt_12("NA"),
584 _title_AvgSumPtN_12("NA"),
585 _title_AvgNSumPt_12("NA"),
595 printf("2nd constructor called ");
597 DefineOutput(0, TList::Class());
603 AliAnalysisTaskDptDptQA::~AliAnalysisTaskDptDptQA()
608 void AliAnalysisTaskDptDptQA::UserCreateOutputObjects()
610 cout<< "AliAnalysisTaskDptDptQA::CreateOutputObjects() Starting " << endl;
612 _outputHistoList = new TList();
613 _outputHistoList->SetOwner();
615 //if (_useWeights) DefineInput(2, TList::Class());
617 //Setup the parameters of the histograms
618 _nBins_M0 = 500; _min_M0 = 0.; _max_M0 = 5000.; _width_M0 = (_max_M0-_min_M0)/_nBins_M0;
619 _nBins_M1 = 500; _min_M1 = 0.; _max_M1 = 5000.; _width_M1 = (_max_M1-_min_M1)/_nBins_M1;
620 _nBins_M2 = 500; _min_M2 = 0.; _max_M2 = 5000.; _width_M2 = (_max_M2-_min_M2)/_nBins_M2;
621 _nBins_M3 = 500; _min_M3 = 0.; _max_M3 = 5000.; _width_M3 = (_max_M3-_min_M3)/_nBins_M3;
622 _nBins_M4 = 100; _min_M4 = 0.; _max_M4 = 100.; _width_M4 = (_max_M4-_min_M4)/_nBins_M4;
623 _nBins_M5 = 100; _min_M5 = 0.; _max_M5 = 100.; _width_M5 = (_max_M5-_min_M5)/_nBins_M5;
624 _nBins_M6 = 100; _min_M6 = 0.; _max_M6 = 100.; _width_M6 = (_max_M6-_min_M6)/_nBins_M6;
626 _min_vertexZ = _vertexZMin;
627 _max_vertexZ = _vertexZMax;
628 _width_vertexZ = 0.5;
629 _nBins_vertexZ = int(0.5+ (_max_vertexZ - _min_vertexZ)/_width_vertexZ);
630 _nBins_pt_1 = int(0.5+ (_max_pt_1 -_min_pt_1 )/_width_pt_1);
631 _nBins_eta_1 = int(0.5+ (_max_eta_1-_min_eta_1)/_width_eta_1);
632 _width_phi_1 = (_max_phi_1 - _min_phi_1) /_nBins_phi_1;
633 _nBins_etaPhi_1 = _nBins_phi_1 * _nBins_eta_1;
634 _nBins_etaPhiPt_1 = _nBins_etaPhi_1 * _nBins_pt_1;
635 _nBins_zEtaPhiPt_1 = _nBins_vertexZ * _nBins_etaPhiPt_1;
637 _nBins_pt_2 = int(0.5+ (_max_pt_2 -_min_pt_2 )/_width_pt_2);
638 _nBins_eta_2 = int(0.5+ (_max_eta_2-_min_eta_2)/_width_eta_2);
639 _width_phi_2 = (_max_phi_2 - _min_phi_2) /_nBins_phi_2;
640 _nBins_etaPhi_2 = _nBins_phi_2 * _nBins_eta_2;
641 _nBins_etaPhiPt_2 = _nBins_etaPhi_2 * _nBins_pt_2;
642 _nBins_zEtaPhiPt_2 = _nBins_vertexZ * _nBins_etaPhiPt_2;
643 _nBins_etaPhi_12 = _nBins_etaPhi_1 * _nBins_etaPhi_2;
645 //setup the work arrays
647 _id_1 = new int[arraySize];
648 _charge_1 = new int[arraySize];
649 //_iPhi_1 = new int[arraySize];
650 //_iEta_1 = new int[arraySize];
651 _iEtaPhi_1 = new int[arraySize];
652 _iPt_1 = new int[arraySize];
653 _pt_1 = new float[arraySize];
654 _px_1 = new float[arraySize];
655 _py_1 = new float[arraySize];
656 _pz_1 = new float[arraySize];
657 //_phi_1 = new float[arraySize];
658 //_eta_1 = new float[arraySize];
659 _correction_1 = new float[arraySize];
660 _dedx_1 = new float[arraySize];
662 __n1_1_vsPt = getDoubleArray(_nBins_pt_1, 0.);
663 __n1_1_vsEtaPhi = getDoubleArray(_nBins_etaPhi_1, 0.);
664 __s1pt_1_vsEtaPhi = getDoubleArray(_nBins_etaPhi_1, 0.);
665 __n1_1_vsZEtaPhiPt = getFloatArray(_nBins_zEtaPhiPt_1, 0.);
667 cout << "==========================================================================================" << endl;
668 cout << "=============== Booking for particle 1 done." << endl;
669 cout << "_requestedCharge_1: " << _requestedCharge_1 << endl;
670 cout << "_requestedCharge_2: " << _requestedCharge_2 << endl;
672 if (_requestedCharge_2!=_requestedCharge_1)
674 cout << " creating arrays for particle 2 with size: " << arraySize << endl;
677 _id_2 = new int[arraySize];
678 _charge_2 = new int[arraySize];
679 //_iPhi_2 = new int[arraySize];
680 //_iEta_2 = new int[arraySize];
681 _iEtaPhi_2 = new int[arraySize];
682 _iPt_2 = new int[arraySize];
683 _pt_2 = new float[arraySize];
684 _px_2 = new float[arraySize];
685 _py_2 = new float[arraySize];
686 _pz_2 = new float[arraySize];
687 //_phi_2 = new float[arraySize];
688 //_eta_2 = new float[arraySize];
689 _correction_2 = new float[arraySize];
690 _dedx_2 = new float[arraySize];
692 __n1_2_vsPt = getDoubleArray(_nBins_pt_2, 0.);
693 __n1_2_vsEtaPhi = getDoubleArray(_nBins_etaPhi_2, 0.);
694 __s1pt_2_vsEtaPhi = getDoubleArray(_nBins_etaPhi_2, 0.);
695 __n1_2_vsZEtaPhiPt = getFloatArray(_nBins_zEtaPhiPt_2, 0.);
699 __n2_12_vsPtPt = getDoubleArray(_nBins_pt_1*_nBins_pt_2,0.);
700 __n2_12_vsEtaPhi = getFloatArray(_nBins_etaPhi_12, 0.);
701 __s2ptpt_12_vsEtaPhi = getFloatArray(_nBins_etaPhi_12, 0.);
702 __s2PtN_12_vsEtaPhi = getFloatArray(_nBins_etaPhi_12, 0.);
703 __s2NPt_12_vsEtaPhi = getFloatArray(_nBins_etaPhi_12, 0.);
705 // Setup all the labels needed.
709 pair_12_Name = "_12";
726 binCorrName = "binCorr";
727 intBinCorrName = "intBinCorr";
732 s1ptNwName = "sumPtNw";
733 s1DptName = "sumDpt";
734 s2PtPtName = "sumPtPt";
735 s2PtPtNwName = "sumPtPtNw";
736 s2DptDptName = "sumDptDpt";
737 s2NPtName = "sumNPt";
738 s2NPtNwName = "sumNPtNw";
739 s2PtNName = "sumPtN";
740 s2NPtNwName = "sumNPtNw";
741 s2PtNNwName = "sumPtNNw";
743 ptptName = "avgPtPt";
744 pt1pt1Name = "avgPtavgPt";
746 DptDptName = "avgDptDpt";
747 RDptDptName = "relDptDpt"; // ratio of avgDptDpt by avgPt*avgPt
752 _title_counts = "yield";
758 _title_m4 = "V0Centrality";
759 _title_m5 = "TrkCentrality";
760 _title_m6 = "SpdCentrality";
762 _title_eta_1 = "#eta_{1}";
763 _title_phi_1 = "#varphi_{1} (radian)";
764 _title_etaPhi_1 = "#eta_{1}#times#varphi_{1}";
765 _title_pt_1 = "p_{t,1} (GeV/c)";
766 _title_n_1 = "n_{1}";
767 _title_SumPt_1 = "#Sigma p_{t,1} (GeV/c)";
768 _title_AvgPt_1 = "#LT p_{t,1} #GT (GeV/c)";
769 _title_AvgN_1 = "#LT n_{1} #GT";
770 _title_AvgSumPt_1 = "#LT #Sigma p_{t,1} #GT (GeV/c)";
772 _title_eta_2 = "#eta_{2}";
773 _title_phi_2 = "#varphi_{2} (radian)";
774 _title_etaPhi_2 = "#eta_{2}#times#varphi_{2}";
775 _title_pt_2 = "p_{t,2} (GeV/c)";
776 _title_n_2 = "n_{2}";
777 _title_SumPt_2 = "#Sigma p_{t,1} (GeV/c)";
778 _title_AvgPt_2 = "#LT p_{t,2} #GT (GeV/c)";
779 _title_AvgN_2 = "#LT n_{2} #GT";
780 _title_AvgSumPt_2 = "#LT #Sigma p_{t,2} #GT (GeV/c)";
782 _title_etaPhi_12 = "#eta_{1}#times#varphi_{1}#times#eta_{2}#times#varphi_{2}";
784 _title_AvgN2_12 = "#LT n_{2} #GT";;
785 _title_AvgSumPtPt_12 = "#LT #Sigma p_{t,1}p_{t,2} #GT";;
786 _title_AvgSumPtN_12 = "#LT #Sigma p_{t,1}N #GT";;
787 _title_AvgNSumPt_12 = "#LT N#Sigma p_{t,2} #GT";;
795 vsEtaPhi = "_vsEtaPhi";
796 vsPtVsPt = "_vsPtVsPt";
801 int iZ, iEtaPhi, iPt;
802 int iZ1,iEtaPhi1,iPt1;
806 _correctionWeight_1 = new float[_nBins_vertexZ*_nBins_etaPhi_1*_nBins_pt_1];
808 b = _nBins_etaPhi_1*_nBins_pt_1;
809 for (iZ=0,iZ1=1; iZ<_nBins_vertexZ; iZ++, iZ1++)
811 for (iEtaPhi=0,iEtaPhi1=1; iEtaPhi<_nBins_etaPhi_1; iEtaPhi++, iEtaPhi1++)
813 for (iPt=0,iPt1=1; iPt<_nBins_pt_1; iPt++, iPt1++)
815 _correctionWeight_1[iZ*b+iEtaPhi*a+iPt] = _weight_1->GetBinContent(iZ1,iEtaPhi1,iPt1);
822 AliError("AliAnalysisTaskDptDptQA:: _weight_1 is a null pointer.");
829 _correctionWeight_2 = new float[_nBins_vertexZ*_nBins_etaPhi_2*_nBins_pt_2];
831 b = _nBins_etaPhi_2*_nBins_pt_2;
832 for (iZ=0,iZ1=1; iZ<_nBins_vertexZ; iZ++, iZ1++)
834 for (iEtaPhi=0,iEtaPhi1=1; iEtaPhi<_nBins_etaPhi_2; iEtaPhi++, iEtaPhi1++)
836 for (iPt=0,iPt1=1; iPt<_nBins_pt_2; iPt++, iPt1++)
838 _correctionWeight_2[iZ*b+iEtaPhi*a+iPt] = _weight_2->GetBinContent(iZ1,iEtaPhi1,iPt1);
845 AliError("AliAnalysisTaskDptDptQA:: _weight_1 is a null pointer.");
852 PostData(0,_outputHistoList);
854 cout<< "AliAnalysisTaskDptDptQA::CreateOutputObjects() DONE " << endl;
858 void AliAnalysisTaskDptDptQA::createHistograms()
860 AliInfo(" AliAnalysisTaskDptDptQA::createHistoHistograms() Creating Event Histos");
863 name = "eventAccounting";
865 // bin index : what it is...
866 // 0 : number of event submitted
867 // 1 : number accepted by centrality cut
868 // 2 : number accepted by centrality cut and z cut
869 // 3 : total number of particles that satisfied filter 1
870 // 4 : total number of particles that satisfied filter 2
871 _eventAccounting = createHisto1D(name,name,10, -0.5, 9.5, "event Code", _title_counts);
873 name = "m0"; _m0 = createHisto1D(name,name,_nBins_M1, _min_M1, _max_M1, _title_m0, _title_counts);
874 name = "m1"; _m1 = createHisto1D(name,name,_nBins_M1, _min_M1, _max_M1, _title_m1, _title_counts);
875 name = "m2"; _m2 = createHisto1D(name,name,_nBins_M2, _min_M2, _max_M2, _title_m2, _title_counts);
876 name = "m3"; _m3 = createHisto1D(name,name,_nBins_M3, _min_M3, _max_M3, _title_m3, _title_counts);
877 name = "m4"; _m4 = createHisto1D(name,name,_nBins_M4, _min_M4, _max_M4, _title_m4, _title_counts);
878 name = "m5"; _m5 = createHisto1D(name,name,_nBins_M5, _min_M5, _max_M5, _title_m5, _title_counts);
879 name = "m6"; _m6 = createHisto1D(name,name,_nBins_M6, _min_M6, _max_M6, _title_m6, _title_counts);
880 name = "zV"; _vertexZ = createHisto1D(name,name,_nBins_vertexZ, _min_vertexZ, _max_vertexZ, "z-Vertex (cm)", _title_counts);
882 name = "Eta"; _etadis = createHisto1F(name,name, 200, -1.0, 1.0, "#eta","counts");
883 name = "Phi"; _phidis = createHisto1F(name,name, 360, 0.0, 6.4, "#phi","counts");
887 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);
888 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);
889 //name = "dedxVsP_1"; _dedxVsP_1 = createHisto2F(name,name,400,-2.,2.,120,0.,120.,"p (GeV/c)", "dedx", "counts");
890 //name = "corrDedxVsP_1"; _corrDedxVsP_1 = createHisto2F(name,name,400,-2.,2.,120,0.,120.,"p (GeV/c)", "dedx", "counts");
891 //name = "betaVsP_1"; _betaVsP_1 = createHisto2F(name,name,400,-2.,2.,120,0.5,1.1,"p (GeV/c)", "beta", "counts");
893 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);
894 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);
895 //name = "dedxVsP_2"; _dedxVsP_2 = createHisto2F(name,name,400,-2.,2.,120,0.,120.,"p (GeV/c)", "dedx", "counts");
896 //name = "corrDedxVsP_2"; _corrDedxVsP_2 = createHisto2F(name,name,400,-2.,2.,120,0.,120.,"p (GeV/c)", "dedx", "counts");
897 //name = "betaVsP_2"; _betaVsP_2 = createHisto2F(name,name,400,-2.,2.,120,0.5,1.1,"p (GeV/c)", "beta", "counts");
902 name = n1Name+part_1_Name+vsEtaPhi; _n1_1_vsEtaVsPhi = createHisto2F(name,name, _nBins_eta_1, _min_eta_1, _max_eta_1, _nBins_phi_1, _min_phi_1, _max_phi_1, _title_eta_1, _title_phi_1, _title_AvgN_1);
903 name = s1ptName+part_1_Name+vsEtaPhi; _s1pt_1_vsEtaVsPhi = createHisto2F(name,name, _nBins_eta_1, _min_eta_1, _max_eta_1, _nBins_phi_1, _min_phi_1, _max_phi_1, _title_eta_1, _title_phi_1, _title_AvgSumPt_1);
904 name = n1Name+part_1_Name+vsM; _n1_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_1);
905 name = s1ptName+part_1_Name+vsM; _s1pt_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_1);
906 name = n1NwName+part_1_Name+vsM; _n1Nw_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_1);
907 name = s1ptNwName+part_1_Name+vsM; _s1ptNw_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_1);
909 name = n1Name+part_2_Name+vsEtaPhi; _n1_2_vsEtaVsPhi = createHisto2F(name,name, _nBins_eta_2, _min_eta_2, _max_eta_2, _nBins_phi_2, _min_phi_2, _max_phi_2, _title_eta_2, _title_phi_2, _title_AvgN_2);
910 name = s1ptName+part_2_Name+vsEtaPhi; _s1pt_2_vsEtaVsPhi = createHisto2F(name,name, _nBins_eta_2, _min_eta_2, _max_eta_2, _nBins_phi_2, _min_phi_2, _max_phi_2, _title_eta_2, _title_phi_2, _title_AvgSumPt_2);
911 name = n1Name+part_2_Name + vsM; _n1_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_2);
912 name = s1ptName+part_2_Name + vsM; _s1pt_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_2);
913 name = n1NwName+part_2_Name+vsM; _n1Nw_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_1);
914 name = s1ptNwName+part_2_Name+vsM; _s1ptNw_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_1);
916 name = n2Name+pair_12_Name+vsEtaPhi; _n2_12_vsEtaPhi = createHisto1F(name,name, _nBins_etaPhi_12, 0., double(_nBins_etaPhi_12), _title_etaPhi_12, _title_AvgN2_12);
917 name = s2PtPtName+pair_12_Name + vsEtaPhi;_s2PtPt_12_vsEtaPhi = createHisto1F(name,name, _nBins_etaPhi_12, 0., double(_nBins_etaPhi_12), _title_etaPhi_12, _title_AvgSumPtPt_12);
918 name = s2PtNName+pair_12_Name + vsEtaPhi; _s2PtN_12_vsEtaPhi = createHisto1F(name,name, _nBins_etaPhi_12, 0., double(_nBins_etaPhi_12), _title_etaPhi_12, _title_AvgSumPtN_12);
919 name = s2NPtName+pair_12_Name + vsEtaPhi; _s2NPt_12_vsEtaPhi = createHisto1F(name,name, _nBins_etaPhi_12, 0., double(_nBins_etaPhi_12), _title_etaPhi_12, _title_AvgNSumPt_12);
920 name = n2Name+pair_12_Name+vsPtVsPt; _n2_12_vsPtVsPt = createHisto2F(name,name, _nBins_pt_1, _min_pt_1, _max_pt_1, _nBins_pt_2, _min_pt_2, _max_pt_2, _title_pt_1, _title_pt_2, _title_AvgN2_12);
922 name = n2Name+pair_12_Name + vsM; _n2_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN2_12);
923 name = s2PtPtName+pair_12_Name + vsM; _s2PtPt_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtPt_12);
924 name = s2PtNName+pair_12_Name + vsM; _s2PtN_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtN_12);
925 name = s2NPtName+pair_12_Name + vsM; _s2NPt_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgNSumPt_12);
927 name = n2NwName+pair_12_Name + vsM; _n2Nw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN2_12);
928 name = s2PtPtNwName+pair_12_Name + vsM; _s2PtPtNw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtPt_12);
929 name = s2PtNNwName+pair_12_Name + vsM; _s2PtNNw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtN_12);
930 name = s2NPtNwName+pair_12_Name + vsM; _s2NPtNw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgNSumPt_12);
932 name = "mInv"; _invMass = createHisto1F(name,name, 500, 0., 1.000, "M_{inv}","counts");
933 name = "mInvElec"; _invMassElec = createHisto1F(name,name, 500, 0., 1.000, "M_{inv}","counts");
936 AliInfo(" AliAnalysisTaskDptDptQA::createHistoHistograms() All Done");
938 //-----------------------//
940 void AliAnalysisTaskDptDptQA::finalizeHistograms()
943 AliInfo("AliAnalysisTaskDptDptQA::finalizeHistograms() starting");
944 AliInfo(Form("CorrelationAnalyzers::finalizeHistograms() _eventCount : %d",int(_eventCount)));
949 fillHistoWithArray(_n1_1_vsPt, __n1_1_vsPt, _nBins_pt_1);
950 fillHistoWithArray(_n1_1_vsZVsEtaVsPhiVsPt, __n1_1_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_1, _nBins_pt_1);
951 fillHistoWithArray(_n1_2_vsPt, __n1_1_vsPt, _nBins_pt_1);
952 fillHistoWithArray(_n1_2_vsZVsEtaVsPhiVsPt, __n1_1_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_1, _nBins_pt_1);
956 fillHistoWithArray(_n1_1_vsPt, __n1_1_vsPt, _nBins_pt_1);
957 fillHistoWithArray(_n1_1_vsZVsEtaVsPhiVsPt, __n1_1_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_1, _nBins_pt_1);
958 fillHistoWithArray(_n1_2_vsPt, __n1_2_vsPt, _nBins_pt_2);
959 fillHistoWithArray(_n1_2_vsZVsEtaVsPhiVsPt, __n1_2_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_2, _nBins_pt_2);
966 fillHistoWithArray(_n1_1_vsEtaVsPhi, __n1_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
967 fillHistoWithArray(_s1pt_1_vsEtaVsPhi, __s1pt_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
968 fillHistoWithArray(_n1_2_vsEtaVsPhi, __n1_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
969 fillHistoWithArray(_s1pt_2_vsEtaVsPhi, __s1pt_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
973 fillHistoWithArray(_n1_1_vsEtaVsPhi, __n1_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
974 fillHistoWithArray(_s1pt_1_vsEtaVsPhi, __s1pt_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
975 fillHistoWithArray(_n1_2_vsEtaVsPhi, __n1_2_vsEtaPhi, _nBins_eta_2, _nBins_phi_2);
976 fillHistoWithArray(_s1pt_2_vsEtaVsPhi, __s1pt_2_vsEtaPhi, _nBins_eta_2, _nBins_phi_2);
978 fillHistoWithArray(_n2_12_vsEtaPhi, __n2_12_vsEtaPhi, _nBins_etaPhi_12);
979 fillHistoWithArray(_s2PtPt_12_vsEtaPhi, __s2ptpt_12_vsEtaPhi, _nBins_etaPhi_12);
980 fillHistoWithArray(_s2PtN_12_vsEtaPhi, __s2PtN_12_vsEtaPhi, _nBins_etaPhi_12);
981 fillHistoWithArray(_s2NPt_12_vsEtaPhi, __s2NPt_12_vsEtaPhi, _nBins_etaPhi_12);
982 fillHistoWithArray(_n2_12_vsPtVsPt, __n2_12_vsPtPt, _nBins_pt_1, _nBins_pt_2);
985 AliInfo("AliAnalysisTaskDptDptQA::finalizeHistograms() Done ");
990 void AliAnalysisTaskDptDptQA::UserExec(Option_t */*option*/)
994 int iPhi, iEta, iEtaPhi, iPt, charge;
995 float q, p, phi, pt, eta, corr, corrPt, dedx, px, py, pz;
997 int id_1, q_1, iEtaPhi_1, iPt_1;
998 float pt_1, px_1, py_1, pz_1, corr_1, dedx_1;
999 int id_2, q_2, iEtaPhi_2, iPt_2;
1000 float pt_2, px_2, py_2, pz_2, corr_2, dedx_2;
1002 int iVertex, iVertexP1, iVertexP2;
1004 float massElecSq = 2.5e-7;
1005 const AliAODVertex* vertex;
1009 // count all events looked at here
1012 // A. Adare - Fix from above to avoid coverity complaint about null dereference
1013 if (_eventAccounting)
1015 _eventAccounting->Fill(0);// count all calls to this function
1019 cout << "AliAnalysisTaskDptDptQA::UserExec(Option_t *option) - !_eventAccounting" << endl;
1020 cout << "AliAnalysisTaskDptDptQA::UserExec(Option_t *option) - Skip this task" << endl;
1024 //cout << "AliAnalysisTaskDptDptQA::UserExec(Option_t *option) - 1" << endl;
1026 //Get pointer to current event
1027 //fESDEvent = dynamic_cast<AliESDEvent*> (InputEvent());
1028 fAODEvent = dynamic_cast<AliAODEvent*> (InputEvent());
1030 // if(!fAODEvent && !fESDEvent)
1033 AliError("AliAnalysisTaskDptDptQA::Exec(Option_t *option) !fAODEvent");
1037 _eventAccounting->Fill(1);// count all calls to this function with a valid pointer
1038 //reset single particle counters
1040 __n1_1 = __n1_2 = __s1pt_1 = __s1pt_2 = __n1Nw_1 = __n1Nw_2 = __s1ptNw_1 = __s1ptNw_2 = 0;
1042 float v0Centr = -999.;
1043 float trkCentr = -999.;
1044 float spdCentr = -999.;
1045 float vertexX = -999;
1046 float vertexY = -999;
1047 float vertexZ = -999;
1048 float vertexXY = -999;
1049 float centrality = -999;
1053 //cout << "AliAnalysisTaskDptDptQA::UserExec(Option_t *option) - 5" << endl;
1056 AliCentrality* centralityObject = fAODEvent->GetHeader()->GetCentralityP();
1057 if (centralityObject)
1059 //cout << "AliAnalysisTaskDptDptQA::UserExec(Option_t *option) - 6" << endl;
1061 v0Centr = centralityObject->GetCentralityPercentile("V0M");
1062 trkCentr = centralityObject->GetCentralityPercentile("TRK");
1063 spdCentr = centralityObject->GetCentralityPercentile("CL1");
1064 //cout << "AliAnalysisTaskDptDptQA::UserExec(Option_t *option) - 7" << endl;
1067 //cout << "AliAnalysisTaskDptDptQA::UserExec(Option_t *option) - 8" << endl;
1069 _nTracks = fAODEvent->GetNTracks();
1077 _field = fAODEvent->GetMagneticField();
1079 //cout << "AliAnalysisTaskDptDptQA::UserExec(Option_t *option) - _field:" << _field << endl;
1082 switch (_centralityMethod)
1084 case 0: centrality = _mult0; break;
1085 case 1: centrality = _mult1; break;
1086 case 2: centrality = _mult2; break;
1087 case 3: centrality = _mult3; break;
1088 case 4: centrality = _mult4; break;
1089 case 5: centrality = _mult5; break;
1090 case 6: centrality = _mult6; break;
1093 //cout << "AliAnalysisTaskDptDptQA::UserExec(Option_t *option) - 10" << endl;
1095 //filter on centrality
1096 // require the v0 and trk centralities to agree within 5%.
1098 //if ((Float_t(GetTPCMult(fAOD)) > (-40.3+1.22*GetGlobalMult(fAOD))) && (Float_t(GetTPCMult(fAOD)) < (32.1+1.59*GetGlobalMult(fAOD)))) {//3 sigma
1101 if ( centrality < _centralityMin ||
1102 centrality > _centralityMax ||
1103 fabs(v0Centr-trkCentr)>5.0)
1105 //cout << "AliAnalysisTaskDptDptQA::UserExec(Option_t *option) - 11" << endl;
1107 // we dont analyze this event here...
1110 _eventAccounting->Fill(2);// count all events with right centrality
1111 //cout << "AliAnalysisTaskDptDptQA::UserExec(Option_t *option) - 12" << endl;
1113 // filter on z and xy vertex
1114 vertex = (AliAODVertex*) fAODEvent->GetPrimaryVertexSPD();
1115 if (!vertex || vertex->GetNContributors()<1)
1119 cout << "AliAnalysisTaskDptDptQA::UserExec(Option_t *option) - No valid vertex object or poor vertex" << endl;
1123 vertexX = vertex->GetX();
1124 vertexY = vertex->GetY();
1125 vertexZ = vertex->GetZ();
1126 vertexXY = sqrt(vertexX*vertexX+vertexY*vertexY);
1129 vertexZ < _vertexZMin ||
1130 vertexZ > _vertexZMax ||
1131 vertexXY < _vertexXYMin ||
1132 vertexXY > _vertexXYMax)
1135 iVertex = int((vertexZ-_min_vertexZ)/_width_vertexZ);
1136 iVertexP1 = iVertex*_nBins_etaPhiPt_1;
1137 iVertexP2 = iVertex*_nBins_etaPhiPt_2;
1138 if (iVertex<0 || iVertex>=_nBins_vertexZ)
1140 AliError("AliAnalysisTaskDptDptQA::Exec(Option_t *option) iVertex<0 || iVertex>=_nBins_vertexZ ");
1143 _eventAccounting->Fill(3);// count all calls to this function with a valid pointer
1145 // loop over all particles for singles
1146 //debug() << "_nTracks:"<< _nTracks << endl;
1147 for (int iTrack=0; iTrack< _nTracks; iTrack++)
1149 //cout << "AliAnalysisTaskDptDptQA::UserExec(Option_t *option) - 16 iTrack:" << iTrack << endl;
1151 AliAODTrack * t = (AliAODTrack *) fAODEvent->GetTrack(iTrack);
1154 AliError(Form("AliAnalysisTaskDptDptQA::Exec(Option_t *option) No track ofr iTrack=%d", iTrack));
1167 dedx = t->GetTPCsignal();
1168 nClus = t->GetTPCNcls();
1169 bitOK = t->TestFilterBit(_trackFilterBit);
1171 //cout << "_trackFilterBit:" << _trackFilterBit << " Track returns:" << bitOK << endl;
1172 //cout << " q:" << q << " _requestedCharge_1:" << _requestedCharge_1 << endl;
1173 //cout << " pt:" << pt << " _min_pt_1:" << _min_pt_1 << " _max_pt_1:" << _max_pt_1<< endl;
1174 //cout << " phi:" << phi << endl;
1175 //cout << " eta:" << eta << " _min_eta_1:" << _min_eta_1 << " _max_eta_1:" << _max_eta_1<< endl;
1176 //cout << " dedx:" << dedx << " _dedxMin:" << _dedxMin << " _dedxMax:" << _dedxMax << endl;
1177 //cout << "nclus:" << nClus<< " _nClusterMin:" << _nClusterMin << endl;
1181 if (!bitOK || dedx<_dedxMin || dedx>_dedxMax || nClus<_nClusterMin) continue;
1182 // Kinematics cuts used
1184 if( pt < _min_pt_1 || pt > _max_pt_1) continue;
1185 if( eta < _min_eta_1 || eta > _max_eta_1) continue;
1191 if (_requestedCharge_1 == charge)
1193 iPhi = int( phi/_width_phi_1);
1195 if (iPhi<0 || iPhi>=_nBins_phi_1 )
1197 AliWarning("AliAnalysisTaskDptDptQA::analyze() iPhi<0 || iPhi>=_nBins_phi_1");
1201 iEta = int((eta-_min_eta_1)/_width_eta_1);
1202 if (iEta<0 || iEta>=_nBins_eta_1)
1204 AliWarning(Form("AliAnalysisTaskDptDptQA::analyze(AliceEvent * event) Mismatched iEta: %d", iEta));
1207 iPt = int((pt -_min_pt_1 )/_width_pt_1 );
1208 if (iPt<0 || iPt >=_nBins_pt_1)
1210 AliWarning(Form("AliAnalysisTaskDptDptQA::analyze(AliceEvent * event) Mismatched iPt: %d",iPt));
1213 iEtaPhi = iEta*_nBins_phi_1+iPhi;
1214 iZEtaPhiPt = iVertexP1 + iEtaPhi*_nBins_pt_1 + iPt;
1216 if (_correctionWeight_1)
1217 corr = _correctionWeight_1[iZEtaPhiPt];
1220 if (iZEtaPhiPt<0 || iZEtaPhiPt>=_nBins_zEtaPhiPt_1)
1222 AliWarning("AliAnalysisTaskDptDptQA::analyze(AliceEvent * event) iZEtaPhiPt<0 || iZEtaPhiPt>=_nBins_zEtaPhiPt_1");
1225 //cout << "all good; process track:" << endl;
1229 //_betaVsP_1->Fill(p*q,_trackFilter_1->getBeta() );
1230 //_dedxVsP_1->Fill(p*q,dedx);
1231 //_corrDedxVsP_1->Fill(p*q,_trackFilter_1->getCorrectedDedx() );
1232 __n1_1_vsPt[iPt] += corr; //cout << "step 15" << endl;
1233 __n1_1_vsZEtaPhiPt[iZEtaPhiPt] += corr; //cout << "step 12" << endl;
1240 _charge_1[k1] = charge;
1241 _iEtaPhi_1[k1] = iEtaPhi;
1247 _correction_1[k1] = corr;
1249 __n1_1_vsEtaPhi[iEtaPhi] += corr;
1251 __s1pt_1_vsEtaPhi[iEtaPhi] += corrPt;
1257 AliError(Form("AliAnalysisTaskDptDptQA::analyze(AliceEvent * event) k1 >=arraySize; arraySize: %d",arraySize));
1263 if (!_sameFilter && _requestedCharge_2 == charge)
1265 iPhi = int( phi/_width_phi_2);
1266 if (iPhi<0 || iPhi>=_nBins_phi_2 )
1268 AliWarning("AliAnalysisTaskDptDptQA::analyze() iPhi<0 || iPhi>=_nBins_phi_1");
1272 iEta = int((eta-_min_eta_2)/_width_eta_2);
1273 if (iEta<0 || iEta>=_nBins_eta_2)
1275 AliWarning(Form("AliAnalysisTaskDptDptQA::analyze(AliceEvent * event) Mismatched iEta: %d", iEta));
1278 iPt = int((pt -_min_pt_2 )/_width_pt_2 );
1279 if (iPt<0 || iPt >=_nBins_pt_2)
1281 AliWarning(Form("AliAnalysisTaskDptDptQA::analyze(AliceEvent * event) Mismatched iPt: %d",iPt));
1285 iEtaPhi = iEta*_nBins_phi_2+iPhi;
1286 iZEtaPhiPt = iVertexP2 + iEtaPhi*_nBins_pt_2 + iPt;
1287 if (iZEtaPhiPt<0 || iZEtaPhiPt>=_nBins_zEtaPhiPt_2)
1289 AliWarning("AliAnalysisTaskDptDptQA::analyze(AliceEvent * event) iZEtaPhiPt<0 || iZEtaPhiPt>=_nBins_zEtaPhiPt_2");
1293 //cout << " iEtaPhi:" << iEtaPhi << " _nBins_etaPhi_1: "<< _nBins_etaPhi_1<< " _nBins_etaPhi_2: "<< _nBins_etaPhi_2<< endl;
1294 //if (_useEbyECorrections) corr = (charge>0) ? _correction_2p[iEtaPhi] : _correction_2m[iEtaPhi]; else
1295 //cout << "_correctionWeight_2:" << _correctionWeight_2 << endl;
1296 if (_correctionWeight_2)
1297 corr = _correctionWeight_2[iZEtaPhiPt];
1300 //dpt = pt - (charge>0) ? _avgPt_vsEtaPhi_2p[iEtaPhi] : _avgPt_vsEtaPhi_2m[iEtaPhi];
1304 //_dedxVsP_2->Fill(p*q,dedx);
1305 __n1_2_vsPt[iPt] += corr; //cout << "step 15" << endl;
1306 __n1_2_vsZEtaPhiPt[iZEtaPhiPt] += corr; //cout << "step 12" << endl;
1311 _id_2[k2] = iTrack; //cout << "step 1" << endl;
1312 _charge_2[k2] = charge; //cout << "step 2" << endl;
1313 _iEtaPhi_2[k2] = iEtaPhi; //cout << "step 3" << endl;
1314 _iPt_2[k2] = iPt; //cout << "step 4" << endl;
1315 _pt_2[k2] = pt; //cout << "step 5" << endl;
1316 _px_2[k2] = px; //cout << "step 6" << endl;
1317 _py_2[k2] = py; //cout << "step 7" << endl;
1318 _pz_2[k2] = pz; //cout << "step 8" << endl;
1319 _correction_2[k2] = corr; //cout << "step 9" << endl;
1320 __n1_2 += corr; //cout << "step 10" << endl;
1321 __s1pt_2 += corrPt; //cout << "step 13" << endl;
1323 __n1_2_vsEtaPhi[iEtaPhi] += corr; //cout << "step 11" << endl;
1324 __s1pt_2_vsEtaPhi[iEtaPhi] += corrPt; //cout << "step 14" << endl;
1329 AliWarning(Form("-W- k2 >=arraySize; arraySize: %d",arraySize));
1334 //cout << "done with track" << endl;
1340 //cout << "Filling histograms now" << endl;
1348 _vertexZ->Fill(vertexZ);
1352 // nothing to do here.
1358 _n1_1_vsM->Fill(centrality, __n1_1);
1359 _s1pt_1_vsM->Fill(centrality, __s1pt_1);
1360 _n1Nw_1_vsM->Fill(centrality, __n1Nw_1);
1361 _s1ptNw_1_vsM->Fill(centrality, __s1ptNw_1);
1362 _n1_2_vsM->Fill(centrality, __n1_1);
1363 _s1pt_2_vsM->Fill(centrality, __s1pt_1);
1364 _n1Nw_2_vsM->Fill(centrality, __n1Nw_1);
1365 _s1ptNw_2_vsM->Fill(centrality, __s1ptNw_1);
1366 // reset pair counters
1367 __n2_12 = __s2ptpt_12 = __s2NPt_12 = __s2PtN_12 = 0;
1368 __n2Nw_12 = __s2ptptNw_12 = __s2NPtNw_12 = __s2PtNNw_12 = 0;
1371 for (int i1=0; i1<k1; i1++)
1373 ////cout << " i1:" << i1 << endl;
1374 id_1 = _id_1[i1]; ////cout << " id_1:" << id_1 << endl;
1375 q_1 = _charge_1[i1]; ////cout << " q_1:" << q_1 << endl;
1376 iEtaPhi_1 = _iEtaPhi_1[i1]; ////cout << " iEtaPhi_1:" << iEtaPhi_1 << endl;
1377 iPt_1 = _iPt_1[i1]; ////cout << " iPt_1:" << iPt_1 << endl;
1378 corr_1 = _correction_1[i1]; ////cout << " corr_1:" << corr_1 << endl;
1379 pt_1 = _pt_1[i1]; ////cout << " pt_1:" << pt_1 << endl;
1380 dedx_1 = _dedx_1[i1]; ////cout << " dedx_1:" << dedx_1 << endl;
1382 for (int i2=i1+1; i2<k1; i2++)
1384 ////cout << " i2:" << i2 << endl;
1385 id_2 = _id_1[i2]; ////cout << " id_2:" << id_2 << endl;
1388 q_2 = _charge_1[i2]; ////cout << " q_1:" << q_1 << endl;
1389 iEtaPhi_2 = _iEtaPhi_1[i2]; ////cout << " iEtaPhi_1:" << iEtaPhi_1 << endl;
1390 iPt_2 = _iPt_1[i2]; ////cout << " iPt_1:" << iPt_1 << endl;
1391 corr_2 = _correction_1[i2]; ////cout << " corr_1:" << corr_1 << endl;
1392 pt_2 = _pt_1[i2]; ////cout << " pt_1:" << pt_1 << endl;
1393 dedx_2 = _dedx_1[i2]; ////cout << " dedx_2:" << dedx_2 << endl;
1394 corr = corr_1*corr_2;
1395 if (q_2>q_1 || (q_1>0 && q_2>0 && pt_2<=pt_1) || (q_1<0 && q_2<0 && pt_2>=pt_1))
1397 ij = iEtaPhi_1*_nBins_etaPhi_1 + iEtaPhi_2; ////cout << " ij:" << ij<< endl;
1399 else // swap particles
1401 ij = iEtaPhi_2*_nBins_etaPhi_1 + iEtaPhi_1; ////cout << " ij:" << ij<< endl;
1405 __n2_12_vsEtaPhi[ij] += corr;
1407 __s2ptpt_12 += corr*ptpt;
1408 __s2PtN_12 += corr*pt_1;
1409 __s2NPt_12 += corr*pt_2;
1410 __s2ptpt_12_vsEtaPhi[ij] += corr*ptpt;
1411 __s2PtN_12_vsEtaPhi[ij] += corr*pt_1;
1412 __s2NPt_12_vsEtaPhi[ij] += corr*pt_2;
1413 __n2_12_vsPtPt[iPt_1*_nBins_pt_2 + iPt_2] += corr;
1416 __s2ptptNw_12 += ptpt;
1417 __s2PtNNw_12 += pt_1;
1418 __s2NPtNw_12 += pt_2;
1426 for (int i1=0; i1<k1; i1++)
1428 ////cout << " i1:" << i1 << endl;
1429 id_1 = _id_1[i1]; ////cout << " id_1:" << id_1 << endl;
1430 q_1 = _charge_1[i1]; ////cout << " q_1:" << q_1 << endl;
1431 iEtaPhi_1 = _iEtaPhi_1[i1]; ////cout << " iEtaPhi_1:" << iEtaPhi_1 << endl;
1432 iPt_1 = _iPt_1[i1]; ////cout << " iPt_1:" << iPt_1 << endl;
1433 corr_1 = _correction_1[i1]; ////cout << " corr_1:" << corr_1 << endl;
1434 pt_1 = _pt_1[i1]; ////cout << " pt_1:" << pt_1 << endl;
1435 dedx_1 = _dedx_1[i1]; ////cout << " dedx_1:" << dedx_1 << endl;
1437 for (int i2=i1+1; i2<k1; i2++)
1439 ////cout << " i2:" << i2 << endl;
1440 id_2 = _id_1[i2]; ////cout << " id_2:" << id_2 << endl;
1443 q_2 = _charge_1[i2]; ////cout << " q_2:" << q_2 << endl;
1444 iEtaPhi_2 = _iEtaPhi_1[i2]; ////cout << " iEtaPhi_2:" << iEtaPhi_2 << endl;
1445 iPt_2 = _iPt_1[i2]; ////cout << " iPt_2:" << iPt_2 << endl;
1446 corr_2 = _correction_1[i2]; ////cout << " corr_2:" << corr_2 << endl;
1447 pt_2 = _pt_1[i2]; ////cout << " pt_2:" << pt_2 << endl;
1448 dedx_2 = _dedx_1[i2]; ////cout << " dedx_2:" << dedx_2 << endl;
1449 corr = corr_1*corr_2;
1450 if ( q_2<q_1 || (q_1>0 && q_2>0 && pt_2>=pt_1) || (q_1<0 && q_2<0 && pt_2<=pt_1))
1452 ij = iEtaPhi_1*_nBins_etaPhi_1 + iEtaPhi_2; ////cout << " ij:" << ij<< endl;
1454 else // swap particles
1456 ij = iEtaPhi_2*_nBins_etaPhi_1 + iEtaPhi_1; ////cout << " ij:" << ij<< endl;
1460 __n2_12_vsEtaPhi[ij] += corr;
1462 __s2ptpt_12 += corr*ptpt;
1463 __s2PtN_12 += corr*pt_1;
1464 __s2NPt_12 += corr*pt_2;
1465 __s2ptpt_12_vsEtaPhi[ij] += corr*ptpt;
1466 __s2PtN_12_vsEtaPhi[ij] += corr*pt_1;
1467 __s2NPt_12_vsEtaPhi[ij] += corr*pt_2;
1468 __n2_12_vsPtPt[iPt_1*_nBins_pt_2 + iPt_2] += corr;
1471 __s2ptptNw_12 += ptpt;
1472 __s2PtNNw_12 += pt_1;
1473 __s2NPtNw_12 += pt_2;
1480 else // filter 1 and 2 are different -- must do all particle pairs...
1482 _n1_1_vsM->Fill(centrality, __n1_1);
1483 _s1pt_1_vsM->Fill(centrality, __s1pt_1);
1484 _n1Nw_1_vsM->Fill(centrality, __n1Nw_1);
1485 _s1ptNw_1_vsM->Fill(centrality, __s1ptNw_1);
1486 _n1_2_vsM->Fill(centrality, __n1_2);
1487 _s1pt_2_vsM->Fill(centrality, __s1pt_2);
1488 _n1Nw_2_vsM->Fill(centrality, __n1Nw_2);
1489 _s1ptNw_2_vsM->Fill(centrality, __s1ptNw_2);
1490 // reset pair counters
1491 __n2_12 = __s2ptpt_12 = __s2NPt_12 = __s2PtN_12 = 0;
1492 __n2Nw_12 = __s2ptptNw_12 = __s2NPtNw_12 = __s2PtNNw_12 = 0;
1493 for (int i1=0; i1<k1; i1++)
1495 ////cout << " i1:" << i1 << endl;
1496 id_1 = _id_1[i1]; ////cout << " id_1:" << id_1 << endl;
1497 q_1 = _charge_1[i1]; ////cout << " q_1:" << q_1 << endl;
1498 iEtaPhi_1 = _iEtaPhi_1[i1]; ////cout << " iEtaPhi_1:" << iEtaPhi_1 << endl;
1499 iPt_1 = _iPt_1[i1]; ////cout << " iPt_1:" << iPt_1 << endl;
1500 corr_1 = _correction_1[i1]; ////cout << " corr_1:" << corr_1 << endl;
1501 pt_1 = _pt_1[i1]; ////cout << " pt_1:" << pt_1 << endl;
1502 px_1 = _px_1[i1]; ////cout << " px_1:" << px_1 << endl;
1503 py_1 = _py_1[i1]; ////cout << " py_1:" << py_1 << endl;
1504 pz_1 = _pz_1[i1]; ////cout << " pz_1:" << pz_1 << endl;
1505 dedx_1 = _dedx_1[i1]; ////cout << " dedx_1:" << dedx_1 << endl;
1508 for (int i2=0; i2<k2; i2++)
1510 ////cout << " i2:" << i2 << endl;
1511 id_2 = _id_2[i2]; ////cout << " id_2:" << id_2 << endl;
1512 if (id_1!=id_2) // exclude auto correlation
1514 q_2 = _charge_2[i2]; ////cout << " q_2:" << q_2 << endl;
1515 iEtaPhi_2 = _iEtaPhi_2[i2]; ////cout << " iEtaPhi_2:" << iEtaPhi_2 << endl;
1516 iPt_2 = _iPt_2[i2]; ////cout << " iPt_2:" << iPt_2 << endl;
1517 corr_2 = _correction_2[i2]; ////cout << " corr_2:" << corr_2 << endl;
1518 pt_2 = _pt_2[i2]; ////cout << " pt_2:" << pt_2 << endl;
1519 px_2 = _px_2[i2]; ////cout << " px_2:" << px_2 << endl;
1520 py_2 = _py_2[i2]; ////cout << " py_2:" << py_2 << endl;
1521 pz_2 = _pz_2[i2]; ////cout << " pz_2:" << pz_2 << endl;
1522 dedx_2 = _dedx_2[i2]; ////cout << " dedx_2:" << dedx_2 << endl;
1523 if (_rejectPairConversion)
1525 float e1Sq = massElecSq + pt_1*pt_1 + pz_1*pz_1;
1526 float e2Sq = massElecSq + pt_2*pt_2 + pz_2*pz_2;
1527 float mInvSq = 2*(massElecSq + sqrt(e1Sq*e2Sq) - px_1*px_2 - py_1*py_2 - pz_1*pz_2 );
1528 float mInv = sqrt(mInvSq);
1529 _invMass->Fill(mInv);
1532 if (dedx_1>75. && dedx_2>75.)
1534 _invMassElec->Fill(mInv);
1535 if (mInv<0.05) continue;
1539 corr = corr_1*corr_2;
1540 ij = iEtaPhi_1*_nBins_etaPhi_1 + iEtaPhi_2; ////cout << " ij:" << ij<< endl;
1542 __n2_12_vsEtaPhi[ij] += corr;
1544 __s2ptpt_12 += corr*ptpt;
1545 __s2PtN_12 += corr*pt_1;
1546 __s2NPt_12 += corr*pt_2;
1547 __s2ptpt_12_vsEtaPhi[ij] += corr*ptpt;
1548 __s2PtN_12_vsEtaPhi[ij] += corr*pt_1;
1549 __s2NPt_12_vsEtaPhi[ij] += corr*pt_2;
1550 __n2_12_vsPtPt[iPt_1*_nBins_pt_2 + iPt_2] += corr;
1552 __s2ptptNw_12 += ptpt;
1553 __s2PtNNw_12 += pt_1;
1554 __s2NPtNw_12 += pt_2;
1561 _n2_12_vsM->Fill(centrality, __n2_12);
1562 _s2PtPt_12_vsM->Fill(centrality, __s2ptpt_12);
1563 _s2PtN_12_vsM->Fill(centrality, __s2NPt_12);
1564 _s2NPt_12_vsM->Fill(centrality, __s2PtN_12);
1566 _n2Nw_12_vsM->Fill(centrality, __n2Nw_12);
1567 _s2PtPtNw_12_vsM->Fill(centrality, __s2ptptNw_12);
1568 _s2PtNNw_12_vsM->Fill(centrality, __s2NPtNw_12);
1569 _s2NPtNw_12_vsM->Fill(centrality, __s2PtNNw_12);
1574 cout << "AliAnalysisTaskDptDptQA::UserExec() -----------------Event Done " << endl;
1575 PostData(0,_outputHistoList);
1579 void AliAnalysisTaskDptDptQA::FinishTaskOutput()
1581 cout << "AliAnalysisTaskDptDptQA::FinishTaskOutput() Starting." << endl;
1582 cout << "= 0 ====================================================================" << endl;
1583 finalizeHistograms();
1584 cout << "= 1 ====================================================================" << endl;
1585 PostData(0,_outputHistoList);
1586 cout << "= 2 ====================================================================" << endl;
1587 cout << "AliAnalysisTaskDptDptQA::FinishTaskOutput() Done." << endl;
1590 void AliAnalysisTaskDptDptQA::Terminate(Option_t* /*option*/)
1592 cout << "AliAnalysisTaskDptDptQA::Terminate() Starting/Done." << endl;
1597 //===================================================================================================
1598 void AliAnalysisTaskDptDptQA::fillHistoWithArray(TH1 * h, float * array, int size)
1601 float v1, ev1, v2, ev2, sum, esum;
1602 for (i=0, i1=1; i<size; ++i,++i1)
1604 v1 = array[i]; ev1 = sqrt(v1);
1605 v2 = h->GetBinContent(i1);
1606 ev2 = h->GetBinError(i1);
1608 esum = sqrt(ev1*ev1+ev2*ev2);
1609 h->SetBinContent(i1,sum);
1610 h->SetBinError(i1,esum);
1614 void AliAnalysisTaskDptDptQA::fillHistoWithArray(TH2 * h, float * array, int size1, int size2)
1618 float v1, ev1, v2, ev2, sum, esum;
1619 for (i=0, i1=1; i<size1; ++i,++i1)
1621 for (j=0, j1=1; j<size2; ++j,++j1)
1623 v1 = array[i*size2+j]; ev1 = sqrt(v1);
1624 v2 = h->GetBinContent(i1,j1);
1625 ev2 = h->GetBinError(i1,j1);
1627 esum = sqrt(ev1*ev1+ev2*ev2);
1628 h->SetBinContent(i1,j1,sum);
1629 h->SetBinError(i1,j1,esum);
1634 void AliAnalysisTaskDptDptQA::fillHistoWithArray(TH3 * h, float * array, int size1, int size2, int size3)
1639 float v1, ev1, v2, ev2, sum, esum;
1640 int size23 = size2*size3;
1641 for (i=0, i1=1; i<size1; ++i,++i1)
1643 for (j=0, j1=1; j<size2; ++j,++j1)
1645 for (k=0, k1=1; k<size3; ++k,++k1)
1647 v1 = array[i*size23+j*size3+k]; ev1 = sqrt(v1);
1648 v2 = h->GetBinContent(i1,j1,k1);
1649 ev2 = h->GetBinError(i1,j1,k1);
1651 esum = sqrt(ev1*ev1+ev2*ev2);
1652 h->SetBinContent(i1,j1,k1,sum);
1653 h->SetBinError(i1,j1,k1,esum);
1659 void AliAnalysisTaskDptDptQA::fillHistoWithArray(TH1 * h, double * array, int size)
1662 double v1, ev1, v2, ev2, sum, esum;
1663 for (i=0, i1=1; i<size; ++i,++i1)
1665 v1 = array[i]; ev1 = sqrt(v1);
1666 v2 = h->GetBinContent(i1);
1667 ev2 = h->GetBinError(i1);
1669 esum = sqrt(ev1*ev1+ev2*ev2);
1670 h->SetBinContent(i1,sum);
1671 h->SetBinError(i1,esum);
1675 void AliAnalysisTaskDptDptQA::fillHistoWithArray(TH2 * h, double * array, int size1, int size2)
1679 double v1, ev1, v2, ev2, sum, esum;
1680 for (i=0, i1=1; i<size1; ++i,++i1)
1682 for (j=0, j1=1; j<size2; ++j,++j1)
1684 v1 = array[i*size2+j]; ev1 = sqrt(v1);
1685 v2 = h->GetBinContent(i1,j1);
1686 ev2 = h->GetBinError(i1,j1);
1688 esum = sqrt(ev1*ev1+ev2*ev2);
1689 h->SetBinContent(i1,j1,sum);
1690 h->SetBinError(i1,j1,esum);
1695 void AliAnalysisTaskDptDptQA::fillHistoWithArray(TH3 * h, double * array, int size1, int size2, int size3)
1700 double v1, ev1, v2, ev2, sum, esum;
1701 int size23 = size2*size3;
1702 for (i=0, i1=1; i<size1; ++i,++i1)
1704 for (j=0, j1=1; j<size2; ++j,++j1)
1706 for (k=0, k1=1; k<size3; ++k,++k1)
1708 v1 = array[i*size23+j*size3+k]; ev1 = sqrt(v1);
1709 v2 = h->GetBinContent(i1,j1,k1);
1710 ev2 = h->GetBinError(i1,j1,k1);
1712 esum = sqrt(ev1*ev1+ev2*ev2);
1713 h->SetBinContent(i1,j1,k1,sum);
1714 h->SetBinError(i1,j1,k1,esum);
1720 //________________________________________________________________________
1721 double * AliAnalysisTaskDptDptQA::getDoubleArray(int size, double v)
1723 /// Allocate an array of type double with n values
1724 /// Initialize the array to the given value
1725 double * array = new double [size];
1726 for (int i=0;i<size;++i) array[i]=v;
1730 //________________________________________________________________________
1731 float * AliAnalysisTaskDptDptQA::getFloatArray(int size, float v)
1733 /// Allocate an array of type float with n values
1734 /// Initialize the array to the given value
1735 float * array = new float [size];
1736 for (int i=0;i<size;++i) array[i]=v;
1741 //________________________________________________________________________
1742 TH1D * AliAnalysisTaskDptDptQA::createHisto1D(const TString & name, const TString & title,
1743 int n, double xMin, double xMax,
1744 const TString & xTitle, const TString & yTitle)
1746 //CreateHisto new 1D historgram
1747 AliInfo(Form("createHisto 1D histo %s nBins: %d xMin: %f xMax: %f",name.Data(),n,xMin,xMax));
1748 TH1D * h = new TH1D(name,title,n,xMin,xMax);
1749 h->GetXaxis()->SetTitle(xTitle);
1750 h->GetYaxis()->SetTitle(yTitle);
1756 //________________________________________________________________________
1757 TH1D * AliAnalysisTaskDptDptQA::createHisto1D(const TString & name, const TString & title,
1758 int n, double * bins,
1759 const TString & xTitle, const TString & yTitle)
1761 AliInfo(Form("createHisto 1D histo %s with %d non uniform nBins",name.Data(),n));
1762 TH1D * h = new TH1D(name,title,n,bins);
1763 h->GetXaxis()->SetTitle(xTitle);
1764 h->GetYaxis()->SetTitle(yTitle);
1770 //________________________________________________________________________
1771 TH2D * AliAnalysisTaskDptDptQA::createHisto2D(const TString & name, const TString & title,
1772 int nx, double xMin, double xMax, int ny, double yMin, double yMax,
1773 const TString & xTitle, const TString & yTitle, const TString & zTitle)
1775 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));
1776 TH2D * h = new TH2D(name,title,nx,xMin,xMax,ny,yMin,yMax);
1777 h->GetXaxis()->SetTitle(xTitle);
1778 h->GetYaxis()->SetTitle(yTitle);
1779 h->GetZaxis()->SetTitle(zTitle);
1784 //________________________________________________________________________
1785 TH2D * AliAnalysisTaskDptDptQA::createHisto2D(const TString & name, const TString & title,
1786 int nx, double* xbins, int ny, double yMin, double yMax,
1787 const TString & xTitle, const TString & yTitle, const TString & zTitle)
1789 AliInfo(Form("createHisto 2D histo %s with %d non uniform nBins",name.Data(),nx));
1791 h = new TH2D(name,title,nx,xbins,ny,yMin,yMax);
1792 h->GetXaxis()->SetTitle(xTitle);
1793 h->GetYaxis()->SetTitle(yTitle);
1794 h->GetZaxis()->SetTitle(zTitle);
1800 //________________________________________________________________________
1801 TH1F * AliAnalysisTaskDptDptQA::createHisto1F(const TString & name, const TString & title,
1802 int n, double xMin, double xMax,
1803 const TString & xTitle, const TString & yTitle)
1805 //CreateHisto new 1D historgram
1806 AliInfo(Form("createHisto 1D histo %s nBins: %d xMin: %f xMax: %f",name.Data(),n,xMin,xMax));
1807 TH1F * h = new TH1F(name,title,n,xMin,xMax);
1808 h->GetXaxis()->SetTitle(xTitle);
1809 h->GetYaxis()->SetTitle(yTitle);
1815 //________________________________________________________________________
1816 TH1F * AliAnalysisTaskDptDptQA::createHisto1F(const TString & name, const TString & title,
1817 int n, double * bins,
1818 const TString & xTitle, const TString & yTitle)
1820 AliInfo(Form("createHisto 1D histo %s with %d non uniform nBins",name.Data(),n));
1821 TH1F * h = new TH1F(name,title,n,bins);
1822 h->GetXaxis()->SetTitle(xTitle);
1823 h->GetYaxis()->SetTitle(yTitle);
1829 //________________________________________________________________________
1830 TH2F * AliAnalysisTaskDptDptQA::createHisto2F(const TString & name, const TString & title,
1831 int nx, double xMin, double xMax, int ny, double yMin, double yMax,
1832 const TString & xTitle, const TString & yTitle, const TString & zTitle)
1834 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));
1835 TH2F * h = new TH2F(name,title,nx,xMin,xMax,ny,yMin,yMax);
1836 h->GetXaxis()->SetTitle(xTitle);
1837 h->GetYaxis()->SetTitle(yTitle);
1838 h->GetZaxis()->SetTitle(zTitle);
1843 //________________________________________________________________________
1844 TH2F * AliAnalysisTaskDptDptQA::createHisto2F(const TString & name, const TString & title,
1845 int nx, double* xbins, int ny, double yMin, double yMax,
1846 const TString & xTitle, const TString & yTitle, const TString & zTitle)
1848 AliInfo(Form("createHisto 2D histo %s with %d non uniform nBins",name.Data(),nx));
1850 h = new TH2F(name,title,nx,xbins,ny,yMin,yMax);
1851 h->GetXaxis()->SetTitle(xTitle);
1852 h->GetYaxis()->SetTitle(yTitle);
1853 h->GetZaxis()->SetTitle(zTitle);
1859 //________________________________________________________________________
1860 TH3F * AliAnalysisTaskDptDptQA::createHisto3F(const TString & name, const TString & title,
1861 int nx, double xMin, double xMax,
1862 int ny, double yMin, double yMax,
1863 int nz, double zMin, double zMax,
1864 const TString & xTitle, const TString & yTitle, const TString & zTitle)
1866 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));
1867 TH3F * h = new TH3F(name,title,nx,xMin,xMax,ny,yMin,yMax,nz,zMin,zMax);
1868 h->GetXaxis()->SetTitle(xTitle);
1869 h->GetYaxis()->SetTitle(yTitle);
1870 h->GetZaxis()->SetTitle(zTitle);
1876 //________________________________________________________________________
1877 TProfile * AliAnalysisTaskDptDptQA::createProfile(const TString & name, const TString & description,
1878 int nx,double xMin,double xMax,
1879 const TString & xTitle, const TString & yTitle)
1881 AliInfo(Form("createHisto 1D profile %s nBins: %d xMin: %f10.4 xMax: %f10.4",name.Data(),nx,xMin,xMax));
1882 TProfile * h = new TProfile(name,description,nx,xMin,xMax);
1883 h->GetXaxis()->SetTitle(xTitle);
1884 h->GetYaxis()->SetTitle(yTitle);
1889 //________________________________________________________________________
1890 TProfile * AliAnalysisTaskDptDptQA::createProfile(const TString & name,const TString & description,
1891 int nx, double* bins,
1892 const TString & xTitle, const TString & yTitle)
1894 AliInfo(Form("createHisto 1D profile %s with %d non uniform bins",name.Data(),nx));
1895 TProfile * h = new TProfile(name,description,nx,bins);
1896 h->GetXaxis()->SetTitle(xTitle);
1897 h->GetYaxis()->SetTitle(yTitle);
1903 void AliAnalysisTaskDptDptQA::addToList(TH1 *h)
1905 if (_outputHistoList)
1907 _outputHistoList->Add(h);
1910 cout << "addToList(TH1 *h) _outputHistoList is null!!!!! Shoudl abort ship" << endl;