d1c82aa4d88358322e09b7040fbaa3cc8958ec15
[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 SetPass(Int_t pass)                 {fPass = pass;}
41   void DontUseScaling()                    {fUseScaling=kFALSE;}  
42   void DontUseCleaning()                   {fUseCleaning=kFALSE;}
43   void ReadCentralityHistos(TString filename);
44   void ReadCentralityHistos2(TString filename);
45  private:
46
47   Int_t SetupRun(AliESDEvent* 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   Float_t MyGetScaleFactor(Int_t runnumber, Int_t flag) const; 
53   void MyInitScaleFactor();
54   Float_t MyGetScaleFactorMC(Int_t runnumber) const; 
55   void MyInitScaleFactorMC();
56
57   TString  fAnalysisInput;      // "ESD", "AOD"
58   Bool_t   fIsMCInput;          // true when input is MC
59   Int_t    fPass;               // pass of reconstruction
60   TFile   *fFile;               // file that holds the centrality vs multiplicity 1d
61   TFile   *fFile2;              // file that holds the centrality vs multiplicity 2d  
62   Int_t    fCurrentRun;         // current run number
63   Int_t    fRunNo;              // reference run number
64   Int_t    fLowRunN;            // first run  
65   Int_t    fHighRunN;           // last run
66   Bool_t   fUseScaling;         // flag to use scaling 
67   Bool_t   fUseCleaning;        // flag to use cleanin  
68   Float_t  fV0MScaleFactor[2667];   // number of runs in PbPb 2010
69   Float_t  fSPDScaleFactor[2667];   // number of runs in PbPb 2010
70   Float_t  fTPCScaleFactor[2667];   // number of runs in PbPb 2010
71   Float_t  fV0MScaleFactorMC[2667]; // number of runs in PbPb 2010
72
73   AliESDtrackCuts* fTrackCuts;  //! optional track cuts
74
75   Float_t  fZVCut;              //! z-vertex cut (in cm)
76   Float_t  fOutliersCut;        //! outliers cut (in n-sigma)
77   Int_t    fQuality;            //! quality for centrality determination
78
79   Float_t  fCentV0M;            // percentile centrality from V0
80   Float_t  fCentFMD;            // percentile centrality from FMD
81   Float_t  fCentTRK;            // percentile centrality from tracks
82   Float_t  fCentTKL;            // percentile centrality from tracklets
83   Float_t  fCentCL0;            // percentile centrality from clusters in layer 0
84   Float_t  fCentCL1;            // percentile centrality from clusters in layer 0
85   Float_t  fCentV0MvsFMD;       // percentile centrality from V0 vs FMD
86   Float_t  fCentTKLvsV0M;       // percentile centrality from tracklets vs V0
87   Float_t  fCentZEMvsZDC;       // percentile centrality from ZEM vs ZDC
88
89   TH1F    *fHtempV0M;           // histogram with centrality vs multiplicity using V0
90   TH1F    *fHtempFMD;           // histogram with centrality vs multiplicity using FMD
91   TH1F    *fHtempTRK;           // histogram with centrality vs multiplicity using tracks
92   TH1F    *fHtempTKL;           // histogram with centrality vs multiplicity using tracklets
93   TH1F    *fHtempCL0;           // histogram with centrality vs multiplicity using clusters in layer 0
94   TH1F    *fHtempCL1;           // histogram with centrality vs multiplicity using clusters in layer 0
95   TH1F    *fHtempV0MvsFMD;           // histogram with centrality vs multiplicity using V0 vs FMD   
96   TH1F    *fHtempTKLvsV0M;           // histogram with centrality vs multiplicity using tracklets vs V0
97   TH2F    *fHtempZEMvsZDC;           // histogram with centrality vs multiplicity using ZEM vs ZDC 
98
99   TList   *fOutputList; // output list
100   
101   TH1F *fHOutCentV0M     ;    //control histogram for centrality
102   TH1F *fHOutCentFMD     ;    //control histogram for centrality
103   TH1F *fHOutCentTRK     ;    //control histogram for centrality
104   TH1F *fHOutCentTKL     ;    //control histogram for centrality
105   TH1F *fHOutCentCL0     ;    //control histogram for centrality
106   TH1F *fHOutCentCL1     ;    //control histogram for centrality
107   TH1F *fHOutCentV0MvsFMD;    //control histogram for centrality
108   TH1F *fHOutCentTKLvsV0M;    //control histogram for centrality
109   TH1F *fHOutCentZEMvsZDC;    //control histogram for centrality
110   TH2F *fHOutCentV0MvsCentCL1;    //control histogram for centrality
111   TH2F *fHOutCentV0MvsCentTRK;    //control histogram for centrality
112   TH2F *fHOutCentTRKvsCentCL1;    //control histogram for centrality
113   TH2F *fHOutCentV0MvsCentZDC;    //control histogram for centrality
114
115   TH1F *fHOutMultV0M ;        //control histogram for multiplicity
116   TH1F *fHOutMultV0R ;        //control histogram for multiplicity
117   TH1F *fHOutMultFMD ;        //control histogram for multiplicity
118   TH1F *fHOutMultTRK ;        //control histogram for multiplicity
119   TH1F *fHOutMultTKL ;        //control histogram for multiplicity
120   TH1F *fHOutMultCL0 ;        //control histogram for multiplicity
121   TH1F *fHOutMultCL1 ;        //control histogram for multiplicity
122
123   TH2F *fHOutMultV0MvsZDN;    //control histogram for multiplicity
124   TH2F *fHOutMultZEMvsZDN;    //control histogram for multiplicity
125   TH2F *fHOutMultV0MvsZDC;    //control histogram for multiplicity
126   TH2F *fHOutMultZEMvsZDC;    //control histogram for multiplicity
127   TH2F *fHOutMultZEMvsZDCw;   //control histogram for multiplicity
128   TH2F *fHOutMultV0MvsCL1;    //control histogram for multiplicity
129   TH2F *fHOutMultV0MvsTRK;    //control histogram for multiplicity
130   TH2F *fHOutMultTRKvsCL1;    //control histogram for multiplicity
131
132   TH1F *fHOutCentV0Mqual1     ;    //control histogram for centrality quality 1
133   TH1F *fHOutCentTRKqual1     ;    //control histogram for centrality quality 1
134   TH1F *fHOutCentCL1qual1     ;    //control histogram for centrality quality 1
135   TH2F *fHOutMultV0MvsCL1qual1;    //control histogram for multiplicity quality 1
136   TH2F *fHOutMultV0MvsTRKqual1;    //control histogram for multiplicity quality 1
137   TH2F *fHOutMultTRKvsCL1qual1;    //control histogram for multiplicity quality 1
138
139   TH1F *fHOutCentV0Mqual2     ;    //control histogram for centrality quality 2
140   TH1F *fHOutCentTRKqual2     ;    //control histogram for centrality quality 2
141   TH1F *fHOutCentCL1qual2     ;    //control histogram for centrality quality 2
142   TH2F *fHOutMultV0MvsCL1qual2;    //control histogram for multiplicity quality 2
143   TH2F *fHOutMultV0MvsTRKqual2;    //control histogram for multiplicity quality 2
144   TH2F *fHOutMultTRKvsCL1qual2;    //control histogram for multiplicity quality 2
145
146   TH1F *fHOutQuality ;        //control histogram for quality
147   TH1F *fHOutVertex ;        //control histogram for vertex
148
149   ClassDef(AliCentralitySelectionTask, 10); 
150 };
151
152 #endif
153