]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/STRANGENESS/Correlations/AliAnalysisTaskV0ChCorrelations.h
12d8c365f3ab4c341d1ac9d3172639347f6d1fc1
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / Correlations / AliAnalysisTaskV0ChCorrelations.h
1 /* Copyright(c) 1998-2013, ALICE Experiment at CERN, All rights reserved.  
2  * See cxx source for full Copyright notice  
3  *
4  * AliAnalysisTaskV0ChCorrelations class
5  *
6  * The task selects candidates for K0s, Lambdas and AntiLambdas (trigger particles)
7  * and calculates correlations with charged unidentified particles (associated particles) in phi and eta. 
8  * The task works with AOD events only and containes also mixing for acceptance corrections.
9  * Edited by Marek Bombara, last update January 2013, Marek.Bombara@cern.ch
10  */
11
12 #ifndef ALIANALYSISTASKV0CHCORRELATIONS_H
13 #define ALIANALYSISTASKV0CHCORRELATIONS_H
14
15 class TH1F;
16 class TH1D;
17 class TH2F;
18 class THnSparse;
19 class TList;
20 class AliPIDResponse;
21 class AliEventPoolManager;
22
23 #ifndef ALIANALYSISTASKSE_H
24 #include "AliAnalysisTaskSE.h"
25 #endif
26
27 class AliAnalysisTaskV0ChCorrelations : public AliAnalysisTaskSE {
28 public:
29    AliAnalysisTaskV0ChCorrelations(const char *name = "AliAnalysisTaskV0ChCorrelations");
30    //AliAnalysisTaskV0ChCorrelations(const AliAnalysisTaskV0ChCorrelations&);            //not implemented
31    //AliAnalysisTaskV0ChCorrelations& operator=(const AliAnalysisTaskV0ChCorrelations&); //not implemented 
32    virtual ~AliAnalysisTaskV0ChCorrelations();
33
34    // Setting the global variables
35    void SetAnalysisMC(Bool_t AnalysisMC = kFALSE) {fAnalysisMC = AnalysisMC;}
36    void SetDcaDToPV(Float_t DcaDToPV = 0.5) {fDcaDToPV = DcaDToPV;}
37    void SetDcaV0D(Float_t DcaV0D = 0.1) {fDcaV0D = DcaV0D;}
38
39    // Getting the global variables
40    Float_t GetDcaDToPV() { return fDcaDToPV; }
41    Float_t GetDcaV0D() { return fDcaV0D; }
42
43    virtual void     UserCreateOutputObjects();
44    virtual void     UserExec(Option_t *option);
45    virtual void     Terminate(Option_t *);
46
47    Bool_t IsMyGoodPrimaryTrack(const AliAODTrack* aodtrack);
48    Bool_t IsMyGoodDaughterTrack(const AliAODTrack* aodtrack);
49    Bool_t IsMyGoodV0(const AliAODEvent* aod, const AliAODv0* aodv0, const AliAODTrack* tr1, const AliAODTrack* tr2);
50
51 private:
52
53    AliAnalysisTaskV0ChCorrelations(const AliAnalysisTaskV0ChCorrelations&);            //not implemented
54    AliAnalysisTaskV0ChCorrelations& operator=(const AliAnalysisTaskV0ChCorrelations&); //not implemented 
55
56    Bool_t                  fAnalysisMC; // enable MC study
57    Bool_t          fFillMixed;  // enable event mixing (default: ON)
58    Int_t           fMixingTracks;      // size of track buffer for event mixing
59    AliEventPoolManager*          fPoolMgr;         //! event pool manager
60
61    Float_t         fDcaDToPV;   // DCA of the daughter to primary vertex
62    Float_t         fDcaV0D;     // DCA between daughters
63
64    TList           *fOutput;        // Output list
65    AliPIDResponse  *fPIDResponse;   // PID response
66
67    TH2F            *fHistCentVtx; // centrality vs. z vertex - to see statistics for mixing
68    TH1F            *fHistMultiMain; // multiplicity of main events
69    
70    THnSparseF      *fHistMassK0;       // K0 mass
71    THnSparseF      *fHistMassLambda;     // Lambda mass
72    THnSparseF      *fHistMassAntiLambda;   // AntiLambda mass
73    
74    THnSparseF      *fHistdPhidEtaSib;   // dPhi vs. dEta, same event
75    THnSparseF      *fHistdPhidEtaMix;   // dPhi vs. dEta, mixed events
76    THnSparseF      *fHistTrigSib;   // pt of trigger particles, same event
77    THnSparseF      *fHistTrigMix;   // pt of trigger particles involved in mixing
78
79    THnSparseF      *fHistMCPtCentTrig;   // pt vs. centrality of MC trigger particles
80    THnSparseF      *fHistRCPtCentTrig;   // pt vs. centrality of reconstructed trigger particles
81    TH2D            *fHistMCPtCentAs;   // pt vs. centrality of MC associated particles
82    TH2D            *fHistRCPtCentAs;   // pt vs. centrality of reconstructed associated particles
83    
84    TH1D                    *fHistTemp;   // temporary histogram for debugging
85    TH1D                    *fHistTemp2;   // temporary histogram for debugging
86
87    ClassDef(AliAnalysisTaskV0ChCorrelations, 1); // class for V0Ch correlation analysis
88 };
89
90 /*  AliV0ChBasicParticle class contains only quantities 
91  *      required for the analysis in order to reduce memory consumption for event mixing.
92  */
93 class AliV0ChBasicParticle : public AliVParticle
94 {
95   public:
96     AliV0ChBasicParticle(Float_t eta, Float_t phi, Float_t pt, Short_t candidate)
97       : fEta(eta), fPhi(phi), fpT(pt), fCandidate(candidate)
98     {
99     }
100     virtual ~AliV0ChBasicParticle() {}
101
102     // kinematics
103     virtual Double_t Px() const { AliFatal("Not implemented"); return 0; }
104     virtual Double_t Py() const { AliFatal("Not implemented"); return 0; }
105     virtual Double_t Pz() const { AliFatal("Not implemented"); return 0; }
106     virtual Double_t Pt() const { return fpT; }
107     virtual Double_t P() const { AliFatal("Not implemented"); return 0; }
108     virtual Bool_t   PxPyPz(Double_t[3]) const { AliFatal("Not implemented"); return 0; }
109
110     virtual Double_t Xv() const { AliFatal("Not implemented"); return 0; }
111     virtual Double_t Yv() const { AliFatal("Not implemented"); return 0; }
112     virtual Double_t Zv() const { AliFatal("Not implemented"); return 0; }
113     virtual Bool_t   XvYvZv(Double_t[3]) const { AliFatal("Not implemented"); return 0; }
114
115     virtual Double_t OneOverPt()  const { AliFatal("Not implemented"); return 0; }
116     virtual Double_t Phi()        const { return fPhi; }
117     virtual Double_t Theta()      const { AliFatal("Not implemented"); return 0; }
118
119
120     virtual Double_t E()          const { AliFatal("Not implemented"); return 0; }
121     virtual Double_t M()          const { AliFatal("Not implemented"); return 0; }
122
123     virtual Double_t Eta()        const { return fEta; }
124     virtual Double_t Y()          const { AliFatal("Not implemented"); return 0; }
125
126     virtual Short_t Charge()      const { AliFatal("Not implemented"); return 0; }
127     virtual Int_t   GetLabel()    const { AliFatal("Not implemented"); return 0; }
128     // PID
129     virtual Int_t   PdgCode()     const { AliFatal("Not implemented"); return 0; }
130     virtual const Double_t *PID() const { AliFatal("Not implemented"); return 0; }
131
132     virtual Short_t WhichCandidate()      const { return fCandidate; }
133
134   private:
135     Float_t fEta;      // eta
136     Float_t fPhi;      // phi
137     Float_t fpT;       // pT
138     Short_t fCandidate;   // V0 candidate: 1 - K0sig, 2 - Lamsig, 3 - Alamsig, 4 - K0bg, 5 - Lambg, 6 - Alambg
139
140     ClassDef( AliV0ChBasicParticle, 1); // class required for event mixing
141 };
142
143 #endif
144