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 **************************************************************************/
25 #include "THnSparse.h"
42 #include "AliAnalysisManager.h"
44 #include "AliAODHandler.h"
45 #include "AliAODInputHandler.h"
46 #include "AliInputEventHandler.h"
48 #include "AliESDEvent.h"
49 #include "AliESDInputHandler.h"
50 #include "AliMultiplicity.h"
51 #include "AliCentrality.h"
52 #include "AliDptDptInMC.h"
55 #include "AliPIDResponse.h"
57 #include "AliESDVertex.h"
58 #include "AliESDEvent.h"
59 #include "AliESDInputHandler.h"
60 #include "AliAODEvent.h"
61 #include "AliAODTrack.h"
62 #include "AliAODInputHandler.h"
64 #include "AliESDEvent.h"
65 #include "AliAODEvent.h"
67 #include "AliESDtrackCuts.h"
68 #include "AliAODMCHeader.h"
69 #include "AliAODMCParticle.h"
70 #include "AliAODMCParticle.h"
71 #include "AliAODMCHeader.h"
72 #include "AliAODHeader.h"
74 #include "AliGenHijingEventHeader.h"
75 #include "AliGenEventHeader.h"
77 #include "AliAODPid.h"
78 #include "AliPIDResponse.h"
79 #include "AliAODpidUtil.h"
80 #include "AliPIDCombined.h"
85 ClassImp(AliDptDptInMC)
87 AliDptDptInMC::AliDptDptInMC()
88 : AliAnalysisTaskSE(),
90 fESDEvent(0), //! ESD Event
95 _twoPi ( 2.0 * 3.1415927),
100 _sameFilter ( false),
102 _rejectPairConversion ( 0),
107 _centralityMethod ( 4),
108 _centralityMin ( 0.),
109 _centralityMax ( 0.),
110 _requestedCharge_1 ( 1),
111 _requestedCharge_2 ( -1),
121 fAnalysisType ("MCAOD"),
122 fExcludeResonancesInMC (kFALSE),
123 fExcludeElectronsInMC (kFALSE),
155 _correctionWeight_1(0),
156 _correctionWeight_2(0),
157 _nBins_M0(500), _min_M0(0), _max_M0(10000), _width_M0(20),
158 _nBins_M1(500), _min_M1(0), _max_M1(10000), _width_M1(20),
159 _nBins_M2(500), _min_M2(0), _max_M2(10000), _width_M2(20),
160 _nBins_M3(500), _min_M3(0), _max_M3(10000), _width_M3(20),
161 _nBins_M4(100), _min_M4(0), _max_M4(1), _width_M4(0.01),
162 _nBins_M5(100), _min_M5(0), _max_M5(1), _width_M5(0.01),
163 _nBins_M6(100), _min_M6(0), _max_M6(1), _width_M6(0.01),
164 _nBins_vertexZ(40), _min_vertexZ(-10), _max_vertexZ(10), _width_vertexZ(0.5),
166 _nBins_pt_1(18), _min_pt_1(0.2), _max_pt_1(2.0), _width_pt_1(0.1),
167 _nBins_phi_1(72), _min_phi_1(0), _max_phi_1(2.*3.1415927),_width_phi_1(2.*3.1415927/72.),
169 //_min_eta_1(-0.9), _max_eta_1(0.9), _width_eta_1(0.1),
171 _min_eta_1(0), _max_eta_1(0), _width_eta_1(0.1),
174 _nBins_etaPhiPt_1(0),
175 _nBins_zEtaPhiPt_1(0),
177 _nBins_pt_2(18), _min_pt_2(0.2), _max_pt_2(2.0), _width_pt_2(0.1),
178 _nBins_phi_2(72), _min_phi_2(0), _max_phi_2(2.*3.1415927),_width_phi_2(2.*3.1415927/72),
180 //_min_eta_2(-0.9), _max_eta_2(0.9), _width_eta_2(0.1),
182 _min_eta_2(0), _max_eta_2(0), _width_eta_2(0.1),
187 _nBins_etaPhiPt_2(0),
188 _nBins_zEtaPhiPt_2(0),
208 __s1pt_1_vsEtaPhi(0),
209 __n1_1_vsZEtaPhiPt(0),
212 __s1pt_2_vsEtaPhi(0),
213 __n1_2_vsZEtaPhiPt(0),
216 __s2ptpt_12_vsEtaPhi(0),
217 __s2PtN_12_vsEtaPhi(0),
218 __s2NPt_12_vsEtaPhi(0),
221 _eventAccounting ( 0),
238 _n1_1_vsEtaVsPhi ( 0),
239 _s1pt_1_vsEtaVsPhi ( 0),
240 _n1_1_vsZVsEtaVsPhiVsPt ( 0),
241 _n1_1_vsM ( 0), // w/ weight
243 _n1Nw_1_vsM ( 0), // w/o weight
249 _n1_2_vsEtaVsPhi ( 0),
250 _s1pt_2_vsEtaVsPhi ( 0),
251 _n1_2_vsZVsEtaVsPhiVsPt ( 0),
259 _n2_12_vsEtaPhi ( 0),
260 _n2_12_vsPtVsPt ( 0),
261 _s2PtPt_12_vsEtaPhi( 0),
262 _s2PtN_12_vsEtaPhi ( 0),
263 _s2NPt_12_vsEtaPhi ( 0),
269 _s2PtPtNw_12_vsM ( 0),
270 _s2PtNNw_12_vsM ( 0),
271 _s2NPtNw_12_vsM ( 0),
294 intBinCorrName("NA"),
344 _title_etaPhi_1("NA"),
346 _title_SumPt_1("NA"),
347 _title_AvgPt_1("NA"),
349 _title_AvgSumPt_1("NA"),
354 _title_etaPhi_2("NA"),
356 _title_SumPt_2("NA"),
357 _title_AvgPt_2("NA"),
359 _title_AvgSumPt_2("NA"),
361 _title_etaPhi_12("NA"),
363 _title_AvgN2_12("NA"),
364 _title_AvgSumPtPt_12("NA"),
365 _title_AvgSumPtN_12("NA"),
366 _title_AvgNSumPt_12("NA"),
376 printf("Default constructor called \n");
378 printf("passed \n ");
382 AliDptDptInMC::AliDptDptInMC(const TString & name)
383 : AliAnalysisTaskSE(name),
390 _twoPi ( 2.0 * 3.1415927),
395 _sameFilter ( false),
397 _rejectPairConversion ( 0),
400 _vertexXYMin ( -10.),
402 _centralityMethod ( 4),
403 _centralityMin ( 0.),
404 _centralityMax ( 1.),
405 _requestedCharge_1 ( 1),
406 _requestedCharge_2 ( -1),
414 _trackFilterBit ( 0),
417 fAnalysisType ("MCAOD"),
418 fExcludeResonancesInMC (kFALSE),
419 fExcludeElectronsInMC (kFALSE),
452 _correctionWeight_1(0),
453 _correctionWeight_2(0),
454 _nBins_M0(500), _min_M0(0), _max_M0(10000), _width_M0(20),
455 _nBins_M1(500), _min_M1(0), _max_M1(10000), _width_M1(20),
456 _nBins_M2(500), _min_M2(0), _max_M2(10000), _width_M2(20),
457 _nBins_M3(500), _min_M3(0), _max_M3(10000), _width_M3(20),
458 _nBins_M4(100), _min_M4(0), _max_M4(1), _width_M4(0.01),
459 _nBins_M5(100), _min_M5(0), _max_M5(1), _width_M5(0.01),
460 _nBins_M6(100), _min_M6(0), _max_M6(1), _width_M6(0.01),
461 _nBins_vertexZ(40), _min_vertexZ(-10), _max_vertexZ(10), _width_vertexZ(0.5),
463 _nBins_pt_1(18), _min_pt_1(0.2), _max_pt_1(2.0), _width_pt_1(0.1),
464 _nBins_phi_1(72), _min_phi_1(0), _max_phi_1(2.*3.1415927),_width_phi_1(2.*3.1415927/72.),
466 //_min_eta_1(-0.9), _max_eta_1(0.9), _width_eta_1(0.1),
468 _min_eta_1(0), _max_eta_1(0), _width_eta_1(0.1),
471 _nBins_etaPhiPt_1(0),
472 _nBins_zEtaPhiPt_1(0),
474 _nBins_pt_2(18), _min_pt_2(0.2), _max_pt_2(2.0), _width_pt_2(0.1),
475 _nBins_phi_2(72), _min_phi_2(0), _max_phi_2(2.*3.1415927),_width_phi_2(2.*3.1415927/72),
477 //_min_eta_2(-0.9), _max_eta_2(0.9), _width_eta_2(0.1),
479 _min_eta_2(0), _max_eta_2(0), _width_eta_2(0.1),
483 _nBins_etaPhiPt_2(0),
484 _nBins_zEtaPhiPt_2(0),
504 __s1pt_1_vsEtaPhi(0),
505 __n1_1_vsZEtaPhiPt(0),
508 __s1pt_2_vsEtaPhi(0),
509 __n1_2_vsZEtaPhiPt(0),
512 __s2ptpt_12_vsEtaPhi(0),
513 __s2PtN_12_vsEtaPhi(0),
514 __s2NPt_12_vsEtaPhi(0),
517 _eventAccounting ( 0),
534 _n1_1_vsEtaVsPhi ( 0),
535 _s1pt_1_vsEtaVsPhi ( 0),
536 _n1_1_vsZVsEtaVsPhiVsPt ( 0),
537 _n1_1_vsM ( 0), // w/ weight
539 _n1Nw_1_vsM ( 0), // w/o weight
545 _n1_2_vsEtaVsPhi ( 0),
546 _s1pt_2_vsEtaVsPhi ( 0),
547 _n1_2_vsZVsEtaVsPhiVsPt ( 0),
555 _n2_12_vsEtaPhi ( 0),
556 _n2_12_vsPtVsPt ( 0),
557 _s2PtPt_12_vsEtaPhi( 0),
558 _s2PtN_12_vsEtaPhi ( 0),
559 _s2NPt_12_vsEtaPhi ( 0),
565 _s2PtPtNw_12_vsM ( 0),
566 _s2PtNNw_12_vsM ( 0),
567 _s2NPtNw_12_vsM ( 0),
590 intBinCorrName("NA"),
640 _title_etaPhi_1("NA"),
642 _title_SumPt_1("NA"),
643 _title_AvgPt_1("NA"),
645 _title_AvgSumPt_1("NA"),
650 _title_etaPhi_2("NA"),
652 _title_SumPt_2("NA"),
653 _title_AvgPt_2("NA"),
655 _title_AvgSumPt_2("NA"),
657 _title_etaPhi_12("NA"),
659 _title_AvgN2_12("NA"),
660 _title_AvgSumPtPt_12("NA"),
661 _title_AvgSumPtN_12("NA"),
662 _title_AvgNSumPt_12("NA"),
672 printf("2nd constructor called ");
674 DefineOutput(0, TList::Class());
680 AliDptDptInMC::~AliDptDptInMC()
691 delete _correction_1;
694 delete __n1_1_vsEtaPhi;
695 delete __s1pt_1_vsEtaPhi;
696 delete __n1_1_vsZEtaPhiPt;
697 if (_correctionWeight_1) delete _correctionWeight_1;
709 delete _correction_2;
712 delete __n1_2_vsEtaPhi;
713 delete __s1pt_2_vsEtaPhi;
714 delete __n1_2_vsZEtaPhiPt;
715 if (_correctionWeight_2) delete _correctionWeight_2;
720 delete __n2_12_vsPtPt;
721 delete __n2_12_vsEtaPhi;
722 delete __s2ptpt_12_vsEtaPhi;
723 delete __s2PtN_12_vsEtaPhi;
724 delete __s2NPt_12_vsEtaPhi;
729 void AliDptDptInMC::UserCreateOutputObjects()
731 //cout<< "AliDptDptInMC::CreateOutputObjects() Starting " << endl;
733 _outputHistoList = new TList();
734 _outputHistoList->SetOwner();
736 //if (_useWeights) DefineInput(2, TList::Class());
738 //Setup the parameters of the histograms
739 _nBins_M0 = 500; _min_M0 = 0.; _max_M0 = 5000.; _width_M0 = (_max_M0-_min_M0)/_nBins_M0;
740 _nBins_M1 = 500; _min_M1 = 0.; _max_M1 = 5000.; _width_M1 = (_max_M1-_min_M1)/_nBins_M1;
741 _nBins_M2 = 500; _min_M2 = 0.; _max_M2 = 5000.; _width_M2 = (_max_M2-_min_M2)/_nBins_M2;
742 _nBins_M3 = 500; _min_M3 = 0.; _max_M3 = 5000.; _width_M3 = (_max_M3-_min_M3)/_nBins_M3;
743 _nBins_M4 = 100; _min_M4 = 0.; _max_M4 = 100.; _width_M4 = (_max_M4-_min_M4)/_nBins_M4;
744 _nBins_M5 = 100; _min_M5 = 0.; _max_M5 = 100.; _width_M5 = (_max_M5-_min_M5)/_nBins_M5;
745 _nBins_M6 = 100; _min_M6 = 0.; _max_M6 = 100.; _width_M6 = (_max_M6-_min_M6)/_nBins_M6;
747 _min_vertexZ = _vertexZMin;
748 _max_vertexZ = _vertexZMax;
749 _width_vertexZ = 0.5;
750 _nBins_vertexZ = int(0.5+ (_max_vertexZ - _min_vertexZ)/_width_vertexZ);
751 _nBins_pt_1 = int(0.5+ (_max_pt_1 -_min_pt_1 )/_width_pt_1);
752 _nBins_eta_1 = int(0.5+ (_max_eta_1-_min_eta_1)/_width_eta_1);
753 _width_phi_1 = (_max_phi_1 - _min_phi_1) /_nBins_phi_1;
754 _nBins_etaPhi_1 = _nBins_phi_1 * _nBins_eta_1;
755 _nBins_etaPhiPt_1 = _nBins_etaPhi_1 * _nBins_pt_1;
756 _nBins_zEtaPhiPt_1 = _nBins_vertexZ * _nBins_etaPhiPt_1;
758 _nBins_pt_2 = int(0.5+ (_max_pt_2 -_min_pt_2 )/_width_pt_2);
759 _nBins_eta_2 = int(0.5+ (_max_eta_2-_min_eta_2)/_width_eta_2);
760 _width_phi_2 = (_max_phi_2 - _min_phi_2) /_nBins_phi_2;
761 _nBins_etaPhi_2 = _nBins_phi_2 * _nBins_eta_2;
762 _nBins_etaPhiPt_2 = _nBins_etaPhi_2 * _nBins_pt_2;
763 _nBins_zEtaPhiPt_2 = _nBins_vertexZ * _nBins_etaPhiPt_2;
764 _nBins_etaPhi_12 = _nBins_etaPhi_1 * _nBins_etaPhi_2;
766 //setup the work arrays
768 _id_1 = new int[arraySize];
769 _charge_1 = new int[arraySize];
770 //_iPhi_1 = new int[arraySize];
771 //_iEta_1 = new int[arraySize];
772 _iEtaPhi_1 = new int[arraySize];
773 _iPt_1 = new int[arraySize];
774 _pt_1 = new float[arraySize];
775 _px_1 = new float[arraySize];
776 _py_1 = new float[arraySize];
777 _pz_1 = new float[arraySize];
778 //_phi_1 = new float[arraySize];
779 //_eta_1 = new float[arraySize];
780 _correction_1 = new float[arraySize];
781 //_dedx_1 = new float[arraySize];
783 __n1_1_vsPt = getDoubleArray(_nBins_pt_1, 0.);
784 __n1_1_vsEtaPhi = getDoubleArray(_nBins_etaPhi_1, 0.);
785 __s1pt_1_vsEtaPhi = getDoubleArray(_nBins_etaPhi_1, 0.);
786 __n1_1_vsZEtaPhiPt = getFloatArray(_nBins_zEtaPhiPt_1, 0.);
788 //cout << "==========================================================================================" << endl;
789 //cout << "=============== Booking for particle 1 done." << endl;
790 //cout << "_requestedCharge_1: " << _requestedCharge_1 << endl;
791 //cout << "_requestedCharge_2: " << _requestedCharge_2 << endl;
793 if (_requestedCharge_2!=_requestedCharge_1)
795 //cout << " creating arrays for particle 2 with size: " << arraySize << endl;
798 _id_2 = new int[arraySize];
799 _charge_2 = new int[arraySize];
800 //_iPhi_2 = new int[arraySize];
801 //_iEta_2 = new int[arraySize];
802 _iEtaPhi_2 = new int[arraySize];
803 _iPt_2 = new int[arraySize];
804 _pt_2 = new float[arraySize];
805 _px_2 = new float[arraySize];
806 _py_2 = new float[arraySize];
807 _pz_2 = new float[arraySize];
808 //_phi_2 = new float[arraySize];
809 //_eta_2 = new float[arraySize];
810 _correction_2 = new float[arraySize];
811 //_dedx_2 = new float[arraySize];
813 __n1_2_vsPt = getDoubleArray(_nBins_pt_2, 0.);
814 __n1_2_vsEtaPhi = getDoubleArray(_nBins_etaPhi_2, 0.);
815 __s1pt_2_vsEtaPhi = getDoubleArray(_nBins_etaPhi_2, 0.);
816 __n1_2_vsZEtaPhiPt = getFloatArray(_nBins_zEtaPhiPt_2, 0.);
820 __n2_12_vsPtPt = getDoubleArray(_nBins_pt_1*_nBins_pt_2,0.);
821 __n2_12_vsEtaPhi = getFloatArray(_nBins_etaPhi_12, 0.);
822 __s2ptpt_12_vsEtaPhi = getFloatArray(_nBins_etaPhi_12, 0.);
823 __s2PtN_12_vsEtaPhi = getFloatArray(_nBins_etaPhi_12, 0.);
824 __s2NPt_12_vsEtaPhi = getFloatArray(_nBins_etaPhi_12, 0.);
826 // Setup all the labels needed.
830 pair_12_Name = "_12";
847 binCorrName = "binCorr";
848 intBinCorrName = "intBinCorr";
853 s1ptNwName = "sumPtNw";
854 s1DptName = "sumDpt";
855 s2PtPtName = "sumPtPt";
856 s2PtPtNwName = "sumPtPtNw";
857 s2DptDptName = "sumDptDpt";
858 s2NPtName = "sumNPt";
859 s2NPtNwName = "sumNPtNw";
860 s2PtNName = "sumPtN";
861 s2NPtNwName = "sumNPtNw";
862 s2PtNNwName = "sumPtNNw";
864 ptptName = "avgPtPt";
865 pt1pt1Name = "avgPtavgPt";
867 DptDptName = "avgDptDpt";
868 RDptDptName = "relDptDpt"; // ratio of avgDptDpt by avgPt*avgPt
873 _title_counts = "yield";
879 _title_m4 = "V0Centrality";
880 _title_m5 = "TrkCentrality";
881 _title_m6 = "SpdCentrality";
883 _title_eta_1 = "#eta_{1}";
884 _title_phi_1 = "#varphi_{1} (radian)";
885 _title_etaPhi_1 = "#eta_{1}#times#varphi_{1}";
886 _title_pt_1 = "p_{t,1} (GeV/c)";
887 _title_n_1 = "n_{1}";
888 _title_SumPt_1 = "#Sigma p_{t,1} (GeV/c)";
889 _title_AvgPt_1 = "#LT p_{t,1} #GT (GeV/c)";
890 _title_AvgN_1 = "#LT n_{1} #GT";
891 _title_AvgSumPt_1 = "#LT #Sigma p_{t,1} #GT (GeV/c)";
893 _title_eta_2 = "#eta_{2}";
894 _title_phi_2 = "#varphi_{2} (radian)";
895 _title_etaPhi_2 = "#eta_{2}#times#varphi_{2}";
896 _title_pt_2 = "p_{t,2} (GeV/c)";
897 _title_n_2 = "n_{2}";
898 _title_SumPt_2 = "#Sigma p_{t,1} (GeV/c)";
899 _title_AvgPt_2 = "#LT p_{t,2} #GT (GeV/c)";
900 _title_AvgN_2 = "#LT n_{2} #GT";
901 _title_AvgSumPt_2 = "#LT #Sigma p_{t,2} #GT (GeV/c)";
903 _title_etaPhi_12 = "#eta_{1}#times#varphi_{1}#times#eta_{2}#times#varphi_{2}";
905 _title_AvgN2_12 = "#LT n_{2} #GT";;
906 _title_AvgSumPtPt_12 = "#LT #Sigma p_{t,1}p_{t,2} #GT";;
907 _title_AvgSumPtN_12 = "#LT #Sigma p_{t,1}N #GT";;
908 _title_AvgNSumPt_12 = "#LT N#Sigma p_{t,2} #GT";;
916 vsEtaPhi = "_vsEtaPhi";
917 vsPtVsPt = "_vsPtVsPt";
922 int iZ, iEtaPhi, iPt;
923 int iZ1,iEtaPhi1,iPt1;
927 _correctionWeight_1 = new float[_nBins_vertexZ*_nBins_etaPhi_1*_nBins_pt_1];
929 b = _nBins_etaPhi_1*_nBins_pt_1;
930 for (iZ=0,iZ1=1; iZ<_nBins_vertexZ; iZ++, iZ1++)
932 for (iEtaPhi=0,iEtaPhi1=1; iEtaPhi<_nBins_etaPhi_1; iEtaPhi++, iEtaPhi1++)
934 for (iPt=0,iPt1=1; iPt<_nBins_pt_1; iPt++, iPt1++)
936 _correctionWeight_1[iZ*b+iEtaPhi*a+iPt] = _weight_1->GetBinContent(iZ1,iEtaPhi1,iPt1);
943 AliError("AliDptDptInMC:: _weight_1 is a null pointer.");
950 _correctionWeight_2 = new float[_nBins_vertexZ*_nBins_etaPhi_2*_nBins_pt_2];
952 b = _nBins_etaPhi_2*_nBins_pt_2;
953 for (iZ=0,iZ1=1; iZ<_nBins_vertexZ; iZ++, iZ1++)
955 for (iEtaPhi=0,iEtaPhi1=1; iEtaPhi<_nBins_etaPhi_2; iEtaPhi++, iEtaPhi1++)
957 for (iPt=0,iPt1=1; iPt<_nBins_pt_2; iPt++, iPt1++)
959 _correctionWeight_2[iZ*b+iEtaPhi*a+iPt] = _weight_2->GetBinContent(iZ1,iEtaPhi1,iPt1);
966 AliError("AliDptDptInMC:: _weight_1 is a null pointer.");
973 PostData(0,_outputHistoList);
975 //cout<< "AliDptDptInMC::CreateOutputObjects() DONE " << endl;
979 void AliDptDptInMC::createHistograms()
981 AliInfo(" AliDptDptInMC::createHistoHistograms() Creating Event Histos");
984 name = "eventAccounting";
986 // bin index : what it is...
987 // 0 : number of event submitted
988 // 1 : number accepted by centrality cut
989 // 2 : number accepted by centrality cut and z cut
990 // 3 : total number of particles that satisfied filter 1
991 // 4 : total number of particles that satisfied filter 2
992 _eventAccounting = createHisto1D(name,name,10, -0.5, 9.5, "event Code", _title_counts);
994 name = "m0"; _m0 = createHisto1D(name,name,_nBins_M1, _min_M1, _max_M1, _title_m0, _title_counts);
995 name = "m1"; _m1 = createHisto1D(name,name,_nBins_M1, _min_M1, _max_M1, _title_m1, _title_counts);
996 name = "m2"; _m2 = createHisto1D(name,name,_nBins_M2, _min_M2, _max_M2, _title_m2, _title_counts);
997 name = "m3"; _m3 = createHisto1D(name,name,_nBins_M3, _min_M3, _max_M3, _title_m3, _title_counts);
998 name = "m4"; _m4 = createHisto1D(name,name,_nBins_M4, _min_M4, _max_M4, _title_m4, _title_counts);
999 name = "m5"; _m5 = createHisto1D(name,name,_nBins_M5, _min_M5, _max_M5, _title_m5, _title_counts);
1000 name = "m6"; _m6 = createHisto1D(name,name,_nBins_M6, _min_M6, _max_M6, _title_m6, _title_counts);
1001 name = "zV"; _vertexZ = createHisto1D(name,name,_nBins_vertexZ, _min_vertexZ, _max_vertexZ, "z-Vertex (cm)", _title_counts);
1004 name = "Eta"; _etadis = createHisto1F(name,name, 200, -1.0, 1.0, "#eta","counts");
1005 name = "Phi"; _phidis = createHisto1F(name,name, 360, 0.0, 6.4, "#phi","counts");
1006 name = "DCAz"; _dcaz = createHisto1F(name,name, 500, -5.0, 5.0, "dcaZ","counts");
1007 name = "DCAxy"; _dcaxy = createHisto1F(name,name, 500, -5.0, 5.0, "dcaXY","counts");
1009 /*name = "dedxVsP_1"; _dedxVsP_1 = createHisto2D(name,name,1000,-10.,10.,1000,0.,1000.,"p (GeV/c)", "dedx", "counts");
1010 name = "dedxVsP_2"; _dedxVsP_2 = createHisto2D(name,name,1000,-10.,10.,1000,0.,1000.,"p (GeV/c)", "dedx", "counts");
1011 name = "corrDedxVsP_1"; _corrDedxVsP_1 = createHisto2D(name,name,1000,-10.,10.,1000,0.,500,"p (GeV/c)", "dedx", "counts");
1012 name = "corrDedxVsP_2"; _corrDedxVsP_2 = createHisto2D(name,name,1000,-10.,10.,1000,0.,500,"p (GeV/c)", "dedx", "counts");
1014 name = "Nclus1"; _Ncluster1 = createHisto1F(name,name, 200, 0, 200, "Ncluster1","counts");
1015 name = "Nclus2"; _Ncluster2 = createHisto1F(name,name, 200, 0, 200, "Ncluster2","counts");
1019 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);
1020 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);
1021 //name = "dedxVsP_1"; _dedxVsP_1 = createHisto2F(name,name,400,-2.,2.,120,0.,120.,"p (GeV/c)", "dedx", "counts");
1022 //name = "corrDedxVsP_1"; _corrDedxVsP_1 = createHisto2F(name,name,400,-2.,2.,120,0.,120.,"p (GeV/c)", "dedx", "counts");
1023 //name = "betaVsP_1"; _betaVsP_1 = createHisto2F(name,name,400,-2.,2.,120,0.5,1.1,"p (GeV/c)", "beta", "counts");
1025 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);
1026 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);
1027 //name = "dedxVsP_2"; _dedxVsP_2 = createHisto2F(name,name,400,-2.,2.,120,0.,120.,"p (GeV/c)", "dedx", "counts");
1028 //name = "corrDedxVsP_2"; _corrDedxVsP_2 = createHisto2F(name,name,400,-2.,2.,120,0.,120.,"p (GeV/c)", "dedx", "counts");
1029 //name = "betaVsP_2"; _betaVsP_2 = createHisto2F(name,name,400,-2.,2.,120,0.5,1.1,"p (GeV/c)", "beta", "counts");
1034 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);
1035 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);
1036 name = n1Name+part_1_Name+vsM; _n1_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_1);
1037 name = s1ptName+part_1_Name+vsM; _s1pt_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_1);
1038 name = n1NwName+part_1_Name+vsM; _n1Nw_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_1);
1039 name = s1ptNwName+part_1_Name+vsM; _s1ptNw_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_1);
1041 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);
1042 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);
1043 name = n1Name+part_2_Name + vsM; _n1_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_2);
1044 name = s1ptName+part_2_Name + vsM; _s1pt_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_2);
1045 name = n1NwName+part_2_Name+vsM; _n1Nw_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_1);
1046 name = s1ptNwName+part_2_Name+vsM; _s1ptNw_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_1);
1048 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);
1049 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);
1050 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);
1051 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);
1052 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);
1054 name = n2Name+pair_12_Name + vsM; _n2_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN2_12);
1055 name = s2PtPtName+pair_12_Name + vsM; _s2PtPt_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtPt_12);
1056 name = s2PtNName+pair_12_Name + vsM; _s2PtN_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtN_12);
1057 name = s2NPtName+pair_12_Name + vsM; _s2NPt_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgNSumPt_12);
1059 name = n2NwName+pair_12_Name + vsM; _n2Nw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN2_12);
1060 name = s2PtPtNwName+pair_12_Name + vsM; _s2PtPtNw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtPt_12);
1061 name = s2PtNNwName+pair_12_Name + vsM; _s2PtNNw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtN_12);
1062 name = s2NPtNwName+pair_12_Name + vsM; _s2NPtNw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgNSumPt_12);
1064 name = "mInv"; _invMass = createHisto1F(name,name, 500, 0., 1.000, "M_{inv}","counts");
1065 name = "mInvElec"; _invMassElec = createHisto1F(name,name, 500, 0., 1.000, "M_{inv}","counts");
1068 AliInfo(" AliDptDptInMC::createHistoHistograms() All Done");
1070 //-----------------------//
1072 void AliDptDptInMC::finalizeHistograms()
1075 AliInfo("AliDptDptInMC::finalizeHistograms() starting");
1076 AliInfo(Form("CorrelationAnalyzers::finalizeHistograms() _eventCount : %d",int(_eventCount)));
1081 fillHistoWithArray(_n1_1_vsPt, __n1_1_vsPt, _nBins_pt_1);
1082 fillHistoWithArray(_n1_1_vsZVsEtaVsPhiVsPt, __n1_1_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_1, _nBins_pt_1);
1083 fillHistoWithArray(_n1_2_vsPt, __n1_1_vsPt, _nBins_pt_1);
1084 fillHistoWithArray(_n1_2_vsZVsEtaVsPhiVsPt, __n1_1_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_1, _nBins_pt_1);
1088 fillHistoWithArray(_n1_1_vsPt, __n1_1_vsPt, _nBins_pt_1);
1089 fillHistoWithArray(_n1_1_vsZVsEtaVsPhiVsPt, __n1_1_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_1, _nBins_pt_1);
1090 fillHistoWithArray(_n1_2_vsPt, __n1_2_vsPt, _nBins_pt_2);
1091 fillHistoWithArray(_n1_2_vsZVsEtaVsPhiVsPt, __n1_2_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_2, _nBins_pt_2);
1098 fillHistoWithArray(_n1_1_vsEtaVsPhi, __n1_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
1099 fillHistoWithArray(_s1pt_1_vsEtaVsPhi, __s1pt_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
1100 fillHistoWithArray(_n1_2_vsEtaVsPhi, __n1_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
1101 fillHistoWithArray(_s1pt_2_vsEtaVsPhi, __s1pt_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
1105 fillHistoWithArray(_n1_1_vsEtaVsPhi, __n1_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
1106 fillHistoWithArray(_s1pt_1_vsEtaVsPhi, __s1pt_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
1107 fillHistoWithArray(_n1_2_vsEtaVsPhi, __n1_2_vsEtaPhi, _nBins_eta_2, _nBins_phi_2);
1108 fillHistoWithArray(_s1pt_2_vsEtaVsPhi, __s1pt_2_vsEtaPhi, _nBins_eta_2, _nBins_phi_2);
1110 fillHistoWithArray(_n2_12_vsEtaPhi, __n2_12_vsEtaPhi, _nBins_etaPhi_12);
1111 fillHistoWithArray(_s2PtPt_12_vsEtaPhi, __s2ptpt_12_vsEtaPhi, _nBins_etaPhi_12);
1112 fillHistoWithArray(_s2PtN_12_vsEtaPhi, __s2PtN_12_vsEtaPhi, _nBins_etaPhi_12);
1113 fillHistoWithArray(_s2NPt_12_vsEtaPhi, __s2NPt_12_vsEtaPhi, _nBins_etaPhi_12);
1114 fillHistoWithArray(_n2_12_vsPtVsPt, __n2_12_vsPtPt, _nBins_pt_1, _nBins_pt_2);
1117 AliInfo("AliDptDptInMC::finalizeHistograms() Done ");
1122 void AliDptDptInMC::UserExec(Option_t */*option*/)
1127 int iPhi, iEta, iEtaPhi, iPt, charge;
1128 float q, phi, pt, eta, corr, corrPt, px, py, pz;
1130 int id_1, q_1, iEtaPhi_1, iPt_1;
1131 float pt_1, px_1, py_1, pz_1, corr_1;
1132 int id_2, q_2, iEtaPhi_2, iPt_2;
1133 float pt_2, px_2, py_2, pz_2, corr_2;
1135 int iVertex, iVertexP1, iVertexP2;
1137 float massElecSq = 2.5e-7;
1138 const AliAODVertex* vertex;
1142 AliAnalysisManager* manager = AliAnalysisManager::GetAnalysisManager();
1144 //cout<<"ERROR: Analysis manager not found."<<endl;
1147 //coneect to the inputHandler------------
1148 AliAODInputHandler* inputHandler = dynamic_cast<AliAODInputHandler*> (manager->GetInputEventHandler());
1149 if (!inputHandler) {
1153 fAODEvent = dynamic_cast<AliAODEvent*>(InputEvent());
1158 fPIDResponse =inputHandler->GetPIDResponse();
1160 AliFatal("This Task needs the PID response attached to the inputHandler");
1163 // count all events looked at here
1166 if (_eventAccounting)
1168 _eventAccounting->Fill(0);// count all calls to this function
1175 _eventAccounting->Fill(1);// count all calls to this function with a valid pointer
1176 //reset single particle counters
1178 __n1_1 = __n1_2 = __s1pt_1 = __s1pt_2 = __n1Nw_1 = __n1Nw_2 = __s1ptNw_1 = __s1ptNw_2 = 0;
1180 float v0Centr = -999.;
1181 float v0ACentr = -999.;
1182 float trkCentr = -999.;
1183 float spdCentr = -999.;
1184 float vertexX = -999;
1185 float vertexY = -999;
1186 float vertexZ = -999;
1187 float vertexXY = -999;
1189 float centrality = -999;
1190 //Double_t nSigma =-999;
1195 //AliAODHeader* centralityObject = fAODEvent->GetHeader()->GetCentralityP();
1196 AliCentrality* centralityObject = fAODEvent->GetHeader()->GetCentralityP();
1197 if (centralityObject)
1199 v0Centr = centralityObject->GetCentralityPercentile("V0M");
1200 v0ACentr = centralityObject->GetCentralityPercentile("V0A");
1201 trkCentr = centralityObject->GetCentralityPercentile("TRK");
1202 spdCentr = centralityObject->GetCentralityPercentile("CL1");
1210 _field = fAODEvent->GetMagneticField();
1212 switch (_centralityMethod)
1214 case 0: centrality = _mult0; break;
1215 case 1: centrality = _mult1; break;
1216 case 2: centrality = _mult2; break;
1217 case 3: centrality = _mult3; break;
1218 case 4: centrality = _mult4; break;
1219 case 5: centrality = _mult5; break;
1220 case 6: centrality = _mult6; break;
1221 case 7: centrality = _mult4a; break;
1224 if ( centrality < _centralityMin || centrality > _centralityMax ) return;
1226 _eventAccounting->Fill(2);// count all events with right centrality
1228 vertex = (AliAODVertex*) fAODEvent->GetPrimaryVertex();
1230 if(vertex->GetNContributors() > 0)
1232 vertexX = vertex->GetX();
1233 vertexY = vertex->GetY();
1234 vertexZ = vertex->GetZ();
1235 vertexXY = sqrt(vertexX*vertexX+vertexY*vertexY);
1237 if (vertexZ < _vertexZMin || vertexZ > _vertexZMax ) return;
1239 iVertex = int((vertexZ-_min_vertexZ)/_width_vertexZ);
1240 iVertexP1 = iVertex*_nBins_etaPhiPt_1;
1241 iVertexP2 = iVertex*_nBins_etaPhiPt_2;
1242 if (iVertex<0 || iVertex>=_nBins_vertexZ)
1244 AliError("AliTaskDptCorrMC::Exec(Option_t *option) iVertex<0 || iVertex>=_nBins_vertexZ ");
1247 _eventAccounting->Fill(3);// count all calls to this function with a valid pointer
1248 //======================
1249 if(fAnalysisType == "MCAOD")
1251 fArrayMC = dynamic_cast<TClonesArray*>(fAODEvent->FindListObject(AliAODMCParticle::StdBranchName()));
1253 Printf("Error: MC particles branch not found!\n");
1257 AliAODMCHeader *mcHdr=0;
1258 mcHdr=(AliAODMCHeader*)fAODEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName());
1260 Printf("MC header branch not found!\n");
1264 //cout<<"********MCAOD Events loop for Prabhat *********"<<endl;
1265 AliMCEvent* mcEvent = MCEvent();
1266 _nTracks = mcEvent->GetNumberOfTracks();
1268 //loop over tracks starts here
1269 for (int iTrack=0; iTrack< _nTracks; iTrack++)
1271 AliAODMCParticle *t = (AliAODMCParticle*) mcEvent->GetTrack(iTrack);
1275 AliError(Form("AliTaskDptCorrMC::Exec(Option_t *option) No track ofr iTrack=%d", iTrack));
1279 //if(!t->IsPhysicalPrimary()) continue;
1280 // Remove neutral tracks
1281 if(t->Charge() == 0) continue;
1282 //Exclude Weak Decay Resonances
1283 if(fExcludeResonancesInMC)
1285 //cout<<"***************Prabhat on Weak Decay Particles ************"<<endl;
1286 Int_t gMotherIndex = t->GetMother();
1287 if(gMotherIndex != -1) {
1288 AliAODMCParticle* motherTrack = dynamic_cast<AliAODMCParticle *>(mcEvent->GetTrack(gMotherIndex));
1290 Int_t pdgCodeOfMother = motherTrack->GetPdgCode();
1292 if(pdgCodeOfMother == 311 ||
1293 pdgCodeOfMother == -311 ||
1294 pdgCodeOfMother == 310 ||
1295 pdgCodeOfMother == 3122 ||
1296 pdgCodeOfMother == -3122) continue;
1301 //Exclude electrons with PDG
1302 if(fExcludeElectronsInMC) {
1303 if(TMath::Abs(t->GetPdgCode()) == 11) continue;
1306 //===================================
1316 if (t->Charge() > 0 && eta > _min_eta_1 && eta < _max_eta_1 && pt > _min_pt_1 && pt < _max_pt_1)
1322 iPhi = int( phi/_width_phi_1);
1324 if (iPhi<0 || iPhi>=_nBins_phi_1 )
1326 AliWarning("AliTaskDptCorrMC::analyze() iPhi<0 || iPhi>=_nBins_phi_1");
1330 iEta = int((eta-_min_eta_1)/_width_eta_1);
1331 if (iEta<0 || iEta>=_nBins_eta_1)
1333 AliWarning(Form("AliTaskDptCorrMC::analyze(AliceEvent * event) Mismatched iEta: %d", iEta));
1337 iPt = int((pt -_min_pt_1 )/_width_pt_1 );
1338 if (iPt<0 || iPt >=_nBins_pt_1)
1340 AliWarning(Form("AliTaskDptCorrMC::analyze(AliceEvent * event) Mismatched iPt: %d",iPt));
1343 iEtaPhi = iEta*_nBins_phi_1+iPhi;
1344 iZEtaPhiPt = iVertexP1 + iEtaPhi*_nBins_pt_1 + iPt;
1346 if (_correctionWeight_1)
1347 corr = _correctionWeight_1[iZEtaPhiPt];
1350 if (iZEtaPhiPt<0 || iZEtaPhiPt>=_nBins_zEtaPhiPt_1)
1352 AliWarning("AliTaskDptCorrMC::analyze(AliceEvent * event) iZEtaPhiPt<0 || iZEtaPhiPt>=_nBins_zEtaPhiPt_1");
1359 __n1_1_vsPt[iPt] += corr; //cout << "step 15" << endl;
1360 __n1_1_vsZEtaPhiPt[iZEtaPhiPt] += corr; //cout << "step 12" << endl;
1368 _charge_1[k1] = charge;
1369 _iEtaPhi_1[k1] = iEtaPhi;
1375 _correction_1[k1] = corr;
1377 __n1_1_vsEtaPhi[iEtaPhi] += corr;
1379 __s1pt_1_vsEtaPhi[iEtaPhi] += corrPt;
1385 AliError(Form("AliTaskDptCorrMC::analyze(AliceEvent * event) k1 >=arraySize; arraySize: %d",arraySize));
1391 if (t->Charge() < 0 && eta > _min_eta_2 && eta < _max_eta_2 && pt > _min_pt_2 && pt < _max_pt_2)
1397 iPhi = int( phi/_width_phi_2);
1399 if (iPhi<0 || iPhi>=_nBins_phi_2 )
1401 AliWarning("AliTaskDptCorrMC::analyze() iPhi<0 || iPhi>=_nBins_phi_1");
1405 iEta = int((eta-_min_eta_2)/_width_eta_2);
1406 if (iEta<0 || iEta>=_nBins_eta_2)
1408 AliWarning(Form("AliTaskDptCorrMC::analyze(AliceEvent * event) Mismatched iEta: %d", iEta));
1411 iPt = int((pt -_min_pt_2 )/_width_pt_2 );
1412 if (iPt<0 || iPt >=_nBins_pt_2)
1414 AliWarning(Form("AliTaskDptCorrMC::analyze(AliceEvent * event) Mismatched iPt: %d",iPt));
1418 iEtaPhi = iEta*_nBins_phi_2+iPhi;
1419 iZEtaPhiPt = iVertexP2 + iEtaPhi*_nBins_pt_2 + iPt;
1420 if (iZEtaPhiPt<0 || iZEtaPhiPt>=_nBins_zEtaPhiPt_2)
1422 AliWarning("AliTaskDptCorrMC::analyze(AliceEvent * event) iZEtaPhiPt<0 || iZEtaPhiPt>=_nBins_zEtaPhiPt_2");
1427 if (_correctionWeight_2)
1428 corr = _correctionWeight_2[iZEtaPhiPt];
1431 //dpt = pt - (charge>0) ? _avgPt_vsEtaPhi_2p[iEtaPhi] : _avgPt_vsEtaPhi_2m[iEtaPhi];
1435 __n1_2_vsPt[iPt] += corr; //cout << "step 15" << endl;
1436 __n1_2_vsZEtaPhiPt[iZEtaPhiPt] += corr; //cout << "step 12" << endl;
1441 _id_2[k2] = iTrack; //cout << "step 1" << endl;
1442 _charge_2[k2] = charge; //cout << "step 2" << endl;
1443 _iEtaPhi_2[k2] = iEtaPhi; //cout << "step 3" << endl;
1444 _iPt_2[k2] = iPt; //cout << "step 4" << endl;
1445 _pt_2[k2] = pt; //cout << "step 5" << endl;
1446 _px_2[k2] = px; //cout << "step 6" << endl;
1447 _py_2[k2] = py; //cout << "step 7" << endl;
1448 _pz_2[k2] = pz; //cout << "step 8" << endl;
1449 _correction_2[k2] = corr; //cout << "step 9" << endl;
1450 __n1_2 += corr; //cout << "step 10" << endl;
1451 __s1pt_2 += corrPt; //cout << "step 13" << endl;
1453 __n1_2_vsEtaPhi[iEtaPhi] += corr; //cout << "step 11" << endl;
1454 __s1pt_2_vsEtaPhi[iEtaPhi] += corrPt; //cout << "step 14" << endl;
1459 AliWarning(Form("-W- k2 >=arraySize; arraySize: %d",arraySize));
1464 //cout << "done with track" << endl;
1467 } //MC AOD loop ends
1469 if(fAnalysisType == "MCAODreco")
1471 //cout<<"Prabhat here is working for MC AOD reconstructed events"<<endl;
1474 TExMap *trackMap = new TExMap();//Mapping
1475 _nTracks = fAODEvent->GetNumberOfTracks();
1477 for(Int_t i = 0; i < _nTracks; i++)
1479 AliAODTrack* aodTrack = dynamic_cast<AliAODTrack *>(fAODEvent->GetTrack(i));
1481 AliError(Form("ERROR: Could not retrieve AODtrack %d",i));
1484 Int_t gID = aodTrack->GetID();
1485 if (aodTrack->TestFilterBit(1)) trackMap->Add(gID, i);//Global tracks
1490 AliAODTrack* newAodTrack;
1491 //loop over tracks starts here
1492 for (int iTrack=0; iTrack< _nTracks; iTrack++)
1495 AliAODTrack *t = dynamic_cast<AliAODTrack *>(fAODEvent->GetTrack(iTrack));
1498 AliError(Form("ERROR: Could not retrieve AODtrack %d",iTrack));
1502 bitOK = t->TestFilterBit(_trackFilterBit);
1503 if (!bitOK) continue;
1505 Int_t gID = t->GetID();
1506 newAodTrack = gID >= 0 ?t : fAODEvent->GetTrack(trackMap->GetValue(-1-gID));
1517 Double_t nsigmaelectron = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kElectron));
1518 Double_t nsigmapion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kPion));
1519 Double_t nsigmakaon = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kKaon));
1520 Double_t nsigmaproton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kProton));
1522 if(nsigmaelectron < fNSigmaCut &&
1523 nsigmapion > fNSigmaCut &&
1524 nsigmakaon > fNSigmaCut &&
1525 nsigmaproton > fNSigmaCut ) continue;
1529 if (t->Charge() > 0 && t->Eta() > _min_eta_1 && t->Eta() < _max_eta_1 && t->Pt() > _min_pt_1 && t->Pt() < _max_pt_1)
1535 iPhi = int( phi/_width_phi_1);
1537 if (iPhi<0 || iPhi>=_nBins_phi_1 )
1539 AliWarning("AliTaskDptCorrMC::analyze() iPhi<0 || iPhi>=_nBins_phi_1");
1543 iEta = int((eta-_min_eta_1)/_width_eta_1);
1544 if (iEta<0 || iEta>=_nBins_eta_1)
1546 AliWarning(Form("AliTaskDptCorrMC::analyze(AliceEvent * event) Mismatched iEta: %d", iEta));
1549 iPt = int((pt -_min_pt_1 )/_width_pt_1 );
1550 if (iPt<0 || iPt >=_nBins_pt_1)
1552 AliWarning(Form("AliTaskDptCorrMC::analyze(AliceEvent * event) Mismatched iPt: %d",iPt));
1555 iEtaPhi = iEta*_nBins_phi_1+iPhi;
1556 iZEtaPhiPt = iVertexP1 + iEtaPhi*_nBins_pt_1 + iPt;
1558 if (_correctionWeight_1)
1559 corr = _correctionWeight_1[iZEtaPhiPt];
1562 if (iZEtaPhiPt<0 || iZEtaPhiPt>=_nBins_zEtaPhiPt_1)
1564 AliWarning("AliTaskDptCorrMC::analyze(AliceEvent * event) iZEtaPhiPt<0 || iZEtaPhiPt>=_nBins_zEtaPhiPt_1");
1572 __n1_1_vsPt[iPt] += corr; //cout << "step 15" << endl;
1573 __n1_1_vsZEtaPhiPt[iZEtaPhiPt] += corr; //cout << "step 12" << endl;
1581 _charge_1[k1] = charge;
1582 _iEtaPhi_1[k1] = iEtaPhi;
1588 _correction_1[k1] = corr;
1590 __n1_1_vsEtaPhi[iEtaPhi] += corr;
1592 __s1pt_1_vsEtaPhi[iEtaPhi] += corrPt;
1598 AliError(Form("AliTaskDptCorrMC::analyze(AliceEvent * event) k1 >=arraySize; arraySize: %d",arraySize));
1604 if (t->Charge() < 0 && t->Eta() > _min_eta_2 && t->Eta() < _max_eta_2 && t->Pt() > _min_pt_2 &&
1605 t->Pt() < _max_pt_2)
1607 //===================================
1609 iPhi = int( phi/_width_phi_2);
1611 if (iPhi<0 || iPhi>=_nBins_phi_2 )
1613 AliWarning("AliTaskDptCorrMC::analyze() iPhi<0 || iPhi>=_nBins_phi_1");
1617 iEta = int((eta-_min_eta_2)/_width_eta_2);
1618 if (iEta<0 || iEta>=_nBins_eta_2)
1620 AliWarning(Form("AliTaskDptCorrMC::analyze(AliceEvent * event) Mismatched iEta: %d", iEta));
1623 iPt = int((pt -_min_pt_2 )/_width_pt_2 );
1624 if (iPt<0 || iPt >=_nBins_pt_2)
1626 AliWarning(Form("AliTaskDptCorrMC::analyze(AliceEvent * event) Mismatched iPt: %d",iPt));
1630 iEtaPhi = iEta*_nBins_phi_2+iPhi;
1631 iZEtaPhiPt = iVertexP2 + iEtaPhi*_nBins_pt_2 + iPt;
1632 if (iZEtaPhiPt<0 || iZEtaPhiPt>=_nBins_zEtaPhiPt_2)
1634 AliWarning("AliTaskDptCorrMC::analyze(AliceEvent * event) iZEtaPhiPt<0 || iZEtaPhiPt>=_nBins_zEtaPhiPt_2");
1639 if (_correctionWeight_2)
1640 corr = _correctionWeight_2[iZEtaPhiPt];
1643 //dpt = pt - (charge>0) ? _avgPt_vsEtaPhi_2p[iEtaPhi] : _avgPt_vsEtaPhi_2m[iEtaPhi];
1647 __n1_2_vsPt[iPt] += corr; //cout << "step 15" << endl;
1648 __n1_2_vsZEtaPhiPt[iZEtaPhiPt] += corr; //cout << "step 12" << endl;
1654 _id_2[k2] = iTrack; //cout << "step 1" << endl;
1655 _charge_2[k2] = charge; //cout << "step 2" << endl;
1656 _iEtaPhi_2[k2] = iEtaPhi; //cout << "step 3" << endl;
1657 _iPt_2[k2] = iPt; //cout << "step 4" << endl;
1658 _pt_2[k2] = pt; //cout << "step 5" << endl;
1659 _px_2[k2] = px; //cout << "step 6" << endl;
1660 _py_2[k2] = py; //cout << "step 7" << endl;
1661 _pz_2[k2] = pz; //cout << "step 8" << endl;
1662 _correction_2[k2] = corr; //cout << "step 9" << endl;
1663 __n1_2 += corr; //cout << "step 10" << endl;
1664 __s1pt_2 += corrPt; //cout << "step 13" << endl;
1666 __n1_2_vsEtaPhi[iEtaPhi] += corr; //cout << "step 11" << endl;
1667 __s1pt_2_vsEtaPhi[iEtaPhi] += corrPt; //cout << "step 14" << endl;
1673 AliWarning(Form("-W- k2 >=arraySize; arraySize: %d",arraySize));
1678 //cout << "done with track" << endl;
1681 } //MC AOD loop ends
1683 //---------------------------------
1685 //cout << "Filling histograms now" << endl;
1693 _vertexZ->Fill(vertexZ);
1697 // nothing to do here.
1703 _n1_1_vsM->Fill(centrality, __n1_1);
1704 _s1pt_1_vsM->Fill(centrality, __s1pt_1);
1705 _n1Nw_1_vsM->Fill(centrality, __n1Nw_1);
1706 _s1ptNw_1_vsM->Fill(centrality, __s1ptNw_1);
1707 _n1_2_vsM->Fill(centrality, __n1_1);
1708 _s1pt_2_vsM->Fill(centrality, __s1pt_1);
1709 _n1Nw_2_vsM->Fill(centrality, __n1Nw_1);
1710 _s1ptNw_2_vsM->Fill(centrality, __s1ptNw_1);
1711 // reset pair counters
1712 __n2_12 = __s2ptpt_12 = __s2NPt_12 = __s2PtN_12 = 0;
1713 __n2Nw_12 = __s2ptptNw_12 = __s2NPtNw_12 = __s2PtNNw_12 = 0;
1716 for (int i1=0; i1<k1; i1++)
1718 ////cout << " i1:" << i1 << endl;
1719 id_1 = _id_1[i1]; ////cout << " id_1:" << id_1 << endl;
1720 q_1 = _charge_1[i1]; ////cout << " q_1:" << q_1 << endl;
1721 iEtaPhi_1 = _iEtaPhi_1[i1]; ////cout << " iEtaPhi_1:" << iEtaPhi_1 << endl;
1722 iPt_1 = _iPt_1[i1]; ////cout << " iPt_1:" << iPt_1 << endl;
1723 corr_1 = _correction_1[i1]; ////cout << " corr_1:" << corr_1 << endl;
1724 pt_1 = _pt_1[i1]; ////cout << " pt_1:" << pt_1 << endl;
1728 for (int i2=i1+1; i2<k1; i2++)
1730 ////cout << " i2:" << i2 << endl;
1731 id_2 = _id_1[i2]; ////cout << " id_2:" << id_2 << endl;
1734 q_2 = _charge_1[i2]; ////cout << " q_1:" << q_1 << endl;
1735 iEtaPhi_2 = _iEtaPhi_1[i2]; ////cout << " iEtaPhi_1:" << iEtaPhi_1 << endl;
1736 iPt_2 = _iPt_1[i2]; ////cout << " iPt_1:" << iPt_1 << endl;
1737 corr_2 = _correction_1[i2]; ////cout << " corr_1:" << corr_1 << endl;
1738 pt_2 = _pt_1[i2]; ////cout << " pt_1:" << pt_1 << endl;
1740 corr = corr_1*corr_2;
1741 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))
1743 ij = iEtaPhi_1*_nBins_etaPhi_1 + iEtaPhi_2; ////cout << " ij:" << ij<< endl;
1745 else // swap particles
1747 ij = iEtaPhi_2*_nBins_etaPhi_1 + iEtaPhi_1; ////cout << " ij:" << ij<< endl;
1751 __n2_12_vsEtaPhi[ij] += corr;
1753 __s2ptpt_12 += corr*ptpt;
1754 __s2PtN_12 += corr*pt_1;
1755 __s2NPt_12 += corr*pt_2;
1756 __s2ptpt_12_vsEtaPhi[ij] += corr*ptpt;
1757 __s2PtN_12_vsEtaPhi[ij] += corr*pt_1;
1758 __s2NPt_12_vsEtaPhi[ij] += corr*pt_2;
1759 __n2_12_vsPtPt[iPt_1*_nBins_pt_2 + iPt_2] += corr;
1762 __s2ptptNw_12 += ptpt;
1763 __s2PtNNw_12 += pt_1;
1764 __s2NPtNw_12 += pt_2;
1773 for (int i1=0; i1<k1; i1++)
1775 ////cout << " i1:" << i1 << endl;
1776 id_1 = _id_1[i1]; ////cout << " id_1:" << id_1 << endl;
1777 q_1 = _charge_1[i1]; ////cout << " q_1:" << q_1 << endl;
1778 iEtaPhi_1 = _iEtaPhi_1[i1]; ////cout << " iEtaPhi_1:" << iEtaPhi_1 << endl;
1779 iPt_1 = _iPt_1[i1]; ////cout << " iPt_1:" << iPt_1 << endl;
1780 corr_1 = _correction_1[i1]; ////cout << " corr_1:" << corr_1 << endl;
1781 pt_1 = _pt_1[i1]; ////cout << " pt_1:" << pt_1 << endl;
1784 for (int i2=i1+1; i2<k1; i2++)
1786 ////cout << " i2:" << i2 << endl;
1787 id_2 = _id_1[i2]; ////cout << " id_2:" << id_2 << endl;
1790 q_2 = _charge_1[i2]; ////cout << " q_2:" << q_2 << endl;
1791 iEtaPhi_2 = _iEtaPhi_1[i2]; ////cout << " iEtaPhi_2:" << iEtaPhi_2 << endl;
1792 iPt_2 = _iPt_1[i2]; ////cout << " iPt_2:" << iPt_2 << endl;
1793 corr_2 = _correction_1[i2]; ////cout << " corr_2:" << corr_2 << endl;
1794 pt_2 = _pt_1[i2]; ////cout << " pt_2:" << pt_2 << endl;
1795 corr = corr_1*corr_2;
1796 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))
1798 ij = iEtaPhi_1*_nBins_etaPhi_1 + iEtaPhi_2; ////cout << " ij:" << ij<< endl;
1800 else // swap particles
1802 ij = iEtaPhi_2*_nBins_etaPhi_1 + iEtaPhi_1; ////cout << " ij:" << ij<< endl;
1806 __n2_12_vsEtaPhi[ij] += corr;
1808 __s2ptpt_12 += corr*ptpt;
1809 __s2PtN_12 += corr*pt_1;
1810 __s2NPt_12 += corr*pt_2;
1811 __s2ptpt_12_vsEtaPhi[ij] += corr*ptpt;
1812 __s2PtN_12_vsEtaPhi[ij] += corr*pt_1;
1813 __s2NPt_12_vsEtaPhi[ij] += corr*pt_2;
1814 __n2_12_vsPtPt[iPt_1*_nBins_pt_2 + iPt_2] += corr;
1817 __s2ptptNw_12 += ptpt;
1818 __s2PtNNw_12 += pt_1;
1819 __s2NPtNw_12 += pt_2;
1826 else // filter 1 and 2 are different -- must do all particle pairs...
1828 _n1_1_vsM->Fill(centrality, __n1_1);
1829 _s1pt_1_vsM->Fill(centrality, __s1pt_1);
1830 _n1Nw_1_vsM->Fill(centrality, __n1Nw_1);
1831 _s1ptNw_1_vsM->Fill(centrality, __s1ptNw_1);
1832 _n1_2_vsM->Fill(centrality, __n1_2);
1833 _s1pt_2_vsM->Fill(centrality, __s1pt_2);
1834 _n1Nw_2_vsM->Fill(centrality, __n1Nw_2);
1835 _s1ptNw_2_vsM->Fill(centrality, __s1ptNw_2);
1836 // reset pair counters
1837 __n2_12 = __s2ptpt_12 = __s2NPt_12 = __s2PtN_12 = 0;
1838 __n2Nw_12 = __s2ptptNw_12 = __s2NPtNw_12 = __s2PtNNw_12 = 0;
1839 for (int i1=0; i1<k1; i1++)
1841 ////cout << " i1:" << i1 << endl;
1842 id_1 = _id_1[i1]; ////cout << " id_1:" << id_1 << endl;
1843 q_1 = _charge_1[i1]; ////cout << " q_1:" << q_1 << endl;
1844 iEtaPhi_1 = _iEtaPhi_1[i1]; ////cout << " iEtaPhi_1:" << iEtaPhi_1 << endl;
1845 iPt_1 = _iPt_1[i1]; ////cout << " iPt_1:" << iPt_1 << endl;
1846 corr_1 = _correction_1[i1]; ////cout << " corr_1:" << corr_1 << endl;
1847 pt_1 = _pt_1[i1]; ////cout << " pt_1:" << pt_1 << endl;
1848 px_1 = _px_1[i1]; ////cout << " px_1:" << px_1 << endl;
1849 py_1 = _py_1[i1]; ////cout << " py_1:" << py_1 << endl;
1850 pz_1 = _pz_1[i1]; ////cout << " pz_1:" << pz_1 << endl;
1852 for (int i2=0; i2<k2; i2++)
1854 ////cout << " i2:" << i2 << endl;
1855 id_2 = _id_2[i2]; ////cout << " id_2:" << id_2 << endl;
1856 if (id_1!=id_2) // exclude auto correlation
1858 q_2 = _charge_2[i2]; ////cout << " q_2:" << q_2 << endl;
1859 iEtaPhi_2 = _iEtaPhi_2[i2]; ////cout << " iEtaPhi_2:" << iEtaPhi_2 << endl;
1860 iPt_2 = _iPt_2[i2]; ////cout << " iPt_2:" << iPt_2 << endl;
1861 corr_2 = _correction_2[i2]; ////cout << " corr_2:" << corr_2 << endl;
1862 pt_2 = _pt_2[i2]; ////cout << " pt_2:" << pt_2 << endl;
1863 px_2 = _px_2[i2]; ////cout << " px_2:" << px_2 << endl;
1864 py_2 = _py_2[i2]; ////cout << " py_2:" << py_2 << endl;
1865 pz_2 = _pz_2[i2]; ////cout << " pz_2:" << pz_2 << endl;
1868 if (_rejectPairConversion)
1870 float e1Sq = massElecSq + pt_1*pt_1 + pz_1*pz_1;
1871 float e2Sq = massElecSq + pt_2*pt_2 + pz_2*pz_2;
1872 float mInvSq = 2*(massElecSq + sqrt(e1Sq*e2Sq) - px_1*px_2 - py_1*py_2 - pz_1*pz_2 );
1873 float mInv = sqrt(mInvSq);
1874 _invMass->Fill(mInv);
1877 corr = corr_1*corr_2;
1878 ij = iEtaPhi_1*_nBins_etaPhi_1 + iEtaPhi_2; ////cout << " ij:" << ij<< endl;
1880 __n2_12_vsEtaPhi[ij] += corr;
1882 __s2ptpt_12 += corr*ptpt;
1883 __s2PtN_12 += corr*pt_1;
1884 __s2NPt_12 += corr*pt_2;
1885 __s2ptpt_12_vsEtaPhi[ij] += corr*ptpt;
1886 __s2PtN_12_vsEtaPhi[ij] += corr*pt_1;
1887 __s2NPt_12_vsEtaPhi[ij] += corr*pt_2;
1888 __n2_12_vsPtPt[iPt_1*_nBins_pt_2 + iPt_2] += corr;
1890 __s2ptptNw_12 += ptpt;
1891 __s2PtNNw_12 += pt_1;
1892 __s2NPtNw_12 += pt_2;
1899 _n2_12_vsM->Fill(centrality, __n2_12);
1900 _s2PtPt_12_vsM->Fill(centrality, __s2ptpt_12);
1901 _s2PtN_12_vsM->Fill(centrality, __s2NPt_12);
1902 _s2NPt_12_vsM->Fill(centrality, __s2PtN_12);
1904 _n2Nw_12_vsM->Fill(centrality, __n2Nw_12);
1905 _s2PtPtNw_12_vsM->Fill(centrality, __s2ptptNw_12);
1906 _s2PtNNw_12_vsM->Fill(centrality, __s2NPtNw_12);
1907 _s2NPtNw_12_vsM->Fill(centrality, __s2PtNNw_12);
1912 AliInfo("AliTaskDptCorrMC::UserExec() -----------------Event Done ");
1913 PostData(0,_outputHistoList);
1920 void AliDptDptInMC::FinishTaskOutput()
1922 AliInfo("AliDptDptInMC::FinishTaskOutput() Starting.");
1923 Printf("= 0 ====================================================================");
1924 finalizeHistograms();
1925 AliInfo("= 1 ====================================================================");
1926 PostData(0,_outputHistoList);
1927 AliInfo("= 2 ====================================================================");
1928 AliInfo("AliDptDptInMC::FinishTaskOutput() Done.");
1931 void AliDptDptInMC::Terminate(Option_t* /*option*/)
1933 AliInfo("AliDptDptInMC::Terminate() Starting/Done.");
1938 //===================================================================================================
1939 void AliDptDptInMC::fillHistoWithArray(TH1 * h, float * array, int size)
1942 float v1, ev1, v2, ev2, sum, esum;
1943 for (i=0, i1=1; i<size; ++i,++i1)
1945 v1 = array[i]; ev1 = sqrt(v1);
1946 v2 = h->GetBinContent(i1);
1947 ev2 = h->GetBinError(i1);
1949 esum = sqrt(ev1*ev1+ev2*ev2);
1950 h->SetBinContent(i1,sum);
1951 h->SetBinError(i1,esum);
1955 void AliDptDptInMC::fillHistoWithArray(TH2 * h, float * array, int size1, int size2)
1959 float v1, ev1, v2, ev2, sum, esum;
1960 for (i=0, i1=1; i<size1; ++i,++i1)
1962 for (j=0, j1=1; j<size2; ++j,++j1)
1964 v1 = array[i*size2+j]; ev1 = sqrt(v1);
1965 v2 = h->GetBinContent(i1,j1);
1966 ev2 = h->GetBinError(i1,j1);
1968 esum = sqrt(ev1*ev1+ev2*ev2);
1969 h->SetBinContent(i1,j1,sum);
1970 h->SetBinError(i1,j1,esum);
1975 void AliDptDptInMC::fillHistoWithArray(TH3 * h, float * array, int size1, int size2, int size3)
1980 float v1, ev1, v2, ev2, sum, esum;
1981 int size23 = size2*size3;
1982 for (i=0, i1=1; i<size1; ++i,++i1)
1984 for (j=0, j1=1; j<size2; ++j,++j1)
1986 for (k=0, k1=1; k<size3; ++k,++k1)
1988 v1 = array[i*size23+j*size3+k]; ev1 = sqrt(v1);
1989 v2 = h->GetBinContent(i1,j1,k1);
1990 ev2 = h->GetBinError(i1,j1,k1);
1992 esum = sqrt(ev1*ev1+ev2*ev2);
1993 h->SetBinContent(i1,j1,k1,sum);
1994 h->SetBinError(i1,j1,k1,esum);
2000 void AliDptDptInMC::fillHistoWithArray(TH1 * h, double * array, int size)
2003 double v1, ev1, v2, ev2, sum, esum;
2004 for (i=0, i1=1; i<size; ++i,++i1)
2006 v1 = array[i]; ev1 = sqrt(v1);
2007 v2 = h->GetBinContent(i1);
2008 ev2 = h->GetBinError(i1);
2010 esum = sqrt(ev1*ev1+ev2*ev2);
2011 h->SetBinContent(i1,sum);
2012 h->SetBinError(i1,esum);
2016 void AliDptDptInMC::fillHistoWithArray(TH2 * h, double * array, int size1, int size2)
2020 double v1, ev1, v2, ev2, sum, esum;
2021 for (i=0, i1=1; i<size1; ++i,++i1)
2023 for (j=0, j1=1; j<size2; ++j,++j1)
2025 v1 = array[i*size2+j]; ev1 = sqrt(v1);
2026 v2 = h->GetBinContent(i1,j1);
2027 ev2 = h->GetBinError(i1,j1);
2029 esum = sqrt(ev1*ev1+ev2*ev2);
2030 h->SetBinContent(i1,j1,sum);
2031 h->SetBinError(i1,j1,esum);
2036 void AliDptDptInMC::fillHistoWithArray(TH3 * h, double * array, int size1, int size2, int size3)
2041 double v1, ev1, v2, ev2, sum, esum;
2042 int size23 = size2*size3;
2043 for (i=0, i1=1; i<size1; ++i,++i1)
2045 for (j=0, j1=1; j<size2; ++j,++j1)
2047 for (k=0, k1=1; k<size3; ++k,++k1)
2049 v1 = array[i*size23+j*size3+k]; ev1 = sqrt(v1);
2050 v2 = h->GetBinContent(i1,j1,k1);
2051 ev2 = h->GetBinError(i1,j1,k1);
2053 esum = sqrt(ev1*ev1+ev2*ev2);
2054 h->SetBinContent(i1,j1,k1,sum);
2055 h->SetBinError(i1,j1,k1,esum);
2061 //________________________________________________________________________
2062 double * AliDptDptInMC::getDoubleArray(int size, double v)
2064 /// Allocate an array of type double with n values
2065 /// Initialize the array to the given value
2066 double * array = new double [size];
2067 for (int i=0;i<size;++i) array[i]=v;
2071 //________________________________________________________________________
2072 float * AliDptDptInMC::getFloatArray(int size, float v)
2074 /// Allocate an array of type float with n values
2075 /// Initialize the array to the given value
2076 float * array = new float [size];
2077 for (int i=0;i<size;++i) array[i]=v;
2082 //________________________________________________________________________
2083 TH1D * AliDptDptInMC::createHisto1D(const TString & name, const TString & title,
2084 int n, double xMin, double xMax,
2085 const TString & xTitle, const TString & yTitle)
2087 //CreateHisto new 1D historgram
2088 AliInfo(Form("createHisto 1D histo %s nBins: %d xMin: %f xMax: %f",name.Data(),n,xMin,xMax));
2089 TH1D * h = new TH1D(name,title,n,xMin,xMax);
2090 h->GetXaxis()->SetTitle(xTitle);
2091 h->GetYaxis()->SetTitle(yTitle);
2097 //________________________________________________________________________
2098 TH1D * AliDptDptInMC::createHisto1D(const TString & name, const TString & title,
2099 int n, double * bins,
2100 const TString & xTitle, const TString & yTitle)
2102 AliInfo(Form("createHisto 1D histo %s with %d non uniform nBins",name.Data(),n));
2103 TH1D * h = new TH1D(name,title,n,bins);
2104 h->GetXaxis()->SetTitle(xTitle);
2105 h->GetYaxis()->SetTitle(yTitle);
2111 //________________________________________________________________________
2112 TH2D * AliDptDptInMC::createHisto2D(const TString & name, const TString & title,
2113 int nx, double xMin, double xMax, int ny, double yMin, double yMax,
2114 const TString & xTitle, const TString & yTitle, const TString & zTitle)
2116 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));
2117 TH2D * h = new TH2D(name,title,nx,xMin,xMax,ny,yMin,yMax);
2118 h->GetXaxis()->SetTitle(xTitle);
2119 h->GetYaxis()->SetTitle(yTitle);
2120 h->GetZaxis()->SetTitle(zTitle);
2125 //________________________________________________________________________
2126 TH2D * AliDptDptInMC::createHisto2D(const TString & name, const TString & title,
2127 int nx, double* xbins, int ny, double yMin, double yMax,
2128 const TString & xTitle, const TString & yTitle, const TString & zTitle)
2130 AliInfo(Form("createHisto 2D histo %s with %d non uniform nBins",name.Data(),nx));
2132 h = new TH2D(name,title,nx,xbins,ny,yMin,yMax);
2133 h->GetXaxis()->SetTitle(xTitle);
2134 h->GetYaxis()->SetTitle(yTitle);
2135 h->GetZaxis()->SetTitle(zTitle);
2141 //________________________________________________________________________
2142 TH1F * AliDptDptInMC::createHisto1F(const TString & name, const TString & title,
2143 int n, double xMin, double xMax,
2144 const TString & xTitle, const TString & yTitle)
2146 //CreateHisto new 1D historgram
2147 AliInfo(Form("createHisto 1D histo %s nBins: %d xMin: %f xMax: %f",name.Data(),n,xMin,xMax));
2148 TH1F * h = new TH1F(name,title,n,xMin,xMax);
2149 h->GetXaxis()->SetTitle(xTitle);
2150 h->GetYaxis()->SetTitle(yTitle);
2156 //________________________________________________________________________
2157 TH1F * AliDptDptInMC::createHisto1F(const TString & name, const TString & title,
2158 int n, double * bins,
2159 const TString & xTitle, const TString & yTitle)
2161 AliInfo(Form("createHisto 1D histo %s with %d non uniform nBins",name.Data(),n));
2162 TH1F * h = new TH1F(name,title,n,bins);
2163 h->GetXaxis()->SetTitle(xTitle);
2164 h->GetYaxis()->SetTitle(yTitle);
2170 //________________________________________________________________________
2171 TH2F * AliDptDptInMC::createHisto2F(const TString & name, const TString & title,
2172 int nx, double xMin, double xMax, int ny, double yMin, double yMax,
2173 const TString & xTitle, const TString & yTitle, const TString & zTitle)
2175 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));
2176 TH2F * h = new TH2F(name,title,nx,xMin,xMax,ny,yMin,yMax);
2177 h->GetXaxis()->SetTitle(xTitle);
2178 h->GetYaxis()->SetTitle(yTitle);
2179 h->GetZaxis()->SetTitle(zTitle);
2184 //________________________________________________________________________
2185 TH2F * AliDptDptInMC::createHisto2F(const TString & name, const TString & title,
2186 int nx, double* xbins, int ny, double yMin, double yMax,
2187 const TString & xTitle, const TString & yTitle, const TString & zTitle)
2189 AliInfo(Form("createHisto 2D histo %s with %d non uniform nBins",name.Data(),nx));
2191 h = new TH2F(name,title,nx,xbins,ny,yMin,yMax);
2192 h->GetXaxis()->SetTitle(xTitle);
2193 h->GetYaxis()->SetTitle(yTitle);
2194 h->GetZaxis()->SetTitle(zTitle);
2200 //________________________________________________________________________
2201 TH3F * AliDptDptInMC::createHisto3F(const TString & name, const TString & title,
2202 int nx, double xMin, double xMax,
2203 int ny, double yMin, double yMax,
2204 int nz, double zMin, double zMax,
2205 const TString & xTitle, const TString & yTitle, const TString & zTitle)
2207 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));
2208 TH3F * h = new TH3F(name,title,nx,xMin,xMax,ny,yMin,yMax,nz,zMin,zMax);
2209 h->GetXaxis()->SetTitle(xTitle);
2210 h->GetYaxis()->SetTitle(yTitle);
2211 h->GetZaxis()->SetTitle(zTitle);
2217 //________________________________________________________________________
2218 TProfile * AliDptDptInMC::createProfile(const TString & name, const TString & description,
2219 int nx,double xMin,double xMax,
2220 const TString & xTitle, const TString & yTitle)
2222 AliInfo(Form("createHisto 1D profile %s nBins: %d xMin: %f10.4 xMax: %f10.4",name.Data(),nx,xMin,xMax));
2223 TProfile * h = new TProfile(name,description,nx,xMin,xMax);
2224 h->GetXaxis()->SetTitle(xTitle);
2225 h->GetYaxis()->SetTitle(yTitle);
2230 //________________________________________________________________________
2231 TProfile * AliDptDptInMC::createProfile(const TString & name,const TString & description,
2232 int nx, double* bins,
2233 const TString & xTitle, const TString & yTitle)
2235 AliInfo(Form("createHisto 1D profile %s with %d non uniform bins",name.Data(),nx));
2236 TProfile * h = new TProfile(name,description,nx,bins);
2237 h->GetXaxis()->SetTitle(xTitle);
2238 h->GetYaxis()->SetTitle(yTitle);
2244 void AliDptDptInMC::addToList(TH1 *h)
2246 if (_outputHistoList)
2248 _outputHistoList->Add(h);
2251 AliInfo("addToList(TH1 *h) _outputHistoList is null!!!!! Should abort ship");