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