1 /* Copyright(c) 1998-2013, ALICE Experiment at CERN, All rights reserved.
2 * See cxx source for full Copyright notice
4 * AliAnalysisTaskV0ChCorrelations class
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
12 #ifndef ALIANALYSISTASKV0CHCORRELATIONS_H
13 #define ALIANALYSISTASKV0CHCORRELATIONS_H
21 class AliEventPoolManager;
23 #ifndef ALIANALYSISTASKSE_H
24 #include "AliAnalysisTaskSE.h"
27 class AliAnalysisTaskV0ChCorrelations : public AliAnalysisTaskSE {
29 AliAnalysisTaskV0ChCorrelations(const char *name = "AliAnalysisTaskV0ChCorrelations");
30 //AliAnalysisTaskV0ChCorrelations(const AliAnalysisTaskV0ChCorrelations&); //not implemented
31 //AliAnalysisTaskV0ChCorrelations& operator=(const AliAnalysisTaskV0ChCorrelations&); //not implemented
32 virtual ~AliAnalysisTaskV0ChCorrelations();
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;}
39 // Getting the global variables
40 Float_t GetDcaDToPV() { return fDcaDToPV; }
41 Float_t GetDcaV0D() { return fDcaV0D; }
43 virtual void UserCreateOutputObjects();
44 virtual void UserExec(Option_t *option);
45 virtual void Terminate(Option_t *);
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);
53 AliAnalysisTaskV0ChCorrelations(const AliAnalysisTaskV0ChCorrelations&); //not implemented
54 AliAnalysisTaskV0ChCorrelations& operator=(const AliAnalysisTaskV0ChCorrelations&); //not implemented
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
61 Float_t fDcaDToPV; // DCA of the daughter to primary vertex
62 Float_t fDcaV0D; // DCA between daughters
64 TList *fOutput; // Output list
65 AliPIDResponse *fPIDResponse; // PID response
67 TH2F *fHistCentVtx; // centrality vs. z vertex - to see statistics for mixing
68 TH1F *fHistMultiMain; // multiplicity of main events
70 THnSparseF *fHistMassK0; // K0 mass
71 THnSparseF *fHistMassLambda; // Lambda mass
72 THnSparseF *fHistMassAntiLambda; // AntiLambda mass
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
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
84 TH1D *fHistTemp; // temporary histogram for debugging
85 TH1D *fHistTemp2; // temporary histogram for debugging
87 ClassDef(AliAnalysisTaskV0ChCorrelations, 1); // class for V0Ch correlation analysis
90 /* AliV0ChBasicParticle class contains only quantities
91 * required for the analysis in order to reduce memory consumption for event mixing.
93 class AliV0ChBasicParticle : public AliVParticle
96 AliV0ChBasicParticle(Float_t eta, Float_t phi, Float_t pt, Short_t candidate)
97 : fEta(eta), fPhi(phi), fpT(pt), fCandidate(candidate)
100 virtual ~AliV0ChBasicParticle() {}
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; }
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; }
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; }
120 virtual Double_t E() const { AliFatal("Not implemented"); return 0; }
121 virtual Double_t M() const { AliFatal("Not implemented"); return 0; }
123 virtual Double_t Eta() const { return fEta; }
124 virtual Double_t Y() const { AliFatal("Not implemented"); return 0; }
126 virtual Short_t Charge() const { AliFatal("Not implemented"); return 0; }
127 virtual Int_t GetLabel() const { AliFatal("Not implemented"); return 0; }
129 virtual Int_t PdgCode() const { AliFatal("Not implemented"); return 0; }
130 virtual const Double_t *PID() const { AliFatal("Not implemented"); return 0; }
132 virtual Short_t WhichCandidate() const { return fCandidate; }
138 Short_t fCandidate; // V0 candidate: 1 - K0sig, 2 - Lamsig, 3 - Alamsig, 4 - K0bg, 5 - Lambg, 6 - Alambg
140 ClassDef( AliV0ChBasicParticle, 1); // class required for event mixing