497eaaf307b51942efb665a3bf78a405016de3b8
[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   fCentralityNPA(0),
43   fCentralityV0MvsFMD(0),
44   fCentralityTKLvsV0M(0),
45   fCentralityZEMvsZDC(0),
46   fCentralityV0Mtrue(0),
47   fCentralityV0Atrue(0),
48   fCentralityV0Ctrue(0),
49   fCentralityV0MEqtrue(0),
50   fCentralityV0AEqtrue(0),
51   fCentralityV0CEqtrue(0),
52   fCentralityFMDtrue(0),
53   fCentralityTRKtrue(0),
54   fCentralityTKLtrue(0),
55   fCentralityCL0true(0),
56   fCentralityCL1true(0),
57   fCentralityCNDtrue(0),
58   fCentralityZNAtrue(0),
59   fCentralityZNCtrue(0)
60 {
61   /// constructor
62 }
63
64 AliCentrality::AliCentrality(const AliCentrality& cnt) : 
65   TNamed(cnt),
66   fQuality(cnt.fQuality), 
67   fCentralityV0M(cnt.fCentralityV0M),
68   fCentralityV0A(cnt.fCentralityV0A),
69   fCentralityV0C(cnt.fCentralityV0C),
70   fCentralityV0MEq(cnt.fCentralityV0MEq),
71   fCentralityV0AEq(cnt.fCentralityV0AEq),
72   fCentralityV0CEq(cnt.fCentralityV0CEq),
73   fCentralityFMD(cnt.fCentralityFMD),
74   fCentralityTRK(cnt.fCentralityTRK),
75   fCentralityTKL(cnt.fCentralityTKL),
76   fCentralityCL0(cnt.fCentralityCL0),
77   fCentralityCL1(cnt.fCentralityCL1),
78   fCentralityCND(cnt.fCentralityCND),
79   fCentralityZNA(cnt.fCentralityZNA),
80   fCentralityZNC(cnt.fCentralityZNC),
81   fCentralityNPA(cnt.fCentralityNPA),
82   fCentralityV0MvsFMD(cnt.fCentralityV0MvsFMD),
83   fCentralityTKLvsV0M(cnt.fCentralityTKLvsV0M),
84   fCentralityZEMvsZDC(cnt.fCentralityZEMvsZDC),
85   fCentralityV0Mtrue(cnt.fCentralityV0Mtrue),
86   fCentralityV0Atrue(cnt.fCentralityV0Atrue),
87   fCentralityV0Ctrue(cnt.fCentralityV0Ctrue),
88   fCentralityV0MEqtrue(cnt.fCentralityV0MEqtrue),
89   fCentralityV0AEqtrue(cnt.fCentralityV0AEqtrue),
90   fCentralityV0CEqtrue(cnt.fCentralityV0CEqtrue),
91   fCentralityFMDtrue(cnt.fCentralityFMDtrue),
92   fCentralityTRKtrue(cnt.fCentralityTRKtrue),
93   fCentralityTKLtrue(cnt.fCentralityTKLtrue),
94   fCentralityCL0true(cnt.fCentralityCL0true),
95   fCentralityCL1true(cnt.fCentralityCL1true),
96   fCentralityCNDtrue(cnt.fCentralityCNDtrue),
97   fCentralityZNAtrue(cnt.fCentralityZNAtrue),
98   fCentralityZNCtrue(cnt.fCentralityZNCtrue)
99 {
100   /// Copy constructor
101 }
102
103 AliCentrality& AliCentrality::operator=(const AliCentrality& c)
104 {
105   /// Assignment operator
106   if (this!=&c) {
107     TNamed::operator=(c);
108     fQuality = c.fQuality;
109     fCentralityV0M = c.fCentralityV0M;
110     fCentralityV0A = c.fCentralityV0A;
111     fCentralityV0C = c.fCentralityV0C;
112     fCentralityV0MEq = c.fCentralityV0MEq;
113     fCentralityV0AEq = c.fCentralityV0AEq;
114     fCentralityV0CEq = c.fCentralityV0CEq;
115     fCentralityFMD = c.fCentralityFMD;
116     fCentralityTRK = c.fCentralityTRK;
117     fCentralityTKL = c.fCentralityTKL;
118     fCentralityCL0 = c.fCentralityCL0;
119     fCentralityCL1 = c.fCentralityCL1;
120     fCentralityCND = c.fCentralityCND;
121     fCentralityZNA = c.fCentralityZNA;
122     fCentralityZNC = c.fCentralityZNC;
123     fCentralityNPA = c.fCentralityNPA;
124     fCentralityV0MvsFMD = c.fCentralityV0MvsFMD;
125     fCentralityTKLvsV0M = c.fCentralityTKLvsV0M;
126     fCentralityZEMvsZDC = c.fCentralityZEMvsZDC;
127     fCentralityV0Mtrue = c.fCentralityV0Mtrue;
128     fCentralityV0Atrue = c.fCentralityV0Atrue;
129     fCentralityV0Ctrue = c.fCentralityV0Ctrue;
130     fCentralityV0MEqtrue = c.fCentralityV0MEqtrue;
131     fCentralityV0AEqtrue = c.fCentralityV0AEqtrue;
132     fCentralityV0CEqtrue = c.fCentralityV0CEqtrue;
133     fCentralityFMDtrue = c.fCentralityFMDtrue;
134     fCentralityTRKtrue = c.fCentralityTRKtrue;
135     fCentralityTKLtrue = c.fCentralityTKLtrue;
136     fCentralityCL0true = c.fCentralityCL0true;
137     fCentralityCL1true = c.fCentralityCL1true;
138     fCentralityCNDtrue = c.fCentralityCNDtrue;
139     fCentralityZNAtrue = c.fCentralityZNAtrue;
140     fCentralityZNCtrue = c.fCentralityZNCtrue;
141   }
142
143   return *this;
144 }
145
146 AliCentrality::~AliCentrality()
147 {
148   /// destructor
149 }
150
151 Int_t AliCentrality::GetQuality() const
152 {
153   return fQuality;
154 }
155
156 Float_t AliCentrality::GetCentralityPercentile(const char *x) const
157 {
158 // Return the centrality percentile
159   if (fQuality == 0) {
160     TString method = x;
161     if(method.CompareTo("V0M")==0)      return fCentralityV0M;
162     if(method.CompareTo("V0A")==0)      return fCentralityV0A;
163     if(method.CompareTo("V0C")==0)      return fCentralityV0C;
164     if(method.CompareTo("V0MEq")==0)    return fCentralityV0MEq;
165     if(method.CompareTo("V0AEq")==0)    return fCentralityV0AEq;
166     if(method.CompareTo("V0CEq")==0)    return fCentralityV0CEq;
167     if(method.CompareTo("FMD")==0)      return fCentralityFMD;
168     if(method.CompareTo("TRK")==0)      return fCentralityTRK;
169     if(method.CompareTo("TKL")==0)      return fCentralityTKL;
170     if(method.CompareTo("CL0")==0)      return fCentralityCL0;
171     if(method.CompareTo("CL1")==0)      return fCentralityCL1;
172     if(method.CompareTo("CND")==0)      return fCentralityCND;
173     if(method.CompareTo("ZNA")==0)      return fCentralityZNA;
174     if(method.CompareTo("ZNC")==0)      return fCentralityZNC;
175     if(method.CompareTo("NPA")==0)      return fCentralityNPA;
176     if(method.CompareTo("V0MvsFMD")==0) return fCentralityV0MvsFMD;
177     if(method.CompareTo("TKLvsV0M")==0) return fCentralityTKLvsV0M;
178     if(method.CompareTo("ZEMvsZDC")==0) return fCentralityZEMvsZDC;
179     if(method.CompareTo("V0Mtrue")==0)      return fCentralityV0Mtrue;
180     if(method.CompareTo("V0Atrue")==0)      return fCentralityV0Atrue;
181     if(method.CompareTo("V0Ctrue")==0)      return fCentralityV0Ctrue;
182     if(method.CompareTo("V0MEqtrue")==0)    return fCentralityV0MEqtrue;
183     if(method.CompareTo("V0AEqtrue")==0)    return fCentralityV0AEqtrue;
184     if(method.CompareTo("V0CEqtrue")==0)    return fCentralityV0CEqtrue;
185     if(method.CompareTo("FMDtrue")==0)      return fCentralityFMDtrue;
186     if(method.CompareTo("TRKtrue")==0)      return fCentralityTRKtrue;
187     if(method.CompareTo("TKLtrue")==0)      return fCentralityTKLtrue;
188     if(method.CompareTo("CL0true")==0)      return fCentralityCL0true;
189     if(method.CompareTo("CL1true")==0)      return fCentralityCL1true;
190     if(method.CompareTo("CNDtrue")==0)      return fCentralityCNDtrue;
191     if(method.CompareTo("ZNAtrue")==0)      return fCentralityZNAtrue;
192     if(method.CompareTo("ZNCtrue")==0)      return fCentralityZNCtrue;
193     return -1;
194   } else {
195     return -1;
196   }
197 }
198
199 Int_t AliCentrality::GetCentralityClass10(const char *x) const
200 {
201 // Return the centrality class
202   if (fQuality == 0) {
203     TString method = x;
204     if(method.CompareTo("V0M")==0)      return (Int_t) (fCentralityV0M / 10.0);
205     if(method.CompareTo("V0A")==0)      return (Int_t) (fCentralityV0A / 10.0);
206     if(method.CompareTo("V0C")==0)      return (Int_t) (fCentralityV0C / 10.0);
207     if(method.CompareTo("V0MEq")==0)    return (Int_t) (fCentralityV0MEq / 10.0);
208     if(method.CompareTo("V0AEq")==0)    return (Int_t) (fCentralityV0AEq / 10.0);
209     if(method.CompareTo("V0CEq")==0)    return (Int_t) (fCentralityV0CEq / 10.0);
210     if(method.CompareTo("FMD")==0)      return (Int_t) (fCentralityFMD / 10.0);
211     if(method.CompareTo("TRK")==0)      return (Int_t) (fCentralityTRK / 10.0);
212     if(method.CompareTo("TKL")==0)      return (Int_t) (fCentralityTKL / 10.0);
213     if(method.CompareTo("CL0")==0)      return (Int_t) (fCentralityCL0 / 10.0);
214     if(method.CompareTo("CL1")==0)      return (Int_t) (fCentralityCL1 / 10.0);
215     if(method.CompareTo("CND")==0)      return (Int_t) (fCentralityCND / 10.0);
216     if(method.CompareTo("ZNA")==0)      return (Int_t) (fCentralityZNA / 10.0);
217     if(method.CompareTo("ZNC")==0)      return (Int_t) (fCentralityZNC / 10.0);
218     if(method.CompareTo("NPA")==0)      return (Int_t) (fCentralityNPA / 10.0);
219     if(method.CompareTo("V0MvsFMD")==0) return (Int_t) (fCentralityV0MvsFMD / 10.0);
220     if(method.CompareTo("TKLvsV0M")==0) return (Int_t) (fCentralityTKLvsV0M / 10.0);
221     if(method.CompareTo("ZEMvsZDC")==0) return (Int_t) (fCentralityZEMvsZDC / 10.0);
222     if(method.CompareTo("V0Mtrue")==0)  return (Int_t) (fCentralityV0Mtrue / 10.0);
223     if(method.CompareTo("V0Atrue")==0)  return (Int_t) (fCentralityV0Atrue / 10.0);
224     if(method.CompareTo("V0Ctrue")==0)  return (Int_t) (fCentralityV0Ctrue / 10.0);
225     if(method.CompareTo("V0MEqtrue")==0)return (Int_t) (fCentralityV0MEqtrue / 10.0);
226     if(method.CompareTo("V0AEqtrue")==0)return (Int_t) (fCentralityV0AEqtrue / 10.0);
227     if(method.CompareTo("V0CEqtrue")==0)return (Int_t) (fCentralityV0CEqtrue / 10.0);
228     if(method.CompareTo("FMDtrue")==0)  return (Int_t) (fCentralityFMDtrue / 10.0);
229     if(method.CompareTo("TRKtrue")==0)  return (Int_t) (fCentralityTRKtrue / 10.0);
230     if(method.CompareTo("TKLtrue")==0)  return (Int_t) (fCentralityTKLtrue / 10.0);
231     if(method.CompareTo("CL0true")==0)  return (Int_t) (fCentralityCL0true / 10.0);
232     if(method.CompareTo("CL1true")==0)  return (Int_t) (fCentralityCL1true / 10.0);
233     if(method.CompareTo("CNDtrue")==0)  return (Int_t) (fCentralityCNDtrue / 10.0);
234     if(method.CompareTo("ZNAtrue")==0)  return (Int_t) (fCentralityZNAtrue / 10.0);
235     if(method.CompareTo("ZNCtrue")==0)  return (Int_t) (fCentralityZNCtrue / 10.0);
236     return -1;
237   } else {
238     return -1;
239   }
240 }
241
242 Int_t AliCentrality::GetCentralityClass5(const char *x) const
243 {
244 // Return the centrality class
245   if (fQuality == 0) {
246     TString method = x;
247     if(method.CompareTo("V0M")==0)      return (Int_t) (fCentralityV0M / 5.0);
248     if(method.CompareTo("V0A")==0)      return (Int_t) (fCentralityV0A / 5.0);
249     if(method.CompareTo("V0C")==0)      return (Int_t) (fCentralityV0C / 5.0);
250     if(method.CompareTo("V0MEq")==0)    return (Int_t) (fCentralityV0MEq / 5.0);
251     if(method.CompareTo("V0AEq")==0)    return (Int_t) (fCentralityV0AEq / 5.0);
252     if(method.CompareTo("V0CEq")==0)    return (Int_t) (fCentralityV0CEq / 5.0);
253     if(method.CompareTo("FMD")==0)      return (Int_t) (fCentralityFMD / 5.0);
254     if(method.CompareTo("TRK")==0)      return (Int_t) (fCentralityTRK / 5.0);
255     if(method.CompareTo("TKL")==0)      return (Int_t) (fCentralityTKL / 5.0);
256     if(method.CompareTo("CL0")==0)      return (Int_t) (fCentralityCL0 / 5.0);
257     if(method.CompareTo("CL1")==0)      return (Int_t) (fCentralityCL1 / 5.0);
258     if(method.CompareTo("CND")==0)      return (Int_t) (fCentralityCND / 5.0);
259     if(method.CompareTo("ZNA")==0)      return (Int_t) (fCentralityZNA / 5.0);
260     if(method.CompareTo("ZNC")==0)      return (Int_t) (fCentralityZNC / 5.0);
261     if(method.CompareTo("NPA")==0)      return (Int_t) (fCentralityNPA / 5.0);
262     if(method.CompareTo("V0MvsFMD")==0) return (Int_t) (fCentralityV0MvsFMD / 5.0);
263     if(method.CompareTo("TKLvsV0M")==0) return (Int_t) (fCentralityTKLvsV0M / 5.0);
264     if(method.CompareTo("ZEMvsZDC")==0) return (Int_t) (fCentralityZEMvsZDC / 5.0);
265     if(method.CompareTo("V0Mtrue")==0)  return (Int_t) (fCentralityV0Mtrue / 5.0);
266     if(method.CompareTo("V0Atrue")==0)  return (Int_t) (fCentralityV0Atrue / 5.0);
267     if(method.CompareTo("V0Ctrue")==0)  return (Int_t) (fCentralityV0Ctrue / 5.0);
268     if(method.CompareTo("V0MEqtrue")==0)return (Int_t) (fCentralityV0MEqtrue / 5.0);
269     if(method.CompareTo("V0AEqtrue")==0)return (Int_t) (fCentralityV0AEqtrue / 5.0);
270     if(method.CompareTo("V0CEqtrue")==0)return (Int_t) (fCentralityV0CEqtrue / 5.0);
271     if(method.CompareTo("FMDtrue")==0)  return (Int_t) (fCentralityFMDtrue / 5.0);
272     if(method.CompareTo("TRKtrue")==0)  return (Int_t) (fCentralityTRKtrue / 5.0);
273     if(method.CompareTo("TKLtrue")==0)  return (Int_t) (fCentralityTKLtrue / 5.0);
274     if(method.CompareTo("CL0true")==0)  return (Int_t) (fCentralityCL0true / 5.0);
275     if(method.CompareTo("CL1true")==0)  return (Int_t) (fCentralityCL1true / 5.0);
276     if(method.CompareTo("CNDtrue")==0)  return (Int_t) (fCentralityCNDtrue / 5.0);
277     if(method.CompareTo("ZNAtrue")==0)  return (Int_t) (fCentralityZNAtrue / 5.0);
278     if(method.CompareTo("ZNCtrue")==0)  return (Int_t) (fCentralityZNCtrue / 5.0);
279     return -1;
280   } else {
281     return -1;
282   }
283 }
284
285
286 Bool_t AliCentrality::IsEventInCentralityClass(Float_t a, Float_t b, const char *x) const
287 {
288 // True if event is inside a given class
289   if (fQuality == 0) {
290     TString method = x;
291     if ((method.CompareTo("V0M")==0) && (fCentralityV0M >=a && fCentralityV0M < b)) return kTRUE;
292     if ((method.CompareTo("V0A")==0) && (fCentralityV0A >=a && fCentralityV0A < b)) return kTRUE;
293     if ((method.CompareTo("V0C")==0) && (fCentralityV0C >=a && fCentralityV0C < b)) return kTRUE;
294     if ((method.CompareTo("V0MEq")==0) && (fCentralityV0MEq >=a && fCentralityV0MEq < b)) return kTRUE;
295     if ((method.CompareTo("V0AEq")==0) && (fCentralityV0AEq >=a && fCentralityV0AEq < b)) return kTRUE;
296     if ((method.CompareTo("V0CEq")==0) && (fCentralityV0CEq >=a && fCentralityV0CEq < b)) return kTRUE;
297     if ((method.CompareTo("FMD")==0) && (fCentralityFMD >=a && fCentralityFMD < b)) return kTRUE;
298     if ((method.CompareTo("TRK")==0) && (fCentralityTRK >=a && fCentralityTRK < b)) return kTRUE;
299     if ((method.CompareTo("TKL")==0) && (fCentralityTKL >=a && fCentralityTKL < b)) return kTRUE;
300     if ((method.CompareTo("CL0")==0) && (fCentralityCL0 >=a && fCentralityCL0 < b)) return kTRUE;
301     if ((method.CompareTo("CL1")==0) && (fCentralityCL1 >=a && fCentralityCL1 < b)) return kTRUE;
302     if ((method.CompareTo("CND")==0) && (fCentralityCND >=a && fCentralityCND < b)) return kTRUE;
303     if ((method.CompareTo("ZNA")==0) && (fCentralityZNA >=a && fCentralityZNA < b)) return kTRUE;
304     if ((method.CompareTo("ZNC")==0) && (fCentralityZNC >=a && fCentralityZNC < b)) return kTRUE;
305     if ((method.CompareTo("NPA")==0) && (fCentralityNPA >=a && fCentralityNPA < b)) return kTRUE;
306     if ((method.CompareTo("V0MvsFMD")==0) && (fCentralityV0MvsFMD >=a && fCentralityV0MvsFMD < b)) return kTRUE;
307     if ((method.CompareTo("TKLvsV0M")==0) && (fCentralityTKLvsV0M >=a && fCentralityTKLvsV0M < b)) return kTRUE;
308     if ((method.CompareTo("ZEMvsZDC")==0) && (fCentralityZEMvsZDC >=a && fCentralityZEMvsZDC < b)) return kTRUE;
309     if ((method.CompareTo("V0Mtrue")==0) && (fCentralityV0Mtrue >=a && fCentralityV0Mtrue < b)) return kTRUE;
310     if ((method.CompareTo("V0Atrue")==0) && (fCentralityV0Atrue >=a && fCentralityV0Atrue < b)) return kTRUE;
311     if ((method.CompareTo("V0Ctrue")==0) && (fCentralityV0Ctrue >=a && fCentralityV0Ctrue < b)) return kTRUE;
312     if ((method.CompareTo("V0MEqtrue")==0) && (fCentralityV0MEqtrue >=a && fCentralityV0MEqtrue < b)) return kTRUE;
313     if ((method.CompareTo("V0AEqtrue")==0) && (fCentralityV0AEqtrue >=a && fCentralityV0AEqtrue < b)) return kTRUE;
314     if ((method.CompareTo("V0CEqtrue")==0) && (fCentralityV0CEqtrue >=a && fCentralityV0CEqtrue < b)) return kTRUE;
315     if ((method.CompareTo("FMDtrue")==0) && (fCentralityFMDtrue >=a && fCentralityFMDtrue < b)) return kTRUE;
316     if ((method.CompareTo("TRKtrue")==0) && (fCentralityTRKtrue >=a && fCentralityTRKtrue < b)) return kTRUE;
317     if ((method.CompareTo("TKLtrue")==0) && (fCentralityTKLtrue >=a && fCentralityTKLtrue < b)) return kTRUE;
318     if ((method.CompareTo("CL0true")==0) && (fCentralityCL0true >=a && fCentralityCL0true < b)) return kTRUE;
319     if ((method.CompareTo("CL1true")==0) && (fCentralityCL1true >=a && fCentralityCL1true < b)) return kTRUE;
320     if ((method.CompareTo("CNDtrue")==0) && (fCentralityCNDtrue >=a && fCentralityCNDtrue < b)) return kTRUE;
321     if ((method.CompareTo("ZNAtrue")==0) && (fCentralityZNAtrue >=a && fCentralityZNAtrue < b)) return kTRUE;
322     if ((method.CompareTo("ZNCtrue")==0) && (fCentralityZNCtrue >=a && fCentralityZNCtrue < b)) return kTRUE;
323     else return kFALSE;
324   } else {
325     return kFALSE;
326   }
327 }
328
329 Float_t AliCentrality::GetCentralityPercentileUnchecked(const char *x) const
330 {
331 // Return the centrality percentile
332   TString method = x;
333   if(method.CompareTo("V0M")==0)      return fCentralityV0M;
334   if(method.CompareTo("V0A")==0)      return fCentralityV0A;
335   if(method.CompareTo("V0C")==0)      return fCentralityV0C;
336   if(method.CompareTo("V0MEq")==0)    return fCentralityV0MEq;
337   if(method.CompareTo("V0AEq")==0)    return fCentralityV0AEq;
338   if(method.CompareTo("V0CEq")==0)    return fCentralityV0CEq;
339   if(method.CompareTo("FMD")==0)      return fCentralityFMD;
340   if(method.CompareTo("TRK")==0)      return fCentralityTRK;
341   if(method.CompareTo("TKL")==0)      return fCentralityTKL;
342   if(method.CompareTo("CL0")==0)      return fCentralityCL0;
343   if(method.CompareTo("CL1")==0)      return fCentralityCL1;
344   if(method.CompareTo("CND")==0)      return fCentralityCND;
345   if(method.CompareTo("ZNA")==0)      return fCentralityZNA;
346   if(method.CompareTo("ZNC")==0)      return fCentralityZNC;
347   if(method.CompareTo("NPA")==0)      return fCentralityNPA;
348   if(method.CompareTo("V0MvsFMD")==0) return fCentralityV0MvsFMD;
349   if(method.CompareTo("TKLvsV0M")==0) return fCentralityTKLvsV0M;
350   if(method.CompareTo("ZEMvsZDC")==0) return fCentralityZEMvsZDC;
351   if(method.CompareTo("V0Mtrue")==0)  return fCentralityV0Mtrue;
352   if(method.CompareTo("V0Atrue")==0)  return fCentralityV0Atrue;
353   if(method.CompareTo("V0Ctrue")==0)  return fCentralityV0Ctrue;
354   if(method.CompareTo("V0MEqtrue")==0)    return fCentralityV0MEqtrue;
355   if(method.CompareTo("V0AEqtrue")==0)    return fCentralityV0AEqtrue;
356   if(method.CompareTo("V0CEqtrue")==0)    return fCentralityV0CEqtrue;
357   if(method.CompareTo("FMDtrue")==0)  return fCentralityFMDtrue;
358   if(method.CompareTo("TRKtrue")==0)  return fCentralityTRKtrue;
359   if(method.CompareTo("TKLtrue")==0)  return fCentralityTKLtrue;
360   if(method.CompareTo("CL0true")==0)  return fCentralityCL0true;
361   if(method.CompareTo("CL1true")==0)  return fCentralityCL1true;
362   if(method.CompareTo("CNDtrue")==0)  return fCentralityCNDtrue;
363   if(method.CompareTo("ZNAtrue")==0)  return fCentralityZNAtrue;
364   if(method.CompareTo("ZNCtrue")==0)   return fCentralityZNCtrue;
365   return -1;
366 }
367
368 Int_t AliCentrality::GetCentralityClass10Unchecked(const char *x) const
369 {
370 // Return the centrality class
371   TString method = x;
372     if(method.CompareTo("V0M")==0)      return (Int_t) (fCentralityV0M / 10.0);
373     if(method.CompareTo("V0A")==0)      return (Int_t) (fCentralityV0A / 10.0);
374     if(method.CompareTo("V0C")==0)      return (Int_t) (fCentralityV0C / 10.0);
375     if(method.CompareTo("V0MEq")==0)    return (Int_t) (fCentralityV0MEq / 10.0);
376     if(method.CompareTo("V0AEq")==0)    return (Int_t) (fCentralityV0AEq / 10.0);
377     if(method.CompareTo("V0CEq")==0)    return (Int_t) (fCentralityV0CEq / 10.0);
378     if(method.CompareTo("FMD")==0)      return (Int_t) (fCentralityFMD / 10.0);
379     if(method.CompareTo("TRK")==0)      return (Int_t) (fCentralityTRK / 10.0);
380     if(method.CompareTo("TKL")==0)      return (Int_t) (fCentralityTKL / 10.0);
381     if(method.CompareTo("CL0")==0)      return (Int_t) (fCentralityCL0 / 10.0);
382     if(method.CompareTo("CL1")==0)      return (Int_t) (fCentralityCL1 / 10.0);
383     if(method.CompareTo("CND")==0)      return (Int_t) (fCentralityCND / 10.0);
384     if(method.CompareTo("ZNA")==0)      return (Int_t) (fCentralityZNA / 10.0);
385     if(method.CompareTo("ZNC")==0)      return (Int_t) (fCentralityZNC / 10.0);
386     if(method.CompareTo("NPA")==0)      return (Int_t) (fCentralityNPA / 10.0);
387     if(method.CompareTo("V0MvsFMD")==0) return (Int_t) (fCentralityV0MvsFMD / 10.0);
388     if(method.CompareTo("TKLvsV0M")==0) return (Int_t) (fCentralityTKLvsV0M / 10.0);
389     if(method.CompareTo("ZEMvsZDC")==0) return (Int_t) (fCentralityZEMvsZDC / 10.0);
390     if(method.CompareTo("V0Mtrue")==0)  return (Int_t) (fCentralityV0Mtrue / 10.0);
391     if(method.CompareTo("V0Atrue")==0)  return (Int_t) (fCentralityV0Atrue / 10.0);
392     if(method.CompareTo("V0Ctrue")==0)  return (Int_t) (fCentralityV0Ctrue / 10.0);
393     if(method.CompareTo("V0MEqtrue")==0)return (Int_t) (fCentralityV0MEqtrue / 10.0);
394     if(method.CompareTo("V0AEqtrue")==0)return (Int_t) (fCentralityV0AEqtrue / 10.0);
395     if(method.CompareTo("V0CEqtrue")==0)return (Int_t) (fCentralityV0CEqtrue / 10.0);
396     if(method.CompareTo("FMDtrue")==0)  return (Int_t) (fCentralityFMDtrue / 10.0);
397     if(method.CompareTo("TRKtrue")==0)  return (Int_t) (fCentralityTRKtrue / 10.0);
398     if(method.CompareTo("TKLtrue")==0)  return (Int_t) (fCentralityTKLtrue / 10.0);
399     if(method.CompareTo("CL0true")==0)  return (Int_t) (fCentralityCL0true / 10.0);
400     if(method.CompareTo("CL1true")==0)  return (Int_t) (fCentralityCL1true / 10.0);
401     if(method.CompareTo("CNDtrue")==0)  return (Int_t) (fCentralityCNDtrue / 10.0);
402     if(method.CompareTo("ZNAtrue")==0)  return (Int_t) (fCentralityZNAtrue / 10.0);
403     if(method.CompareTo("ZNCtrue")==0)  return (Int_t) (fCentralityZNCtrue / 10.0);
404   return -1;
405 }
406
407 Int_t AliCentrality::GetCentralityClass5Unchecked(const char *x) const
408 {
409 // Return the centrality class
410   TString method = x;
411     if(method.CompareTo("V0M")==0)      return (Int_t) (fCentralityV0M / 5.0);
412     if(method.CompareTo("V0A")==0)      return (Int_t) (fCentralityV0A / 5.0);
413     if(method.CompareTo("V0C")==0)      return (Int_t) (fCentralityV0C / 5.0);
414     if(method.CompareTo("V0MEq")==0)    return (Int_t) (fCentralityV0MEq / 5.0);
415     if(method.CompareTo("V0AEq")==0)    return (Int_t) (fCentralityV0AEq / 5.0);
416     if(method.CompareTo("V0CEq")==0)    return (Int_t) (fCentralityV0CEq / 5.0);
417     if(method.CompareTo("FMD")==0)      return (Int_t) (fCentralityFMD / 5.0);
418     if(method.CompareTo("TRK")==0)      return (Int_t) (fCentralityTRK / 5.0);
419     if(method.CompareTo("TKL")==0)      return (Int_t) (fCentralityTKL / 5.0);
420     if(method.CompareTo("CL0")==0)      return (Int_t) (fCentralityCL0 / 5.0);
421     if(method.CompareTo("CL1")==0)      return (Int_t) (fCentralityCL1 / 5.0);
422     if(method.CompareTo("CND")==0)      return (Int_t) (fCentralityCND / 5.0);
423     if(method.CompareTo("ZNA")==0)      return (Int_t) (fCentralityZNA / 5.0);
424     if(method.CompareTo("ZNC")==0)      return (Int_t) (fCentralityZNC / 5.0);
425     if(method.CompareTo("NPA")==0)      return (Int_t) (fCentralityNPA / 5.0);
426     if(method.CompareTo("V0MvsFMD")==0) return (Int_t) (fCentralityV0MvsFMD / 5.0);
427     if(method.CompareTo("TKLvsV0M")==0) return (Int_t) (fCentralityTKLvsV0M / 5.0);
428     if(method.CompareTo("ZEMvsZDC")==0) return (Int_t) (fCentralityZEMvsZDC / 5.0);
429     if(method.CompareTo("V0Mtrue")==0)  return (Int_t) (fCentralityV0Mtrue / 5.0);
430     if(method.CompareTo("V0Atrue")==0)  return (Int_t) (fCentralityV0Atrue / 5.0);
431     if(method.CompareTo("V0Ctrue")==0)  return (Int_t) (fCentralityV0Ctrue / 5.0);
432     if(method.CompareTo("V0MEqtrue")==0)return (Int_t) (fCentralityV0MEqtrue / 5.0);
433     if(method.CompareTo("V0AEqtrue")==0)return (Int_t) (fCentralityV0AEqtrue / 5.0);
434     if(method.CompareTo("V0CEqtrue")==0)return (Int_t) (fCentralityV0CEqtrue / 5.0);
435     if(method.CompareTo("FMDtrue")==0)  return (Int_t) (fCentralityFMDtrue / 5.0);
436     if(method.CompareTo("TRKtrue")==0)  return (Int_t) (fCentralityTRKtrue / 5.0);
437     if(method.CompareTo("TKLtrue")==0)  return (Int_t) (fCentralityTKLtrue / 5.0);
438     if(method.CompareTo("CL0true")==0)  return (Int_t) (fCentralityCL0true / 5.0);
439     if(method.CompareTo("CL1true")==0)  return (Int_t) (fCentralityCL1true / 5.0);
440     if(method.CompareTo("CNDtrue")==0)  return (Int_t) (fCentralityCNDtrue / 5.0);
441     if(method.CompareTo("ZNAtrue")==0)  return (Int_t) (fCentralityZNAtrue / 5.0);
442     if(method.CompareTo("ZNCtrue")==0)  return (Int_t) (fCentralityZNCtrue / 5.0);
443   return -1;
444
445
446 Bool_t AliCentrality::IsEventInCentralityClassUnchecked(Float_t a, Float_t b, const char *x) const
447 {
448 // True if event inside given centrality class
449   TString method = x;
450     if ((method.CompareTo("V0M")==0) && (fCentralityV0M >=a && fCentralityV0M < b)) return kTRUE;
451     if ((method.CompareTo("V0A")==0) && (fCentralityV0A >=a && fCentralityV0A < b)) return kTRUE;
452     if ((method.CompareTo("V0C")==0) && (fCentralityV0C >=a && fCentralityV0C < b)) return kTRUE;
453     if ((method.CompareTo("V0MEq")==0) && (fCentralityV0MEq >=a && fCentralityV0MEq < b)) return kTRUE;
454     if ((method.CompareTo("V0AEq")==0) && (fCentralityV0AEq >=a && fCentralityV0AEq < b)) return kTRUE;
455     if ((method.CompareTo("V0CEq")==0) && (fCentralityV0CEq >=a && fCentralityV0CEq < b)) return kTRUE;
456     if ((method.CompareTo("FMD")==0) && (fCentralityFMD >=a && fCentralityFMD < b)) return kTRUE;
457     if ((method.CompareTo("TRK")==0) && (fCentralityTRK >=a && fCentralityTRK < b)) return kTRUE;
458     if ((method.CompareTo("TKL")==0) && (fCentralityTKL >=a && fCentralityTKL < b)) return kTRUE;
459     if ((method.CompareTo("CL0")==0) && (fCentralityCL0 >=a && fCentralityCL0 < b)) return kTRUE;
460     if ((method.CompareTo("CL1")==0) && (fCentralityCL1 >=a && fCentralityCL1 < b)) return kTRUE;
461     if ((method.CompareTo("CND")==0) && (fCentralityCND >=a && fCentralityCND < b)) return kTRUE;
462     if ((method.CompareTo("ZNA")==0) && (fCentralityZNA >=a && fCentralityZNA < b)) return kTRUE;
463     if ((method.CompareTo("ZNC")==0) && (fCentralityZNC >=a && fCentralityZNC < b)) return kTRUE;
464     if ((method.CompareTo("NPA")==0) && (fCentralityNPA >=a && fCentralityNPA < b)) return kTRUE;
465     if ((method.CompareTo("V0MvsFMD")==0) && (fCentralityV0MvsFMD >=a && fCentralityV0MvsFMD < b)) return kTRUE;
466     if ((method.CompareTo("TKLvsV0M")==0) && (fCentralityTKLvsV0M >=a && fCentralityTKLvsV0M < b)) return kTRUE;
467     if ((method.CompareTo("ZEMvsZDC")==0) && (fCentralityZEMvsZDC >=a && fCentralityZEMvsZDC < b)) return kTRUE;
468     if ((method.CompareTo("V0Mtrue")==0) && (fCentralityV0Mtrue >=a && fCentralityV0Mtrue < b)) return kTRUE;
469     if ((method.CompareTo("V0Atrue")==0) && (fCentralityV0Atrue >=a && fCentralityV0Atrue < b)) return kTRUE;
470     if ((method.CompareTo("V0Ctrue")==0) && (fCentralityV0Ctrue >=a && fCentralityV0Ctrue < b)) return kTRUE;
471     if ((method.CompareTo("V0MEqtrue")==0) && (fCentralityV0MEqtrue >=a && fCentralityV0MEqtrue < b)) return kTRUE;
472     if ((method.CompareTo("V0AEqtrue")==0) && (fCentralityV0AEqtrue >=a && fCentralityV0AEqtrue < b)) return kTRUE;
473     if ((method.CompareTo("V0CEqtrue")==0) && (fCentralityV0CEqtrue >=a && fCentralityV0CEqtrue < b)) return kTRUE;
474     if ((method.CompareTo("FMDtrue")==0) && (fCentralityFMDtrue >=a && fCentralityFMDtrue < b)) return kTRUE;
475     if ((method.CompareTo("TRKtrue")==0) && (fCentralityTRKtrue >=a && fCentralityTRKtrue < b)) return kTRUE;
476     if ((method.CompareTo("TKLtrue")==0) && (fCentralityTKLtrue >=a && fCentralityTKLtrue < b)) return kTRUE;
477     if ((method.CompareTo("CL0true")==0) && (fCentralityCL0true >=a && fCentralityCL0true < b)) return kTRUE;
478     if ((method.CompareTo("CL1true")==0) && (fCentralityCL1true >=a && fCentralityCL1true < b)) return kTRUE;
479     if ((method.CompareTo("CNDtrue")==0) && (fCentralityCNDtrue >=a && fCentralityCNDtrue < b)) return kTRUE;
480     if ((method.CompareTo("ZNAtrue")==0) && (fCentralityZNAtrue >=a && fCentralityZNAtrue < b)) return kTRUE;
481     if ((method.CompareTo("ZNCtrue")==0) && (fCentralityZNCtrue >=a && fCentralityZNCtrue < b)) return kTRUE;
482   else return kFALSE;
483
484
485 void AliCentrality::Reset()
486 {
487 // Reset.
488
489   fQuality            =  999;
490   fCentralityV0M      =  0;
491   fCentralityV0A      =  0;
492   fCentralityV0C      =  0;
493   fCentralityV0MEq    =  0;
494   fCentralityV0AEq    =  0;
495   fCentralityV0CEq    =  0;
496   fCentralityFMD      =  0;
497   fCentralityTRK      =  0;
498   fCentralityTKL      =  0;
499   fCentralityCL0      =  0;
500   fCentralityCL1      =  0;
501   fCentralityCND      =  0;
502   fCentralityZNA      =  0;
503   fCentralityZNC      =  0;
504   fCentralityNPA      =  0;
505   fCentralityV0MvsFMD =  0;
506   fCentralityTKLvsV0M =  0;
507   fCentralityZEMvsZDC =  0;
508   fCentralityV0Mtrue  =  0;
509   fCentralityV0Atrue  =  0;
510   fCentralityV0Ctrue  =  0;
511   fCentralityV0MEqtrue  =  0;
512   fCentralityV0AEqtrue  =  0;
513   fCentralityV0CEqtrue  =  0;
514   fCentralityFMDtrue  =  0;
515   fCentralityTRKtrue  =  0;
516   fCentralityTKLtrue  =  0;
517   fCentralityCL0true  =  0;
518   fCentralityCL1true  =  0;
519   fCentralityCNDtrue  =  0;
520   fCentralityZNAtrue  =  0;
521   fCentralityZNCtrue  =  0;
522 }