]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/Correlations/DPhi/AliLeadingV0Correlation.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / Correlations / DPhi / AliLeadingV0Correlation.h
CommitLineData
9bcef488 1/* Leading Charged Track+V0 Correlation.(Works for Real,Monte Carlo Data)
2 * Sandun Jayarathna
3 * University of Houston
4 * sandun.pahula.hewage@cern.ch
5 *****************************************************************************************/
ff0805a7 6
33971f6b 7#ifndef ALILEADINGV0CORRELATION
8#define ALILEADINGV0CORRELATION
ff0805a7 9
10#include "AliAnalysisTask.h"
ff0805a7 11#include "TString.h"
12#include "AliVParticle.h"
13#include "AliLog.h"
14#include "AliPID.h"
da6ac661 15#include "THnSparse.h"
5b607771 16#include "TH1.h"
33971f6b 17#include "TH2.h"
746a34ad 18#include "TH3.h"
ff0805a7 19
20class TList;
ff0805a7 21class AliAODEvent;
22class AliEventPoolManager;
ff0805a7 23class AliVParticle;
24class AliPIDResponse;
25class AliPID;
26class AliAODv0;
da6ac661 27class AliAnalyseLeadingTrackUE;
ff0805a7 28
29
30#ifndef ALIANALYSISTASKSEH
31#include "AliAnalysisTaskSE.h"
32#endif
33
34//---------------------------------------------------------------------------------------
35class AliLeadingV0Correlation : public AliAnalysisTaskSE {
36public:
37 AliLeadingV0Correlation();
38 AliLeadingV0Correlation(const char *name);
39 virtual ~AliLeadingV0Correlation();
40
41 virtual void UserCreateOutputObjects();
42 virtual void UserExec(Option_t *option);
43 virtual void Terminate(Option_t *);
44
45 void SetMaxNEventsInPool(Int_t events){fPoolMaxNEvents=events;}
46 void SetMinNTracksInPool(Int_t tracks){fPoolMinNTracks=tracks;}
47 void SetMinEventsToMix(Int_t events){fMinEventsToMix=events;}
48
49 void SetPoolPVzBinLimits(Int_t Nzvtxbins,const Double_t *ZvtxBins){
50 fNzVtxBins = Nzvtxbins;
51 for(int ix = 0;ix<fNzVtxBins+1;ix++){fZvtxBins[ix] = ZvtxBins[ix];}
52 }
53
54 void SetPoolCentBinLimits(Int_t Ncentbins,const Double_t *CentBins){
55 fNCentBins = Ncentbins;
56 for(int ix = 0;ix<fNCentBins+1;ix++){fCentBins[ix] = CentBins[ix];}
57 }
58
59 void SetCollidingSystem(TString system){fcollidingSys = system;}
60 void SetPrimeryVertexCut(Double_t pvzcut){fpvzcut = pvzcut;}
ff0805a7 61 void SetFilterBit(UInt_t filterBit){fFilterBit = filterBit;}
ff0805a7 62 void SetMCAnalysis(Bool_t aAnalysisMC){fAnalysisMC=aAnalysisMC;}
da6ac661 63 void SetCase(Int_t aCase){fCase=aCase;}
da6ac661 64 void SetRemoveAutoCorr(Bool_t aRemoveAutoCorr){fRemoveAutoCorr=aRemoveAutoCorr;}
9bcef488 65 void SetCutRap(Double_t aRapidityCut){fRapidityCut=aRapidityCut;}
da6ac661 66 void SetV0Radius(Double_t aV0radius){fV0radius=aV0radius;}
67 void SetV0PostoPVz(Double_t aV0PostoPVz){fV0PostoPVz=aV0PostoPVz;}
68 void SetV0NegtoPVz(Double_t aV0NegtoPVz){fV0NegtoPVz=aV0NegtoPVz;}
69 void SetDCAV0Daughters(Double_t aDCAV0Daughters){fDCAV0Daughters=aDCAV0Daughters;}
70 void SetCPAK0(Double_t aCPAK0){fCPAK0=aCPAK0;}
71 void SetCPALam(Double_t aCPALam){fCPALam=aCPALam;}
72 void SetRejectLamK0(Double_t aRejectLamK0){fRejectLamK0=aRejectLamK0;}
73 void SetRejectK0Lam(Double_t aRejectK0Lam){fRejectK0Lam=aRejectK0Lam;}
74 void SetSigmaPID(Double_t aSigmaPID){fSigmaPID=aSigmaPID;}
75 void SetCTK0(Double_t aCutCTK0){fCutCTK0=aCutCTK0;}
76 void SetCTLa(Double_t aCutCTLa){fCutCTLa=aCutCTLa;}
77 void SetMassCutK0(Double_t aMassCutK0){fMassCutK0=aMassCutK0;}
78 void SetMassCutLa(Double_t aMassCutLambda){fMassCutLa=aMassCutLambda;}
5b607771 79 void SetTrigLow(Double_t aTriglow){fTriglow=aTriglow;}
80 void SetTrigHigh(Double_t aTrighigh){fTrighigh=aTrighigh;}
a8a50f30 81 void SetTPCClusters(Double_t aTPCClusters){fTPCClusters=aTPCClusters;}
82 void SetTPCFinables(Double_t aTPCfindratio){fTPCfindratio=aTPCfindratio;}
ff0805a7 83
84private:
9bcef488 85 AliLeadingV0Correlation(const AliLeadingV0Correlation &det);
86 AliLeadingV0Correlation& operator=(const AliLeadingV0Correlation &det);
87
ff0805a7 88 Bool_t IsAcseptedDaughterTrack(const AliAODTrack *itrack);
da6ac661 89 Bool_t IsAcseptedV0(const AliAODv0* aodV0, const AliAODTrack* myTrackPos, const AliAODTrack* myTrackNeg);
90 Bool_t IsAcseptedK0(Double_t v0rad,
91 Double_t dcaptp,
92 Double_t dcantp,
93 Double_t dcav0d,
94 Double_t cpa,
95 Double_t massLa,
96 Double_t massALa);
97 Bool_t IsAcseptedLA(Double_t v0rad,
98 Double_t dcaptp,
99 Double_t dcantp,
100 Double_t dcav0d,
101 Double_t cpa,
102 Double_t massK0);
ff0805a7 103 Bool_t IsK0InvMass(const Double_t mass)const;
104 Bool_t IsLambdaInvMass(const Double_t mass) const;
da6ac661 105 Double_t RangePhi(Double_t DPhi);
106 Bool_t IsTrackFromV0(AliAODTrack* track);
107 void FillCorrelationSibling(Double_t MultipOrCent,
108 TObjArray*triggerArray,TObjArray*selectedV0Array,
746a34ad 109 TH3F*triggerHist,THnSparse*associateHist);
da6ac661 110 void FillCorrelationMixing(Double_t MultipOrCentMix,Double_t pvxMix,
111 Double_t poolmax,Double_t poolmin,
112 TObjArray*triggerArray,TObjArray*selectedV0Array,
9dbaebd5 113 TH1F*triggerHist,THnSparse*associateHist);
33971f6b 114
115 AliAODEvent * fAODEvent; // AOD Event
116 AliEventPoolManager * fPoolMgr; // event pool manager for Event Mixing
117 AliPIDResponse * fPIDResponse; // PID response
118 AliAnalyseLeadingTrackUE * fAnalyseUE; // Leading Track Underling Event
119
120 Int_t fPoolMaxNEvents; // set maximum number of events in the pool
121 Int_t fPoolMinNTracks; // set minimum number of tracks in the pool
122 Int_t fMinEventsToMix; // set the minimum number of events want to mix
123 Int_t fNzVtxBins; // number of z vrtx bins
124 Double_t fZvtxBins[100]; // [fNzVtxBinsDim]
125 Int_t fNCentBins; // number of centrality bins
126 Double_t fCentBins[100]; // [fNCentBinsDim]
127
128 TString fcollidingSys; // "PP" or "PbPb"
129 Double_t fpvzcut; // PVz cut of event
130 Double_t fTrackEtaCut; // Eta cut on particles
131 UInt_t fFilterBit; // Select tracks from an specific track cut (default 0xFF all track selected)
132 Bool_t fAnalysisMC; // MC or Not
133 Int_t fCase; // Case number
134 Bool_t fRemoveAutoCorr; // 1Remove or 0 Not Remove
135
136 Double_t fRapidityCut; // Rapidity cut V0
137 Double_t fV0radius; // Topological selection for systamatics
138 Double_t fV0PostoPVz; // Topological selection for systamatics
139 Double_t fV0NegtoPVz; // Topological selection for systamatics
140 Double_t fDCAV0Daughters; // Topological selection for systamatics
141 Double_t fCPAK0; // Topological selection for systamatics
142 Double_t fCPALam; // Topological selection for systamatics
143 Double_t fRejectLamK0; // selection for systamatics
144 Double_t fRejectK0Lam; // selection for systamatics
145 Double_t fSigmaPID; // selection for systamatics
146 Double_t fCutCTK0; // selection for systamatics
147 Double_t fCutCTLa; // selection for systamatics
148
149 Double_t fMassCutK0; // selection for systamatics
150 Double_t fMassCutLa; // selection for systamatics
151 Double_t fTriglow; // selection for systamatics
152 Double_t fTrighigh; // selection for systamatics
a8a50f30 153 Double_t fTPCClusters; // selection for systamatics
154 Double_t fTPCfindratio; // selection for systamatics
33971f6b 155
156 Bool_t fUseChargeHadrons; // Only pi,k,and proton
157 Double_t fPtMin; // 0.15
158
159
160 TList * fOutputList; // Output list
161
a8a50f30 162 TH2F *fHist_Mult_B4_Trg_Sel; //! multiplicity distribution
163 TH2F *fHist_Mult_Af_Trg_Sel; //! multiplicity distribution
164 TH2F *fHist_Mult_PVz_Cut; //! multiplicity distribution
165 TH2F *fHist_Mult_SPD_PVz; //! multiplicity distribution
166 TH2F *fHist_Mult_SPD_PVz_Pileup; //! multiplicity distribution
33971f6b 167
168 TH1F *fHistPVx; //! multiplicity distribution
169 TH1F *fHistPVy; //! multiplicity distribution
170 TH1F *fHistPVz; //! multiplicity distribution
171 TH1F *fHistPVxAnalysis; //! multiplicity distribution
172 TH1F *fHistPVyAnalysis; //! multiplicity distribution
173 TH1F *fHistPVzAnalysis; //! multiplicity distribution
174
175 TH2F *fHistEventViceGen;
176 TH2F *fHistEventViceReconst;
177 TH2F *fHistMCGenK0;
178 TH2F *fHistMCGenLAM;
179 TH2F *fHistMCGenALAM;
9dbaebd5 180 TH2F *fHistMCGenLAMXIPLS;
181 TH2F *fHistMCGenLAMXI;
a8a50f30 182 THnSparse *fHistReconstK0;
183 THnSparse *fHistReconstLA;
184 THnSparse *fHistReconstALA;
185 THnSparse *fHistMCAssoK0;
186 THnSparse *fHistMCAssoLA;
187 THnSparse *fHistMCAssoALA;
9dbaebd5 188 THnSparse *fHistMCAssoLAXI;
189 THnSparse *fHistMCAssoALAXiPlus;
ff0805a7 190
da6ac661 191 THnSparse *fHistReconstSib;
192 THnSparse *fHistReconstMix;
33971f6b 193 THnSparse *fHistReconstSibGEN;
194 THnSparse *fHistReconstMixGEN;
195 THnSparse *fHistReconstSibASO;
196 THnSparse *fHistReconstMixASO;
a8a50f30 197 THnSparse *fHistReconstSibFEED;
198 THnSparse *fHistReconstMixFEED;
33971f6b 199
746a34ad 200 TH3F *fHistTriggerSib;
9dbaebd5 201 TH1F *fHistTriggerMix;
746a34ad 202 TH3F *fHistTriggerSibGEN;
9dbaebd5 203 TH1F *fHistTriggerMixGEN;
746a34ad 204 TH3F *fHistTriggerSibASO;
9dbaebd5 205 TH1F *fHistTriggerMixASO;
da6ac661 206
ff0805a7 207 ClassDef(AliLeadingV0Correlation, 1);
208};
209//---------------------------------------------------------------------------------------
da6ac661 210class V0Correlationparticle : public AliVParticle
ff0805a7 211{
da6ac661 212public:
213 V0Correlationparticle(Float_t eta,
214 Float_t phi,
215 Float_t pt,
33971f6b 216 Short_t candidate,
9dbaebd5 217 Double_t dcapostoP,
218 Double_t dcanegtoP):
da6ac661 219 fEta(eta),
220 fPhi(phi),
221 fpT(pt),
33971f6b 222 fCandidate(candidate),
9dbaebd5 223 fdcapostoP(dcapostoP),
224 fdcanegtoP(dcanegtoP)
ff0805a7 225 {
226 }
da6ac661 227 virtual ~V0Correlationparticle(){}
ff0805a7 228
da6ac661 229 virtual Double_t Px() const { AliFatal("Not implemented"); return 0;}
230 virtual Double_t Py() const { AliFatal("Not implemented"); return 0;}
231 virtual Double_t Pz() const { AliFatal("Not implemented"); return 0;}
232 virtual Double_t Pt() const { return fpT;}
233 virtual Double_t P() const { AliFatal("Not implemented"); return 0;}
234 virtual Bool_t PxPyPz(Double_t[3]) const { AliFatal("Not implemented"); return 0;}
235 virtual Double_t Xv() const { AliFatal("Not implemented"); return 0;}
236 virtual Double_t Yv() const { AliFatal("Not implemented"); return 0;}
237 virtual Double_t Zv() const { AliFatal("Not implemented"); return 0;}
238 virtual Bool_t XvYvZv(Double_t[3]) const { AliFatal("Not implemented"); return 0;}
239 virtual Double_t OneOverPt() const { AliFatal("Not implemented"); return 0;}
240 virtual Double_t Phi() const { return fPhi;}
241 virtual Double_t Theta() const { AliFatal("Not implemented"); return 0;}
242 virtual Double_t E() const { AliFatal("Not implemented"); return 0;}
243 virtual Double_t M() const { AliFatal("Not implemented"); return 0;}
244 virtual Double_t Eta() const { return fEta;}
245 virtual Double_t Y() const { AliFatal("Not implemented"); return 0;}
246 virtual Short_t Charge() const { AliFatal("Not implemented"); return 0;}
247 virtual Int_t GetLabel() const { AliFatal("Not implemented"); return 0;}
248 virtual Int_t PdgCode() const { AliFatal("Not implemented"); return 0;}
249 virtual const Double_t *PID() const { AliFatal("Not implemented"); return 0;}
250 virtual Short_t WhichCandidate() const { return fCandidate;}
9dbaebd5 251 virtual Double_t DCAPostoP() const { return fdcapostoP;}
252 virtual Double_t DCANegtoP() const { return fdcanegtoP;}
ff0805a7 253
da6ac661 254
255private:
256 Float_t fEta; // Eta
257 Float_t fPhi; // Phi
258 Float_t fpT; // pT
259 Short_t fCandidate; // 1-K0,2-Lam,3-Alam
9dbaebd5 260 Double_t fdcapostoP;
261 Double_t fdcanegtoP;
da6ac661 262
263
264 ClassDef( V0Correlationparticle, 1);
ff0805a7 265};
266
5b607771 267#endif