1 //Correlation in momentum components
11 #include "THnSparse.h"
27 #include "AliAnalysisManager.h"
28 #include "AliAODHandler.h"
29 #include "AliAODInputHandler.h"
30 #include "AliInputEventHandler.h"
32 #include "AliESDEvent.h"
33 #include "AliESDInputHandler.h"
34 #include "AliMultiplicity.h"
35 #include "AliCentrality.h"
36 #include "AliAnalysisTaskpypy.h"
38 #include "AliPIDResponse.h"
39 #include "AliESDVertex.h"
40 #include "AliESDEvent.h"
41 #include "AliESDInputHandler.h"
42 #include "AliAODEvent.h"
43 #include "AliAODTrack.h"
44 #include "AliAODInputHandler.h"
46 #include "AliESDEvent.h"
47 #include "AliAODEvent.h"
49 #include "AliESDtrackCuts.h"
50 #include "AliAODMCHeader.h"
51 #include "AliGenHijingEventHeader.h"
52 #include "AliGenEventHeader.h"
54 #include "AliAODPid.h"
55 #include "AliPIDResponse.h"
56 #include "AliAODpidUtil.h"
57 #include "AliPIDCombined.h"
58 ClassImp(AliAnalysisTaskpypy)
59 AliAnalysisTaskpypy::AliAnalysisTaskpypy()
60 : AliAnalysisTaskSE(),
62 fESDEvent(0), //! ESD Event
66 _twoPi ( 2.0 * 3.1415927),
73 _rejectPairConversion ( 0),
78 _centralityMethod ( 4),
81 _requestedCharge_1 ( 1),
82 _requestedCharge_2 ( -1),
125 _correctionWeight_1(0),
126 _correctionWeight_2(0),
127 _nBins_M0(500), _min_M0(0), _max_M0(10000), _width_M0(20),
128 _nBins_M1(500), _min_M1(0), _max_M1(10000), _width_M1(20),
129 _nBins_M2(500), _min_M2(0), _max_M2(10000), _width_M2(20),
130 _nBins_M3(500), _min_M3(0), _max_M3(10000), _width_M3(20),
131 _nBins_M4(100), _min_M4(0), _max_M4(1), _width_M4(0.01),
132 _nBins_M5(100), _min_M5(0), _max_M5(1), _width_M5(0.01),
133 _nBins_M6(100), _min_M6(0), _max_M6(1), _width_M6(0.01),
134 _nBins_vertexZ(40), _min_vertexZ(-10), _max_vertexZ(10), _width_vertexZ(0.5),
136 _nBins_pt_1(18), _min_pt_1(0.2), _max_pt_1(2.0), _width_pt_1(0.1),
137 _nBins_phi_1(72), _min_phi_1(0), _max_phi_1(2.*3.1415927),_width_phi_1(2.*3.1415927/72.),
138 _nBins_eta_1(0), _min_eta_1(0), _max_eta_1(0), _width_eta_1(0.1),
141 _nBins_etaPhiPt_1(0),
142 _nBins_zEtaPhiPt_1(0),
144 _nBins_pt_2(18), _min_pt_2(0.2), _max_pt_2(2.0), _width_pt_2(0.1),
145 _nBins_phi_2(72), _min_phi_2(0), _max_phi_2(2.*3.1415927),_width_phi_2(2.*3.1415927/72),
146 _nBins_eta_2(0), _min_eta_2(0), _max_eta_2(0), _width_eta_2(0.1),
149 _nBins_etaPhiPt_2(0),
150 _nBins_zEtaPhiPt_2(0),
170 __s1pt_1_vsEtaPhi(0),
171 __n1_1_vsZEtaPhiPt(0),
174 __s1pt_2_vsEtaPhi(0),
175 __n1_2_vsZEtaPhiPt(0),
178 __s2ptpt_12_vsEtaPhi(0),
179 __s2PtN_12_vsEtaPhi(0),
180 __s2NPt_12_vsEtaPhi(0),
183 _eventAccounting ( 0),
200 _n1_1_vsEtaVsPhi ( 0),
201 _s1pt_1_vsEtaVsPhi ( 0),
202 _n1_1_vsZVsEtaVsPhiVsPt ( 0),
211 _n1_2_vsEtaVsPhi ( 0),
212 _s1pt_2_vsEtaVsPhi ( 0),
213 _n1_2_vsZVsEtaVsPhiVsPt ( 0),
221 _n2_12_vsEtaPhi ( 0),
222 _n2_12_vsPtVsPt ( 0),
223 _s2PtPt_12_vsEtaPhi( 0),
224 _s2PtN_12_vsEtaPhi ( 0),
225 _s2NPt_12_vsEtaPhi ( 0),
231 _s2PtPtNw_12_vsM ( 0),
232 _s2PtNNw_12_vsM ( 0),
233 _s2NPtNw_12_vsM ( 0),
256 intBinCorrName("NA"),
306 _title_etaPhi_1("NA"),
308 _title_SumPt_1("NA"),
309 _title_AvgPt_1("NA"),
311 _title_AvgSumPt_1("NA"),
316 _title_etaPhi_2("NA"),
318 _title_SumPt_2("NA"),
319 _title_AvgPt_2("NA"),
321 _title_AvgSumPt_2("NA"),
323 _title_etaPhi_12("NA"),
325 _title_AvgN2_12("NA"),
326 _title_AvgSumPtPt_12("NA"),
327 _title_AvgSumPtN_12("NA"),
328 _title_AvgNSumPt_12("NA"),
338 printf("Default constructor called \n");
340 printf("passed \n ");
344 AliAnalysisTaskpypy::AliAnalysisTaskpypy(const TString & name)
345 : AliAnalysisTaskSE(name),
351 _twoPi ( 2.0 * 3.1415927),
356 _sameFilter ( false),
358 _rejectPairConversion ( 0),
361 _vertexXYMin ( -10.),
363 _centralityMethod ( 4),
364 _centralityMin ( 0.),
365 _centralityMax ( 1.),
366 _requestedCharge_1 ( 1),
367 _requestedCharge_2 ( -1),
375 _trackFilterBit ( 0),
410 _correctionWeight_1(0),
411 _correctionWeight_2(0),
412 _nBins_M0(500), _min_M0(0), _max_M0(10000), _width_M0(20),
413 _nBins_M1(500), _min_M1(0), _max_M1(10000), _width_M1(20),
414 _nBins_M2(500), _min_M2(0), _max_M2(10000), _width_M2(20),
415 _nBins_M3(500), _min_M3(0), _max_M3(10000), _width_M3(20),
416 _nBins_M4(100), _min_M4(0), _max_M4(1), _width_M4(0.01),
417 _nBins_M5(100), _min_M5(0), _max_M5(1), _width_M5(0.01),
418 _nBins_M6(100), _min_M6(0), _max_M6(1), _width_M6(0.01),
419 _nBins_vertexZ(40), _min_vertexZ(-10), _max_vertexZ(10), _width_vertexZ(0.5),
421 _nBins_pt_1(18), _min_pt_1(0.2), _max_pt_1(2.0), _width_pt_1(0.1),
422 _nBins_phi_1(72), _min_phi_1(0), _max_phi_1(2.*3.1415927),_width_phi_1(2.*3.1415927/72.),
423 _nBins_eta_1(0), _min_eta_1(0), _max_eta_1(0), _width_eta_1(0.1),
426 _nBins_etaPhiPt_1(0),
427 _nBins_zEtaPhiPt_1(0),
429 _nBins_pt_2(18), _min_pt_2(0.2), _max_pt_2(2.0), _width_pt_2(0.1),
430 _nBins_phi_2(72), _min_phi_2(0), _max_phi_2(2.*3.1415927),_width_phi_2(2.*3.1415927/72),
431 _nBins_eta_2(0), _min_eta_2(0), _max_eta_2(0), _width_eta_2(0.1),
434 _nBins_etaPhiPt_2(0),
435 _nBins_zEtaPhiPt_2(0),
455 __s1pt_1_vsEtaPhi(0),
456 __n1_1_vsZEtaPhiPt(0),
459 __s1pt_2_vsEtaPhi(0),
460 __n1_2_vsZEtaPhiPt(0),
463 __s2ptpt_12_vsEtaPhi(0),
464 __s2PtN_12_vsEtaPhi(0),
465 __s2NPt_12_vsEtaPhi(0),
468 _eventAccounting ( 0),
485 _n1_1_vsEtaVsPhi ( 0),
486 _s1pt_1_vsEtaVsPhi ( 0),
487 _n1_1_vsZVsEtaVsPhiVsPt ( 0),
496 _n1_2_vsEtaVsPhi ( 0),
497 _s1pt_2_vsEtaVsPhi ( 0),
498 _n1_2_vsZVsEtaVsPhiVsPt ( 0),
506 _n2_12_vsEtaPhi ( 0),
507 _n2_12_vsPtVsPt ( 0),
508 _s2PtPt_12_vsEtaPhi( 0),
509 _s2PtN_12_vsEtaPhi ( 0),
510 _s2NPt_12_vsEtaPhi ( 0),
516 _s2PtPtNw_12_vsM ( 0),
517 _s2PtNNw_12_vsM ( 0),
518 _s2NPtNw_12_vsM ( 0),
541 intBinCorrName("NA"),
591 _title_etaPhi_1("NA"),
593 _title_SumPt_1("NA"),
594 _title_AvgPt_1("NA"),
596 _title_AvgSumPt_1("NA"),
601 _title_etaPhi_2("NA"),
603 _title_SumPt_2("NA"),
604 _title_AvgPt_2("NA"),
606 _title_AvgSumPt_2("NA"),
608 _title_etaPhi_12("NA"),
610 _title_AvgN2_12("NA"),
611 _title_AvgSumPtPt_12("NA"),
612 _title_AvgSumPtN_12("NA"),
613 _title_AvgNSumPt_12("NA"),
623 printf("2nd constructor called ");
625 DefineOutput(0, TList::Class());
631 AliAnalysisTaskpypy::~AliAnalysisTaskpypy()
636 void AliAnalysisTaskpypy::UserCreateOutputObjects()
639 _outputHistoList = new TList();
640 _outputHistoList->SetOwner();
642 _nBins_M0 = 500; _min_M0 = 0.; _max_M0 = 5000.; _width_M0 = (_max_M0-_min_M0)/_nBins_M0;
643 _nBins_M1 = 500; _min_M1 = 0.; _max_M1 = 5000.; _width_M1 = (_max_M1-_min_M1)/_nBins_M1;
644 _nBins_M2 = 500; _min_M2 = 0.; _max_M2 = 5000.; _width_M2 = (_max_M2-_min_M2)/_nBins_M2;
645 _nBins_M3 = 500; _min_M3 = 0.; _max_M3 = 5000.; _width_M3 = (_max_M3-_min_M3)/_nBins_M3;
646 _nBins_M4 = 100; _min_M4 = 0.; _max_M4 = 100.; _width_M4 = (_max_M4-_min_M4)/_nBins_M4;
647 _nBins_M5 = 100; _min_M5 = 0.; _max_M5 = 100.; _width_M5 = (_max_M5-_min_M5)/_nBins_M5;
648 _nBins_M6 = 100; _min_M6 = 0.; _max_M6 = 100.; _width_M6 = (_max_M6-_min_M6)/_nBins_M6;
650 _min_vertexZ = _vertexZMin;
651 _max_vertexZ = _vertexZMax;
652 _width_vertexZ = 0.5;
653 _nBins_vertexZ = int(0.5+ (_max_vertexZ - _min_vertexZ)/_width_vertexZ);
654 _nBins_pt_1 = int(0.5+ (_max_pt_1 -_min_pt_1 )/_width_pt_1);
655 _nBins_eta_1 = int(0.5+ (_max_eta_1-_min_eta_1)/_width_eta_1);
656 _width_phi_1 = (_max_phi_1 - _min_phi_1) /_nBins_phi_1;
657 _nBins_etaPhi_1 = _nBins_phi_1 * _nBins_eta_1;
658 _nBins_etaPhiPt_1 = _nBins_etaPhi_1 * _nBins_pt_1;
659 _nBins_zEtaPhiPt_1 = _nBins_vertexZ * _nBins_etaPhiPt_1;
661 _nBins_pt_2 = int(0.5+ (_max_pt_2 -_min_pt_2 )/_width_pt_2);
662 _nBins_eta_2 = int(0.5+ (_max_eta_2-_min_eta_2)/_width_eta_2);
663 _width_phi_2 = (_max_phi_2 - _min_phi_2) /_nBins_phi_2;
664 _nBins_etaPhi_2 = _nBins_phi_2 * _nBins_eta_2;
665 _nBins_etaPhiPt_2 = _nBins_etaPhi_2 * _nBins_pt_2;
666 _nBins_zEtaPhiPt_2 = _nBins_vertexZ * _nBins_etaPhiPt_2;
667 _nBins_etaPhi_12 = _nBins_etaPhi_1 * _nBins_etaPhi_2;
669 _id_1 = new int[arraySize];
670 _charge_1 = new int[arraySize];
671 _iEtaPhi_1 = new int[arraySize];
672 _iPt_1 = new int[arraySize];
673 _pt_1 = new float[arraySize];
674 _px_1 = new float[arraySize];
675 _py_1 = new float[arraySize];
676 _pz_1 = new float[arraySize];
677 _correction_1 = new float[arraySize];
678 _dedx_1 = new float[arraySize];
679 __n1_1_vsPt = getDoubleArray(_nBins_pt_1, 0.);
680 __n1_1_vsEtaPhi = getDoubleArray(_nBins_etaPhi_1, 0.);
681 __s1pt_1_vsEtaPhi = getDoubleArray(_nBins_etaPhi_1, 0.);
682 __n1_1_vsZEtaPhiPt = getFloatArray(_nBins_zEtaPhiPt_1, 0.);
685 if (_requestedCharge_2!=_requestedCharge_1)
689 _id_2 = new int[arraySize];
690 _charge_2 = new int[arraySize];
691 _iEtaPhi_2 = new int[arraySize];
692 _iPt_2 = new int[arraySize];
693 _pt_2 = new float[arraySize];
694 _px_2 = new float[arraySize];
695 _py_2 = new float[arraySize];
696 _pz_2 = new float[arraySize];
697 _correction_2 = new float[arraySize];
698 _dedx_2 = new float[arraySize];
699 __n1_2_vsPt = getDoubleArray(_nBins_pt_2, 0.);
700 __n1_2_vsEtaPhi = getDoubleArray(_nBins_etaPhi_2, 0.);
701 __s1pt_2_vsEtaPhi = getDoubleArray(_nBins_etaPhi_2, 0.);
702 __n1_2_vsZEtaPhiPt = getFloatArray(_nBins_zEtaPhiPt_2, 0.);
706 __n2_12_vsPtPt = getDoubleArray(_nBins_pt_1*_nBins_pt_2,0.);
707 __n2_12_vsEtaPhi = getFloatArray(_nBins_etaPhi_12, 0.);
708 __s2ptpt_12_vsEtaPhi = getFloatArray(_nBins_etaPhi_12, 0.);
709 __s2PtN_12_vsEtaPhi = getFloatArray(_nBins_etaPhi_12, 0.);
710 __s2NPt_12_vsEtaPhi = getFloatArray(_nBins_etaPhi_12, 0.);
712 // Setup all the labels needed.
716 pair_12_Name = "_12";
733 binCorrName = "binCorr";
734 intBinCorrName = "intBinCorr";
739 s1ptNwName = "sumPtNw";
740 s1DptName = "sumDpt";
741 s2PtPtName = "sumPtPt";
742 s2PtPtNwName = "sumPtPtNw";
743 s2DptDptName = "sumDptDpt";
744 s2NPtName = "sumNPt";
745 s2NPtNwName = "sumNPtNw";
746 s2PtNName = "sumPtN";
747 s2NPtNwName = "sumNPtNw";
748 s2PtNNwName = "sumPtNNw";
750 ptptName = "avgPtPt";
751 pt1pt1Name = "avgPtavgPt";
753 DptDptName = "avgDptDpt";
754 RDptDptName = "relDptDpt"; // ratio of avgDptDpt by avgPt*avgPt
759 _title_counts = "yield";
765 _title_m4 = "V0Centrality";
766 _title_m5 = "TrkCentrality";
767 _title_m6 = "SpdCentrality";
769 _title_eta_1 = "#eta_{1}";
770 _title_phi_1 = "#varphi_{1} (radian)";
771 _title_etaPhi_1 = "#eta_{1}#times#varphi_{1}";
772 _title_pt_1 = "p_{t,1} (GeV/c)";
773 _title_n_1 = "n_{1}";
774 _title_SumPt_1 = "#Sigma p_{t,1} (GeV/c)";
775 _title_AvgPt_1 = "#LT p_{t,1} #GT (GeV/c)";
776 _title_AvgN_1 = "#LT n_{1} #GT";
777 _title_AvgSumPt_1 = "#LT #Sigma p_{t,1} #GT (GeV/c)";
779 _title_eta_2 = "#eta_{2}";
780 _title_phi_2 = "#varphi_{2} (radian)";
781 _title_etaPhi_2 = "#eta_{2}#times#varphi_{2}";
782 _title_pt_2 = "p_{t,2} (GeV/c)";
783 _title_n_2 = "n_{2}";
784 _title_SumPt_2 = "#Sigma p_{t,1} (GeV/c)";
785 _title_AvgPt_2 = "#LT p_{t,2} #GT (GeV/c)";
786 _title_AvgN_2 = "#LT n_{2} #GT";
787 _title_AvgSumPt_2 = "#LT #Sigma p_{t,2} #GT (GeV/c)";
789 _title_etaPhi_12 = "#eta_{1}#times#varphi_{1}#times#eta_{2}#times#varphi_{2}";
791 _title_AvgN2_12 = "#LT n_{2} #GT";;
792 _title_AvgSumPtPt_12 = "#LT #Sigma p_{t,1}p_{t,2} #GT";;
793 _title_AvgSumPtN_12 = "#LT #Sigma p_{t,1}N #GT";;
794 _title_AvgNSumPt_12 = "#LT N#Sigma p_{t,2} #GT";;
802 vsEtaPhi = "_vsEtaPhi";
803 vsPtVsPt = "_vsPtVsPt";
808 int iZ, iEtaPhi, iPt;
809 int iZ1,iEtaPhi1,iPt1;
813 _correctionWeight_1 = new float[_nBins_vertexZ*_nBins_etaPhi_1*_nBins_pt_1];
815 b = _nBins_etaPhi_1*_nBins_pt_1;
816 for (iZ=0,iZ1=1; iZ<_nBins_vertexZ; iZ++, iZ1++)
818 for (iEtaPhi=0,iEtaPhi1=1; iEtaPhi<_nBins_etaPhi_1; iEtaPhi++, iEtaPhi1++)
820 for (iPt=0,iPt1=1; iPt<_nBins_pt_1; iPt++, iPt1++)
822 _correctionWeight_1[iZ*b+iEtaPhi*a+iPt] = _weight_1->GetBinContent(iZ1,iEtaPhi1,iPt1);
829 AliError("AliAnalysisTaskpypy:: _weight_1 is a null pointer.");
836 _correctionWeight_2 = new float[_nBins_vertexZ*_nBins_etaPhi_2*_nBins_pt_2];
838 b = _nBins_etaPhi_2*_nBins_pt_2;
839 for (iZ=0,iZ1=1; iZ<_nBins_vertexZ; iZ++, iZ1++)
841 for (iEtaPhi=0,iEtaPhi1=1; iEtaPhi<_nBins_etaPhi_2; iEtaPhi++, iEtaPhi1++)
843 for (iPt=0,iPt1=1; iPt<_nBins_pt_2; iPt++, iPt1++)
845 _correctionWeight_2[iZ*b+iEtaPhi*a+iPt] = _weight_2->GetBinContent(iZ1,iEtaPhi1,iPt1);
852 AliError("AliAnalysisTaskpypy:: _weight_1 is a null pointer.");
859 PostData(0,_outputHistoList);
861 //cout<< "AliAnalysisTaskpypy::CreateOutputObjects() DONE " << endl;
865 void AliAnalysisTaskpypy::createHistograms()
867 AliInfo(" AliAnalysisTaskpypy::createHistoHistograms() Creating Event Histos");
870 name = "eventAccounting";
872 _eventAccounting = createHisto1D(name,name,10, -0.5, 9.5, "event Code", _title_counts);
874 name = "m0"; _m0 = createHisto1D(name,name,_nBins_M1, _min_M1, _max_M1, _title_m0, _title_counts);
875 name = "m1"; _m1 = createHisto1D(name,name,_nBins_M1, _min_M1, _max_M1, _title_m1, _title_counts);
876 name = "m2"; _m2 = createHisto1D(name,name,_nBins_M2, _min_M2, _max_M2, _title_m2, _title_counts);
877 name = "m3"; _m3 = createHisto1D(name,name,_nBins_M3, _min_M3, _max_M3, _title_m3, _title_counts);
878 name = "m4"; _m4 = createHisto1D(name,name,_nBins_M4, _min_M4, _max_M4, _title_m4, _title_counts);
879 name = "m5"; _m5 = createHisto1D(name,name,_nBins_M5, _min_M5, _max_M5, _title_m5, _title_counts);
880 name = "m6"; _m6 = createHisto1D(name,name,_nBins_M6, _min_M6, _max_M6, _title_m6, _title_counts);
881 name = "zV"; _vertexZ = createHisto1D(name,name,100, -10, 10, "z-Vertex (cm)", _title_counts);
884 name = "Eta"; _etadis = createHisto1F(name,name, 200, -1.0, 1.0, "#eta","counts");
885 name = "Phi"; _phidis = createHisto1F(name,name, 360, 0.0, 6.4, "#phi","counts");
886 name = "DCAz"; _dcaz = createHisto1F(name,name, 500, -5.0, 5.0, "dcaZ","counts");
887 name = "DCAxy"; _dcaxy = createHisto1F(name,name, 500, -5.0, 5.0, "dcaXY","counts");
889 // name = "Nclus1"; _Ncluster1 = createHisto1F(name,name, 200, 0, 200, "Ncluster1","counts");
890 //name = "Nclus2"; _Ncluster2 = createHisto1F(name,name, 200, 0, 200, "Ncluster2","counts");
894 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);
895 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);
897 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);
898 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 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);
904 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);
905 name = n1Name+part_1_Name+vsM; _n1_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_1);
906 name = s1ptName+part_1_Name+vsM; _s1pt_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_1);
907 name = n1NwName+part_1_Name+vsM; _n1Nw_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_1);
908 name = s1ptNwName+part_1_Name+vsM; _s1ptNw_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_1);
910 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);
911 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);
912 name = n1Name+part_2_Name + vsM; _n1_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_2);
913 name = s1ptName+part_2_Name + vsM; _s1pt_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_2);
914 name = n1NwName+part_2_Name+vsM; _n1Nw_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_1);
915 name = s1ptNwName+part_2_Name+vsM; _s1ptNw_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_1);
917 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);
918 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);
919 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);
920 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);
921 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);
923 name = n2Name+pair_12_Name + vsM; _n2_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN2_12);
924 name = s2PtPtName+pair_12_Name + vsM; _s2PtPt_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtPt_12);
925 name = s2PtNName+pair_12_Name + vsM; _s2PtN_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtN_12);
926 name = s2NPtName+pair_12_Name + vsM; _s2NPt_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgNSumPt_12);
928 name = n2NwName+pair_12_Name + vsM; _n2Nw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN2_12);
929 name = s2PtPtNwName+pair_12_Name + vsM; _s2PtPtNw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtPt_12);
930 name = s2PtNNwName+pair_12_Name + vsM; _s2PtNNw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtN_12);
931 name = s2NPtNwName+pair_12_Name + vsM; _s2NPtNw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgNSumPt_12);
933 name = "mInv"; _invMass = createHisto1F(name,name, 50, 0.41, 0.55, "M_{inv}","counts");
934 name = "mInvElec"; _invMassElec = createHisto1F(name,name, 500, 0., 1.000, "M_{inv}","counts");
937 AliInfo(" AliAnalysisTaskpypy::createHistoHistograms() All Done");
939 //-----------------------//
941 void AliAnalysisTaskpypy::finalizeHistograms()
944 AliInfo("AliAnalysisTaskpypy::finalizeHistograms() starting");
945 AliInfo(Form("CorrelationAnalyzers::finalizeHistograms() _eventCount : %d",int(_eventCount)));
950 fillHistoWithArray(_n1_1_vsPt, __n1_1_vsPt, _nBins_pt_1);
951 fillHistoWithArray(_n1_1_vsZVsEtaVsPhiVsPt, __n1_1_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_1, _nBins_pt_1);
952 fillHistoWithArray(_n1_2_vsPt, __n1_1_vsPt, _nBins_pt_1);
953 fillHistoWithArray(_n1_2_vsZVsEtaVsPhiVsPt, __n1_1_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_1, _nBins_pt_1);
957 fillHistoWithArray(_n1_1_vsPt, __n1_1_vsPt, _nBins_pt_1);
958 fillHistoWithArray(_n1_1_vsZVsEtaVsPhiVsPt, __n1_1_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_1, _nBins_pt_1);
959 fillHistoWithArray(_n1_2_vsPt, __n1_2_vsPt, _nBins_pt_2);
960 fillHistoWithArray(_n1_2_vsZVsEtaVsPhiVsPt, __n1_2_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_2, _nBins_pt_2);
967 fillHistoWithArray(_n1_1_vsEtaVsPhi, __n1_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
968 fillHistoWithArray(_s1pt_1_vsEtaVsPhi, __s1pt_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
969 fillHistoWithArray(_n1_2_vsEtaVsPhi, __n1_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
970 fillHistoWithArray(_s1pt_2_vsEtaVsPhi, __s1pt_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
974 fillHistoWithArray(_n1_1_vsEtaVsPhi, __n1_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
975 fillHistoWithArray(_s1pt_1_vsEtaVsPhi, __s1pt_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
976 fillHistoWithArray(_n1_2_vsEtaVsPhi, __n1_2_vsEtaPhi, _nBins_eta_2, _nBins_phi_2);
977 fillHistoWithArray(_s1pt_2_vsEtaVsPhi, __s1pt_2_vsEtaPhi, _nBins_eta_2, _nBins_phi_2);
979 fillHistoWithArray(_n2_12_vsEtaPhi, __n2_12_vsEtaPhi, _nBins_etaPhi_12);
980 fillHistoWithArray(_s2PtPt_12_vsEtaPhi, __s2ptpt_12_vsEtaPhi, _nBins_etaPhi_12);
981 fillHistoWithArray(_s2PtN_12_vsEtaPhi, __s2PtN_12_vsEtaPhi, _nBins_etaPhi_12);
982 fillHistoWithArray(_s2NPt_12_vsEtaPhi, __s2NPt_12_vsEtaPhi, _nBins_etaPhi_12);
983 fillHistoWithArray(_n2_12_vsPtVsPt, __n2_12_vsPtPt, _nBins_pt_1, _nBins_pt_2);
986 AliInfo("AliAnalysisTaskpypy::finalizeHistograms() Done ");
991 void AliAnalysisTaskpypy::UserExec(Option_t */*option*/)
995 int iPhi, iEta, iEtaPhi, iPt, charge;
996 float q, phi, pt, eta, corr, corrPt, px, py, pz, dedx;
998 int id_1, q_1, iEtaPhi_1, iPt_1;
999 float pt_1, px_1, py_1, pz_1, corr_1, dedx_1;
1000 int id_2, q_2, iEtaPhi_2, iPt_2;
1001 float pt_2, px_2, py_2, pz_2, corr_2, dedx_2;
1003 int iVertex, iVertexP1, iVertexP2;
1005 float massElecSq = 1.94797849000000016e-02;
1008 const AliAODVertex* vertex;
1012 AliAnalysisManager* manager = AliAnalysisManager::GetAnalysisManager();
1016 AliAODInputHandler* inputHandler = dynamic_cast<AliAODInputHandler*> (manager->GetInputEventHandler());
1017 if (!inputHandler) {
1021 fAODEvent = dynamic_cast<AliAODEvent*>(InputEvent());
1022 //AliAODEvent* fAODEvent = dynamic_cast<AliAODEvent*>(InputEvent());
1028 fPIDResponse =inputHandler->GetPIDResponse();
1030 AliFatal("This Task needs the PID response attached to the inputHandler");
1034 // count all events looked at here
1037 if (_eventAccounting)
1039 _eventAccounting->Fill(0);// count all calls to this function
1047 _eventAccounting->Fill(1);// count all calls to this function with a valid pointer
1048 //reset single particle counters
1050 __n1_1 = __n1_2 = __s1pt_1 = __s1pt_2 = __n1Nw_1 = __n1Nw_2 = __s1ptNw_1 = __s1ptNw_2 = 0;
1052 float v0Centr = -999.;
1053 float v0ACentr = -999.;
1054 float trkCentr = -999.;
1055 float spdCentr = -999.;
1057 float vertexX = -999;
1058 float vertexY = -999;
1059 float vertexZ = -999;
1060 //float vertexXY = -999;
1061 //float dcaZ = -999;
1062 //float dcaXY = -999;
1063 float centrality = -999;
1068 AliCentrality* centralityObject = ((AliVAODHeader*)fAODEvent->GetHeader())->GetCentralityP();
1069 if (centralityObject)
1071 //cout << "AliAnalysisTaskpypy::UserExec(Option_t *option) - 6" << endl;
1073 v0Centr = centralityObject->GetCentralityPercentile("V0M");
1074 v0ACentr = centralityObject->GetCentralityPercentile("V0A");
1075 trkCentr = centralityObject->GetCentralityPercentile("TRK");
1076 spdCentr = centralityObject->GetCentralityPercentile("CL1");
1080 _nTracks =fAODEvent->GetNumberOfTracks();//NEW Test
1087 _field = fAODEvent->GetMagneticField();
1090 switch (_centralityMethod)
1092 case 0: centrality = _mult0; break;
1093 case 1: centrality = _mult1; break;
1094 case 2: centrality = _mult2; break;
1095 case 3: centrality = _mult3; break;
1096 case 4: centrality = _mult4; break;
1097 case 5: centrality = _mult5; break;
1098 case 6: centrality = _mult6; break;
1099 case 7: centrality = _mult4a; break;
1103 if ( centrality < _centralityMin || centrality > _centralityMax )
1107 _eventAccounting->Fill(2);// count all events with right centrality
1109 // filter on z and xy vertex
1110 vertex = (AliAODVertex*) fAODEvent->GetPrimaryVertex();
1112 //vertex->GetXYZ(V);
1117 vertex->GetCovarianceMatrix(fCov);
1118 if(vertex->GetNContributors() > 0)
1122 vertexX = vertex->GetX();
1123 vertexY = vertex->GetY();
1124 vertexZ = vertex->GetZ();
1126 if(TMath::Abs(vertexZ) > 10)
1134 //_vertexZ->Fill(vertexZ);
1136 iVertex = int((vertexZ-_min_vertexZ)/_width_vertexZ);
1137 iVertexP1 = iVertex*_nBins_etaPhiPt_1;
1138 iVertexP2 = iVertex*_nBins_etaPhiPt_2;
1139 if (iVertex<0 || iVertex>=_nBins_vertexZ)
1141 AliError("AliAnalysisTaskpypy::Exec(Option_t *option) iVertex<0 || iVertex>=_nBins_vertexZ ");
1144 _eventAccounting->Fill(3);// count all calls to this function with a valid pointer
1145 //======================
1147 //*********************************************************
1148 TExMap *trackMap = new TExMap();//Mapping matrix----
1150 //1st loop track for Global tracks
1151 for(Int_t i = 0; i < _nTracks; i++)
1153 AliAODTrack* aodTrack = dynamic_cast<AliAODTrack *>(fAODEvent->GetTrack(i));
1155 AliError(Form("ERROR: Could not retrieve AODtrack %d",i));
1158 Int_t gID = aodTrack->GetID();
1159 if (aodTrack->TestFilterBit(1)) trackMap->Add(gID, i);//Global tracks
1162 AliAODTrack* newAodTrack;
1164 //Track Loop starts here
1165 for (int iTrack=0; iTrack< _nTracks; iTrack++)
1167 AliAODTrack* t = dynamic_cast<AliAODTrack *>(fAODEvent->GetTrack(iTrack));
1169 AliError(Form("Could not receive track %d", iTrack));
1173 bitOK = t->TestFilterBit(_trackFilterBit);
1174 if (!bitOK) continue; //128bit or 272bit
1176 Int_t gID = t->GetID();
1177 newAodTrack = gID >= 0 ?t : dynamic_cast<AliAODTrack*>(fAODEvent->GetTrack(trackMap->GetValue(-1-gID)));
1178 if(!newAodTrack) AliFatal("Not a standard AOD?");
1188 dedx = t->GetTPCsignal();
1191 Double_t nsigmaelectron = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kElectron));
1192 Double_t nsigmapion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kPion));
1193 Double_t nsigmakaon = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kKaon));
1194 Double_t nsigmaproton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kProton));
1196 //nsigma cut to reject electron
1198 if(nsigmaelectron < fNSigmaCut
1199 && nsigmapion > fNSigmaCut
1200 && nsigmakaon > fNSigmaCut
1201 && nsigmaproton > fNSigmaCut ) continue;
1204 if(charge == 0) continue;
1205 // Kinematics cuts used
1206 if( py < _min_pt_1 || py > _max_pt_1) continue;
1207 if( eta < _min_eta_1 || eta > _max_eta_1) continue;
1210 //*************************************************
1213 if (_requestedCharge_1 == charge && dedx >= _dedxMin && dedx < _dedxMax)
1215 iPhi = int( phi/_width_phi_1);
1217 if (iPhi<0 || iPhi>=_nBins_phi_1 )
1219 AliWarning("AliAnalysisTaskpypy::analyze() iPhi<0 || iPhi>=_nBins_phi_1");
1223 iEta = int((eta-_min_eta_1)/_width_eta_1);
1224 if (iEta<0 || iEta>=_nBins_eta_1)
1226 AliWarning(Form("AliAnalysisTaskpypy::analyze(AliceEvent * event) Mismatched iEta: %d", iEta));
1229 iPt = int((pt -_min_pt_1 )/_width_pt_1 );
1230 if (iPt<0 || iPt >=_nBins_pt_1)
1232 AliWarning(Form("AliAnalysisTaskpypy::analyze(AliceEvent * event) Mismatched iPt: %d",iPt));
1235 iEtaPhi = iEta*_nBins_phi_1+iPhi;
1236 iZEtaPhiPt = iVertexP1 + iEtaPhi*_nBins_pt_1 + iPt;
1238 if (_correctionWeight_1)
1239 corr = _correctionWeight_1[iZEtaPhiPt];
1242 if (iZEtaPhiPt<0 || iZEtaPhiPt>=_nBins_zEtaPhiPt_1)
1244 AliWarning("AliAnalysisTaskpypy::analyze(AliceEvent * event) iZEtaPhiPt<0 || iZEtaPhiPt>=_nBins_zEtaPhiPt_1");
1252 __n1_1_vsPt[iPt] += corr; //cout << "step 15" << endl;
1253 __n1_1_vsZEtaPhiPt[iZEtaPhiPt] += corr; //cout << "step 12" << endl;
1260 _charge_1[k1] = charge;
1261 _iEtaPhi_1[k1] = iEtaPhi;
1263 _pt_1[k1] = py; //pt is now py
1267 _correction_1[k1] = corr;
1269 __n1_1_vsEtaPhi[iEtaPhi] += corr;
1271 __s1pt_1_vsEtaPhi[iEtaPhi] += corrPt;
1277 AliError(Form("AliAnalysisTaskpypy::analyze(AliceEvent * event) k1 >=arraySize; arraySize: %d",arraySize));
1283 if (!_sameFilter && _requestedCharge_2 == charge &&
1284 dedx >= _dedxMin && dedx < _dedxMax)
1288 iPhi = int( phi/_width_phi_2);
1290 if (iPhi<0 || iPhi>=_nBins_phi_2 )
1292 AliWarning("AliAnalysisTaskpypy::analyze() iPhi<0 || iPhi>=_nBins_phi_1");
1296 iEta = int((eta-_min_eta_2)/_width_eta_2);
1297 if (iEta<0 || iEta>=_nBins_eta_2)
1299 AliWarning(Form("AliAnalysisTaskpypy::analyze(AliceEvent * event) Mismatched iEta: %d", iEta));
1302 iPt = int((pt -_min_pt_2 )/_width_pt_2 );
1303 if (iPt<0 || iPt >=_nBins_pt_2)
1305 AliWarning(Form("AliAnalysisTaskpypy::analyze(AliceEvent * event) Mismatched iPt: %d",iPt));
1309 iEtaPhi = iEta*_nBins_phi_2+iPhi;
1310 iZEtaPhiPt = iVertexP2 + iEtaPhi*_nBins_pt_2 + iPt;
1311 if (iZEtaPhiPt<0 || iZEtaPhiPt>=_nBins_zEtaPhiPt_2)
1313 AliWarning("AliAnalysisTaskpypy::analyze(AliceEvent * event) iZEtaPhiPt<0 || iZEtaPhiPt>=_nBins_zEtaPhiPt_2");
1318 if (_correctionWeight_2)
1319 corr = _correctionWeight_2[iZEtaPhiPt];
1325 __n1_2_vsPt[iPt] += corr; //cout << "step 15" << endl;
1326 __n1_2_vsZEtaPhiPt[iZEtaPhiPt] += corr; //cout << "step 12" << endl;
1332 _charge_2[k2] = charge;
1333 _iEtaPhi_2[k2] = iEtaPhi;
1335 _pt_2[k2] = py; //pt is py for particle 2
1339 _correction_2[k2] = corr;
1343 __n1_2_vsEtaPhi[iEtaPhi] += corr;
1344 __s1pt_2_vsEtaPhi[iEtaPhi] += corrPt;
1349 AliWarning(Form("-W- k2 >=arraySize; arraySize: %d",arraySize));
1354 //cout << "done with track" << endl;
1360 //cout << "Filling histograms now" << endl;
1368 //_vertexZ->Fill(vertexZ);
1372 // nothing to do here.
1378 _n1_1_vsM->Fill(centrality, __n1_1);
1379 _s1pt_1_vsM->Fill(centrality, __s1pt_1);
1380 _n1Nw_1_vsM->Fill(centrality, __n1Nw_1);
1381 _s1ptNw_1_vsM->Fill(centrality, __s1ptNw_1);
1382 _n1_2_vsM->Fill(centrality, __n1_1);
1383 _s1pt_2_vsM->Fill(centrality, __s1pt_1);
1384 _n1Nw_2_vsM->Fill(centrality, __n1Nw_1);
1385 _s1ptNw_2_vsM->Fill(centrality, __s1ptNw_1);
1386 // reset pair counters
1387 __n2_12 = __s2ptpt_12 = __s2NPt_12 = __s2PtN_12 = 0;
1388 __n2Nw_12 = __s2ptptNw_12 = __s2NPtNw_12 = __s2PtNNw_12 = 0;
1391 for (int i1=0; i1<k1; i1++)
1393 ////cout << " i1:" << i1 << endl;
1394 id_1 = _id_1[i1]; ////cout << " id_1:" << id_1 << endl;
1395 q_1 = _charge_1[i1]; ////cout << " q_1:" << q_1 << endl;
1396 iEtaPhi_1 = _iEtaPhi_1[i1]; ////cout << " iEtaPhi_1:" << iEtaPhi_1 << endl;
1397 iPt_1 = _iPt_1[i1]; ////cout << " iPt_1:" << iPt_1 << endl;
1398 corr_1 = _correction_1[i1]; ////cout << " corr_1:" << corr_1 << endl;
1399 pt_1 = _pt_1[i1]; ////cout << " pt_1:" << pt_1 << endl;
1400 dedx_1 = _dedx_1[i1]; ////cout << " dedx_1:" << dedx_1 << endl;
1402 for (int i2=i1+1; i2<k1; i2++)
1404 ////cout << " i2:" << i2 << endl;
1405 id_2 = _id_1[i2]; ////cout << " id_2:" << id_2 << endl;
1408 q_2 = _charge_1[i2]; ////cout << " q_1:" << q_1 << endl;
1409 iEtaPhi_2 = _iEtaPhi_1[i2]; ////cout << " iEtaPhi_1:" << iEtaPhi_1 << endl;
1410 iPt_2 = _iPt_1[i2]; ////cout << " iPt_1:" << iPt_1 << endl;
1411 corr_2 = _correction_1[i2]; ////cout << " corr_1:" << corr_1 << endl;
1412 pt_2 = _pt_1[i2]; ////cout << " pt_1:" << pt_1 << endl;
1413 dedx_2 = _dedx_1[i2]; ////cout << " dedx_2:" << dedx_2 << endl;
1414 corr = corr_1*corr_2;
1415 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))
1417 ij = iEtaPhi_1*_nBins_etaPhi_1 + iEtaPhi_2; ////cout << " ij:" << ij<< endl;
1419 else // swap particles
1421 ij = iEtaPhi_2*_nBins_etaPhi_1 + iEtaPhi_1; ////cout << " ij:" << ij<< endl;
1425 __n2_12_vsEtaPhi[ij] += corr;
1427 __s2ptpt_12 += corr*ptpt;
1428 __s2PtN_12 += corr*pt_1;
1429 __s2NPt_12 += corr*pt_2;
1430 __s2ptpt_12_vsEtaPhi[ij] += corr*ptpt;
1431 __s2PtN_12_vsEtaPhi[ij] += corr*pt_1;
1432 __s2NPt_12_vsEtaPhi[ij] += corr*pt_2;
1433 __n2_12_vsPtPt[iPt_1*_nBins_pt_2 + iPt_2] += corr;
1436 __s2ptptNw_12 += ptpt;
1437 __s2PtNNw_12 += pt_1;
1438 __s2NPtNw_12 += pt_2;
1446 for (int i1=0; i1<k1; i1++)
1448 ////cout << " i1:" << i1 << endl;
1449 id_1 = _id_1[i1]; ////cout << " id_1:" << id_1 << endl;
1450 q_1 = _charge_1[i1]; ////cout << " q_1:" << q_1 << endl;
1451 iEtaPhi_1 = _iEtaPhi_1[i1]; ////cout << " iEtaPhi_1:" << iEtaPhi_1 << endl;
1452 iPt_1 = _iPt_1[i1]; ////cout << " iPt_1:" << iPt_1 << endl;
1453 corr_1 = _correction_1[i1]; ////cout << " corr_1:" << corr_1 << endl;
1454 pt_1 = _pt_1[i1]; ////cout << " pt_1:" << pt_1 << endl;
1455 dedx_1 = _dedx_1[i1]; ////cout << " dedx_1:" << dedx_1 << endl;
1457 for (int i2=i1+1; i2<k1; i2++)
1459 ////cout << " i2:" << i2 << endl;
1460 id_2 = _id_1[i2]; ////cout << " id_2:" << id_2 << endl;
1463 q_2 = _charge_1[i2]; ////cout << " q_2:" << q_2 << endl;
1464 iEtaPhi_2 = _iEtaPhi_1[i2]; ////cout << " iEtaPhi_2:" << iEtaPhi_2 << endl;
1465 iPt_2 = _iPt_1[i2]; ////cout << " iPt_2:" << iPt_2 << endl;
1466 corr_2 = _correction_1[i2]; ////cout << " corr_2:" << corr_2 << endl;
1467 pt_2 = _pt_1[i2]; ////cout << " pt_2:" << pt_2 << endl;
1468 dedx_2 = _dedx_1[i2]; ////cout << " dedx_2:" << dedx_2 << endl;
1469 corr = corr_1*corr_2;
1470 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))
1472 ij = iEtaPhi_1*_nBins_etaPhi_1 + iEtaPhi_2; ////cout << " ij:" << ij<< endl;
1474 else // swap particles
1476 ij = iEtaPhi_2*_nBins_etaPhi_1 + iEtaPhi_1; ////cout << " ij:" << ij<< endl;
1480 __n2_12_vsEtaPhi[ij] += corr;
1482 __s2ptpt_12 += corr*ptpt;
1483 __s2PtN_12 += corr*pt_1;
1484 __s2NPt_12 += corr*pt_2;
1485 __s2ptpt_12_vsEtaPhi[ij] += corr*ptpt;
1486 __s2PtN_12_vsEtaPhi[ij] += corr*pt_1;
1487 __s2NPt_12_vsEtaPhi[ij] += corr*pt_2;
1488 __n2_12_vsPtPt[iPt_1*_nBins_pt_2 + iPt_2] += corr;
1491 __s2ptptNw_12 += ptpt;
1492 __s2PtNNw_12 += pt_1;
1493 __s2NPtNw_12 += pt_2;
1500 else // filter 1 and 2 are different -- must do all particle pairs...
1502 _n1_1_vsM->Fill(centrality, __n1_1);
1503 _s1pt_1_vsM->Fill(centrality, __s1pt_1);
1504 _n1Nw_1_vsM->Fill(centrality, __n1Nw_1);
1505 _s1ptNw_1_vsM->Fill(centrality, __s1ptNw_1);
1506 _n1_2_vsM->Fill(centrality, __n1_2);
1507 _s1pt_2_vsM->Fill(centrality, __s1pt_2);
1508 _n1Nw_2_vsM->Fill(centrality, __n1Nw_2);
1509 _s1ptNw_2_vsM->Fill(centrality, __s1ptNw_2);
1510 // reset pair counters
1511 __n2_12 = __s2ptpt_12 = __s2NPt_12 = __s2PtN_12 = 0;
1512 __n2Nw_12 = __s2ptptNw_12 = __s2NPtNw_12 = __s2PtNNw_12 = 0;
1513 for (int i1=0; i1<k1; i1++)
1515 ////cout << " i1:" << i1 << endl;
1516 id_1 = _id_1[i1]; ////cout << " id_1:" << id_1 << endl;
1517 q_1 = _charge_1[i1]; ////cout << " q_1:" << q_1 << endl;
1518 iEtaPhi_1 = _iEtaPhi_1[i1]; ////cout << " iEtaPhi_1:" << iEtaPhi_1 << endl;
1519 iPt_1 = _iPt_1[i1]; ////cout << " iPt_1:" << iPt_1 << endl;
1520 corr_1 = _correction_1[i1]; ////cout << " corr_1:" << corr_1 << endl;
1521 pt_1 = _pt_1[i1]; ////cout << " pt_1:" << pt_1 << endl;
1522 px_1 = _px_1[i1]; ////cout << " px_1:" << px_1 << endl;
1523 py_1 = _py_1[i1]; ////cout << " py_1:" << py_1 << endl;
1524 pz_1 = _pz_1[i1]; ////cout << " pz_1:" << pz_1 << endl;
1525 dedx_1 = _dedx_1[i1]; ////cout << " dedx_1:" << dedx_1 << endl;
1528 for (int i2=0; i2<k2; i2++)
1530 ////cout << " i2:" << i2 << endl;
1531 id_2 = _id_2[i2]; ////cout << " id_2:" << id_2 << endl;
1532 if (id_1!=id_2) // exclude auto correlation
1534 q_2 = _charge_2[i2]; ////cout << " q_2:" << q_2 << endl;
1535 iEtaPhi_2 = _iEtaPhi_2[i2]; ////cout << " iEtaPhi_2:" << iEtaPhi_2 << endl;
1536 iPt_2 = _iPt_2[i2]; ////cout << " iPt_2:" << iPt_2 << endl;
1537 corr_2 = _correction_2[i2]; ////cout << " corr_2:" << corr_2 << endl;
1538 pt_2 = _pt_2[i2]; ////cout << " pt_2:" << pt_2 << endl;
1539 px_2 = _px_2[i2]; ////cout << " px_2:" << px_2 << endl;
1540 py_2 = _py_2[i2]; ////cout << " py_2:" << py_2 << endl;
1541 pz_2 = _pz_2[i2]; ////cout << " pz_2:" << pz_2 << endl;
1542 dedx_2 = _dedx_2[i2]; ////cout << " dedx_2:" << dedx_2 << endl;
1545 if (_rejectPairConversion)
1547 float e1Sq = massElecSq + pt_1*pt_1 + pz_1*pz_1;
1548 float e2Sq = massElecSq + pt_2*pt_2 + pz_2*pz_2;
1549 float mInvSq = 2*(massElecSq + sqrt(e1Sq*e2Sq) - px_1*px_2 - py_1*py_2 - pz_1*pz_2 );
1550 float mInv = sqrt(mInvSq);
1551 _invMass->Fill(mInv);
1554 if (dedx_1>75. && dedx_2>75.)
1556 //_invMassElec->Fill(mInv);
1557 //if (mInv<0.05) continue;
1562 corr = corr_1*corr_2;
1563 ij = iEtaPhi_1*_nBins_etaPhi_1 + iEtaPhi_2; ////cout << " ij:" << ij<< endl;
1565 __n2_12_vsEtaPhi[ij] += corr;
1567 __s2ptpt_12 += corr*ptpt;
1568 __s2PtN_12 += corr*pt_1;
1569 __s2NPt_12 += corr*pt_2;
1570 __s2ptpt_12_vsEtaPhi[ij] += corr*ptpt;
1571 __s2PtN_12_vsEtaPhi[ij] += corr*pt_1;
1572 __s2NPt_12_vsEtaPhi[ij] += corr*pt_2;
1573 __n2_12_vsPtPt[iPt_1*_nBins_pt_2 + iPt_2] += corr;
1575 __s2ptptNw_12 += ptpt;
1576 __s2PtNNw_12 += pt_1;
1577 __s2NPtNw_12 += pt_2;
1584 _n2_12_vsM->Fill(centrality, __n2_12);
1585 _s2PtPt_12_vsM->Fill(centrality, __s2ptpt_12);
1586 _s2PtN_12_vsM->Fill(centrality, __s2NPt_12);
1587 _s2NPt_12_vsM->Fill(centrality, __s2PtN_12);
1589 _n2Nw_12_vsM->Fill(centrality, __n2Nw_12);
1590 _s2PtPtNw_12_vsM->Fill(centrality, __s2ptptNw_12);
1591 _s2PtNNw_12_vsM->Fill(centrality, __s2NPtNw_12);
1592 _s2NPtNw_12_vsM->Fill(centrality, __s2PtNNw_12);
1597 AliInfo("AliAnalysisTaskpypy::UserExec() -----------------Event Done ");
1598 PostData(0,_outputHistoList);
1602 void AliAnalysisTaskpypy::FinishTaskOutput()
1604 AliInfo("AliAnalysisTaskpypy::FinishTaskOutput() Starting.");
1605 Printf("= 0 ====================================================================");
1606 finalizeHistograms();
1607 AliInfo("= 1 ====================================================================");
1608 PostData(0,_outputHistoList);
1609 AliInfo("= 2 ====================================================================");
1610 AliInfo("AliAnalysisTaskpypy::FinishTaskOutput() Done.");
1613 void AliAnalysisTaskpypy::Terminate(Option_t* /*option*/)
1615 AliInfo("AliAnalysisTaskpypy::Terminate() Starting/Done.");
1620 //===================================================================================================
1621 void AliAnalysisTaskpypy::fillHistoWithArray(TH1 * h, float * array, int size)
1624 float v1, ev1, v2, ev2, sum, esum;
1625 for (i=0, i1=1; i<size; ++i,++i1)
1627 v1 = array[i]; ev1 = sqrt(v1);
1628 v2 = h->GetBinContent(i1);
1629 ev2 = h->GetBinError(i1);
1631 esum = sqrt(ev1*ev1+ev2*ev2);
1632 h->SetBinContent(i1,sum);
1633 h->SetBinError(i1,esum);
1637 void AliAnalysisTaskpypy::fillHistoWithArray(TH2 * h, float * array, int size1, int size2)
1641 float v1, ev1, v2, ev2, sum, esum;
1642 for (i=0, i1=1; i<size1; ++i,++i1)
1644 for (j=0, j1=1; j<size2; ++j,++j1)
1646 v1 = array[i*size2+j]; ev1 = sqrt(v1);
1647 v2 = h->GetBinContent(i1,j1);
1648 ev2 = h->GetBinError(i1,j1);
1650 esum = sqrt(ev1*ev1+ev2*ev2);
1651 h->SetBinContent(i1,j1,sum);
1652 h->SetBinError(i1,j1,esum);
1657 void AliAnalysisTaskpypy::fillHistoWithArray(TH3 * h, float * array, int size1, int size2, int size3)
1662 float v1, ev1, v2, ev2, sum, esum;
1663 int size23 = size2*size3;
1664 for (i=0, i1=1; i<size1; ++i,++i1)
1666 for (j=0, j1=1; j<size2; ++j,++j1)
1668 for (k=0, k1=1; k<size3; ++k,++k1)
1670 v1 = array[i*size23+j*size3+k]; ev1 = sqrt(v1);
1671 v2 = h->GetBinContent(i1,j1,k1);
1672 ev2 = h->GetBinError(i1,j1,k1);
1674 esum = sqrt(ev1*ev1+ev2*ev2);
1675 h->SetBinContent(i1,j1,k1,sum);
1676 h->SetBinError(i1,j1,k1,esum);
1682 void AliAnalysisTaskpypy::fillHistoWithArray(TH1 * h, double * array, int size)
1685 double v1, ev1, v2, ev2, sum, esum;
1686 for (i=0, i1=1; i<size; ++i,++i1)
1688 v1 = array[i]; ev1 = sqrt(v1);
1689 v2 = h->GetBinContent(i1);
1690 ev2 = h->GetBinError(i1);
1692 esum = sqrt(ev1*ev1+ev2*ev2);
1693 h->SetBinContent(i1,sum);
1694 h->SetBinError(i1,esum);
1698 void AliAnalysisTaskpypy::fillHistoWithArray(TH2 * h, double * array, int size1, int size2)
1702 double v1, ev1, v2, ev2, sum, esum;
1703 for (i=0, i1=1; i<size1; ++i,++i1)
1705 for (j=0, j1=1; j<size2; ++j,++j1)
1707 v1 = array[i*size2+j]; ev1 = sqrt(v1);
1708 v2 = h->GetBinContent(i1,j1);
1709 ev2 = h->GetBinError(i1,j1);
1711 esum = sqrt(ev1*ev1+ev2*ev2);
1712 h->SetBinContent(i1,j1,sum);
1713 h->SetBinError(i1,j1,esum);
1718 void AliAnalysisTaskpypy::fillHistoWithArray(TH3 * h, double * array, int size1, int size2, int size3)
1723 double v1, ev1, v2, ev2, sum, esum;
1724 int size23 = size2*size3;
1725 for (i=0, i1=1; i<size1; ++i,++i1)
1727 for (j=0, j1=1; j<size2; ++j,++j1)
1729 for (k=0, k1=1; k<size3; ++k,++k1)
1731 v1 = array[i*size23+j*size3+k]; ev1 = sqrt(v1);
1732 v2 = h->GetBinContent(i1,j1,k1);
1733 ev2 = h->GetBinError(i1,j1,k1);
1735 esum = sqrt(ev1*ev1+ev2*ev2);
1736 h->SetBinContent(i1,j1,k1,sum);
1737 h->SetBinError(i1,j1,k1,esum);
1743 //________________________________________________________________________
1744 double * AliAnalysisTaskpypy::getDoubleArray(int size, double v)
1746 /// Allocate an array of type double with n values
1747 /// Initialize the array to the given value
1748 double * array = new double [size];
1749 for (int i=0;i<size;++i) array[i]=v;
1753 //________________________________________________________________________
1754 float * AliAnalysisTaskpypy::getFloatArray(int size, float v)
1756 /// Allocate an array of type float with n values
1757 /// Initialize the array to the given value
1758 float * array = new float [size];
1759 for (int i=0;i<size;++i) array[i]=v;
1764 //________________________________________________________________________
1765 TH1D * AliAnalysisTaskpypy::createHisto1D(const TString & name, const TString & title,
1766 int n, double xMin, double xMax,
1767 const TString & xTitle, const TString & yTitle)
1769 //CreateHisto new 1D historgram
1770 AliInfo(Form("createHisto 1D histo %s nBins: %d xMin: %f xMax: %f",name.Data(),n,xMin,xMax));
1771 TH1D * h = new TH1D(name,title,n,xMin,xMax);
1772 h->GetXaxis()->SetTitle(xTitle);
1773 h->GetYaxis()->SetTitle(yTitle);
1779 //________________________________________________________________________
1780 TH1D * AliAnalysisTaskpypy::createHisto1D(const TString & name, const TString & title,
1781 int n, double * bins,
1782 const TString & xTitle, const TString & yTitle)
1784 AliInfo(Form("createHisto 1D histo %s with %d non uniform nBins",name.Data(),n));
1785 TH1D * h = new TH1D(name,title,n,bins);
1786 h->GetXaxis()->SetTitle(xTitle);
1787 h->GetYaxis()->SetTitle(yTitle);
1793 //________________________________________________________________________
1794 TH2D * AliAnalysisTaskpypy::createHisto2D(const TString & name, const TString & title,
1795 int nx, double xMin, double xMax, int ny, double yMin, double yMax,
1796 const TString & xTitle, const TString & yTitle, const TString & zTitle)
1798 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));
1799 TH2D * h = new TH2D(name,title,nx,xMin,xMax,ny,yMin,yMax);
1800 h->GetXaxis()->SetTitle(xTitle);
1801 h->GetYaxis()->SetTitle(yTitle);
1802 h->GetZaxis()->SetTitle(zTitle);
1807 //________________________________________________________________________
1808 TH2D * AliAnalysisTaskpypy::createHisto2D(const TString & name, const TString & title,
1809 int nx, double* xbins, int ny, double yMin, double yMax,
1810 const TString & xTitle, const TString & yTitle, const TString & zTitle)
1812 AliInfo(Form("createHisto 2D histo %s with %d non uniform nBins",name.Data(),nx));
1814 h = new TH2D(name,title,nx,xbins,ny,yMin,yMax);
1815 h->GetXaxis()->SetTitle(xTitle);
1816 h->GetYaxis()->SetTitle(yTitle);
1817 h->GetZaxis()->SetTitle(zTitle);
1823 //________________________________________________________________________
1824 TH1F * AliAnalysisTaskpypy::createHisto1F(const TString & name, const TString & title,
1825 int n, double xMin, double xMax,
1826 const TString & xTitle, const TString & yTitle)
1828 //CreateHisto new 1D historgram
1829 AliInfo(Form("createHisto 1D histo %s nBins: %d xMin: %f xMax: %f",name.Data(),n,xMin,xMax));
1830 TH1F * h = new TH1F(name,title,n,xMin,xMax);
1831 h->GetXaxis()->SetTitle(xTitle);
1832 h->GetYaxis()->SetTitle(yTitle);
1838 //________________________________________________________________________
1839 TH1F * AliAnalysisTaskpypy::createHisto1F(const TString & name, const TString & title,
1840 int n, double * bins,
1841 const TString & xTitle, const TString & yTitle)
1843 AliInfo(Form("createHisto 1D histo %s with %d non uniform nBins",name.Data(),n));
1844 TH1F * h = new TH1F(name,title,n,bins);
1845 h->GetXaxis()->SetTitle(xTitle);
1846 h->GetYaxis()->SetTitle(yTitle);
1852 //________________________________________________________________________
1853 TH2F * AliAnalysisTaskpypy::createHisto2F(const TString & name, const TString & title,
1854 int nx, double xMin, double xMax, int ny, double yMin, double yMax,
1855 const TString & xTitle, const TString & yTitle, const TString & zTitle)
1857 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));
1858 TH2F * h = new TH2F(name,title,nx,xMin,xMax,ny,yMin,yMax);
1859 h->GetXaxis()->SetTitle(xTitle);
1860 h->GetYaxis()->SetTitle(yTitle);
1861 h->GetZaxis()->SetTitle(zTitle);
1866 //________________________________________________________________________
1867 TH2F * AliAnalysisTaskpypy::createHisto2F(const TString & name, const TString & title,
1868 int nx, double* xbins, int ny, double yMin, double yMax,
1869 const TString & xTitle, const TString & yTitle, const TString & zTitle)
1871 AliInfo(Form("createHisto 2D histo %s with %d non uniform nBins",name.Data(),nx));
1873 h = new TH2F(name,title,nx,xbins,ny,yMin,yMax);
1874 h->GetXaxis()->SetTitle(xTitle);
1875 h->GetYaxis()->SetTitle(yTitle);
1876 h->GetZaxis()->SetTitle(zTitle);
1882 //________________________________________________________________________
1883 TH3F * AliAnalysisTaskpypy::createHisto3F(const TString & name, const TString & title,
1884 int nx, double xMin, double xMax,
1885 int ny, double yMin, double yMax,
1886 int nz, double zMin, double zMax,
1887 const TString & xTitle, const TString & yTitle, const TString & zTitle)
1889 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));
1890 TH3F * h = new TH3F(name,title,nx,xMin,xMax,ny,yMin,yMax,nz,zMin,zMax);
1891 h->GetXaxis()->SetTitle(xTitle);
1892 h->GetYaxis()->SetTitle(yTitle);
1893 h->GetZaxis()->SetTitle(zTitle);
1899 //________________________________________________________________________
1900 TProfile * AliAnalysisTaskpypy::createProfile(const TString & name, const TString & description,
1901 int nx,double xMin,double xMax,
1902 const TString & xTitle, const TString & yTitle)
1904 AliInfo(Form("createHisto 1D profile %s nBins: %d xMin: %f10.4 xMax: %f10.4",name.Data(),nx,xMin,xMax));
1905 TProfile * h = new TProfile(name,description,nx,xMin,xMax);
1906 h->GetXaxis()->SetTitle(xTitle);
1907 h->GetYaxis()->SetTitle(yTitle);
1912 //________________________________________________________________________
1913 TProfile * AliAnalysisTaskpypy::createProfile(const TString & name,const TString & description,
1914 int nx, double* bins,
1915 const TString & xTitle, const TString & yTitle)
1917 AliInfo(Form("createHisto 1D profile %s with %d non uniform bins",name.Data(),nx));
1918 TProfile * h = new TProfile(name,description,nx,bins);
1919 h->GetXaxis()->SetTitle(xTitle);
1920 h->GetYaxis()->SetTitle(yTitle);
1926 void AliAnalysisTaskpypy::addToList(TH1 *h)
1928 if (_outputHistoList)
1930 _outputHistoList->Add(h);
1933 AliInfo("addToList(TH1 *h) _outputHistoList is null!!!!! Should abort ship");