bfe04871c8b865da47f77b582b8e65f89a6d6e32
[u/mrichter/AliRoot.git] / ANALYSIS / AliCentralitySelectionTask.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 AliCentralitySelectionTask
18 //   Class to analyze determine centrality            
19 //   author: Alberica Toia
20 //*****************************************************
21
22 #include "AliCentralitySelectionTask.h"
23
24 #include <TTree.h>
25 #include <TList.h>
26 #include <TH1F.h>
27 #include <TH2F.h>
28 #include <TF1.h>
29 #include <TProfile.h>
30 #include <TFile.h>
31 #include <TObjString.h>
32 #include <TString.h>
33 #include <TCanvas.h>
34 #include <TROOT.h>
35 #include <TDirectory.h>
36 #include <TSystem.h>
37 #include <iostream>
38
39 #include "AliAnalysisManager.h"
40 #include "AliHeader.h"
41 #include "AliVEvent.h"
42 #include "AliESD.h"
43 #include "AliESDEvent.h"
44 #include "AliESDHeader.h"
45 #include "AliESDInputHandler.h"
46 #include "AliESDZDC.h"
47 #include "AliESDFMD.h"
48 #include "AliESDTZERO.h"
49 #include "AliESDVZERO.h"
50 #include "AliESDtrackCuts.h"
51 #include "AliESDVertex.h"
52 #include "AliCentrality.h"
53 #include "AliOADBCentrality.h"
54 #include "AliOADBContainer.h"
55 #include "AliMultiplicity.h"
56 #include "AliAODHandler.h"
57 #include "AliAODHeader.h"
58 #include "AliAODEvent.h"
59 #include "AliAODVertex.h"
60 #include "AliAODVZERO.h"
61 #include "AliAODTracklets.h"
62 #include "AliAODMCHeader.h"
63 #include "AliMCEventHandler.h"
64 #include "AliMCEvent.h"
65 #include "AliAODMCParticle.h"
66 #include "AliMCParticle.h"
67 #include "AliStack.h"
68 #include "AliAnalysisTaskSE.h"
69 #include "AliGenEventHeader.h"
70 #include "AliGenHijingEventHeader.h"
71 #include "AliGenDPMjetEventHeader.h"
72 #include "AliGenCocktailEventHeader.h"
73 #include "AliPhysicsSelectionTask.h"
74 #include "AliPhysicsSelection.h"
75 #include "AliBackgroundSelection.h"
76 #include "AliESDUtils.h"
77
78 ClassImp(AliCentralitySelectionTask)
79
80
81 //________________________________________________________________________
82 AliCentralitySelectionTask::AliCentralitySelectionTask():
83 AliAnalysisTaskSE(),
84   fAnalysisInput("ESD"),
85   fIsMCInput(kFALSE),
86   fCurrentRun(-1),
87   fUseScaling(0),
88   fUseCleaning(0),
89   fFillHistos(0),
90   fV0MScaleFactor(0),
91   fSPDScaleFactor(0),
92   fTPCScaleFactor(0),
93   fV0MScaleFactorMC(0),
94   fV0MSPDOutlierPar0(0),  
95   fV0MSPDOutlierPar1(0),  
96   fV0MTPCOutlierPar0(0),  
97   fV0MTPCOutlierPar1(0),  
98   fV0MSPDSigmaOutlierPar0(0),  
99   fV0MSPDSigmaOutlierPar1(0),  
100   fV0MSPDSigmaOutlierPar2(0),  
101   fV0MTPCSigmaOutlierPar0(0),  
102   fV0MTPCSigmaOutlierPar1(0),  
103   fV0MTPCSigmaOutlierPar2(0),   
104   fV0MZDCOutlierPar0(0),            
105   fV0MZDCOutlierPar1(0),            
106   fV0MZDCEcalOutlierPar0(0),   
107   fV0MZDCEcalOutlierPar1(0),   
108   fTrackCuts(0),
109   fEsdTrackCuts(0),
110   fEsdTrackCutsExtra1(0),
111   fEsdTrackCutsExtra2(0),
112   fZVCut(10),
113   fOutliersCut(5),
114   fQuality(999),
115   fIsSelected(0),
116   fMSL(0),
117   fMSH(0),
118   fMUL(0),
119   fMLL(0),
120   fEJE(0),
121   fEGA(0),
122   fPHS(0),
123   fMB(0),
124   fCVHN(0),
125   fCVLN(0),
126   fCVHNbit(0),
127   fCVLNbit(0),
128   fCCENT(0),
129   fCSEMI(0),
130   fCCENTbit(0),
131   fCSEMIbit(0),
132   fCentV0M(0),
133   fCentV0A(0),
134   fCentV0A123(0),
135   fCentV0C(0),
136   fCentV0MEq(0),
137   fCentV0AEq(0),
138   fCentV0CEq(0),
139   fCentFMD(0),
140   fCentTRK(0),
141   fCentTKL(0),
142   fCentCL0(0),
143   fCentCL1(0),
144   fCentCND(0),
145   fCentZNA(0),
146   fCentZNC(0),
147   fCentZPA(0),
148   fCentZPC(0),
149   fCentNPA(0),
150   fCentV0MvsFMD(0),
151   fCentTKLvsV0M(0),
152   fCentZEMvsZDC(0),
153   fCentV0Mtrue(0),
154   fCentV0Atrue(0),
155   fCentV0Ctrue(0),
156   fCentV0MEqtrue(0),
157   fCentV0AEqtrue(0),
158   fCentV0CEqtrue(0),
159   fCentFMDtrue(0),
160   fCentTRKtrue(0),
161   fCentTKLtrue(0),
162   fCentCL0true(0),
163   fCentCL1true(0),
164   fCentCNDtrue(0),
165   fCentZNAtrue(0),
166   fCentZNCtrue(0),
167   fCentZPAtrue(0),
168   fCentZPCtrue(0),
169   fHtempV0M(0),
170   fHtempV0A(0),
171   fHtempV0A123(0),
172   fHtempV0C(0),
173   fHtempV0MEq(0),
174   fHtempV0AEq(0),
175   fHtempV0CEq(0),
176   fHtempFMD(0),
177   fHtempTRK(0),
178   fHtempTKL(0),
179   fHtempCL0(0),
180   fHtempCL1(0),
181   fHtempCND(0),
182   fHtempZNA(0),
183   fHtempZNC(0),
184   fHtempZPA(0),
185   fHtempZPC(0),
186   fHtempV0MvsFMD(0),
187   fHtempTKLvsV0M(0),
188   fHtempZEMvsZDC(0),
189   fHtempNPA(0),
190   fHtempV0Mtrue(0),
191   fHtempV0Atrue(0),
192   fHtempV0Ctrue(0),
193   fHtempV0MEqtrue(0),
194   fHtempV0AEqtrue(0),
195   fHtempV0CEqtrue(0),
196   fHtempFMDtrue(0),
197   fHtempTRKtrue(0),
198   fHtempTKLtrue(0),
199   fHtempCL0true(0),
200   fHtempCL1true(0),
201   fHtempCNDtrue(0),
202   fHtempZNAtrue(0),
203   fHtempZNCtrue(0),
204   fHtempZPAtrue(0),
205   fHtempZPCtrue(0),
206   fOutputList(0),
207   fHOutCentV0M(0),
208   fHOutCentV0A(0),
209   fHOutCentV0A123(0),
210   fHOutCentV0C(0),
211   fHOutCentV0MEq(0),
212   fHOutCentV0AEq(0),
213   fHOutCentV0CEq(0),
214   fHOutCentV0MCVHN(0),
215   fHOutCentV0MCVLN(0),
216   fHOutCentV0MCVHNinMB(0),
217   fHOutCentV0MCVLNinMB(0),
218   fHOutCentV0MCCENT(0),
219   fHOutCentV0MCSEMI(0),
220   fHOutCentV0MCCENTinMB(0),
221   fHOutCentV0MCSEMIinMB(0),
222   fHOutCentV0MMSL(0),
223   fHOutCentV0MMSH(0),
224   fHOutCentV0MMUL(0),
225   fHOutCentV0MMLL(0),
226   fHOutCentV0MEJE(0),
227   fHOutCentV0MEGA(0),
228   fHOutCentV0MPHS(0),
229   fHOutCentV0MMSLinMB(0),
230   fHOutCentV0MMSHinMB(0),
231   fHOutCentV0MMULinMB(0),
232   fHOutCentV0MMLLinMB(0),
233   fHOutCentV0MEJEinMB(0),
234   fHOutCentV0MEGAinMB(0),
235   fHOutCentV0MPHSinMB(0),
236   fHOutCentFMD(0),
237   fHOutCentTRK(0),
238   fHOutCentTKL(0),
239   fHOutCentCL0(0),
240   fHOutCentCL1(0),
241   fHOutCentCND(0),
242   fHOutCentNPA(0),
243   fHOutCentZNA(0),
244   fHOutCentZNC(0),
245   fHOutCentZPA(0),
246   fHOutCentZPC(0),
247   fHOutCentV0MvsFMD(0),
248   fHOutCentTKLvsV0M(0),
249   fHOutCentZEMvsZDC(0),
250   fHOutCentV0MvsCentCL1(0),
251   fHOutCentV0MvsCentTRK(0),
252   fHOutCentTRKvsCentCL1(0),
253   fHOutCentV0MvsCentZDC(0),
254   fHOutCentV0AvsCentV0C(0),
255   fHOutCentV0AvsCentTRK(0),
256   fHOutCentV0AvsCentCND(0),
257   fHOutCentV0AvsCentCL1(0),
258   fHOutCentV0CvsCentTRK(0),
259   fHOutCentV0CvsCentCND(0),
260   fHOutCentV0CvsCentCL1(0),
261   fHOutCentNPAvsCentV0A(0),
262   fHOutCentNPAvsCentV0C(0),
263   fHOutCentNPAvsCentTRK(0),
264   fHOutCentNPAvsCentCND(0),
265   fHOutCentNPAvsCentCL1(0),
266   fHOutCentZNAvsCentV0A(0),
267   fHOutCentZNAvsCentV0C(0),
268   fHOutCentZNAvsCentTRK(0),
269   fHOutCentZNAvsCentCND(0),
270   fHOutCentZNAvsCentCL1(0),
271   fHOutCentZNAvsCentZPA(0),
272   fHOutMultV0AC(0),
273   fHOutMultV0M(0),
274   fHOutMultV0A(0),
275   fHOutMultV0A123(0),
276   fHOutMultV0C(0),
277   fHOutMultV0MEq(0),
278   fHOutMultV0AEq(0),
279   fHOutMultV0CEq(0),
280   fHOutMultV0Mnc(0),
281   fHOutMultV0Anc(0),
282   fHOutMultV0Cnc(0),
283   fHOutMultV0O(0),
284   fHOutMultV0Cells(0),
285   fHOutMultFMD(0),
286   fHOutMultTRK(0),
287   fHOutMultTKL(0),
288   fHOutMultCL0(0),
289   fHOutMultCL1(0),
290   fHOutMultCND(0),
291   fHOutMultNPA(0),
292   fHOutMultZNA(0),
293   fHOutMultZNC(0),
294   fHOutMultZPA(0),
295   fHOutMultZPC(0),
296   fHOutMultV0MvsZDN(0),
297   fHOutMultZEMvsZDN(0),
298   fHOutMultV0MvsZDC(0),
299   fHOutMultZEMvsZDC(0),
300   fHOutMultZEMvsZDCw(0),
301   fHOutMultV0MvsCL1(0),
302   fHOutMultV0MvsTRK(0),
303   fHOutMultTRKvsCL1(0),
304   fHOutMultV0MvsV0O(0),
305   fHOutMultV0OvsCL1(0),
306   fHOutMultV0OvsTRK(0),
307   fHOutMultCL1vsTKL(0),
308   fHOutMultZNAvsZPA(0),
309   fHOutCentV0Mqual1(0),
310   fHOutCentTRKqual1(0),
311   fHOutCentCL1qual1(0),
312   fHOutMultV0MvsCL1qual1(0),
313   fHOutMultV0MvsTRKqual1(0),
314   fHOutMultTRKvsCL1qual1(0),
315   fHOutCentV0Mqual2(0),
316   fHOutCentTRKqual2(0),
317   fHOutCentCL1qual2(0),
318   fHOutMultV0MvsCL1qual2(0),
319   fHOutMultV0MvsTRKqual2(0),
320   fHOutMultTRKvsCL1qual2(0),
321   fHOutQuality(0),
322   fHOutVertex(0),
323   fHOutVertexT0(0)
324 {   
325   // Default constructor
326   AliInfo("Centrality Selection enabled.");
327
328   fUseScaling=kTRUE;
329   fUseCleaning=kTRUE;
330   fFillHistos=kFALSE;
331   fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO.,AliESDTZERO."
332     ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks ";
333 }   
334
335 //________________________________________________________________________
336 AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
337   AliAnalysisTaskSE(name),
338   fAnalysisInput("ESD"),
339   fIsMCInput(kFALSE),
340   fCurrentRun(-1),
341   fUseScaling(0),
342   fUseCleaning(0),
343   fFillHistos(0),
344   fV0MScaleFactor(0),
345   fSPDScaleFactor(0),
346   fTPCScaleFactor(0),
347   fV0MScaleFactorMC(0),
348   fV0MSPDOutlierPar0(0),  
349   fV0MSPDOutlierPar1(0),  
350   fV0MTPCOutlierPar0(0),  
351   fV0MTPCOutlierPar1(0),  
352   fV0MSPDSigmaOutlierPar0(0),  
353   fV0MSPDSigmaOutlierPar1(0),  
354   fV0MSPDSigmaOutlierPar2(0),  
355   fV0MTPCSigmaOutlierPar0(0),  
356   fV0MTPCSigmaOutlierPar1(0),  
357   fV0MTPCSigmaOutlierPar2(0),   
358   fV0MZDCOutlierPar0(0),            
359   fV0MZDCOutlierPar1(0),            
360   fV0MZDCEcalOutlierPar0(0),   
361   fV0MZDCEcalOutlierPar1(0),   
362   fTrackCuts(0),
363   fEsdTrackCuts(0),
364   fEsdTrackCutsExtra1(0),
365   fEsdTrackCutsExtra2(0),
366   fZVCut(10),
367   fOutliersCut(5),
368   fQuality(999),
369   fIsSelected(0),
370   fMSL(0),
371   fMSH(0),
372   fMUL(0),
373   fMLL(0),
374   fEJE(0),
375   fEGA(0),
376   fPHS(0),
377   fMB(0),
378   fCVHN(0),
379   fCVLN(0),
380   fCVHNbit(0),
381   fCVLNbit(0),
382   fCCENT(0),
383   fCSEMI(0),
384   fCCENTbit(0),
385   fCSEMIbit(0),
386   fCentV0M(0),
387   fCentV0A(0),
388   fCentV0A123(0),
389   fCentV0C(0),
390   fCentV0MEq(0),
391   fCentV0AEq(0),
392   fCentV0CEq(0),
393   fCentFMD(0),
394   fCentTRK(0),
395   fCentTKL(0),
396   fCentCL0(0),
397   fCentCL1(0),
398   fCentCND(0),
399   fCentZNA(0),
400   fCentZNC(0),
401   fCentZPA(0),
402   fCentZPC(0),
403   fCentNPA(0),
404   fCentV0MvsFMD(0),
405   fCentTKLvsV0M(0),
406   fCentZEMvsZDC(0),
407   fCentV0Mtrue(0),
408   fCentV0Atrue(0),
409   fCentV0Ctrue(0),
410   fCentV0MEqtrue(0),
411   fCentV0AEqtrue(0),
412   fCentV0CEqtrue(0),
413   fCentFMDtrue(0),
414   fCentTRKtrue(0),
415   fCentTKLtrue(0),
416   fCentCL0true(0),
417   fCentCL1true(0),
418   fCentCNDtrue(0),
419   fCentZNAtrue(0),
420   fCentZNCtrue(0),
421   fCentZPAtrue(0),
422   fCentZPCtrue(0),
423   fHtempV0M(0),
424   fHtempV0A(0),
425   fHtempV0A123(0),
426   fHtempV0C(0),
427   fHtempV0MEq(0),
428   fHtempV0AEq(0),
429   fHtempV0CEq(0),
430   fHtempFMD(0),
431   fHtempTRK(0),
432   fHtempTKL(0),
433   fHtempCL0(0),
434   fHtempCL1(0),
435   fHtempCND(0),
436   fHtempZNA(0),
437   fHtempZNC(0),
438   fHtempZPA(0),
439   fHtempZPC(0),
440   fHtempV0MvsFMD(0),
441   fHtempTKLvsV0M(0),
442   fHtempZEMvsZDC(0),
443   fHtempNPA(0),
444   fHtempV0Mtrue(0),
445   fHtempV0Atrue(0),
446   fHtempV0Ctrue(0),
447   fHtempV0MEqtrue(0),
448   fHtempV0AEqtrue(0),
449   fHtempV0CEqtrue(0),
450   fHtempFMDtrue(0),
451   fHtempTRKtrue(0),
452   fHtempTKLtrue(0),
453   fHtempCL0true(0),
454   fHtempCL1true(0),
455   fHtempCNDtrue(0),
456   fHtempZNAtrue(0),
457   fHtempZNCtrue(0),
458   fHtempZPAtrue(0),
459   fHtempZPCtrue(0),
460   fOutputList(0),
461   fHOutCentV0M(0),
462   fHOutCentV0A(0),
463   fHOutCentV0A123(0),
464   fHOutCentV0C(0),
465   fHOutCentV0MEq(0),
466   fHOutCentV0AEq(0),
467   fHOutCentV0CEq(0),
468   fHOutCentV0MCVHN(0),
469   fHOutCentV0MCVLN(0),
470   fHOutCentV0MCVHNinMB(0),
471   fHOutCentV0MCVLNinMB(0),
472   fHOutCentV0MCCENT(0),
473   fHOutCentV0MCSEMI(0),
474   fHOutCentV0MCCENTinMB(0),
475   fHOutCentV0MCSEMIinMB(0),
476   fHOutCentV0MMSL(0),
477   fHOutCentV0MMSH(0),
478   fHOutCentV0MMUL(0),
479   fHOutCentV0MMLL(0),
480   fHOutCentV0MEJE(0),
481   fHOutCentV0MEGA(0),
482   fHOutCentV0MPHS(0),
483   fHOutCentV0MMSLinMB(0),
484   fHOutCentV0MMSHinMB(0),
485   fHOutCentV0MMULinMB(0),
486   fHOutCentV0MMLLinMB(0),
487   fHOutCentV0MEJEinMB(0),
488   fHOutCentV0MEGAinMB(0),
489   fHOutCentV0MPHSinMB(0),
490   fHOutCentFMD(0),
491   fHOutCentTRK(0),
492   fHOutCentTKL(0),
493   fHOutCentCL0(0),
494   fHOutCentCL1(0),
495   fHOutCentCND(0),
496   fHOutCentNPA(0),
497   fHOutCentZNA(0),
498   fHOutCentZNC(0),
499   fHOutCentZPA(0),
500   fHOutCentZPC(0),
501   fHOutCentV0MvsFMD(0),
502   fHOutCentTKLvsV0M(0),
503   fHOutCentZEMvsZDC(0),
504   fHOutCentV0MvsCentCL1(0),
505   fHOutCentV0MvsCentTRK(0),
506   fHOutCentTRKvsCentCL1(0),
507   fHOutCentV0MvsCentZDC(0),
508   fHOutCentV0AvsCentV0C(0),
509   fHOutCentV0AvsCentTRK(0),
510   fHOutCentV0AvsCentCND(0),
511   fHOutCentV0AvsCentCL1(0),
512   fHOutCentV0CvsCentTRK(0),
513   fHOutCentV0CvsCentCND(0),
514   fHOutCentV0CvsCentCL1(0),
515   fHOutCentNPAvsCentV0A(0),
516   fHOutCentNPAvsCentV0C(0),
517   fHOutCentNPAvsCentTRK(0),
518   fHOutCentNPAvsCentCND(0),
519   fHOutCentNPAvsCentCL1(0),
520   fHOutCentZNAvsCentV0A(0),
521   fHOutCentZNAvsCentV0C(0),
522   fHOutCentZNAvsCentTRK(0),
523   fHOutCentZNAvsCentCND(0),
524   fHOutCentZNAvsCentCL1(0),
525   fHOutCentZNAvsCentZPA(0),
526   fHOutMultV0AC(0),
527   fHOutMultV0M(0),
528   fHOutMultV0A(0),
529   fHOutMultV0A123(0),
530   fHOutMultV0C(0),
531   fHOutMultV0MEq(0),
532   fHOutMultV0AEq(0),
533   fHOutMultV0CEq(0),
534   fHOutMultV0Mnc(0),
535   fHOutMultV0Anc(0),
536   fHOutMultV0Cnc(0),
537   fHOutMultV0O(0),
538   fHOutMultV0Cells(0),
539   fHOutMultFMD(0),
540   fHOutMultTRK(0),
541   fHOutMultTKL(0),
542   fHOutMultCL0(0),
543   fHOutMultCL1(0),
544   fHOutMultCND(0),
545   fHOutMultNPA(0),
546   fHOutMultZNA(0),
547   fHOutMultZNC(0),
548   fHOutMultZPA(0),
549   fHOutMultZPC(0),
550   fHOutMultV0MvsZDN(0),
551   fHOutMultZEMvsZDN(0),
552   fHOutMultV0MvsZDC(0),
553   fHOutMultZEMvsZDC(0),
554   fHOutMultZEMvsZDCw(0),
555   fHOutMultV0MvsCL1(0),
556   fHOutMultV0MvsTRK(0),
557   fHOutMultTRKvsCL1(0),
558   fHOutMultV0MvsV0O(0),
559   fHOutMultV0OvsCL1(0),
560   fHOutMultV0OvsTRK(0),
561   fHOutMultCL1vsTKL(0),
562   fHOutMultZNAvsZPA(0),
563   fHOutCentV0Mqual1(0),
564   fHOutCentTRKqual1(0),
565   fHOutCentCL1qual1(0),
566   fHOutMultV0MvsCL1qual1(0),
567   fHOutMultV0MvsTRKqual1(0),
568   fHOutMultTRKvsCL1qual1(0),
569   fHOutCentV0Mqual2(0),
570   fHOutCentTRKqual2(0),
571   fHOutCentCL1qual2(0),
572   fHOutMultV0MvsCL1qual2(0),
573   fHOutMultV0MvsTRKqual2(0),
574   fHOutMultTRKvsCL1qual2(0),
575   fHOutQuality(0),
576   fHOutVertex(0),
577   fHOutVertexT0(0)
578 {
579   // Default constructor
580   AliInfo("Centrality Selection enabled.");
581   //DefineOutput(1, TList::Class());
582   fUseScaling=kTRUE;
583   fUseCleaning=kTRUE;
584   fFillHistos=kFALSE;
585   fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO.,AliESDTZERO."
586     ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks ";
587 }
588
589 //________________________________________________________________________
590 AliCentralitySelectionTask& AliCentralitySelectionTask::operator=(const AliCentralitySelectionTask& c)
591 {
592   // Assignment operator
593   if (this!=&c) {
594     AliAnalysisTaskSE::operator=(c);
595   }
596   return *this;
597 }
598
599 //________________________________________________________________________
600 AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelectionTask& ana):
601   AliAnalysisTaskSE(ana),
602   fAnalysisInput(ana.fAnalysisInput),
603   fIsMCInput(ana.fIsMCInput),
604   fCurrentRun(ana.fCurrentRun),
605   fUseScaling(ana.fUseScaling),
606   fUseCleaning(ana.fUseCleaning),
607   fFillHistos(ana.fFillHistos),
608   fV0MScaleFactor(ana.fV0MScaleFactor),
609   fSPDScaleFactor(ana.fSPDScaleFactor),
610   fTPCScaleFactor(ana.fTPCScaleFactor),
611   fV0MScaleFactorMC(ana.fV0MScaleFactorMC),
612   fV0MSPDOutlierPar0(ana.fV0MSPDOutlierPar0),  
613   fV0MSPDOutlierPar1(ana.fV0MSPDOutlierPar1),  
614   fV0MTPCOutlierPar0(ana.fV0MTPCOutlierPar0),  
615   fV0MTPCOutlierPar1(ana.fV0MTPCOutlierPar1),  
616   fV0MSPDSigmaOutlierPar0(ana.fV0MSPDSigmaOutlierPar0),  
617   fV0MSPDSigmaOutlierPar1(ana.fV0MSPDSigmaOutlierPar1),  
618   fV0MSPDSigmaOutlierPar2(ana.fV0MSPDSigmaOutlierPar2),  
619   fV0MTPCSigmaOutlierPar0(ana.fV0MTPCSigmaOutlierPar0),  
620   fV0MTPCSigmaOutlierPar1(ana.fV0MTPCSigmaOutlierPar1),  
621   fV0MTPCSigmaOutlierPar2(ana.fV0MTPCSigmaOutlierPar2), 
622   fV0MZDCOutlierPar0(ana.fV0MZDCOutlierPar0),       
623   fV0MZDCOutlierPar1(ana.fV0MZDCOutlierPar1),       
624   fV0MZDCEcalOutlierPar0(ana.fV0MZDCEcalOutlierPar0),   
625   fV0MZDCEcalOutlierPar1(ana.fV0MZDCEcalOutlierPar1),   
626   fTrackCuts(ana.fTrackCuts),
627   fEsdTrackCuts(ana.fEsdTrackCuts),
628   fEsdTrackCutsExtra1(ana.fEsdTrackCutsExtra1),
629   fEsdTrackCutsExtra2(ana.fEsdTrackCutsExtra2),
630   fZVCut(ana.fZVCut),
631   fOutliersCut(ana.fOutliersCut),
632   fQuality(ana.fQuality),
633   fIsSelected(ana.fIsSelected),
634   fMSL(ana.fMSL),
635   fMSH(ana.fMSH),
636   fMUL(ana.fMUL),
637   fMLL(ana.fMLL),
638   fEJE(ana.fEJE),
639   fEGA(ana.fEGA),
640   fPHS(ana.fPHS),
641   fMB(ana.fMB),
642   fCVHN(ana.fCVHN),
643   fCVLN(ana.fCVLN),
644   fCVHNbit(ana.fCVHNbit),
645   fCVLNbit(ana.fCVLNbit),
646   fCCENT(ana.fCCENT),
647   fCSEMI(ana.fCSEMI),
648   fCCENTbit(ana.fCCENTbit),
649   fCSEMIbit(ana.fCSEMIbit),
650   fCentV0M(ana.fCentV0M),
651   fCentV0A(ana.fCentV0A),
652   fCentV0A123(ana.fCentV0A123),
653   fCentV0C(ana.fCentV0C),
654   fCentV0MEq(ana.fCentV0MEq),
655   fCentV0AEq(ana.fCentV0AEq),
656   fCentV0CEq(ana.fCentV0CEq),
657   fCentFMD(ana.fCentFMD),
658   fCentTRK(ana.fCentTRK),
659   fCentTKL(ana.fCentTKL),
660   fCentCL0(ana.fCentCL0),
661   fCentCL1(ana.fCentCL1),
662   fCentCND(ana.fCentCND),
663   fCentZNA(ana.fCentZNA),
664   fCentZNC(ana.fCentZNC),
665   fCentZPA(ana.fCentZPA),
666   fCentZPC(ana.fCentZPC),
667   fCentNPA(ana.fCentNPA),
668   fCentV0MvsFMD(ana.fCentV0MvsFMD),
669   fCentTKLvsV0M(ana.fCentTKLvsV0M),
670   fCentZEMvsZDC(ana.fCentZEMvsZDC),
671   fCentV0Mtrue(ana.fCentV0Mtrue),
672   fCentV0Atrue(ana.fCentV0Atrue),
673   fCentV0Ctrue(ana.fCentV0Ctrue),
674   fCentV0MEqtrue(ana.fCentV0MEqtrue),
675   fCentV0AEqtrue(ana.fCentV0AEqtrue),
676   fCentV0CEqtrue(ana.fCentV0CEqtrue),
677   fCentFMDtrue(ana.fCentFMDtrue),
678   fCentTRKtrue(ana.fCentTRKtrue),
679   fCentTKLtrue(ana.fCentTKLtrue),
680   fCentCL0true(ana.fCentCL0true),
681   fCentCL1true(ana.fCentCL1true),
682   fCentCNDtrue(ana.fCentCNDtrue),
683   fCentZNAtrue(ana.fCentZNAtrue),
684   fCentZNCtrue(ana.fCentZNCtrue),
685   fCentZPAtrue(ana.fCentZPAtrue),
686   fCentZPCtrue(ana.fCentZPCtrue),
687   fHtempV0M(ana.fHtempV0M),
688   fHtempV0A(ana.fHtempV0A),
689   fHtempV0A123(ana.fHtempV0A123),
690   fHtempV0C(ana.fHtempV0C),
691   fHtempV0MEq(ana.fHtempV0MEq),
692   fHtempV0AEq(ana.fHtempV0AEq),
693   fHtempV0CEq(ana.fHtempV0CEq),
694   fHtempFMD(ana.fHtempFMD),
695   fHtempTRK(ana.fHtempTRK),
696   fHtempTKL(ana.fHtempTKL),
697   fHtempCL0(ana.fHtempCL0),
698   fHtempCL1(ana.fHtempCL1),
699   fHtempCND(ana.fHtempCND),
700   fHtempZNA(ana.fHtempZNA),
701   fHtempZNC(ana.fHtempZNC),
702   fHtempZPA(ana.fHtempZPA),
703   fHtempZPC(ana.fHtempZPC),
704   fHtempV0MvsFMD(ana.fHtempV0MvsFMD),
705   fHtempTKLvsV0M(ana.fHtempTKLvsV0M),
706   fHtempZEMvsZDC(ana.fHtempZEMvsZDC),
707   fHtempNPA(ana.fHtempNPA),
708   fHtempV0Mtrue(ana.fHtempV0Mtrue),
709   fHtempV0Atrue(ana.fHtempV0Atrue),
710   fHtempV0Ctrue(ana.fHtempV0Ctrue),
711   fHtempV0MEqtrue(ana.fHtempV0MEqtrue),
712   fHtempV0AEqtrue(ana.fHtempV0AEqtrue),
713   fHtempV0CEqtrue(ana.fHtempV0CEqtrue),
714   fHtempFMDtrue(ana.fHtempFMDtrue),
715   fHtempTRKtrue(ana.fHtempTRKtrue),
716   fHtempTKLtrue(ana.fHtempTKLtrue),
717   fHtempCL0true(ana.fHtempCL0true),
718   fHtempCL1true(ana.fHtempCL1true),
719   fHtempCNDtrue(ana.fHtempCNDtrue),
720   fHtempZNAtrue(ana.fHtempZNAtrue),
721   fHtempZNCtrue(ana.fHtempZNCtrue),
722   fHtempZPAtrue(ana.fHtempZPAtrue),
723   fHtempZPCtrue(ana.fHtempZPCtrue),
724   fOutputList(ana.fOutputList),
725   fHOutCentV0M(ana.fHOutCentV0M),
726   fHOutCentV0A(ana.fHOutCentV0A),
727   fHOutCentV0A123(ana.fHOutCentV0A123),
728   fHOutCentV0C(ana.fHOutCentV0C),
729   fHOutCentV0MEq(ana.fHOutCentV0MEq),
730   fHOutCentV0AEq(ana.fHOutCentV0AEq),
731   fHOutCentV0CEq(ana.fHOutCentV0CEq),
732   fHOutCentV0MCVHN(ana.fHOutCentV0MCVHN),
733   fHOutCentV0MCVLN(ana.fHOutCentV0MCVLN),
734   fHOutCentV0MCVHNinMB(ana.fHOutCentV0MCVHNinMB),
735   fHOutCentV0MCVLNinMB(ana.fHOutCentV0MCVLNinMB),
736   fHOutCentV0MCCENT(ana.fHOutCentV0MCCENT),
737   fHOutCentV0MCSEMI(ana.fHOutCentV0MCSEMI),
738   fHOutCentV0MCCENTinMB(ana.fHOutCentV0MCCENTinMB),
739   fHOutCentV0MCSEMIinMB(ana.fHOutCentV0MCSEMIinMB),
740   fHOutCentV0MMSL(ana.fHOutCentV0MMSL),
741   fHOutCentV0MMSH(ana.fHOutCentV0MMSH),
742   fHOutCentV0MMUL(ana.fHOutCentV0MMUL),
743   fHOutCentV0MMLL(ana.fHOutCentV0MMLL),
744   fHOutCentV0MEJE(ana.fHOutCentV0MEJE),
745   fHOutCentV0MEGA(ana.fHOutCentV0MEGA),
746   fHOutCentV0MPHS(ana.fHOutCentV0MPHS),
747   fHOutCentV0MMSLinMB(ana.fHOutCentV0MMSLinMB),
748   fHOutCentV0MMSHinMB(ana.fHOutCentV0MMSHinMB),
749   fHOutCentV0MMULinMB(ana.fHOutCentV0MMULinMB),
750   fHOutCentV0MMLLinMB(ana.fHOutCentV0MMLLinMB),
751   fHOutCentV0MEJEinMB(ana.fHOutCentV0MEJEinMB),
752   fHOutCentV0MEGAinMB(ana.fHOutCentV0MEGAinMB),
753   fHOutCentV0MPHSinMB(ana.fHOutCentV0MPHSinMB),
754   fHOutCentFMD(ana.fHOutCentFMD),
755   fHOutCentTRK(ana.fHOutCentTRK),
756   fHOutCentTKL(ana.fHOutCentTKL),
757   fHOutCentCL0(ana.fHOutCentCL0),
758   fHOutCentCL1(ana.fHOutCentCL1),
759   fHOutCentCND(ana.fHOutCentCND),
760   fHOutCentNPA(ana.fHOutCentNPA),
761   fHOutCentZNA(ana.fHOutCentZNA),
762   fHOutCentZNC(ana.fHOutCentZNC),
763   fHOutCentZPA(ana.fHOutCentZPA),
764   fHOutCentZPC(ana.fHOutCentZPC),
765   fHOutCentV0MvsFMD(ana.fHOutCentV0MvsFMD),
766   fHOutCentTKLvsV0M(ana.fHOutCentTKLvsV0M),
767   fHOutCentZEMvsZDC(ana.fHOutCentZEMvsZDC),
768   fHOutCentV0MvsCentCL1(ana.fHOutCentV0MvsCentCL1),
769   fHOutCentV0MvsCentTRK(ana.fHOutCentV0MvsCentTRK),
770   fHOutCentTRKvsCentCL1(ana.fHOutCentTRKvsCentCL1),
771   fHOutCentV0MvsCentZDC(ana.fHOutCentV0MvsCentZDC),
772   fHOutCentV0AvsCentV0C(ana.fHOutCentV0AvsCentV0C),
773   fHOutCentV0AvsCentTRK(ana.fHOutCentV0AvsCentTRK),
774   fHOutCentV0AvsCentCND(ana.fHOutCentV0AvsCentCND),
775   fHOutCentV0AvsCentCL1(ana.fHOutCentV0AvsCentCL1),
776   fHOutCentV0CvsCentTRK(ana.fHOutCentV0CvsCentTRK),
777   fHOutCentV0CvsCentCND(ana.fHOutCentV0CvsCentCND),
778   fHOutCentV0CvsCentCL1(ana.fHOutCentV0CvsCentCL1),
779   fHOutCentNPAvsCentV0A(ana.fHOutCentNPAvsCentV0A),
780   fHOutCentNPAvsCentV0C(ana.fHOutCentNPAvsCentV0C),
781   fHOutCentNPAvsCentTRK(ana.fHOutCentNPAvsCentTRK),
782   fHOutCentNPAvsCentCND(ana.fHOutCentNPAvsCentCND),
783   fHOutCentNPAvsCentCL1(ana.fHOutCentNPAvsCentCL1),
784   fHOutCentZNAvsCentV0A(ana.fHOutCentZNAvsCentV0A),
785   fHOutCentZNAvsCentV0C(ana.fHOutCentZNAvsCentV0C),
786   fHOutCentZNAvsCentTRK(ana.fHOutCentZNAvsCentTRK),
787   fHOutCentZNAvsCentCND(ana.fHOutCentZNAvsCentCND),
788   fHOutCentZNAvsCentCL1(ana.fHOutCentZNAvsCentCL1),
789   fHOutCentZNAvsCentZPA(ana.fHOutCentZNAvsCentZPA),
790   fHOutMultV0AC(ana.fHOutMultV0AC),
791   fHOutMultV0M(ana.fHOutMultV0M),
792   fHOutMultV0A(ana.fHOutMultV0A),
793   fHOutMultV0A123(ana.fHOutMultV0A123),
794   fHOutMultV0C(ana.fHOutMultV0C),
795   fHOutMultV0MEq(ana.fHOutMultV0MEq),
796   fHOutMultV0AEq(ana.fHOutMultV0AEq),
797   fHOutMultV0CEq(ana.fHOutMultV0CEq),
798   fHOutMultV0Mnc(ana.fHOutMultV0Mnc),
799   fHOutMultV0Anc(ana.fHOutMultV0Anc),
800   fHOutMultV0Cnc(ana.fHOutMultV0Cnc),
801   fHOutMultV0O(ana.fHOutMultV0O),
802   fHOutMultV0Cells(ana.fHOutMultV0Cells),
803   fHOutMultFMD(ana.fHOutMultFMD),
804   fHOutMultTRK(ana.fHOutMultTRK),
805   fHOutMultTKL(ana.fHOutMultTKL),
806   fHOutMultCL0(ana.fHOutMultCL0),
807   fHOutMultCL1(ana.fHOutMultCL1),
808   fHOutMultCND(ana.fHOutMultCND),
809   fHOutMultNPA(ana.fHOutMultNPA),
810   fHOutMultZNA(ana.fHOutMultZNA),
811   fHOutMultZNC(ana.fHOutMultZNC),
812   fHOutMultZPA(ana.fHOutMultZPA),
813   fHOutMultZPC(ana.fHOutMultZPC),
814   fHOutMultV0MvsZDN(ana.fHOutMultV0MvsZDN),
815   fHOutMultZEMvsZDN(ana.fHOutMultZEMvsZDN),
816   fHOutMultV0MvsZDC(ana.fHOutMultV0MvsZDC),
817   fHOutMultZEMvsZDC(ana.fHOutMultZEMvsZDC),
818   fHOutMultZEMvsZDCw(ana.fHOutMultZEMvsZDCw),
819   fHOutMultV0MvsCL1(ana.fHOutMultV0MvsCL1),
820   fHOutMultV0MvsTRK(ana.fHOutMultV0MvsTRK),
821   fHOutMultTRKvsCL1(ana.fHOutMultTRKvsCL1),
822   fHOutMultV0MvsV0O(ana.fHOutMultV0MvsV0O),
823   fHOutMultV0OvsCL1(ana.fHOutMultV0OvsCL1),
824   fHOutMultV0OvsTRK(ana.fHOutMultV0OvsTRK),
825   fHOutMultCL1vsTKL(ana.fHOutMultCL1vsTKL),
826   fHOutMultZNAvsZPA(ana.fHOutMultZNAvsZPA),
827   fHOutCentV0Mqual1(ana.fHOutCentV0Mqual1),
828   fHOutCentTRKqual1(ana.fHOutCentTRKqual1),
829   fHOutCentCL1qual1(ana.fHOutCentCL1qual1),
830   fHOutMultV0MvsCL1qual1(ana.fHOutMultV0MvsCL1qual1),
831   fHOutMultV0MvsTRKqual1(ana.fHOutMultV0MvsTRKqual1),
832   fHOutMultTRKvsCL1qual1(ana.fHOutMultTRKvsCL1qual1),
833   fHOutCentV0Mqual2(ana.fHOutCentV0Mqual2),
834   fHOutCentTRKqual2(ana.fHOutCentTRKqual2),
835   fHOutCentCL1qual2(ana.fHOutCentCL1qual2),
836   fHOutMultV0MvsCL1qual2(ana.fHOutMultV0MvsCL1qual2),
837   fHOutMultV0MvsTRKqual2(ana.fHOutMultV0MvsTRKqual2),
838   fHOutMultTRKvsCL1qual2(ana.fHOutMultTRKvsCL1qual2),
839   fHOutQuality(ana.fHOutQuality),
840   fHOutVertex(ana.fHOutVertex),
841   fHOutVertexT0(ana.fHOutVertexT0)
842 {
843   // Copy Constructor   
844
845 }
846
847 //________________________________________________________________________
848 AliCentralitySelectionTask::~AliCentralitySelectionTask()
849 {
850   // Destructor  
851   if (fOutputList && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) delete fOutputList;
852   if (fTrackCuts) delete fTrackCuts;
853   if (fEsdTrackCuts) delete fEsdTrackCuts;
854   if (fEsdTrackCutsExtra1) delete fEsdTrackCutsExtra1;
855   if (fEsdTrackCutsExtra2) delete fEsdTrackCutsExtra2;
856 }  
857
858 //________________________________________________________________________
859 void AliCentralitySelectionTask::UserCreateOutputObjects()
860 {  
861   // Create the output containers
862   if(fDebug>1) printf("AnalysisCentralitySelectionTask::UserCreateOutputObjects() \n");
863   AliLog::SetClassDebugLevel("AliCentralitySelectionTask", AliLog::kInfo);
864
865   if (fFillHistos) {    
866     fOutputList = new TList();
867     fOutputList->SetOwner();
868     fHOutCentV0M     = new TH1F("fHOutCentV0M","fHOutCentV0M; Centrality V0",505,0,101);
869     fHOutCentV0A    = new TH1F("fHOutCentV0A","fHOutCentV0A; Centrality V0A",505,0,101);
870     fHOutCentV0A123 = new TH1F("fHOutCentV0A123","fHOutCentV0A123; Centrality V0A-123",505,0,101);
871     fHOutCentV0C    = new TH1F("fHOutCentV0C","fHOutCentV0C; Centrality V0C",505,0,101);
872     fHOutCentV0MEq     = new TH1F("fHOutCentV0MEq","fHOutCentV0MEq; Centrality V0 equalized",505,0,101);
873     fHOutCentV0AEq    = new TH1F("fHOutCentV0AEq","fHOutCentV0AEq; Centrality V0A equalized",505,0,101);
874     fHOutCentV0CEq    = new TH1F("fHOutCentV0CEq","fHOutCentV0CEq; Centrality V0C equalized",505,0,101);
875     fHOutCentV0MCVHN= new TH1F("fHOutCentV0M_CVHN","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
876     fHOutCentV0MCVLN= new TH1F("fHOutCentV0M_CVLN","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
877     fHOutCentV0MCVHNinMB= new TH1F("fHOutCentV0M_CVHNinMB","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
878     fHOutCentV0MCVLNinMB= new TH1F("fHOutCentV0M_CVLNinMB","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
879     fHOutCentV0MCCENT= new TH1F("fHOutCentV0M_CCENT","fHOutCentV0M_CCENT; Centrality V0",505,0,101);
880     fHOutCentV0MCSEMI= new TH1F("fHOutCentV0M_CSEMI","fHOutCentV0M_CSEMI; Centrality V0",505,0,101);
881     fHOutCentV0MCCENTinMB= new TH1F("fHOutCentV0M_CCENTinMB","fHOutCentV0M_CCENT; Centrality V0",505,0,101);
882     fHOutCentV0MCSEMIinMB= new TH1F("fHOutCentV0M_CSEMIinMB","fHOutCentV0M_CSEMI; Centrality V0",505,0,101);
883     fHOutCentV0MMSL= new TH1F("fHOutCentV0M_MSL","fHOutCentV0M_MSL; Centrality V0",505,0,101);
884     fHOutCentV0MMSH= new TH1F("fHOutCentV0M_MSH","fHOutCentV0M_MSH; Centrality V0",505,0,101);
885     fHOutCentV0MMUL= new TH1F("fHOutCentV0M_MUL","fHOutCentV0M_MUL; Centrality V0",505,0,101);
886     fHOutCentV0MMLL= new TH1F("fHOutCentV0M_MLL","fHOutCentV0M_MLL; Centrality V0",505,0,101);
887     fHOutCentV0MEJE= new TH1F("fHOutCentV0M_EJE","fHOutCentV0M_EJE; Centrality V0",505,0,101);
888     fHOutCentV0MEGA= new TH1F("fHOutCentV0M_EGA","fHOutCentV0M_EGA; Centrality V0",505,0,101);
889     fHOutCentV0MPHS= new TH1F("fHOutCentV0M_PHS","fHOutCentV0M_PHS; Centrality V0",505,0,101);
890     fHOutCentV0MMSLinMB= new TH1F("fHOutCentV0M_MSLinMB","fHOutCentV0M_MSLinMB; Centrality V0",505,0,101);
891     fHOutCentV0MMSHinMB= new TH1F("fHOutCentV0M_MSHinMB","fHOutCentV0M_MSHinMB; Centrality V0",505,0,101);
892     fHOutCentV0MMULinMB= new TH1F("fHOutCentV0M_MULinMB","fHOutCentV0M_MULinMB; Centrality V0",505,0,101);
893     fHOutCentV0MMLLinMB= new TH1F("fHOutCentV0M_MLLinMB","fHOutCentV0M_MLLinMB; Centrality V0",505,0,101);
894     fHOutCentV0MEJEinMB= new TH1F("fHOutCentV0M_EJEinMB","fHOutCentV0M_EJEinMB; Centrality V0",505,0,101);
895     fHOutCentV0MEGAinMB= new TH1F("fHOutCentV0M_EGAinMB","fHOutCentV0M_EGAinMB; Centrality V0",505,0,101);
896     fHOutCentV0MPHSinMB= new TH1F("fHOutCentV0M_PHSinMB","fHOutCentV0M_PHSinMB; Centrality V0",505,0,101);
897     fHOutCentFMD     = new TH1F("fHOutCentFMD","fHOutCentFMD; Centrality FMD",505,0,101);
898     fHOutCentTRK     = new TH1F("fHOutCentTRK","fHOutCentTRK; Centrality TPC",505,0,101);
899     fHOutCentTKL     = new TH1F("fHOutCentTKL","fHOutCentTKL; Centrality tracklets",505,0,101);
900     fHOutCentCL0     = new TH1F("fHOutCentCL0","fHOutCentCL0; Centrality SPD inner",505,0,101);
901     fHOutCentCL1     = new TH1F("fHOutCentCL1","fHOutCentCL1; Centrality SPD outer",505,0,101);
902     fHOutCentCND     = new TH1F("fHOutCentCND","fHOutCentCND; Centrality candle",505,0,101);
903     fHOutCentNPA     = new TH1F("fHOutCentNPA","fHOutCentNPA; Centrality Npart",505,0,101);
904     fHOutCentZNA     = new TH1F("fHOutCentZNA","fHOutCentZNA; Centrality ZNA",505,0,101);
905     fHOutCentZNC     = new TH1F("fHOutCentZNC","fHOutCentZNC; Centrality ZNC",505,0,101);
906     fHOutCentZPA     = new TH1F("fHOutCentZPA","fHOutCentZPA; Centrality ZPA",505,0,101);
907     fHOutCentZPC     = new TH1F("fHOutCentZPC","fHOutCentZPC; Centrality ZPC",505,0,101);
908     fHOutCentV0MvsFMD= new TH1F("fHOutCentV0MvsFMD","fHOutCentV0MvsFMD; Centrality V0 vs FMD",505,0,101);
909     fHOutCentTKLvsV0M= new TH1F("fHOutCentTKLvsV0M","fHOutCentTKLvsV0M; Centrality tracklets vs V0",505,0,101);
910     fHOutCentZEMvsZDC= new TH1F("fHOutCentZEMvsZDC","fHOutCentZEMvsZDC; Centrality ZEM vs ZDC",505,0,101);
911     fHOutCentV0MvsCentCL1= new TH2F("fHOutCentV0MvsCentCL1","fHOutCentV0MvsCentCL1; Cent V0; Cent SPD",505,0,101,505,0,101);
912     fHOutCentV0MvsCentTRK= new TH2F("fHOutCentV0MvsCentTRK","fHOutCentV0MvsCentTRK; Cent V0; Cent TPC",505,0,101,505,0,101);
913     fHOutCentTRKvsCentCL1= new TH2F("fHOutCentTRKvsCentCL1","fHOutCentTRKvsCentCL1; Cent TPC; Cent SPD",505,0,101,505,0,101);
914     fHOutCentV0MvsCentZDC= new TH2F("fHOutCentV0MvsCentZDC","fHOutCentV0MvsCentZDC; Cent V0; Cent ZDC",505,0,101,505,0,101);
915     fHOutCentV0AvsCentV0C= new TH2F("fHOutCentV0AvsCentV0C","fHOutCentV0AvsCentV0C; Cent V0A; Cent V0C;", 505,0,101,505,0,101);
916     fHOutCentV0AvsCentTRK= new TH2F("fHOutCentV0AvsCentTRK","fHOutCentV0AvsCentTRK; Cent V0A; Cent TRK;", 505,0,101,505,0,101);
917     fHOutCentV0AvsCentCND= new TH2F("fHOutCentV0AvsCentCND","fHOutCentV0AvsCentCND; Cent V0A; Cent CND;", 505,0,101,505,0,101);
918     fHOutCentV0AvsCentCL1= new TH2F("fHOutCentV0AvsCentCL1","fHOutCentV0AvsCentCL1; Cent V0A; Cent CL1;", 505,0,101,505,0,101);
919     fHOutCentV0CvsCentTRK= new TH2F("fHOutCentV0CvsCentTRK","fHOutCentV0CvsCentTRK; Cent V0C; Cent TRK;", 505,0,101,505,0,101);
920     fHOutCentV0CvsCentCND= new TH2F("fHOutCentV0CvsCentCND","fHOutCentV0CvsCentCND; Cent V0C; Cent CND;", 505,0,101,505,0,101);
921     fHOutCentV0CvsCentCL1= new TH2F("fHOutCentV0CvsCentCL1","fHOutCentV0CvsCentCL1; Cent V0C; Cent CL1;", 505,0,101,505,0,101);
922     fHOutCentNPAvsCentV0A= new TH2F("fHOutCentNPAvsCentV0A","fHOutCentNPAvsCentV0A; Cent NPA; Cent V0A;", 505,0,101,505,0,101);
923     fHOutCentNPAvsCentV0C= new TH2F("fHOutCentNPAvsCentV0C","fHOutCentNPAvsCentV0C; Cent NPA; Cent V0C;", 505,0,101,505,0,101);
924     fHOutCentNPAvsCentTRK= new TH2F("fHOutCentNPAvsCentTRK","fHOutCentNPAvsCentTRK; Cent NPA; Cent TRK;", 505,0,101,505,0,101);
925     fHOutCentNPAvsCentCND= new TH2F("fHOutCentNPAvsCentCND","fHOutCentNPAvsCentCND; Cent NPA; Cent CND;", 505,0,101,505,0,101);
926     fHOutCentNPAvsCentCL1= new TH2F("fHOutCentNPAvsCentCL1","fHOutCentNPAvsCentCL1; Cent NPA; Cent CL1;", 505,0,101,505,0,101);
927     fHOutCentZNAvsCentV0A= new TH2F("fHOutCentZNAvsCentV0A","fHOutCentZNAvsCentV0A; Cent ZNA; Cent V0A;", 505,0,101,505,0,101);
928     fHOutCentZNAvsCentV0C= new TH2F("fHOutCentZNAvsCentV0C","fHOutCentZNAvsCentV0C; Cent ZNA; Cent V0C;", 505,0,101,505,0,101);
929     fHOutCentZNAvsCentTRK= new TH2F("fHOutCentZNAvsCentTRK","fHOutCentZNAvsCentTRK; Cent ZNA; Cent TRK;", 505,0,101,505,0,101);
930     fHOutCentZNAvsCentCND= new TH2F("fHOutCentZNAvsCentCND","fHOutCentZNAvsCentCND; Cent ZNA; Cent CND;", 505,0,101,505,0,101);
931     fHOutCentZNAvsCentCL1= new TH2F("fHOutCentZNAvsCentCL1","fHOutCentZNAvsCentCL1; Cent ZNA; Cent CL1;", 505,0,101,505,0,101);
932     fHOutCentZNAvsCentZPA= new TH2F("fHOutCentZNAvsCentZPA","fHOutCentZNAvsCentZPA; Cent ZNA; Cent ZPA;", 505,0,101,505,0,101);
933
934     fHOutMultV0AC = new TH2F("fHOutMultV0AC","fHOutMultV0AC; Multiplicity V0A; Multiplicity V0C",1000,0,1000,1000,0,1000);
935     fHOutMultV0M  = new TH1F("fHOutMultV0M","fHOutMultV0M; Multiplicity V0",25000,0,25000);
936     fHOutMultV0A  = new TH1F("fHOutMultV0A","fHOutMultV0A; Multiplicity V0",25000,0,25000);
937     fHOutMultV0A123  = new TH1F("fHOutMultV0A123","fHOutMultV0A123; Multiplicity V0A-123",25000,0,25000);
938     fHOutMultV0C  = new TH1F("fHOutMultV0C","fHOutMultV0C; Multiplicity V0",25000,0,25000);
939     fHOutMultV0MEq  = new TH1F("fHOutMultV0MEq","fHOutMultV0MEq; Multiplicity V0",25000,0,25000);
940     fHOutMultV0AEq  = new TH1F("fHOutMultV0AEq","fHOutMultV0AEq; Multiplicity V0",25000,0,25000);
941     fHOutMultV0CEq  = new TH1F("fHOutMultV0CEq","fHOutMultV0CEq; Multiplicity V0",25000,0,25000);
942     fHOutMultV0Mnc= new TH1F("fHOutMultV0Mnc","fHOutMultV0Mnc; Multiplicity V0",25000,0,25000);
943     fHOutMultV0Anc= new TH1F("fHOutMultV0Anc","fHOutMultV0Anc; Multiplicity V0",25000,0,25000);
944     fHOutMultV0Cnc= new TH1F("fHOutMultV0Cnc","fHOutMultV0Cnc; Multiplicity V0",25000,0,25000);
945     fHOutMultV0O  = new TH1F("fHOutMultV0O","fHOutMultV0O; Multiplicity V0",40000,0,40000);
946     fHOutMultV0Cells = new TH2F("fHOutMultV0Cells","fHOutMultV0Cells",33,-0.5,32.5,33,-0.5,32.5); 
947     fHOutMultFMD = new TH1F("fHOutMultFMD","fHOutMultFMD; Multiplicity FMD",24000,0,24000);
948     fHOutMultTRK = new TH1F("fHOutMultTRK","fHOutMultTRK; Multiplicity TPC",4000,0,4000);
949     fHOutMultTKL = new TH1F("fHOutMultTKL","fHOutMultTKL; Multiplicity tracklets",5000,0,5000);
950     fHOutMultCL0 = new TH1F("fHOutMultCL0","fHOutMultCL0; Multiplicity SPD inner",7000,0,7000);
951     fHOutMultCL1 = new TH1F("fHOutMultCL1","fHOutMultCL1; Multiplicity SPD outer",7000,0,7000);
952     fHOutMultCND = new TH1F("fHOutMultCND","fHOutMultCND; Multiplicity candle",4000,0,4000);
953     fHOutMultNPA = new TH1F("fHOutMultNPA","fHOutMultNPA; Nparticipants",450,0,450);
954     fHOutMultZNA = new TH1F("fHOutMultZNA","fHOutMultZNA; ZNA Energy",2000,0,2000);
955     fHOutMultZNC = new TH1F("fHOutMultZNC","fHOutMultZNC; ZNC Energy",2000,0,2000);
956     fHOutMultZPA = new TH1F("fHOutMultZPA","fHOutMultZPA; ZPA Energy",2000,0,2000);
957     fHOutMultZPC = new TH1F("fHOutMultZPC","fHOutMultZPC; ZPC Energy",2000,0,2000);
958
959     fHOutMultV0MvsZDN = new TH2F("fHOutMultV0MvsZDN","fHOutMultV0MvsZDN; Multiplicity V0; Energy ZDC-N",500,0,1200,500,0,2000);
960     fHOutMultZEMvsZDN = new TH2F("fHOutMultZEMvsZDN","fHOutMultZEMvsZDN; Energy ZEM; Energy ZDC-N",500,0,2500,500,0,180000);
961     fHOutMultV0MvsZDC = new TH2F("fHOutMultV0MvsZDC","fHOutMultV0MvsZDC; Multiplicity V0; Energy ZDC",500,0,30000,500,0,200000);
962     fHOutMultZEMvsZDC = new TH2F("fHOutMultZEMvsZDC","fHOutMultZEMvsZDC; Energy ZEM; Energy ZDC",500,0,2500,500,0,200000);
963     fHOutMultZEMvsZDCw = new TH2F("fHOutMultZEMvsZDCw","fHOutMultZEMvsZDCw; Energy ZEM; Energy ZDC (weigthed with V0 percentile)",500,0,2500,500,0,200000);
964     fHOutMultV0MvsCL1 = new TH2F("fHOutMultV0MvsCL1","fHOutMultV0MvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
965     fHOutMultV0MvsTRK = new TH2F("fHOutMultV0MvsTRK","fHOutMultV0MvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
966     fHOutMultTRKvsCL1 = new TH2F("fHOutMultTRKvsCL1","fHOutMultTRKvsCL1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
967     fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,40000);
968     fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",500,0,40000,700,0,7000);
969     fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",500,0,40000,400,0,4000);
970     fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,30000);
971     fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
972     fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
973     fHOutMultCL1vsTKL = new TH2F ("fHOutMultCL1vsTKL","fHOutMultCL1vsTKL; Multiplicity SPD outer; Multiplicity tracklets",700,0,7000,700,0,7000);
974     fHOutMultZNAvsZPA = new TH2F ("fHOutMultZNAvsZPA","fHOutMultZNAvsZPA; Energy ZNA; Energy ZPA",500,0,2000,500,0,2000);
975     
976     fHOutCentV0Mqual1 = new TH1F("fHOutCentV0M_qual1","fHOutCentV0M_qual1; Centrality V0",505,0,101);
977     fHOutCentTRKqual1 = new TH1F("fHOutCentTRK_qual1","fHOutCentTRK_qual1; Centrality TPC",505,0,101);
978     fHOutCentCL1qual1 = new TH1F("fHOutCentCL1_qual1","fHOutCentCL1_qual1; Centrality SPD outer",505,0,101);
979     fHOutMultV0MvsCL1qual1 = new TH2F("fHOutMultV0MvsCL1_qual1","fHOutMultV0MvsCL1_qual1; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
980     fHOutMultV0MvsTRKqual1 = new TH2F("fHOutMultV0MvsTRK_qual1","fHOutMultV0MvsTRK_qual1; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
981     fHOutMultTRKvsCL1qual1 = new TH2F("fHOutMultTRKvsCL1_qual1","fHOutMultTRKvsCL1_qual1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
982     
983     fHOutCentV0Mqual2 = new TH1F("fHOutCentV0M_qual2","fHOutCentV0M_qual2; Centrality V0",505,0,101);
984     fHOutCentTRKqual2 = new TH1F("fHOutCentTRK_qual2","fHOutCentTRK_qual2; Centrality TPC",505,0,101);
985     fHOutCentCL1qual2 = new TH1F("fHOutCentCL1_qual2","fHOutCentCL1_qual2; Centrality SPD outer",505,0,101);
986     fHOutMultV0MvsCL1qual2 = new TH2F("fHOutMultV0MvsCL1_qual2","fHOutMultV0MvsCL1_qual2; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
987     fHOutMultV0MvsTRKqual2 = new TH2F("fHOutMultV0MvsTRK_qual2","fHOutMultV0MvsTRK_qual2; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
988     fHOutMultTRKvsCL1qual2 = new TH2F("fHOutMultTRKvsCL1_qual2","fHOutMultTRKvsCL1_qual2; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
989     
990     fHOutQuality = new TH1F("fHOutQuality", "fHOutQuality", 100,-0.5,99.5);
991     fHOutVertex  = new TH1F("fHOutVertex", "fHOutVertex", 100,-20,20);
992     fHOutVertexT0  = new TH1F("fHOutVertexT0", "fHOutVertexT0", 100,-20,20);
993   
994     fOutputList->Add(fHOutCentV0M);
995     fOutputList->Add(fHOutCentV0A);
996     fOutputList->Add(fHOutCentV0A123);
997     fOutputList->Add(fHOutCentV0C);
998     fOutputList->Add(fHOutCentV0MEq);
999     fOutputList->Add(fHOutCentV0AEq);
1000     fOutputList->Add(fHOutCentV0CEq);
1001     fOutputList->Add(fHOutCentV0MCVHN);
1002     fOutputList->Add(fHOutCentV0MCVLN);
1003     fOutputList->Add(fHOutCentV0MCVHNinMB);
1004     fOutputList->Add(fHOutCentV0MCVLNinMB);
1005     fOutputList->Add(fHOutCentV0MCCENT);
1006     fOutputList->Add(fHOutCentV0MCSEMI);
1007     fOutputList->Add(fHOutCentV0MCCENTinMB);
1008     fOutputList->Add(fHOutCentV0MCSEMIinMB);
1009     fOutputList->Add(fHOutCentV0MMSL);
1010     fOutputList->Add(fHOutCentV0MMSH);
1011     fOutputList->Add(fHOutCentV0MMUL);
1012     fOutputList->Add(fHOutCentV0MMLL);
1013     fOutputList->Add(fHOutCentV0MEJE);
1014     fOutputList->Add(fHOutCentV0MEGA);
1015     fOutputList->Add(fHOutCentV0MPHS);
1016     fOutputList->Add(fHOutCentV0MMSLinMB);
1017     fOutputList->Add(fHOutCentV0MMSHinMB);
1018     fOutputList->Add(fHOutCentV0MMULinMB);
1019     fOutputList->Add(fHOutCentV0MMLLinMB);
1020     fOutputList->Add(fHOutCentV0MEJEinMB);
1021     fOutputList->Add(fHOutCentV0MEGAinMB);
1022     fOutputList->Add(fHOutCentV0MPHSinMB);
1023     fOutputList->Add(fHOutCentFMD);
1024     fOutputList->Add(fHOutCentTRK);
1025     fOutputList->Add(fHOutCentTKL);
1026     fOutputList->Add(fHOutCentCL0);
1027     fOutputList->Add(fHOutCentCL1);
1028     fOutputList->Add(fHOutCentCND);
1029     fOutputList->Add(fHOutCentNPA);
1030     fOutputList->Add(fHOutCentZNA);
1031     fOutputList->Add(fHOutCentZNC);
1032     fOutputList->Add(fHOutCentZPA);
1033     fOutputList->Add(fHOutCentZPC);
1034     fOutputList->Add(fHOutCentV0MvsFMD);
1035     fOutputList->Add(fHOutCentTKLvsV0M);
1036     fOutputList->Add(fHOutCentZEMvsZDC);
1037     fOutputList->Add(fHOutCentV0MvsCentCL1);
1038     fOutputList->Add(fHOutCentV0MvsCentTRK);
1039     fOutputList->Add(fHOutCentTRKvsCentCL1);
1040     fOutputList->Add(fHOutCentV0MvsCentZDC);
1041     fOutputList->Add(fHOutCentV0AvsCentV0C);
1042     fOutputList->Add(fHOutCentV0AvsCentTRK);
1043     fOutputList->Add(fHOutCentV0AvsCentCND);
1044     fOutputList->Add(fHOutCentV0AvsCentCL1);
1045     fOutputList->Add(fHOutCentV0CvsCentTRK);
1046     fOutputList->Add(fHOutCentV0CvsCentCND);
1047     fOutputList->Add(fHOutCentV0CvsCentCL1);
1048     fOutputList->Add(fHOutCentNPAvsCentV0A);
1049     fOutputList->Add(fHOutCentNPAvsCentV0C);
1050     fOutputList->Add(fHOutCentNPAvsCentTRK);
1051     fOutputList->Add(fHOutCentNPAvsCentCND);
1052     fOutputList->Add(fHOutCentNPAvsCentCL1);
1053     fOutputList->Add(fHOutCentZNAvsCentV0A);
1054     fOutputList->Add(fHOutCentZNAvsCentV0C);
1055     fOutputList->Add(fHOutCentZNAvsCentTRK);
1056     fOutputList->Add(fHOutCentZNAvsCentCND);
1057     fOutputList->Add(fHOutCentZNAvsCentCL1);
1058     fOutputList->Add(fHOutCentZNAvsCentZPA);
1059
1060     fOutputList->Add(fHOutMultV0AC); 
1061     fOutputList->Add(fHOutMultV0M); 
1062     fOutputList->Add(fHOutMultV0A); 
1063     fOutputList->Add(fHOutMultV0A123); 
1064     fOutputList->Add(fHOutMultV0C); 
1065     fOutputList->Add(fHOutMultV0MEq); 
1066     fOutputList->Add(fHOutMultV0AEq); 
1067     fOutputList->Add(fHOutMultV0CEq); 
1068     fOutputList->Add(fHOutMultV0Mnc); 
1069     fOutputList->Add(fHOutMultV0Anc); 
1070     fOutputList->Add(fHOutMultV0Cnc); 
1071     fOutputList->Add(fHOutMultV0O);
1072     fOutputList->Add(fHOutMultV0Cells) ;   
1073     fOutputList->Add(fHOutMultFMD); 
1074     fOutputList->Add(fHOutMultTRK); 
1075     fOutputList->Add(fHOutMultTKL); 
1076     fOutputList->Add(fHOutMultCL0); 
1077     fOutputList->Add(fHOutMultCL1); 
1078     fOutputList->Add(fHOutMultCND); 
1079     fOutputList->Add(fHOutMultNPA); 
1080     fOutputList->Add(fHOutMultZNA); 
1081     fOutputList->Add(fHOutMultZNC); 
1082     fOutputList->Add(fHOutMultZPA); 
1083     fOutputList->Add(fHOutMultZPC); 
1084     fOutputList->Add(fHOutMultV0MvsZDN);
1085     fOutputList->Add(fHOutMultZEMvsZDN);
1086     fOutputList->Add(fHOutMultV0MvsZDC);
1087     fOutputList->Add(fHOutMultZEMvsZDC);
1088     fOutputList->Add(fHOutMultZEMvsZDCw);
1089     fOutputList->Add(fHOutMultV0MvsCL1);
1090     fOutputList->Add(fHOutMultV0MvsTRK);
1091     fOutputList->Add(fHOutMultTRKvsCL1);
1092     fOutputList->Add(fHOutMultV0MvsV0O);
1093     fOutputList->Add(fHOutMultV0OvsCL1);
1094     fOutputList->Add(fHOutMultV0OvsTRK);
1095     fOutputList->Add(fHOutMultCL1vsTKL);
1096     fOutputList->Add(fHOutMultZNAvsZPA);
1097     fOutputList->Add(fHOutCentV0Mqual1);
1098     fOutputList->Add(fHOutCentTRKqual1);
1099     fOutputList->Add(fHOutCentCL1qual1);                   
1100     fOutputList->Add(fHOutMultV0MvsCL1qual1);
1101     fOutputList->Add(fHOutMultV0MvsTRKqual1);
1102     fOutputList->Add(fHOutMultTRKvsCL1qual1);
1103     fOutputList->Add(fHOutCentV0Mqual2);
1104     fOutputList->Add(fHOutCentTRKqual2);
1105     fOutputList->Add(fHOutCentCL1qual2);
1106     fOutputList->Add(fHOutMultV0MvsCL1qual2);
1107     fOutputList->Add(fHOutMultV0MvsTRKqual2);
1108     fOutputList->Add(fHOutMultTRKvsCL1qual2);
1109     fOutputList->Add(fHOutQuality);
1110     fOutputList->Add(fHOutVertex);
1111     fOutputList->Add(fHOutVertexT0);
1112   
1113     PostData(1, fOutputList); 
1114   }
1115   
1116   fTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
1117   fEsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
1118   fEsdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kOff);
1119   // Add SPD requirement
1120   fEsdTrackCutsExtra1 = new AliESDtrackCuts("SPD", "Require 1 cluster in SPD");
1121   fEsdTrackCutsExtra1->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
1122   // Add SDD requirement
1123   fEsdTrackCutsExtra2 = new AliESDtrackCuts("SDD", "Require 1 cluster in first layer SDD");
1124   fEsdTrackCutsExtra2->SetClusterRequirementITS(AliESDtrackCuts::kSDD,AliESDtrackCuts::kFirst);  
1125 }
1126
1127 //________________________________________________________________________
1128 void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
1129
1130   // Execute analysis for current event:
1131   if(fDebug>1) printf(" **** AliCentralitySelectionTask::UserExec() \n");
1132
1133   Int_t    runType = 0;             // 0:PbPb, 1:pPb or Pbp 
1134
1135   Float_t  zncEnergy = 0.;          //  ZNC Energy
1136   Float_t  zpcEnergy = 0.;          //  ZPC Energy
1137   Float_t  znaEnergy = 0.;          //  ZNA Energy
1138   Float_t  zpaEnergy = 0.;          //  ZPA Energy
1139   Float_t  zem1Energy = 0.;         //  ZEM1 Energy
1140   Float_t  zem2Energy = 0.;         //  ZEM2 Energy
1141   Bool_t   zdcEnergyCal = kFALSE;   // if zdc is calibrated (in pass2)
1142   Double_t znaTower = 0.;           // common PMT of ZNA 
1143   Double_t zncTower = 0.;           // common PMT of ZNC 
1144   Double_t zpaTower = 0.;           // common PMT of ZPA 
1145   Double_t zpcTower = 0.;           // common PMT of ZPC 
1146   Bool_t   znaFired = kFALSE;
1147   Bool_t   zncFired = kFALSE;
1148   Bool_t   zpaFired = kFALSE;
1149   Bool_t   zpcFired = kFALSE;
1150
1151   Int_t    nTracks = 0;             //  no. tracks
1152   Int_t    nTracklets = 0;          //  no. tracklets
1153   Int_t    nClusters[6] = {0};      //  no. clusters on 6 ITS layers
1154   Int_t    nChips[2] = {0,0};       //  no. chips on 2 SPD layers
1155   Float_t  spdCorr =0;              //  corrected spd2 multiplicity
1156   Int_t    multCND = 0;             //  no. tracks (candle condition)
1157
1158   Float_t  multV0A123 = 0;          //  multiplicity from V0 reco side A (ring 1-2-3)
1159   Float_t  multV0A  = 0;            //  multiplicity from V0 reco side A
1160   Float_t  multV0C  = 0;            //  multiplicity from V0 reco side C
1161   Float_t  multV0AEq  = 0;          //  multiplicity from V0 reco side A
1162   Float_t  multV0CEq  = 0;          //  multiplicity from V0 reco side C
1163   Float_t  multV0ACorr  = 0;            //  multiplicity from V0 reco side A
1164   Float_t  multV0CCorr  = 0;            //  multiplicity from V0 reco side C
1165   Short_t  multV0AOnline  = 0;      //  multiplicity from V0 reco side A
1166   Short_t  multV0COnline  = 0;      //  multiplicity from V0 reco side C
1167   Float_t  v0Corr = 0;              // corrected V0 multiplicity (used for MC)
1168   Int_t nV0A = 0;
1169   Int_t nV0C = 0;
1170
1171   Float_t  multFMDA = 0;            //  multiplicity from FMD on detector A
1172   Float_t  multFMDC = 0;            //  multiplicity from FMD on detector C
1173
1174   Float_t zvtx =0;                  // z-vertex SPD
1175   Int_t zvtxNcont =0;               // contributors to z-vertex SPD
1176
1177   Float_t zvtxT0 =0;                // z-vertex T0
1178
1179   Int_t Npart =0;                   // N. of participants (true MC)
1180
1181   AliCentrality *esdCent = 0;
1182
1183   AliVEvent *event = InputEvent();
1184   AliESDEvent *esd = dynamic_cast<AliESDEvent*>(event);
1185   AliAODEvent *aod =  dynamic_cast<AliAODEvent*>(event);
1186   if(fAnalysisInput.CompareTo("ESD")==0){
1187     if (!esd) {
1188       AliError("No ESD Event");
1189       return;
1190     }
1191   } else if(fAnalysisInput.CompareTo("AOD")==0){
1192     if (!aod) {
1193       AliError("No AOD Event");
1194       return;
1195     }
1196   }
1197   LoadBranches();
1198
1199   if (SetupRun(event)<0) {
1200     AliError("Centrality File not available for this run");
1201     return;
1202   }
1203
1204   if (esd) {
1205     if (strcmp(esd->GetESDRun()->GetBeamType(), "A-A") == 0) runType=0;
1206     else runType=1;
1207     if (strcmp(esd->GetESDRun()->GetBeamType(), "p-p") == 0) runType=2;
1208   } else {
1209     Int_t runNumber = event->GetRunNumber();
1210     if ((runNumber >= 136851 && runNumber <= 139517) ||  // LHC10h
1211         (runNumber >= 166529 && runNumber <= 170593))    // LHC11h
1212       runType=0;
1213   }
1214
1215   esdCent = event->GetCentrality();
1216
1217   // ***** Vertex Info
1218   if (esd) {
1219     const AliESDVertex* vtxESD = esd->GetPrimaryVertexSPD();
1220     zvtx        = vtxESD->GetZ(); 
1221     zvtxNcont   = vtxESD->GetNContributors();
1222   } else {
1223     const AliAODVertex* spdVtx = aod->GetPrimaryVertexSPD();
1224     zvtx        = spdVtx->GetZ(); 
1225     zvtxNcont   = spdVtx->GetNContributors();
1226   }
1227
1228     // ***** V0 info    
1229   AliVVZERO* esdV0 = event->GetVZEROData();
1230   if (!esdV0) {
1231     AliError("AliVVZERO not available");
1232     return;
1233   }
1234
1235   multV0A=esdV0->GetMTotV0A();
1236   multV0C=esdV0->GetMTotV0C();
1237
1238   // excluding innermost V0A ring
1239   for (int i=40; i<64; i++)
1240     multV0A123 += esdV0->GetMultiplicity(i);
1241
1242   multV0ACorr = AliESDUtils::GetCorrV0A(multV0A,zvtx);    
1243   multV0CCorr = AliESDUtils::GetCorrV0C(multV0C,zvtx);    
1244
1245   v0Corr = multV0A+multV0C; // Todo: C.L. not clear why here we do not use the sum of the corrected values?
1246
1247   multV0AOnline=esdV0->GetTriggerChargeA(); 
1248   multV0COnline=esdV0->GetTriggerChargeC(); 
1249
1250   // Count V0 flags
1251   for(Int_t i = 0; i < 32; ++i) {
1252     if (esdV0->GetBBFlag(i)) nV0C++;
1253     if (esdV0->GetBBFlag(i+32)) nV0A++;
1254   }
1255     
1256   // Equalized signals
1257   multV0AEq=0.;
1258   multV0CEq=0.;
1259   for(Int_t iCh = 4; iCh < 7; ++iCh) {
1260     Double_t mult = esd->GetVZEROEqMultiplicity(iCh);
1261     multV0AEq += mult;
1262   }
1263   for(Int_t iCh = 0; iCh < 3; ++iCh) {
1264     Double_t mult = esd->GetVZEROEqMultiplicity(iCh);
1265     multV0CEq += mult;
1266   }
1267
1268   Bool_t kT0BB = kFALSE;    
1269   if (esd) {
1270     // ***** T0 info    
1271     const AliESDTZERO* esdT0 = esd->GetESDTZERO();
1272     if (!esdT0)
1273       {
1274         AliError("AliESDTZERO not available");
1275         return;
1276       }
1277     Int_t trig=esdT0->GetT0Trig();
1278     if(trig&1) kT0BB=kTRUE;
1279     zvtxT0=esdT0->GetT0zVertex();
1280   } else {
1281     const AliAODTZERO* esdT0 = aod->GetTZEROData();
1282     if (!esdT0)
1283       {
1284         AliError("AliAODTZERO not available");
1285         return;
1286       }
1287     Int_t trig=1;//esdT0->GetT0Trig(); //* Todo: C.L. This info is not in AOD? */
1288     if(trig&1) kT0BB=kTRUE;
1289     zvtxT0=esdT0->GetT0zVertex();
1290   }
1291
1292   // ***** Trigger info    
1293   fIsSelected = ((esdV0->GetV0ADecision()==1) && (esdV0->GetV0CDecision()==1));
1294   TString trigStr;
1295   if (esd)
1296     trigStr = esd->GetFiredTriggerClasses();
1297   else
1298     trigStr = aod->GetFiredTriggerClasses();
1299     
1300   fMB=kFALSE;
1301   fCVHN=kFALSE; fCVLN=kFALSE; fCCENT=kFALSE; fCSEMI=kFALSE; 
1302   fMSL=kFALSE;  fMSH=kFALSE;  fMUL=kFALSE;   fMLL=kFALSE;
1303   fEJE=kFALSE;  fEGA=kFALSE;  fPHS=kFALSE;
1304
1305   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI")) && (fIsSelected)) 
1306     fMB=kTRUE;
1307   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CVHN")) && (fIsSelected)) 
1308     fCVHN=kTRUE;
1309   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CVLN")) && (fIsSelected))
1310     fCVLN=kTRUE;
1311   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CCENT")) && (fIsSelected)) 
1312     fCCENT=kTRUE;
1313   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CSEMI")) && (fIsSelected))
1314     fCSEMI=kTRUE;
1315     
1316   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MSL")) && (fIsSelected))
1317     fMSL=kTRUE;
1318   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MSH")) && (fIsSelected))
1319     fMSH=kTRUE;
1320   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MUL")) && (fIsSelected))
1321     fMUL=kTRUE;
1322   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MLL")) && (fIsSelected))
1323     fMLL=kTRUE;
1324   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1EJE")) && (fIsSelected))
1325     fEJE=kTRUE;
1326   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1EGA")) && (fIsSelected))
1327     fEGA=kTRUE;
1328   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1PHS")) && (fIsSelected))
1329     fPHS=kTRUE;
1330   
1331   fCVHNbit=kFALSE;    fCVLNbit=kFALSE;       fCCENTbit=kFALSE;    fCSEMIbit=kFALSE; 
1332   if (esdV0->GetTriggerBits() & (1<<8)) 
1333     fCVHNbit=kTRUE;
1334   if (esdV0->GetTriggerBits() & (1<<6)) 
1335     fCVLNbit=kTRUE;
1336     
1337   if (kT0BB && fCVHNbit)
1338     fCCENTbit=kTRUE;
1339   if (kT0BB && fCVLNbit)
1340     fCSEMIbit=kTRUE;
1341
1342   if (esd) {  
1343     // ***** CB info (tracklets, clusters, chips)
1344     //nTracks    = event->GetNumberOfTracks();     
1345     nTracks    = fTrackCuts ? (Short_t)fTrackCuts->GetReferenceMultiplicity(esd,kTRUE):-1;
1346   } else {
1347     AliAODHeader *h = aod->GetHeader();
1348     nTracks    = h!=0 ? (Short_t)h->GetTPConlyRefMultiplicity():-1;
1349   }
1350
1351   if (esd) {
1352     Short_t nTrTPCcandle = 0;
1353     for (Int_t iTracks = 0; iTracks < esd->GetNumberOfTracks(); iTracks++) {
1354
1355       AliESDtrack* track = esd->GetTrack(iTracks);
1356       if (!track) continue;
1357       
1358       if (! fEsdTrackCuts->IsSelected(track) )continue;
1359       
1360       if (fEsdTrackCutsExtra1 && fEsdTrackCutsExtra2 &&
1361           !fEsdTrackCutsExtra1->IsSelected(track) &&
1362           !fEsdTrackCutsExtra2->IsSelected(track)) continue;
1363       
1364       if (track->Pt() > 0.4 && TMath::Abs(track->Eta()) < 0.9)  nTrTPCcandle++;
1365     } 
1366     multCND = nTrTPCcandle;
1367   } else {
1368     Short_t nTrTPCcandle = 0;
1369     for (Int_t iTracks = 0; iTracks < aod->GetNumberOfTracks(); iTracks++) {
1370
1371       AliAODTrack* track = aod->GetTrack(iTracks);
1372
1373       if (!track) continue;
1374       if (!track->TestFilterBit(1<<5) && 
1375           !track->TestFilterBit(1<<6)) continue;
1376
1377       if (track->Pt() > 0.4 && TMath::Abs(track->Eta()) < 0.9)  nTrTPCcandle++;
1378     }
1379     multCND = nTrTPCcandle;
1380   }
1381
1382   if (esd) {
1383     const AliMultiplicity *mult = esd->GetMultiplicity();
1384     nTracklets = mult->GetNumberOfTracklets();
1385
1386     for(Int_t ilay=0; ilay<6; ilay++){
1387       nClusters[ilay] = mult->GetNumberOfITSClusters(ilay);
1388     }
1389
1390     for(Int_t ilay=0; ilay<2; ilay++){
1391       nChips[ilay] = mult->GetNumberOfFiredChips(ilay);
1392     }
1393   } else {
1394     AliAODTracklets *mult = aod->GetTracklets();
1395     nTracklets = mult->GetNumberOfTracklets();
1396     AliAODHeader *h = aod->GetHeader();
1397     for(Int_t ilay=0; ilay<6; ilay++){
1398       nClusters[ilay] = h->GetNumberOfITSClusters(ilay);
1399     }
1400   }
1401   spdCorr = AliESDUtils::GetCorrSPD2(nClusters[1],zvtx);
1402   
1403   if (esd) {
1404     // ***** FMD info
1405     AliESDFMD *fmd = esd->GetFMDData();
1406     Float_t totalMultA = 0;
1407     Float_t totalMultC = 0;
1408     const Float_t fFMDLowCut = 0.4;
1409   
1410     for(UShort_t det=1;det<=3;det++) {
1411       Int_t nRings = (det==1 ? 1 : 2);
1412       for (UShort_t ir = 0; ir < nRings; ir++) {          
1413         Char_t   ring = (ir == 0 ? 'I' : 'O');
1414         UShort_t nsec = (ir == 0 ? 20  : 40);
1415         UShort_t nstr = (ir == 0 ? 512 : 256);
1416         for(UShort_t sec =0; sec < nsec;  sec++)  {
1417           for(UShort_t strip = 0; strip < nstr; strip++) {
1418             
1419             Float_t fmdMult = fmd->Multiplicity(det,ring,sec,strip);
1420             if(fmdMult == 0 || fmdMult == AliESDFMD::kInvalidMult) continue;
1421             
1422             Float_t nParticles=0;
1423             
1424             if(fmdMult > fFMDLowCut) {
1425               nParticles = 1.;
1426             }
1427             
1428             if (det<3) totalMultA = totalMultA + nParticles;
1429             else totalMultC = totalMultC + nParticles;
1430             
1431           }
1432         }
1433       }
1434     }
1435     multFMDA = totalMultA;
1436     multFMDC = totalMultC;
1437   }
1438
1439   if (esd) {
1440     // ***** ZDC info
1441     AliESDZDC *esdZDC = esd->GetESDZDC();
1442     zdcEnergyCal = esdZDC->AliESDZDC::TestBit(AliESDZDC::kEnergyCalibratedSignal);
1443     if (zdcEnergyCal) {      
1444       zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy());
1445       zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy());
1446       znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy());
1447       zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy());
1448     } else {
1449       zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy())/8.;
1450       zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy())/8.;
1451       znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy())/8.;
1452       zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy())/8.;
1453     }
1454     zem1Energy = (Float_t) (esdZDC->GetZDCEMEnergy(0))/8.;
1455     zem2Energy = (Float_t) (esdZDC->GetZDCEMEnergy(1))/8.;
1456
1457     for (Int_t j = 0; j < 4; ++j) 
1458       if (esdZDC->GetZDCTDCData(12,j) != 0) 
1459         znaFired = kTRUE;
1460     
1461     for (Int_t j = 0; j < 4; ++j) 
1462       if (esdZDC->GetZDCTDCData(10,j) != 0) 
1463         zncFired = kTRUE;   
1464
1465     for (Int_t j = 0; j < 4; ++j) 
1466       if (esdZDC->GetZDCTDCData(13,j) != 0) 
1467         zpaFired = kTRUE;
1468     
1469     for (Int_t j = 0; j < 4; ++j) 
1470       if (esdZDC->GetZDCTDCData(11,j) != 0) 
1471         zpcFired = kTRUE;   
1472
1473     const Double_t *ZNAtower = esdZDC->GetZN2TowerEnergy(); 
1474     const Double_t *ZNCtower = esdZDC->GetZN1TowerEnergy();
1475     const Double_t *ZPAtower = esdZDC->GetZP2TowerEnergy(); 
1476     const Double_t *ZPCtower = esdZDC->GetZP1TowerEnergy();
1477     if (znaFired) znaTower = ZNAtower[0];
1478     if (zncFired) zncTower = ZNCtower[0];
1479     if (zpaFired) zpaTower = ZPAtower[0];
1480     if (zpcFired) zpcTower = ZPCtower[0];
1481
1482   } else {
1483     AliAODHeader *h = aod->GetHeader();
1484     zncEnergy  = (Float_t) (h->GetZDCN1Energy());
1485     zpcEnergy  = (Float_t) (h->GetZDCP1Energy());
1486     znaEnergy  = (Float_t) (h->GetZDCN2Energy());
1487     zpaEnergy  = (Float_t) (h->GetZDCP2Energy());
1488     zem1Energy = (Float_t) (h->GetZDCEMEnergy(0))/8.; //Todo: C.L. Should we devide here by 8? It is done in the ESD case!
1489     zem2Energy = (Float_t) (h->GetZDCEMEnergy(1))/8.;
1490
1491     AliAODZDC *aodZDC = aod->GetZDCData();
1492     const Double_t *ZNAtower = aodZDC->GetZNATowerEnergy(); 
1493     const Double_t *ZNCtower = aodZDC->GetZNCTowerEnergy();
1494     const Double_t *ZPAtower = aodZDC->GetZPATowerEnergy(); 
1495     const Double_t *ZPCtower = aodZDC->GetZPCTowerEnergy();
1496     znaTower = ZNAtower[0];
1497     zncTower = ZNCtower[0];
1498     zpaTower = ZPAtower[0];
1499     zpcTower = ZPCtower[0];
1500
1501     znaFired = kFALSE; // trick because info is not stored in AOD
1502     zncFired = kFALSE; // trick because info is not stored in AOD
1503     zpaFired = kFALSE; // trick because info is not stored in AOD
1504     zpcFired = kFALSE; // trick because info is not stored in AOD
1505     if (esdCent->GetCentralityPercentile("ZNA") != 101) znaFired = kTRUE;
1506     if (esdCent->GetCentralityPercentile("ZNC") != 101) zncFired = kTRUE;
1507     if (esdCent->GetCentralityPercentile("ZPA") != 101) zpaFired = kTRUE;
1508     if (esdCent->GetCentralityPercentile("ZPC") != 101) zpcFired = kTRUE;
1509   }
1510
1511   if (esd) {
1512     // ***** MC info
1513     AliAnalysisManager* anMan = AliAnalysisManager::GetAnalysisManager();
1514     AliMCEventHandler* eventHandler = (AliMCEventHandler*)anMan->GetMCtruthEventHandler();
1515     AliStack*    stack=0;
1516     AliMCEvent*  mcEvent=0;
1517     if (fIsMCInput && eventHandler && (mcEvent=eventHandler->MCEvent()) && (stack=mcEvent->Stack())) {
1518       AliGenHijingEventHeader* hHijing=0;
1519       AliGenDPMjetEventHeader* dpmHeader=0;
1520       
1521       AliGenEventHeader* mcGenH = mcEvent->GenEventHeader();
1522       if (mcGenH->InheritsFrom(AliGenHijingEventHeader::Class())) 
1523         hHijing = (AliGenHijingEventHeader*)mcGenH;      
1524       else if (mcGenH->InheritsFrom(AliGenCocktailEventHeader::Class())) {
1525         TList* headers = ((AliGenCocktailEventHeader*)mcGenH)->GetHeaders();
1526         //headers->Print();
1527         hHijing = dynamic_cast<AliGenHijingEventHeader*>(headers->FindObject("Hijing"));
1528         if (!hHijing) hHijing = dynamic_cast<AliGenHijingEventHeader*>(headers->FindObject("Hijing pPb_0"));
1529         if (!hHijing) hHijing = dynamic_cast<AliGenHijingEventHeader*>(headers->FindObject("Hijing_0"));
1530       }
1531       else if (mcGenH->InheritsFrom(AliGenDPMjetEventHeader::Class())) {
1532         dpmHeader = (AliGenDPMjetEventHeader*)mcGenH;
1533       }
1534       if(hHijing)   Npart = hHijing->ProjectileParticipants()+hHijing->TargetParticipants();
1535       if(dpmHeader) Npart = dpmHeader->ProjectileParticipants()+ dpmHeader->TargetParticipants();
1536     }
1537   } 
1538
1539   // ***** Scaling for MC
1540   if (fIsMCInput) {
1541     fUseScaling=kFALSE;
1542     v0Corr  = Short_t((multV0A+multV0C)  * fV0MScaleFactorMC);
1543     multV0A  = multV0A * fV0MScaleFactorMC;
1544     multV0C  = multV0C * fV0MScaleFactorMC;
1545   }
1546   // ***** Scaling for Data 
1547   if (fUseScaling) {
1548     v0Corr  = Short_t(v0Corr /   fV0MScaleFactor);
1549     spdCorr = spdCorr / fSPDScaleFactor;
1550     nTracks = Int_t(nTracks /   fTPCScaleFactor);
1551   }
1552
1553   // ***** Centrality Selection
1554   if(fHtempV0M) fCentV0M = fHtempV0M->GetBinContent(fHtempV0M->FindBin((v0Corr)));
1555   if(fHtempV0A) fCentV0A = fHtempV0A->GetBinContent(fHtempV0A->FindBin((multV0ACorr)));
1556   if(fHtempV0A123) fCentV0A123 = fHtempV0A123->GetBinContent(fHtempV0A123->FindBin((multV0A123)));
1557   if(fHtempV0C) fCentV0C = fHtempV0C->GetBinContent(fHtempV0C->FindBin((multV0CCorr)));
1558   if(fHtempV0MEq) fCentV0MEq = fHtempV0MEq->GetBinContent(fHtempV0MEq->FindBin((multV0AEq+multV0CEq)));
1559   if(fHtempV0AEq) fCentV0AEq = fHtempV0AEq->GetBinContent(fHtempV0AEq->FindBin((multV0AEq)));
1560   if(fHtempV0CEq) fCentV0CEq = fHtempV0CEq->GetBinContent(fHtempV0CEq->FindBin((multV0CEq)));
1561   if(fHtempFMD) fCentFMD = fHtempFMD->GetBinContent(fHtempFMD->FindBin((multFMDA+multFMDC)));
1562   if(fHtempTRK) fCentTRK = fHtempTRK->GetBinContent(fHtempTRK->FindBin(nTracks));
1563   if(fHtempTKL) fCentTKL = fHtempTKL->GetBinContent(fHtempTKL->FindBin(nTracklets));
1564   if(fHtempCL0) fCentCL0 = fHtempCL0->GetBinContent(fHtempCL0->FindBin(nClusters[0]));
1565   if(fHtempCL1) fCentCL1 = fHtempCL1->GetBinContent(fHtempCL1->FindBin(spdCorr));
1566   if(fHtempCND) fCentCND = fHtempCND->GetBinContent(fHtempCND->FindBin(multCND));
1567   if(fHtempZNA) {
1568     if(znaFired) fCentZNA = fHtempZNA->GetBinContent(fHtempZNA->FindBin(znaTower));
1569     else fCentZNA = 101;
1570   }
1571   if(fHtempZNC) {
1572     if(zncFired) fCentZNC = fHtempZNC->GetBinContent(fHtempZNC->FindBin(zncTower));
1573     else fCentZNC = 101;
1574   }
1575   if(fHtempZPA) {
1576     if(znaFired) fCentZPA = fHtempZPA->GetBinContent(fHtempZPA->FindBin(zpaTower));
1577     else fCentZPA = 101;
1578   }
1579   if(fHtempZPC) {
1580     if(zpcFired) fCentZPC = fHtempZPC->GetBinContent(fHtempZPC->FindBin(zpcTower));
1581     else fCentZPC = 101;
1582   }
1583
1584
1585   if(fHtempV0MvsFMD) fCentV0MvsFMD = fHtempV0MvsFMD->GetBinContent(fHtempV0MvsFMD->FindBin((multV0A+multV0C)));
1586   if(fHtempTKLvsV0M) fCentTKLvsV0M = fHtempTKLvsV0M->GetBinContent(fHtempTKLvsV0M->FindBin(nTracklets));
1587   if(fHtempZEMvsZDC) fCentZEMvsZDC = fHtempZEMvsZDC->GetBinContent(fHtempZEMvsZDC->FindBin(zem1Energy+zem2Energy,zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1588
1589   if(fHtempNPA) fCentNPA = fHtempNPA->GetBinContent(fHtempNPA->FindBin(Npart));
1590   if(fHtempV0Mtrue) fCentV0Mtrue = fHtempV0Mtrue->GetBinContent(fHtempV0Mtrue->FindBin((multV0ACorr+multV0CCorr)));
1591   if(fHtempV0Atrue) fCentV0Atrue = fHtempV0Atrue->GetBinContent(fHtempV0Atrue->FindBin((multV0ACorr)));
1592   if(fHtempV0Ctrue) fCentV0Ctrue = fHtempV0Ctrue->GetBinContent(fHtempV0Ctrue->FindBin((multV0CCorr)));
1593   if(fHtempV0MEqtrue) fCentV0MEqtrue = fHtempV0MEqtrue->GetBinContent(fHtempV0MEqtrue->FindBin((multV0AEq+multV0CEq)));
1594   if(fHtempV0AEqtrue) fCentV0AEqtrue = fHtempV0AEqtrue->GetBinContent(fHtempV0AEqtrue->FindBin((multV0AEq)));
1595   if(fHtempV0CEqtrue) fCentV0CEqtrue = fHtempV0CEqtrue->GetBinContent(fHtempV0CEqtrue->FindBin((multV0CEq)));
1596   if(fHtempFMDtrue) fCentFMDtrue = fHtempFMDtrue->GetBinContent(fHtempFMDtrue->FindBin((multFMDA+multFMDC)));
1597   if(fHtempTRKtrue) fCentTRKtrue = fHtempTRKtrue->GetBinContent(fHtempTRKtrue->FindBin(nTracks));
1598   if(fHtempTKLtrue) fCentTKLtrue = fHtempTKLtrue->GetBinContent(fHtempTKLtrue->FindBin(nTracklets));
1599   if(fHtempCL0true) fCentCL0true = fHtempCL0true->GetBinContent(fHtempCL0true->FindBin(nClusters[0]));
1600   if(fHtempCL1true) fCentCL1true = fHtempCL1true->GetBinContent(fHtempCL1true->FindBin(spdCorr));
1601   if(fHtempCNDtrue) fCentCNDtrue = fHtempCNDtrue->GetBinContent(fHtempCNDtrue->FindBin(multCND));
1602   if(fHtempZNAtrue) fCentZNAtrue = fHtempZNAtrue->GetBinContent(fHtempZNAtrue->FindBin(znaTower));
1603   if(fHtempZNCtrue) fCentZNCtrue = fHtempZNCtrue->GetBinContent(fHtempZNCtrue->FindBin(zncTower));
1604    
1605
1606   // ***** Cleaning
1607   if (fUseCleaning) {
1608     fQuality=0;
1609     
1610     // ***** vertex
1611     if (TMath::Abs(zvtx)>fZVCut || zvtxNcont<1) fQuality += 1;   
1612
1613     // ***** outliers, skip in case of MC input
1614     if (!fIsMCInput) {
1615       // **** V0 vs SPD
1616       if (IsOutlierV0MSPD(spdCorr, v0Corr, int(fCentV0M))) fQuality  += 2;
1617       // ***** V0 vs TPC
1618       if (IsOutlierV0MTPC(nTracks, v0Corr, int(fCentV0M))) fQuality  += 4;
1619       // ***** V0 vs ZDC
1620       if (IsOutlierV0MZDC((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
1621           (zdcEnergyCal==kFALSE) ) fQuality  += 8;
1622       if (IsOutlierV0MZDCECal((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
1623           (zdcEnergyCal==kTRUE) ) fQuality  += 8;
1624     }
1625   } else {
1626     fQuality = 0;
1627   }
1628
1629       
1630   if (esdCent) {
1631     if (aod&&(fDebug>1)) {
1632       Double_t v0m = esdCent->GetCentralityPercentile("V0M");
1633       Double_t cl1 = esdCent->GetCentralityPercentile("CL1");
1634       Double_t trk = esdCent->GetCentralityPercentile("TRK");
1635       Double_t cnd = esdCent->GetCentralityPercentile("CND");
1636       Double_t zna = esdCent->GetCentralityPercentile("ZNA");
1637       printf("AOD: v0m %.2f %.2f (%.2f) cl1 %.2f %.2f (%.2f) trk %.2f %.2f (%.2f) cnd %.2f %.2f (%.2f) zna %.2f %.2f (%.2f)\n", 
1638              v0m, fCentV0M, fCentV0M!=0?v0m/fCentV0M:1, cl1, fCentCL1, fCentCL1!=0?cl1/fCentCL1:1, trk, fCentTRK, 
1639              fCentTRK!=0?trk/fCentTRK:1, cnd, fCentCND, fCentCND!=0?cnd/fCentCND:1, zna, fCentZNA, fCentZNA!=0?zna/fCentZNA:1);
1640     }
1641     esdCent->SetQuality(fQuality);
1642     esdCent->SetCentralityV0M(fCentV0M);
1643     esdCent->SetCentralityV0A(fCentV0A);
1644     esdCent->SetCentralityV0A123(fCentV0A123);
1645     esdCent->SetCentralityV0C(fCentV0C);
1646     esdCent->SetCentralityV0MEq(fCentV0MEq);
1647     esdCent->SetCentralityV0AEq(fCentV0AEq);
1648     esdCent->SetCentralityV0CEq(fCentV0CEq);
1649     esdCent->SetCentralityFMD(fCentFMD);
1650     esdCent->SetCentralityTRK(fCentTRK);
1651     esdCent->SetCentralityTKL(fCentTKL);
1652     esdCent->SetCentralityCL0(fCentCL0);
1653     esdCent->SetCentralityCL1(fCentCL1);
1654     esdCent->SetCentralityCND(fCentCND);
1655     esdCent->SetCentralityNPA(fCentNPA);
1656     esdCent->SetCentralityZNA(fCentZNA);
1657     esdCent->SetCentralityZNC(fCentZNC);
1658     esdCent->SetCentralityZPA(fCentZPA);
1659     esdCent->SetCentralityZPC(fCentZPC);
1660     esdCent->SetCentralityV0MvsFMD(fCentV0MvsFMD);
1661     esdCent->SetCentralityTKLvsV0M(fCentTKLvsV0M);
1662     esdCent->SetCentralityZEMvsZDC(fCentZEMvsZDC);
1663
1664     esdCent->SetCentralityV0Mtrue(fCentV0Mtrue);
1665     esdCent->SetCentralityV0Atrue(fCentV0Atrue);
1666     esdCent->SetCentralityV0Ctrue(fCentV0Ctrue);
1667     // no setters in AliCentrality for
1668     // fCentV0MEqtrue
1669     // fCentV0AEqtrue
1670     // fCentV0CEqtrue
1671     esdCent->SetCentralityFMDtrue(fCentFMDtrue);
1672     esdCent->SetCentralityTRKtrue(fCentTRKtrue);
1673     esdCent->SetCentralityTKLtrue(fCentTKLtrue);
1674     esdCent->SetCentralityCL0true(fCentCL0true);
1675     esdCent->SetCentralityCL1true(fCentCL1true);
1676     esdCent->SetCentralityCNDtrue(fCentCNDtrue);
1677     esdCent->SetCentralityZNAtrue(fCentZNAtrue);
1678     esdCent->SetCentralityZNCtrue(fCentZNCtrue);
1679     esdCent->SetCentralityZPAtrue(fCentZPAtrue);
1680     esdCent->SetCentralityZPCtrue(fCentZPCtrue);
1681   }
1682
1683   // filling QA histograms
1684   if (fFillHistos) {    
1685
1686     if (fIsMCInput) { // fill histo with true centrality for simulations
1687       fCentV0M = fCentV0Mtrue;        
1688       fCentV0A = fCentV0Atrue;        
1689       fCentV0C = fCentV0Ctrue;        
1690       fCentV0MEq = fCentV0MEqtrue;        
1691       fCentV0AEq = fCentV0AEqtrue;        
1692       fCentV0CEq = fCentV0CEqtrue;        
1693       fCentFMD = fCentFMDtrue;        
1694       fCentTRK = fCentTRKtrue;        
1695       fCentTKL = fCentTKLtrue;        
1696       fCentCL0 = fCentCL0true;        
1697       fCentCL1 = fCentCL1true;        
1698       fCentCND = fCentCNDtrue;        
1699       fCentZNA = fCentZNAtrue;        
1700       fCentZNC = fCentZNCtrue;        
1701       fCentZPA = fCentZPAtrue;        
1702       fCentZPC = fCentZPCtrue;        
1703     }
1704
1705
1706     if ((fMB) && (abs(zvtx)<10))        fHOutMultCL1vsTKL->Fill(spdCorr,nTracklets);
1707
1708     if (fCVHN)   fHOutCentV0MCVHN->Fill(fCentV0M);
1709     if (fCVLN)   fHOutCentV0MCVLN->Fill(fCentV0M);
1710     if (fCCENT)  fHOutCentV0MCCENT->Fill(fCentV0M);
1711     if (fCSEMI)  fHOutCentV0MCSEMI->Fill(fCentV0M);
1712     if (fMSL) fHOutCentV0MMSL->Fill(fCentV0M);
1713     if (fMSH) fHOutCentV0MMSH->Fill(fCentV0M);
1714     if (fMUL) fHOutCentV0MMUL->Fill(fCentV0M);
1715     if (fMLL) fHOutCentV0MMLL->Fill(fCentV0M);
1716     if (fEJE) fHOutCentV0MEJE->Fill(fCentV0M);
1717     if (fEGA) fHOutCentV0MEGA->Fill(fCentV0M);
1718     if (fPHS) fHOutCentV0MPHS->Fill(fCentV0M);
1719
1720     if (((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB) && (runType==0)) ||
1721         ((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kINT7) && (runType==1)) || 
1722         ((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB) && (runType==2)) ) { // fill the QA histograms only for MB events!
1723       
1724       fHOutQuality->Fill(fQuality);
1725       fHOutVertex->Fill(zvtx);
1726       fHOutVertexT0->Fill(zvtxT0);
1727       
1728       if (fQuality==0) {  
1729         fHOutCentV0M->Fill(fCentV0M);
1730         fHOutCentV0A->Fill(fCentV0A);
1731         fHOutCentV0A123->Fill(fCentV0A123);
1732         fHOutCentV0C->Fill(fCentV0C);
1733         fHOutCentV0MEq->Fill(fCentV0MEq);
1734         fHOutCentV0AEq->Fill(fCentV0AEq);
1735         fHOutCentV0CEq->Fill(fCentV0CEq);
1736         
1737         if (fCVHNbit)  fHOutCentV0MCVHNinMB->Fill(fCentV0M);
1738         if (fCVLNbit)  fHOutCentV0MCVLNinMB->Fill(fCentV0M);
1739         if (fCCENTbit) fHOutCentV0MCCENTinMB->Fill(fCentV0M);
1740         if (fCSEMIbit) fHOutCentV0MCSEMIinMB->Fill(fCentV0M);
1741         if (fMSL) fHOutCentV0MMSLinMB->Fill(fCentV0M);
1742         if (fMSH) fHOutCentV0MMSHinMB->Fill(fCentV0M);
1743         if (fMUL) fHOutCentV0MMULinMB->Fill(fCentV0M);
1744         if (fMLL) fHOutCentV0MMLLinMB->Fill(fCentV0M);
1745         if (fEJE) fHOutCentV0MEJEinMB->Fill(fCentV0M);
1746         if (fEGA) fHOutCentV0MEGAinMB->Fill(fCentV0M);
1747         if (fPHS) fHOutCentV0MPHSinMB->Fill(fCentV0M);
1748         
1749         fHOutCentFMD->Fill(fCentFMD);
1750         fHOutCentTRK->Fill(fCentTRK);
1751         fHOutCentTKL->Fill(fCentTKL);
1752         fHOutCentCL0->Fill(fCentCL0);
1753         fHOutCentCL1->Fill(fCentCL1);
1754         fHOutCentCND->Fill(fCentCND);
1755         fHOutCentNPA->Fill(fCentNPA);
1756         fHOutCentZNA->Fill(fCentZNA);
1757         fHOutCentZNC->Fill(fCentZNC);
1758         fHOutCentZPA->Fill(fCentZPA);
1759         fHOutCentZPC->Fill(fCentZPC);
1760         fHOutCentV0MvsFMD->Fill(fCentV0MvsFMD);
1761         fHOutCentTKLvsV0M->Fill(fCentTKLvsV0M);
1762         fHOutCentZEMvsZDC->Fill(fCentZEMvsZDC);
1763         fHOutCentV0MvsCentCL1->Fill(fCentV0M,fCentCL1);
1764         fHOutCentV0MvsCentTRK->Fill(fCentV0M,fCentTRK);
1765         fHOutCentTRKvsCentCL1->Fill(fCentTRK,fCentCL1);
1766         fHOutCentV0MvsCentZDC->Fill(fCentV0M,fCentZEMvsZDC);
1767         fHOutCentV0AvsCentV0C->Fill(fCentV0A,fCentV0C);
1768         fHOutCentV0AvsCentTRK->Fill(fCentV0A,fCentTRK);
1769         fHOutCentV0AvsCentCND->Fill(fCentV0A,fCentCND);
1770         fHOutCentV0AvsCentCL1->Fill(fCentV0A,fCentCL1);
1771         fHOutCentV0CvsCentTRK->Fill(fCentV0C,fCentTRK);
1772         fHOutCentV0CvsCentCND->Fill(fCentV0C,fCentCND);
1773         fHOutCentV0CvsCentCL1->Fill(fCentV0C,fCentCL1);
1774         fHOutCentNPAvsCentV0A->Fill(fCentNPA,fCentV0A);
1775         fHOutCentNPAvsCentV0C->Fill(fCentNPA,fCentV0C);
1776         fHOutCentNPAvsCentTRK->Fill(fCentNPA,fCentTRK);
1777         fHOutCentNPAvsCentCND->Fill(fCentNPA,fCentCND);
1778         fHOutCentNPAvsCentCL1->Fill(fCentNPA,fCentCL1);
1779         fHOutCentZNAvsCentV0A->Fill(fCentZNA,fCentV0A);
1780         fHOutCentZNAvsCentV0C->Fill(fCentZNA,fCentV0C);
1781         fHOutCentZNAvsCentTRK->Fill(fCentZNA,fCentTRK);
1782         fHOutCentZNAvsCentCND->Fill(fCentZNA,fCentCND);
1783         fHOutCentZNAvsCentCL1->Fill(fCentZNA,fCentCL1);
1784         fHOutCentZNAvsCentZPA->Fill(fCentZNA,fCentZPA);
1785
1786         fHOutMultV0AC->Fill(multV0A,multV0C);
1787         fHOutMultV0M->Fill(multV0ACorr+multV0CCorr);
1788         fHOutMultV0A->Fill(multV0ACorr);
1789         fHOutMultV0A123->Fill(multV0A123);
1790         fHOutMultV0C->Fill(multV0CCorr);
1791         fHOutMultV0MEq->Fill(multV0AEq+multV0CEq);
1792         fHOutMultV0AEq->Fill(multV0AEq);
1793         fHOutMultV0CEq->Fill(multV0CEq);
1794         fHOutMultV0Mnc->Fill(multV0A+multV0C);
1795         fHOutMultV0Anc->Fill(multV0A);
1796         fHOutMultV0Cnc->Fill(multV0C);
1797         fHOutMultV0O->Fill(multV0AOnline+multV0COnline);
1798         fHOutMultV0Cells->Fill(nV0A,nV0C); 
1799         fHOutMultFMD->Fill(multFMDA+multFMDC);
1800         fHOutMultTRK->Fill(nTracks);
1801         fHOutMultTKL->Fill(nTracklets);
1802         fHOutMultCL0->Fill(nClusters[0]);
1803         fHOutMultCL1->Fill(spdCorr);
1804         fHOutMultCND->Fill(multCND);
1805         fHOutMultNPA->Fill(Npart);
1806         if(znaFired)fHOutMultZNA->Fill(znaTower);
1807         if(zncFired)fHOutMultZNC->Fill(zncTower);
1808         if(zpaFired)fHOutMultZPA->Fill(zpaTower);
1809         if(zpcFired)fHOutMultZPC->Fill(zpcTower);
1810         fHOutMultZNAvsZPA->Fill(znaTower,zpaTower);
1811
1812         //fHOutMultV0MvsZDN->Fill(v0Corr,(zncEnergy+znaEnergy));
1813         fHOutMultV0MvsZDN->Fill(v0Corr,znaTower);
1814         fHOutMultZEMvsZDN->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy));
1815         fHOutMultV0MvsZDC->Fill(v0Corr,(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1816         fHOutMultZEMvsZDC->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1817         fHOutMultZEMvsZDCw->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy),fCentV0M);
1818         fHOutMultV0MvsCL1->Fill(v0Corr,spdCorr);
1819         fHOutMultV0MvsTRK->Fill(v0Corr,nTracks);
1820         fHOutMultTRKvsCL1->Fill(nTracks,spdCorr);
1821         fHOutMultV0MvsV0O->Fill(v0Corr,(multV0AOnline+multV0COnline));
1822         fHOutMultV0OvsCL1->Fill((multV0AOnline+multV0COnline),spdCorr);
1823         fHOutMultV0OvsTRK->Fill((multV0AOnline+multV0COnline),nTracks);
1824       } else if (fQuality%2 == 0) {
1825         fHOutCentV0Mqual1->Fill(fCentV0M);
1826         fHOutCentTRKqual1->Fill(fCentTRK);
1827         fHOutCentCL1qual1->Fill(fCentCL1);
1828         fHOutMultV0MvsCL1qual1->Fill(v0Corr,spdCorr);
1829         fHOutMultV0MvsTRKqual1->Fill(v0Corr,nTracks);
1830         fHOutMultTRKvsCL1qual1->Fill(nTracks,spdCorr);
1831       } else {
1832         fHOutCentV0Mqual2->Fill(fCentV0M);
1833         fHOutCentTRKqual2->Fill(fCentTRK);
1834         fHOutCentCL1qual2->Fill(fCentCL1);
1835         fHOutMultV0MvsCL1qual2->Fill(v0Corr,spdCorr);
1836         fHOutMultV0MvsTRKqual2->Fill(v0Corr,nTracks);
1837         fHOutMultTRKvsCL1qual2->Fill(nTracks,spdCorr);
1838       }
1839     }
1840     PostData(1, fOutputList); 
1841   }
1842 }
1843 //________________________________________________________________________
1844 void AliCentralitySelectionTask::Terminate(Option_t */*option*/)
1845 {
1846   // Terminate analysis
1847 }
1848 //________________________________________________________________________
1849 Int_t AliCentralitySelectionTask::SetupRun(const AliVEvent* const esd)
1850 {
1851   // Setup files for run
1852
1853   if (!esd)
1854     return -1;
1855
1856   // check if something to be done
1857   if (fCurrentRun == esd->GetRunNumber())
1858     return 0;
1859   else
1860     fCurrentRun = esd->GetRunNumber();
1861
1862   TString fileName =(Form("%s/COMMON/CENTRALITY/data/centrality.root", AliAnalysisManager::GetOADBPath()));
1863   AliInfo(Form("Setup Centrality Selection for run %d with file %s\n",fCurrentRun,fileName.Data()));
1864
1865   AliOADBContainer *con = new AliOADBContainer("OADB");
1866   con->InitFromFile(fileName,"Centrality");
1867
1868   AliOADBCentrality*  centOADB = 0;
1869   centOADB = (AliOADBCentrality*)(con->GetObject(fCurrentRun));
1870   if (!centOADB) {
1871     AliWarning(Form("Centrality OADB does not exist for run %d, using Default \n",fCurrentRun ));
1872     centOADB  = (AliOADBCentrality*)(con->GetDefaultObject("oadbDefault"));
1873   }
1874
1875   Bool_t isHijing=kFALSE;
1876   Bool_t isDpmjet=kFALSE;
1877   AliAnalysisManager* anMan = AliAnalysisManager::GetAnalysisManager();
1878   AliMCEventHandler* eventHandler = (AliMCEventHandler*)anMan->GetMCtruthEventHandler();
1879   AliMCEvent*  mcEvent=0;
1880   if (fIsMCInput && eventHandler && (mcEvent=eventHandler->MCEvent()) ) {     
1881     AliGenEventHeader* mcGenH = mcEvent->GenEventHeader();
1882     if (mcGenH->InheritsFrom(AliGenHijingEventHeader::Class())) isHijing=kTRUE;
1883     else if (mcGenH->InheritsFrom(AliGenCocktailEventHeader::Class())) isHijing=kTRUE;
1884     else if (mcGenH->InheritsFrom(AliGenDPMjetEventHeader::Class())) isDpmjet=kTRUE;
1885   }
1886
1887
1888   // modes
1889   fUseScaling   = centOADB->UseScaling();
1890   fUseCleaning  = centOADB->UseCleaning();
1891
1892   // cuts
1893   fZVCut        = centOADB->ZVCut();
1894   fOutliersCut  = centOADB->OutliersCut(); 
1895
1896   // centrality histos
1897   fHtempV0M       = centOADB->V0hist(); 
1898   fHtempV0A       = centOADB->V0Ahist(); 
1899   fHtempV0A123    = centOADB->V0A123hist(); 
1900   fHtempV0C       = centOADB->V0Chist(); 
1901   fHtempV0MEq     = centOADB->V0Eqhist(); 
1902   fHtempV0AEq     = centOADB->V0AEqhist(); 
1903   fHtempV0CEq     = centOADB->V0CEqhist(); 
1904   fHtempTRK       = centOADB->TPChist();
1905   fHtempCL1       = centOADB->SPDhist();
1906   fHtempCND       = centOADB->CNDhist();
1907   fHtempFMD       = centOADB->FMDhist();
1908   fHtempZNA       = centOADB->ZNAhist();
1909   fHtempZNC       = centOADB->ZNChist();
1910   fHtempZPA       = centOADB->ZPAhist();
1911   fHtempZPC       = centOADB->ZPChist();
1912   fHtempZEMvsZDC  = centOADB->ZEMvsZDChist();
1913
1914    if (isHijing) {       
1915      fHtempNPA           = centOADB->NPAhist();
1916      fHtempV0Mtrue       = centOADB->V0histtrue(); 
1917      fHtempV0Atrue       = centOADB->V0Ahisttrue(); 
1918      fHtempV0Ctrue       = centOADB->V0Chisttrue(); 
1919      fHtempV0MEqtrue     = centOADB->V0Eqhisttrue(); 
1920      fHtempV0AEqtrue     = centOADB->V0AEqhisttrue(); 
1921      fHtempV0CEqtrue     = centOADB->V0CEqhisttrue(); 
1922      fHtempTRKtrue       = centOADB->TPChisttrue();
1923      fHtempCL1true       = centOADB->SPDhisttrue();
1924      fHtempCNDtrue       = centOADB->CNDhisttrue();
1925      fHtempFMDtrue       = centOADB->FMDhisttrue();
1926      fHtempZNAtrue       = centOADB->ZNAhisttrue();
1927      fHtempZNCtrue       = centOADB->ZNChisttrue();
1928      fHtempZPAtrue       = centOADB->ZPAhisttrue();
1929      fHtempZPCtrue       = centOADB->ZPChisttrue();
1930    }   else if (isDpmjet)   {
1931      fHtempNPA           = centOADB->NPAhistDPM();
1932      fHtempV0Mtrue       = centOADB->V0histtrueDPM(); 
1933      fHtempV0Atrue       = centOADB->V0AhisttrueDPM(); 
1934      fHtempV0Ctrue       = centOADB->V0ChisttrueDPM(); 
1935      fHtempV0MEqtrue     = centOADB->V0EqhisttrueDPM(); 
1936      fHtempV0AEqtrue     = centOADB->V0AEqhisttrueDPM(); 
1937      fHtempV0CEqtrue     = centOADB->V0CEqhisttrueDPM(); 
1938      fHtempTRKtrue       = centOADB->TPChisttrueDPM();
1939      fHtempCL1true       = centOADB->SPDhisttrueDPM();
1940      fHtempCNDtrue       = centOADB->CNDhisttrueDPM();
1941      fHtempFMDtrue       = centOADB->FMDhisttrueDPM();
1942      fHtempZNAtrue       = centOADB->ZNAhisttrueDPM();
1943      fHtempZNCtrue       = centOADB->ZNChisttrueDPM();
1944      fHtempZPAtrue       = centOADB->ZPAhisttrueDPM();
1945      fHtempZPCtrue       = centOADB->ZPChisttrueDPM();
1946    }
1947
1948
1949     TString path = gSystem->ExpandPathName(fileName.Data());
1950   if (!fHtempV0M) AliWarning(Form("Calibration for V0M does not exist in %s", path.Data()));
1951   if (!fHtempV0A) AliWarning(Form("Calibration for V0A does not exist in %s", path.Data()));
1952   if (!fHtempV0C) AliWarning(Form("Calibration for V0C does not exist in %s", path.Data()));
1953   if (!fHtempV0MEq) AliWarning(Form("Calibration for V0MEq does not exist in %s", path.Data()));
1954   if (!fHtempV0AEq) AliWarning(Form("Calibration for V0AEq does not exist in %s", path.Data()));
1955   if (!fHtempV0CEq) AliWarning(Form("Calibration for V0CEq does not exist in %s", path.Data()));
1956   if (!fHtempTRK) AliWarning(Form("Calibration for TRK does not exist in %s", path.Data()));
1957   if (!fHtempCL1) AliWarning(Form("Calibration for CL1 does not exist in %s", path.Data()));
1958   if (!fHtempCND) AliWarning(Form("Calibration for CND does not exist in %s", path.Data()));
1959   if (!fHtempZNA) AliWarning(Form("Calibration for ZNA does not exist in %s", path.Data()));
1960   if (!fHtempZNC) AliWarning(Form("Calibration for ZNC does not exist in %s", path.Data()));
1961   if (!fHtempZPA) AliWarning(Form("Calibration for ZPA does not exist in %s", path.Data()));
1962   if (!fHtempZPC) AliWarning(Form("Calibration for ZPC does not exist in %s", path.Data()));
1963   if (!fHtempFMD) AliWarning(Form("Calibration for FMD does not exist in %s", path.Data()));
1964   if (!fHtempZEMvsZDC) AliWarning(Form("Calibration for ZEMvsZDC does not exist in %s", path.Data()));
1965   if (!fHtempNPA) AliWarning(Form("Calibration for NPA does not exist in %s", path.Data()));
1966
1967   if (!fHtempV0Mtrue) AliWarning(Form("Calibration for V0Mtrue does not exist in %s", path.Data()));
1968   if (!fHtempV0Atrue) AliWarning(Form("Calibration for V0Atrue does not exist in %s", path.Data()));
1969   if (!fHtempV0Ctrue) AliWarning(Form("Calibration for V0Ctrue does not exist in %s", path.Data()));
1970   if (!fHtempV0MEqtrue) AliWarning(Form("Calibration for V0MEqtrue does not exist in %s", path.Data()));
1971   if (!fHtempV0AEqtrue) AliWarning(Form("Calibration for V0AEqtrue does not exist in %s", path.Data()));
1972   if (!fHtempV0CEqtrue) AliWarning(Form("Calibration for V0CEqtrue does not exist in %s", path.Data()));
1973   if (!fHtempTRKtrue) AliWarning(Form("Calibration for TRKtrue does not exist in %s", path.Data()));
1974   if (!fHtempCL1true) AliWarning(Form("Calibration for CL1true does not exist in %s", path.Data()));
1975   if (!fHtempCNDtrue) AliWarning(Form("Calibration for CNDtrue does not exist in %s", path.Data()));
1976   if (!fHtempZNAtrue) AliWarning(Form("Calibration for ZNAtrue does not exist in %s", path.Data()));
1977   if (!fHtempZNCtrue) AliWarning(Form("Calibration for ZNCtrue does not exist in %s", path.Data()));
1978   if (!fHtempZPAtrue) AliWarning(Form("Calibration for ZPAtrue does not exist in %s", path.Data()));
1979   if (!fHtempZPCtrue) AliWarning(Form("Calibration for ZPCtrue does not exist in %s", path.Data()));
1980   if (!fHtempFMDtrue) AliWarning(Form("Calibration for FMDtrue does not exist in %s", path.Data()));
1981
1982
1983   // scale factors
1984   fV0MScaleFactor    = centOADB->V0MScaleFactor();
1985   fSPDScaleFactor    = centOADB->SPDScaleFactor();
1986   fTPCScaleFactor    = centOADB->TPCScaleFactor();
1987   fV0MScaleFactorMC  = centOADB->V0MScaleFactorMC();
1988
1989   // outliers parameters
1990   fV0MSPDOutlierPar0 = centOADB->V0MSPDOutlierPar0();      
1991   fV0MSPDOutlierPar1 = centOADB->V0MSPDOutlierPar1();     
1992   fV0MTPCOutlierPar0 = centOADB->V0MTPCOutlierPar0();      
1993   fV0MTPCOutlierPar1 = centOADB->V0MTPCOutlierPar1();     
1994                                                    
1995   fV0MSPDSigmaOutlierPar0 = centOADB->V0MSPDSigmaOutlierPar0(); 
1996   fV0MSPDSigmaOutlierPar1 = centOADB->V0MSPDSigmaOutlierPar1(); 
1997   fV0MSPDSigmaOutlierPar2 = centOADB->V0MSPDSigmaOutlierPar2();
1998   fV0MTPCSigmaOutlierPar0 = centOADB->V0MTPCSigmaOutlierPar0(); 
1999   fV0MTPCSigmaOutlierPar1 = centOADB->V0MTPCSigmaOutlierPar1(); 
2000   fV0MTPCSigmaOutlierPar2 = centOADB->V0MTPCSigmaOutlierPar2(); 
2001                             
2002   fV0MZDCOutlierPar0 =      centOADB->V0MZDCOutlierPar0();      
2003   fV0MZDCOutlierPar1 =      centOADB->V0MZDCOutlierPar1();      
2004   fV0MZDCEcalOutlierPar0 =  centOADB->V0MZDCEcalOutlierPar0();  
2005   fV0MZDCEcalOutlierPar1 =  centOADB->V0MZDCEcalOutlierPar1();  
2006
2007   return 0;
2008 }
2009
2010
2011
2012 //________________________________________________________________________
2013 Bool_t AliCentralitySelectionTask::IsOutlierV0MSPD(Float_t spd, Float_t v0, Int_t cent) const
2014 {
2015   // Clean outliers
2016   Float_t val = fV0MSPDOutlierPar0 +  fV0MSPDOutlierPar1 * v0;
2017   Float_t spdSigma = fV0MSPDSigmaOutlierPar0 + fV0MSPDSigmaOutlierPar1*cent + fV0MSPDSigmaOutlierPar2*cent*cent;
2018   if ( TMath::Abs(spd-val) > fOutliersCut*spdSigma ) 
2019     return kTRUE;
2020   else 
2021     return kFALSE;
2022 }
2023
2024 //________________________________________________________________________
2025 Bool_t AliCentralitySelectionTask::IsOutlierV0MTPC(Int_t tracks, Float_t v0, Int_t cent) const
2026 {
2027   // Clean outliers
2028   Float_t val = fV0MTPCOutlierPar0 +  fV0MTPCOutlierPar1 * v0;
2029   Float_t tpcSigma = fV0MTPCSigmaOutlierPar0 + fV0MTPCSigmaOutlierPar1*cent + fV0MTPCSigmaOutlierPar2*cent*cent;
2030   if ( TMath::Abs(tracks-val) > fOutliersCut*tpcSigma ) 
2031     return kTRUE;
2032   else 
2033     return kFALSE;
2034 }
2035
2036 //________________________________________________________________________
2037 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDC(Float_t zdc, Float_t v0) const
2038 {
2039   // Clean outliers
2040   Float_t val = fV0MZDCOutlierPar0 + fV0MZDCOutlierPar1 * v0;
2041   if (zdc >  val) 
2042     return kTRUE;
2043   else 
2044   return kFALSE;
2045 }
2046
2047 //________________________________________________________________________
2048 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDCECal(Float_t zdc, Float_t v0) const
2049 {
2050   // Clean outliers
2051   Float_t val = fV0MZDCEcalOutlierPar0 + fV0MZDCEcalOutlierPar1 * v0;
2052   if (zdc >  val) 
2053     return kTRUE;
2054   else 
2055     return kFALSE;
2056 }