]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/EBYE/BalanceFunctions/AliAnalysisTaskEffContBF.h
Correct implementation of averaging (nTrigSubBin/nTrigAllBins)
[u/mrichter/AliRoot.git] / PWGCF / EBYE / BalanceFunctions / AliAnalysisTaskEffContBF.h
1 #ifndef ALIANALYSISTASKEFFCONTBF_cxx
2 #define ALIANALYSISTASKEFFCONTBF_cxx
3
4 // ---------------------------------------------------------------------
5 //
6 // Task for calculating the efficiency and contamination of the Balance 
7 // Function for single particles and pairs
8 // 
9 // ---------------------------------------------------------------------
10
11 class TList;
12 class TH1F;
13 class TH3D;
14 class TH2F;
15 class TString;
16 class AliAODEvent;
17 class AliAODInputHandler;
18 class TH2D;
19
20 #include "AliAnalysisTaskSE.h"
21
22 class AliAnalysisTaskEffContBF : public AliAnalysisTaskSE {
23  public:
24   AliAnalysisTaskEffContBF() : AliAnalysisTaskSE(), 
25     fAOD(0), 
26     fArrayMC(0),  
27     fQAList(0), 
28     fOutputList(0),
29     fHistEventStats(0),
30     fHistCentrality(0), 
31     fHistNMult(0), 
32     fHistVz(0),
33     fHistContaminationSecondaries(0),
34     fHistContaminationPrimaries(0),
35     fHistGeneratedEtaPtPhiPlus(0),
36     fHistSurvivedEtaPtPhiPlus(0),
37     fHistGeneratedEtaPtPhiMinus(0),
38     fHistSurvivedEtaPtPhiMinus(0),
39     fHistGeneratedEtaPtPlusControl(0), 
40     fHistSurvivedEtaPtPlusControl(0),
41     fHistGeneratedEtaPtMinusControl(0), 
42     fHistSurvivedEtaPtMinusControl(0), 
43     fHistGeneratedEtaPtPlusPlus(0), 
44     fHistSurvivedEtaPtPlusPlus(0),
45     fHistGeneratedEtaPtMinusMinus(0), 
46     fHistSurvivedEtaPtMinusMinus(0),
47     fHistGeneratedEtaPtPlusMinus(0), 
48     fHistSurvivedEtaPtPlusMinus(0),
49     fHistGeneratedPhiEtaPlusPlus(0),
50     fHistSurvivedPhiEtaPlusPlus(0),
51     fHistGeneratedPhiEtaMinusMinus(0), 
52     fHistSurvivedPhiEtaMinusMinus(0),
53     fHistGeneratedPhiEtaPlusMinus(0),
54     fHistSurvivedPhiEtaPlusMinus(0), 
55     fAnalysisMode(0), 
56     fCentralityEstimator("V0M"), 
57     fCentralityPercentileMin(0.0), 
58     fCentralityPercentileMax(5.0), 
59     fVxMax(3.0), 
60     fVyMax(3.0), 
61     fVzMax(10.), 
62     fAODTrackCutBit(128),
63     fMinNumberOfTPCClusters(80), 
64     fMaxChi2PerTPCCluster(4.0),
65     fMaxDCAxy(3.0), 
66     fMaxDCAz(3.0),
67     fMinPt(0.0), 
68     fMaxPt(20.0), 
69     fMinEta(-0.8),
70     fMaxEta(0.8), 
71     fEtaRangeMin(0.0), 
72     fEtaRangeMax(1.6), 
73     fPtRangeMin(0.0), 
74     fPtRangeMax(20.0), 
75     fPhiRangeMin(0.0),
76     fPhiRangeMax(360.), 
77     fdPhiRangeMax(180.), 
78     fEtaBin(100),
79     fdEtaBin(64),
80     fPtBin(100),
81     fPhiBin(100),
82     fdPhiBin(90), 
83     fHistSurvived4EtaPtPhiPlus(0), 
84     fHistSurvived8EtaPtPhiPlus(0){}
85     AliAnalysisTaskEffContBF(const char *name);
86     virtual ~AliAnalysisTaskEffContBF() {}
87   
88   virtual void   UserCreateOutputObjects();
89   virtual void   UserExec(Option_t *option);
90   virtual void   Terminate(Option_t *);
91   
92   Bool_t   IsLabelUsed(TArrayI array, Int_t label);
93
94   void SetAODtrackCutBit(Int_t bit){
95     fAODTrackCutBit = bit;
96   }
97   void SetVertexDiamond(Double_t vx, Double_t vy, Double_t vz) {
98     fVxMax = vx;
99     fVyMax = vy;
100     fVzMax = vz;
101   }
102
103   //Centrality
104   void SetCentralityEstimator(const char* centralityEstimator) {
105     fCentralityEstimator = centralityEstimator;}
106   void SetCentralityPercentileRange(Float_t min, Float_t max) { 
107     fCentralityPercentileMin=min;
108     fCentralityPercentileMax=max;
109   }
110
111   void SetAnalysisMode(const char* analysisMode) {
112     fAnalysisMode = analysisMode;}
113
114   //Track cuts
115   void SetMinNumberOfTPCClusters(Double_t min) {
116     fMinNumberOfTPCClusters = min;}
117   void SetMaxChi2PerTPCCluster(Double_t max) {
118     fMaxChi2PerTPCCluster = max;}
119   void SetMaxDCAxy(Double_t max) {
120     fMaxDCAxy = max;}
121   void SetMaxDCAz(Double_t max) {
122     fMaxDCAz = max;}
123   void SetMinPt(Double_t minPt) {
124     fMinPt = minPt;}
125   void SetMaxPt(Double_t maxPt) {
126     fMaxPt = maxPt;}
127  
128   void SetEtaRange(Double_t minEta, Double_t maxEta, Int_t binEta, Double_t minRangeEta, Double_t maxRangeEta, Int_t bindEta){
129     fMinEta = minEta;
130     fMaxEta = maxEta;
131     fEtaBin = binEta;
132     fEtaRangeMax = maxRangeEta;
133     fEtaRangeMin = minRangeEta;
134     fdEtaBin = bindEta;
135   }
136   void SetPtRange(Double_t minRangePt, Double_t maxRangePt,Int_t binPt){
137     fPtRangeMin = minRangePt;
138     fPtRangeMax = maxRangePt;
139     fPtBin = binPt;}  
140   void SetPhiRange(Double_t minRangePhi, Double_t maxRangePhi,Int_t binPhi,Double_t maxRangedPhi,Int_t bindPhi ){
141     fPhiRangeMin = minRangePhi;
142     fPhiRangeMax = maxRangePhi;
143     fPhiBin = binPhi;
144     fdPhiRangeMax = maxRangedPhi;
145     fdPhiBin = bindPhi;
146   } 
147
148  private:
149   AliAODEvent* fAOD; //! AOD object  
150   TClonesArray *fArrayMC; //! array of MC particles  
151   TList       *fQAList; //! QA list
152   TList       *fOutputList; //! Output list
153   
154   // QA histograms
155   TH1F        *fHistEventStats; //!event stats
156   TH1F        *fHistCentrality; //!centrality
157   TH1F        *fHistNMult; //! nmult  
158   TH1F        *fHistVz;//!
159
160   // output histograms
161   TH3D        *fHistContaminationSecondaries;//!
162   TH3D        *fHistContaminationPrimaries;//!
163   // output histograms (single particles)
164   TH3D        *fHistGeneratedEtaPtPhiPlus;//!correction map for positives (generated)
165   TH3D        *fHistSurvivedEtaPtPhiPlus;//!correction map positives (survived)
166  
167   TH3D        *fHistGeneratedEtaPtPhiMinus;//!correction map for negatives (generated)
168   TH3D        *fHistSurvivedEtaPtPhiMinus;//!correction map negatives (survived)
169  
170   TH2F        *fHistGeneratedEtaPtPlusControl;//!correction map for positives (generated)
171   TH2F        *fHistSurvivedEtaPtPlusControl;//!correction map positives (survived)
172  
173   TH2F        *fHistGeneratedEtaPtMinusControl;//!correction map for negatives (generated)
174   TH2F        *fHistSurvivedEtaPtMinusControl;//!correction map negatives (survived)
175  
176   // output histograms (pairs)
177   TH2F        *fHistGeneratedEtaPtPlusPlus;//!correction map for ++ (generated)
178   TH2F        *fHistSurvivedEtaPtPlusPlus;//!correction map ++ (survived)
179  
180   TH2F        *fHistGeneratedEtaPtMinusMinus;//!correction map for -- (generated)
181   TH2F        *fHistSurvivedEtaPtMinusMinus;//!correction map -- (survived)
182  
183   TH2F        *fHistGeneratedEtaPtPlusMinus;//!correction map for +- (generated)
184   TH2F        *fHistSurvivedEtaPtPlusMinus;//!correction map +- (survived)
185
186   TH2F        *fHistGeneratedPhiEtaPlusPlus;//!correction map for ++ (generated)
187   TH2F        *fHistSurvivedPhiEtaPlusPlus;//!correction map ++ (survived)
188  
189   TH2F        *fHistGeneratedPhiEtaMinusMinus;//!correction map for -- (generated)
190   TH2F        *fHistSurvivedPhiEtaMinusMinus;//!correction map -- (survived)
191  
192   TH2F        *fHistGeneratedPhiEtaPlusMinus;//!correction map for +- (generated)
193   TH2F        *fHistSurvivedPhiEtaPlusMinus;//!correction map +- (survived)
194
195   TString fAnalysisMode;//"TPC", "Global"
196
197   TString fCentralityEstimator;//"V0M","TRK","TKL","ZDC","FMD"
198   Float_t fCentralityPercentileMin, fCentralityPercentileMax; //min-max centrality percentile
199
200   Double_t fVxMax;//vxmax
201   Double_t fVyMax;//vymax
202   Double_t fVzMax;//vzmax
203   
204   Int_t fAODTrackCutBit;//track cut bit from track selection (only used for AODs)
205
206   Double_t fMinNumberOfTPCClusters;//!
207   Double_t fMaxChi2PerTPCCluster;//!
208   Double_t fMaxDCAxy, fMaxDCAz;//!
209   Double_t fMinPt, fMaxPt;//!
210   Double_t fMinEta, fMaxEta;//!
211   Double_t fEtaRangeMin;// acceptance cuts 
212   Double_t fEtaRangeMax; // acceptance cuts
213   Double_t fPtRangeMin;  //acceptance cuts
214   Double_t fPtRangeMax;  //acceptance cuts
215   Double_t fPhiRangeMin; //acceptance cuts
216   Double_t fPhiRangeMax; // acceptance cuts
217   Double_t fdPhiRangeMax; // acceptance cuts
218   
219   Int_t fEtaBin;  //acceptance cuts
220   Int_t fdEtaBin;  //acceptance cuts
221   Int_t fPtBin; //acceptance cuts
222   Int_t fPhiBin; // acceptance cuts
223   Int_t fdPhiBin; // acceptance cuts
224
225   TH3F        *fHistSurvived4EtaPtPhiPlus;//!
226   TH3F        *fHistSurvived8EtaPtPhiPlus;//!
227
228   AliAnalysisTaskEffContBF(const AliAnalysisTaskEffContBF&); // not implemented
229   AliAnalysisTaskEffContBF& operator=(const AliAnalysisTaskEffContBF&); // not implemented
230   
231   ClassDef(AliAnalysisTaskEffContBF, 1); // example of analysis
232 };
233
234 #endif