]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ANALYSIS/AliCentralitySelectionTask.cxx
ADDING ANALYSIS FOR REMOVAL OF BAD CHUNKS (D.Dobrikeit & AK)
[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   fCentV0C(0),
135   fCentFMD(0),
136   fCentTRK(0),
137   fCentTKL(0),
138   fCentCL0(0),
139   fCentCL1(0),
140   fCentCND(0),
141   fCentZNA(0),
142   fCentNPA(0),
143   fCentV0MvsFMD(0),
144   fCentTKLvsV0M(0),
145   fCentZEMvsZDC(0),
146   fCentV0Mtrue(0),
147   fCentV0Atrue(0),
148   fCentV0Ctrue(0),
149   fCentFMDtrue(0),
150   fCentTRKtrue(0),
151   fCentTKLtrue(0),
152   fCentCL0true(0),
153   fCentCL1true(0),
154   fCentCNDtrue(0),
155   fCentZNAtrue(0),
156   fHtempV0M(0),
157   fHtempV0A(0),
158   fHtempV0C(0),
159   fHtempFMD(0),
160   fHtempTRK(0),
161   fHtempTKL(0),
162   fHtempCL0(0),
163   fHtempCL1(0),
164   fHtempCND(0),
165   fHtempZNA(0),
166   fHtempV0MvsFMD(0),
167   fHtempTKLvsV0M(0),
168   fHtempZEMvsZDC(0),
169   fHtempNPA(0),
170   fHtempV0Mtrue(0),
171   fHtempV0Atrue(0),
172   fHtempV0Ctrue(0),
173   fHtempFMDtrue(0),
174   fHtempTRKtrue(0),
175   fHtempTKLtrue(0),
176   fHtempCL0true(0),
177   fHtempCL1true(0),
178   fHtempCNDtrue(0),
179   fHtempZNAtrue(0),
180   fOutputList(0),
181   fHOutCentV0M(0),
182   fHOutCentV0A(0),
183   fHOutCentV0C(0),
184   fHOutCentV0MCVHN(0),
185   fHOutCentV0MCVLN(0),
186   fHOutCentV0MCVHNinMB(0),
187   fHOutCentV0MCVLNinMB(0),
188   fHOutCentV0MCCENT(0),
189   fHOutCentV0MCSEMI(0),
190   fHOutCentV0MCCENTinMB(0),
191   fHOutCentV0MCSEMIinMB(0),
192   fHOutCentV0MMSL(0),
193   fHOutCentV0MMSH(0),
194   fHOutCentV0MMUL(0),
195   fHOutCentV0MMLL(0),
196   fHOutCentV0MEJE(0),
197   fHOutCentV0MEGA(0),
198   fHOutCentV0MPHS(0),
199   fHOutCentV0MMSLinMB(0),
200   fHOutCentV0MMSHinMB(0),
201   fHOutCentV0MMULinMB(0),
202   fHOutCentV0MMLLinMB(0),
203   fHOutCentV0MEJEinMB(0),
204   fHOutCentV0MEGAinMB(0),
205   fHOutCentV0MPHSinMB(0),
206   fHOutCentFMD(0),
207   fHOutCentTRK(0),
208   fHOutCentTKL(0),
209   fHOutCentCL0(0),
210   fHOutCentCL1(0),
211   fHOutCentCND(0),
212   fHOutCentNPA(0),
213   fHOutCentZNA(0),
214   fHOutCentV0MvsFMD(0),
215   fHOutCentTKLvsV0M(0),
216   fHOutCentZEMvsZDC(0),
217   fHOutCentV0MvsCentCL1(0),
218   fHOutCentV0MvsCentTRK(0),
219   fHOutCentTRKvsCentCL1(0),
220   fHOutCentV0MvsCentZDC(0),
221   fHOutCentV0AvsCentV0C(0),
222   fHOutCentV0AvsCentTRK(0),
223   fHOutCentV0AvsCentCND(0),
224   fHOutCentV0AvsCentCL1(0),
225   fHOutCentV0CvsCentTRK(0),
226   fHOutCentV0CvsCentCND(0),
227   fHOutCentV0CvsCentCL1(0),
228   fHOutCentNPAvsCentV0A(0),
229   fHOutCentNPAvsCentV0C(0),
230   fHOutCentNPAvsCentTRK(0),
231   fHOutCentNPAvsCentCND(0),
232   fHOutCentNPAvsCentCL1(0),
233   fHOutCentZNAvsCentV0A(0),
234   fHOutCentZNAvsCentV0C(0),
235   fHOutCentZNAvsCentTRK(0),
236   fHOutCentZNAvsCentCND(0),
237   fHOutCentZNAvsCentCL1(0),
238   fHOutMultV0AC(0),
239   fHOutMultV0M(0),
240   fHOutMultV0A(0),
241   fHOutMultV0C(0),
242   fHOutMultV0Mnc(0),
243   fHOutMultV0Anc(0),
244   fHOutMultV0Cnc(0),
245   fHOutMultV0O(0),
246   fHOutMultV0Cells(0),
247   fHOutMultFMD(0),
248   fHOutMultTRK(0),
249   fHOutMultTKL(0),
250   fHOutMultCL0(0),
251   fHOutMultCL1(0),
252   fHOutMultCND(0),
253   fHOutMultNPA(0),
254   fHOutMultZNA(0),
255   fHOutMultV0MvsZDN(0),
256   fHOutMultZEMvsZDN(0),
257   fHOutMultV0MvsZDC(0),
258   fHOutMultZEMvsZDC(0),
259   fHOutMultZEMvsZDCw(0),
260   fHOutMultV0MvsCL1(0),
261   fHOutMultV0MvsTRK(0),
262   fHOutMultTRKvsCL1(0),
263   fHOutMultV0MvsV0O(0),
264   fHOutMultV0OvsCL1(0),
265   fHOutMultV0OvsTRK(0),
266   fHOutMultCL1vsTKL(0),
267   fHOutCentV0Mqual1(0),
268   fHOutCentTRKqual1(0),
269   fHOutCentCL1qual1(0),
270   fHOutMultV0MvsCL1qual1(0),
271   fHOutMultV0MvsTRKqual1(0),
272   fHOutMultTRKvsCL1qual1(0),
273   fHOutCentV0Mqual2(0),
274   fHOutCentTRKqual2(0),
275   fHOutCentCL1qual2(0),
276   fHOutMultV0MvsCL1qual2(0),
277   fHOutMultV0MvsTRKqual2(0),
278   fHOutMultTRKvsCL1qual2(0),
279   fHOutQuality(0),
280   fHOutVertex(0),
281   fHOutVertexT0(0)
282 {   
283   // Default constructor
284   AliInfo("Centrality Selection enabled.");
285
286   fUseScaling=kTRUE;
287   fUseCleaning=kTRUE;
288   fFillHistos=kFALSE;
289   fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO.,AliESDTZERO."
290     ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks ";
291 }   
292
293 //________________________________________________________________________
294 AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
295   AliAnalysisTaskSE(name),
296   fAnalysisInput("ESD"),
297   fIsMCInput(kFALSE),
298   fCurrentRun(-1),
299   fUseScaling(0),
300   fUseCleaning(0),
301   fFillHistos(0),
302   fV0MScaleFactor(0),
303   fSPDScaleFactor(0),
304   fTPCScaleFactor(0),
305   fV0MScaleFactorMC(0),
306   fV0MSPDOutlierPar0(0),  
307   fV0MSPDOutlierPar1(0),  
308   fV0MTPCOutlierPar0(0),  
309   fV0MTPCOutlierPar1(0),  
310   fV0MSPDSigmaOutlierPar0(0),  
311   fV0MSPDSigmaOutlierPar1(0),  
312   fV0MSPDSigmaOutlierPar2(0),  
313   fV0MTPCSigmaOutlierPar0(0),  
314   fV0MTPCSigmaOutlierPar1(0),  
315   fV0MTPCSigmaOutlierPar2(0),   
316   fV0MZDCOutlierPar0(0),            
317   fV0MZDCOutlierPar1(0),            
318   fV0MZDCEcalOutlierPar0(0),   
319   fV0MZDCEcalOutlierPar1(0),   
320   fTrackCuts(0),
321   fEsdTrackCuts(0),
322   fEsdTrackCutsExtra1(0),
323   fEsdTrackCutsExtra2(0),
324   fZVCut(10),
325   fOutliersCut(5),
326   fQuality(999),
327   fIsSelected(0),
328   fMSL(0),
329   fMSH(0),
330   fMUL(0),
331   fMLL(0),
332   fEJE(0),
333   fEGA(0),
334   fPHS(0),
335   fMB(0),
336   fCVHN(0),
337   fCVLN(0),
338   fCVHNbit(0),
339   fCVLNbit(0),
340   fCCENT(0),
341   fCSEMI(0),
342   fCCENTbit(0),
343   fCSEMIbit(0),
344   fCentV0M(0),
345   fCentV0A(0),
346   fCentV0C(0),
347   fCentFMD(0),
348   fCentTRK(0),
349   fCentTKL(0),
350   fCentCL0(0),
351   fCentCL1(0),
352   fCentCND(0),
353   fCentZNA(0),
354   fCentNPA(0),
355   fCentV0MvsFMD(0),
356   fCentTKLvsV0M(0),
357   fCentZEMvsZDC(0),
358   fCentV0Mtrue(0),
359   fCentV0Atrue(0),
360   fCentV0Ctrue(0),
361   fCentFMDtrue(0),
362   fCentTRKtrue(0),
363   fCentTKLtrue(0),
364   fCentCL0true(0),
365   fCentCL1true(0),
366   fCentCNDtrue(0),
367   fCentZNAtrue(0),
368   fHtempV0M(0),
369   fHtempV0A(0),
370   fHtempV0C(0),
371   fHtempFMD(0),
372   fHtempTRK(0),
373   fHtempTKL(0),
374   fHtempCL0(0),
375   fHtempCL1(0),
376   fHtempCND(0),
377   fHtempZNA(0),
378   fHtempV0MvsFMD(0),
379   fHtempTKLvsV0M(0),
380   fHtempZEMvsZDC(0),
381   fHtempNPA(0),
382   fHtempV0Mtrue(0),
383   fHtempV0Atrue(0),
384   fHtempV0Ctrue(0),
385   fHtempFMDtrue(0),
386   fHtempTRKtrue(0),
387   fHtempTKLtrue(0),
388   fHtempCL0true(0),
389   fHtempCL1true(0),
390   fHtempCNDtrue(0),
391   fHtempZNAtrue(0),
392   fOutputList(0),
393   fHOutCentV0M(0),
394   fHOutCentV0A(0),
395   fHOutCentV0C(0),
396   fHOutCentV0MCVHN(0),
397   fHOutCentV0MCVLN(0),
398   fHOutCentV0MCVHNinMB(0),
399   fHOutCentV0MCVLNinMB(0),
400   fHOutCentV0MCCENT(0),
401   fHOutCentV0MCSEMI(0),
402   fHOutCentV0MCCENTinMB(0),
403   fHOutCentV0MCSEMIinMB(0),
404   fHOutCentV0MMSL(0),
405   fHOutCentV0MMSH(0),
406   fHOutCentV0MMUL(0),
407   fHOutCentV0MMLL(0),
408   fHOutCentV0MEJE(0),
409   fHOutCentV0MEGA(0),
410   fHOutCentV0MPHS(0),
411   fHOutCentV0MMSLinMB(0),
412   fHOutCentV0MMSHinMB(0),
413   fHOutCentV0MMULinMB(0),
414   fHOutCentV0MMLLinMB(0),
415   fHOutCentV0MEJEinMB(0),
416   fHOutCentV0MEGAinMB(0),
417   fHOutCentV0MPHSinMB(0),
418   fHOutCentFMD(0),
419   fHOutCentTRK(0),
420   fHOutCentTKL(0),
421   fHOutCentCL0(0),
422   fHOutCentCL1(0),
423   fHOutCentCND(0),
424   fHOutCentNPA(0),
425   fHOutCentZNA(0),
426   fHOutCentV0MvsFMD(0),
427   fHOutCentTKLvsV0M(0),
428   fHOutCentZEMvsZDC(0),
429   fHOutCentV0MvsCentCL1(0),
430   fHOutCentV0MvsCentTRK(0),
431   fHOutCentTRKvsCentCL1(0),
432   fHOutCentV0MvsCentZDC(0),
433   fHOutCentV0AvsCentV0C(0),
434   fHOutCentV0AvsCentTRK(0),
435   fHOutCentV0AvsCentCND(0),
436   fHOutCentV0AvsCentCL1(0),
437   fHOutCentV0CvsCentTRK(0),
438   fHOutCentV0CvsCentCND(0),
439   fHOutCentV0CvsCentCL1(0),
440   fHOutCentNPAvsCentV0A(0),
441   fHOutCentNPAvsCentV0C(0),
442   fHOutCentNPAvsCentTRK(0),
443   fHOutCentNPAvsCentCND(0),
444   fHOutCentNPAvsCentCL1(0),
445   fHOutCentZNAvsCentV0A(0),
446   fHOutCentZNAvsCentV0C(0),
447   fHOutCentZNAvsCentTRK(0),
448   fHOutCentZNAvsCentCND(0),
449   fHOutCentZNAvsCentCL1(0),
450   fHOutMultV0AC(0),
451   fHOutMultV0M(0),
452   fHOutMultV0A(0),
453   fHOutMultV0C(0),
454   fHOutMultV0Mnc(0),
455   fHOutMultV0Anc(0),
456   fHOutMultV0Cnc(0),
457   fHOutMultV0O(0),
458   fHOutMultV0Cells(0),
459   fHOutMultFMD(0),
460   fHOutMultTRK(0),
461   fHOutMultTKL(0),
462   fHOutMultCL0(0),
463   fHOutMultCL1(0),
464   fHOutMultCND(0),
465   fHOutMultNPA(0),
466   fHOutMultZNA(0),
467   fHOutMultV0MvsZDN(0),
468   fHOutMultZEMvsZDN(0),
469   fHOutMultV0MvsZDC(0),
470   fHOutMultZEMvsZDC(0),
471   fHOutMultZEMvsZDCw(0),
472   fHOutMultV0MvsCL1(0),
473   fHOutMultV0MvsTRK(0),
474   fHOutMultTRKvsCL1(0),
475   fHOutMultV0MvsV0O(0),
476   fHOutMultV0OvsCL1(0),
477   fHOutMultV0OvsTRK(0),
478   fHOutMultCL1vsTKL(0),
479   fHOutCentV0Mqual1(0),
480   fHOutCentTRKqual1(0),
481   fHOutCentCL1qual1(0),
482   fHOutMultV0MvsCL1qual1(0),
483   fHOutMultV0MvsTRKqual1(0),
484   fHOutMultTRKvsCL1qual1(0),
485   fHOutCentV0Mqual2(0),
486   fHOutCentTRKqual2(0),
487   fHOutCentCL1qual2(0),
488   fHOutMultV0MvsCL1qual2(0),
489   fHOutMultV0MvsTRKqual2(0),
490   fHOutMultTRKvsCL1qual2(0),
491   fHOutQuality(0),
492   fHOutVertex(0),
493   fHOutVertexT0(0)
494 {
495   // Default constructor
496   AliInfo("Centrality Selection enabled.");
497   //DefineOutput(1, TList::Class());
498   fUseScaling=kTRUE;
499   fUseCleaning=kTRUE;
500   fFillHistos=kFALSE;
501   fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO.,AliESDTZERO."
502     ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks ";
503 }
504
505 //________________________________________________________________________
506 AliCentralitySelectionTask& AliCentralitySelectionTask::operator=(const AliCentralitySelectionTask& c)
507 {
508   // Assignment operator
509   if (this!=&c) {
510     AliAnalysisTaskSE::operator=(c);
511   }
512   return *this;
513 }
514
515 //________________________________________________________________________
516 AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelectionTask& ana):
517   AliAnalysisTaskSE(ana),
518   fAnalysisInput(ana.fAnalysisInput),
519   fIsMCInput(ana.fIsMCInput),
520   fCurrentRun(ana.fCurrentRun),
521   fUseScaling(ana.fUseScaling),
522   fUseCleaning(ana.fUseCleaning),
523   fFillHistos(ana.fFillHistos),
524   fV0MScaleFactor(ana.fV0MScaleFactor),
525   fSPDScaleFactor(ana.fSPDScaleFactor),
526   fTPCScaleFactor(ana.fTPCScaleFactor),
527   fV0MScaleFactorMC(ana.fV0MScaleFactorMC),
528   fV0MSPDOutlierPar0(ana.fV0MSPDOutlierPar0),  
529   fV0MSPDOutlierPar1(ana.fV0MSPDOutlierPar1),  
530   fV0MTPCOutlierPar0(ana.fV0MTPCOutlierPar0),  
531   fV0MTPCOutlierPar1(ana.fV0MTPCOutlierPar1),  
532   fV0MSPDSigmaOutlierPar0(ana.fV0MSPDSigmaOutlierPar0),  
533   fV0MSPDSigmaOutlierPar1(ana.fV0MSPDSigmaOutlierPar1),  
534   fV0MSPDSigmaOutlierPar2(ana.fV0MSPDSigmaOutlierPar2),  
535   fV0MTPCSigmaOutlierPar0(ana.fV0MTPCSigmaOutlierPar0),  
536   fV0MTPCSigmaOutlierPar1(ana.fV0MTPCSigmaOutlierPar1),  
537   fV0MTPCSigmaOutlierPar2(ana.fV0MTPCSigmaOutlierPar2), 
538   fV0MZDCOutlierPar0(ana.fV0MZDCOutlierPar0),       
539   fV0MZDCOutlierPar1(ana.fV0MZDCOutlierPar1),       
540   fV0MZDCEcalOutlierPar0(ana.fV0MZDCEcalOutlierPar0),   
541   fV0MZDCEcalOutlierPar1(ana.fV0MZDCEcalOutlierPar1),   
542   fTrackCuts(ana.fTrackCuts),
543   fEsdTrackCuts(ana.fEsdTrackCuts),
544   fEsdTrackCutsExtra1(ana.fEsdTrackCutsExtra1),
545   fEsdTrackCutsExtra2(ana.fEsdTrackCutsExtra2),
546   fZVCut(ana.fZVCut),
547   fOutliersCut(ana.fOutliersCut),
548   fQuality(ana.fQuality),
549   fIsSelected(ana.fIsSelected),
550   fMSL(ana.fMSL),
551   fMSH(ana.fMSH),
552   fMUL(ana.fMUL),
553   fMLL(ana.fMLL),
554   fEJE(ana.fEJE),
555   fEGA(ana.fEGA),
556   fPHS(ana.fPHS),
557   fMB(ana.fMB),
558   fCVHN(ana.fCVHN),
559   fCVLN(ana.fCVLN),
560   fCVHNbit(ana.fCVHNbit),
561   fCVLNbit(ana.fCVLNbit),
562   fCCENT(ana.fCCENT),
563   fCSEMI(ana.fCSEMI),
564   fCCENTbit(ana.fCCENTbit),
565   fCSEMIbit(ana.fCSEMIbit),
566   fCentV0M(ana.fCentV0M),
567   fCentV0A(ana.fCentV0A),
568   fCentV0C(ana.fCentV0C),
569   fCentFMD(ana.fCentFMD),
570   fCentTRK(ana.fCentTRK),
571   fCentTKL(ana.fCentTKL),
572   fCentCL0(ana.fCentCL0),
573   fCentCL1(ana.fCentCL1),
574   fCentCND(ana.fCentCND),
575   fCentZNA(ana.fCentZNA),
576   fCentNPA(ana.fCentNPA),
577   fCentV0MvsFMD(ana.fCentV0MvsFMD),
578   fCentTKLvsV0M(ana.fCentTKLvsV0M),
579   fCentZEMvsZDC(ana.fCentZEMvsZDC),
580   fCentV0Mtrue(ana.fCentV0Mtrue),
581   fCentV0Atrue(ana.fCentV0Atrue),
582   fCentV0Ctrue(ana.fCentV0Ctrue),
583   fCentFMDtrue(ana.fCentFMDtrue),
584   fCentTRKtrue(ana.fCentTRKtrue),
585   fCentTKLtrue(ana.fCentTKLtrue),
586   fCentCL0true(ana.fCentCL0true),
587   fCentCL1true(ana.fCentCL1true),
588   fCentCNDtrue(ana.fCentCNDtrue),
589   fCentZNAtrue(ana.fCentZNAtrue),
590   fHtempV0M(ana.fHtempV0M),
591   fHtempV0A(ana.fHtempV0A),
592   fHtempV0C(ana.fHtempV0C),
593   fHtempFMD(ana.fHtempFMD),
594   fHtempTRK(ana.fHtempTRK),
595   fHtempTKL(ana.fHtempTKL),
596   fHtempCL0(ana.fHtempCL0),
597   fHtempCL1(ana.fHtempCL1),
598   fHtempCND(ana.fHtempCND),
599   fHtempZNA(ana.fHtempZNA),
600   fHtempV0MvsFMD(ana.fHtempV0MvsFMD),
601   fHtempTKLvsV0M(ana.fHtempTKLvsV0M),
602   fHtempZEMvsZDC(ana.fHtempZEMvsZDC),
603   fHtempNPA(ana.fHtempNPA),
604   fHtempV0Mtrue(ana.fHtempV0Mtrue),
605   fHtempV0Atrue(ana.fHtempV0Atrue),
606   fHtempV0Ctrue(ana.fHtempV0Ctrue),
607   fHtempFMDtrue(ana.fHtempFMDtrue),
608   fHtempTRKtrue(ana.fHtempTRKtrue),
609   fHtempTKLtrue(ana.fHtempTKLtrue),
610   fHtempCL0true(ana.fHtempCL0true),
611   fHtempCL1true(ana.fHtempCL1true),
612   fHtempCNDtrue(ana.fHtempCNDtrue),
613   fHtempZNAtrue(ana.fHtempZNAtrue),
614   fOutputList(ana.fOutputList),
615   fHOutCentV0M(ana.fHOutCentV0M),
616   fHOutCentV0A(ana.fHOutCentV0A),
617   fHOutCentV0C(ana.fHOutCentV0C),
618   fHOutCentV0MCVHN(ana.fHOutCentV0MCVHN),
619   fHOutCentV0MCVLN(ana.fHOutCentV0MCVLN),
620   fHOutCentV0MCVHNinMB(ana.fHOutCentV0MCVHNinMB),
621   fHOutCentV0MCVLNinMB(ana.fHOutCentV0MCVLNinMB),
622   fHOutCentV0MCCENT(ana.fHOutCentV0MCCENT),
623   fHOutCentV0MCSEMI(ana.fHOutCentV0MCSEMI),
624   fHOutCentV0MCCENTinMB(ana.fHOutCentV0MCCENTinMB),
625   fHOutCentV0MCSEMIinMB(ana.fHOutCentV0MCSEMIinMB),
626   fHOutCentV0MMSL(ana.fHOutCentV0MMSL),
627   fHOutCentV0MMSH(ana.fHOutCentV0MMSH),
628   fHOutCentV0MMUL(ana.fHOutCentV0MMUL),
629   fHOutCentV0MMLL(ana.fHOutCentV0MMLL),
630   fHOutCentV0MEJE(ana.fHOutCentV0MEJE),
631   fHOutCentV0MEGA(ana.fHOutCentV0MEGA),
632   fHOutCentV0MPHS(ana.fHOutCentV0MPHS),
633   fHOutCentV0MMSLinMB(ana.fHOutCentV0MMSLinMB),
634   fHOutCentV0MMSHinMB(ana.fHOutCentV0MMSHinMB),
635   fHOutCentV0MMULinMB(ana.fHOutCentV0MMULinMB),
636   fHOutCentV0MMLLinMB(ana.fHOutCentV0MMLLinMB),
637   fHOutCentV0MEJEinMB(ana.fHOutCentV0MEJEinMB),
638   fHOutCentV0MEGAinMB(ana.fHOutCentV0MEGAinMB),
639   fHOutCentV0MPHSinMB(ana.fHOutCentV0MPHSinMB),
640   fHOutCentFMD(ana.fHOutCentFMD),
641   fHOutCentTRK(ana.fHOutCentTRK),
642   fHOutCentTKL(ana.fHOutCentTKL),
643   fHOutCentCL0(ana.fHOutCentCL0),
644   fHOutCentCL1(ana.fHOutCentCL1),
645   fHOutCentCND(ana.fHOutCentCND),
646   fHOutCentNPA(ana.fHOutCentNPA),
647   fHOutCentZNA(ana.fHOutCentZNA),
648   fHOutCentV0MvsFMD(ana.fHOutCentV0MvsFMD),
649   fHOutCentTKLvsV0M(ana.fHOutCentTKLvsV0M),
650   fHOutCentZEMvsZDC(ana.fHOutCentZEMvsZDC),
651   fHOutCentV0MvsCentCL1(ana.fHOutCentV0MvsCentCL1),
652   fHOutCentV0MvsCentTRK(ana.fHOutCentV0MvsCentTRK),
653   fHOutCentTRKvsCentCL1(ana.fHOutCentTRKvsCentCL1),
654   fHOutCentV0MvsCentZDC(ana.fHOutCentV0MvsCentZDC),
655   fHOutCentV0AvsCentV0C(ana.fHOutCentV0AvsCentV0C),
656   fHOutCentV0AvsCentTRK(ana.fHOutCentV0AvsCentTRK),
657   fHOutCentV0AvsCentCND(ana.fHOutCentV0AvsCentCND),
658   fHOutCentV0AvsCentCL1(ana.fHOutCentV0AvsCentCL1),
659   fHOutCentV0CvsCentTRK(ana.fHOutCentV0CvsCentTRK),
660   fHOutCentV0CvsCentCND(ana.fHOutCentV0CvsCentCND),
661   fHOutCentV0CvsCentCL1(ana.fHOutCentV0CvsCentCL1),
662   fHOutCentNPAvsCentV0A(ana.fHOutCentNPAvsCentV0A),
663   fHOutCentNPAvsCentV0C(ana.fHOutCentNPAvsCentV0C),
664   fHOutCentNPAvsCentTRK(ana.fHOutCentNPAvsCentTRK),
665   fHOutCentNPAvsCentCND(ana.fHOutCentNPAvsCentCND),
666   fHOutCentNPAvsCentCL1(ana.fHOutCentNPAvsCentCL1),
667   fHOutCentZNAvsCentV0A(ana.fHOutCentZNAvsCentV0A),
668   fHOutCentZNAvsCentV0C(ana.fHOutCentZNAvsCentV0C),
669   fHOutCentZNAvsCentTRK(ana.fHOutCentZNAvsCentTRK),
670   fHOutCentZNAvsCentCND(ana.fHOutCentZNAvsCentCND),
671   fHOutCentZNAvsCentCL1(ana.fHOutCentZNAvsCentCL1),
672   fHOutMultV0AC(ana.fHOutMultV0AC),
673   fHOutMultV0M(ana.fHOutMultV0M),
674   fHOutMultV0A(ana.fHOutMultV0A),
675   fHOutMultV0C(ana.fHOutMultV0C),
676   fHOutMultV0Mnc(ana.fHOutMultV0Mnc),
677   fHOutMultV0Anc(ana.fHOutMultV0Anc),
678   fHOutMultV0Cnc(ana.fHOutMultV0Cnc),
679   fHOutMultV0O(ana.fHOutMultV0O),
680   fHOutMultV0Cells(ana.fHOutMultV0Cells),
681   fHOutMultFMD(ana.fHOutMultFMD),
682   fHOutMultTRK(ana.fHOutMultTRK),
683   fHOutMultTKL(ana.fHOutMultTKL),
684   fHOutMultCL0(ana.fHOutMultCL0),
685   fHOutMultCL1(ana.fHOutMultCL1),
686   fHOutMultCND(ana.fHOutMultCND),
687   fHOutMultNPA(ana.fHOutMultNPA),
688   fHOutMultZNA(ana.fHOutMultZNA),
689   fHOutMultV0MvsZDN(ana.fHOutMultV0MvsZDN),
690   fHOutMultZEMvsZDN(ana.fHOutMultZEMvsZDN),
691   fHOutMultV0MvsZDC(ana.fHOutMultV0MvsZDC),
692   fHOutMultZEMvsZDC(ana.fHOutMultZEMvsZDC),
693   fHOutMultZEMvsZDCw(ana.fHOutMultZEMvsZDCw),
694   fHOutMultV0MvsCL1(ana.fHOutMultV0MvsCL1),
695   fHOutMultV0MvsTRK(ana.fHOutMultV0MvsTRK),
696   fHOutMultTRKvsCL1(ana.fHOutMultTRKvsCL1),
697   fHOutMultV0MvsV0O(ana.fHOutMultV0MvsV0O),
698   fHOutMultV0OvsCL1(ana.fHOutMultV0OvsCL1),
699   fHOutMultV0OvsTRK(ana.fHOutMultV0OvsTRK),
700   fHOutMultCL1vsTKL(ana.fHOutMultCL1vsTKL),
701   fHOutCentV0Mqual1(ana.fHOutCentV0Mqual1),
702   fHOutCentTRKqual1(ana.fHOutCentTRKqual1),
703   fHOutCentCL1qual1(ana.fHOutCentCL1qual1),
704   fHOutMultV0MvsCL1qual1(ana.fHOutMultV0MvsCL1qual1),
705   fHOutMultV0MvsTRKqual1(ana.fHOutMultV0MvsTRKqual1),
706   fHOutMultTRKvsCL1qual1(ana.fHOutMultTRKvsCL1qual1),
707   fHOutCentV0Mqual2(ana.fHOutCentV0Mqual2),
708   fHOutCentTRKqual2(ana.fHOutCentTRKqual2),
709   fHOutCentCL1qual2(ana.fHOutCentCL1qual2),
710   fHOutMultV0MvsCL1qual2(ana.fHOutMultV0MvsCL1qual2),
711   fHOutMultV0MvsTRKqual2(ana.fHOutMultV0MvsTRKqual2),
712   fHOutMultTRKvsCL1qual2(ana.fHOutMultTRKvsCL1qual2),
713   fHOutQuality(ana.fHOutQuality),
714   fHOutVertex(ana.fHOutVertex),
715   fHOutVertexT0(ana.fHOutVertexT0)
716 {
717   // Copy Constructor   
718
719 }
720
721 //________________________________________________________________________
722 AliCentralitySelectionTask::~AliCentralitySelectionTask()
723 {
724   // Destructor  
725   if (fOutputList && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) delete fOutputList;
726   if (fTrackCuts) delete fTrackCuts;
727   if (fEsdTrackCuts) delete fEsdTrackCuts;
728   if (fEsdTrackCutsExtra1) delete fEsdTrackCutsExtra1;
729   if (fEsdTrackCutsExtra2) delete fEsdTrackCutsExtra2;
730 }  
731
732 //________________________________________________________________________
733 void AliCentralitySelectionTask::UserCreateOutputObjects()
734 {  
735   // Create the output containers
736   if(fDebug>1) printf("AnalysisCentralitySelectionTask::UserCreateOutputObjects() \n");
737   AliLog::SetClassDebugLevel("AliCentralitySelectionTask", AliLog::kInfo);
738
739   if (fFillHistos) {    
740     fOutputList = new TList();
741     fOutputList->SetOwner();
742     fHOutCentV0M     = new TH1F("fHOutCentV0M","fHOutCentV0M; Centrality V0",505,0,101);
743     fHOutCentV0A    = new TH1F("fHOutCentV0A","fHOutCentV0A; Centrality V0A",505,0,101);
744     fHOutCentV0C    = new TH1F("fHOutCentV0C","fHOutCentV0C; Centrality V0C",505,0,101);
745     fHOutCentV0MCVHN= new TH1F("fHOutCentV0M_CVHN","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
746     fHOutCentV0MCVLN= new TH1F("fHOutCentV0M_CVLN","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
747     fHOutCentV0MCVHNinMB= new TH1F("fHOutCentV0M_CVHNinMB","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
748     fHOutCentV0MCVLNinMB= new TH1F("fHOutCentV0M_CVLNinMB","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
749     fHOutCentV0MCCENT= new TH1F("fHOutCentV0M_CCENT","fHOutCentV0M_CCENT; Centrality V0",505,0,101);
750     fHOutCentV0MCSEMI= new TH1F("fHOutCentV0M_CSEMI","fHOutCentV0M_CSEMI; Centrality V0",505,0,101);
751     fHOutCentV0MCCENTinMB= new TH1F("fHOutCentV0M_CCENTinMB","fHOutCentV0M_CCENT; Centrality V0",505,0,101);
752     fHOutCentV0MCSEMIinMB= new TH1F("fHOutCentV0M_CSEMIinMB","fHOutCentV0M_CSEMI; Centrality V0",505,0,101);
753     fHOutCentV0MMSL= new TH1F("fHOutCentV0M_MSL","fHOutCentV0M_MSL; Centrality V0",505,0,101);
754     fHOutCentV0MMSH= new TH1F("fHOutCentV0M_MSH","fHOutCentV0M_MSH; Centrality V0",505,0,101);
755     fHOutCentV0MMUL= new TH1F("fHOutCentV0M_MUL","fHOutCentV0M_MUL; Centrality V0",505,0,101);
756     fHOutCentV0MMLL= new TH1F("fHOutCentV0M_MLL","fHOutCentV0M_MLL; Centrality V0",505,0,101);
757     fHOutCentV0MEJE= new TH1F("fHOutCentV0M_EJE","fHOutCentV0M_EJE; Centrality V0",505,0,101);
758     fHOutCentV0MEGA= new TH1F("fHOutCentV0M_EGA","fHOutCentV0M_EGA; Centrality V0",505,0,101);
759     fHOutCentV0MPHS= new TH1F("fHOutCentV0M_PHS","fHOutCentV0M_PHS; Centrality V0",505,0,101);
760     fHOutCentV0MMSLinMB= new TH1F("fHOutCentV0M_MSLinMB","fHOutCentV0M_MSLinMB; Centrality V0",505,0,101);
761     fHOutCentV0MMSHinMB= new TH1F("fHOutCentV0M_MSHinMB","fHOutCentV0M_MSHinMB; Centrality V0",505,0,101);
762     fHOutCentV0MMULinMB= new TH1F("fHOutCentV0M_MULinMB","fHOutCentV0M_MULinMB; Centrality V0",505,0,101);
763     fHOutCentV0MMLLinMB= new TH1F("fHOutCentV0M_MLLinMB","fHOutCentV0M_MLLinMB; Centrality V0",505,0,101);
764     fHOutCentV0MEJEinMB= new TH1F("fHOutCentV0M_EJEinMB","fHOutCentV0M_EJEinMB; Centrality V0",505,0,101);
765     fHOutCentV0MEGAinMB= new TH1F("fHOutCentV0M_EGAinMB","fHOutCentV0M_EGAinMB; Centrality V0",505,0,101);
766     fHOutCentV0MPHSinMB= new TH1F("fHOutCentV0M_PHSinMB","fHOutCentV0M_PHSinMB; Centrality V0",505,0,101);
767     fHOutCentFMD     = new TH1F("fHOutCentFMD","fHOutCentFMD; Centrality FMD",505,0,101);
768     fHOutCentTRK     = new TH1F("fHOutCentTRK","fHOutCentTRK; Centrality TPC",505,0,101);
769     fHOutCentTKL     = new TH1F("fHOutCentTKL","fHOutCentTKL; Centrality tracklets",505,0,101);
770     fHOutCentCL0     = new TH1F("fHOutCentCL0","fHOutCentCL0; Centrality SPD inner",505,0,101);
771     fHOutCentCL1     = new TH1F("fHOutCentCL1","fHOutCentCL1; Centrality SPD outer",505,0,101);
772     fHOutCentCND     = new TH1F("fHOutCentCND","fHOutCentCND; Centrality candle",505,0,101);
773     fHOutCentNPA     = new TH1F("fHOutCentNPA","fHOutCentNPA; Centrality Npart",505,0,101);
774     fHOutCentZNA     = new TH1F("fHOutCentZNA","fHOutCentZNA; Centrality ZNA",505,0,101);
775     fHOutCentV0MvsFMD= new TH1F("fHOutCentV0MvsFMD","fHOutCentV0MvsFMD; Centrality V0 vs FMD",505,0,101);
776     fHOutCentTKLvsV0M= new TH1F("fHOutCentTKLvsV0M","fHOutCentTKLvsV0M; Centrality tracklets vs V0",505,0,101);
777     fHOutCentZEMvsZDC= new TH1F("fHOutCentZEMvsZDC","fHOutCentZEMvsZDC; Centrality ZEM vs ZDC",505,0,101);
778     fHOutCentV0MvsCentCL1= new TH2F("fHOutCentV0MvsCentCL1","fHOutCentV0MvsCentCL1; Cent V0; Cent SPD",505,0,101,505,0,101);
779     fHOutCentV0MvsCentTRK= new TH2F("fHOutCentV0MvsCentTRK","fHOutCentV0MvsCentTRK; Cent V0; Cent TPC",505,0,101,505,0,101);
780     fHOutCentTRKvsCentCL1= new TH2F("fHOutCentTRKvsCentCL1","fHOutCentTRKvsCentCL1; Cent TPC; Cent SPD",505,0,101,505,0,101);
781     fHOutCentV0MvsCentZDC= new TH2F("fHOutCentV0MvsCentZDC","fHOutCentV0MvsCentZDC; Cent V0; Cent ZDC",505,0,101,505,0,101);
782     fHOutCentV0AvsCentV0C= new TH2F("fHOutCentV0AvsCentV0C","fHOutCentV0AvsCentV0C; Cent V0A; Cent V0C;", 505,0,101,505,0,101);
783     fHOutCentV0AvsCentTRK= new TH2F("fHOutCentV0AvsCentTRK","fHOutCentV0AvsCentTRK; Cent V0A; Cent TRK;", 505,0,101,505,0,101);
784     fHOutCentV0AvsCentCND= new TH2F("fHOutCentV0AvsCentCND","fHOutCentV0AvsCentCND; Cent V0A; Cent CND;", 505,0,101,505,0,101);
785     fHOutCentV0AvsCentCL1= new TH2F("fHOutCentV0AvsCentCL1","fHOutCentV0AvsCentCL1; Cent V0A; Cent CL1;", 505,0,101,505,0,101);
786     fHOutCentV0CvsCentTRK= new TH2F("fHOutCentV0CvsCentTRK","fHOutCentV0CvsCentTRK; Cent V0C; Cent TRK;", 505,0,101,505,0,101);
787     fHOutCentV0CvsCentCND= new TH2F("fHOutCentV0CvsCentCND","fHOutCentV0CvsCentCND; Cent V0C; Cent CND;", 505,0,101,505,0,101);
788     fHOutCentV0CvsCentCL1= new TH2F("fHOutCentV0CvsCentCL1","fHOutCentV0CvsCentCL1; Cent V0C; Cent CL1;", 505,0,101,505,0,101);
789     fHOutCentNPAvsCentV0A= new TH2F("fHOutCentNPAvsCentV0A","fHOutCentNPAvsCentV0A; Cent NPA; Cent V0A;", 505,0,101,505,0,101);
790     fHOutCentNPAvsCentV0C= new TH2F("fHOutCentNPAvsCentV0C","fHOutCentNPAvsCentV0C; Cent NPA; Cent V0C;", 505,0,101,505,0,101);
791     fHOutCentNPAvsCentTRK= new TH2F("fHOutCentNPAvsCentTRK","fHOutCentNPAvsCentTRK; Cent NPA; Cent TRK;", 505,0,101,505,0,101);
792     fHOutCentNPAvsCentCND= new TH2F("fHOutCentNPAvsCentCND","fHOutCentNPAvsCentCND; Cent NPA; Cent CND;", 505,0,101,505,0,101);
793     fHOutCentNPAvsCentCL1= new TH2F("fHOutCentNPAvsCentCL1","fHOutCentNPAvsCentCL1; Cent NPA; Cent CL1;", 505,0,101,505,0,101);
794     fHOutCentZNAvsCentV0A= new TH2F("fHOutCentZNAvsCentV0A","fHOutCentZNAvsCentV0A; Cent ZNA; Cent V0A;", 505,0,101,505,0,101);
795     fHOutCentZNAvsCentV0C= new TH2F("fHOutCentZNAvsCentV0C","fHOutCentZNAvsCentV0C; Cent ZNA; Cent V0C;", 505,0,101,505,0,101);
796     fHOutCentZNAvsCentTRK= new TH2F("fHOutCentZNAvsCentTRK","fHOutCentZNAvsCentTRK; Cent ZNA; Cent TRK;", 505,0,101,505,0,101);
797     fHOutCentZNAvsCentCND= new TH2F("fHOutCentZNAvsCentCND","fHOutCentZNAvsCentCND; Cent ZNA; Cent CND;", 505,0,101,505,0,101);
798     fHOutCentZNAvsCentCL1= new TH2F("fHOutCentZNAvsCentCL1","fHOutCentZNAvsCentCL1; Cent ZNA; Cent CL1;", 505,0,101,505,0,101);
799
800     fHOutMultV0AC = new TH2F("fHOutMultV0AC","fHOutMultV0AC; Multiplicity V0A; Multiplicity V0C",1000,0,1000,1000,0,1000);
801     fHOutMultV0M  = new TH1F("fHOutMultV0M","fHOutMultV0M; Multiplicity V0",25000,0,25000);
802     fHOutMultV0A  = new TH1F("fHOutMultV0A","fHOutMultV0A; Multiplicity V0",25000,0,25000);
803     fHOutMultV0C  = new TH1F("fHOutMultV0C","fHOutMultV0C; Multiplicity V0",25000,0,25000);
804     fHOutMultV0Mnc= new TH1F("fHOutMultV0Mnc","fHOutMultV0Mnc; Multiplicity V0",25000,0,25000);
805     fHOutMultV0Anc= new TH1F("fHOutMultV0Anc","fHOutMultV0Anc; Multiplicity V0",25000,0,25000);
806     fHOutMultV0Cnc= new TH1F("fHOutMultV0Cnc","fHOutMultV0Cnc; Multiplicity V0",25000,0,25000);
807     fHOutMultV0O  = new TH1F("fHOutMultV0O","fHOutMultV0O; Multiplicity V0",40000,0,40000);
808     fHOutMultV0Cells = new TH2F("fHOutMultV0Cells","fHOutMultV0Cells",33,-0.5,32.5,33,-0.5,32.5); 
809     fHOutMultFMD = new TH1F("fHOutMultFMD","fHOutMultFMD; Multiplicity FMD",24000,0,24000);
810     fHOutMultTRK = new TH1F("fHOutMultTRK","fHOutMultTRK; Multiplicity TPC",4000,0,4000);
811     fHOutMultTKL = new TH1F("fHOutMultTKL","fHOutMultTKL; Multiplicity tracklets",5000,0,5000);
812     fHOutMultCL0 = new TH1F("fHOutMultCL0","fHOutMultCL0; Multiplicity SPD inner",7000,0,7000);
813     fHOutMultCL1 = new TH1F("fHOutMultCL1","fHOutMultCL1; Multiplicity SPD outer",7000,0,7000);
814     fHOutMultCND = new TH1F("fHOutMultCND","fHOutMultCND; Multiplicity candle",4000,0,4000);
815     fHOutMultNPA = new TH1F("fHOutMultNPA","fHOutMultNPA; Nparticipants",450,0,450);
816     fHOutMultZNA = new TH1F("fHOutMultZNA","fHOutMultZNA; ZNA Energy",500,0,2000);
817
818     fHOutMultV0MvsZDN = new TH2F("fHOutMultV0MvsZDN","fHOutMultV0MvsZDN; Multiplicity V0; Energy ZDC-N",500,0,30000,500,0,180000);
819     fHOutMultZEMvsZDN = new TH2F("fHOutMultZEMvsZDN","fHOutMultZEMvsZDN; Energy ZEM; Energy ZDC-N",500,0,2500,500,0,180000);
820     fHOutMultV0MvsZDC = new TH2F("fHOutMultV0MvsZDC","fHOutMultV0MvsZDC; Multiplicity V0; Energy ZDC",500,0,30000,500,0,200000);
821     fHOutMultZEMvsZDC = new TH2F("fHOutMultZEMvsZDC","fHOutMultZEMvsZDC; Energy ZEM; Energy ZDC",500,0,2500,500,0,200000);
822     fHOutMultZEMvsZDCw = new TH2F("fHOutMultZEMvsZDCw","fHOutMultZEMvsZDCw; Energy ZEM; Energy ZDC (weigthed with V0 percentile)",500,0,2500,500,0,200000);
823     fHOutMultV0MvsCL1 = new TH2F("fHOutMultV0MvsCL1","fHOutMultV0MvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
824     fHOutMultV0MvsTRK = new TH2F("fHOutMultV0MvsTRK","fHOutMultV0MvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
825     fHOutMultTRKvsCL1 = new TH2F("fHOutMultTRKvsCL1","fHOutMultTRKvsCL1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
826     fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,40000);
827     fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",500,0,40000,700,0,7000);
828     fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",500,0,40000,400,0,4000);
829     fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,30000);
830     fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
831     fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
832     fHOutMultCL1vsTKL = new TH2F ("fHOutMultCL1vsTKL","fHOutMultCL1vsTKL; Multiplicity SPD outer; Multiplicity tracklets",700,0,7000,700,0,7000);
833     
834     fHOutCentV0Mqual1 = new TH1F("fHOutCentV0M_qual1","fHOutCentV0M_qual1; Centrality V0",505,0,101);
835     fHOutCentTRKqual1 = new TH1F("fHOutCentTRK_qual1","fHOutCentTRK_qual1; Centrality TPC",505,0,101);
836     fHOutCentCL1qual1 = new TH1F("fHOutCentCL1_qual1","fHOutCentCL1_qual1; Centrality SPD outer",505,0,101);
837     fHOutMultV0MvsCL1qual1 = new TH2F("fHOutMultV0MvsCL1_qual1","fHOutMultV0MvsCL1_qual1; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
838     fHOutMultV0MvsTRKqual1 = new TH2F("fHOutMultV0MvsTRK_qual1","fHOutMultV0MvsTRK_qual1; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
839     fHOutMultTRKvsCL1qual1 = new TH2F("fHOutMultTRKvsCL1_qual1","fHOutMultTRKvsCL1_qual1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
840     
841     fHOutCentV0Mqual2 = new TH1F("fHOutCentV0M_qual2","fHOutCentV0M_qual2; Centrality V0",505,0,101);
842     fHOutCentTRKqual2 = new TH1F("fHOutCentTRK_qual2","fHOutCentTRK_qual2; Centrality TPC",505,0,101);
843     fHOutCentCL1qual2 = new TH1F("fHOutCentCL1_qual2","fHOutCentCL1_qual2; Centrality SPD outer",505,0,101);
844     fHOutMultV0MvsCL1qual2 = new TH2F("fHOutMultV0MvsCL1_qual2","fHOutMultV0MvsCL1_qual2; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
845     fHOutMultV0MvsTRKqual2 = new TH2F("fHOutMultV0MvsTRK_qual2","fHOutMultV0MvsTRK_qual2; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
846     fHOutMultTRKvsCL1qual2 = new TH2F("fHOutMultTRKvsCL1_qual2","fHOutMultTRKvsCL1_qual2; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
847     
848     fHOutQuality = new TH1F("fHOutQuality", "fHOutQuality", 100,-0.5,99.5);
849     fHOutVertex  = new TH1F("fHOutVertex", "fHOutVertex", 100,-20,20);
850     fHOutVertexT0  = new TH1F("fHOutVertexT0", "fHOutVertexT0", 100,-20,20);
851   
852     fOutputList->Add(  fHOutCentV0M    );
853     fOutputList->Add(  fHOutCentV0A    );
854     fOutputList->Add(  fHOutCentV0C    );
855     fOutputList->Add(  fHOutCentV0MCVHN);
856     fOutputList->Add(  fHOutCentV0MCVLN);
857     fOutputList->Add(  fHOutCentV0MCVHNinMB);
858     fOutputList->Add(  fHOutCentV0MCVLNinMB);
859     fOutputList->Add(  fHOutCentV0MCCENT);
860     fOutputList->Add(  fHOutCentV0MCSEMI);
861     fOutputList->Add(  fHOutCentV0MCCENTinMB);
862     fOutputList->Add(  fHOutCentV0MCSEMIinMB);
863     fOutputList->Add(  fHOutCentV0MMSL    );
864     fOutputList->Add(  fHOutCentV0MMSH    );
865     fOutputList->Add(  fHOutCentV0MMUL    );
866     fOutputList->Add(  fHOutCentV0MMLL    );
867     fOutputList->Add(  fHOutCentV0MEJE    );
868     fOutputList->Add(  fHOutCentV0MEGA    );
869     fOutputList->Add(  fHOutCentV0MPHS   );
870     fOutputList->Add(  fHOutCentV0MMSLinMB);
871     fOutputList->Add(  fHOutCentV0MMSHinMB);
872     fOutputList->Add(  fHOutCentV0MMULinMB);
873     fOutputList->Add(  fHOutCentV0MMLLinMB);
874     fOutputList->Add(  fHOutCentV0MEJEinMB);
875     fOutputList->Add(  fHOutCentV0MEGAinMB);
876     fOutputList->Add(  fHOutCentV0MPHSinMB);
877     fOutputList->Add(  fHOutCentFMD     );
878     fOutputList->Add(  fHOutCentTRK     );
879     fOutputList->Add(  fHOutCentTKL     );
880     fOutputList->Add(  fHOutCentCL0     );
881     fOutputList->Add(  fHOutCentCL1     );
882     fOutputList->Add(  fHOutCentCND     );
883     fOutputList->Add(  fHOutCentNPA     );
884     fOutputList->Add(  fHOutCentZNA     );
885     fOutputList->Add(  fHOutCentV0MvsFMD);
886     fOutputList->Add(  fHOutCentTKLvsV0M);
887     fOutputList->Add(  fHOutCentZEMvsZDC);
888     fOutputList->Add(  fHOutCentV0MvsCentCL1);
889     fOutputList->Add(  fHOutCentV0MvsCentTRK);
890     fOutputList->Add(  fHOutCentTRKvsCentCL1);
891     fOutputList->Add(  fHOutCentV0MvsCentZDC);
892     fOutputList->Add(  fHOutCentV0AvsCentV0C);
893     fOutputList->Add(  fHOutCentV0AvsCentTRK);
894     fOutputList->Add(  fHOutCentV0AvsCentCND);
895     fOutputList->Add(  fHOutCentV0AvsCentCL1);
896     fOutputList->Add(  fHOutCentV0CvsCentTRK);
897     fOutputList->Add(  fHOutCentV0CvsCentCND);
898     fOutputList->Add(  fHOutCentV0CvsCentCL1);
899     fOutputList->Add(  fHOutCentNPAvsCentV0A);
900     fOutputList->Add(  fHOutCentNPAvsCentV0C);
901     fOutputList->Add(  fHOutCentNPAvsCentTRK);
902     fOutputList->Add(  fHOutCentNPAvsCentCND);
903     fOutputList->Add(  fHOutCentNPAvsCentCL1);
904     fOutputList->Add(  fHOutCentZNAvsCentV0A);
905     fOutputList->Add(  fHOutCentZNAvsCentV0C);
906     fOutputList->Add(  fHOutCentZNAvsCentTRK);
907     fOutputList->Add(  fHOutCentZNAvsCentCND);
908     fOutputList->Add(  fHOutCentZNAvsCentCL1);
909
910     fOutputList->Add(  fHOutMultV0AC); 
911     fOutputList->Add(  fHOutMultV0M); 
912     fOutputList->Add(  fHOutMultV0A); 
913     fOutputList->Add(  fHOutMultV0C); 
914     fOutputList->Add(  fHOutMultV0Mnc); 
915     fOutputList->Add(  fHOutMultV0Anc); 
916     fOutputList->Add(  fHOutMultV0Cnc); 
917     fOutputList->Add(  fHOutMultV0O);
918     fOutputList->Add(  fHOutMultV0Cells) ;   
919     fOutputList->Add(  fHOutMultFMD); 
920     fOutputList->Add(  fHOutMultTRK); 
921     fOutputList->Add(  fHOutMultTKL); 
922     fOutputList->Add(  fHOutMultCL0); 
923     fOutputList->Add(  fHOutMultCL1); 
924     fOutputList->Add(  fHOutMultCND); 
925     fOutputList->Add(  fHOutMultNPA); 
926     fOutputList->Add(  fHOutMultZNA); 
927     fOutputList->Add(  fHOutMultV0MvsZDN);
928     fOutputList->Add(  fHOutMultZEMvsZDN);
929     fOutputList->Add(  fHOutMultV0MvsZDC);
930     fOutputList->Add(  fHOutMultZEMvsZDC);
931     fOutputList->Add(  fHOutMultZEMvsZDCw);
932     fOutputList->Add(  fHOutMultV0MvsCL1);
933     fOutputList->Add(  fHOutMultV0MvsTRK);
934     fOutputList->Add(  fHOutMultTRKvsCL1);
935     fOutputList->Add(  fHOutMultV0MvsV0O);
936     fOutputList->Add(  fHOutMultV0OvsCL1);
937     fOutputList->Add(  fHOutMultV0OvsTRK);
938     fOutputList->Add(  fHOutMultCL1vsTKL);
939     fOutputList->Add(  fHOutCentV0Mqual1 );
940     fOutputList->Add(  fHOutCentTRKqual1 );
941     fOutputList->Add(  fHOutCentCL1qual1 );                   
942     fOutputList->Add(  fHOutMultV0MvsCL1qual1);
943     fOutputList->Add(  fHOutMultV0MvsTRKqual1);
944     fOutputList->Add(  fHOutMultTRKvsCL1qual1);
945     fOutputList->Add(  fHOutCentV0Mqual2 );
946     fOutputList->Add(  fHOutCentTRKqual2 );
947     fOutputList->Add(  fHOutCentCL1qual2 );
948     fOutputList->Add(  fHOutMultV0MvsCL1qual2);
949     fOutputList->Add(  fHOutMultV0MvsTRKqual2);
950     fOutputList->Add(  fHOutMultTRKvsCL1qual2);
951     fOutputList->Add(  fHOutQuality );
952     fOutputList->Add(  fHOutVertex );
953     fOutputList->Add(  fHOutVertexT0 );
954   
955     PostData(1, fOutputList); 
956   }
957   
958   fTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
959   fEsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
960   fEsdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kOff);
961   // Add SPD requirement
962   fEsdTrackCutsExtra1 = new AliESDtrackCuts("SPD", "Require 1 cluster in SPD");
963   fEsdTrackCutsExtra1->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
964   // Add SDD requirement
965   fEsdTrackCutsExtra2 = new AliESDtrackCuts("SDD", "Require 1 cluster in first layer SDD");
966   fEsdTrackCutsExtra2->SetClusterRequirementITS(AliESDtrackCuts::kSDD,AliESDtrackCuts::kFirst);  
967 }
968
969 //________________________________________________________________________
970 void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
971
972   // Execute analysis for current event:
973   if(fDebug>1) printf(" **** AliCentralitySelectionTask::UserExec() \n");
974
975   Int_t    runType = 0;             // 0:PbPb, 1:pPb or Pbp 
976
977   Float_t  zncEnergy = 0.;          //  ZNC Energy
978   Float_t  zpcEnergy = 0.;          //  ZPC Energy
979   Float_t  znaEnergy = 0.;          //  ZNA Energy
980   Float_t  zpaEnergy = 0.;          //  ZPA Energy
981   Float_t  zem1Energy = 0.;         //  ZEM1 Energy
982   Float_t  zem2Energy = 0.;         //  ZEM2 Energy
983   Bool_t   zdcEnergyCal = kFALSE;   // if zdc is calibrated (in pass2)
984   Double_t znaTower = 0.;           // common PMT of ZNA 
985   Bool_t   znaFired = kFALSE;
986
987   Int_t    nTracks = 0;             //  no. tracks
988   Int_t    nTracklets = 0;          //  no. tracklets
989   Int_t    nClusters[6] = {0};      //  no. clusters on 6 ITS layers
990   Int_t    nChips[2];               //  no. chips on 2 SPD layers
991   Float_t  spdCorr =0;              //  corrected spd2 multiplicity
992   Int_t    multCND = 0;             //  no. tracks (candle condition)
993
994   Float_t  multV0A  = 0;            //  multiplicity from V0 reco side A
995   Float_t  multV0C  = 0;            //  multiplicity from V0 reco side C
996   Float_t  multV0ACorr  = 0;            //  multiplicity from V0 reco side A
997   Float_t  multV0CCorr  = 0;            //  multiplicity from V0 reco side C
998   Short_t  multV0AOnline  = 0;      //  multiplicity from V0 reco side A
999   Short_t  multV0COnline  = 0;      //  multiplicity from V0 reco side C
1000   Float_t  v0Corr = 0;              // corrected V0 multiplicity (used for MC)
1001   Int_t nV0A = 0;
1002   Int_t nV0C = 0;
1003
1004   Float_t  multFMDA = 0;            //  multiplicity from FMD on detector A
1005   Float_t  multFMDC = 0;            //  multiplicity from FMD on detector C
1006
1007   Float_t zvtx =0;                  // z-vertex SPD
1008   Int_t zvtxNcont =0;               // contributors to z-vertex SPD
1009
1010   Float_t zvtxT0 =0;                // z-vertex T0
1011
1012   Int_t Npart =0;                   // N. of participants (true MC)
1013
1014   AliCentrality *esdCent = 0;
1015
1016   if(fAnalysisInput.CompareTo("ESD")==0){
1017   
1018     AliVEvent* event = InputEvent();
1019     AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
1020     if (!esd) {
1021       AliError("No ESD Event");
1022       return;
1023     }
1024   
1025     LoadBranches();
1026     
1027     if (SetupRun(esd)<0) {
1028       AliError("Centrality File not available for this run");
1029       return;
1030     }
1031     
1032     if (strcmp(esd->GetESDRun()->GetBeamType(), "A-A") == 0) runType=0;
1033     else runType=1;  
1034
1035     esdCent = esd->GetCentrality();
1036
1037     // ***** Vertex Info
1038     const AliESDVertex* vtxESD = esd->GetPrimaryVertexSPD();
1039     zvtx        = vtxESD->GetZ(); 
1040     zvtxNcont   = vtxESD->GetNContributors();
1041
1042     // ***** V0 info    
1043     AliESDVZERO* esdV0 = esd->GetVZEROData();
1044     if (!esdV0)
1045       {
1046         AliError("AliESDVZERO not available");
1047         return;
1048       }
1049     multV0A=esdV0->GetMTotV0A();
1050     multV0C=esdV0->GetMTotV0C();
1051
1052     multV0ACorr = AliESDUtils::GetCorrV0A(multV0A,zvtx);    
1053     multV0CCorr = AliESDUtils::GetCorrV0C(multV0C,zvtx);    
1054
1055     v0Corr = multV0A+multV0C;
1056
1057     multV0AOnline=esdV0->GetTriggerChargeA(); 
1058     multV0COnline=esdV0->GetTriggerChargeC(); 
1059
1060     // Count V0 flags
1061     for(Int_t i = 0; i < 32; ++i) {
1062       if (esdV0->GetBBFlag(i)) nV0C++;
1063       if (esdV0->GetBBFlag(i+32)) nV0A++;
1064     }
1065     
1066     // ***** T0 info    
1067     const AliESDTZERO* esdT0 = esd->GetESDTZERO();
1068     if (!esdT0)
1069       {
1070         AliError("AliESDTZERO not available");
1071         return;
1072       }
1073     Int_t trig=esdT0->GetT0Trig();
1074     Bool_t kT0BB = kFALSE;    
1075     if(trig&1) kT0BB=kTRUE;
1076     zvtxT0=esdT0->GetT0zVertex();
1077
1078
1079     // ***** Trigger info    
1080     fIsSelected = ((esdV0->GetV0ADecision()==1) && (esdV0->GetV0CDecision()==1));
1081     TString trigStr(esd->GetFiredTriggerClasses());
1082     
1083     fMB=kFALSE;
1084     fCVHN=kFALSE; fCVLN=kFALSE; fCCENT=kFALSE; fCSEMI=kFALSE; 
1085     fMSL=kFALSE;  fMSH=kFALSE;  fMUL=kFALSE;   fMLL=kFALSE;
1086     fEJE=kFALSE;  fEGA=kFALSE;  fPHS=kFALSE;
1087
1088     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI")) && (fIsSelected)) 
1089       fMB=kTRUE;
1090     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CVHN")) && (fIsSelected)) 
1091       fCVHN=kTRUE;
1092     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CVLN")) && (fIsSelected))
1093       fCVLN=kTRUE;
1094     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CCENT")) && (fIsSelected)) 
1095       fCCENT=kTRUE;
1096     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CSEMI")) && (fIsSelected))
1097       fCSEMI=kTRUE;
1098     
1099     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MSL")) && (fIsSelected))
1100       fMSL=kTRUE;
1101     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MSH")) && (fIsSelected))
1102       fMSH=kTRUE;
1103     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MUL")) && (fIsSelected))
1104       fMUL=kTRUE;
1105     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MLL")) && (fIsSelected))
1106       fMLL=kTRUE;
1107     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1EJE")) && (fIsSelected))
1108       fEJE=kTRUE;
1109     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1EGA")) && (fIsSelected))
1110       fEGA=kTRUE;
1111     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1PHS")) && (fIsSelected))
1112       fPHS=kTRUE;
1113
1114     fCVHNbit=kFALSE;    fCVLNbit=kFALSE;       fCCENTbit=kFALSE;    fCSEMIbit=kFALSE; 
1115     if (esdV0->GetTriggerBits() & (1<<8)) 
1116       fCVHNbit=kTRUE;
1117     if (esdV0->GetTriggerBits() & (1<<6)) 
1118       fCVLNbit=kTRUE;
1119     
1120     if (kT0BB && fCVHNbit)
1121       fCCENTbit=kTRUE;
1122     if (kT0BB && fCVLNbit)
1123       fCSEMIbit=kTRUE;
1124
1125     
1126     // ***** CB info (tracklets, clusters, chips)
1127     //nTracks    = event->GetNumberOfTracks();     
1128     nTracks    = fTrackCuts ? (Short_t)fTrackCuts->GetReferenceMultiplicity(esd,kTRUE):-1;
1129
1130     Short_t nTrTPCcandle = 0;
1131     for (Int_t iTracks = 0; iTracks < esd->GetNumberOfTracks(); iTracks++) {
1132
1133       AliESDtrack* track = esd->GetTrack(iTracks);
1134       if (!track) continue;
1135       
1136       if (! fEsdTrackCuts->IsSelected(track) )continue;
1137       
1138       if (fEsdTrackCutsExtra1 && fEsdTrackCutsExtra2 &&
1139           !fEsdTrackCutsExtra1->IsSelected(track) &&
1140           !fEsdTrackCutsExtra2->IsSelected(track)) continue;
1141       
1142       if (track->Pt() > 0.4 && TMath::Abs(track->Eta()) < 0.9)  nTrTPCcandle++;
1143     } 
1144     multCND = nTrTPCcandle;
1145
1146     const AliMultiplicity *mult = esd->GetMultiplicity();
1147     nTracklets = mult->GetNumberOfTracklets();
1148
1149     for(Int_t ilay=0; ilay<6; ilay++){
1150       nClusters[ilay] = mult->GetNumberOfITSClusters(ilay);
1151     }
1152
1153     for(Int_t ilay=0; ilay<2; ilay++){
1154       nChips[ilay] = mult->GetNumberOfFiredChips(ilay);
1155     }
1156
1157     spdCorr = AliESDUtils::GetCorrSPD2(nClusters[1],zvtx);    
1158
1159     // ***** FMD info
1160     AliESDFMD *fmd = esd->GetFMDData();
1161     Float_t totalMultA = 0;
1162     Float_t totalMultC = 0;
1163     const Float_t fFMDLowCut = 0.4;
1164   
1165     for(UShort_t det=1;det<=3;det++) {
1166       Int_t nRings = (det==1 ? 1 : 2);
1167       for (UShort_t ir = 0; ir < nRings; ir++) {          
1168         Char_t   ring = (ir == 0 ? 'I' : 'O');
1169         UShort_t nsec = (ir == 0 ? 20  : 40);
1170         UShort_t nstr = (ir == 0 ? 512 : 256);
1171         for(UShort_t sec =0; sec < nsec;  sec++)  {
1172           for(UShort_t strip = 0; strip < nstr; strip++) {
1173             
1174             Float_t fmdMult = fmd->Multiplicity(det,ring,sec,strip);
1175             if(fmdMult == 0 || fmdMult == AliESDFMD::kInvalidMult) continue;
1176             
1177             Float_t nParticles=0;
1178             
1179             if(fmdMult > fFMDLowCut) {
1180               nParticles = 1.;
1181             }
1182             
1183             if (det<3) totalMultA = totalMultA + nParticles;
1184             else totalMultC = totalMultC + nParticles;
1185             
1186           }
1187         }
1188       }
1189     }
1190     multFMDA = totalMultA;
1191     multFMDC = totalMultC;
1192   
1193     // ***** ZDC info
1194     AliESDZDC *esdZDC = esd->GetESDZDC();
1195     zdcEnergyCal = esdZDC->AliESDZDC::TestBit(AliESDZDC::kEnergyCalibratedSignal);
1196     if (zdcEnergyCal) {      
1197       zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy());
1198       zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy());
1199       znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy());
1200       zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy());
1201     } else {
1202       zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy())/8.;
1203       zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy())/8.;
1204       znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy())/8.;
1205       zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy())/8.;
1206     }
1207     zem1Energy = (Float_t) (esdZDC->GetZDCEMEnergy(0))/8.;
1208     zem2Energy = (Float_t) (esdZDC->GetZDCEMEnergy(1))/8.;
1209
1210     const Double_t *ZNAtower = esdZDC->GetZN2TowerEnergy(); 
1211     znaTower = ZNAtower[0];
1212
1213     for (Int_t j = 0; j < 4; ++j) {
1214       if (esdZDC->GetZDCTDCData(12,j) != 0) {
1215         znaFired = kTRUE;
1216       }
1217     } 
1218   
1219     // ***** MC info
1220     AliAnalysisManager* anMan = AliAnalysisManager::GetAnalysisManager();
1221     AliMCEventHandler* eventHandler = (AliMCEventHandler*)anMan->GetMCtruthEventHandler();
1222     AliStack*    stack=0;
1223     AliMCEvent*  mcEvent=0;
1224     if (fIsMCInput && eventHandler && (mcEvent=eventHandler->MCEvent()) && (stack=mcEvent->Stack())) {
1225       
1226       AliGenHijingEventHeader* hHijing=0;
1227       AliGenDPMjetEventHeader* dpmHeader=0;
1228       
1229       AliGenEventHeader* mcGenH = mcEvent->GenEventHeader();
1230       if (mcGenH->InheritsFrom(AliGenHijingEventHeader::Class())) {
1231         hHijing = (AliGenHijingEventHeader*)mcGenH;
1232         if(hHijing) Npart = hHijing->ProjectileParticipants()+hHijing->TargetParticipants();
1233       }
1234       else if (mcGenH->InheritsFrom(AliGenCocktailEventHeader::Class())) {
1235         TList* headers = ((AliGenCocktailEventHeader*)mcGenH)->GetHeaders();
1236         hHijing = dynamic_cast<AliGenHijingEventHeader*>(headers->FindObject("Hijing"));
1237         if(hHijing) Npart = hHijing->ProjectileParticipants()+hHijing->TargetParticipants();
1238       }
1239       else if (mcGenH->InheritsFrom(AliGenDPMjetEventHeader::Class())) {
1240         dpmHeader = (AliGenDPMjetEventHeader*)mcGenH;
1241         if(dpmHeader) Npart = dpmHeader->ProjectileParticipants()+ dpmHeader->TargetParticipants();
1242       }
1243     }
1244   }   
1245
1246   else if(fAnalysisInput.CompareTo("AOD")==0){
1247     //AliAODEvent *aod =  dynamic_cast<AliAODEvent*> (InputEvent());
1248     // to be implemented
1249     printf("  AOD analysis not yet implemented!!!\n\n");
1250     return;
1251   } 
1252
1253   // ***** Scaling for MC
1254   if (fIsMCInput) {
1255     fUseScaling=kFALSE;
1256     v0Corr  = Short_t((multV0A+multV0C)  * fV0MScaleFactorMC);
1257     multV0A  = multV0A * fV0MScaleFactorMC;
1258     multV0C  = multV0C * fV0MScaleFactorMC;
1259   }
1260   // ***** Scaling for Data 
1261   if (fUseScaling) {
1262     v0Corr  = Short_t(v0Corr /   fV0MScaleFactor);
1263     spdCorr = spdCorr / fSPDScaleFactor;
1264     nTracks = Int_t(nTracks /   fTPCScaleFactor);
1265   }
1266
1267   // ***** Centrality Selection
1268   if(fHtempV0M) fCentV0M = fHtempV0M->GetBinContent(fHtempV0M->FindBin((v0Corr)));
1269   if(fHtempV0A) fCentV0A = fHtempV0A->GetBinContent(fHtempV0A->FindBin((multV0ACorr)));
1270   if(fHtempV0C) fCentV0C = fHtempV0C->GetBinContent(fHtempV0C->FindBin((multV0CCorr)));
1271   if(fHtempFMD) fCentFMD = fHtempFMD->GetBinContent(fHtempFMD->FindBin((multFMDA+multFMDC)));
1272   if(fHtempTRK) fCentTRK = fHtempTRK->GetBinContent(fHtempTRK->FindBin(nTracks));
1273   if(fHtempTKL) fCentTKL = fHtempTKL->GetBinContent(fHtempTKL->FindBin(nTracklets));
1274   if(fHtempCL0) fCentCL0 = fHtempCL0->GetBinContent(fHtempCL0->FindBin(nClusters[0]));
1275   if(fHtempCL1) fCentCL1 = fHtempCL1->GetBinContent(fHtempCL1->FindBin(spdCorr));
1276   if(fHtempCND) fCentCND = fHtempCND->GetBinContent(fHtempCND->FindBin(multCND));
1277   if(fHtempZNA) {
1278     if(znaFired) fCentZNA = fHtempZNA->GetBinContent(fHtempZNA->FindBin(znaTower));
1279     else fCentZNA = 101;
1280   }
1281   if(fHtempV0MvsFMD) fCentV0MvsFMD = fHtempV0MvsFMD->GetBinContent(fHtempV0MvsFMD->FindBin((multV0A+multV0C)));
1282   if(fHtempTKLvsV0M) fCentTKLvsV0M = fHtempTKLvsV0M->GetBinContent(fHtempTKLvsV0M->FindBin(nTracklets));
1283   if(fHtempZEMvsZDC) fCentZEMvsZDC = fHtempZEMvsZDC->GetBinContent(fHtempZEMvsZDC->FindBin(zem1Energy+zem2Energy,zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1284
1285   if(fHtempNPA) fCentNPA = fHtempNPA->GetBinContent(fHtempNPA->FindBin(Npart));
1286   if(fHtempV0Mtrue) fCentV0Mtrue = fHtempV0Mtrue->GetBinContent(fHtempV0Mtrue->FindBin((multV0ACorr+multV0CCorr)));
1287   if(fHtempV0Atrue) fCentV0Atrue = fHtempV0Atrue->GetBinContent(fHtempV0Atrue->FindBin((multV0ACorr)));
1288   if(fHtempV0Ctrue) fCentV0Ctrue = fHtempV0Ctrue->GetBinContent(fHtempV0Ctrue->FindBin((multV0CCorr)));
1289   if(fHtempFMDtrue) fCentFMDtrue = fHtempFMDtrue->GetBinContent(fHtempFMDtrue->FindBin((multFMDA+multFMDC)));
1290   if(fHtempTRKtrue) fCentTRKtrue = fHtempTRKtrue->GetBinContent(fHtempTRKtrue->FindBin(nTracks));
1291   if(fHtempTKLtrue) fCentTKLtrue = fHtempTKLtrue->GetBinContent(fHtempTKLtrue->FindBin(nTracklets));
1292   if(fHtempCL0true) fCentCL0true = fHtempCL0true->GetBinContent(fHtempCL0true->FindBin(nClusters[0]));
1293   if(fHtempCL1true) fCentCL1true = fHtempCL1true->GetBinContent(fHtempCL1true->FindBin(spdCorr));
1294   if(fHtempCNDtrue) fCentCNDtrue = fHtempCNDtrue->GetBinContent(fHtempCNDtrue->FindBin(multCND));
1295   if(fHtempZNAtrue) fCentZNAtrue = fHtempZNAtrue->GetBinContent(fHtempZNAtrue->FindBin(znaTower));
1296    
1297
1298
1299   // ***** Cleaning
1300   if (fUseCleaning) {
1301     fQuality=0;
1302     
1303     // ***** vertex
1304     if (TMath::Abs(zvtx)>fZVCut || zvtxNcont<1) fQuality += 1;   
1305
1306     // ***** outliers, skip in case of MC input
1307     if (!fIsMCInput) {
1308       // **** V0 vs SPD
1309       if (IsOutlierV0MSPD(spdCorr, v0Corr, int(fCentV0M))) fQuality  += 2;
1310       // ***** V0 vs TPC
1311       if (IsOutlierV0MTPC(nTracks, v0Corr, int(fCentV0M))) fQuality  += 4;
1312       // ***** V0 vs ZDC
1313       if (IsOutlierV0MZDC((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
1314           (zdcEnergyCal==kFALSE) ) fQuality  += 8;
1315       if (IsOutlierV0MZDCECal((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
1316           (zdcEnergyCal==kTRUE) ) fQuality  += 8;
1317     }
1318   } else {
1319     fQuality = 0;
1320   }
1321
1322       
1323   if (esdCent) {
1324     esdCent->SetQuality(fQuality);
1325     esdCent->SetCentralityV0M(fCentV0M);
1326     esdCent->SetCentralityV0A(fCentV0A);
1327     esdCent->SetCentralityV0C(fCentV0C);
1328     esdCent->SetCentralityFMD(fCentFMD);
1329     esdCent->SetCentralityTRK(fCentTRK);
1330     esdCent->SetCentralityTKL(fCentTKL);
1331     esdCent->SetCentralityCL0(fCentCL0);
1332     esdCent->SetCentralityCL1(fCentCL1);
1333     esdCent->SetCentralityCND(fCentCND);
1334     esdCent->SetCentralityNPA(fCentNPA);
1335     esdCent->SetCentralityZNA(fCentZNA);
1336     esdCent->SetCentralityV0MvsFMD(fCentV0MvsFMD);
1337     esdCent->SetCentralityTKLvsV0M(fCentTKLvsV0M);
1338     esdCent->SetCentralityZEMvsZDC(fCentZEMvsZDC);
1339   }
1340
1341   // filling QA histograms
1342   if (fFillHistos) {    
1343
1344     if (fIsMCInput) { // fill histo with true centrality for simulations
1345       fCentV0M = fCentV0Mtrue;        
1346       fCentV0A = fCentV0Atrue;        
1347       fCentV0C = fCentV0Ctrue;        
1348       fCentFMD = fCentFMDtrue;        
1349       fCentTRK = fCentTRKtrue;        
1350       fCentTKL = fCentTKLtrue;        
1351       fCentCL0 = fCentCL0true;        
1352       fCentCL1 = fCentCL1true;        
1353       fCentCND = fCentCNDtrue;        
1354       fCentZNA = fCentZNAtrue;        
1355     }
1356
1357
1358     if ((fMB) && (abs(zvtx)<10))        fHOutMultCL1vsTKL->Fill(spdCorr,nTracklets);
1359
1360     if (fCVHN)   fHOutCentV0MCVHN->Fill(fCentV0M);
1361     if (fCVLN)   fHOutCentV0MCVLN->Fill(fCentV0M);
1362     if (fCCENT)  fHOutCentV0MCCENT->Fill(fCentV0M);
1363     if (fCSEMI)  fHOutCentV0MCSEMI->Fill(fCentV0M);
1364     if (fMSL) fHOutCentV0MMSL->Fill(fCentV0M);
1365     if (fMSH) fHOutCentV0MMSH->Fill(fCentV0M);
1366     if (fMUL) fHOutCentV0MMUL->Fill(fCentV0M);
1367     if (fMLL) fHOutCentV0MMLL->Fill(fCentV0M);
1368     if (fEJE) fHOutCentV0MEJE->Fill(fCentV0M);
1369     if (fEGA) fHOutCentV0MEGA->Fill(fCentV0M);
1370     if (fPHS) fHOutCentV0MPHS->Fill(fCentV0M);
1371
1372     if (((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB) && (runType==0)) ||
1373         ((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kINT7) && (runType==1))) { // fill the QA histograms only for MB events!
1374       
1375       fHOutQuality->Fill(fQuality);
1376       fHOutVertex->Fill(zvtx);
1377       fHOutVertexT0->Fill(zvtxT0);
1378       
1379       if (fQuality==0) {  
1380         fHOutCentV0M->Fill(fCentV0M);
1381         fHOutCentV0A->Fill(fCentV0A);
1382         fHOutCentV0C->Fill(fCentV0C);
1383         
1384         if (fCVHNbit)  fHOutCentV0MCVHNinMB->Fill(fCentV0M);
1385         if (fCVLNbit)  fHOutCentV0MCVLNinMB->Fill(fCentV0M);
1386         if (fCCENTbit) fHOutCentV0MCCENTinMB->Fill(fCentV0M);
1387         if (fCSEMIbit) fHOutCentV0MCSEMIinMB->Fill(fCentV0M);
1388         if (fMSL) fHOutCentV0MMSLinMB->Fill(fCentV0M);
1389         if (fMSH) fHOutCentV0MMSHinMB->Fill(fCentV0M);
1390         if (fMUL) fHOutCentV0MMULinMB->Fill(fCentV0M);
1391         if (fMLL) fHOutCentV0MMLLinMB->Fill(fCentV0M);
1392         if (fEJE) fHOutCentV0MEJEinMB->Fill(fCentV0M);
1393         if (fEGA) fHOutCentV0MEGAinMB->Fill(fCentV0M);
1394         if (fPHS) fHOutCentV0MPHSinMB->Fill(fCentV0M);
1395         
1396         fHOutCentFMD->Fill(fCentFMD);
1397         fHOutCentTRK->Fill(fCentTRK);
1398         fHOutCentTKL->Fill(fCentTKL);
1399         fHOutCentCL0->Fill(fCentCL0);
1400         fHOutCentCL1->Fill(fCentCL1);
1401         fHOutCentCND->Fill(fCentCND);
1402         fHOutCentNPA->Fill(fCentNPA);
1403         fHOutCentZNA->Fill(fCentZNA);
1404         fHOutCentV0MvsFMD->Fill(fCentV0MvsFMD);
1405         fHOutCentTKLvsV0M->Fill(fCentTKLvsV0M);
1406         fHOutCentZEMvsZDC->Fill(fCentZEMvsZDC);
1407         fHOutCentV0MvsCentCL1->Fill(fCentV0M,fCentCL1);
1408         fHOutCentV0MvsCentTRK->Fill(fCentV0M,fCentTRK);
1409         fHOutCentTRKvsCentCL1->Fill(fCentTRK,fCentCL1);
1410         fHOutCentV0MvsCentZDC->Fill(fCentV0M,fCentZEMvsZDC);
1411         fHOutCentV0AvsCentV0C->Fill(fCentV0A,fCentV0C);
1412         fHOutCentV0AvsCentTRK->Fill(fCentV0A,fCentTRK);
1413         fHOutCentV0AvsCentCND->Fill(fCentV0A,fCentCND);
1414         fHOutCentV0AvsCentCL1->Fill(fCentV0A,fCentCL1);
1415         fHOutCentV0CvsCentTRK->Fill(fCentV0C,fCentTRK);
1416         fHOutCentV0CvsCentCND->Fill(fCentV0C,fCentCND);
1417         fHOutCentV0CvsCentCL1->Fill(fCentV0C,fCentCL1);
1418         fHOutCentNPAvsCentV0A->Fill(fCentNPA,fCentV0A);
1419         fHOutCentNPAvsCentV0C->Fill(fCentNPA,fCentV0C);
1420         fHOutCentNPAvsCentTRK->Fill(fCentNPA,fCentTRK);
1421         fHOutCentNPAvsCentCND->Fill(fCentNPA,fCentCND);
1422         fHOutCentNPAvsCentCL1->Fill(fCentNPA,fCentCL1);
1423         fHOutCentZNAvsCentV0A->Fill(fCentZNA,fCentV0A);
1424         fHOutCentZNAvsCentV0C->Fill(fCentZNA,fCentV0C);
1425         fHOutCentZNAvsCentTRK->Fill(fCentZNA,fCentTRK);
1426         fHOutCentZNAvsCentCND->Fill(fCentZNA,fCentCND);
1427         fHOutCentZNAvsCentCL1->Fill(fCentZNA,fCentCL1);
1428
1429         fHOutMultV0AC->Fill(multV0A,multV0C);
1430         fHOutMultV0M->Fill(multV0ACorr+multV0CCorr);
1431         fHOutMultV0A->Fill(multV0ACorr);
1432         fHOutMultV0C->Fill(multV0CCorr);
1433         fHOutMultV0Mnc->Fill(multV0A+multV0C);
1434         fHOutMultV0Anc->Fill(multV0A);
1435         fHOutMultV0Cnc->Fill(multV0C);
1436         fHOutMultV0O->Fill(multV0AOnline+multV0COnline);
1437         fHOutMultV0Cells->Fill(nV0A,nV0C); 
1438         fHOutMultFMD->Fill(multFMDA+multFMDC);
1439         fHOutMultTRK->Fill(nTracks);
1440         fHOutMultTKL->Fill(nTracklets);
1441         fHOutMultCL0->Fill(nClusters[0]);
1442         fHOutMultCL1->Fill(spdCorr);
1443         fHOutMultCND->Fill(multCND);
1444         fHOutMultNPA->Fill(Npart);
1445         fHOutMultZNA->Fill(znaTower);
1446
1447         fHOutMultV0MvsZDN->Fill(v0Corr,(zncEnergy+znaEnergy));
1448         fHOutMultZEMvsZDN->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy));
1449         fHOutMultV0MvsZDC->Fill(v0Corr,(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1450         fHOutMultZEMvsZDC->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1451         fHOutMultZEMvsZDCw->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy),fCentV0M);
1452         fHOutMultV0MvsCL1->Fill(v0Corr,spdCorr);
1453         fHOutMultV0MvsTRK->Fill(v0Corr,nTracks);
1454         fHOutMultTRKvsCL1->Fill(nTracks,spdCorr);
1455         fHOutMultV0MvsV0O->Fill(v0Corr,(multV0AOnline+multV0COnline));
1456         fHOutMultV0OvsCL1->Fill((multV0AOnline+multV0COnline),spdCorr);
1457         fHOutMultV0OvsTRK->Fill((multV0AOnline+multV0COnline),nTracks);
1458       } else if (fQuality%2 == 0) {
1459         fHOutCentV0Mqual1->Fill(fCentV0M);
1460         fHOutCentTRKqual1->Fill(fCentTRK);
1461         fHOutCentCL1qual1->Fill(fCentCL1);
1462         fHOutMultV0MvsCL1qual1->Fill(v0Corr,spdCorr);
1463         fHOutMultV0MvsTRKqual1->Fill(v0Corr,nTracks);
1464         fHOutMultTRKvsCL1qual1->Fill(nTracks,spdCorr);
1465       } else {
1466         fHOutCentV0Mqual2->Fill(fCentV0M);
1467         fHOutCentTRKqual2->Fill(fCentTRK);
1468         fHOutCentCL1qual2->Fill(fCentCL1);
1469         fHOutMultV0MvsCL1qual2->Fill(v0Corr,spdCorr);
1470         fHOutMultV0MvsTRKqual2->Fill(v0Corr,nTracks);
1471         fHOutMultTRKvsCL1qual2->Fill(nTracks,spdCorr);
1472       }
1473     }
1474     PostData(1, fOutputList); 
1475   }
1476 }
1477 //________________________________________________________________________
1478 void AliCentralitySelectionTask::Terminate(Option_t */*option*/)
1479 {
1480   // Terminate analysis
1481 }
1482 //________________________________________________________________________
1483 Int_t AliCentralitySelectionTask::SetupRun(const AliESDEvent* const esd)
1484 {
1485   // Setup files for run
1486
1487   if (!esd)
1488     return -1;
1489
1490   // check if something to be done
1491   if (fCurrentRun == esd->GetRunNumber())
1492     return 0;
1493   else
1494     fCurrentRun = esd->GetRunNumber();
1495
1496   TString fileName =(Form("%s/COMMON/CENTRALITY/data/centrality.root", AliAnalysisManager::GetOADBPath()));
1497   AliInfo(Form("Setup Centrality Selection for run %d with file %s\n",fCurrentRun,fileName.Data()));
1498
1499   AliOADBContainer *con = new AliOADBContainer("OADB");
1500   con->InitFromFile(fileName,"Centrality");
1501
1502   AliOADBCentrality*  centOADB = 0;
1503   centOADB = (AliOADBCentrality*)(con->GetObject(fCurrentRun));
1504   if (!centOADB) {
1505     AliWarning(Form("Centrality OADB does not exist for run %d, using Default \n",fCurrentRun ));
1506     centOADB  = (AliOADBCentrality*)(con->GetDefaultObject("oadbDefault"));
1507   }
1508
1509   Bool_t isHijing=kFALSE;
1510   Bool_t isDpmjet=kFALSE;
1511   AliAnalysisManager* anMan = AliAnalysisManager::GetAnalysisManager();
1512   AliMCEventHandler* eventHandler = (AliMCEventHandler*)anMan->GetMCtruthEventHandler();
1513   AliMCEvent*  mcEvent=0;
1514   if (fIsMCInput && eventHandler && (mcEvent=eventHandler->MCEvent()) ) {     
1515     AliGenEventHeader* mcGenH = mcEvent->GenEventHeader();
1516     if (mcGenH->InheritsFrom(AliGenHijingEventHeader::Class())) isHijing=kTRUE;
1517     else if (mcGenH->InheritsFrom(AliGenCocktailEventHeader::Class())) isHijing=kTRUE;
1518     else if (mcGenH->InheritsFrom(AliGenDPMjetEventHeader::Class())) isDpmjet=kTRUE;
1519   }
1520
1521
1522   // modes
1523   fUseScaling   = centOADB->UseScaling();
1524   fUseCleaning  = centOADB->UseCleaning();
1525
1526   // cuts
1527   fZVCut        = centOADB->ZVCut();
1528   fOutliersCut  = centOADB->OutliersCut(); 
1529
1530   // centrality histos
1531   fHtempV0M       = centOADB->V0hist(); 
1532   fHtempV0A       = centOADB->V0Ahist(); 
1533   fHtempV0C       = centOADB->V0Chist(); 
1534   fHtempTRK       = centOADB->TPChist();
1535   fHtempCL1       = centOADB->SPDhist();
1536   fHtempCND       = centOADB->CNDhist();
1537   fHtempFMD       = centOADB->FMDhist();
1538   fHtempZNA       = centOADB->ZNAhist();
1539   fHtempZEMvsZDC  = centOADB->ZEMvsZDChist();
1540
1541   if (isHijing) {       
1542     fHtempNPA           = centOADB->NPAhist();
1543     fHtempV0Mtrue       = centOADB->V0histtrue(); 
1544     fHtempV0Atrue       = centOADB->V0Ahisttrue(); 
1545     fHtempV0Ctrue       = centOADB->V0Chisttrue(); 
1546     fHtempTRKtrue       = centOADB->TPChisttrue();
1547     fHtempCL1true       = centOADB->SPDhisttrue();
1548     fHtempCNDtrue       = centOADB->CNDhisttrue();
1549     fHtempFMDtrue       = centOADB->FMDhisttrue();
1550     fHtempZNAtrue       = centOADB->ZNAhisttrue();
1551   }   else if (isDpmjet)   {
1552     fHtempNPA           = centOADB->NPAhistDPM();
1553     fHtempV0Mtrue       = centOADB->V0histtrueDPM(); 
1554     fHtempV0Atrue       = centOADB->V0AhisttrueDPM(); 
1555     fHtempV0Ctrue       = centOADB->V0ChisttrueDPM(); 
1556     fHtempTRKtrue       = centOADB->TPChisttrueDPM();
1557     fHtempCL1true       = centOADB->SPDhisttrueDPM();
1558     fHtempCNDtrue       = centOADB->CNDhisttrueDPM();
1559     fHtempFMDtrue       = centOADB->FMDhisttrueDPM();
1560     fHtempZNAtrue       = centOADB->ZNAhisttrueDPM();
1561   }
1562
1563   TString path = gSystem->ExpandPathName(fileName.Data());
1564   if (!fHtempV0M) AliWarning(Form("Calibration for V0M does not exist in %s", path.Data()));
1565   if (!fHtempV0A) AliWarning(Form("Calibration for V0A does not exist in %s", path.Data()));
1566   if (!fHtempV0C) AliWarning(Form("Calibration for V0C does not exist in %s", path.Data()));
1567   if (!fHtempTRK) AliWarning(Form("Calibration for TRK does not exist in %s", path.Data()));
1568   if (!fHtempCL1) AliWarning(Form("Calibration for CL1 does not exist in %s", path.Data()));
1569   if (!fHtempCND) AliWarning(Form("Calibration for CND does not exist in %s", path.Data()));
1570   if (!fHtempZNA) AliWarning(Form("Calibration for ZNA does not exist in %s", path.Data()));
1571   if (!fHtempFMD) AliWarning(Form("Calibration for FMD does not exist in %s", path.Data()));
1572   if (!fHtempZEMvsZDC) AliWarning(Form("Calibration for ZEMvsZDC does not exist in %s", path.Data()));
1573   if (!fHtempNPA) AliWarning(Form("Calibration for NPA does not exist in %s", path.Data()));
1574
1575   if (!fHtempV0Mtrue) AliWarning(Form("Calibration for V0Mtrue does not exist in %s", path.Data()));
1576   if (!fHtempV0Atrue) AliWarning(Form("Calibration for V0Atrue does not exist in %s", path.Data()));
1577   if (!fHtempV0Ctrue) AliWarning(Form("Calibration for V0Ctrue does not exist in %s", path.Data()));
1578   if (!fHtempTRKtrue) AliWarning(Form("Calibration for TRKtrue does not exist in %s", path.Data()));
1579   if (!fHtempCL1true) AliWarning(Form("Calibration for CL1true does not exist in %s", path.Data()));
1580   if (!fHtempCNDtrue) AliWarning(Form("Calibration for CNDtrue does not exist in %s", path.Data()));
1581   if (!fHtempZNAtrue) AliWarning(Form("Calibration for ZNAtrue does not exist in %s", path.Data()));
1582   if (!fHtempFMDtrue) AliWarning(Form("Calibration for FMDtrue does not exist in %s", path.Data()));
1583
1584   // scale factors
1585   fV0MScaleFactor    = centOADB->V0MScaleFactor();
1586   fSPDScaleFactor    = centOADB->SPDScaleFactor();
1587   fTPCScaleFactor    = centOADB->TPCScaleFactor();
1588   fV0MScaleFactorMC  = centOADB->V0MScaleFactorMC();
1589
1590   // outliers parameters
1591   fV0MSPDOutlierPar0 = centOADB->V0MSPDOutlierPar0();      
1592   fV0MSPDOutlierPar1 = centOADB->V0MSPDOutlierPar1();     
1593   fV0MTPCOutlierPar0 = centOADB->V0MTPCOutlierPar0();      
1594   fV0MTPCOutlierPar1 = centOADB->V0MTPCOutlierPar1();     
1595                                                    
1596   fV0MSPDSigmaOutlierPar0 = centOADB->V0MSPDSigmaOutlierPar0(); 
1597   fV0MSPDSigmaOutlierPar1 = centOADB->V0MSPDSigmaOutlierPar1(); 
1598   fV0MSPDSigmaOutlierPar2 = centOADB->V0MSPDSigmaOutlierPar2();
1599   fV0MTPCSigmaOutlierPar0 = centOADB->V0MTPCSigmaOutlierPar0(); 
1600   fV0MTPCSigmaOutlierPar1 = centOADB->V0MTPCSigmaOutlierPar1(); 
1601   fV0MTPCSigmaOutlierPar2 = centOADB->V0MTPCSigmaOutlierPar2(); 
1602                             
1603   fV0MZDCOutlierPar0 =      centOADB->V0MZDCOutlierPar0();      
1604   fV0MZDCOutlierPar1 =      centOADB->V0MZDCOutlierPar1();      
1605   fV0MZDCEcalOutlierPar0 =  centOADB->V0MZDCEcalOutlierPar0();  
1606   fV0MZDCEcalOutlierPar1 =  centOADB->V0MZDCEcalOutlierPar1();  
1607
1608
1609
1610   return 0;
1611 }
1612
1613
1614
1615 //________________________________________________________________________
1616 Bool_t AliCentralitySelectionTask::IsOutlierV0MSPD(Float_t spd, Float_t v0, Int_t cent) const
1617 {
1618   // Clean outliers
1619   Float_t val = fV0MSPDOutlierPar0 +  fV0MSPDOutlierPar1 * v0;
1620   Float_t spdSigma = fV0MSPDSigmaOutlierPar0 + fV0MSPDSigmaOutlierPar1*cent + fV0MSPDSigmaOutlierPar2*cent*cent;
1621   if ( TMath::Abs(spd-val) > fOutliersCut*spdSigma ) 
1622     return kTRUE;
1623   else 
1624     return kFALSE;
1625 }
1626
1627 //________________________________________________________________________
1628 Bool_t AliCentralitySelectionTask::IsOutlierV0MTPC(Int_t tracks, Float_t v0, Int_t cent) const
1629 {
1630   // Clean outliers
1631   Float_t val = fV0MTPCOutlierPar0 +  fV0MTPCOutlierPar1 * v0;
1632   Float_t tpcSigma = fV0MTPCSigmaOutlierPar0 + fV0MTPCSigmaOutlierPar1*cent + fV0MTPCSigmaOutlierPar2*cent*cent;
1633   if ( TMath::Abs(tracks-val) > fOutliersCut*tpcSigma ) 
1634     return kTRUE;
1635   else 
1636     return kFALSE;
1637 }
1638
1639 //________________________________________________________________________
1640 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDC(Float_t zdc, Float_t v0) const
1641 {
1642   // Clean outliers
1643   Float_t val = fV0MZDCOutlierPar0 + fV0MZDCOutlierPar1 * v0;
1644   if (zdc >  val) 
1645     return kTRUE;
1646   else 
1647   return kFALSE;
1648 }
1649
1650 //________________________________________________________________________
1651 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDCECal(Float_t zdc, Float_t v0) const
1652 {
1653   // Clean outliers
1654   Float_t val = fV0MZDCEcalOutlierPar0 + fV0MZDCEcalOutlierPar1 * v0;
1655   if (zdc >  val) 
1656     return kTRUE;
1657   else 
1658     return kFALSE;
1659 }
1660
1661