]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/Correlations/DPhi/AliLeadingV0Correlation.h
Corrected end-of-line behavior
[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 ALILEADINGV0CORRELATIONH
8 #define ALILEADINGV0CORRELATIONH
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
17 class TList;
18 class AliAODEvent;
19 class AliEventPoolManager;
20 class AliVParticle;
21 class AliPIDResponse;
22 class AliPID;
23 class AliAODv0;
24 class AliAnalyseLeadingTrackUE;
25
26
27 #ifndef ALIANALYSISTASKSEH
28 #include "AliAnalysisTaskSE.h"
29 #endif
30
31 //---------------------------------------------------------------------------------------
32 class AliLeadingV0Correlation : public AliAnalysisTaskSE {
33 public:
34    AliLeadingV0Correlation();
35    AliLeadingV0Correlation(const char *name);
36    virtual ~AliLeadingV0Correlation();
37
38    virtual void     UserCreateOutputObjects();
39    virtual void     UserExec(Option_t *option);
40    virtual void     Terminate(Option_t *);
41         
42         void SetMaxNEventsInPool(Int_t events){fPoolMaxNEvents=events;}
43         void SetMinNTracksInPool(Int_t tracks){fPoolMinNTracks=tracks;}
44         void SetMinEventsToMix(Int_t events){fMinEventsToMix=events;}
45
46         void SetPoolPVzBinLimits(Int_t Nzvtxbins,const Double_t *ZvtxBins){
47                 fNzVtxBins = Nzvtxbins;
48                 for(int ix = 0;ix<fNzVtxBins+1;ix++){fZvtxBins[ix] = ZvtxBins[ix];}
49         }
50         
51         void SetPoolCentBinLimits(Int_t Ncentbins,const Double_t *CentBins){
52                 fNCentBins = Ncentbins;
53                 for(int ix = 0;ix<fNCentBins+1;ix++){fCentBins[ix] = CentBins[ix];}
54         }
55         
56         void SetCollidingSystem(TString system){fcollidingSys = system;}
57         void SetTriggerType(TString triggertype){ftriggertype = triggertype;}
58         void SetPrimeryVertexCut(Double_t pvzcut){fpvzcut = pvzcut;}
59         void SetEatCut(Double_t  TrackEtaCut){fTrackEtaCut = TrackEtaCut;}
60         void SetFilterBit(UInt_t  filterBit){fFilterBit = filterBit;}
61         void SetMCAnalysis(Bool_t aAnalysisMC){fAnalysisMC=aAnalysisMC;}
62         void SetCase(Int_t aCase){fCase=aCase;}
63         void SetRemovePileUp(Bool_t aRemovePileUP){fRemovePileUP=aRemovePileUP;}
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         
80 private:
81         AliLeadingV0Correlation(const  AliLeadingV0Correlation &det);
82     AliLeadingV0Correlation&   operator=(const  AliLeadingV0Correlation &det);
83         
84         Bool_t IsAcseptedDaughterTrack(const AliAODTrack *itrack);
85         Bool_t IsAcseptedV0(const AliAODv0* aodV0, const AliAODTrack* myTrackPos, const AliAODTrack* myTrackNeg);
86         Bool_t IsAcseptedK0(Double_t v0rad,
87                                                 Double_t dcaptp,
88                                                 Double_t dcantp,
89                                                 Double_t dcav0d,
90                                                 Double_t cpa,
91                                                 Double_t massLa,
92                                                 Double_t massALa);
93         Bool_t IsAcseptedLA(Double_t v0rad,
94                                                 Double_t dcaptp,
95                                                 Double_t dcantp,
96                                                 Double_t dcav0d,
97                                                 Double_t cpa,
98                                                 Double_t massK0);
99         Bool_t IsK0InvMass(const Double_t mass)const;
100         Bool_t IsLambdaInvMass(const Double_t mass) const;
101         Double_t RangePhi(Double_t DPhi);
102         Bool_t IsTrackFromV0(AliAODTrack* track);
103         void FillCorrelationSibling(Double_t MultipOrCent,
104                                                                 TObjArray*triggerArray,TObjArray*selectedV0Array,
105                                                                 THnSparse*triggerHist,THnSparse*associateHist);
106         void FillCorrelationMixing(Double_t MultipOrCentMix,Double_t pvxMix,
107                                                            Double_t poolmax,Double_t poolmin,
108                                                            TObjArray*triggerArray,TObjArray*selectedV0Array,
109                                                            THnSparse*triggerHist,THnSparse*associateHist);
110         Bool_t IsFeedDownV0(UInt_t lIdxPosV0,
111                                   UInt_t lIdxNegV0,
112                                   Double_t lInvMassXiMinus,
113                                   Double_t lInvMassXiPlus,
114                                   TH1F*HistXiMinus);
115         
116         AliAODEvent              * fAODEvent;        //  AOD Event
117         AliEventPoolManager      * fPoolMgr;         //  event pool manager for Event Mixing
118         AliPIDResponse           * fPIDResponse;     //  PID response
119         AliAnalyseLeadingTrackUE * fAnalyseUE;       //  Leading Track Underling Event
120         
121         Int_t fPoolMaxNEvents;                       // set maximum number of events in the pool
122         Int_t fPoolMinNTracks;                       // set minimum number of tracks in the pool
123         Int_t fMinEventsToMix;                       // set the minimum number of events want to mix
124         Int_t fNzVtxBins;                            // number of z vrtx bins
125         Double_t fZvtxBins[100];                     // [fNzVtxBinsDim]
126         Int_t fNCentBins;                            // number of centrality bins
127         Double_t fCentBins[100];                     // [fNCentBinsDim]
128         
129         TString         fcollidingSys;               // "PP" or "PbPb"
130         TString         ftriggertype;                // "Leading" or "Alltrigs"
131         Double_t        fpvzcut;                     // PVz cut of event
132     Double_t            fTrackEtaCut;                // Eta cut on particles
133     UInt_t              fFilterBit;                  // Select tracks from an specific track cut (default 0xFF all track selected)
134         Bool_t          fAnalysisMC;                 // MC or Not
135         Int_t           fCase;                       // Case number
136         Bool_t          fRemovePileUP;               // 1Remove or 0 Not Remove
137         Bool_t          fRemoveAutoCorr;             // 1Remove or 0 Not Remove
138         
139         Double_t        fRapidityCut;                // Rapidity cut V0
140         Double_t        fV0radius;                   // Topological selection for systamatics
141         Double_t        fV0PostoPVz;                 // Topological selection for systamatics
142         Double_t        fV0NegtoPVz;                 // Topological selection for systamatics
143         Double_t        fDCAV0Daughters;             // Topological selection for systamatics
144         Double_t        fCPAK0;                      // Topological selection for systamatics
145         Double_t        fCPALam;                     // Topological selection for systamatics
146         Double_t        fRejectLamK0;                // selection for systamatics
147         Double_t        fRejectK0Lam;                // selection for systamatics
148         Double_t        fSigmaPID;                   // selection for systamatics
149         Double_t        fCutCTK0;                    // selection for systamatics
150         Double_t        fCutCTLa;                    // selection for systamatics
151         
152         Double_t        fMassCutK0;                  // selection for systamatics
153         Double_t        fMassCutLa;                  // selection for systamatics
154         
155         Bool_t          fUseChargeHadrons;           // Only pi,k,and proton
156         Double_t        fPtMin;                      // 0.15 
157         
158         
159         TList       * fOutputList;                   // Output list
160         
161         THnSparse   *fHistEventViceGen;
162         THnSparse   *fHistEventViceReconst;
163         THnSparse       *fHistMCGenK0;
164         THnSparse       *fHistMCGenLAM;
165         THnSparse       *fHistMCGenALAM;
166         THnSparse       *fHistReconstK0;
167         THnSparse       *fHistReconstLA;
168         THnSparse       *fHistReconstALA;
169         THnSparse       *fHistMCAssoK0;
170         THnSparse       *fHistMCAssoLA;
171         THnSparse       *fHistMCAssoALA;
172         
173         THnSparse   *fHistReconstSib;
174         THnSparse   *fHistReconstMix;
175         THnSparse   *fHistReconstSibMC;
176         THnSparse   *fHistReconstMixMC;
177         THnSparse   *fHistReconstSibMCAssoc;
178         THnSparse   *fHistReconstMixMCAssoc;
179         THnSparse   *fHistTriggerSib;
180         THnSparse   *fHistTriggerMix;
181         THnSparse   *fHistTriggerSibMC;
182         THnSparse   *fHistTriggerMixMC;
183
184         ClassDef(AliLeadingV0Correlation, 1); 
185 };
186 //---------------------------------------------------------------------------------------
187 class V0Correlationparticle : public AliVParticle
188 {
189 public:
190     V0Correlationparticle(Float_t eta, 
191                                                         Float_t phi, 
192                                                         Float_t pt, 
193                                                         Short_t candidate):
194           fEta(eta), 
195           fPhi(phi), 
196           fpT(pt), 
197           fCandidate(candidate)
198     {
199     }
200     virtual ~V0Correlationparticle(){}
201         
202     virtual Double_t Px()                 const { AliFatal("Not implemented"); return 0;}
203     virtual Double_t Py()                 const { AliFatal("Not implemented"); return 0;}
204     virtual Double_t Pz()                 const { AliFatal("Not implemented"); return 0;}
205     virtual Double_t Pt()                 const { return fpT;}
206     virtual Double_t P()                  const { AliFatal("Not implemented"); return 0;}
207     virtual Bool_t   PxPyPz(Double_t[3])  const { AliFatal("Not implemented"); return 0;}
208     virtual Double_t Xv()                 const { AliFatal("Not implemented"); return 0;}
209     virtual Double_t Yv()                 const { AliFatal("Not implemented"); return 0;}
210     virtual Double_t Zv()                 const { AliFatal("Not implemented"); return 0;}
211     virtual Bool_t   XvYvZv(Double_t[3])  const { AliFatal("Not implemented"); return 0;}
212     virtual Double_t OneOverPt()          const { AliFatal("Not implemented"); return 0;}
213     virtual Double_t Phi()                const { return fPhi;}
214     virtual Double_t Theta()              const { AliFatal("Not implemented"); return 0;}
215     virtual Double_t E()                  const { AliFatal("Not implemented"); return 0;}
216     virtual Double_t M()                  const { AliFatal("Not implemented"); return 0;}
217     virtual Double_t Eta()                const { return fEta;}
218     virtual Double_t Y()                  const { AliFatal("Not implemented"); return 0;}
219     virtual Short_t  Charge()             const { AliFatal("Not implemented"); return 0;}
220     virtual Int_t    GetLabel()           const { AliFatal("Not implemented"); return 0;}
221     virtual Int_t    PdgCode()            const { AliFatal("Not implemented"); return 0;}
222     virtual const    Double_t *PID()      const { AliFatal("Not implemented"); return 0;}
223     virtual Short_t  WhichCandidate()     const { return fCandidate;}
224
225         
226 private:
227     Float_t  fEta;            // Eta
228     Float_t  fPhi;            // Phi
229     Float_t  fpT;             // pT
230     Short_t  fCandidate;      // 1-K0,2-Lam,3-Alam
231         
232         
233     ClassDef( V0Correlationparticle, 1);
234 };
235
236 #endif