* provided "as is" without express or implied warranty. *
**************************************************************************/
-/* $Id:$ */
+#include "TChain.h"
+#include "TList.h"
+#include "TFile.h"
+#include "TTree.h"
+#include "TH1D.h"
+#include "TH2D.h"
+#include "TH3D.h"
+#include "THnSparse.h"
+#include "TCanvas.h"
#include <TROOT.h>
#include <TChain.h>
#include "AliAODHandler.h"
#include "AliAODInputHandler.h"
-//#include "AliAODMCParticle.h"
#include "AliInputEventHandler.h"
#include "AliLog.h"
#include "AliESDEvent.h"
#include "AliCentrality.h"
#include "AliAnalysisTaskDptDptCorrelations.h"
+#include "AliPID.h"
+#include "AliPIDResponse.h"
+
+#include "AliESDVertex.h"
+#include "AliESDEvent.h"
+#include "AliESDInputHandler.h"
+#include "AliAODEvent.h"
+#include "AliAODTrack.h"
+#include "AliAODInputHandler.h"
+#include "AliESD.h"
+#include "AliESDEvent.h"
+#include "AliAODEvent.h"
+#include "AliStack.h"
+#include "AliESDtrackCuts.h"
+#include "AliAODMCHeader.h"
+
+
+#include "AliGenHijingEventHeader.h"
+#include "AliGenEventHeader.h"
+#include "AliPID.h"
+#include "AliAODPid.h"
+#include "AliPIDResponse.h"
+#include "AliAODpidUtil.h"
+#include "AliPIDCombined.h"
+
+
ClassImp(AliAnalysisTaskDptDptCorrelations)
AliAnalysisTaskDptDptCorrelations::AliAnalysisTaskDptDptCorrelations()
fAODEvent(0),
fESDEvent(0), //! ESD Event
fInputHandler(0),
+fPIDResponse(0x0),
_outputHistoList(0),
_twoPi ( 2.0 * 3.1415927),
_eventCount ( 0),
_requestedCharge_2 ( -1),
_dcaZMin ( -3),
_dcaZMax ( 3.),
-_dcaXYMin ( -3.),
-_dcaXYMax ( 3.),
+_dcaXYMin ( -2.4),
+_dcaXYMax ( 2.4),
_dedxMin ( 0),
_dedxMax ( 100000),
-_nClusterMin ( 70),
-_trackFilterBit ( 128),
+_nClusterMin ( 80),
+_trackFilterBit (0),
+fNSigmaCut (3.),
_field ( 1.),
_nTracks ( 0 ),
_mult0 ( 0 ),
_mult2 ( 0 ),
_mult3 ( 0 ),
_mult4 ( 0 ),
+_mult4a ( 0 ),
_mult5 ( 0 ),
_mult6 ( 0 ),
arraySize ( 2000),
_nBins_pt_1(18), _min_pt_1(0.2), _max_pt_1(2.0), _width_pt_1(0.1),
_nBins_phi_1(72), _min_phi_1(0), _max_phi_1(2.*3.1415927),_width_phi_1(2.*3.1415927/72.),
-_nBins_eta_1(20), _min_eta_1(-1), _max_eta_1(1), _width_eta_1(0.1),
+_nBins_eta_1(0), _min_eta_1(0), _max_eta_1(0), _width_eta_1(0.1),
_nBins_etaPhi_1(0),
_nBins_etaPhiPt_1(0),
_nBins_pt_2(18), _min_pt_2(0.2), _max_pt_2(2.0), _width_pt_2(0.1),
_nBins_phi_2(72), _min_phi_2(0), _max_phi_2(2.*3.1415927),_width_phi_2(2.*3.1415927/72),
-_nBins_eta_2(20), _min_eta_2(-1), _max_eta_2(1), _width_eta_2(0.1),
+_nBins_eta_2(0), _min_eta_2(0), _max_eta_2(0), _width_eta_2(0.1),
_nBins_etaPhi_2(0),
_nBins_etaPhiPt_2(0),
_m4 ( 0),
_m5 ( 0),
_m6 ( 0),
-_vertexZ ( 0),
+_vertexZ ( 0),
+
+_Ncluster1 ( 0),
+_Ncluster2 ( 0),
+_etadis ( 0),
+_phidis ( 0),
+_dcaz ( 0),
+_dcaxy ( 0),
_n1_1_vsPt ( 0),
_n1_1_vsEtaVsPhi ( 0),
_s1pt_1_vsEtaVsPhi ( 0),
_n1_1_vsZVsEtaVsPhiVsPt ( 0),
-_n1_1_vsM ( 0), // w/ weight
+_n1_1_vsM ( 0),
_s1pt_1_vsM ( 0),
-_n1Nw_1_vsM ( 0), // w/o weight
+_n1Nw_1_vsM ( 0),
_s1ptNw_1_vsM ( 0),
_dedxVsP_1 ( 0),
_corrDedxVsP_1 ( 0),
fAODEvent(0),
fESDEvent(0),
fInputHandler(0),
+fPIDResponse(0),
_outputHistoList(0),
_twoPi ( 2.0 * 3.1415927),
_eventCount ( 0),
_requestedCharge_2 ( -1),
_dcaZMin ( -3),
_dcaZMax ( 3.),
-_dcaXYMin ( -3.),
-_dcaXYMax ( 3.),
+_dcaXYMin ( -2.4),
+_dcaXYMax ( 2.4),
_dedxMin ( 0),
_dedxMax ( 100000),
-_nClusterMin ( 70),
-_trackFilterBit ( 128),
+_nClusterMin ( 80),
+_trackFilterBit ( 0),
+fNSigmaCut ( 3.),
_field ( 1.),
_nTracks ( 0 ),
_mult0 ( 0 ),
_mult2 ( 0 ),
_mult3 ( 0 ),
_mult4 ( 0 ),
+_mult4a ( 0 ),
_mult5 ( 0 ),
_mult6 ( 0 ),
arraySize ( 2000),
_nBins_pt_1(18), _min_pt_1(0.2), _max_pt_1(2.0), _width_pt_1(0.1),
_nBins_phi_1(72), _min_phi_1(0), _max_phi_1(2.*3.1415927),_width_phi_1(2.*3.1415927/72.),
-_nBins_eta_1(20), _min_eta_1(-1), _max_eta_1(1), _width_eta_1(0.1),
+_nBins_eta_1(0), _min_eta_1(0), _max_eta_1(0), _width_eta_1(0.1),
_nBins_etaPhi_1(0),
_nBins_etaPhiPt_1(0),
_nBins_pt_2(18), _min_pt_2(0.2), _max_pt_2(2.0), _width_pt_2(0.1),
_nBins_phi_2(72), _min_phi_2(0), _max_phi_2(2.*3.1415927),_width_phi_2(2.*3.1415927/72),
-_nBins_eta_2(20), _min_eta_2(-1), _max_eta_2(1), _width_eta_2(0.1),
+_nBins_eta_2(0), _min_eta_2(0), _max_eta_2(0), _width_eta_2(0.1),
_nBins_etaPhi_2(0),
_nBins_etaPhiPt_2(0),
_m4 ( 0),
_m5 ( 0),
_m6 ( 0),
-_vertexZ ( 0),
+_vertexZ ( 0),
+_Ncluster1 ( 0),
+_Ncluster2 ( 0),
+_etadis ( 0),
+_phidis ( 0),
+
+_dcaz ( 0),
+_dcaxy ( 0),
_n1_1_vsPt ( 0),
_n1_1_vsEtaVsPhi ( 0),
_s1pt_1_vsEtaVsPhi ( 0),
_n1_1_vsZVsEtaVsPhiVsPt ( 0),
-_n1_1_vsM ( 0), // w/ weight
+_n1_1_vsM ( 0),
_s1pt_1_vsM ( 0),
-_n1Nw_1_vsM ( 0), // w/o weight
+_n1Nw_1_vsM ( 0),
_s1ptNw_1_vsM ( 0),
_dedxVsP_1 ( 0),
_corrDedxVsP_1 ( 0),
AliAnalysisTaskDptDptCorrelations::~AliAnalysisTaskDptDptCorrelations()
{
- /*
- delete _id_1;
- delete _charge_1;
- delete _iEtaPhi_1;
- delete _iPt_1;
- delete _pt_1;
- delete _px_1;
- delete _py_1;
- delete _pz_1;
- delete _correction_1;
- delete _dedx_1;
- delete __n1_1_vsPt;
- delete __n1_1_vsEtaPhi;
- delete __s1pt_1_vsEtaPhi;
- delete __n1_1_vsZEtaPhiPt;
- if (_correctionWeight_1) delete _correctionWeight_1;
-
- if (!_sameFilter)
- {
- delete _id_2;
- delete _charge_2;
- delete _iEtaPhi_2;
- delete _iPt_2;
- delete _pt_2;
- delete _px_2;
- delete _py_2;
- delete _pz_2;
- delete _correction_2;
- delete _dedx_2;
- delete __n1_2_vsPt;
- delete __n1_2_vsEtaPhi;
- delete __s1pt_2_vsEtaPhi;
- delete __n1_2_vsZEtaPhiPt;
- if (_correctionWeight_2) delete _correctionWeight_2;
- }
-
- if (!_singlesOnly)
- {
- delete __n2_12_vsPtPt;
- delete __n2_12_vsEtaPhi;
- delete __s2ptpt_12_vsEtaPhi;
- delete __s2PtN_12_vsEtaPhi;
- delete __s2NPt_12_vsEtaPhi;
- }
- */
+
}
void AliAnalysisTaskDptDptCorrelations::UserCreateOutputObjects()
{
- cout<< "AliAnalysisTaskDptDptCorrelations::CreateOutputObjects() Starting " << endl;
OpenFile(0);
_outputHistoList = new TList();
_outputHistoList->SetOwner();
- //if (_useWeights) DefineInput(2, TList::Class());
-
- //Setup the parameters of the histograms
_nBins_M0 = 500; _min_M0 = 0.; _max_M0 = 5000.; _width_M0 = (_max_M0-_min_M0)/_nBins_M0;
_nBins_M1 = 500; _min_M1 = 0.; _max_M1 = 5000.; _width_M1 = (_max_M1-_min_M1)/_nBins_M1;
_nBins_M2 = 500; _min_M2 = 0.; _max_M2 = 5000.; _width_M2 = (_max_M2-_min_M2)/_nBins_M2;
_nBins_etaPhiPt_2 = _nBins_etaPhi_2 * _nBins_pt_2;
_nBins_zEtaPhiPt_2 = _nBins_vertexZ * _nBins_etaPhiPt_2;
_nBins_etaPhi_12 = _nBins_etaPhi_1 * _nBins_etaPhi_2;
-
- //setup the work arrays
-
+
_id_1 = new int[arraySize];
_charge_1 = new int[arraySize];
- //_iPhi_1 = new int[arraySize];
- //_iEta_1 = new int[arraySize];
_iEtaPhi_1 = new int[arraySize];
_iPt_1 = new int[arraySize];
_pt_1 = new float[arraySize];
_px_1 = new float[arraySize];
_py_1 = new float[arraySize];
_pz_1 = new float[arraySize];
- //_phi_1 = new float[arraySize];
- //_eta_1 = new float[arraySize];
_correction_1 = new float[arraySize];
- _dedx_1 = new float[arraySize];
-
+
__n1_1_vsPt = getDoubleArray(_nBins_pt_1, 0.);
__n1_1_vsEtaPhi = getDoubleArray(_nBins_etaPhi_1, 0.);
__s1pt_1_vsEtaPhi = getDoubleArray(_nBins_etaPhi_1, 0.);
__n1_1_vsZEtaPhiPt = getFloatArray(_nBins_zEtaPhiPt_1, 0.);
- cout << "==========================================================================================" << endl;
- cout << "=============== Booking for particle 1 done." << endl;
- cout << "_requestedCharge_1: " << _requestedCharge_1 << endl;
- cout << "_requestedCharge_2: " << _requestedCharge_2 << endl;
-
+
if (_requestedCharge_2!=_requestedCharge_1)
{
- cout << " creating arrays for particle 2 with size: " << arraySize << endl;
- _sameFilter = 0;
+ _sameFilter = 0;
//particle 2
_id_2 = new int[arraySize];
_charge_2 = new int[arraySize];
- //_iPhi_2 = new int[arraySize];
- //_iEta_2 = new int[arraySize];
_iEtaPhi_2 = new int[arraySize];
_iPt_2 = new int[arraySize];
_pt_2 = new float[arraySize];
_px_2 = new float[arraySize];
_py_2 = new float[arraySize];
_pz_2 = new float[arraySize];
- //_phi_2 = new float[arraySize];
- //_eta_2 = new float[arraySize];
_correction_2 = new float[arraySize];
- _dedx_2 = new float[arraySize];
-
+
__n1_2_vsPt = getDoubleArray(_nBins_pt_2, 0.);
__n1_2_vsEtaPhi = getDoubleArray(_nBins_etaPhi_2, 0.);
__s1pt_2_vsEtaPhi = getDoubleArray(_nBins_etaPhi_2, 0.);
createHistograms();
PostData(0,_outputHistoList);
- cout<< "AliAnalysisTaskDptDptCorrelations::CreateOutputObjects() DONE " << endl;
+ //cout<< "AliAnalysisTaskDptDptCorrelations::CreateOutputObjects() DONE " << endl;
}
name = "eventAccounting";
- // bin index : what it is...
- // 0 : number of event submitted
- // 1 : number accepted by centrality cut
- // 2 : number accepted by centrality cut and z cut
- // 3 : total number of particles that satisfied filter 1
- // 4 : total number of particles that satisfied filter 2
- _eventAccounting = createHisto(name,name,10, -0.5, 9.5, "event Code", _title_counts);
-
- name = "m0"; _m0 = createHisto(name,name,_nBins_M1, _min_M1, _max_M1, _title_m0, _title_counts);
- name = "m1"; _m1 = createHisto(name,name,_nBins_M1, _min_M1, _max_M1, _title_m1, _title_counts);
- name = "m2"; _m2 = createHisto(name,name,_nBins_M2, _min_M2, _max_M2, _title_m2, _title_counts);
- name = "m3"; _m3 = createHisto(name,name,_nBins_M3, _min_M3, _max_M3, _title_m3, _title_counts);
- name = "m4"; _m4 = createHisto(name,name,_nBins_M4, _min_M4, _max_M4, _title_m4, _title_counts);
- name = "m5"; _m5 = createHisto(name,name,_nBins_M5, _min_M5, _max_M5, _title_m5, _title_counts);
- name = "m6"; _m6 = createHisto(name,name,_nBins_M6, _min_M6, _max_M6, _title_m6, _title_counts);
- name = "zV"; _vertexZ = createHisto(name,name,_nBins_vertexZ, _min_vertexZ, _max_vertexZ, "z-Vertex (cm)", _title_counts);
-
- AliInfo(" AliAnalysisTaskDptDptCorrelations::createHistoHistograms() Creating Part 1 Histos");
+ _eventAccounting = createHisto1D(name,name,10, -0.5, 9.5, "event Code", _title_counts);
- name = n1Name+part_1_Name+vsPt; _n1_1_vsPt = createHisto(name,name, _nBins_pt_1, _min_pt_1, _max_pt_1, _title_pt_1, _title_AvgN_1);
- name = n1Name+part_1_Name+vsEtaPhi; _n1_1_vsEtaVsPhi = createHisto(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);
- name = s1ptName+part_1_Name+vsEtaPhi; _s1pt_1_vsEtaVsPhi = createHisto(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);
- name = n1Name+part_1_Name+vsZ+vsEtaPhi+vsPt; _n1_1_vsZVsEtaVsPhiVsPt = createHisto(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);
- name = n1Name+part_1_Name+vsM; _n1_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_1);
- name = s1ptName+part_1_Name+vsM; _s1pt_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_1);
- name = n1NwName+part_1_Name+vsM; _n1Nw_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_1);
- name = s1ptNwName+part_1_Name+vsM; _s1ptNw_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_1);
- name = "dedxVsP_1"; _dedxVsP_1 = createHisto(name,name,400,-2.,2.,120,0.,120.,"p (GeV/c)", "dedx", "counts");
- name = "corrDedxVsP_1"; _corrDedxVsP_1 = createHisto(name,name,400,-2.,2.,120,0.,120.,"p (GeV/c)", "dedx", "counts");
- name = "betaVsP_1"; _betaVsP_1 = createHisto(name,name,400,-2.,2.,120,0.5,1.1,"p (GeV/c)", "beta", "counts");
+ name = "m0"; _m0 = createHisto1D(name,name,_nBins_M1, _min_M1, _max_M1, _title_m0, _title_counts);
+ name = "m1"; _m1 = createHisto1D(name,name,_nBins_M1, _min_M1, _max_M1, _title_m1, _title_counts);
+ name = "m2"; _m2 = createHisto1D(name,name,_nBins_M2, _min_M2, _max_M2, _title_m2, _title_counts);
+ name = "m3"; _m3 = createHisto1D(name,name,_nBins_M3, _min_M3, _max_M3, _title_m3, _title_counts);
+ name = "m4"; _m4 = createHisto1D(name,name,_nBins_M4, _min_M4, _max_M4, _title_m4, _title_counts);
+ name = "m5"; _m5 = createHisto1D(name,name,_nBins_M5, _min_M5, _max_M5, _title_m5, _title_counts);
+ name = "m6"; _m6 = createHisto1D(name,name,_nBins_M6, _min_M6, _max_M6, _title_m6, _title_counts);
+ name = "zV"; _vertexZ = createHisto1D(name,name,_nBins_vertexZ, _min_vertexZ, _max_vertexZ, "z-Vertex (cm)", _title_counts);
- AliInfo(" AliAnalysisTaskDptDptCorrelations::createHistoHistograms() Creating Part 2 Histos");
-
- name = n1Name+part_2_Name+vsPt; _n1_2_vsPt = createHisto(name,name, _nBins_pt_2, _min_pt_2, _max_pt_2, _title_pt_2, _title_AvgN_2);
- name = n1Name+part_2_Name+vsEtaPhi; _n1_2_vsEtaVsPhi = createHisto(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);
- name = s1ptName+part_2_Name+vsEtaPhi; _s1pt_2_vsEtaVsPhi = createHisto(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);
- name = n1Name+part_2_Name+vsZ+vsEtaPhi+vsPt; _n1_2_vsZVsEtaVsPhiVsPt = createHisto(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);
- name = n1Name+part_2_Name + vsM; _n1_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_2);
- name = s1ptName+part_2_Name + vsM; _s1pt_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_2);
- name = n1NwName+part_2_Name+vsM; _n1Nw_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_1);
- name = s1ptNwName+part_2_Name+vsM; _s1ptNw_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_1);
- name = "dedxVsP_2"; _dedxVsP_2 = createHisto(name,name,400,-2.,2.,120,0.,120.,"p (GeV/c)", "dedx", "counts");
- name = "corrDedxVsP_2"; _corrDedxVsP_2 = createHisto(name,name,400,-2.,2.,120,0.,120.,"p (GeV/c)", "dedx", "counts");
- name = "betaVsP_2"; _betaVsP_2 = createHisto(name,name,400,-2.,2.,120,0.5,1.1,"p (GeV/c)", "beta", "counts");
+
+ name = "Eta"; _etadis = createHisto1F(name,name, 200, -1.0, 1.0, "#eta","counts");
+ name = "Phi"; _phidis = createHisto1F(name,name, 360, 0.0, 6.4, "#phi","counts");
+ name = "DCAz"; _dcaz = createHisto1F(name,name, 500, -5.0, 5.0, "dcaZ","counts");
+ name = "DCAxy"; _dcaxy = createHisto1F(name,name, 500, -5.0, 5.0, "dcaXY","counts");
+
+ //name = "Nclus1"; _Ncluster1 = createHisto1F(name,name, 200, 0, 200, "Ncluster1","counts");
+ //name = "Nclus2"; _Ncluster2 = createHisto1F(name,name, 200, 0, 200, "Ncluster2","counts");
- if (!_singlesOnly)
+ if (_singlesOnly)
{
- AliInfo(" AliAnalysisTaskDptDptCorrelations::createHistoHistograms() Creating Pair Histos");
-
- name = n2Name+pair_12_Name+vsEtaPhi; _n2_12_vsEtaPhi = createHisto(name,name, _nBins_etaPhi_12, 0., double(_nBins_etaPhi_12), _title_etaPhi_12, _title_AvgN2_12);
- name = n2Name+pair_12_Name+vsPtVsPt; _n2_12_vsPtVsPt = createHisto(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);
- name = s2PtPtName+pair_12_Name + vsEtaPhi; _s2PtPt_12_vsEtaPhi = createHisto(name,name, _nBins_etaPhi_12, 0., double(_nBins_etaPhi_12), _title_etaPhi_12, _title_AvgSumPtPt_12);
- name = s2PtNName+pair_12_Name + vsEtaPhi; _s2PtN_12_vsEtaPhi = createHisto(name,name, _nBins_etaPhi_12, 0., double(_nBins_etaPhi_12), _title_etaPhi_12, _title_AvgSumPtN_12);
- name = s2NPtName+pair_12_Name + vsEtaPhi; _s2NPt_12_vsEtaPhi = createHisto(name,name, _nBins_etaPhi_12, 0., double(_nBins_etaPhi_12), _title_etaPhi_12, _title_AvgNSumPt_12);
+ 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);
+ 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);
+
+ 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);
+ 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);
+
+ }
+ else
+ {
+ 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);
+ 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);
+ name = n1Name+part_1_Name+vsM; _n1_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_1);
+ name = s1ptName+part_1_Name+vsM; _s1pt_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_1);
+ name = n1NwName+part_1_Name+vsM; _n1Nw_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_1);
+ name = s1ptNwName+part_1_Name+vsM; _s1ptNw_1_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_1);
+
+ 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);
+ 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);
+ name = n1Name+part_2_Name + vsM; _n1_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_2);
+ name = s1ptName+part_2_Name + vsM; _s1pt_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_2);
+ name = n1NwName+part_2_Name+vsM; _n1Nw_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN_1);
+ name = s1ptNwName+part_2_Name+vsM; _s1ptNw_2_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPt_1);
+
+ 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);
+ 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);
+ 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);
+ 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);
+ 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);
- name = n2Name+pair_12_Name + vsM; _n2_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN2_12);
- name = s2PtPtName+pair_12_Name + vsM; _s2PtPt_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtPt_12);
- name = s2PtNName+pair_12_Name + vsM; _s2PtN_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtN_12);
- name = s2NPtName+pair_12_Name + vsM; _s2NPt_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgNSumPt_12);
+ name = n2Name+pair_12_Name + vsM; _n2_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN2_12);
+ name = s2PtPtName+pair_12_Name + vsM; _s2PtPt_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtPt_12);
+ name = s2PtNName+pair_12_Name + vsM; _s2PtN_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtN_12);
+ name = s2NPtName+pair_12_Name + vsM; _s2NPt_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgNSumPt_12);
- name = n2NwName+pair_12_Name + vsM; _n2Nw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN2_12);
- name = s2PtPtNwName+pair_12_Name + vsM; _s2PtPtNw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtPt_12);
- name = s2PtNNwName+pair_12_Name + vsM; _s2PtNNw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtN_12);
- name = s2NPtNwName+pair_12_Name + vsM; _s2NPtNw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgNSumPt_12);
+ name = n2NwName+pair_12_Name + vsM; _n2Nw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgN2_12);
+ name = s2PtPtNwName+pair_12_Name + vsM; _s2PtPtNw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtPt_12);
+ name = s2PtNNwName+pair_12_Name + vsM; _s2PtNNw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgSumPtN_12);
+ name = s2NPtNwName+pair_12_Name + vsM; _s2NPtNw_12_vsM = createProfile(name,name, _nBins_M4, _min_M4, _max_M4, _title_m4, _title_AvgNSumPt_12);
- name = "mInv"; _invMass = createHisto(name,name, 500, 0., 1.000, "M_{inv}","counts");
- name = "mInvElec"; _invMassElec = createHisto(name,name, 500, 0., 1.000, "M_{inv}","counts");
+ name = "mInv"; _invMass = createHisto1F(name,name, 500, 0., 1.000, "M_{inv}","counts");
+ name = "mInvElec"; _invMassElec = createHisto1F(name,name, 500, 0., 1.000, "M_{inv}","counts");
}
AliInfo(" AliAnalysisTaskDptDptCorrelations::createHistoHistograms() All Done");
AliInfo("AliAnalysisTaskDptDptCorrelations::finalizeHistograms() starting");
AliInfo(Form("CorrelationAnalyzers::finalizeHistograms() _eventCount : %d",int(_eventCount)));
- if (_sameFilter)
+ if (_singlesOnly)
{
- fillHistoWithArray(_n1_1_vsPt, __n1_1_vsPt, _nBins_pt_1);
- fillHistoWithArray(_n1_1_vsEtaVsPhi, __n1_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
- fillHistoWithArray(_s1pt_1_vsEtaVsPhi, __s1pt_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
- fillHistoWithArray(_n1_1_vsZVsEtaVsPhiVsPt, __n1_1_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_1, _nBins_pt_1);
-
- fillHistoWithArray(_n1_2_vsPt, __n1_1_vsPt, _nBins_pt_1);
- fillHistoWithArray(_n1_2_vsEtaVsPhi, __n1_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
- fillHistoWithArray(_s1pt_2_vsEtaVsPhi, __s1pt_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
- fillHistoWithArray(_n1_2_vsZVsEtaVsPhiVsPt, __n1_1_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_1, _nBins_pt_1);
+ if (_sameFilter)
+ {
+ fillHistoWithArray(_n1_1_vsPt, __n1_1_vsPt, _nBins_pt_1);
+ fillHistoWithArray(_n1_1_vsZVsEtaVsPhiVsPt, __n1_1_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_1, _nBins_pt_1);
+ fillHistoWithArray(_n1_2_vsPt, __n1_1_vsPt, _nBins_pt_1);
+ fillHistoWithArray(_n1_2_vsZVsEtaVsPhiVsPt, __n1_1_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_1, _nBins_pt_1);
+ }
+ else
+ {
+ fillHistoWithArray(_n1_1_vsPt, __n1_1_vsPt, _nBins_pt_1);
+ fillHistoWithArray(_n1_1_vsZVsEtaVsPhiVsPt, __n1_1_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_1, _nBins_pt_1);
+ fillHistoWithArray(_n1_2_vsPt, __n1_2_vsPt, _nBins_pt_2);
+ fillHistoWithArray(_n1_2_vsZVsEtaVsPhiVsPt, __n1_2_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_2, _nBins_pt_2);
+ }
}
else
{
- fillHistoWithArray(_n1_1_vsPt, __n1_1_vsPt, _nBins_pt_1);
- fillHistoWithArray(_n1_1_vsEtaVsPhi, __n1_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
- fillHistoWithArray(_s1pt_1_vsEtaVsPhi, __s1pt_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
- fillHistoWithArray(_n1_1_vsZVsEtaVsPhiVsPt, __n1_1_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_1, _nBins_pt_1);
-
- fillHistoWithArray(_n1_2_vsPt, __n1_2_vsPt, _nBins_pt_2);
- fillHistoWithArray(_n1_2_vsEtaVsPhi, __n1_2_vsEtaPhi, _nBins_eta_2, _nBins_phi_2);
- fillHistoWithArray(_s1pt_2_vsEtaVsPhi, __s1pt_2_vsEtaPhi, _nBins_eta_2, _nBins_phi_2);
- fillHistoWithArray(_n1_2_vsZVsEtaVsPhiVsPt, __n1_2_vsZEtaPhiPt, _nBins_vertexZ, _nBins_etaPhi_2, _nBins_pt_2);
- }
- if (!_singlesOnly)
- {
+ if (_sameFilter)
+ {
+ fillHistoWithArray(_n1_1_vsEtaVsPhi, __n1_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
+ fillHistoWithArray(_s1pt_1_vsEtaVsPhi, __s1pt_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
+ fillHistoWithArray(_n1_2_vsEtaVsPhi, __n1_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
+ fillHistoWithArray(_s1pt_2_vsEtaVsPhi, __s1pt_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
+ }
+ else
+ {
+ fillHistoWithArray(_n1_1_vsEtaVsPhi, __n1_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
+ fillHistoWithArray(_s1pt_1_vsEtaVsPhi, __s1pt_1_vsEtaPhi, _nBins_eta_1, _nBins_phi_1);
+ fillHistoWithArray(_n1_2_vsEtaVsPhi, __n1_2_vsEtaPhi, _nBins_eta_2, _nBins_phi_2);
+ fillHistoWithArray(_s1pt_2_vsEtaVsPhi, __s1pt_2_vsEtaPhi, _nBins_eta_2, _nBins_phi_2);
+ }
fillHistoWithArray(_n2_12_vsEtaPhi, __n2_12_vsEtaPhi, _nBins_etaPhi_12);
fillHistoWithArray(_s2PtPt_12_vsEtaPhi, __s2ptpt_12_vsEtaPhi, _nBins_etaPhi_12);
fillHistoWithArray(_s2PtN_12_vsEtaPhi, __s2PtN_12_vsEtaPhi, _nBins_etaPhi_12);
fillHistoWithArray(_s2NPt_12_vsEtaPhi, __s2NPt_12_vsEtaPhi, _nBins_etaPhi_12);
- fillHistoWithArray(_n2_12_vsPtVsPt, __n2_12_vsPtPt, _nBins_pt_1, _nBins_pt_2);
- }
-
+ fillHistoWithArray(_n2_12_vsPtVsPt, __n2_12_vsPtPt, _nBins_pt_1, _nBins_pt_2);
+
+ }
AliInfo("AliAnalysisTaskDptDptCorrelations::finalizeHistograms() Done ");
}
//--------------//
-void AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option)
+void AliAnalysisTaskDptDptCorrelations::UserExec(Option_t */*option*/)
{
int k1,k2;
int iPhi, iEta, iEtaPhi, iPt, charge;
- float q, p, phi, pt, eta, corr, dedx, px, py, pz;
+ float q, phi, pt, eta, corr, corrPt, px, py, pz;
int ij;
int id_1, q_1, iEtaPhi_1, iPt_1;
- float pt_1, px_1, py_1, pz_1, corr_1, dedx_1;
+ float pt_1, px_1, py_1, pz_1, corr_1;
int id_2, q_2, iEtaPhi_2, iPt_2;
- float pt_2, px_2, py_2, pz_2, corr_2, dedx_2;
+ float pt_2, px_2, py_2, pz_2, corr_2;
float ptpt;
int iVertex, iVertexP1, iVertexP2;
int iZEtaPhiPt;
float massElecSq = 2.5e-7;
- double b[2];
- double bCov[3];
const AliAODVertex* vertex;
- int nClus;
bool bitOK;
-
- //cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - Starting." << endl;
-
+
+ AliAnalysisManager* manager = AliAnalysisManager::GetAnalysisManager();
+ if (!manager) {
+ return;
+ }
+ AliAODInputHandler* inputHandler = dynamic_cast<AliAODInputHandler*> (manager->GetInputEventHandler());
+ if (!inputHandler) {
+ return;
+ }
+
+ fAODEvent = dynamic_cast<AliAODEvent*>(InputEvent());
+ //AliAODEvent* fAODEvent = dynamic_cast<AliAODEvent*>(InputEvent());
+
+ if (!fAODEvent)
+ {
+ return;
+ }
+ fPIDResponse =inputHandler->GetPIDResponse();
+ if (!fPIDResponse){
+ AliFatal("This Task needs the PID response attached to the inputHandler");
+ return;
+ }
+
// count all events looked at here
_eventCount++;
- if (!_eventAccounting)
- cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - !_eventAccounting" << endl;
- _eventAccounting->Fill(0);// count all calls to this function
-
- //cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - 1" << endl;
-
- //Get pointer to current event
- fESDEvent = dynamic_cast<AliESDEvent*> (InputEvent());
- fAODEvent = dynamic_cast<AliAODEvent*> (InputEvent());
-
- ////cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - 2" << endl;
-
- if(!fAODEvent && !fESDEvent)
+
+ if (_eventAccounting)
{
- AliError("AliAnalysisTaskDptDptCorrelations::Exec(Option_t *option) !fAODEvent && !fESDEvent ");;
+ _eventAccounting->Fill(0);// count all calls to this function
+ }
+ else
+ {
+
return;
}
_eventAccounting->Fill(1);// count all calls to this function with a valid pointer
-
- //cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - 3" << endl;
-
//reset single particle counters
k1 = k2 = 0;
__n1_1 = __n1_2 = __s1pt_1 = __s1pt_2 = __n1Nw_1 = __n1Nw_2 = __s1ptNw_1 = __s1ptNw_2 = 0;
float v0Centr = -999.;
+ float v0ACentr = -999.;
float trkCentr = -999.;
float spdCentr = -999.;
float vertexY = -999;
float vertexZ = -999;
float vertexXY = -999;
- //float dcaX = -999;
- //float dcaY = -999;
float dcaZ = -999;
float dcaXY = -999;
float centrality = -999;
-
- //cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - 4" << endl;
-
+
if(fAODEvent)
{
- //cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - 5" << endl;
-
//Centrality
AliCentrality* centralityObject = fAODEvent->GetHeader()->GetCentralityP();
if (centralityObject)
//cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - 6" << endl;
v0Centr = centralityObject->GetCentralityPercentile("V0M");
+ v0ACentr = centralityObject->GetCentralityPercentile("V0A");
trkCentr = centralityObject->GetCentralityPercentile("TRK");
spdCentr = centralityObject->GetCentralityPercentile("CL1");
- //cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - 7" << endl;
}
- //cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - 8" << endl;
-
- _nTracks = fAODEvent->GetNTracks();
- _mult0 = 0;
- _mult1 = 0;
- _mult2 = 0;
+
+ _nTracks =fAODEvent->GetNumberOfTracks();//NEW Test
+
_mult3 = _nTracks;
_mult4 = v0Centr;
+ _mult4a = v0ACentr;
_mult5 = trkCentr;
_mult6 = spdCentr;
_field = fAODEvent->GetMagneticField();
- //cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - _field:" << _field << endl;
-
//_centralityMethod
switch (_centralityMethod)
{
- case 0: centrality = _mult0; break;
- case 1: centrality = _mult1; break;
- case 2: centrality = _mult2; break;
- case 3: centrality = _mult3; break;
- case 4: centrality = _mult4; break;
- case 5: centrality = _mult5; break;
- case 6: centrality = _mult6; break;
+ case 0: centrality = _mult0; break;
+ case 1: centrality = _mult1; break;
+ case 2: centrality = _mult2; break;
+ case 3: centrality = _mult3; break;
+ case 4: centrality = _mult4; break;
+ case 5: centrality = _mult5; break;
+ case 6: centrality = _mult6; break;
+ case 7: centrality = _mult4a; break;
}
- //cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - 10" << endl;
- //filter on centrality
- if ( centrality < _centralityMin ||
- centrality > _centralityMax)
+ if ( centrality < _centralityMin || centrality > _centralityMax )
{
- //cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - 11" << endl;
-
- // we dont analyze this event here...
return;
}
_eventAccounting->Fill(2);// count all events with right centrality
- //cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - 12" << endl;
// filter on z and xy vertex
vertex = (AliAODVertex*) fAODEvent->GetPrimaryVertexSPD();
{
vertexZ = -999;
vertexXY = -999;
- cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - No valid vertex object or poor vertex" << endl;
+ AliInfo("AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - No valid vertex object or poor vertex");
}
else
{
vertexZ = vertex->GetZ();
vertexXY = sqrt(vertexX*vertexX+vertexY*vertexY);
}
- //cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - 13" << endl;
-
- //cout << "vertexZ : " << vertexZ << endl;
- //cout << "vertexXY: " << vertexXY << endl;
- //cout << "_vertexZMin: " << _vertexZMin << endl;
- //cout << "_vertexZMax: " << _vertexZMax << endl;
- //cout << "_vertexXYMin: " << _vertexXYMin << endl;
- //cout << "_vertexXYMax: " << _vertexXYMax << endl;
-
if (!vertex ||
vertexZ < _vertexZMin ||
vertexZ > _vertexZMax ||
vertexXY > _vertexXYMax)
return;
-
- //cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - 14" << endl;
-
+ _vertexZ->Fill(vertexZ);
+
iVertex = int((vertexZ-_min_vertexZ)/_width_vertexZ);
iVertexP1 = iVertex*_nBins_etaPhiPt_1;
iVertexP2 = iVertex*_nBins_etaPhiPt_2;
return;
}
_eventAccounting->Fill(3);// count all calls to this function with a valid pointer
- //cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - 15" << endl;
+ //======================
+
+ TExMap *trackMap = new TExMap();//Mapping matrix----
+ //1st loop track
+ for(Int_t i = 0; i < _nTracks; i++)
+ {
+ AliAODTrack* aodTrack = dynamic_cast<AliAODTrack *>(fAODEvent->GetTrack(i));
+ if(!aodTrack) {
+ AliError(Form("ERROR: Could not retrieve AODtrack %d",i));
+ continue;
+ }
+ Int_t gID = aodTrack->GetID();
+ if (aodTrack->TestFilterBit(1)) trackMap->Add(gID, i);//Global tracks
+ }
+
+ AliAODTrack* newAodTrack;
- // loop over all particles for singles
- //debug() << "_nTracks:"<< _nTracks << endl;
+ //Track Loop starts here
for (int iTrack=0; iTrack< _nTracks; iTrack++)
{
- //cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - 16 iTrack:" << iTrack << endl;
-
- AliAODTrack * t = (AliAODTrack *) fAODEvent->GetTrack(iTrack);
- if (!t)
- {
- AliError(Form("AliAnalysisTaskDptDptCorrelations::Exec(Option_t *option) No track ofr iTrack=%d", iTrack));
- continue;
+ AliAODTrack* t = dynamic_cast<AliAODTrack *>(fAODEvent->GetTrack(iTrack));
+ if (!t) {
+ AliError(Form("Could not receive track %d", iTrack));
+ continue;
}
-
- q = t->Charge();
- charge = int(q);
- phi = t->Phi();
- p = t->P();
- pt = t->Pt();
- px = t->Px();
- py = t->Py();
- pz = t->Pz();
- eta = t->Eta();
- dedx = t->GetTPCsignal();
- nClus = t->GetTPCNcls();
- bitOK = t->TestFilterBit(_trackFilterBit);
-
- //cout << "_trackFilterBit:" << _trackFilterBit << " Track returns:" << bitOK << endl;
- //cout << " q:" << q << " _requestedCharge_1:" << _requestedCharge_1 << endl;
- //cout << " pt:" << pt << " _min_pt_1:" << _min_pt_1 << " _max_pt_1:" << _max_pt_1<< endl;
- //cout << " phi:" << phi << endl;
- //cout << " eta:" << eta << " _min_eta_1:" << _min_eta_1 << " _max_eta_1:" << _max_eta_1<< endl;
- //cout << " dedx:" << dedx << " _dedxMin:" << _dedxMin << " _dedxMax:" << _dedxMax << endl;
- //cout << "nclus:" << nClus<< " _nClusterMin:" << _nClusterMin << endl;
- if (bitOK &&
- _requestedCharge_1 == charge &&
- pt >= _min_pt_1 &&
- pt < _max_pt_1 &&
- eta >= _min_eta_1 &&
- eta < _max_eta_1 &&
- dedx >= _dedxMin &&
- dedx < _dedxMax &&
- nClus >= _nClusterMin)
+
+ bitOK = t->TestFilterBit(_trackFilterBit);
+ if (!bitOK) continue;
+
+
+ Int_t gID = t->GetID();
+ newAodTrack = gID >= 0 ?t : fAODEvent->GetTrack(trackMap->GetValue(-1-gID));
+
+ q = t->Charge();
+ charge = int(q);
+ phi = t->Phi();
+ pt = t->Pt();
+ px = t->Px();
+ py = t->Py();
+ pz = t->Pz();
+ eta = t->Eta();
+ dcaXY = t->DCA();
+ dcaZ = t->ZAtDCA();
+
+ Double_t nsigmaelectron = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kElectron));
+ Double_t nsigmapion = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kPion));
+ Double_t nsigmakaon = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kKaon));
+ Double_t nsigmaproton = TMath::Abs(fPIDResponse->NumberOfSigmasTPC(newAodTrack,(AliPID::EParticleType)AliPID::kProton));
+
+ //nsigma cut to reject electron
+
+ if(nsigmaelectron < fNSigmaCut
+ && nsigmapion > fNSigmaCut
+ && nsigmakaon > fNSigmaCut
+ && nsigmaproton > fNSigmaCut ) continue;
+
+ if(charge == 0) continue;
+
+ // Kinematics cuts used
+ if( pt < _min_pt_1 || pt > _max_pt_1) continue;
+ if( eta < _min_eta_1 || eta > _max_eta_1) continue;
+
+ //==== QA ===========================
+ _dcaz->Fill(dcaZ);
+ _dcaxy->Fill(dcaXY);
+ _etadis->Fill(eta);
+ _phidis->Fill(phi);
+ //===================================
+
+ //Particle 1
+ if (_requestedCharge_1 == charge)
{
- //cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - check vertex for 1:" << endl;
- // Get the dca information
- if (t->PropagateToDCA(vertex, _field, 100., b, bCov) )
- {
- dcaXY = b[0];
- dcaZ = b[1];
- }
- else
- {
- dcaXY = -999999;
- dcaZ = -999999;
- }
- //cout << "1 dcaZ:" << dcaZ << " _dcaZMin:" << _dcaZMin << " _dcaZMax:" << _dcaZMax << endl;
- //cout << "1 dcaXY:" << dcaXY << " _dcaXYMin:" << _dcaXYMin << " _dcaXYMax:" << _dcaXYMax << endl;
-
- // skip track if DCA too large
- if (dcaZ >= _dcaZMin &&
- dcaZ < _dcaZMax &&
- dcaXY >= _dcaXYMin &&
- dcaXY < _dcaXYMax)
- continue; //track does not have a valid DCA
- //cout << "keep track:" << endl;
-
- iPhi = int( phi/_width_phi_1);
- ////cout << " AliAnalysisTaskDptDptCorrelations::analyze(Event * event) -1- iTrack:" << iTrack<< endl<< "pt:" << pt << " phi:" << phi << " eta:" << eta << endl;
- if (iPhi<0 || iPhi>=_nBins_phi_1 )
- {
- AliWarning("AliAnalysisTaskDptDptCorrelations::analyze() iPhi<0 || iPhi>=_nBins_phi_1");
+
+ iPhi = int( phi/_width_phi_1);
+
+ if (iPhi<0 || iPhi>=_nBins_phi_1 )
+ {
+ AliWarning("AliAnalysisTaskDptDptCorrelations::analyze() iPhi<0 || iPhi>=_nBins_phi_1");
return;
}
AliWarning("AliAnalysisTaskDptDptCorrelations::analyze(AliceEvent * event) iZEtaPhiPt<0 || iZEtaPhiPt>=_nBins_zEtaPhiPt_1");
continue;
}
- //cout << "all good; process track:" << endl;
-
- _id_1[k1] = iTrack;
- _charge_1[k1] = charge;
- _iEtaPhi_1[k1] = iEtaPhi;
- _iPt_1[k1] = iPt;
- _pt_1[k1] = pt;
- _px_1[k1] = px;
- _py_1[k1] = py;
- _pz_1[k1] = pz;
- _correction_1[k1] = corr;
- __n1_1 += corr;
- __n1_1_vsEtaPhi[iEtaPhi] += corr;
- __n1_1_vsZEtaPhiPt[iZEtaPhiPt] += corr;
- __s1pt_1 += corr*pt;
- __s1pt_1_vsEtaPhi[iEtaPhi] += corr*pt;
- __n1_1_vsPt[iPt] += corr;
- __n1Nw_1 += 1;
- __s1ptNw_1 += pt;
-
- //_betaVsP_1->Fill(p*q,_trackFilter_1->getBeta() );
- _dedxVsP_1->Fill(p*q,dedx);
- //_corrDedxVsP_1->Fill(p*q,_trackFilter_1->getCorrectedDedx() );
+
+ if (_singlesOnly)
+ {
- ++k1;
- if (k1>=arraySize)
+ __n1_1_vsPt[iPt] += corr; //cout << "step 15" << endl;
+ __n1_1_vsZEtaPhiPt[iZEtaPhiPt] += corr; //cout << "step 12" << endl;
+
+ }
+ else
{
- AliError(Form("AliAnalysisTaskDptDptCorrelations::analyze(AliceEvent * event) k1 >=arraySize; arraySize: %d",arraySize));
- return;
+ corrPt = corr*pt;
+ _id_1[k1] = iTrack;
+ _charge_1[k1] = charge;
+ _iEtaPhi_1[k1] = iEtaPhi;
+ _iPt_1[k1] = iPt;
+ _pt_1[k1] = pt;
+ _px_1[k1] = px;
+ _py_1[k1] = py;
+ _pz_1[k1] = pz;
+ _correction_1[k1] = corr;
+ __n1_1 += corr;
+ __n1_1_vsEtaPhi[iEtaPhi] += corr;
+ __s1pt_1 += corrPt;
+ __s1pt_1_vsEtaPhi[iEtaPhi] += corrPt;
+ __n1Nw_1 += 1;
+ __s1ptNw_1 += pt;
+ ++k1;
+ if (k1>=arraySize)
+ {
+ AliError(Form("AliAnalysisTaskDptDptCorrelations::analyze(AliceEvent * event) k1 >=arraySize; arraySize: %d",arraySize));
+ return;
+ }
}
}
- if (!_sameFilter &&
- bitOK &&
- _requestedCharge_2 == charge &&
- pt >= _min_pt_2 &&
- pt < _max_pt_2 &&
- eta >= _min_eta_2 &&
- eta < _max_eta_2 &&
- dedx >= _dedxMin &&
- dedx < _dedxMax &&
- nClus >= _nClusterMin)
+ if (!_sameFilter && _requestedCharge_2 == charge)
{
- // Get the dca information
- //cout << "AliAnalysisTaskDptDptCorrelations::UserExec(Option_t *option) - check vertex for 2:" << endl;
- if (t->PropagateToDCA(vertex, _field, 100., b, bCov) )
- {
- dcaXY = b[0];
- dcaZ = b[1];
- }
- else
- {
- dcaXY = -999999;
- dcaZ = -999999;
- }
- //cout << "2 dcaZ:" << dcaZ << " _dcaZMin:" << _dcaZMin << " _dcaZMax:" << _dcaZMax << endl;
- //cout << "2 dcaXY:" << dcaXY << " _dcaXYMin:" << _dcaXYMin << " _dcaXYMax:" << _dcaXYMax << endl;
- // skip track if DCA too large
- if (dcaZ >= _dcaZMin &&
- dcaZ < _dcaZMax &&
- dcaXY >= _dcaXYMin &&
- dcaXY < _dcaXYMax)
- continue; //track does not have a valid DCA
-
- iPhi = int( phi/_width_phi_2);
- //cout << " AliAnalysisTaskDptDptCorrelations::analyze(Event * event) -1- iTrack:" << iTrack << endl
- //<< "pt:" << pt << " phi:" << phi << " eta:" << eta << endl;
+
+ iPhi = int( phi/_width_phi_2);
+
if (iPhi<0 || iPhi>=_nBins_phi_2 )
{
AliWarning("AliAnalysisTaskDptDptCorrelations::analyze() iPhi<0 || iPhi>=_nBins_phi_1");
continue;
}
- //cout << " iEtaPhi:" << iEtaPhi << " _nBins_etaPhi_1: "<< _nBins_etaPhi_1<< " _nBins_etaPhi_2: "<< _nBins_etaPhi_2<< endl;
- //if (_useEbyECorrections) corr = (charge>0) ? _correction_2p[iEtaPhi] : _correction_2m[iEtaPhi]; else
- //cout << "_correctionWeight_2:" << _correctionWeight_2 << endl;
+
if (_correctionWeight_2)
corr = _correctionWeight_2[iZEtaPhiPt];
else
corr = 1;
- //dpt = pt - (charge>0) ? _avgPt_vsEtaPhi_2p[iEtaPhi] : _avgPt_vsEtaPhi_2m[iEtaPhi];
-
- //cout << " k2:" << k2 << endl;
- //cout << "iZEtaPhiPt: " << iZEtaPhiPt << endl;
- //cout << "iEtaPhi:" << iEtaPhi << endl;
- _id_2[k2] = iTrack;
- //cout << "step 1" << endl;
- _charge_2[k2] = charge;
- //cout << "step 2" << endl;
- _iEtaPhi_2[k2] = iEtaPhi;
- //cout << "step 3" << endl;
- _iPt_2[k2] = iPt;
- //cout << "step 4" << endl;
- _pt_2[k2] = pt;
- //cout << "step 5" << endl;
- _px_2[k2] = px;
- //cout << "step 6" << endl;
- _py_2[k2] = py;
- //cout << "step 7" << endl;
- _pz_2[k2] = pz;
- //cout << "step 8" << endl;
- _correction_2[k2] = corr;
- //cout << "step 9" << endl;
- __n1_2 += corr;
- //cout << "step 10" << endl;
- __n1_2_vsEtaPhi[iEtaPhi] += corr;
- //cout << "step 11" << endl;
- __n1_2_vsZEtaPhiPt[iZEtaPhiPt] += corr;
- //cout << "step 12" << endl;
- __s1pt_2 += corr*pt;
- //cout << "step 13" << endl;
- __s1pt_2_vsEtaPhi[iEtaPhi] += corr*pt;
- //cout << "step 14" << endl;
- __n1_2_vsPt[iPt] += corr;
- //cout << "step 15" << endl;
-
- __n1Nw_2 += 1;
- __s1ptNw_2 += pt;
-
- //cout << " data stored:" << endl;
-
- //_betaVsP_2->Fill(p*q,_trackFilter_2->getBeta() );
- if (!_dedxVsP_2) {
- //cout << "_dedxVsP_2 does not exist...." << endl;
- continue;
- }
- //cout << " fill histo _dedxVsP_2" << endl;
-
- _dedxVsP_2->Fill(p*q,dedx);
- //_corrDedxVsP_2->Fill(p*q,_trackFilter_2->getCorrectedDedx() );
- ++k2;
- //cout << " k2 incremented:" << endl;
- if (k2>=arraySize)
+
+ if (_singlesOnly)
{
- AliWarning(Form("-W- k2 >=arraySize; arraySize: %d",arraySize));
- return;
+ __n1_2_vsPt[iPt] += corr; //cout << "step 15" << endl;
+ __n1_2_vsZEtaPhiPt[iZEtaPhiPt] += corr; //cout << "step 12" << endl;
+ }
+ else
+ {
+ corrPt = corr*pt;
+ _id_2[k2] = iTrack; //cout << "step 1" << endl;
+ _charge_2[k2] = charge; //cout << "step 2" << endl;
+ _iEtaPhi_2[k2] = iEtaPhi; //cout << "step 3" << endl;
+ _iPt_2[k2] = iPt; //cout << "step 4" << endl;
+ _pt_2[k2] = pt; //cout << "step 5" << endl;
+ _px_2[k2] = px; //cout << "step 6" << endl;
+ _py_2[k2] = py; //cout << "step 7" << endl;
+ _pz_2[k2] = pz; //cout << "step 8" << endl;
+ _correction_2[k2] = corr; //cout << "step 9" << endl;
+ __n1_2 += corr; //cout << "step 10" << endl;
+ __s1pt_2 += corrPt; //cout << "step 13" << endl;
+ __n1Nw_2 += 1;
+ __n1_2_vsEtaPhi[iEtaPhi] += corr; //cout << "step 11" << endl;
+ __s1pt_2_vsEtaPhi[iEtaPhi] += corrPt; //cout << "step 14" << endl;
+ __s1ptNw_2 += pt;
+ ++k2;
+ if (k2>=arraySize)
+ {
+ AliWarning(Form("-W- k2 >=arraySize; arraySize: %d",arraySize));
+ return;
+ }
}
- }
//cout << "done with track" << endl;
} //iTrack
-
- } //aod
-
-
- else if (fESDEvent)
- {
- //AliCentrality* centrality = esdEvent->GetCentrality();
- //Float_t centV0 = centrality->GetCentralityPercentile("V0M");
- //Float_t centTrk = centrality->GetCentralityPercentile("TRK");
- //Float_t centSPD = centrality->GetCentralityPercentile("CL1");
+ } //aod
}
+
//cout << "Filling histograms now" << endl;
_m0->Fill(_mult0);
_m4->Fill(_mult4);
_m5->Fill(_mult5);
_m6->Fill(_mult6);
- _vertexZ->Fill(vertexZ);
- _n1_1_vsM->Fill(_mult4, __n1_1);
- _s1pt_1_vsM->Fill(_mult4, __s1pt_1);
- _n1Nw_1_vsM->Fill(_mult4, __n1Nw_1);
- _s1ptNw_1_vsM->Fill(_mult4, __s1ptNw_1);
- if (_sameFilter)
+ //_vertexZ->Fill(vertexZ);
+
+ if (_singlesOnly)
{
- _n1_2_vsM->Fill(_mult4, __n1_1);
- _s1pt_2_vsM->Fill(_mult4, __s1pt_1);
- _n1Nw_2_vsM->Fill(_mult4, __n1Nw_1);
- _s1ptNw_2_vsM->Fill(_mult4,__s1ptNw_1);
+ // nothing to do here.
}
else
{
- _n1_2_vsM->Fill(_mult4, __n1_2);
- _s1pt_2_vsM->Fill(_mult4, __s1pt_2);
- _n1Nw_2_vsM->Fill(_mult4, __n1Nw_2);
- _s1ptNw_2_vsM->Fill(_mult4, __s1ptNw_2);
- }
-
- //if singels only selected, do not fill pair histograms.
- if (_singlesOnly) return;
-
- // reset pair counters
- __n2_12 = __s2ptpt_12 = __s2NPt_12 = __s2PtN_12 = 0;
- __n2Nw_12 = __s2ptptNw_12 = __s2NPtNw_12 = __s2PtNNw_12 = 0;
-
- //info() <<" singles done" << endl;
- if (_sameFilter) // filter 1 and 2 are the same -- only do pairs i<j
- {
- if (_field>0)
+ if (_sameFilter)
{
- for (int i1=0; i1<k1; i1++)
+ _n1_1_vsM->Fill(centrality, __n1_1);
+ _s1pt_1_vsM->Fill(centrality, __s1pt_1);
+ _n1Nw_1_vsM->Fill(centrality, __n1Nw_1);
+ _s1ptNw_1_vsM->Fill(centrality, __s1ptNw_1);
+ _n1_2_vsM->Fill(centrality, __n1_1);
+ _s1pt_2_vsM->Fill(centrality, __s1pt_1);
+ _n1Nw_2_vsM->Fill(centrality, __n1Nw_1);
+ _s1ptNw_2_vsM->Fill(centrality, __s1ptNw_1);
+ // reset pair counters
+ __n2_12 = __s2ptpt_12 = __s2NPt_12 = __s2PtN_12 = 0;
+ __n2Nw_12 = __s2ptptNw_12 = __s2NPtNw_12 = __s2PtNNw_12 = 0;
+ if (_field>0)
{
- ////cout << " i1:" << i1 << endl;
- id_1 = _id_1[i1]; ////cout << " id_1:" << id_1 << endl;
- q_1 = _charge_1[i1]; ////cout << " q_1:" << q_1 << endl;
- iEtaPhi_1 = _iEtaPhi_1[i1]; ////cout << " iEtaPhi_1:" << iEtaPhi_1 << endl;
- iPt_1 = _iPt_1[i1]; ////cout << " iPt_1:" << iPt_1 << endl;
- corr_1 = _correction_1[i1]; ////cout << " corr_1:" << corr_1 << endl;
- pt_1 = _pt_1[i1]; ////cout << " pt_1:" << pt_1 << endl;
- dedx_1 = _dedx_1[i1]; ////cout << " dedx_1:" << dedx_1 << endl;
- //1 and 2
- for (int i2=i1+1; i2<k1; i2++)
- {
- ////cout << " i2:" << i2 << endl;
- id_2 = _id_1[i2]; ////cout << " id_2:" << id_2 << endl;
- if (id_1!=id_2)
- {
- q_2 = _charge_1[i2]; ////cout << " q_1:" << q_1 << endl;
- iEtaPhi_2 = _iEtaPhi_1[i2]; ////cout << " iEtaPhi_1:" << iEtaPhi_1 << endl;
- iPt_2 = _iPt_1[i2]; ////cout << " iPt_1:" << iPt_1 << endl;
- corr_2 = _correction_1[i2]; ////cout << " corr_1:" << corr_1 << endl;
- pt_2 = _pt_1[i2]; ////cout << " pt_1:" << pt_1 << endl;
- dedx_2 = _dedx_1[i2]; ////cout << " dedx_2:" << dedx_2 << endl;
- corr = corr_1*corr_2;
- 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))
+ for (int i1=0; i1<k1; i1++)
+ {
+ ////cout << " i1:" << i1 << endl;
+ id_1 = _id_1[i1]; ////cout << " id_1:" << id_1 << endl;
+ q_1 = _charge_1[i1]; ////cout << " q_1:" << q_1 << endl;
+ iEtaPhi_1 = _iEtaPhi_1[i1]; ////cout << " iEtaPhi_1:" << iEtaPhi_1 << endl;
+ iPt_1 = _iPt_1[i1]; ////cout << " iPt_1:" << iPt_1 << endl;
+ corr_1 = _correction_1[i1]; ////cout << " corr_1:" << corr_1 << endl;
+ pt_1 = _pt_1[i1]; ////cout << " pt_1:" << pt_1 << endl;
+ //dedx_1 = _dedx_1[i1]; ////cout << " dedx_1:" << dedx_1 << endl;
+ //1 and 2
+ for (int i2=i1+1; i2<k1; i2++)
+ {
+ ////cout << " i2:" << i2 << endl;
+ id_2 = _id_1[i2]; ////cout << " id_2:" << id_2 << endl;
+ if (id_1!=id_2)
{
- ij = iEtaPhi_1*_nBins_etaPhi_1 + iEtaPhi_2; ////cout << " ij:" << ij<< endl;
+ q_2 = _charge_1[i2]; ////cout << " q_1:" << q_1 << endl;
+ iEtaPhi_2 = _iEtaPhi_1[i2]; ////cout << " iEtaPhi_1:" << iEtaPhi_1 << endl;
+ iPt_2 = _iPt_1[i2]; ////cout << " iPt_1:" << iPt_1 << endl;
+ corr_2 = _correction_1[i2]; ////cout << " corr_1:" << corr_1 << endl;
+ pt_2 = _pt_1[i2]; ////cout << " pt_1:" << pt_1 << endl;
+ //dedx_2 = _dedx_1[i2]; ////cout << " dedx_2:" << dedx_2 << endl;
+ corr = corr_1*corr_2;
+ 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))
+ {
+ ij = iEtaPhi_1*_nBins_etaPhi_1 + iEtaPhi_2; ////cout << " ij:" << ij<< endl;
+ }
+ else // swap particles
+ {
+ ij = iEtaPhi_2*_nBins_etaPhi_1 + iEtaPhi_1; ////cout << " ij:" << ij<< endl;
+ }
+
+ __n2_12 += corr;
+ __n2_12_vsEtaPhi[ij] += corr;
+ ptpt = pt_1*pt_2;
+ __s2ptpt_12 += corr*ptpt;
+ __s2PtN_12 += corr*pt_1;
+ __s2NPt_12 += corr*pt_2;
+ __s2ptpt_12_vsEtaPhi[ij] += corr*ptpt;
+ __s2PtN_12_vsEtaPhi[ij] += corr*pt_1;
+ __s2NPt_12_vsEtaPhi[ij] += corr*pt_2;
+ __n2_12_vsPtPt[iPt_1*_nBins_pt_2 + iPt_2] += corr;
+
+ __n2Nw_12 += 1;
+ __s2ptptNw_12 += ptpt;
+ __s2PtNNw_12 += pt_1;
+ __s2NPtNw_12 += pt_2;
+
}
- else // swap particles
+ } //i2
+ } //i1
+ }
+ else // field<0
+ {
+ for (int i1=0; i1<k1; i1++)
+ {
+ ////cout << " i1:" << i1 << endl;
+ id_1 = _id_1[i1]; ////cout << " id_1:" << id_1 << endl;
+ q_1 = _charge_1[i1]; ////cout << " q_1:" << q_1 << endl;
+ iEtaPhi_1 = _iEtaPhi_1[i1]; ////cout << " iEtaPhi_1:" << iEtaPhi_1 << endl;
+ iPt_1 = _iPt_1[i1]; ////cout << " iPt_1:" << iPt_1 << endl;
+ corr_1 = _correction_1[i1]; ////cout << " corr_1:" << corr_1 << endl;
+ pt_1 = _pt_1[i1]; ////cout << " pt_1:" << pt_1 << endl;
+ //dedx_1 = _dedx_1[i1]; ////cout << " dedx_1:" << dedx_1 << endl;
+ //1 and 2
+ for (int i2=i1+1; i2<k1; i2++)
+ {
+ ////cout << " i2:" << i2 << endl;
+ id_2 = _id_1[i2]; ////cout << " id_2:" << id_2 << endl;
+ if (id_1!=id_2)
{
- ij = iEtaPhi_2*_nBins_etaPhi_1 + iEtaPhi_1; ////cout << " ij:" << ij<< endl;
+ q_2 = _charge_1[i2]; ////cout << " q_2:" << q_2 << endl;
+ iEtaPhi_2 = _iEtaPhi_1[i2]; ////cout << " iEtaPhi_2:" << iEtaPhi_2 << endl;
+ iPt_2 = _iPt_1[i2]; ////cout << " iPt_2:" << iPt_2 << endl;
+ corr_2 = _correction_1[i2]; ////cout << " corr_2:" << corr_2 << endl;
+ pt_2 = _pt_1[i2]; ////cout << " pt_2:" << pt_2 << endl;
+ //dedx_2 = _dedx_1[i2]; ////cout << " dedx_2:" << dedx_2 << endl;
+ corr = corr_1*corr_2;
+ 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))
+ {
+ ij = iEtaPhi_1*_nBins_etaPhi_1 + iEtaPhi_2; ////cout << " ij:" << ij<< endl;
+ }
+ else // swap particles
+ {
+ ij = iEtaPhi_2*_nBins_etaPhi_1 + iEtaPhi_1; ////cout << " ij:" << ij<< endl;
+ }
+
+ __n2_12 += corr;
+ __n2_12_vsEtaPhi[ij] += corr;
+ ptpt = pt_1*pt_2;
+ __s2ptpt_12 += corr*ptpt;
+ __s2PtN_12 += corr*pt_1;
+ __s2NPt_12 += corr*pt_2;
+ __s2ptpt_12_vsEtaPhi[ij] += corr*ptpt;
+ __s2PtN_12_vsEtaPhi[ij] += corr*pt_1;
+ __s2NPt_12_vsEtaPhi[ij] += corr*pt_2;
+ __n2_12_vsPtPt[iPt_1*_nBins_pt_2 + iPt_2] += corr;
+
+ __n2Nw_12 += 1;
+ __s2ptptNw_12 += ptpt;
+ __s2PtNNw_12 += pt_1;
+ __s2NPtNw_12 += pt_2;
+
}
-
- __n2_12 += corr;
- __n2_12_vsEtaPhi[ij] += corr;
- ptpt = pt_1*pt_2;
- __s2ptpt_12 += corr*ptpt;
- __s2PtN_12 += corr*pt_1;
- __s2NPt_12 += corr*pt_2;
- __s2ptpt_12_vsEtaPhi[ij] += corr*ptpt;
- __s2PtN_12_vsEtaPhi[ij] += corr*pt_1;
- __s2NPt_12_vsEtaPhi[ij] += corr*pt_2;
- __n2_12_vsPtPt[iPt_1*_nBins_pt_2 + iPt_2] += corr;
-
- __n2Nw_12 += 1;
- __s2ptptNw_12 += ptpt;
- __s2PtNNw_12 += pt_1;
- __s2NPtNw_12 += pt_2;
-
- }
- } //i2
- } //i1
+ } //i2
+ } //i1
+ }
}
- else // field<0
+ else // filter 1 and 2 are different -- must do all particle pairs...
{
+ _n1_1_vsM->Fill(centrality, __n1_1);
+ _s1pt_1_vsM->Fill(centrality, __s1pt_1);
+ _n1Nw_1_vsM->Fill(centrality, __n1Nw_1);
+ _s1ptNw_1_vsM->Fill(centrality, __s1ptNw_1);
+ _n1_2_vsM->Fill(centrality, __n1_2);
+ _s1pt_2_vsM->Fill(centrality, __s1pt_2);
+ _n1Nw_2_vsM->Fill(centrality, __n1Nw_2);
+ _s1ptNw_2_vsM->Fill(centrality, __s1ptNw_2);
+ // reset pair counters
+ __n2_12 = __s2ptpt_12 = __s2NPt_12 = __s2PtN_12 = 0;
+ __n2Nw_12 = __s2ptptNw_12 = __s2NPtNw_12 = __s2PtNNw_12 = 0;
for (int i1=0; i1<k1; i1++)
{
////cout << " i1:" << i1 << endl;
iPt_1 = _iPt_1[i1]; ////cout << " iPt_1:" << iPt_1 << endl;
corr_1 = _correction_1[i1]; ////cout << " corr_1:" << corr_1 << endl;
pt_1 = _pt_1[i1]; ////cout << " pt_1:" << pt_1 << endl;
- dedx_1 = _dedx_1[i1]; ////cout << " dedx_1:" << dedx_1 << endl;
- //1 and 2
- for (int i2=i1+1; i2<k1; i2++)
+ px_1 = _px_1[i1]; ////cout << " px_1:" << px_1 << endl;
+ py_1 = _py_1[i1]; ////cout << " py_1:" << py_1 << endl;
+ pz_1 = _pz_1[i1]; ////cout << " pz_1:" << pz_1 << endl;
+ //dedx_1 = _dedx_1[i1]; ////cout << " dedx_1:" << dedx_1 << endl;
+
+ //1 and 2
+ for (int i2=0; i2<k2; i2++)
{
////cout << " i2:" << i2 << endl;
- id_2 = _id_1[i2]; ////cout << " id_2:" << id_2 << endl;
- if (id_1!=id_2)
+ id_2 = _id_2[i2]; ////cout << " id_2:" << id_2 << endl;
+ if (id_1!=id_2) // exclude auto correlation
{
- q_2 = _charge_1[i2]; ////cout << " q_2:" << q_2 << endl;
- iEtaPhi_2 = _iEtaPhi_1[i2]; ////cout << " iEtaPhi_2:" << iEtaPhi_2 << endl;
- iPt_2 = _iPt_1[i2]; ////cout << " iPt_2:" << iPt_2 << endl;
- corr_2 = _correction_1[i2]; ////cout << " corr_2:" << corr_2 << endl;
- pt_2 = _pt_1[i2]; ////cout << " pt_2:" << pt_2 << endl;
- dedx_2 = _dedx_1[i2]; ////cout << " dedx_2:" << dedx_2 << endl;
- corr = corr_1*corr_2;
- 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))
- {
- ij = iEtaPhi_1*_nBins_etaPhi_1 + iEtaPhi_2; ////cout << " ij:" << ij<< endl;
- }
- else // swap particles
- {
- ij = iEtaPhi_2*_nBins_etaPhi_1 + iEtaPhi_1; ////cout << " ij:" << ij<< endl;
- }
+ q_2 = _charge_2[i2]; ////cout << " q_2:" << q_2 << endl;
+ iEtaPhi_2 = _iEtaPhi_2[i2]; ////cout << " iEtaPhi_2:" << iEtaPhi_2 << endl;
+ iPt_2 = _iPt_2[i2]; ////cout << " iPt_2:" << iPt_2 << endl;
+ corr_2 = _correction_2[i2]; ////cout << " corr_2:" << corr_2 << endl;
+ pt_2 = _pt_2[i2]; ////cout << " pt_2:" << pt_2 << endl;
+ px_2 = _px_2[i2]; ////cout << " px_2:" << px_2 << endl;
+ py_2 = _py_2[i2]; ////cout << " py_2:" << py_2 << endl;
+ pz_2 = _pz_2[i2]; ////cout << " pz_2:" << pz_2 << endl;
+ //dedx_2 = _dedx_2[i2]; ////cout << " dedx_2:" << dedx_2 << endl;
+
+ if (_rejectPairConversion)
+ {
+ float e1Sq = massElecSq + pt_1*pt_1 + pz_1*pz_1;
+ float e2Sq = massElecSq + pt_2*pt_2 + pz_2*pz_2;
+ float mInvSq = 2*(massElecSq + sqrt(e1Sq*e2Sq) - px_1*px_2 - py_1*py_2 - pz_1*pz_2 );
+ float mInv = sqrt(mInvSq);
+ _invMass->Fill(mInv);
+ }
+
+ corr = corr_1*corr_2;
+ ij = iEtaPhi_1*_nBins_etaPhi_1 + iEtaPhi_2; ////cout << " ij:" << ij<< endl;
__n2_12 += corr;
__n2_12_vsEtaPhi[ij] += corr;
ptpt = pt_1*pt_2;
__s2ptpt_12_vsEtaPhi[ij] += corr*ptpt;
__s2PtN_12_vsEtaPhi[ij] += corr*pt_1;
__s2NPt_12_vsEtaPhi[ij] += corr*pt_2;
- __n2_12_vsPtPt[iPt_1*_nBins_pt_2 + iPt_2] += corr;
-
+ __n2_12_vsPtPt[iPt_1*_nBins_pt_2 + iPt_2] += corr;
__n2Nw_12 += 1;
__s2ptptNw_12 += ptpt;
__s2PtNNw_12 += pt_1;
}
} //i2
- } //i1
+ } //i1
}
+ _n2_12_vsM->Fill(centrality, __n2_12);
+ _s2PtPt_12_vsM->Fill(centrality, __s2ptpt_12);
+ _s2PtN_12_vsM->Fill(centrality, __s2NPt_12);
+ _s2NPt_12_vsM->Fill(centrality, __s2PtN_12);
+ _n2Nw_12_vsM->Fill(centrality, __n2Nw_12);
+ _s2PtPtNw_12_vsM->Fill(centrality, __s2ptptNw_12);
+ _s2PtNNw_12_vsM->Fill(centrality, __s2NPtNw_12);
+ _s2NPtNw_12_vsM->Fill(centrality, __s2PtNNw_12);
+
}
- else // filter 1 and 2 are different -- must do all particle pairs...
- {
- for (int i1=0; i1<k1; i1++)
- {
- ////cout << " i1:" << i1 << endl;
- id_1 = _id_1[i1]; ////cout << " id_1:" << id_1 << endl;
- q_1 = _charge_1[i1]; ////cout << " q_1:" << q_1 << endl;
- iEtaPhi_1 = _iEtaPhi_1[i1]; ////cout << " iEtaPhi_1:" << iEtaPhi_1 << endl;
- iPt_1 = _iPt_1[i1]; ////cout << " iPt_1:" << iPt_1 << endl;
- corr_1 = _correction_1[i1]; ////cout << " corr_1:" << corr_1 << endl;
- pt_1 = _pt_1[i1]; ////cout << " pt_1:" << pt_1 << endl;
- px_1 = _px_1[i1]; ////cout << " px_1:" << px_1 << endl;
- py_1 = _py_1[i1]; ////cout << " py_1:" << py_1 << endl;
- pz_1 = _pz_1[i1]; ////cout << " pz_1:" << pz_1 << endl;
- dedx_1 = _dedx_1[i1]; ////cout << " dedx_1:" << dedx_1 << endl;
-
- //1 and 2
- for (int i2=0; i2<k2; i2++)
- {
- ////cout << " i2:" << i2 << endl;
- id_2 = _id_2[i2]; ////cout << " id_2:" << id_2 << endl;
- if (id_1!=id_2) // exclude auto correlation
- {
- q_2 = _charge_2[i2]; ////cout << " q_2:" << q_2 << endl;
- iEtaPhi_2 = _iEtaPhi_2[i2]; ////cout << " iEtaPhi_2:" << iEtaPhi_2 << endl;
- iPt_2 = _iPt_2[i2]; ////cout << " iPt_2:" << iPt_2 << endl;
- corr_2 = _correction_2[i2]; ////cout << " corr_2:" << corr_2 << endl;
- pt_2 = _pt_2[i2]; ////cout << " pt_2:" << pt_2 << endl;
- px_2 = _px_2[i2]; ////cout << " px_2:" << px_2 << endl;
- py_2 = _py_2[i2]; ////cout << " py_2:" << py_2 << endl;
- pz_2 = _pz_2[i2]; ////cout << " pz_2:" << pz_2 << endl;
- dedx_2 = _dedx_2[i2]; ////cout << " dedx_2:" << dedx_2 << endl;
- if (_rejectPairConversion)
- {
- float e1Sq = massElecSq + pt_1*pt_1 + pz_1*pz_1;
- float e2Sq = massElecSq + pt_2*pt_2 + pz_2*pz_2;
- float mInvSq = 2*(massElecSq + sqrt(e1Sq*e2Sq) - px_1*px_2 - py_1*py_2 - pz_1*pz_2 );
- float mInv = sqrt(mInvSq);
- _invMass->Fill(mInv);
- if (mInv<0.5)
- {
- if (dedx_1>75. && dedx_2>75.)
- {
- _invMassElec->Fill(mInv);
- if (mInv<0.05) continue;
- }
- }
- }
- corr = corr_1*corr_2;
- ij = iEtaPhi_1*_nBins_etaPhi_1 + iEtaPhi_2; ////cout << " ij:" << ij<< endl;
- __n2_12 += corr;
- __n2_12_vsEtaPhi[ij] += corr;
- ptpt = pt_1*pt_2;
- __s2ptpt_12 += corr*ptpt;
- __s2PtN_12 += corr*pt_1;
- __s2NPt_12 += corr*pt_2;
- __s2ptpt_12_vsEtaPhi[ij] += corr*ptpt;
- __s2PtN_12_vsEtaPhi[ij] += corr*pt_1;
- __s2NPt_12_vsEtaPhi[ij] += corr*pt_2;
- __n2_12_vsPtPt[iPt_1*_nBins_pt_2 + iPt_2] += corr;
- __n2Nw_12 += 1;
- __s2ptptNw_12 += ptpt;
- __s2PtNNw_12 += pt_1;
- __s2NPtNw_12 += pt_2;
-
- }
- } //i2
- } //i1
- }
- ////cout << "_mult4:"<< _mult4 << " __s2ptpt_12:" << __s2ptpt_12 << " __s2PtN_12:" << __s2PtN_12 << endl;
- _n2_12_vsM->Fill(_mult4, __n2_12);
- _s2PtPt_12_vsM->Fill(_mult4, __s2ptpt_12);
- _s2PtN_12_vsM->Fill(_mult4, __s2NPt_12);
- _s2NPt_12_vsM->Fill(_mult4, __s2PtN_12);
- _n2Nw_12_vsM->Fill(_mult4, __n2Nw_12);
- _s2PtPtNw_12_vsM->Fill(_mult4, __s2ptptNw_12);
- _s2PtNNw_12_vsM->Fill(_mult4, __s2NPtNw_12);
- _s2NPtNw_12_vsM->Fill(_mult4, __s2PtNNw_12);
- ////cout << "Event Done " << endl;
+ AliInfo("AliAnalysisTaskDptDptCorrelations::UserExec() -----------------Event Done ");
PostData(0,_outputHistoList);
}
void AliAnalysisTaskDptDptCorrelations::FinishTaskOutput()
{
+ AliInfo("AliAnalysisTaskDptDptCorrelations::FinishTaskOutput() Starting.");
+ Printf("= 0 ====================================================================");
finalizeHistograms();
+ AliInfo("= 1 ====================================================================");
PostData(0,_outputHistoList);
+ AliInfo("= 2 ====================================================================");
+ AliInfo("AliAnalysisTaskDptDptCorrelations::FinishTaskOutput() Done.");
}
-void AliAnalysisTaskDptDptCorrelations::Terminate(Option_t* )
+void AliAnalysisTaskDptDptCorrelations::Terminate(Option_t* /*option*/)
{
-
+ AliInfo("AliAnalysisTaskDptDptCorrelations::Terminate() Starting/Done.");
}
//________________________________________________________________________
-TH1D * AliAnalysisTaskDptDptCorrelations::createHisto(const TString & name, const TString & title,
+TH1D * AliAnalysisTaskDptDptCorrelations::createHisto1D(const TString & name, const TString & title,
int n, double xMin, double xMax,
const TString & xTitle, const TString & yTitle)
{
//________________________________________________________________________
-TH1D * AliAnalysisTaskDptDptCorrelations::createHisto(const TString & name, const TString & title,
+TH1D * AliAnalysisTaskDptDptCorrelations::createHisto1D(const TString & name, const TString & title,
int n, double * bins,
const TString & xTitle, const TString & yTitle)
{
//________________________________________________________________________
-TH2D * AliAnalysisTaskDptDptCorrelations::createHisto(const TString & name, const TString & title,
+TH2D * AliAnalysisTaskDptDptCorrelations::createHisto2D(const TString & name, const TString & title,
int nx, double xMin, double xMax, int ny, double yMin, double yMax,
const TString & xTitle, const TString & yTitle, const TString & zTitle)
{
}
//________________________________________________________________________
-TH2D * AliAnalysisTaskDptDptCorrelations::createHisto(const TString & name, const TString & title,
+TH2D * AliAnalysisTaskDptDptCorrelations::createHisto2D(const TString & name, const TString & title,
int nx, double* xbins, int ny, double yMin, double yMax,
const TString & xTitle, const TString & yTitle, const TString & zTitle)
{
return h;
}
+//// F /////
+//________________________________________________________________________
+TH1F * AliAnalysisTaskDptDptCorrelations::createHisto1F(const TString & name, const TString & title,
+ int n, double xMin, double xMax,
+ const TString & xTitle, const TString & yTitle)
+{
+ //CreateHisto new 1D historgram
+ AliInfo(Form("createHisto 1D histo %s nBins: %d xMin: %f xMax: %f",name.Data(),n,xMin,xMax));
+ TH1F * h = new TH1F(name,title,n,xMin,xMax);
+ h->GetXaxis()->SetTitle(xTitle);
+ h->GetYaxis()->SetTitle(yTitle);
+ addToList(h);
+ return h;
+}
+
+
+//________________________________________________________________________
+TH1F * AliAnalysisTaskDptDptCorrelations::createHisto1F(const TString & name, const TString & title,
+ int n, double * bins,
+ const TString & xTitle, const TString & yTitle)
+{
+ AliInfo(Form("createHisto 1D histo %s with %d non uniform nBins",name.Data(),n));
+ TH1F * h = new TH1F(name,title,n,bins);
+ h->GetXaxis()->SetTitle(xTitle);
+ h->GetYaxis()->SetTitle(yTitle);
+ addToList(h);
+ return h;
+}
+
+
+//________________________________________________________________________
+TH2F * AliAnalysisTaskDptDptCorrelations::createHisto2F(const TString & name, const TString & title,
+ int nx, double xMin, double xMax, int ny, double yMin, double yMax,
+ const TString & xTitle, const TString & yTitle, const TString & zTitle)
+{
+ 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));
+ TH2F * h = new TH2F(name,title,nx,xMin,xMax,ny,yMin,yMax);
+ h->GetXaxis()->SetTitle(xTitle);
+ h->GetYaxis()->SetTitle(yTitle);
+ h->GetZaxis()->SetTitle(zTitle);
+ addToList(h);
+ return h;
+}
+
+//________________________________________________________________________
+TH2F * AliAnalysisTaskDptDptCorrelations::createHisto2F(const TString & name, const TString & title,
+ int nx, double* xbins, int ny, double yMin, double yMax,
+ const TString & xTitle, const TString & yTitle, const TString & zTitle)
+{
+ AliInfo(Form("createHisto 2D histo %s with %d non uniform nBins",name.Data(),nx));
+ TH2F * h;
+ h = new TH2F(name,title,nx,xbins,ny,yMin,yMax);
+ h->GetXaxis()->SetTitle(xTitle);
+ h->GetYaxis()->SetTitle(yTitle);
+ h->GetZaxis()->SetTitle(zTitle);
+ addToList(h);
+ return h;
+}
+
//________________________________________________________________________
-TH3F * AliAnalysisTaskDptDptCorrelations::createHisto(const TString & name, const TString & title,
+TH3F * AliAnalysisTaskDptDptCorrelations::createHisto3F(const TString & name, const TString & title,
int nx, double xMin, double xMax,
int ny, double yMin, double yMax,
int nz, double zMin, double zMax,
_outputHistoList->Add(h);
}
else
- cout << "addToList(TH1 *h) _outputHistoList is null!!!!! Shoudl abort ship" << endl;
+ AliInfo("addToList(TH1 *h) _outputHistoList is null!!!!! Should abort ship");
}