Implementation of ZPA centrality estimator.
[u/mrichter/AliRoot.git] / STEER / STEERBase / AliCentrality.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 //*****************************************************
17 //   Class AliCentrality
18 //   author: Alberica Toia
19 //*****************************************************
20 /// A container for the centrality stored in AOD in ESD
21  
22 #include "AliCentrality.h"
23
24 ClassImp(AliCentrality)
25
26 AliCentrality::AliCentrality() : TNamed("Centrality", "Centrality"),
27   fQuality(999),
28   fCentralityV0M(0),
29   fCentralityV0A(0),
30   fCentralityV0C(0),
31   fCentralityV0MEq(0),
32   fCentralityV0AEq(0),
33   fCentralityV0CEq(0),
34   fCentralityFMD(0),
35   fCentralityTRK(0),
36   fCentralityTKL(0),
37   fCentralityCL0(0),
38   fCentralityCL1(0),
39   fCentralityCND(0),
40   fCentralityZNA(0),
41   fCentralityZNC(0),
42   fCentralityZPA(0),
43   fCentralityZPC(0),
44   fCentralityNPA(0),
45   fCentralityV0MvsFMD(0),
46   fCentralityTKLvsV0M(0),
47   fCentralityZEMvsZDC(0),
48   fCentralityV0Mtrue(0),
49   fCentralityV0Atrue(0),
50   fCentralityV0Ctrue(0),
51   fCentralityV0MEqtrue(0),
52   fCentralityV0AEqtrue(0),
53   fCentralityV0CEqtrue(0),
54   fCentralityFMDtrue(0),
55   fCentralityTRKtrue(0),
56   fCentralityTKLtrue(0),
57   fCentralityCL0true(0),
58   fCentralityCL1true(0),
59   fCentralityCNDtrue(0),
60   fCentralityZNAtrue(0),
61   fCentralityZNCtrue(0),
62   fCentralityZPAtrue(0),
63   fCentralityZPCtrue(0)
64 {
65   /// constructor
66 }
67
68 AliCentrality::AliCentrality(const AliCentrality& cnt) : 
69   TNamed(cnt),
70   fQuality(cnt.fQuality), 
71   fCentralityV0M(cnt.fCentralityV0M),
72   fCentralityV0A(cnt.fCentralityV0A),
73   fCentralityV0C(cnt.fCentralityV0C),
74   fCentralityV0MEq(cnt.fCentralityV0MEq),
75   fCentralityV0AEq(cnt.fCentralityV0AEq),
76   fCentralityV0CEq(cnt.fCentralityV0CEq),
77   fCentralityFMD(cnt.fCentralityFMD),
78   fCentralityTRK(cnt.fCentralityTRK),
79   fCentralityTKL(cnt.fCentralityTKL),
80   fCentralityCL0(cnt.fCentralityCL0),
81   fCentralityCL1(cnt.fCentralityCL1),
82   fCentralityCND(cnt.fCentralityCND),
83   fCentralityZNA(cnt.fCentralityZNA),
84   fCentralityZNC(cnt.fCentralityZNC),
85   fCentralityZPA(cnt.fCentralityZPA),
86   fCentralityZPC(cnt.fCentralityZPC),
87   fCentralityNPA(cnt.fCentralityNPA),
88   fCentralityV0MvsFMD(cnt.fCentralityV0MvsFMD),
89   fCentralityTKLvsV0M(cnt.fCentralityTKLvsV0M),
90   fCentralityZEMvsZDC(cnt.fCentralityZEMvsZDC),
91   fCentralityV0Mtrue(cnt.fCentralityV0Mtrue),
92   fCentralityV0Atrue(cnt.fCentralityV0Atrue),
93   fCentralityV0Ctrue(cnt.fCentralityV0Ctrue),
94   fCentralityV0MEqtrue(cnt.fCentralityV0MEqtrue),
95   fCentralityV0AEqtrue(cnt.fCentralityV0AEqtrue),
96   fCentralityV0CEqtrue(cnt.fCentralityV0CEqtrue),
97   fCentralityFMDtrue(cnt.fCentralityFMDtrue),
98   fCentralityTRKtrue(cnt.fCentralityTRKtrue),
99   fCentralityTKLtrue(cnt.fCentralityTKLtrue),
100   fCentralityCL0true(cnt.fCentralityCL0true),
101   fCentralityCL1true(cnt.fCentralityCL1true),
102   fCentralityCNDtrue(cnt.fCentralityCNDtrue),
103   fCentralityZNAtrue(cnt.fCentralityZNAtrue),
104   fCentralityZNCtrue(cnt.fCentralityZNCtrue),
105   fCentralityZPAtrue(cnt.fCentralityZPAtrue),
106   fCentralityZPCtrue(cnt.fCentralityZPCtrue)
107 {
108   /// Copy constructor
109 }
110
111 AliCentrality& AliCentrality::operator=(const AliCentrality& c)
112 {
113   /// Assignment operator
114   if (this!=&c) {
115     TNamed::operator=(c);
116     fQuality = c.fQuality;
117     fCentralityV0M = c.fCentralityV0M;
118     fCentralityV0A = c.fCentralityV0A;
119     fCentralityV0C = c.fCentralityV0C;
120     fCentralityV0MEq = c.fCentralityV0MEq;
121     fCentralityV0AEq = c.fCentralityV0AEq;
122     fCentralityV0CEq = c.fCentralityV0CEq;
123     fCentralityFMD = c.fCentralityFMD;
124     fCentralityTRK = c.fCentralityTRK;
125     fCentralityTKL = c.fCentralityTKL;
126     fCentralityCL0 = c.fCentralityCL0;
127     fCentralityCL1 = c.fCentralityCL1;
128     fCentralityCND = c.fCentralityCND;
129     fCentralityZNA = c.fCentralityZNA;
130     fCentralityZNC = c.fCentralityZNC;
131     fCentralityZPA = c.fCentralityZPA;
132     fCentralityZPC = c.fCentralityZPC;
133     fCentralityNPA = c.fCentralityNPA;
134     fCentralityV0MvsFMD = c.fCentralityV0MvsFMD;
135     fCentralityTKLvsV0M = c.fCentralityTKLvsV0M;
136     fCentralityZEMvsZDC = c.fCentralityZEMvsZDC;
137     fCentralityV0Mtrue = c.fCentralityV0Mtrue;
138     fCentralityV0Atrue = c.fCentralityV0Atrue;
139     fCentralityV0Ctrue = c.fCentralityV0Ctrue;
140     fCentralityV0MEqtrue = c.fCentralityV0MEqtrue;
141     fCentralityV0AEqtrue = c.fCentralityV0AEqtrue;
142     fCentralityV0CEqtrue = c.fCentralityV0CEqtrue;
143     fCentralityFMDtrue = c.fCentralityFMDtrue;
144     fCentralityTRKtrue = c.fCentralityTRKtrue;
145     fCentralityTKLtrue = c.fCentralityTKLtrue;
146     fCentralityCL0true = c.fCentralityCL0true;
147     fCentralityCL1true = c.fCentralityCL1true;
148     fCentralityCNDtrue = c.fCentralityCNDtrue;
149     fCentralityZNAtrue = c.fCentralityZNAtrue;
150     fCentralityZNCtrue = c.fCentralityZNCtrue;
151     fCentralityZPAtrue = c.fCentralityZPAtrue;
152     fCentralityZPCtrue = c.fCentralityZPCtrue;
153   }
154
155   return *this;
156 }
157
158 AliCentrality::~AliCentrality()
159 {
160   /// destructor
161 }
162
163 Int_t AliCentrality::GetQuality() const
164 {
165   return fQuality;
166 }
167
168 Float_t AliCentrality::GetCentralityPercentile(const char *x) const
169 {
170 // Return the centrality percentile
171   if (fQuality == 0) {
172     TString method = x;
173     if(method.CompareTo("V0M")==0)      return fCentralityV0M;
174     if(method.CompareTo("V0A")==0)      return fCentralityV0A;
175     if(method.CompareTo("V0C")==0)      return fCentralityV0C;
176     if(method.CompareTo("V0MEq")==0)    return fCentralityV0MEq;
177     if(method.CompareTo("V0AEq")==0)    return fCentralityV0AEq;
178     if(method.CompareTo("V0CEq")==0)    return fCentralityV0CEq;
179     if(method.CompareTo("FMD")==0)      return fCentralityFMD;
180     if(method.CompareTo("TRK")==0)      return fCentralityTRK;
181     if(method.CompareTo("TKL")==0)      return fCentralityTKL;
182     if(method.CompareTo("CL0")==0)      return fCentralityCL0;
183     if(method.CompareTo("CL1")==0)      return fCentralityCL1;
184     if(method.CompareTo("CND")==0)      return fCentralityCND;
185     if(method.CompareTo("ZNA")==0)      return fCentralityZNA;
186     if(method.CompareTo("ZNC")==0)      return fCentralityZNC;
187     if(method.CompareTo("ZPA")==0)      return fCentralityZPA;
188     if(method.CompareTo("ZPC")==0)      return fCentralityZPC;
189     if(method.CompareTo("NPA")==0)      return fCentralityNPA;
190     if(method.CompareTo("V0MvsFMD")==0) return fCentralityV0MvsFMD;
191     if(method.CompareTo("TKLvsV0M")==0) return fCentralityTKLvsV0M;
192     if(method.CompareTo("ZEMvsZDC")==0) return fCentralityZEMvsZDC;
193     if(method.CompareTo("V0Mtrue")==0)      return fCentralityV0Mtrue;
194     if(method.CompareTo("V0Atrue")==0)      return fCentralityV0Atrue;
195     if(method.CompareTo("V0Ctrue")==0)      return fCentralityV0Ctrue;
196     if(method.CompareTo("V0MEqtrue")==0)    return fCentralityV0MEqtrue;
197     if(method.CompareTo("V0AEqtrue")==0)    return fCentralityV0AEqtrue;
198     if(method.CompareTo("V0CEqtrue")==0)    return fCentralityV0CEqtrue;
199     if(method.CompareTo("FMDtrue")==0)      return fCentralityFMDtrue;
200     if(method.CompareTo("TRKtrue")==0)      return fCentralityTRKtrue;
201     if(method.CompareTo("TKLtrue")==0)      return fCentralityTKLtrue;
202     if(method.CompareTo("CL0true")==0)      return fCentralityCL0true;
203     if(method.CompareTo("CL1true")==0)      return fCentralityCL1true;
204     if(method.CompareTo("CNDtrue")==0)      return fCentralityCNDtrue;
205     if(method.CompareTo("ZNAtrue")==0)      return fCentralityZNAtrue;
206     if(method.CompareTo("ZNCtrue")==0)      return fCentralityZNCtrue;
207     if(method.CompareTo("ZPAtrue")==0)      return fCentralityZPAtrue;
208     if(method.CompareTo("ZPCtrue")==0)      return fCentralityZPCtrue;
209     return -1;
210   } else {
211     return -1;
212   }
213 }
214
215 Int_t AliCentrality::GetCentralityClass10(const char *x) const
216 {
217 // Return the centrality class
218   if (fQuality == 0) {
219     TString method = x;
220     if(method.CompareTo("V0M")==0)      return (Int_t) (fCentralityV0M / 10.0);
221     if(method.CompareTo("V0A")==0)      return (Int_t) (fCentralityV0A / 10.0);
222     if(method.CompareTo("V0C")==0)      return (Int_t) (fCentralityV0C / 10.0);
223     if(method.CompareTo("V0MEq")==0)    return (Int_t) (fCentralityV0MEq / 10.0);
224     if(method.CompareTo("V0AEq")==0)    return (Int_t) (fCentralityV0AEq / 10.0);
225     if(method.CompareTo("V0CEq")==0)    return (Int_t) (fCentralityV0CEq / 10.0);
226     if(method.CompareTo("FMD")==0)      return (Int_t) (fCentralityFMD / 10.0);
227     if(method.CompareTo("TRK")==0)      return (Int_t) (fCentralityTRK / 10.0);
228     if(method.CompareTo("TKL")==0)      return (Int_t) (fCentralityTKL / 10.0);
229     if(method.CompareTo("CL0")==0)      return (Int_t) (fCentralityCL0 / 10.0);
230     if(method.CompareTo("CL1")==0)      return (Int_t) (fCentralityCL1 / 10.0);
231     if(method.CompareTo("CND")==0)      return (Int_t) (fCentralityCND / 10.0);
232     if(method.CompareTo("ZNA")==0)      return (Int_t) (fCentralityZNA / 10.0);
233     if(method.CompareTo("ZNC")==0)      return (Int_t) (fCentralityZNC / 10.0);
234     if(method.CompareTo("ZPA")==0)      return (Int_t) (fCentralityZPA / 10.0);
235     if(method.CompareTo("ZPC")==0)      return (Int_t) (fCentralityZPC / 10.0);
236     if(method.CompareTo("NPA")==0)      return (Int_t) (fCentralityNPA / 10.0);
237     if(method.CompareTo("V0MvsFMD")==0) return (Int_t) (fCentralityV0MvsFMD / 10.0);
238     if(method.CompareTo("TKLvsV0M")==0) return (Int_t) (fCentralityTKLvsV0M / 10.0);
239     if(method.CompareTo("ZEMvsZDC")==0) return (Int_t) (fCentralityZEMvsZDC / 10.0);
240     if(method.CompareTo("V0Mtrue")==0)  return (Int_t) (fCentralityV0Mtrue / 10.0);
241     if(method.CompareTo("V0Atrue")==0)  return (Int_t) (fCentralityV0Atrue / 10.0);
242     if(method.CompareTo("V0Ctrue")==0)  return (Int_t) (fCentralityV0Ctrue / 10.0);
243     if(method.CompareTo("V0MEqtrue")==0)return (Int_t) (fCentralityV0MEqtrue / 10.0);
244     if(method.CompareTo("V0AEqtrue")==0)return (Int_t) (fCentralityV0AEqtrue / 10.0);
245     if(method.CompareTo("V0CEqtrue")==0)return (Int_t) (fCentralityV0CEqtrue / 10.0);
246     if(method.CompareTo("FMDtrue")==0)  return (Int_t) (fCentralityFMDtrue / 10.0);
247     if(method.CompareTo("TRKtrue")==0)  return (Int_t) (fCentralityTRKtrue / 10.0);
248     if(method.CompareTo("TKLtrue")==0)  return (Int_t) (fCentralityTKLtrue / 10.0);
249     if(method.CompareTo("CL0true")==0)  return (Int_t) (fCentralityCL0true / 10.0);
250     if(method.CompareTo("CL1true")==0)  return (Int_t) (fCentralityCL1true / 10.0);
251     if(method.CompareTo("CNDtrue")==0)  return (Int_t) (fCentralityCNDtrue / 10.0);
252     if(method.CompareTo("ZNAtrue")==0)  return (Int_t) (fCentralityZNAtrue / 10.0);
253     if(method.CompareTo("ZNCtrue")==0)  return (Int_t) (fCentralityZNCtrue / 10.0);
254     if(method.CompareTo("ZPAtrue")==0)  return (Int_t) (fCentralityZPAtrue / 10.0);
255     if(method.CompareTo("ZPCtrue")==0)  return (Int_t) (fCentralityZPCtrue / 10.0);
256     return -1;
257   } else {
258     return -1;
259   }
260 }
261
262 Int_t AliCentrality::GetCentralityClass5(const char *x) const
263 {
264 // Return the centrality class
265   if (fQuality == 0) {
266     TString method = x;
267     if(method.CompareTo("V0M")==0)      return (Int_t) (fCentralityV0M / 5.0);
268     if(method.CompareTo("V0A")==0)      return (Int_t) (fCentralityV0A / 5.0);
269     if(method.CompareTo("V0C")==0)      return (Int_t) (fCentralityV0C / 5.0);
270     if(method.CompareTo("V0MEq")==0)    return (Int_t) (fCentralityV0MEq / 5.0);
271     if(method.CompareTo("V0AEq")==0)    return (Int_t) (fCentralityV0AEq / 5.0);
272     if(method.CompareTo("V0CEq")==0)    return (Int_t) (fCentralityV0CEq / 5.0);
273     if(method.CompareTo("FMD")==0)      return (Int_t) (fCentralityFMD / 5.0);
274     if(method.CompareTo("TRK")==0)      return (Int_t) (fCentralityTRK / 5.0);
275     if(method.CompareTo("TKL")==0)      return (Int_t) (fCentralityTKL / 5.0);
276     if(method.CompareTo("CL0")==0)      return (Int_t) (fCentralityCL0 / 5.0);
277     if(method.CompareTo("CL1")==0)      return (Int_t) (fCentralityCL1 / 5.0);
278     if(method.CompareTo("CND")==0)      return (Int_t) (fCentralityCND / 5.0);
279     if(method.CompareTo("ZNA")==0)      return (Int_t) (fCentralityZNA / 5.0);
280     if(method.CompareTo("ZNC")==0)      return (Int_t) (fCentralityZNC / 5.0);
281     if(method.CompareTo("ZPA")==0)      return (Int_t) (fCentralityZPA / 5.0);
282     if(method.CompareTo("ZPC")==0)      return (Int_t) (fCentralityZPC / 5.0);
283     if(method.CompareTo("NPA")==0)      return (Int_t) (fCentralityNPA / 5.0);
284     if(method.CompareTo("V0MvsFMD")==0) return (Int_t) (fCentralityV0MvsFMD / 5.0);
285     if(method.CompareTo("TKLvsV0M")==0) return (Int_t) (fCentralityTKLvsV0M / 5.0);
286     if(method.CompareTo("ZEMvsZDC")==0) return (Int_t) (fCentralityZEMvsZDC / 5.0);
287     if(method.CompareTo("V0Mtrue")==0)  return (Int_t) (fCentralityV0Mtrue / 5.0);
288     if(method.CompareTo("V0Atrue")==0)  return (Int_t) (fCentralityV0Atrue / 5.0);
289     if(method.CompareTo("V0Ctrue")==0)  return (Int_t) (fCentralityV0Ctrue / 5.0);
290     if(method.CompareTo("V0MEqtrue")==0)return (Int_t) (fCentralityV0MEqtrue / 5.0);
291     if(method.CompareTo("V0AEqtrue")==0)return (Int_t) (fCentralityV0AEqtrue / 5.0);
292     if(method.CompareTo("V0CEqtrue")==0)return (Int_t) (fCentralityV0CEqtrue / 5.0);
293     if(method.CompareTo("FMDtrue")==0)  return (Int_t) (fCentralityFMDtrue / 5.0);
294     if(method.CompareTo("TRKtrue")==0)  return (Int_t) (fCentralityTRKtrue / 5.0);
295     if(method.CompareTo("TKLtrue")==0)  return (Int_t) (fCentralityTKLtrue / 5.0);
296     if(method.CompareTo("CL0true")==0)  return (Int_t) (fCentralityCL0true / 5.0);
297     if(method.CompareTo("CL1true")==0)  return (Int_t) (fCentralityCL1true / 5.0);
298     if(method.CompareTo("CNDtrue")==0)  return (Int_t) (fCentralityCNDtrue / 5.0);
299     if(method.CompareTo("ZNAtrue")==0)  return (Int_t) (fCentralityZNAtrue / 5.0);
300     if(method.CompareTo("ZNCtrue")==0)  return (Int_t) (fCentralityZNCtrue / 5.0);
301     if(method.CompareTo("ZPAtrue")==0)  return (Int_t) (fCentralityZPAtrue / 5.0);
302     if(method.CompareTo("ZPCtrue")==0)  return (Int_t) (fCentralityZPCtrue / 5.0);
303     return -1;
304   } else {
305     return -1;
306   }
307 }
308
309
310 Bool_t AliCentrality::IsEventInCentralityClass(Float_t a, Float_t b, const char *x) const
311 {
312 // True if event is inside a given class
313   if (fQuality == 0) {
314     TString method = x;
315     if ((method.CompareTo("V0M")==0) && (fCentralityV0M >=a && fCentralityV0M < b)) return kTRUE;
316     if ((method.CompareTo("V0A")==0) && (fCentralityV0A >=a && fCentralityV0A < b)) return kTRUE;
317     if ((method.CompareTo("V0C")==0) && (fCentralityV0C >=a && fCentralityV0C < b)) return kTRUE;
318     if ((method.CompareTo("V0MEq")==0) && (fCentralityV0MEq >=a && fCentralityV0MEq < b)) return kTRUE;
319     if ((method.CompareTo("V0AEq")==0) && (fCentralityV0AEq >=a && fCentralityV0AEq < b)) return kTRUE;
320     if ((method.CompareTo("V0CEq")==0) && (fCentralityV0CEq >=a && fCentralityV0CEq < b)) return kTRUE;
321     if ((method.CompareTo("FMD")==0) && (fCentralityFMD >=a && fCentralityFMD < b)) return kTRUE;
322     if ((method.CompareTo("TRK")==0) && (fCentralityTRK >=a && fCentralityTRK < b)) return kTRUE;
323     if ((method.CompareTo("TKL")==0) && (fCentralityTKL >=a && fCentralityTKL < b)) return kTRUE;
324     if ((method.CompareTo("CL0")==0) && (fCentralityCL0 >=a && fCentralityCL0 < b)) return kTRUE;
325     if ((method.CompareTo("CL1")==0) && (fCentralityCL1 >=a && fCentralityCL1 < b)) return kTRUE;
326     if ((method.CompareTo("CND")==0) && (fCentralityCND >=a && fCentralityCND < b)) return kTRUE;
327     if ((method.CompareTo("ZNA")==0) && (fCentralityZNA >=a && fCentralityZNA < b)) return kTRUE;
328     if ((method.CompareTo("ZNC")==0) && (fCentralityZNC >=a && fCentralityZNC < b)) return kTRUE;
329     if ((method.CompareTo("ZPA")==0) && (fCentralityZPA >=a && fCentralityZPA < b)) return kTRUE;
330     if ((method.CompareTo("ZPC")==0) && (fCentralityZPC >=a && fCentralityZPC < b)) return kTRUE;
331     if ((method.CompareTo("NPA")==0) && (fCentralityNPA >=a && fCentralityNPA < b)) return kTRUE;
332     if ((method.CompareTo("V0MvsFMD")==0) && (fCentralityV0MvsFMD >=a && fCentralityV0MvsFMD < b)) return kTRUE;
333     if ((method.CompareTo("TKLvsV0M")==0) && (fCentralityTKLvsV0M >=a && fCentralityTKLvsV0M < b)) return kTRUE;
334     if ((method.CompareTo("ZEMvsZDC")==0) && (fCentralityZEMvsZDC >=a && fCentralityZEMvsZDC < b)) return kTRUE;
335     if ((method.CompareTo("V0Mtrue")==0) && (fCentralityV0Mtrue >=a && fCentralityV0Mtrue < b)) return kTRUE;
336     if ((method.CompareTo("V0Atrue")==0) && (fCentralityV0Atrue >=a && fCentralityV0Atrue < b)) return kTRUE;
337     if ((method.CompareTo("V0Ctrue")==0) && (fCentralityV0Ctrue >=a && fCentralityV0Ctrue < b)) return kTRUE;
338     if ((method.CompareTo("V0MEqtrue")==0) && (fCentralityV0MEqtrue >=a && fCentralityV0MEqtrue < b)) return kTRUE;
339     if ((method.CompareTo("V0AEqtrue")==0) && (fCentralityV0AEqtrue >=a && fCentralityV0AEqtrue < b)) return kTRUE;
340     if ((method.CompareTo("V0CEqtrue")==0) && (fCentralityV0CEqtrue >=a && fCentralityV0CEqtrue < b)) return kTRUE;
341     if ((method.CompareTo("FMDtrue")==0) && (fCentralityFMDtrue >=a && fCentralityFMDtrue < b)) return kTRUE;
342     if ((method.CompareTo("TRKtrue")==0) && (fCentralityTRKtrue >=a && fCentralityTRKtrue < b)) return kTRUE;
343     if ((method.CompareTo("TKLtrue")==0) && (fCentralityTKLtrue >=a && fCentralityTKLtrue < b)) return kTRUE;
344     if ((method.CompareTo("CL0true")==0) && (fCentralityCL0true >=a && fCentralityCL0true < b)) return kTRUE;
345     if ((method.CompareTo("CL1true")==0) && (fCentralityCL1true >=a && fCentralityCL1true < b)) return kTRUE;
346     if ((method.CompareTo("CNDtrue")==0) && (fCentralityCNDtrue >=a && fCentralityCNDtrue < b)) return kTRUE;
347     if ((method.CompareTo("ZNAtrue")==0) && (fCentralityZNAtrue >=a && fCentralityZNAtrue < b)) return kTRUE;
348     if ((method.CompareTo("ZNCtrue")==0) && (fCentralityZNCtrue >=a && fCentralityZNCtrue < b)) return kTRUE;
349     if ((method.CompareTo("ZPAtrue")==0) && (fCentralityZPAtrue >=a && fCentralityZPAtrue < b)) return kTRUE;
350     if ((method.CompareTo("ZPCtrue")==0) && (fCentralityZPCtrue >=a && fCentralityZPCtrue < b)) return kTRUE;
351     else return kFALSE;
352   } else {
353     return kFALSE;
354   }
355 }
356
357 Float_t AliCentrality::GetCentralityPercentileUnchecked(const char *x) const
358 {
359 // Return the centrality percentile
360   TString method = x;
361   if(method.CompareTo("V0M")==0)      return fCentralityV0M;
362   if(method.CompareTo("V0A")==0)      return fCentralityV0A;
363   if(method.CompareTo("V0C")==0)      return fCentralityV0C;
364   if(method.CompareTo("V0MEq")==0)    return fCentralityV0MEq;
365   if(method.CompareTo("V0AEq")==0)    return fCentralityV0AEq;
366   if(method.CompareTo("V0CEq")==0)    return fCentralityV0CEq;
367   if(method.CompareTo("FMD")==0)      return fCentralityFMD;
368   if(method.CompareTo("TRK")==0)      return fCentralityTRK;
369   if(method.CompareTo("TKL")==0)      return fCentralityTKL;
370   if(method.CompareTo("CL0")==0)      return fCentralityCL0;
371   if(method.CompareTo("CL1")==0)      return fCentralityCL1;
372   if(method.CompareTo("CND")==0)      return fCentralityCND;
373   if(method.CompareTo("ZNA")==0)      return fCentralityZNA;
374   if(method.CompareTo("ZNC")==0)      return fCentralityZNC;
375   if(method.CompareTo("ZPA")==0)      return fCentralityZPA;
376   if(method.CompareTo("ZPC")==0)      return fCentralityZPC;
377   if(method.CompareTo("NPA")==0)      return fCentralityNPA;
378   if(method.CompareTo("V0MvsFMD")==0) return fCentralityV0MvsFMD;
379   if(method.CompareTo("TKLvsV0M")==0) return fCentralityTKLvsV0M;
380   if(method.CompareTo("ZEMvsZDC")==0) return fCentralityZEMvsZDC;
381   if(method.CompareTo("V0Mtrue")==0)  return fCentralityV0Mtrue;
382   if(method.CompareTo("V0Atrue")==0)  return fCentralityV0Atrue;
383   if(method.CompareTo("V0Ctrue")==0)  return fCentralityV0Ctrue;
384   if(method.CompareTo("V0MEqtrue")==0)    return fCentralityV0MEqtrue;
385   if(method.CompareTo("V0AEqtrue")==0)    return fCentralityV0AEqtrue;
386   if(method.CompareTo("V0CEqtrue")==0)    return fCentralityV0CEqtrue;
387   if(method.CompareTo("FMDtrue")==0)  return fCentralityFMDtrue;
388   if(method.CompareTo("TRKtrue")==0)  return fCentralityTRKtrue;
389   if(method.CompareTo("TKLtrue")==0)  return fCentralityTKLtrue;
390   if(method.CompareTo("CL0true")==0)  return fCentralityCL0true;
391   if(method.CompareTo("CL1true")==0)  return fCentralityCL1true;
392   if(method.CompareTo("CNDtrue")==0)  return fCentralityCNDtrue;
393   if(method.CompareTo("ZNAtrue")==0)  return fCentralityZNAtrue;
394   if(method.CompareTo("ZNCtrue")==0)  return fCentralityZNCtrue;
395   if(method.CompareTo("ZPAtrue")==0)  return fCentralityZPAtrue;
396   if(method.CompareTo("ZPCtrue")==0)  return fCentralityZPCtrue;
397   return -1;
398 }
399
400 Int_t AliCentrality::GetCentralityClass10Unchecked(const char *x) const
401 {
402 // Return the centrality class
403   TString method = x;
404     if(method.CompareTo("V0M")==0)      return (Int_t) (fCentralityV0M / 10.0);
405     if(method.CompareTo("V0A")==0)      return (Int_t) (fCentralityV0A / 10.0);
406     if(method.CompareTo("V0C")==0)      return (Int_t) (fCentralityV0C / 10.0);
407     if(method.CompareTo("V0MEq")==0)    return (Int_t) (fCentralityV0MEq / 10.0);
408     if(method.CompareTo("V0AEq")==0)    return (Int_t) (fCentralityV0AEq / 10.0);
409     if(method.CompareTo("V0CEq")==0)    return (Int_t) (fCentralityV0CEq / 10.0);
410     if(method.CompareTo("FMD")==0)      return (Int_t) (fCentralityFMD / 10.0);
411     if(method.CompareTo("TRK")==0)      return (Int_t) (fCentralityTRK / 10.0);
412     if(method.CompareTo("TKL")==0)      return (Int_t) (fCentralityTKL / 10.0);
413     if(method.CompareTo("CL0")==0)      return (Int_t) (fCentralityCL0 / 10.0);
414     if(method.CompareTo("CL1")==0)      return (Int_t) (fCentralityCL1 / 10.0);
415     if(method.CompareTo("CND")==0)      return (Int_t) (fCentralityCND / 10.0);
416     if(method.CompareTo("ZNA")==0)      return (Int_t) (fCentralityZNA / 10.0);
417     if(method.CompareTo("ZNC")==0)      return (Int_t) (fCentralityZNC / 10.0);
418     if(method.CompareTo("ZPA")==0)      return (Int_t) (fCentralityZPA / 10.0);
419     if(method.CompareTo("ZPC")==0)      return (Int_t) (fCentralityZPC / 10.0);
420     if(method.CompareTo("NPA")==0)      return (Int_t) (fCentralityNPA / 10.0);
421     if(method.CompareTo("V0MvsFMD")==0) return (Int_t) (fCentralityV0MvsFMD / 10.0);
422     if(method.CompareTo("TKLvsV0M")==0) return (Int_t) (fCentralityTKLvsV0M / 10.0);
423     if(method.CompareTo("ZEMvsZDC")==0) return (Int_t) (fCentralityZEMvsZDC / 10.0);
424     if(method.CompareTo("V0Mtrue")==0)  return (Int_t) (fCentralityV0Mtrue / 10.0);
425     if(method.CompareTo("V0Atrue")==0)  return (Int_t) (fCentralityV0Atrue / 10.0);
426     if(method.CompareTo("V0Ctrue")==0)  return (Int_t) (fCentralityV0Ctrue / 10.0);
427     if(method.CompareTo("V0MEqtrue")==0)return (Int_t) (fCentralityV0MEqtrue / 10.0);
428     if(method.CompareTo("V0AEqtrue")==0)return (Int_t) (fCentralityV0AEqtrue / 10.0);
429     if(method.CompareTo("V0CEqtrue")==0)return (Int_t) (fCentralityV0CEqtrue / 10.0);
430     if(method.CompareTo("FMDtrue")==0)  return (Int_t) (fCentralityFMDtrue / 10.0);
431     if(method.CompareTo("TRKtrue")==0)  return (Int_t) (fCentralityTRKtrue / 10.0);
432     if(method.CompareTo("TKLtrue")==0)  return (Int_t) (fCentralityTKLtrue / 10.0);
433     if(method.CompareTo("CL0true")==0)  return (Int_t) (fCentralityCL0true / 10.0);
434     if(method.CompareTo("CL1true")==0)  return (Int_t) (fCentralityCL1true / 10.0);
435     if(method.CompareTo("CNDtrue")==0)  return (Int_t) (fCentralityCNDtrue / 10.0);
436     if(method.CompareTo("ZNAtrue")==0)  return (Int_t) (fCentralityZNAtrue / 10.0);
437     if(method.CompareTo("ZNCtrue")==0)  return (Int_t) (fCentralityZNCtrue / 10.0);
438     if(method.CompareTo("ZPAtrue")==0)  return (Int_t) (fCentralityZPAtrue / 10.0);
439     if(method.CompareTo("ZPCtrue")==0)  return (Int_t) (fCentralityZPCtrue / 10.0);
440   return -1;
441 }
442
443 Int_t AliCentrality::GetCentralityClass5Unchecked(const char *x) const
444 {
445 // Return the centrality class
446   TString method = x;
447     if(method.CompareTo("V0M")==0)      return (Int_t) (fCentralityV0M / 5.0);
448     if(method.CompareTo("V0A")==0)      return (Int_t) (fCentralityV0A / 5.0);
449     if(method.CompareTo("V0C")==0)      return (Int_t) (fCentralityV0C / 5.0);
450     if(method.CompareTo("V0MEq")==0)    return (Int_t) (fCentralityV0MEq / 5.0);
451     if(method.CompareTo("V0AEq")==0)    return (Int_t) (fCentralityV0AEq / 5.0);
452     if(method.CompareTo("V0CEq")==0)    return (Int_t) (fCentralityV0CEq / 5.0);
453     if(method.CompareTo("FMD")==0)      return (Int_t) (fCentralityFMD / 5.0);
454     if(method.CompareTo("TRK")==0)      return (Int_t) (fCentralityTRK / 5.0);
455     if(method.CompareTo("TKL")==0)      return (Int_t) (fCentralityTKL / 5.0);
456     if(method.CompareTo("CL0")==0)      return (Int_t) (fCentralityCL0 / 5.0);
457     if(method.CompareTo("CL1")==0)      return (Int_t) (fCentralityCL1 / 5.0);
458     if(method.CompareTo("CND")==0)      return (Int_t) (fCentralityCND / 5.0);
459     if(method.CompareTo("ZNA")==0)      return (Int_t) (fCentralityZNA / 5.0);
460     if(method.CompareTo("ZNC")==0)      return (Int_t) (fCentralityZNC / 5.0);
461     if(method.CompareTo("ZPA")==0)      return (Int_t) (fCentralityZPA / 5.0);
462     if(method.CompareTo("ZPC")==0)      return (Int_t) (fCentralityZPC / 5.0);
463     if(method.CompareTo("NPA")==0)      return (Int_t) (fCentralityNPA / 5.0);
464     if(method.CompareTo("V0MvsFMD")==0) return (Int_t) (fCentralityV0MvsFMD / 5.0);
465     if(method.CompareTo("TKLvsV0M")==0) return (Int_t) (fCentralityTKLvsV0M / 5.0);
466     if(method.CompareTo("ZEMvsZDC")==0) return (Int_t) (fCentralityZEMvsZDC / 5.0);
467     if(method.CompareTo("V0Mtrue")==0)  return (Int_t) (fCentralityV0Mtrue / 5.0);
468     if(method.CompareTo("V0Atrue")==0)  return (Int_t) (fCentralityV0Atrue / 5.0);
469     if(method.CompareTo("V0Ctrue")==0)  return (Int_t) (fCentralityV0Ctrue / 5.0);
470     if(method.CompareTo("V0MEqtrue")==0)return (Int_t) (fCentralityV0MEqtrue / 5.0);
471     if(method.CompareTo("V0AEqtrue")==0)return (Int_t) (fCentralityV0AEqtrue / 5.0);
472     if(method.CompareTo("V0CEqtrue")==0)return (Int_t) (fCentralityV0CEqtrue / 5.0);
473     if(method.CompareTo("FMDtrue")==0)  return (Int_t) (fCentralityFMDtrue / 5.0);
474     if(method.CompareTo("TRKtrue")==0)  return (Int_t) (fCentralityTRKtrue / 5.0);
475     if(method.CompareTo("TKLtrue")==0)  return (Int_t) (fCentralityTKLtrue / 5.0);
476     if(method.CompareTo("CL0true")==0)  return (Int_t) (fCentralityCL0true / 5.0);
477     if(method.CompareTo("CL1true")==0)  return (Int_t) (fCentralityCL1true / 5.0);
478     if(method.CompareTo("CNDtrue")==0)  return (Int_t) (fCentralityCNDtrue / 5.0);
479     if(method.CompareTo("ZNAtrue")==0)  return (Int_t) (fCentralityZNAtrue / 5.0);
480     if(method.CompareTo("ZNCtrue")==0)  return (Int_t) (fCentralityZNCtrue / 5.0);
481     if(method.CompareTo("ZPAtrue")==0)  return (Int_t) (fCentralityZPAtrue / 5.0);
482     if(method.CompareTo("ZPCtrue")==0)  return (Int_t) (fCentralityZPCtrue / 5.0);
483   return -1;
484
485
486 Bool_t AliCentrality::IsEventInCentralityClassUnchecked(Float_t a, Float_t b, const char *x) const
487 {
488 // True if event inside given centrality class
489   TString method = x;
490     if ((method.CompareTo("V0M")==0) && (fCentralityV0M >=a && fCentralityV0M < b)) return kTRUE;
491     if ((method.CompareTo("V0A")==0) && (fCentralityV0A >=a && fCentralityV0A < b)) return kTRUE;
492     if ((method.CompareTo("V0C")==0) && (fCentralityV0C >=a && fCentralityV0C < b)) return kTRUE;
493     if ((method.CompareTo("V0MEq")==0) && (fCentralityV0MEq >=a && fCentralityV0MEq < b)) return kTRUE;
494     if ((method.CompareTo("V0AEq")==0) && (fCentralityV0AEq >=a && fCentralityV0AEq < b)) return kTRUE;
495     if ((method.CompareTo("V0CEq")==0) && (fCentralityV0CEq >=a && fCentralityV0CEq < b)) return kTRUE;
496     if ((method.CompareTo("FMD")==0) && (fCentralityFMD >=a && fCentralityFMD < b)) return kTRUE;
497     if ((method.CompareTo("TRK")==0) && (fCentralityTRK >=a && fCentralityTRK < b)) return kTRUE;
498     if ((method.CompareTo("TKL")==0) && (fCentralityTKL >=a && fCentralityTKL < b)) return kTRUE;
499     if ((method.CompareTo("CL0")==0) && (fCentralityCL0 >=a && fCentralityCL0 < b)) return kTRUE;
500     if ((method.CompareTo("CL1")==0) && (fCentralityCL1 >=a && fCentralityCL1 < b)) return kTRUE;
501     if ((method.CompareTo("CND")==0) && (fCentralityCND >=a && fCentralityCND < b)) return kTRUE;
502     if ((method.CompareTo("ZNA")==0) && (fCentralityZNA >=a && fCentralityZNA < b)) return kTRUE;
503     if ((method.CompareTo("ZNC")==0) && (fCentralityZNC >=a && fCentralityZNC < b)) return kTRUE;
504     if ((method.CompareTo("ZPA")==0) && (fCentralityZPA >=a && fCentralityZPA < b)) return kTRUE;
505     if ((method.CompareTo("ZPC")==0) && (fCentralityZPC >=a && fCentralityZPC < b)) return kTRUE;
506     if ((method.CompareTo("NPA")==0) && (fCentralityNPA >=a && fCentralityNPA < b)) return kTRUE;
507     if ((method.CompareTo("V0MvsFMD")==0) && (fCentralityV0MvsFMD >=a && fCentralityV0MvsFMD < b)) return kTRUE;
508     if ((method.CompareTo("TKLvsV0M")==0) && (fCentralityTKLvsV0M >=a && fCentralityTKLvsV0M < b)) return kTRUE;
509     if ((method.CompareTo("ZEMvsZDC")==0) && (fCentralityZEMvsZDC >=a && fCentralityZEMvsZDC < b)) return kTRUE;
510     if ((method.CompareTo("V0Mtrue")==0) && (fCentralityV0Mtrue >=a && fCentralityV0Mtrue < b)) return kTRUE;
511     if ((method.CompareTo("V0Atrue")==0) && (fCentralityV0Atrue >=a && fCentralityV0Atrue < b)) return kTRUE;
512     if ((method.CompareTo("V0Ctrue")==0) && (fCentralityV0Ctrue >=a && fCentralityV0Ctrue < b)) return kTRUE;
513     if ((method.CompareTo("V0MEqtrue")==0) && (fCentralityV0MEqtrue >=a && fCentralityV0MEqtrue < b)) return kTRUE;
514     if ((method.CompareTo("V0AEqtrue")==0) && (fCentralityV0AEqtrue >=a && fCentralityV0AEqtrue < b)) return kTRUE;
515     if ((method.CompareTo("V0CEqtrue")==0) && (fCentralityV0CEqtrue >=a && fCentralityV0CEqtrue < b)) return kTRUE;
516     if ((method.CompareTo("FMDtrue")==0) && (fCentralityFMDtrue >=a && fCentralityFMDtrue < b)) return kTRUE;
517     if ((method.CompareTo("TRKtrue")==0) && (fCentralityTRKtrue >=a && fCentralityTRKtrue < b)) return kTRUE;
518     if ((method.CompareTo("TKLtrue")==0) && (fCentralityTKLtrue >=a && fCentralityTKLtrue < b)) return kTRUE;
519     if ((method.CompareTo("CL0true")==0) && (fCentralityCL0true >=a && fCentralityCL0true < b)) return kTRUE;
520     if ((method.CompareTo("CL1true")==0) && (fCentralityCL1true >=a && fCentralityCL1true < b)) return kTRUE;
521     if ((method.CompareTo("CNDtrue")==0) && (fCentralityCNDtrue >=a && fCentralityCNDtrue < b)) return kTRUE;
522     if ((method.CompareTo("ZNAtrue")==0) && (fCentralityZNAtrue >=a && fCentralityZNAtrue < b)) return kTRUE;
523     if ((method.CompareTo("ZNCtrue")==0) && (fCentralityZNCtrue >=a && fCentralityZNCtrue < b)) return kTRUE;
524     if ((method.CompareTo("ZPAtrue")==0) && (fCentralityZPAtrue >=a && fCentralityZPAtrue < b)) return kTRUE;
525     if ((method.CompareTo("ZPCtrue")==0) && (fCentralityZPCtrue >=a && fCentralityZPCtrue < b)) return kTRUE;
526   else return kFALSE;
527
528
529 void AliCentrality::Reset()
530 {
531 // Reset.
532
533   fQuality            =  999;
534   fCentralityV0M      =  0;
535   fCentralityV0A      =  0;
536   fCentralityV0C      =  0;
537   fCentralityV0MEq    =  0;
538   fCentralityV0AEq    =  0;
539   fCentralityV0CEq    =  0;
540   fCentralityFMD      =  0;
541   fCentralityTRK      =  0;
542   fCentralityTKL      =  0;
543   fCentralityCL0      =  0;
544   fCentralityCL1      =  0;
545   fCentralityCND      =  0;
546   fCentralityZNA      =  0;
547   fCentralityZNC      =  0;
548   fCentralityZPA      =  0;
549   fCentralityZPC      =  0;
550   fCentralityNPA      =  0;
551   fCentralityV0MvsFMD =  0;
552   fCentralityTKLvsV0M =  0;
553   fCentralityZEMvsZDC =  0;
554   fCentralityV0Mtrue  =  0;
555   fCentralityV0Atrue  =  0;
556   fCentralityV0Ctrue  =  0;
557   fCentralityV0MEqtrue  =  0;
558   fCentralityV0AEqtrue  =  0;
559   fCentralityV0CEqtrue  =  0;
560   fCentralityFMDtrue  =  0;
561   fCentralityTRKtrue  =  0;
562   fCentralityTKLtrue  =  0;
563   fCentralityCL0true  =  0;
564   fCentralityCL1true  =  0;
565   fCentralityCNDtrue  =  0;
566   fCentralityZNAtrue  =  0;
567   fCentralityZNCtrue  =  0;
568   fCentralityZPAtrue  =  0;
569   fCentralityZPCtrue  =  0;
570 }