]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/Correlations/DPhi/AliLeadingV0Correlation.h
sorting out the trigger classes
[u/mrichter/AliRoot.git] / PWGCF / Correlations / DPhi / AliLeadingV0Correlation.h
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  *****************************************************************************************/
6
7 #ifndef ALILEADINGV0CORRELATION
8 #define ALILEADINGV0CORRELATION
9
10 #include "AliAnalysisTask.h"
11 #include "TString.h"
12 #include "AliVParticle.h"
13 #include "AliLog.h"
14 #include "AliPID.h"
15 #include "THnSparse.h"
16 #include "TH1.h"
17 #include "TH2.h"
18 #include "TH3.h"
19
20 class TList;
21 class AliAODEvent;
22 class AliEventPoolManager;
23 class AliVParticle;
24 class AliPIDResponse;
25 class AliPID;
26 class AliAODv0;
27 class AliAnalyseLeadingTrackUE;
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;}
61         void SetFilterBit(UInt_t  filterBit){fFilterBit = filterBit;}
62         void SetMCAnalysis(Bool_t aAnalysisMC){fAnalysisMC=aAnalysisMC;}
63         void SetCase(Int_t aCase){fCase=aCase;}
64         void SetRemoveAutoCorr(Bool_t aRemoveAutoCorr){fRemoveAutoCorr=aRemoveAutoCorr;}
65         void SetCutRap(Double_t aRapidityCut){fRapidityCut=aRapidityCut;}
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;}
79         void SetTrigLow(Double_t aTriglow){fTriglow=aTriglow;}
80         void SetTrigHigh(Double_t aTrighigh){fTrighigh=aTrighigh;}
81         void SetTPCClusters(Double_t aTPCClusters){fTPCClusters=aTPCClusters;}
82         void SetTPCFinables(Double_t aTPCfindratio){fTPCfindratio=aTPCfindratio;}
83         
84 private:
85         AliLeadingV0Correlation(const  AliLeadingV0Correlation &det);
86     AliLeadingV0Correlation&   operator=(const  AliLeadingV0Correlation &det);
87         
88         Bool_t IsAcseptedDaughterTrack(const AliAODTrack *itrack);
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);
103         Bool_t IsK0InvMass(const Double_t mass)const;
104         Bool_t IsLambdaInvMass(const Double_t mass) const;
105         Double_t RangePhi(Double_t DPhi);
106         Bool_t IsTrackFromV0(AliAODTrack* track);
107         void FillCorrelationSibling(Double_t MultipOrCent,
108                                                                 TObjArray*triggerArray,TObjArray*selectedV0Array,
109                                                                 TH3F*triggerHist,THnSparse*associateHist);
110         void FillCorrelationMixing(Double_t MultipOrCentMix,Double_t pvxMix,
111                                                            Double_t poolmax,Double_t poolmin,
112                                                            TObjArray*triggerArray,TObjArray*selectedV0Array,
113                                                            TH1F*triggerHist,THnSparse*associateHist);
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
153         Double_t        fTPCClusters;                                   // selection for systamatics
154         Double_t        fTPCfindratio;                                  // selection for systamatics
155         
156         Bool_t          fUseChargeHadrons;                              // Only pi,k,and proton
157         Double_t        fPtMin;                                                 // 0.15 
158         
159         
160         TList       * fOutputList;                                              // Output list
161         
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
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;
180         TH2F            *fHistMCGenLAMXIPLS;
181         TH2F            *fHistMCGenLAMXI;
182         THnSparse   *fHistReconstK0;
183         THnSparse   *fHistReconstLA;
184         THnSparse   *fHistReconstALA;
185         THnSparse   *fHistMCAssoK0;
186         THnSparse   *fHistMCAssoLA;
187         THnSparse   *fHistMCAssoALA;
188         THnSparse   *fHistMCAssoLAXI;
189         THnSparse   *fHistMCAssoALAXiPlus;
190         
191         THnSparse   *fHistReconstSib;
192         THnSparse   *fHistReconstMix;
193         THnSparse   *fHistReconstSibGEN;
194         THnSparse   *fHistReconstMixGEN;
195         THnSparse   *fHistReconstSibASO;
196         THnSparse   *fHistReconstMixASO;
197         THnSparse   *fHistReconstSibFEED;
198         THnSparse   *fHistReconstMixFEED;
199         
200         TH3F        *fHistTriggerSib;
201         TH1F            *fHistTriggerMix;
202         TH3F            *fHistTriggerSibGEN;
203         TH1F            *fHistTriggerMixGEN;
204         TH3F            *fHistTriggerSibASO;
205         TH1F            *fHistTriggerMixASO;
206
207         ClassDef(AliLeadingV0Correlation, 1); 
208 };
209 //---------------------------------------------------------------------------------------
210 class V0Correlationparticle : public AliVParticle
211 {
212 public:
213     V0Correlationparticle(Float_t eta, 
214                                                         Float_t phi, 
215                                                         Float_t pt, 
216                                                         Short_t candidate,
217                                                     Double_t dcapostoP,
218                                                     Double_t dcanegtoP):
219           fEta(eta), 
220           fPhi(phi), 
221           fpT(pt), 
222           fCandidate(candidate),
223           fdcapostoP(dcapostoP),
224           fdcanegtoP(dcanegtoP)
225     {
226     }
227     virtual ~V0Correlationparticle(){}
228         
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;}
251         virtual Double_t DCAPostoP()     const { return fdcapostoP;}
252         virtual Double_t DCANegtoP()     const { return fdcanegtoP;}
253
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
260         Double_t fdcapostoP;
261         Double_t fdcanegtoP;
262         
263         
264     ClassDef( V0Correlationparticle, 1);
265 };
266
267 #endif