]>
Commit | Line | Data |
---|---|---|
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 | |
20 | class TList; | |
ff0805a7 | 21 | class AliAODEvent; |
22 | class AliEventPoolManager; | |
ff0805a7 | 23 | class AliVParticle; |
24 | class AliPIDResponse; | |
25 | class AliPID; | |
26 | class AliAODv0; | |
da6ac661 | 27 | class AliAnalyseLeadingTrackUE; |
ff0805a7 | 28 | |
29 | ||
30 | #ifndef ALIANALYSISTASKSEH | |
31 | #include "AliAnalysisTaskSE.h" | |
32 | #endif | |
33 | ||
34 | //--------------------------------------------------------------------------------------- | |
35 | class AliLeadingV0Correlation : public AliAnalysisTaskSE { | |
36 | public: | |
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 | |
84 | private: | |
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 | 210 | class V0Correlationparticle : public AliVParticle |
ff0805a7 | 211 | { |
da6ac661 | 212 | public: |
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 | |
255 | private: | |
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 |