]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ANALYSIS/AliCentralitySelectionTask.cxx
Fix for true centrality estimator with hijing npart (Alberica)
[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       AliGenHijingEventHeader* hHijing=0;
1226       AliGenDPMjetEventHeader* dpmHeader=0;
1227       
1228       AliGenEventHeader* mcGenH = mcEvent->GenEventHeader();
1229       if (mcGenH->InheritsFrom(AliGenHijingEventHeader::Class())) 
1230         hHijing = (AliGenHijingEventHeader*)mcGenH;      
1231       else if (mcGenH->InheritsFrom(AliGenCocktailEventHeader::Class())) {
1232         TList* headers = ((AliGenCocktailEventHeader*)mcGenH)->GetHeaders();
1233         hHijing = dynamic_cast<AliGenHijingEventHeader*>(headers->FindObject("Hijing"));
1234         if (!hHijing) hHijing = dynamic_cast<AliGenHijingEventHeader*>(headers->FindObject("Hijing pPb_0"));
1235       }
1236       else if (mcGenH->InheritsFrom(AliGenDPMjetEventHeader::Class())) {
1237         dpmHeader = (AliGenDPMjetEventHeader*)mcGenH;
1238       }
1239       if(hHijing)   Npart = hHijing->ProjectileParticipants()+hHijing->TargetParticipants();
1240       if(dpmHeader) Npart = dpmHeader->ProjectileParticipants()+ dpmHeader->TargetParticipants();
1241     }
1242   }   
1243
1244   else if(fAnalysisInput.CompareTo("AOD")==0){
1245     //AliAODEvent *aod =  dynamic_cast<AliAODEvent*> (InputEvent());
1246     // to be implemented
1247     printf("  AOD analysis not yet implemented!!!\n\n");
1248     return;
1249   } 
1250
1251   // ***** Scaling for MC
1252   if (fIsMCInput) {
1253     fUseScaling=kFALSE;
1254     v0Corr  = Short_t((multV0A+multV0C)  * fV0MScaleFactorMC);
1255     multV0A  = multV0A * fV0MScaleFactorMC;
1256     multV0C  = multV0C * fV0MScaleFactorMC;
1257   }
1258   // ***** Scaling for Data 
1259   if (fUseScaling) {
1260     v0Corr  = Short_t(v0Corr /   fV0MScaleFactor);
1261     spdCorr = spdCorr / fSPDScaleFactor;
1262     nTracks = Int_t(nTracks /   fTPCScaleFactor);
1263   }
1264
1265   // ***** Centrality Selection
1266   if(fHtempV0M) fCentV0M = fHtempV0M->GetBinContent(fHtempV0M->FindBin((v0Corr)));
1267   if(fHtempV0A) fCentV0A = fHtempV0A->GetBinContent(fHtempV0A->FindBin((multV0ACorr)));
1268   if(fHtempV0C) fCentV0C = fHtempV0C->GetBinContent(fHtempV0C->FindBin((multV0CCorr)));
1269   if(fHtempFMD) fCentFMD = fHtempFMD->GetBinContent(fHtempFMD->FindBin((multFMDA+multFMDC)));
1270   if(fHtempTRK) fCentTRK = fHtempTRK->GetBinContent(fHtempTRK->FindBin(nTracks));
1271   if(fHtempTKL) fCentTKL = fHtempTKL->GetBinContent(fHtempTKL->FindBin(nTracklets));
1272   if(fHtempCL0) fCentCL0 = fHtempCL0->GetBinContent(fHtempCL0->FindBin(nClusters[0]));
1273   if(fHtempCL1) fCentCL1 = fHtempCL1->GetBinContent(fHtempCL1->FindBin(spdCorr));
1274   if(fHtempCND) fCentCND = fHtempCND->GetBinContent(fHtempCND->FindBin(multCND));
1275   if(fHtempZNA) {
1276     if(znaFired) fCentZNA = fHtempZNA->GetBinContent(fHtempZNA->FindBin(znaTower));
1277     else fCentZNA = 101;
1278   }
1279   if(fHtempV0MvsFMD) fCentV0MvsFMD = fHtempV0MvsFMD->GetBinContent(fHtempV0MvsFMD->FindBin((multV0A+multV0C)));
1280   if(fHtempTKLvsV0M) fCentTKLvsV0M = fHtempTKLvsV0M->GetBinContent(fHtempTKLvsV0M->FindBin(nTracklets));
1281   if(fHtempZEMvsZDC) fCentZEMvsZDC = fHtempZEMvsZDC->GetBinContent(fHtempZEMvsZDC->FindBin(zem1Energy+zem2Energy,zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1282
1283   if(fHtempNPA) fCentNPA = fHtempNPA->GetBinContent(fHtempNPA->FindBin(Npart));
1284   if(fHtempV0Mtrue) fCentV0Mtrue = fHtempV0Mtrue->GetBinContent(fHtempV0Mtrue->FindBin((multV0ACorr+multV0CCorr)));
1285   if(fHtempV0Atrue) fCentV0Atrue = fHtempV0Atrue->GetBinContent(fHtempV0Atrue->FindBin((multV0ACorr)));
1286   if(fHtempV0Ctrue) fCentV0Ctrue = fHtempV0Ctrue->GetBinContent(fHtempV0Ctrue->FindBin((multV0CCorr)));
1287   if(fHtempFMDtrue) fCentFMDtrue = fHtempFMDtrue->GetBinContent(fHtempFMDtrue->FindBin((multFMDA+multFMDC)));
1288   if(fHtempTRKtrue) fCentTRKtrue = fHtempTRKtrue->GetBinContent(fHtempTRKtrue->FindBin(nTracks));
1289   if(fHtempTKLtrue) fCentTKLtrue = fHtempTKLtrue->GetBinContent(fHtempTKLtrue->FindBin(nTracklets));
1290   if(fHtempCL0true) fCentCL0true = fHtempCL0true->GetBinContent(fHtempCL0true->FindBin(nClusters[0]));
1291   if(fHtempCL1true) fCentCL1true = fHtempCL1true->GetBinContent(fHtempCL1true->FindBin(spdCorr));
1292   if(fHtempCNDtrue) fCentCNDtrue = fHtempCNDtrue->GetBinContent(fHtempCNDtrue->FindBin(multCND));
1293   if(fHtempZNAtrue) fCentZNAtrue = fHtempZNAtrue->GetBinContent(fHtempZNAtrue->FindBin(znaTower));
1294    
1295
1296
1297   // ***** Cleaning
1298   if (fUseCleaning) {
1299     fQuality=0;
1300     
1301     // ***** vertex
1302     if (TMath::Abs(zvtx)>fZVCut || zvtxNcont<1) fQuality += 1;   
1303
1304     // ***** outliers, skip in case of MC input
1305     if (!fIsMCInput) {
1306       // **** V0 vs SPD
1307       if (IsOutlierV0MSPD(spdCorr, v0Corr, int(fCentV0M))) fQuality  += 2;
1308       // ***** V0 vs TPC
1309       if (IsOutlierV0MTPC(nTracks, v0Corr, int(fCentV0M))) fQuality  += 4;
1310       // ***** V0 vs ZDC
1311       if (IsOutlierV0MZDC((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
1312           (zdcEnergyCal==kFALSE) ) fQuality  += 8;
1313       if (IsOutlierV0MZDCECal((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
1314           (zdcEnergyCal==kTRUE) ) fQuality  += 8;
1315     }
1316   } else {
1317     fQuality = 0;
1318   }
1319
1320       
1321   if (esdCent) {
1322     esdCent->SetQuality(fQuality);
1323     esdCent->SetCentralityV0M(fCentV0M);
1324     esdCent->SetCentralityV0A(fCentV0A);
1325     esdCent->SetCentralityV0C(fCentV0C);
1326     esdCent->SetCentralityFMD(fCentFMD);
1327     esdCent->SetCentralityTRK(fCentTRK);
1328     esdCent->SetCentralityTKL(fCentTKL);
1329     esdCent->SetCentralityCL0(fCentCL0);
1330     esdCent->SetCentralityCL1(fCentCL1);
1331     esdCent->SetCentralityCND(fCentCND);
1332     esdCent->SetCentralityNPA(fCentNPA);
1333     esdCent->SetCentralityZNA(fCentZNA);
1334     esdCent->SetCentralityV0MvsFMD(fCentV0MvsFMD);
1335     esdCent->SetCentralityTKLvsV0M(fCentTKLvsV0M);
1336     esdCent->SetCentralityZEMvsZDC(fCentZEMvsZDC);
1337   }
1338
1339   // filling QA histograms
1340   if (fFillHistos) {    
1341
1342     if (fIsMCInput) { // fill histo with true centrality for simulations
1343       fCentV0M = fCentV0Mtrue;        
1344       fCentV0A = fCentV0Atrue;        
1345       fCentV0C = fCentV0Ctrue;        
1346       fCentFMD = fCentFMDtrue;        
1347       fCentTRK = fCentTRKtrue;        
1348       fCentTKL = fCentTKLtrue;        
1349       fCentCL0 = fCentCL0true;        
1350       fCentCL1 = fCentCL1true;        
1351       fCentCND = fCentCNDtrue;        
1352       fCentZNA = fCentZNAtrue;        
1353     }
1354
1355
1356     if ((fMB) && (abs(zvtx)<10))        fHOutMultCL1vsTKL->Fill(spdCorr,nTracklets);
1357
1358     if (fCVHN)   fHOutCentV0MCVHN->Fill(fCentV0M);
1359     if (fCVLN)   fHOutCentV0MCVLN->Fill(fCentV0M);
1360     if (fCCENT)  fHOutCentV0MCCENT->Fill(fCentV0M);
1361     if (fCSEMI)  fHOutCentV0MCSEMI->Fill(fCentV0M);
1362     if (fMSL) fHOutCentV0MMSL->Fill(fCentV0M);
1363     if (fMSH) fHOutCentV0MMSH->Fill(fCentV0M);
1364     if (fMUL) fHOutCentV0MMUL->Fill(fCentV0M);
1365     if (fMLL) fHOutCentV0MMLL->Fill(fCentV0M);
1366     if (fEJE) fHOutCentV0MEJE->Fill(fCentV0M);
1367     if (fEGA) fHOutCentV0MEGA->Fill(fCentV0M);
1368     if (fPHS) fHOutCentV0MPHS->Fill(fCentV0M);
1369
1370     if (((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB) && (runType==0)) ||
1371         ((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kINT7) && (runType==1))) { // fill the QA histograms only for MB events!
1372       
1373       fHOutQuality->Fill(fQuality);
1374       fHOutVertex->Fill(zvtx);
1375       fHOutVertexT0->Fill(zvtxT0);
1376       
1377       if (fQuality==0) {  
1378         fHOutCentV0M->Fill(fCentV0M);
1379         fHOutCentV0A->Fill(fCentV0A);
1380         fHOutCentV0C->Fill(fCentV0C);
1381         
1382         if (fCVHNbit)  fHOutCentV0MCVHNinMB->Fill(fCentV0M);
1383         if (fCVLNbit)  fHOutCentV0MCVLNinMB->Fill(fCentV0M);
1384         if (fCCENTbit) fHOutCentV0MCCENTinMB->Fill(fCentV0M);
1385         if (fCSEMIbit) fHOutCentV0MCSEMIinMB->Fill(fCentV0M);
1386         if (fMSL) fHOutCentV0MMSLinMB->Fill(fCentV0M);
1387         if (fMSH) fHOutCentV0MMSHinMB->Fill(fCentV0M);
1388         if (fMUL) fHOutCentV0MMULinMB->Fill(fCentV0M);
1389         if (fMLL) fHOutCentV0MMLLinMB->Fill(fCentV0M);
1390         if (fEJE) fHOutCentV0MEJEinMB->Fill(fCentV0M);
1391         if (fEGA) fHOutCentV0MEGAinMB->Fill(fCentV0M);
1392         if (fPHS) fHOutCentV0MPHSinMB->Fill(fCentV0M);
1393         
1394         fHOutCentFMD->Fill(fCentFMD);
1395         fHOutCentTRK->Fill(fCentTRK);
1396         fHOutCentTKL->Fill(fCentTKL);
1397         fHOutCentCL0->Fill(fCentCL0);
1398         fHOutCentCL1->Fill(fCentCL1);
1399         fHOutCentCND->Fill(fCentCND);
1400         fHOutCentNPA->Fill(fCentNPA);
1401         fHOutCentZNA->Fill(fCentZNA);
1402         fHOutCentV0MvsFMD->Fill(fCentV0MvsFMD);
1403         fHOutCentTKLvsV0M->Fill(fCentTKLvsV0M);
1404         fHOutCentZEMvsZDC->Fill(fCentZEMvsZDC);
1405         fHOutCentV0MvsCentCL1->Fill(fCentV0M,fCentCL1);
1406         fHOutCentV0MvsCentTRK->Fill(fCentV0M,fCentTRK);
1407         fHOutCentTRKvsCentCL1->Fill(fCentTRK,fCentCL1);
1408         fHOutCentV0MvsCentZDC->Fill(fCentV0M,fCentZEMvsZDC);
1409         fHOutCentV0AvsCentV0C->Fill(fCentV0A,fCentV0C);
1410         fHOutCentV0AvsCentTRK->Fill(fCentV0A,fCentTRK);
1411         fHOutCentV0AvsCentCND->Fill(fCentV0A,fCentCND);
1412         fHOutCentV0AvsCentCL1->Fill(fCentV0A,fCentCL1);
1413         fHOutCentV0CvsCentTRK->Fill(fCentV0C,fCentTRK);
1414         fHOutCentV0CvsCentCND->Fill(fCentV0C,fCentCND);
1415         fHOutCentV0CvsCentCL1->Fill(fCentV0C,fCentCL1);
1416         fHOutCentNPAvsCentV0A->Fill(fCentNPA,fCentV0A);
1417         fHOutCentNPAvsCentV0C->Fill(fCentNPA,fCentV0C);
1418         fHOutCentNPAvsCentTRK->Fill(fCentNPA,fCentTRK);
1419         fHOutCentNPAvsCentCND->Fill(fCentNPA,fCentCND);
1420         fHOutCentNPAvsCentCL1->Fill(fCentNPA,fCentCL1);
1421         fHOutCentZNAvsCentV0A->Fill(fCentZNA,fCentV0A);
1422         fHOutCentZNAvsCentV0C->Fill(fCentZNA,fCentV0C);
1423         fHOutCentZNAvsCentTRK->Fill(fCentZNA,fCentTRK);
1424         fHOutCentZNAvsCentCND->Fill(fCentZNA,fCentCND);
1425         fHOutCentZNAvsCentCL1->Fill(fCentZNA,fCentCL1);
1426
1427         fHOutMultV0AC->Fill(multV0A,multV0C);
1428         fHOutMultV0M->Fill(multV0ACorr+multV0CCorr);
1429         fHOutMultV0A->Fill(multV0ACorr);
1430         fHOutMultV0C->Fill(multV0CCorr);
1431         fHOutMultV0Mnc->Fill(multV0A+multV0C);
1432         fHOutMultV0Anc->Fill(multV0A);
1433         fHOutMultV0Cnc->Fill(multV0C);
1434         fHOutMultV0O->Fill(multV0AOnline+multV0COnline);
1435         fHOutMultV0Cells->Fill(nV0A,nV0C); 
1436         fHOutMultFMD->Fill(multFMDA+multFMDC);
1437         fHOutMultTRK->Fill(nTracks);
1438         fHOutMultTKL->Fill(nTracklets);
1439         fHOutMultCL0->Fill(nClusters[0]);
1440         fHOutMultCL1->Fill(spdCorr);
1441         fHOutMultCND->Fill(multCND);
1442         fHOutMultNPA->Fill(Npart);
1443         fHOutMultZNA->Fill(znaTower);
1444
1445         fHOutMultV0MvsZDN->Fill(v0Corr,(zncEnergy+znaEnergy));
1446         fHOutMultZEMvsZDN->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy));
1447         fHOutMultV0MvsZDC->Fill(v0Corr,(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1448         fHOutMultZEMvsZDC->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1449         fHOutMultZEMvsZDCw->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy),fCentV0M);
1450         fHOutMultV0MvsCL1->Fill(v0Corr,spdCorr);
1451         fHOutMultV0MvsTRK->Fill(v0Corr,nTracks);
1452         fHOutMultTRKvsCL1->Fill(nTracks,spdCorr);
1453         fHOutMultV0MvsV0O->Fill(v0Corr,(multV0AOnline+multV0COnline));
1454         fHOutMultV0OvsCL1->Fill((multV0AOnline+multV0COnline),spdCorr);
1455         fHOutMultV0OvsTRK->Fill((multV0AOnline+multV0COnline),nTracks);
1456       } else if (fQuality%2 == 0) {
1457         fHOutCentV0Mqual1->Fill(fCentV0M);
1458         fHOutCentTRKqual1->Fill(fCentTRK);
1459         fHOutCentCL1qual1->Fill(fCentCL1);
1460         fHOutMultV0MvsCL1qual1->Fill(v0Corr,spdCorr);
1461         fHOutMultV0MvsTRKqual1->Fill(v0Corr,nTracks);
1462         fHOutMultTRKvsCL1qual1->Fill(nTracks,spdCorr);
1463       } else {
1464         fHOutCentV0Mqual2->Fill(fCentV0M);
1465         fHOutCentTRKqual2->Fill(fCentTRK);
1466         fHOutCentCL1qual2->Fill(fCentCL1);
1467         fHOutMultV0MvsCL1qual2->Fill(v0Corr,spdCorr);
1468         fHOutMultV0MvsTRKqual2->Fill(v0Corr,nTracks);
1469         fHOutMultTRKvsCL1qual2->Fill(nTracks,spdCorr);
1470       }
1471     }
1472     PostData(1, fOutputList); 
1473   }
1474 }
1475 //________________________________________________________________________
1476 void AliCentralitySelectionTask::Terminate(Option_t */*option*/)
1477 {
1478   // Terminate analysis
1479 }
1480 //________________________________________________________________________
1481 Int_t AliCentralitySelectionTask::SetupRun(const AliESDEvent* const esd)
1482 {
1483   // Setup files for run
1484
1485   if (!esd)
1486     return -1;
1487
1488   // check if something to be done
1489   if (fCurrentRun == esd->GetRunNumber())
1490     return 0;
1491   else
1492     fCurrentRun = esd->GetRunNumber();
1493
1494   TString fileName =(Form("%s/COMMON/CENTRALITY/data/centrality.root", AliAnalysisManager::GetOADBPath()));
1495   AliInfo(Form("Setup Centrality Selection for run %d with file %s\n",fCurrentRun,fileName.Data()));
1496
1497   AliOADBContainer *con = new AliOADBContainer("OADB");
1498   con->InitFromFile(fileName,"Centrality");
1499
1500   AliOADBCentrality*  centOADB = 0;
1501   centOADB = (AliOADBCentrality*)(con->GetObject(fCurrentRun));
1502   if (!centOADB) {
1503     AliWarning(Form("Centrality OADB does not exist for run %d, using Default \n",fCurrentRun ));
1504     centOADB  = (AliOADBCentrality*)(con->GetDefaultObject("oadbDefault"));
1505   }
1506
1507   Bool_t isHijing=kFALSE;
1508   Bool_t isDpmjet=kFALSE;
1509   AliAnalysisManager* anMan = AliAnalysisManager::GetAnalysisManager();
1510   AliMCEventHandler* eventHandler = (AliMCEventHandler*)anMan->GetMCtruthEventHandler();
1511   AliMCEvent*  mcEvent=0;
1512   if (fIsMCInput && eventHandler && (mcEvent=eventHandler->MCEvent()) ) {     
1513     AliGenEventHeader* mcGenH = mcEvent->GenEventHeader();
1514     if (mcGenH->InheritsFrom(AliGenHijingEventHeader::Class())) isHijing=kTRUE;
1515     else if (mcGenH->InheritsFrom(AliGenCocktailEventHeader::Class())) isHijing=kTRUE;
1516     else if (mcGenH->InheritsFrom(AliGenDPMjetEventHeader::Class())) isDpmjet=kTRUE;
1517   }
1518
1519
1520   // modes
1521   fUseScaling   = centOADB->UseScaling();
1522   fUseCleaning  = centOADB->UseCleaning();
1523
1524   // cuts
1525   fZVCut        = centOADB->ZVCut();
1526   fOutliersCut  = centOADB->OutliersCut(); 
1527
1528   // centrality histos
1529   fHtempV0M       = centOADB->V0hist(); 
1530   fHtempV0A       = centOADB->V0Ahist(); 
1531   fHtempV0C       = centOADB->V0Chist(); 
1532   fHtempTRK       = centOADB->TPChist();
1533   fHtempCL1       = centOADB->SPDhist();
1534   fHtempCND       = centOADB->CNDhist();
1535   fHtempFMD       = centOADB->FMDhist();
1536   fHtempZNA       = centOADB->ZNAhist();
1537   fHtempZEMvsZDC  = centOADB->ZEMvsZDChist();
1538
1539   if (isHijing) {       
1540     fHtempNPA           = centOADB->NPAhist();
1541     fHtempV0Mtrue       = centOADB->V0histtrue(); 
1542     fHtempV0Atrue       = centOADB->V0Ahisttrue(); 
1543     fHtempV0Ctrue       = centOADB->V0Chisttrue(); 
1544     fHtempTRKtrue       = centOADB->TPChisttrue();
1545     fHtempCL1true       = centOADB->SPDhisttrue();
1546     fHtempCNDtrue       = centOADB->CNDhisttrue();
1547     fHtempFMDtrue       = centOADB->FMDhisttrue();
1548     fHtempZNAtrue       = centOADB->ZNAhisttrue();
1549   }   else if (isDpmjet)   {
1550     fHtempNPA           = centOADB->NPAhistDPM();
1551     fHtempV0Mtrue       = centOADB->V0histtrueDPM(); 
1552     fHtempV0Atrue       = centOADB->V0AhisttrueDPM(); 
1553     fHtempV0Ctrue       = centOADB->V0ChisttrueDPM(); 
1554     fHtempTRKtrue       = centOADB->TPChisttrueDPM();
1555     fHtempCL1true       = centOADB->SPDhisttrueDPM();
1556     fHtempCNDtrue       = centOADB->CNDhisttrueDPM();
1557     fHtempFMDtrue       = centOADB->FMDhisttrueDPM();
1558     fHtempZNAtrue       = centOADB->ZNAhisttrueDPM();
1559   }
1560
1561   TString path = gSystem->ExpandPathName(fileName.Data());
1562   if (!fHtempV0M) AliWarning(Form("Calibration for V0M does not exist in %s", path.Data()));
1563   if (!fHtempV0A) AliWarning(Form("Calibration for V0A does not exist in %s", path.Data()));
1564   if (!fHtempV0C) AliWarning(Form("Calibration for V0C does not exist in %s", path.Data()));
1565   if (!fHtempTRK) AliWarning(Form("Calibration for TRK does not exist in %s", path.Data()));
1566   if (!fHtempCL1) AliWarning(Form("Calibration for CL1 does not exist in %s", path.Data()));
1567   if (!fHtempCND) AliWarning(Form("Calibration for CND does not exist in %s", path.Data()));
1568   if (!fHtempZNA) AliWarning(Form("Calibration for ZNA does not exist in %s", path.Data()));
1569   if (!fHtempFMD) AliWarning(Form("Calibration for FMD does not exist in %s", path.Data()));
1570   if (!fHtempZEMvsZDC) AliWarning(Form("Calibration for ZEMvsZDC does not exist in %s", path.Data()));
1571   if (!fHtempNPA) AliWarning(Form("Calibration for NPA does not exist in %s", path.Data()));
1572
1573   if (!fHtempV0Mtrue) AliWarning(Form("Calibration for V0Mtrue does not exist in %s", path.Data()));
1574   if (!fHtempV0Atrue) AliWarning(Form("Calibration for V0Atrue does not exist in %s", path.Data()));
1575   if (!fHtempV0Ctrue) AliWarning(Form("Calibration for V0Ctrue does not exist in %s", path.Data()));
1576   if (!fHtempTRKtrue) AliWarning(Form("Calibration for TRKtrue does not exist in %s", path.Data()));
1577   if (!fHtempCL1true) AliWarning(Form("Calibration for CL1true does not exist in %s", path.Data()));
1578   if (!fHtempCNDtrue) AliWarning(Form("Calibration for CNDtrue does not exist in %s", path.Data()));
1579   if (!fHtempZNAtrue) AliWarning(Form("Calibration for ZNAtrue does not exist in %s", path.Data()));
1580   if (!fHtempFMDtrue) AliWarning(Form("Calibration for FMDtrue does not exist in %s", path.Data()));
1581
1582   // scale factors
1583   fV0MScaleFactor    = centOADB->V0MScaleFactor();
1584   fSPDScaleFactor    = centOADB->SPDScaleFactor();
1585   fTPCScaleFactor    = centOADB->TPCScaleFactor();
1586   fV0MScaleFactorMC  = centOADB->V0MScaleFactorMC();
1587
1588   // outliers parameters
1589   fV0MSPDOutlierPar0 = centOADB->V0MSPDOutlierPar0();      
1590   fV0MSPDOutlierPar1 = centOADB->V0MSPDOutlierPar1();     
1591   fV0MTPCOutlierPar0 = centOADB->V0MTPCOutlierPar0();      
1592   fV0MTPCOutlierPar1 = centOADB->V0MTPCOutlierPar1();     
1593                                                    
1594   fV0MSPDSigmaOutlierPar0 = centOADB->V0MSPDSigmaOutlierPar0(); 
1595   fV0MSPDSigmaOutlierPar1 = centOADB->V0MSPDSigmaOutlierPar1(); 
1596   fV0MSPDSigmaOutlierPar2 = centOADB->V0MSPDSigmaOutlierPar2();
1597   fV0MTPCSigmaOutlierPar0 = centOADB->V0MTPCSigmaOutlierPar0(); 
1598   fV0MTPCSigmaOutlierPar1 = centOADB->V0MTPCSigmaOutlierPar1(); 
1599   fV0MTPCSigmaOutlierPar2 = centOADB->V0MTPCSigmaOutlierPar2(); 
1600                             
1601   fV0MZDCOutlierPar0 =      centOADB->V0MZDCOutlierPar0();      
1602   fV0MZDCOutlierPar1 =      centOADB->V0MZDCOutlierPar1();      
1603   fV0MZDCEcalOutlierPar0 =  centOADB->V0MZDCEcalOutlierPar0();  
1604   fV0MZDCEcalOutlierPar1 =  centOADB->V0MZDCEcalOutlierPar1();  
1605
1606
1607
1608   return 0;
1609 }
1610
1611
1612
1613 //________________________________________________________________________
1614 Bool_t AliCentralitySelectionTask::IsOutlierV0MSPD(Float_t spd, Float_t v0, Int_t cent) const
1615 {
1616   // Clean outliers
1617   Float_t val = fV0MSPDOutlierPar0 +  fV0MSPDOutlierPar1 * v0;
1618   Float_t spdSigma = fV0MSPDSigmaOutlierPar0 + fV0MSPDSigmaOutlierPar1*cent + fV0MSPDSigmaOutlierPar2*cent*cent;
1619   if ( TMath::Abs(spd-val) > fOutliersCut*spdSigma ) 
1620     return kTRUE;
1621   else 
1622     return kFALSE;
1623 }
1624
1625 //________________________________________________________________________
1626 Bool_t AliCentralitySelectionTask::IsOutlierV0MTPC(Int_t tracks, Float_t v0, Int_t cent) const
1627 {
1628   // Clean outliers
1629   Float_t val = fV0MTPCOutlierPar0 +  fV0MTPCOutlierPar1 * v0;
1630   Float_t tpcSigma = fV0MTPCSigmaOutlierPar0 + fV0MTPCSigmaOutlierPar1*cent + fV0MTPCSigmaOutlierPar2*cent*cent;
1631   if ( TMath::Abs(tracks-val) > fOutliersCut*tpcSigma ) 
1632     return kTRUE;
1633   else 
1634     return kFALSE;
1635 }
1636
1637 //________________________________________________________________________
1638 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDC(Float_t zdc, Float_t v0) const
1639 {
1640   // Clean outliers
1641   Float_t val = fV0MZDCOutlierPar0 + fV0MZDCOutlierPar1 * v0;
1642   if (zdc >  val) 
1643     return kTRUE;
1644   else 
1645   return kFALSE;
1646 }
1647
1648 //________________________________________________________________________
1649 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDCECal(Float_t zdc, Float_t v0) const
1650 {
1651   // Clean outliers
1652   Float_t val = fV0MZDCEcalOutlierPar0 + fV0MZDCEcalOutlierPar1 * v0;
1653   if (zdc >  val) 
1654     return kTRUE;
1655   else 
1656     return kFALSE;
1657 }
1658
1659