1e8aefce09b0aa22c85bdfbbcf818fbc42dedfa6
[u/mrichter/AliRoot.git] / PWGCF / EBYE / BalanceFunctions / AliAnalysisTaskBF.h
1 #ifndef ALIANALYSISTASKBF_CXX\r
2 #define ALIANALYSISTASKBF_CXX\r
3 \r
4 // Analysis task for the BF code\r
5 // Authors: Panos Cristakoglou@cern.ch\r
6 \r
7 class TList;\r
8 class TH1F;\r
9 class TH2F;\r
10 class TF1;\r
11 \r
12 class AliBalance;\r
13 class AliESDtrackCuts;\r
14 \r
15 #include "AliAnalysisTaskSE.h"\r
16 #include "AliBalance.h"\r
17 \r
18 \r
19 class AliAnalysisTaskBF : public AliAnalysisTaskSE {\r
20  public:\r
21   AliAnalysisTaskBF(const char *name = "AliAnalysisTaskBF");\r
22   virtual ~AliAnalysisTaskBF(); \r
23   \r
24   \r
25   virtual void   UserCreateOutputObjects();\r
26   virtual void   UserExec(Option_t *option);\r
27   virtual void   FinishTaskOutput();\r
28   virtual void   Terminate(Option_t *);\r
29 \r
30   void SetAnalysisObject(AliBalance *const analysis) {\r
31     fBalance         = analysis;\r
32     }\r
33   void SetShufflingObject(AliBalance *const analysisShuffled) {\r
34     fRunShuffling = kTRUE;\r
35     fShuffledBalance = analysisShuffled;\r
36   }\r
37   void SetAnalysisCutObject(AliESDtrackCuts *const trackCuts) {\r
38     fESDtrackCuts = trackCuts;}\r
39   void SetVertexDiamond(Double_t vx, Double_t vy, Double_t vz) {\r
40     fVxMax = vx;\r
41     fVyMax = vy;\r
42     fVzMax = vz;\r
43   }\r
44 \r
45   //==============AOD analysis==============//\r
46   void SetAODtrackCutBit(Int_t bit){\r
47     nAODtrackCutBit = bit;\r
48   }\r
49 \r
50   void SetKinematicsCutsAOD(Double_t ptmin, Double_t ptmax, Double_t etamin, Double_t etamax){\r
51     fPtMin  = ptmin;\r
52     fPtMax  = ptmax;\r
53     fEtaMin = etamin;\r
54     fEtaMax = etamax;\r
55 \r
56   }\r
57 \r
58   void SetExtraDCACutsAOD(Double_t DCAxy, Double_t DCAz){\r
59     fDCAxyCut  = DCAxy;\r
60     fDCAzCut = DCAz;\r
61   }\r
62 \r
63    void SetExtraTPCCutsAOD(Double_t maxTPCchi2, Int_t minNClustersTPC){\r
64     fTPCchi2Cut      = maxTPCchi2;\r
65     fNClustersTPCCut = minNClustersTPC;\r
66   }\r
67 \r
68   //==============MC analysis==============//\r
69   void SetKinematicsCutsMC(Double_t ptmin, Double_t ptmax,\r
70                            Double_t etamin, Double_t etamax){\r
71     fPtMin  = ptmin; fPtMax  = ptmax;\r
72     fEtaMin = etamin; fEtaMax = etamax;\r
73   }\r
74   void UseFlowAfterBurner(TF1 *gDifferentialV2) {\r
75     fDifferentialV2 = gDifferentialV2;\r
76     fUseFlowAfterBurner = kTRUE;\r
77   }\r
78   void ExcludeResonancesInMC() {fExcludeResonancesInMC = kTRUE;}\r
79 \r
80   void SetPDGCode(Int_t gPdgCode) {\r
81     fUseMCPdgCode = kTRUE;\r
82     fPDGCodeToBeAnalyzed = gPdgCode;\r
83   }\r
84 \r
85   //Centrality\r
86   void SetCentralityEstimator(const char* centralityEstimator) {fCentralityEstimator = centralityEstimator;}\r
87   const char* GetCentralityEstimator(void)                     {return fCentralityEstimator;}\r
88   void SetCentralityPercentileRange(Double_t min, Double_t max) { \r
89     fUseCentrality = kTRUE;\r
90     fCentralityPercentileMin=min;\r
91     fCentralityPercentileMax=max;\r
92   }\r
93   void SetImpactParameterRange(Double_t min, Double_t max) { \r
94     fUseCentrality = kTRUE;\r
95     fImpactParameterMin=min;\r
96     fImpactParameterMax=max;\r
97   }\r
98 \r
99   //multiplicity\r
100   void SetMultiplicityRange(Int_t min, Int_t max) {\r
101     fUseMultiplicity = kTRUE;\r
102     fNumberOfAcceptedTracksMin = min;\r
103     fNumberOfAcceptedTracksMax = max;}\r
104   \r
105   void UseOfflineTrigger() {fUseOfflineTrigger = kTRUE;}\r
106   \r
107   //Acceptance filter\r
108   void SetAcceptanceParameterization(TF1 *parameterization) {\r
109     fAcceptanceParameterization = parameterization;}\r
110 \r
111  private:\r
112   AliBalance *fBalance; //BF object\r
113   Bool_t fRunShuffling;//run shuffling or not\r
114   AliBalance *fShuffledBalance; //BF object (shuffled)\r
115   TList *fList; //fList object\r
116   TList *fListBF; //fList object\r
117   TList *fListBFS; //fList object\r
118 \r
119   TH1F *fHistEventStats; //event stats\r
120   TH2F *fHistCentStats; //centrality stats\r
121   TH1F *fHistTriggerStats; //trigger stats\r
122   TH1F *fHistTrackStats; //Track filter bit stats\r
123   TH1F *fHistVx; //x coordinate of the primary vertex\r
124   TH1F *fHistVy; //y coordinate of the primary vertex\r
125   TH1F *fHistVz; //z coordinate of the primary vertex\r
126 \r
127   TH2F *fHistClus;//\r
128   TH2F *fHistDCA;//\r
129   TH1F *fHistChi2;//\r
130   TH1F *fHistPt;//\r
131   TH1F *fHistEta;//\r
132   TH1F *fHistPhi;//\r
133   TH1F *fHistPhiBefore;//\r
134   TH1F *fHistPhiAfter;//\r
135   TH2F *fHistV0M;//\r
136   TH2F *fHistRefTracks;//\r
137 \r
138   AliESDtrackCuts *fESDtrackCuts; //ESD track cuts\r
139 \r
140   TString fCentralityEstimator;      //"V0M","TRK","TKL","ZDC","FMD"\r
141   Bool_t fUseCentrality;//use the centrality (PbPb) or not (pp)\r
142   Double_t fCentralityPercentileMin;//centrality percentile min\r
143   Double_t fCentralityPercentileMax;//centrality percentile max\r
144   Double_t fImpactParameterMin;//impact parameter min (used for MC)\r
145   Double_t fImpactParameterMax;//impact parameter max (used for MC)\r
146 \r
147   Bool_t fUseMultiplicity;//use the multiplicity cuts\r
148   Int_t fNumberOfAcceptedTracksMin;//min. number of number of accepted tracks (used for the multiplicity dependence study - pp)\r
149   Int_t fNumberOfAcceptedTracksMax;//max. number of number of accepted tracks (used for the multiplicity dependence study - pp)\r
150   TH1F *fHistNumberOfAcceptedTracks;//hisot to store the number of accepted tracks\r
151 \r
152   Bool_t fUseOfflineTrigger;//Usage of the offline trigger selection\r
153 \r
154   Double_t fVxMax;//vxmax\r
155   Double_t fVyMax;//vymax\r
156   Double_t fVzMax;//vzmax\r
157 \r
158   Int_t nAODtrackCutBit;//track cut bit from track selection (only used for AODs)\r
159 \r
160   Double_t fPtMin;//only used for AODs\r
161   Double_t fPtMax;//only used for AODs\r
162   Double_t fEtaMin;//only used for AODs\r
163   Double_t fEtaMax;//only used for AODs\r
164 \r
165   Double_t fDCAxyCut;//only used for AODs\r
166   Double_t fDCAzCut;//only used for AODs\r
167 \r
168   Double_t fTPCchi2Cut;//only used for AODs\r
169   Int_t fNClustersTPCCut;//only used for AODs\r
170 \r
171   TF1 *fAcceptanceParameterization;//acceptance filter used for MC\r
172 \r
173   TF1 *fDifferentialV2;//pt-differential v2 (from real data)\r
174   Bool_t fUseFlowAfterBurner;//Usage of a flow after burner\r
175 \r
176   Bool_t fExcludeResonancesInMC;//flag to exclude the resonances' decay products from the MC analysis\r
177   Bool_t fUseMCPdgCode; //Boolean to analyze a set of particles in MC\r
178   Int_t fPDGCodeToBeAnalyzed; //Analyze a set of particles in MC\r
179 \r
180   AliAnalysisTaskBF(const AliAnalysisTaskBF&); // not implemented\r
181   AliAnalysisTaskBF& operator=(const AliAnalysisTaskBF&); // not implemented\r
182   \r
183   ClassDef(AliAnalysisTaskBF, 5); // example of analysis\r
184 };\r
185 \r
186 #endif\r