]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/STRANGENESS/Correlations/AliAnalysisTaskV0ChCorrelations.h
Marek: first commit test of V0Ch correlations task
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / Correlations / AliAnalysisTaskV0ChCorrelations.h
1 /* Copyright(c) 1998-2012, 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 October2012, 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();
30    AliAnalysisTaskV0ChCorrelations(const char *name);
31    virtual ~AliAnalysisTaskV0ChCorrelations();
32
33    virtual void     UserCreateOutputObjects();
34    virtual void     UserExec(Option_t *option);
35    virtual void     Terminate(Option_t *);
36
37    Bool_t IsMyGoodPrimaryTrack(const AliAODTrack* aodtrack);
38    Bool_t IsMyGoodDaughterTrack(const AliAODTrack* aodtrack);
39    Bool_t IsMyGoodV0(const AliAODEvent* aod, const AliAODv0* aodv0, const AliAODTrack* tr1, const AliAODTrack* tr2);
40
41 private:
42    Bool_t          fFillMixed;  // enable event mixing (default: ON)
43    Int_t           fMixingTracks;      // size of track buffer for event mixing
44    AliEventPoolManager*          fPoolMgr;         //! event pool manager
45
46    TList           *fOutput;        // Output list
47    AliPIDResponse  *fPIDResponse;   // PID response
48
49    TH2F            *fHistCentVtx; // centrality vs. z vertex - to see statistics for mixing
50    TH1F            *fHistMultiMain; // multiplicity of main events
51    
52    THnSparseF      *fHistMassK0;       // K0 mass
53    THnSparseF      *fHistMassLambda;     // Lambda mass
54    THnSparseF      *fHistMassAntiLambda;   // AntiLambda mass
55    
56    THnSparseF      *fHistdPhidEtaSib;   // dPhi vs. dEta, same event
57    THnSparseF      *fHistdPhidEtaMix;   // dPhi vs. dEta, mixed events
58    THnSparseF      *fHistTrigSib;   // pt of trigger particles, same event
59    THnSparseF      *fHistTrigMix;   // pt of trigger particles involved in mixing
60
61    TH1D                    *fHistTemp;   // temporary histogram for debugging
62
63    ClassDef(AliAnalysisTaskV0ChCorrelations, 1); // class for V0Ch correlation analysis
64 };
65
66 /*  AliV0ChBasicParticle class contains only quantities 
67  *      required for the analysis in order to reduce memory consumption for event mixing.
68  */
69 class AliV0ChBasicParticle : public AliVParticle
70 {
71   public:
72     AliV0ChBasicParticle(Float_t eta, Float_t phi, Float_t pt, Short_t candidate)
73       : fEta(eta), fPhi(phi), fpT(pt), fCandidate(candidate)
74     {
75     }
76     virtual ~AliV0ChBasicParticle() {}
77
78     // kinematics
79     virtual Double_t Px() const { AliFatal("Not implemented"); return 0; }
80     virtual Double_t Py() const { AliFatal("Not implemented"); return 0; }
81     virtual Double_t Pz() const { AliFatal("Not implemented"); return 0; }
82     virtual Double_t Pt() const { return fpT; }
83     virtual Double_t P() const { AliFatal("Not implemented"); return 0; }
84     virtual Bool_t   PxPyPz(Double_t[3]) const { AliFatal("Not implemented"); return 0; }
85
86     virtual Double_t Xv() const { AliFatal("Not implemented"); return 0; }
87     virtual Double_t Yv() const { AliFatal("Not implemented"); return 0; }
88     virtual Double_t Zv() const { AliFatal("Not implemented"); return 0; }
89     virtual Bool_t   XvYvZv(Double_t[3]) const { AliFatal("Not implemented"); return 0; }
90
91     virtual Double_t OneOverPt()  const { AliFatal("Not implemented"); return 0; }
92     virtual Double_t Phi()        const { return fPhi; }
93     virtual Double_t Theta()      const { AliFatal("Not implemented"); return 0; }
94
95
96     virtual Double_t E()          const { AliFatal("Not implemented"); return 0; }
97     virtual Double_t M()          const { AliFatal("Not implemented"); return 0; }
98
99     virtual Double_t Eta()        const { return fEta; }
100     virtual Double_t Y()          const { AliFatal("Not implemented"); return 0; }
101
102     virtual Short_t Charge()      const { AliFatal("Not implemented"); return 0; }
103     virtual Int_t   GetLabel()    const { AliFatal("Not implemented"); return 0; }
104     // PID
105     virtual Int_t   PdgCode()     const { AliFatal("Not implemented"); return 0; }
106     virtual const Double_t *PID() const { AliFatal("Not implemented"); return 0; }
107
108     virtual Short_t WhichCandidate()      const { return fCandidate; }
109
110   private:
111     Float_t fEta;      // eta
112     Float_t fPhi;      // phi
113     Float_t fpT;       // pT
114     Short_t fCandidate;   // V0 candidate: 1 - K0sig, 2 - Lamsig, 3 - Alamsig, 4 - K0bg, 5 - Lambg, 6 - Alambg
115
116     ClassDef( AliV0ChBasicParticle, 1); // class required for event mixing
117 };
118
119 #endif
120