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