Added commet to explain AliAODTrack::fType, AliAODTrack::XAtDCA(), YAtDCA(), ZAtDCA...
[u/mrichter/AliRoot.git] / ANALYSIS / AliCentralitySelectionTask.h
1 #ifndef ALICENTRALITYSELECTIONTASK_H
2 #define ALICENTRALITYSELECTIONTASK_H
3
4 /* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 //*****************************************************
8 //   Class AliCentralitySelectionTask
9 //   author: Alberica Toia
10 //*****************************************************
11
12 #include "AliAnalysisTaskSE.h"
13
14 class TFile;
15 class TH1F;
16 class TH2F;
17 class TList;
18 class TString;
19
20 class AliESDEvent;
21 class AliESDtrackCuts;
22
23 class AliCentralitySelectionTask : public AliAnalysisTaskSE {
24
25  public:
26
27   AliCentralitySelectionTask();
28   AliCentralitySelectionTask(const char *name);
29   AliCentralitySelectionTask& operator= (const AliCentralitySelectionTask& ana);
30   AliCentralitySelectionTask(const AliCentralitySelectionTask& c);
31   virtual ~AliCentralitySelectionTask();
32
33   // Implementation of interface methods
34   virtual void UserCreateOutputObjects();
35   virtual void UserExec(Option_t *option);
36   virtual void Terminate(Option_t *option);
37
38   void SetInput(const char* input)         {fAnalysisInput = input;}
39   void SetMCInput()                        {fIsMCInput = kTRUE;}
40   void DontUseScaling()                    {fUseScaling=kFALSE;}  
41   void DontUseCleaning()                   {fUseCleaning=kFALSE;}
42   void SetFillHistos()                     {fFillHistos=kTRUE; DefineOutput(1, TList::Class());
43 }
44
45  private:
46
47   Int_t SetupRun(const AliVEvent* const esd);
48   Bool_t IsOutlierV0MSPD(Float_t spd, Float_t v0, Int_t cent) const;
49   Bool_t IsOutlierV0MTPC(Int_t tracks, Float_t v0, Int_t cent) const;
50   Bool_t IsOutlierV0MZDC(Float_t zdc, Float_t v0) const;
51   Bool_t IsOutlierV0MZDCECal(Float_t zdc, Float_t v0) const;
52
53   TString  fAnalysisInput;      // "ESD", "AOD"
54   Bool_t   fIsMCInput;          // true when input is MC
55   Int_t    fCurrentRun;         // current run number
56   Bool_t   fUseScaling;         // flag to use scaling 
57   Bool_t   fUseCleaning;        // flag to use cleaning  
58   Bool_t   fFillHistos;         // flag to fill the QA histos
59   Float_t  fV0MScaleFactor;     // scale factor V0M
60   Float_t  fSPDScaleFactor;     // scale factor SPD
61   Float_t  fTPCScaleFactor;     // scale factor TPC
62   Float_t  fV0MScaleFactorMC;   // scale factor V0M for MC
63   Float_t  fV0MSPDOutlierPar0;  // outliers parameter
64   Float_t  fV0MSPDOutlierPar1;  // outliers parameter
65   Float_t  fV0MTPCOutlierPar0;  // outliers parameter
66   Float_t  fV0MTPCOutlierPar1;  // outliers parameter
67   Float_t  fV0MSPDSigmaOutlierPar0;  // outliers parameter
68   Float_t  fV0MSPDSigmaOutlierPar1;  // outliers parameter
69   Float_t  fV0MSPDSigmaOutlierPar2;  // outliers parameter
70   Float_t  fV0MTPCSigmaOutlierPar0;  // outliers parameter
71   Float_t  fV0MTPCSigmaOutlierPar1;  // outliers parameter
72   Float_t  fV0MTPCSigmaOutlierPar2;  // outliers parameter                                                 
73   Float_t  fV0MZDCOutlierPar0;       // outliers parameter
74   Float_t  fV0MZDCOutlierPar1;       // outliers parameter
75   Float_t  fV0MZDCEcalOutlierPar0;   // outliers parameter
76   Float_t  fV0MZDCEcalOutlierPar1;   // outliers parameter
77
78   AliESDtrackCuts* fTrackCuts;  //! optional track cuts
79   AliESDtrackCuts* fEsdTrackCuts;  //! optional track cuts
80   AliESDtrackCuts* fEsdTrackCutsExtra1;  //! optional track cuts
81   AliESDtrackCuts* fEsdTrackCutsExtra2;  //! optional track cuts
82
83   Float_t  fZVCut;              //! z-vertex cut (in cm)
84   Float_t  fOutliersCut;        //! outliers cut (in n-sigma)
85   Int_t    fQuality;            //! quality for centrality determination
86
87   Bool_t   fIsSelected;         //! V0BG rejection
88
89   Bool_t   fMSL;                //! 
90   Bool_t   fMSH;                //! 
91   Bool_t   fMUL;                //! 
92   Bool_t   fMLL;                //! 
93
94   Bool_t   fEJE;                //! 
95   Bool_t   fEGA;                //! 
96   Bool_t   fPHS;                //! 
97
98   Bool_t   fMB;                 //! if the event is MB
99   Bool_t   fCVHN;               //! if the event is central trigger
100   Bool_t   fCVLN;               //! if the event is semicentral trigger
101   Bool_t   fCVHNbit;            //! if the event is central trigger
102   Bool_t   fCVLNbit;            //! if the event is semicentral trigger
103   Bool_t   fCCENT;              //! if the event is central trigger
104   Bool_t   fCSEMI;              //! if the event is semicentral trigger
105   Bool_t   fCCENTbit;           //! if the event is central trigger
106   Bool_t   fCSEMIbit;           //! if the event is semicentral trigger
107
108   Float_t  fCentV0M;            // percentile centrality from V0
109   Float_t  fCentV0A;            // percentile centrality from V0A
110   Float_t  fCentV0A0;           // percentile centrality from V0A-123
111   Float_t  fCentV0A123;         // percentile centrality from V0A-123
112   Float_t  fCentV0C;            // percentile centrality from V0C
113   Float_t  fCentV0A23;          // percentile centrality from V0A rings 23
114   Float_t  fCentV0C01;          // percentile centrality from V0C rings 01
115   Float_t  fCentV0S;            // percentile centrality from V0A23 and V0C01
116   Float_t  fCentV0MEq;          // percentile centrality from V0 equalized channel
117   Float_t  fCentV0AEq;          // percentile centrality from V0A equalized channel
118   Float_t  fCentV0CEq;          // percentile centrality from V0C equalized channel
119   Float_t  fCentFMD;            // percentile centrality from FMD
120   Float_t  fCentTRK;            // percentile centrality from tracks
121   Float_t  fCentTKL;            // percentile centrality from tracklets
122   Float_t  fCentCL0;            // percentile centrality from clusters in layer 0
123   Float_t  fCentCL1;            // percentile centrality from clusters in layer 1
124   Float_t  fCentCND;            // percentile centrality from candle 
125   Float_t  fCentZNA;            // percentile centrality from ZNA 
126   Float_t  fCentZNC;            // percentile centrality from ZNC 
127   Float_t  fCentZPA;            // percentile centrality from ZPA 
128   Float_t  fCentZPC;            // percentile centrality from ZPC 
129   Float_t  fCentNPA;            // percentile centrality from Npart (MC) 
130   Float_t  fCentV0MvsFMD;       // percentile centrality from V0 vs FMD
131   Float_t  fCentTKLvsV0M;       // percentile centrality from tracklets vs V0
132   Float_t  fCentZEMvsZDC;       // percentile centrality from ZEM vs ZDC
133
134   Float_t  fCentV0Mtrue;        // percentile centrality from true (sim) V0A+V0C
135   Float_t  fCentV0Atrue;        // percentile centrality from true (sim) V0A
136   Float_t  fCentV0Ctrue;        // percentile centrality from true (sim) V0C
137   Float_t  fCentV0MEqtrue;      // percentile centrality from true (sim) V0A+V0C equalized channel
138   Float_t  fCentV0AEqtrue;      // percentile centrality from true (sim) V0A equalized channel
139   Float_t  fCentV0CEqtrue;      // percentile centrality from true (sim) V0C equalized channel
140   Float_t  fCentFMDtrue;        // percentile centrality from true (sim) FMD
141   Float_t  fCentTRKtrue;        // percentile centrality from true (sim) tracks
142   Float_t  fCentTKLtrue;        // percentile centrality from true (sim) tracklets
143   Float_t  fCentCL0true;        // percentile centrality from true (sim) Clusters in layer 0
144   Float_t  fCentCL1true;        // percentile centrality from true (sim) Clusters in layer 1
145   Float_t  fCentCNDtrue;        // percentile centrality from true (sim) tracks (candle condition)
146   Float_t  fCentZNAtrue;        // percentile centrality from true (sim) ZNA
147   Float_t  fCentZNCtrue;        // percentile centrality from true (sim) ZNC
148   Float_t  fCentZPAtrue;        // percentile centrality from true (sim) ZPA
149   Float_t  fCentZPCtrue;        // percentile centrality from true (sim) ZPC
150
151
152   TH1F    *fHtempV0M;           // histogram with centrality vs multiplicity using V0
153   TH1F    *fHtempV0A;           // histogram with centrality vs multiplicity using V0A
154   TH1F    *fHtempV0A0;          // histogram with centrality vs multiplicity using V0A-123
155   TH1F    *fHtempV0A123;        // histogram with centrality vs multiplicity using V0A-123
156   TH1F    *fHtempV0C;           // histogram with centrality vs multiplicity using V0C
157   TH1F    *fHtempV0A23;         // histogram with centrality vs multiplicity using V0A-23
158   TH1F    *fHtempV0C01;         // histogram with centrality vs multiplicity using V0C-01
159   TH1F    *fHtempV0S;           // histogram with centrality vs multiplicity using V0A23 and V0C01 
160   TH1F    *fHtempV0MEq;         // histogram with centrality vs multiplicity using V0  equalized channel
161   TH1F    *fHtempV0AEq;         // histogram with centrality vs multiplicity using V0A equalized channel
162   TH1F    *fHtempV0CEq;         // histogram with centrality vs multiplicity using V0C equalized channel
163   TH1F    *fHtempFMD;           // histogram with centrality vs multiplicity using FMD
164   TH1F    *fHtempTRK;           // histogram with centrality vs multiplicity using tracks
165   TH1F    *fHtempTKL;           // histogram with centrality vs multiplicity using tracklets
166   TH1F    *fHtempCL0;           // histogram with centrality vs multiplicity using clusters in layer 0
167   TH1F    *fHtempCL1;           // histogram with centrality vs multiplicity using clusters in layer 1
168   TH1F    *fHtempCND;           // histogram with centrality vs multiplicity using candle
169   TH1F    *fHtempZNA;           // histogram with centrality vs multiplicity using ZNA
170   TH1F    *fHtempZNC;           // histogram with centrality vs multiplicity using ZNC
171   TH1F    *fHtempZPA;           // histogram with centrality vs multiplicity using ZPA
172   TH1F    *fHtempZPC;           // histogram with centrality vs multiplicity using ZPC
173   TH1F    *fHtempV0MvsFMD;      // histogram with centrality vs multiplicity using V0 vs FMD   
174   TH1F    *fHtempTKLvsV0M;      // histogram with centrality vs multiplicity using tracklets vs V0
175   TH2F    *fHtempZEMvsZDC;      // histogram with centrality vs multiplicity using ZEM vs ZDC 
176   TH1F    *fHtempNPA;           // histogram with centrality vs multiplicity using Npart
177
178   TH1F    *fHtempV0Mtrue;       // histogram with centrality true (sim) vs multiplicity using V0
179   TH1F    *fHtempV0Atrue;       // histogram with centrality true (sim) vs multiplicity using V0A
180   TH1F    *fHtempV0Ctrue;       // histogram with centrality true (sim) vs multiplicity using V0C
181   TH1F    *fHtempV0MEqtrue;     // histogram with centrality true (sim) vs multiplicity using V0 equalized channel
182   TH1F    *fHtempV0AEqtrue;     // histogram with centrality true (sim) vs multiplicity using V0A equalized channel
183   TH1F    *fHtempV0CEqtrue;     // histogram with centrality true (sim) vs multiplicity using V0C equalized channel
184   TH1F    *fHtempFMDtrue;       // histogram with centrality true (sim) vs multiplicity using FMD
185   TH1F    *fHtempTRKtrue;       // histogram with centrality true (sim) vs multiplicity using tracks
186   TH1F    *fHtempTKLtrue;       // histogram with centrality true (sim) vs multiplicity using tracklets
187   TH1F    *fHtempCL0true;       // histogram with centrality true (sim) vs multiplicity using clusters in layer 0
188   TH1F    *fHtempCL1true;       // histogram with centrality true (sim) vs multiplicity using clusters in layer 1
189   TH1F    *fHtempCNDtrue;       // histogram with centrality true (sim) vs multiplicity using candle
190   TH1F    *fHtempZNAtrue;       // histogram with centrality true (sim) vs multiplicity using ZNA
191   TH1F    *fHtempZNCtrue;       // histogram with centrality true (sim) vs multiplicity using ZNC
192   TH1F    *fHtempZPAtrue;       // histogram with centrality true (sim) vs multiplicity using ZPA
193   TH1F    *fHtempZPCtrue;       // histogram with centrality true (sim) vs multiplicity using ZPC
194
195   TList   *fOutputList; // output list
196   
197
198   TH1F *fHOutCentV0M    ;       //control histogram for centrality
199   TH1F *fHOutCentV0A    ;       //control histogram for centrality
200   TH1F *fHOutCentV0A0   ;       //control histogram for centrality
201   TH1F *fHOutCentV0A123 ;       //control histogram for centrality
202   TH1F *fHOutCentV0C    ;       //control histogram for centrality
203   TH1F *fHOutCentV0A23  ;       //control histogram for centrality
204   TH1F *fHOutCentV0C01  ;       //control histogram for centrality
205   TH1F *fHOutCentV0S    ;       //control histogram for centrality
206   TH1F *fHOutCentV0MEq  ;       //control histogram for centrality
207   TH1F *fHOutCentV0AEq  ;       //control histogram for centrality
208   TH1F *fHOutCentV0CEq  ;       //control histogram for centrality
209   TH1F *fHOutCentV0MCVHN;       //control histogram for centrality
210   TH1F *fHOutCentV0MCVLN;       //control histogram for centrality
211   TH1F *fHOutCentV0MCVHNinMB;   //control histogram for centrality
212   TH1F *fHOutCentV0MCVLNinMB;   //control histogram for centrality
213   TH1F *fHOutCentV0MCCENT;      //control histogram for centrality
214   TH1F *fHOutCentV0MCSEMI;      //control histogram for centrality
215   TH1F *fHOutCentV0MCCENTinMB;  //control histogram for centrality
216   TH1F *fHOutCentV0MCSEMIinMB;  //control histogram for centrality
217   TH1F *fHOutCentV0MMSL;        //control histogram for centrality
218   TH1F *fHOutCentV0MMSH;        //control histogram for centrality
219   TH1F *fHOutCentV0MMUL;        //control histogram for centrality
220   TH1F *fHOutCentV0MMLL;        //control histogram for centrality
221   TH1F *fHOutCentV0MEJE;        //control histogram for centrality
222   TH1F *fHOutCentV0MEGA;        //control histogram for centrality
223   TH1F *fHOutCentV0MPHS;        //control histogram for centrality
224   TH1F *fHOutCentV0MMSLinMB;    //control histogram for centrality
225   TH1F *fHOutCentV0MMSHinMB;    //control histogram for centrality
226   TH1F *fHOutCentV0MMULinMB;    //control histogram for centrality
227   TH1F *fHOutCentV0MMLLinMB;    //control histogram for centrality
228   TH1F *fHOutCentV0MEJEinMB;    //control histogram for centrality
229   TH1F *fHOutCentV0MEGAinMB;    //control histogram for centrality
230   TH1F *fHOutCentV0MPHSinMB;    //control histogram for centrality
231   TH1F *fHOutCentFMD     ;      //control histogram for centrality
232   TH1F *fHOutCentTRK     ;      //control histogram for centrality
233   TH1F *fHOutCentTKL     ;      //control histogram for centrality
234   TH1F *fHOutCentCL0     ;      //control histogram for centrality
235   TH1F *fHOutCentCL1     ;      //control histogram for centrality
236   TH1F *fHOutCentCND     ;      //control histogram for centrality
237   TH1F *fHOutCentNPA     ;      //control histogram for centrality
238   TH1F *fHOutCentZNA     ;      //control histogram for centrality
239   TH1F *fHOutCentZNC     ;      //control histogram for centrality
240   TH1F *fHOutCentZPA     ;      //control histogram for centrality
241   TH1F *fHOutCentZPC     ;      //control histogram for centrality
242   TH1F *fHOutCentV0MvsFMD;      //control histogram for centrality
243   TH1F *fHOutCentTKLvsV0M;      //control histogram for centrality
244   TH1F *fHOutCentZEMvsZDC;      //control histogram for centrality
245   TH2F *fHOutCentV0MvsCentCL1;  //control histogram for centrality
246   TH2F *fHOutCentV0MvsCentTRK;  //control histogram for centrality
247   TH2F *fHOutCentTRKvsCentCL1;  //control histogram for centrality
248   TH2F *fHOutCentV0MvsCentZDC;  //control histogram for centrality
249   TH2F *fHOutCentV0AvsCentV0C;  //control histogram for centrality
250   TH2F *fHOutCentV0AvsCentTRK;  //control histogram for centrality
251   TH2F *fHOutCentV0AvsCentCND;  //control histogram for centrality
252   TH2F *fHOutCentV0AvsCentCL1;  //control histogram for centrality
253   TH2F *fHOutCentV0CvsCentTRK;  //control histogram for centrality
254   TH2F *fHOutCentV0CvsCentCND;  //control histogram for centrality
255   TH2F *fHOutCentV0CvsCentCL1;  //control histogram for centrality
256   TH2F *fHOutCentNPAvsCentV0A;  //control histogram for centrality
257   TH2F *fHOutCentNPAvsCentV0C;  //control histogram for centrality
258   TH2F *fHOutCentNPAvsCentTRK;  //control histogram for centrality
259   TH2F *fHOutCentNPAvsCentCND;  //control histogram for centrality
260   TH2F *fHOutCentNPAvsCentCL1;  //control histogram for centrality
261   TH2F *fHOutCentZNAvsCentV0A;  //control histogram for centrality
262   TH2F *fHOutCentZNAvsCentV0C;  //control histogram for centrality
263   TH2F *fHOutCentZNAvsCentTRK;  //control histogram for centrality
264   TH2F *fHOutCentZNAvsCentCND;  //control histogram for centrality
265   TH2F *fHOutCentZNAvsCentCL1;  //control histogram for centrality
266   TH2F *fHOutCentZNAvsCentZPA;  //control histogram for centrality
267
268   TH2F *fHOutMultV0AC;          //control histogram for multiplicity
269   TH1F *fHOutMultV0M ;          //control histogram for multiplicity
270   TH1F *fHOutMultV0A ;          //control histogram for multiplicity
271   TH1F *fHOutMultV0A0 ;         //control histogram for multiplicity
272   TH1F *fHOutMultV0A123 ;       //control histogram for multiplicity
273   TH1F *fHOutMultV0C ;          //control histogram for multiplicity
274   TH1F *fHOutMultV0A23 ;        //control histogram for multiplicity
275   TH1F *fHOutMultV0C01 ;        //control histogram for multiplicity
276   TH1F *fHOutMultV0S   ;        //control histogram for multiplicity
277   TH1F *fHOutMultV0MEq ;        //control histogram for multiplicity
278   TH1F *fHOutMultV0AEq ;        //control histogram for multiplicity
279   TH1F *fHOutMultV0CEq ;        //control histogram for multiplicity
280   TH1F *fHOutMultV0Mnc ;        //control histogram for multiplicity
281   TH1F *fHOutMultV0Anc ;        //control histogram for multiplicity
282   TH1F *fHOutMultV0Cnc ;        //control histogram for multiplicity
283   TH1F *fHOutMultV0O ;          //control histogram for multiplicity
284   TH2F *fHOutMultV0Cells ;      //control histogram for multiplicity
285   TH1F *fHOutMultFMD ;          //control histogram for multiplicity
286   TH1F *fHOutMultTRK ;          //control histogram for multiplicity
287   TH1F *fHOutMultTKL ;          //control histogram for multiplicity
288   TH1F *fHOutMultCL0 ;          //control histogram for multiplicity
289   TH1F *fHOutMultCL1 ;          //control histogram for multiplicity
290   TH1F *fHOutMultCND ;          //control histogram for multiplicity
291   TH1F *fHOutMultNPA ;          //control histogram for multiplicity
292   TH1F *fHOutMultZNA ;          //control histogram for multiplicity
293   TH1F *fHOutMultZNC ;          //control histogram for multiplicity
294   TH1F *fHOutMultZPA ;          //control histogram for multiplicity
295   TH1F *fHOutMultZPC ;          //control histogram for multiplicity
296
297   TH2F *fHOutMultV0MvsZDN;      //control histogram for multiplicity
298   TH2F *fHOutMultZEMvsZDN;      //control histogram for multiplicity
299   TH2F *fHOutMultV0MvsZDC;      //control histogram for multiplicity
300   TH2F *fHOutMultZEMvsZDC;      //control histogram for multiplicity
301   TH2F *fHOutMultZEMvsZDCw;     //control histogram for multiplicity
302   TH2F *fHOutMultV0MvsCL1;      //control histogram for multiplicity
303   TH2F *fHOutMultV0MvsTRK;      //control histogram for multiplicity
304   TH2F *fHOutMultTRKvsCL1;      //control histogram for multiplicity
305   TH2F *fHOutMultV0MvsV0O;      //control histogram for multiplicity
306   TH2F *fHOutMultV0OvsCL1;      //control histogram for multiplicity
307   TH2F *fHOutMultV0OvsTRK;      //control histogram for multiplicity
308   TH2F *fHOutMultCL1vsTKL;      //control histogram for multiplicity
309   TH2F *fHOutMultZNAvsZPA;      //control histogram for multiplicity
310
311   TH1F *fHOutCentV0Mqual1     ; //control histogram for centrality quality 1
312   TH1F *fHOutCentTRKqual1     ; //control histogram for centrality quality 1
313   TH1F *fHOutCentCL1qual1     ; //control histogram for centrality quality 1
314   TH2F *fHOutMultV0MvsCL1qual1; //control histogram for multiplicity quality 1
315   TH2F *fHOutMultV0MvsTRKqual1; //control histogram for multiplicity quality 1
316   TH2F *fHOutMultTRKvsCL1qual1; //control histogram for multiplicity quality 1
317
318   TH1F *fHOutCentV0Mqual2     ; //control histogram for centrality quality 2
319   TH1F *fHOutCentTRKqual2     ; //control histogram for centrality quality 2
320   TH1F *fHOutCentCL1qual2     ; //control histogram for centrality quality 2
321   TH2F *fHOutMultV0MvsCL1qual2; //control histogram for multiplicity quality 2
322   TH2F *fHOutMultV0MvsTRKqual2; //control histogram for multiplicity quality 2
323   TH2F *fHOutMultTRKvsCL1qual2; //control histogram for multiplicity quality 2
324
325   TH1F *fHOutQuality ;          //control histogram for quality
326   TH1F *fHOutVertex ;           //control histogram for vertex SPD
327   TH1F *fHOutVertexT0 ;         //control histogram for vertex T0
328
329   ClassDef(AliCentralitySelectionTask, 31); 
330 };
331
332 #endif
333