]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STEER/STEERBase/AliCentrality.cxx
Introduction of ZNA centrality selection for p-Pb data (Alberica+Chiara)
[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   fCentralityFMD(0),
32   fCentralityTRK(0),
33   fCentralityTKL(0),
34   fCentralityCL0(0),
35   fCentralityCL1(0),
36   fCentralityCND(0),
37   fCentralityNPA(0),
38   fCentralityZNA(0),
39   fCentralityV0MvsFMD(0),
40   fCentralityTKLvsV0M(0),
41   fCentralityZEMvsZDC(0)
42 {
43   /// constructor
44 }
45
46 AliCentrality::AliCentrality(const AliCentrality& cnt) : 
47   TNamed(cnt),
48   fQuality(cnt.fQuality), 
49   fCentralityV0M(cnt.fCentralityV0M),
50   fCentralityV0A(cnt.fCentralityV0A),
51   fCentralityV0C(cnt.fCentralityV0C),
52   fCentralityFMD(cnt.fCentralityFMD),
53   fCentralityTRK(cnt.fCentralityTRK),
54   fCentralityTKL(cnt.fCentralityTKL),
55   fCentralityCL0(cnt.fCentralityCL0),
56   fCentralityCL1(cnt.fCentralityCL1),
57   fCentralityCND(cnt.fCentralityCND),
58   fCentralityNPA(cnt.fCentralityNPA),
59   fCentralityZNA(cnt.fCentralityZNA),
60   fCentralityV0MvsFMD(cnt.fCentralityV0MvsFMD),
61   fCentralityTKLvsV0M(cnt.fCentralityTKLvsV0M),
62   fCentralityZEMvsZDC(cnt.fCentralityZEMvsZDC)
63 {
64   /// Copy constructor
65 }
66
67 AliCentrality& AliCentrality::operator=(const AliCentrality& c)
68 {
69   /// Assignment operator
70   if (this!=&c) {
71     TNamed::operator=(c);
72     fQuality = c.fQuality;
73     fCentralityV0M = c.fCentralityV0M;
74     fCentralityV0A = c.fCentralityV0A;
75     fCentralityV0C = c.fCentralityV0C;
76     fCentralityFMD = c.fCentralityFMD;
77     fCentralityTRK = c.fCentralityTRK;
78     fCentralityTKL = c.fCentralityTKL;
79     fCentralityCL0 = c.fCentralityCL0;
80     fCentralityCL1 = c.fCentralityCL1;
81     fCentralityCND = c.fCentralityCND;
82     fCentralityNPA = c.fCentralityNPA;
83     fCentralityZNA = c.fCentralityZNA;
84     fCentralityV0MvsFMD = c.fCentralityV0MvsFMD;
85     fCentralityTKLvsV0M = c.fCentralityTKLvsV0M;
86     fCentralityZEMvsZDC = c.fCentralityZEMvsZDC;
87   }
88
89   return *this;
90 }
91
92 AliCentrality::~AliCentrality()
93 {
94   /// destructor
95 }
96
97 Int_t AliCentrality::GetQuality() const
98 {
99   return fQuality;
100 }
101
102 Float_t AliCentrality::GetCentralityPercentile(const char *x) const
103 {
104 // Return the centrality percentile
105   if (fQuality == 0) {
106     TString method = x;
107     if(method.CompareTo("V0M")==0)      return fCentralityV0M;
108     if(method.CompareTo("V0A")==0)      return fCentralityV0A;
109     if(method.CompareTo("V0C")==0)      return fCentralityV0C;
110     if(method.CompareTo("FMD")==0)      return fCentralityFMD;
111     if(method.CompareTo("TRK")==0)      return fCentralityTRK;
112     if(method.CompareTo("TKL")==0)      return fCentralityTKL;
113     if(method.CompareTo("CL0")==0)      return fCentralityCL0;
114     if(method.CompareTo("CL1")==0)      return fCentralityCL1;
115     if(method.CompareTo("CND")==0)      return fCentralityCND;
116     if(method.CompareTo("NPA")==0)      return fCentralityNPA;
117     if(method.CompareTo("ZNA")==0)      return fCentralityZNA;
118     if(method.CompareTo("V0MvsFMD")==0) return fCentralityV0MvsFMD;
119     if(method.CompareTo("TKLvsV0M")==0) return fCentralityTKLvsV0M;
120     if(method.CompareTo("ZEMvsZDC")==0) return fCentralityZEMvsZDC;
121     return -1;
122   } else {
123     return -1;
124   }
125 }
126
127 Int_t AliCentrality::GetCentralityClass10(const char *x) const
128 {
129 // Return the centrality class
130   if (fQuality == 0) {
131     TString method = x;
132     if(method.CompareTo("V0M")==0)      return (Int_t) (fCentralityV0M / 10.0);
133     if(method.CompareTo("V0A")==0)      return (Int_t) (fCentralityV0A / 10.0);
134     if(method.CompareTo("V0C")==0)      return (Int_t) (fCentralityV0C / 10.0);
135     if(method.CompareTo("FMD")==0)      return (Int_t) (fCentralityFMD / 10.0);
136     if(method.CompareTo("TRK")==0)      return (Int_t) (fCentralityTRK / 10.0);
137     if(method.CompareTo("TKL")==0)      return (Int_t) (fCentralityTKL / 10.0);
138     if(method.CompareTo("CL0")==0)      return (Int_t) (fCentralityCL0 / 10.0);
139     if(method.CompareTo("CL1")==0)      return (Int_t) (fCentralityCL1 / 10.0);
140     if(method.CompareTo("CND")==0)      return (Int_t) (fCentralityCND / 10.0);
141     if(method.CompareTo("NPA")==0)      return (Int_t) (fCentralityNPA / 10.0);
142     if(method.CompareTo("ZNA")==0)      return (Int_t) (fCentralityZNA / 10.0);
143     if(method.CompareTo("V0MvsFMD")==0) return (Int_t) (fCentralityV0MvsFMD / 10.0);
144     if(method.CompareTo("TKLvsV0M")==0) return (Int_t) (fCentralityTKLvsV0M / 10.0);
145     if(method.CompareTo("ZEMvsZDC")==0) return (Int_t) (fCentralityZEMvsZDC / 10.0);
146     return -1;
147   } else {
148     return -1;
149   }
150 }
151
152 Int_t AliCentrality::GetCentralityClass5(const char *x) const
153 {
154 // Return the centrality class
155   if (fQuality == 0) {
156     TString method = x;
157     if(method.CompareTo("V0M")==0)      return (Int_t) (fCentralityV0M / 5.0);
158     if(method.CompareTo("V0A")==0)      return (Int_t) (fCentralityV0A / 5.0);
159     if(method.CompareTo("V0C")==0)      return (Int_t) (fCentralityV0C / 5.0);
160     if(method.CompareTo("FMD")==0)      return (Int_t) (fCentralityFMD / 5.0);
161     if(method.CompareTo("TRK")==0)      return (Int_t) (fCentralityTRK / 5.0);
162     if(method.CompareTo("TKL")==0)      return (Int_t) (fCentralityTKL / 5.0);
163     if(method.CompareTo("CL0")==0)      return (Int_t) (fCentralityCL0 / 5.0);
164     if(method.CompareTo("CL1")==0)      return (Int_t) (fCentralityCL1 / 5.0);
165     if(method.CompareTo("CND")==0)      return (Int_t) (fCentralityCND / 5.0);
166     if(method.CompareTo("NPA")==0)      return (Int_t) (fCentralityNPA / 5.0);
167     if(method.CompareTo("ZNA")==0)      return (Int_t) (fCentralityZNA / 5.0);
168     if(method.CompareTo("V0MvsFMD")==0) return (Int_t) (fCentralityV0MvsFMD / 5.0);
169     if(method.CompareTo("TKLvsV0M")==0) return (Int_t) (fCentralityTKLvsV0M / 5.0);
170     if(method.CompareTo("ZEMvsZDC")==0) return (Int_t) (fCentralityZEMvsZDC / 5.0);
171     return -1;
172   } else {
173     return -1;
174   }
175 }
176
177
178 Bool_t AliCentrality::IsEventInCentralityClass(Float_t a, Float_t b, const char *x) const
179 {
180 // True if event is inside a given class
181   if (fQuality == 0) {
182     TString method = x;
183     if ((method.CompareTo("V0M")==0) && (fCentralityV0M >=a && fCentralityV0M < b)) return kTRUE;
184     if ((method.CompareTo("V0A")==0) && (fCentralityV0A >=a && fCentralityV0A < b)) return kTRUE;
185     if ((method.CompareTo("V0C")==0) && (fCentralityV0C >=a && fCentralityV0C < b)) return kTRUE;
186     if ((method.CompareTo("FMD")==0) && (fCentralityFMD >=a && fCentralityFMD < b)) return kTRUE;
187     if ((method.CompareTo("TRK")==0) && (fCentralityTRK >=a && fCentralityTRK < b)) return kTRUE;
188     if ((method.CompareTo("TKL")==0) && (fCentralityTKL >=a && fCentralityTKL < b)) return kTRUE;
189     if ((method.CompareTo("CL0")==0) && (fCentralityCL0 >=a && fCentralityCL0 < b)) return kTRUE;
190     if ((method.CompareTo("CL1")==0) && (fCentralityCL1 >=a && fCentralityCL1 < b)) return kTRUE;
191     if ((method.CompareTo("CND")==0) && (fCentralityCND >=a && fCentralityCND < b)) return kTRUE;
192     if ((method.CompareTo("NPA")==0) && (fCentralityNPA >=a && fCentralityNPA < b)) return kTRUE;
193     if ((method.CompareTo("ZNA")==0) && (fCentralityZNA >=a && fCentralityZNA < b)) return kTRUE;
194     if ((method.CompareTo("V0MvsFMD")==0) && (fCentralityV0MvsFMD >=a && fCentralityV0MvsFMD < b)) return kTRUE;
195     if ((method.CompareTo("TKLvsV0M")==0) && (fCentralityTKLvsV0M >=a && fCentralityTKLvsV0M < b)) return kTRUE;
196     if ((method.CompareTo("ZEMvsZDC")==0) && (fCentralityZEMvsZDC >=a && fCentralityZEMvsZDC < b)) return kTRUE;
197     else return kFALSE;
198   } else {
199     return kFALSE;
200   }
201 }
202
203 Float_t AliCentrality::GetCentralityPercentileUnchecked(const char *x) const
204 {
205 // Return the centrality percentile
206   TString method = x;
207   if(method.CompareTo("V0M")==0)      return fCentralityV0M;
208   if(method.CompareTo("V0A")==0)      return fCentralityV0A;
209   if(method.CompareTo("V0C")==0)      return fCentralityV0C;
210   if(method.CompareTo("FMD")==0)      return fCentralityFMD;
211   if(method.CompareTo("TRK")==0)      return fCentralityTRK;
212   if(method.CompareTo("TKL")==0)      return fCentralityTKL;
213   if(method.CompareTo("CL0")==0)      return fCentralityCL0;
214   if(method.CompareTo("CL1")==0)      return fCentralityCL1;
215   if(method.CompareTo("CND")==0)      return fCentralityCND;
216   if(method.CompareTo("NPA")==0)      return fCentralityNPA;
217   if(method.CompareTo("ZNA")==0)      return fCentralityZNA;
218   if(method.CompareTo("V0MvsFMD")==0) return fCentralityV0MvsFMD;
219   if(method.CompareTo("TKLvsV0M")==0) return fCentralityTKLvsV0M;
220   if(method.CompareTo("ZEMvsZDC")==0) return fCentralityZEMvsZDC;
221   return -1;
222 }
223
224 Int_t AliCentrality::GetCentralityClass10Unchecked(const char *x) const
225 {
226 // Return the centrality class
227   TString method = x;
228   if(method.CompareTo("V0M")==0)      return (Int_t) (fCentralityV0M / 10.0);
229   if(method.CompareTo("V0A")==0)      return (Int_t) (fCentralityV0A / 10.0);
230   if(method.CompareTo("V0C")==0)      return (Int_t) (fCentralityV0C / 10.0);
231   if(method.CompareTo("FMD")==0)      return (Int_t) (fCentralityFMD / 10.0);
232   if(method.CompareTo("TRK")==0)      return (Int_t) (fCentralityTRK / 10.0);
233   if(method.CompareTo("TKL")==0)      return (Int_t) (fCentralityTKL / 10.0);
234   if(method.CompareTo("CL0")==0)      return (Int_t) (fCentralityCL0 / 10.0);
235   if(method.CompareTo("CL1")==0)      return (Int_t) (fCentralityCL1 / 10.0);
236   if(method.CompareTo("CND")==0)      return (Int_t) (fCentralityCND / 10.0);
237   if(method.CompareTo("NPA")==0)      return (Int_t) (fCentralityNPA / 10.0);
238   if(method.CompareTo("ZNA")==0)      return (Int_t) (fCentralityZNA / 10.0);
239   if(method.CompareTo("V0MvsFMD")==0) return (Int_t) (fCentralityV0MvsFMD / 10.0);
240   if(method.CompareTo("TKLvsV0M")==0) return (Int_t) (fCentralityTKLvsV0M / 10.0);
241   if(method.CompareTo("ZEMvsZDC")==0) return (Int_t) (fCentralityZEMvsZDC / 10.0);
242   return -1;
243 }
244
245 Int_t AliCentrality::GetCentralityClass5Unchecked(const char *x) const
246 {
247 // Return the centrality class
248   TString method = x;
249   if(method.CompareTo("V0M")==0)      return (Int_t) (fCentralityV0M / 5.0);
250   if(method.CompareTo("V0A")==0)      return (Int_t) (fCentralityV0A / 5.0);
251   if(method.CompareTo("V0C")==0)      return (Int_t) (fCentralityV0C / 5.0);
252   if(method.CompareTo("FMD")==0)      return (Int_t) (fCentralityFMD / 5.0);
253   if(method.CompareTo("TRK")==0)      return (Int_t) (fCentralityTRK / 5.0);
254   if(method.CompareTo("TKL")==0)      return (Int_t) (fCentralityTKL / 5.0);
255   if(method.CompareTo("CL0")==0)      return (Int_t) (fCentralityCL0 / 5.0);
256   if(method.CompareTo("CL1")==0)      return (Int_t) (fCentralityCL1 / 5.0);
257   if(method.CompareTo("CND")==0)      return (Int_t) (fCentralityCND / 5.0);
258   if(method.CompareTo("NPA")==0)      return (Int_t) (fCentralityNPA / 5.0);
259   if(method.CompareTo("ZNA")==0)      return (Int_t) (fCentralityZNA / 5.0);
260   if(method.CompareTo("V0MvsFMD")==0) return (Int_t) (fCentralityV0MvsFMD / 5.0);
261   if(method.CompareTo("TKLvsV0M")==0) return (Int_t) (fCentralityTKLvsV0M / 5.0);
262   if(method.CompareTo("ZEMvsZDC")==0) return (Int_t) (fCentralityZEMvsZDC / 5.0);
263   return -1;
264
265
266 Bool_t AliCentrality::IsEventInCentralityClassUnchecked(Float_t a, Float_t b, const char *x) const
267 {
268 // True if event inside given centrality class
269   TString method = x;
270   if ((method.CompareTo("V0M")==0) && (fCentralityV0M >=a && fCentralityV0M < b)) return kTRUE;
271   if ((method.CompareTo("V0A")==0) && (fCentralityV0A >=a && fCentralityV0A < b)) return kTRUE;
272   if ((method.CompareTo("V0C")==0) && (fCentralityV0C >=a && fCentralityV0C < b)) return kTRUE;
273   if ((method.CompareTo("FMD")==0) && (fCentralityFMD >=a && fCentralityFMD < b)) return kTRUE;
274   if ((method.CompareTo("TRK")==0) && (fCentralityTRK >=a && fCentralityTRK < b)) return kTRUE;
275   if ((method.CompareTo("TKL")==0) && (fCentralityTKL >=a && fCentralityTKL < b)) return kTRUE;
276   if ((method.CompareTo("CL0")==0) && (fCentralityCL0 >=a && fCentralityCL0 < b)) return kTRUE;
277   if ((method.CompareTo("CL1")==0) && (fCentralityCL1 >=a && fCentralityCL1 < b)) return kTRUE;
278   if ((method.CompareTo("CND")==0) && (fCentralityCND >=a && fCentralityCND < b)) return kTRUE;
279   if ((method.CompareTo("NPA")==0) && (fCentralityNPA >=a && fCentralityNPA < b)) return kTRUE;
280   if ((method.CompareTo("ZNA")==0) && (fCentralityZNA >=a && fCentralityZNA < b)) return kTRUE;
281   if ((method.CompareTo("V0MvsFMD")==0) && (fCentralityV0MvsFMD >=a && fCentralityV0MvsFMD < b)) return kTRUE;
282   if ((method.CompareTo("TKLvsV0M")==0) && (fCentralityTKLvsV0M >=a && fCentralityTKLvsV0M < b)) return kTRUE;
283   if ((method.CompareTo("ZEMvsZDC")==0) && (fCentralityZEMvsZDC >=a && fCentralityZEMvsZDC < b)) return kTRUE;
284   else return kFALSE;
285
286
287 void AliCentrality::Reset()
288 {
289 // Reset.
290
291   fQuality            =  999;
292   fCentralityV0M      =  0;
293   fCentralityV0A      =  0;
294   fCentralityV0C      =  0;
295   fCentralityFMD      =  0;
296   fCentralityTRK      =  0;
297   fCentralityTKL      =  0;
298   fCentralityCL0      =  0;
299   fCentralityCL1      =  0;
300   fCentralityCND      =  0;
301   fCentralityNPA      =  0;
302   fCentralityZNA      =  0;
303   fCentralityV0MvsFMD =  0;
304   fCentralityTKLvsV0M =  0;
305   fCentralityZEMvsZDC =  0;
306 }