Usage of multi-vertexer to tag pileup events in D meson analysis (Zaida)
[u/mrichter/AliRoot.git] / PWGHF / correlationHF / AliAnalysisTaskDStarCorrelations.h
1 #ifndef AliAnalysisTaskDStarCorrelations_H
2 #define AliAnalysisTaskDStarCorrelations_H
3
4 /**************************************************************************
5  * Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *
6  *                                                                        *
7  * Author: The ALICE Off-line Project.                                    *
8  * Contributors are mentioned in the code where appropriate.              *
9  *                                                                        *
10  * Permission to use, copy, modify and distribute this software and its   *
11  * documentation strictly for non-commercial purposes is hereby granted   *
12  * without fee, provided that the above copyright notice appears in all   *
13  * copies and that both the copyright notice and this permission notice   *
14  * appear in the supporting documentation. The authors make no claims     *
15  * about the suitability of this software for any purpose. It is          *
16  * provided "as is" without express or implied warranty.                  *
17  **************************************************************************/
18
19 /* $Id$ */
20
21 //-----------------------------------------------------------------------
22 //          
23 //
24 //                                                 Author S.Bjelogrlic
25 //                         Utrecht University 
26 //                      sandro.bjelogrlic@cern.ch
27 //
28 //-----------------------------------------------------------------------
29
30 #include <TH2F.h>
31 #include <TH1D.h>
32 #include <TH3D.h>
33 #include "AliAnalysisTaskSE.h"
34 #include "AliAODEvent.h"
35 #include "AliRDHFCutsDStartoKpipi.h"
36 #include "AliEventPoolManager.h"
37 #include "AliAODRecoCascadeHF.h"
38 #include "AliHFAssociatedTrackCuts.h"
39 #include "AliNormalizationCounter.h"
40 #include "AliHFCorrelator.h"
41 #include <THnSparse.h>
42 #include "AliAnalysisUtils.h"
43 #include "AliVertexingHFUtils.h"
44 class TParticle ;
45 class TClonesArray ;
46 class AliAODMCParticle;
47 class AliAODEvent;
48 class AliVParticle;
49 class TObjArray;
50 class AliEventPoolManager;
51 class AliESDEvent;
52
53
54
55 class AliAnalysisTaskDStarCorrelations : public AliAnalysisTaskSE
56 {
57
58  public :
59   
60   enum CollSyst {pp,pA,AA};
61   enum DEffVariable{kNone,kMult,kCentr,kRapidity,kEta};
62   
63   AliAnalysisTaskDStarCorrelations();
64   AliAnalysisTaskDStarCorrelations(const Char_t* name,AliRDHFCutsDStartoKpipi* cuts, AliHFAssociatedTrackCuts *AsscCuts, AliAnalysisTaskDStarCorrelations::CollSyst syst,Bool_t mode);
65   virtual ~AliAnalysisTaskDStarCorrelations();
66   
67   
68   
69   // Implementation of interface methods  
70   virtual void UserCreateOutputObjects();
71   virtual void Init();
72   virtual void LocalInit() {Init();}
73   virtual void UserExec(Option_t *option);
74   virtual void Terminate(Option_t *option);
75   
76   void DefineThNSparseForAnalysis();
77   void DefineHistoForAnalysis();
78   void EnlargeDZeroMassWindow();
79     Bool_t IsDDaughter(AliAODMCParticle* d, AliAODMCParticle* track) const ;
80   
81   // checker for event mixing
82   void EventMixingChecks(AliAODEvent * AOD); 
83   // setters
84   void SetMonteCarlo(Bool_t k) {fmontecarlo = k;}
85   void SetUseMixing (Bool_t j) {fmixing = j;}
86   void SetCorrelator(Int_t l) {fselect = l;} // select 1 for hadrons, 2 for Kaons, 3 for Kzeros
87   void SetUseDisplacement(Int_t m) {fDisplacement=m;} // select 0 for no displ, 1 for abs displ, 2 for d0/sigma_d0
88   void SetCollSys(CollSyst system){fSystem=system;} // select between pp (kFALSE) or PbPb (kTRUE)
89   void SetEfficiencyVariable(DEffVariable var){fEfficiencyVariable = var;} // set the efficiency variable to use
90   void SetLevelOfDebug(Int_t debug){fDebugLevel=debug;} // set debug level
91   void SetUseReconstruction(Bool_t reco){fReco = reco;}
92   void SetDMesonSigmas(Float_t DStarWin, Float_t D0Win, Float_t SBmin, Float_t SBmax){
93     fDMesonSigmas[0] = DStarWin;
94     fDMesonSigmas[1] = D0Win;
95     fDMesonSigmas[2] = SBmin;
96     fDMesonSigmas[3] = SBmax;
97     
98   }
99
100   void SetUseEfficiencyCorrection(Bool_t correction){fUseEfficiencyCorrection = correction;} // setter for using the single track efficiency correction
101   void SetUseDmesonEfficiencyCorrection(Bool_t correction){fUseDmesonEfficiencyCorrection = correction;} // setter for using the single track efficiency correction
102   void SetUseHadronicChannelAtKineLevel (Bool_t use){fUseHadronicChannelAtKineLevel = use;}
103     
104   void SetDim(){fDim = 4;
105     fDMesonSigmas = new Float_t[4];}
106   void SetDeffMapvsPt(TH1D * map){fDeffMapvsPt = map;}
107   void SetDeffMapvsPtvsMult(TH2D * map){fDeffMapvsPtvsMult = (TH2D*)map;}
108   void SetDeffMapvsPtvsMultvsEta(TH2D * map){fDeffMapvsPtvsEta = map;}
109   void SetNofPhiBins(Int_t nbins){fPhiBins = nbins;}
110     void SetMaxDStarEta(Double_t eta){fMaxEtaDStar = eta;}
111   
112   
113
114 private:
115   
116   AliAnalysisTaskDStarCorrelations(const AliAnalysisTaskDStarCorrelations &source);
117   AliAnalysisTaskDStarCorrelations& operator=(const AliAnalysisTaskDStarCorrelations& source);
118   
119   TObject* fhandler; //! Analysis Handler
120   TClonesArray* fmcArray; //mcarray
121   AliNormalizationCounter *fCounter; // counter
122   AliHFCorrelator * fCorrelator; // object for correlations
123   
124   
125   
126   Int_t fselect; // select what to correlate with a D* 1-chargedtracks,2-chargedkaons,3-k0s
127   Bool_t fmontecarlo;//switch for MC
128   Bool_t fmixing;// switch for event mixing
129   Bool_t fFullmode;
130   CollSyst fSystem; // pp, pPb or PbPb
131   DEffVariable  fEfficiencyVariable; // set second variable to study efficiency (mult, centr, y, eta)
132   Bool_t fReco; // use reconstruction or MC truth
133   Bool_t fUseEfficiencyCorrection; // boolean variable to use or not the efficiency correction
134   Bool_t fUseDmesonEfficiencyCorrection; // boolean flag for the use of Dmeson efficiency correction
135   Bool_t fUseCentrality;// boolean to switch in between centrality or multiplicity
136   Bool_t fUseHadronicChannelAtKineLevel; //
137  
138   Int_t fPhiBins;
139   Int_t fEvents; //! number of event
140   Int_t fDebugLevel; //! debug level
141   Int_t fDisplacement; // set 0 for no displacement cut, 1 for absolute d0, 2 for d0/sigma_d0
142   Int_t fDim;//
143   Int_t fNofPtBins;
144      Double_t fMaxEtaDStar;
145   Float_t *fDMesonSigmas;//[fDim]
146   Float_t * fD0Window;  //[fNofPtBins]
147    
148   
149   
150   
151   TList *fOutput;                  //! user output data
152   TList *fOutputMC;                //! outpu for MC
153   AliRDHFCutsDStartoKpipi *fCuts;  // Cuts D*
154   AliHFAssociatedTrackCuts *fCuts2; // cuts for associated
155   AliAnalysisUtils *fUtils;
156   AliAODTracklets * fTracklets; // AliAODtracklets
157   
158   TH1D * fDeffMapvsPt; // histo for Deff mappin
159   TH2D * fDeffMapvsPtvsMult; // histo for Deff mappin
160   TH2D * fDeffMapvsPtvsEta; // histo for Deff mappin
161   
162   ClassDef(AliAnalysisTaskDStarCorrelations,6); // class for D meson correlations
163   
164 };
165
166 #endif