]> git.uio.no Git - u/mrichter/AliRoot.git/blob - OADB/AliCentralitySelectionTask.cxx
Split: HLT/JET -> HLTANALYSIS/JET
[u/mrichter/AliRoot.git] / OADB / 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 = dynamic_cast<AliAODTrack*>(aod->GetTrack(iTracks));
1473       if(!track) AliFatal("Not a standard AOD");
1474
1475       if (!track) continue;
1476       if (!track->TestFilterBit(1<<5) && 
1477           !track->TestFilterBit(1<<6)) continue;
1478
1479       if (track->Pt() > 0.4 && TMath::Abs(track->Eta()) < 0.9)  nTrTPCcandle++;
1480     }
1481     multCND = nTrTPCcandle;
1482   }
1483
1484   if (esd) {
1485     const AliMultiplicity *mult = esd->GetMultiplicity();
1486     nTracklets = mult->GetNumberOfTracklets();
1487
1488     for(Int_t ilay=0; ilay<6; ilay++){
1489       nClusters[ilay] = mult->GetNumberOfITSClusters(ilay);
1490     }
1491
1492     for(Int_t ilay=0; ilay<2; ilay++){
1493       nChips[ilay] = mult->GetNumberOfFiredChips(ilay);
1494     }
1495   } else {
1496     AliAODTracklets *mult = aod->GetTracklets();
1497     nTracklets = mult->GetNumberOfTracklets();
1498     AliAODHeader *h = dynamic_cast<AliAODHeader*>(aod->GetHeader());
1499     if(!h) AliFatal("Not a standard AOD");
1500     for(Int_t ilay=0; ilay<6; ilay++){
1501       nClusters[ilay] = h->GetNumberOfITSClusters(ilay);
1502     }
1503   }
1504   spdCorr = AliESDUtils::GetCorrSPD2(nClusters[1],zvtx);
1505   
1506   if (esd) {
1507     // ***** FMD info
1508     AliESDFMD *fmd = esd->GetFMDData();
1509     Float_t totalMultA = 0;
1510     Float_t totalMultC = 0;
1511     const Float_t fFMDLowCut = 0.4;
1512   
1513     for(UShort_t det=1;det<=3;det++) {
1514       Int_t nRings = (det==1 ? 1 : 2);
1515       for (UShort_t ir = 0; ir < nRings; ir++) {          
1516         Char_t   ring = (ir == 0 ? 'I' : 'O');
1517         UShort_t nsec = (ir == 0 ? 20  : 40);
1518         UShort_t nstr = (ir == 0 ? 512 : 256);
1519         for(UShort_t sec =0; sec < nsec;  sec++)  {
1520           for(UShort_t strip = 0; strip < nstr; strip++) {
1521             
1522             Float_t fmdMult = fmd->Multiplicity(det,ring,sec,strip);
1523             if(fmdMult == 0 || fmdMult == AliESDFMD::kInvalidMult) continue;
1524             
1525             Float_t nParticles=0;
1526             
1527             if(fmdMult > fFMDLowCut) {
1528               nParticles = 1.;
1529             }
1530             
1531             if (det<3) totalMultA = totalMultA + nParticles;
1532             else totalMultC = totalMultC + nParticles;
1533             
1534           }
1535         }
1536       }
1537     }
1538     multFMDA = totalMultA;
1539     multFMDC = totalMultC;
1540   }
1541
1542   if (esd) {
1543     // ***** ZDC info
1544     AliESDZDC *esdZDC = esd->GetESDZDC();
1545     zdcEnergyCal = esdZDC->AliESDZDC::TestBit(AliESDZDC::kEnergyCalibratedSignal);
1546     if (zdcEnergyCal) {      
1547       zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy());
1548       zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy());
1549       znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy());
1550       zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy());
1551     } else {
1552       zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy())/8.;
1553       zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy())/8.;
1554       znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy())/8.;
1555       zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy())/8.;
1556     }
1557     zem1Energy = (Float_t) (esdZDC->GetZDCEMEnergy(0))/8.;
1558     zem2Energy = (Float_t) (esdZDC->GetZDCEMEnergy(1))/8.;
1559
1560     for (Int_t j = 0; j < 4; ++j) 
1561       if (esdZDC->GetZDCTDCData(12,j) != 0) 
1562         znaFired = kTRUE;
1563     
1564     for (Int_t j = 0; j < 4; ++j) 
1565       if (esdZDC->GetZDCTDCData(10,j) != 0) 
1566         zncFired = kTRUE;   
1567
1568     for (Int_t j = 0; j < 4; ++j) 
1569       if (esdZDC->GetZDCTDCData(13,j) != 0) 
1570         zpaFired = kTRUE;
1571     
1572     for (Int_t j = 0; j < 4; ++j) 
1573       if (esdZDC->GetZDCTDCData(11,j) != 0) 
1574         zpcFired = kTRUE;   
1575
1576     const Double_t *ZNAtower = esdZDC->GetZN2TowerEnergy(); 
1577     const Double_t *ZNCtower = esdZDC->GetZN1TowerEnergy();
1578     const Double_t *ZPAtower = esdZDC->GetZP2TowerEnergy(); 
1579     const Double_t *ZPCtower = esdZDC->GetZP1TowerEnergy();
1580     if (znaFired) znaTower = ZNAtower[0];
1581     if (zncFired) zncTower = ZNCtower[0];
1582     if (zpaFired) zpaTower = ZPAtower[0];
1583     if (zpcFired) zpcTower = ZPCtower[0];
1584
1585   } else {
1586     AliAODHeader *h = dynamic_cast<AliAODHeader*>(aod->GetHeader());
1587     if(!h) AliFatal("Not a standard AOD");
1588     zncEnergy  = (Float_t) (h->GetZDCN1Energy());
1589     zpcEnergy  = (Float_t) (h->GetZDCP1Energy());
1590     znaEnergy  = (Float_t) (h->GetZDCN2Energy());
1591     zpaEnergy  = (Float_t) (h->GetZDCP2Energy());
1592     zem1Energy = (Float_t) (h->GetZDCEMEnergy(0))/8.; //Todo: C.L. Should we devide here by 8? It is done in the ESD case!
1593     zem2Energy = (Float_t) (h->GetZDCEMEnergy(1))/8.;
1594
1595     AliAODZDC *aodZDC = aod->GetZDCData();
1596     const Double_t *ZNAtower = aodZDC->GetZNATowerEnergy(); 
1597     const Double_t *ZNCtower = aodZDC->GetZNCTowerEnergy();
1598     const Double_t *ZPAtower = aodZDC->GetZPATowerEnergy(); 
1599     const Double_t *ZPCtower = aodZDC->GetZPCTowerEnergy();
1600     znaTower = ZNAtower[0];
1601     zncTower = ZNCtower[0];
1602     zpaTower = ZPAtower[0];
1603     zpcTower = ZPCtower[0];
1604
1605     znaFired = kFALSE; // trick because info is not stored in AOD
1606     zncFired = kFALSE; // trick because info is not stored in AOD
1607     zpaFired = kFALSE; // trick because info is not stored in AOD
1608     zpcFired = kFALSE; // trick because info is not stored in AOD
1609     if (esdCent->GetCentralityPercentile("ZNA") != 101) znaFired = kTRUE;
1610     if (esdCent->GetCentralityPercentile("ZNC") != 101) zncFired = kTRUE;
1611     if (esdCent->GetCentralityPercentile("ZPA") != 101) zpaFired = kTRUE;
1612     if (esdCent->GetCentralityPercentile("ZPC") != 101) zpcFired = kTRUE;
1613   }
1614
1615   if (esd) {
1616     // ***** MC info
1617     AliAnalysisManager* anMan = AliAnalysisManager::GetAnalysisManager();
1618     AliMCEventHandler* eventHandler = (AliMCEventHandler*)anMan->GetMCtruthEventHandler();
1619     AliStack*    stack=0;
1620     AliMCEvent*  mcEvent=0;
1621     if (fIsMCInput && eventHandler && (mcEvent=eventHandler->MCEvent()) && (stack=mcEvent->Stack())) {
1622       AliGenHijingEventHeader* hHijing=0;
1623       AliGenDPMjetEventHeader* dpmHeader=0;
1624       
1625       AliGenEventHeader* mcGenH = mcEvent->GenEventHeader();
1626       if (mcGenH->InheritsFrom(AliGenHijingEventHeader::Class())) 
1627         hHijing = (AliGenHijingEventHeader*)mcGenH;      
1628       else if (mcGenH->InheritsFrom(AliGenCocktailEventHeader::Class())) {
1629         TList* headers = ((AliGenCocktailEventHeader*)mcGenH)->GetHeaders();
1630         //headers->Print();
1631         hHijing = dynamic_cast<AliGenHijingEventHeader*>(headers->FindObject("Hijing"));
1632         if (!hHijing) hHijing = dynamic_cast<AliGenHijingEventHeader*>(headers->FindObject("Hijing pPb_0"));
1633         if (!hHijing) hHijing = dynamic_cast<AliGenHijingEventHeader*>(headers->FindObject("Hijing_0"));
1634       }
1635       else if (mcGenH->InheritsFrom(AliGenDPMjetEventHeader::Class())) {
1636         dpmHeader = (AliGenDPMjetEventHeader*)mcGenH;
1637       }
1638       if(hHijing)   Npart = hHijing->ProjectileParticipants()+hHijing->TargetParticipants();
1639       if(dpmHeader) Npart = dpmHeader->ProjectileParticipants()+ dpmHeader->TargetParticipants();
1640     }
1641   } 
1642
1643   // ***** Scaling for MC
1644   if (fIsMCInput) {
1645     fUseScaling=kFALSE;
1646     v0Corr   = Short_t((multV0A+multV0C)  * fV0MScaleFactorMC);
1647     multV0A0 = multV0A0 * fV0MScaleFactorMC;
1648     multV0A  = multV0A * fV0MScaleFactorMC;
1649     multV0C  = multV0C * fV0MScaleFactorMC;
1650   }
1651   // ***** Scaling for Data 
1652   if (fUseScaling) {
1653     v0Corr  = Short_t(v0Corr /   fV0MScaleFactor);
1654     spdCorr = spdCorr / fSPDScaleFactor;
1655     nTracks = Int_t(nTracks /   fTPCScaleFactor);
1656   }
1657
1658   // ***** Centrality Selection
1659   if(fHtempV0M) fCentV0M = fHtempV0M->GetBinContent(fHtempV0M->FindBin((v0Corr)));
1660   if(fHtempV0A) fCentV0A = fHtempV0A->GetBinContent(fHtempV0A->FindBin((multV0ACorr)));
1661   if(fHtempV0A0) fCentV0A0 = fHtempV0A0->GetBinContent(fHtempV0A0->FindBin((multV0A0Corr)));
1662   if(fHtempV0A123) fCentV0A123 = fHtempV0A123->GetBinContent(fHtempV0A123->FindBin((multV0A123Corr)));
1663   if(fHtempV0C) fCentV0C = fHtempV0C->GetBinContent(fHtempV0C->FindBin((multV0CCorr)));
1664   if(fHtempV0A23) fCentV0A23 = fHtempV0A23->GetBinContent(fHtempV0A23->FindBin((multV0A23Corr)));
1665   if(fHtempV0C01) fCentV0C01 = fHtempV0C01->GetBinContent(fHtempV0C01->FindBin((multV0C01Corr)));
1666   if(fHtempV0S)  fCentV0S = fHtempV0S->GetBinContent(fHtempV0S->FindBin((multV0SCorr)));
1667   if(fHtempV0MEq) fCentV0MEq = fHtempV0MEq->GetBinContent(fHtempV0MEq->FindBin((multV0AEq+multV0CEq)));
1668   if(fHtempV0AEq) fCentV0AEq = fHtempV0AEq->GetBinContent(fHtempV0AEq->FindBin((multV0AEq)));
1669   if(fHtempV0CEq) fCentV0CEq = fHtempV0CEq->GetBinContent(fHtempV0CEq->FindBin((multV0CEq)));
1670   if(fHtempFMD) fCentFMD = fHtempFMD->GetBinContent(fHtempFMD->FindBin((multFMDA+multFMDC)));
1671   if(fHtempTRK) fCentTRK = fHtempTRK->GetBinContent(fHtempTRK->FindBin(nTracks));
1672   if(fHtempTKL) fCentTKL = fHtempTKL->GetBinContent(fHtempTKL->FindBin(nTracklets));
1673   if(fHtempCL0) fCentCL0 = fHtempCL0->GetBinContent(fHtempCL0->FindBin(nClusters[0]));
1674   if(fHtempCL1) fCentCL1 = fHtempCL1->GetBinContent(fHtempCL1->FindBin(spdCorr));
1675   if(fHtempCND) fCentCND = fHtempCND->GetBinContent(fHtempCND->FindBin(multCND));
1676   if(fHtempZNA) {
1677     if(znaFired) fCentZNA = fHtempZNA->GetBinContent(fHtempZNA->FindBin(znaTower));
1678     else fCentZNA = 101;
1679   }
1680   if(fHtempZNC) {
1681     if(zncFired) fCentZNC = fHtempZNC->GetBinContent(fHtempZNC->FindBin(zncTower));
1682     else fCentZNC = 101;
1683   }
1684   if(fHtempZPA) {
1685     if(znaFired) fCentZPA = fHtempZPA->GetBinContent(fHtempZPA->FindBin(zpaTower));
1686     else fCentZPA = 101;
1687   }
1688   if(fHtempZPC) {
1689     if(zpcFired) fCentZPC = fHtempZPC->GetBinContent(fHtempZPC->FindBin(zpcTower));
1690     else fCentZPC = 101;
1691   }
1692
1693
1694   if(fHtempV0MvsFMD) fCentV0MvsFMD = fHtempV0MvsFMD->GetBinContent(fHtempV0MvsFMD->FindBin((multV0A+multV0C)));
1695   if(fHtempTKLvsV0M) fCentTKLvsV0M = fHtempTKLvsV0M->GetBinContent(fHtempTKLvsV0M->FindBin(nTracklets));
1696   if(fHtempZEMvsZDC) fCentZEMvsZDC = fHtempZEMvsZDC->GetBinContent(fHtempZEMvsZDC->FindBin(zem1Energy+zem2Energy,zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1697
1698   if(fHtempNPA) fCentNPA = fHtempNPA->GetBinContent(fHtempNPA->FindBin(Npart));
1699   if(fHtempV0Mtrue) fCentV0Mtrue = fHtempV0Mtrue->GetBinContent(fHtempV0Mtrue->FindBin((multV0ACorr+multV0CCorr)));
1700   if(fHtempV0Atrue) fCentV0Atrue = fHtempV0Atrue->GetBinContent(fHtempV0Atrue->FindBin((multV0ACorr)));
1701   if(fHtempV0Ctrue) fCentV0Ctrue = fHtempV0Ctrue->GetBinContent(fHtempV0Ctrue->FindBin((multV0CCorr)));
1702   if(fHtempV0MEqtrue) fCentV0MEqtrue = fHtempV0MEqtrue->GetBinContent(fHtempV0MEqtrue->FindBin((multV0AEq+multV0CEq)));
1703   if(fHtempV0AEqtrue) fCentV0AEqtrue = fHtempV0AEqtrue->GetBinContent(fHtempV0AEqtrue->FindBin((multV0AEq)));
1704   if(fHtempV0CEqtrue) fCentV0CEqtrue = fHtempV0CEqtrue->GetBinContent(fHtempV0CEqtrue->FindBin((multV0CEq)));
1705   if(fHtempFMDtrue) fCentFMDtrue = fHtempFMDtrue->GetBinContent(fHtempFMDtrue->FindBin((multFMDA+multFMDC)));
1706   if(fHtempTRKtrue) fCentTRKtrue = fHtempTRKtrue->GetBinContent(fHtempTRKtrue->FindBin(nTracks));
1707   if(fHtempTKLtrue) fCentTKLtrue = fHtempTKLtrue->GetBinContent(fHtempTKLtrue->FindBin(nTracklets));
1708   if(fHtempCL0true) fCentCL0true = fHtempCL0true->GetBinContent(fHtempCL0true->FindBin(nClusters[0]));
1709   if(fHtempCL1true) fCentCL1true = fHtempCL1true->GetBinContent(fHtempCL1true->FindBin(spdCorr));
1710   if(fHtempCNDtrue) fCentCNDtrue = fHtempCNDtrue->GetBinContent(fHtempCNDtrue->FindBin(multCND));
1711   if(fHtempZNAtrue) fCentZNAtrue = fHtempZNAtrue->GetBinContent(fHtempZNAtrue->FindBin(znaTower));
1712   if(fHtempZNCtrue) fCentZNCtrue = fHtempZNCtrue->GetBinContent(fHtempZNCtrue->FindBin(zncTower));
1713    
1714
1715   // ***** Cleaning
1716   if (fUseCleaning) {
1717     fQuality=0;
1718     
1719     // ***** vertex
1720     if (TMath::Abs(zvtx)>fZVCut || zvtxNcont<1) fQuality += 1;   
1721
1722     // ***** outliers, skip in case of MC input
1723     if (!fIsMCInput) {
1724       // **** V0 vs SPD
1725       if (IsOutlierV0MSPD(spdCorr, v0Corr, int(fCentV0M))) fQuality  += 2;
1726       // ***** V0 vs TPC
1727       if (IsOutlierV0MTPC(nTracks, v0Corr, int(fCentV0M))) fQuality  += 4;
1728       // ***** V0 vs ZDC
1729       if (IsOutlierV0MZDC((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
1730           (zdcEnergyCal==kFALSE) ) fQuality  += 8;
1731       if (IsOutlierV0MZDCECal((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
1732           (zdcEnergyCal==kTRUE) ) fQuality  += 8;
1733     }
1734   } else {
1735     fQuality = 0;
1736   }
1737
1738       
1739   if (esdCent) {
1740     if (aod&&(fDebug>1)) {
1741       Double_t v0m = esdCent->GetCentralityPercentile("V0M");
1742       Double_t cl1 = esdCent->GetCentralityPercentile("CL1");
1743       Double_t trk = esdCent->GetCentralityPercentile("TRK");
1744       Double_t cnd = esdCent->GetCentralityPercentile("CND");
1745       Double_t zna = esdCent->GetCentralityPercentile("ZNA");
1746       printf("AOD: v0m %.2f %.2f (%.2f) cl1 %.2f %.2f (%.2f) trk %.2f %.2f (%.2f) cnd %.2f %.2f (%.2f) zna %.2f %.2f (%.2f)\n", 
1747              v0m, fCentV0M, fCentV0M!=0?v0m/fCentV0M:1, cl1, fCentCL1, fCentCL1!=0?cl1/fCentCL1:1, trk, fCentTRK, 
1748              fCentTRK!=0?trk/fCentTRK:1, cnd, fCentCND, fCentCND!=0?cnd/fCentCND:1, zna, fCentZNA, fCentZNA!=0?zna/fCentZNA:1);
1749     }
1750     esdCent->SetQuality(fQuality);
1751     esdCent->SetCentralityV0M(fCentV0M);
1752     esdCent->SetCentralityV0A(fCentV0A);
1753     esdCent->SetCentralityV0A0(fCentV0A0);
1754     esdCent->SetCentralityV0A123(fCentV0A123);
1755     esdCent->SetCentralityV0C(fCentV0C);
1756     esdCent->SetCentralityV0A23(fCentV0A23);
1757     esdCent->SetCentralityV0C01(fCentV0C01);
1758     esdCent->SetCentralityV0S(fCentV0S);
1759     esdCent->SetCentralityV0MEq(fCentV0MEq);
1760     esdCent->SetCentralityV0AEq(fCentV0AEq);
1761     esdCent->SetCentralityV0CEq(fCentV0CEq);
1762     esdCent->SetCentralityFMD(fCentFMD);
1763     esdCent->SetCentralityTRK(fCentTRK);
1764     esdCent->SetCentralityTKL(fCentTKL);
1765     esdCent->SetCentralityCL0(fCentCL0);
1766     esdCent->SetCentralityCL1(fCentCL1);
1767     esdCent->SetCentralityCND(fCentCND);
1768     esdCent->SetCentralityNPA(fCentNPA);
1769     esdCent->SetCentralityZNA(fCentZNA);
1770     esdCent->SetCentralityZNC(fCentZNC);
1771     esdCent->SetCentralityZPA(fCentZPA);
1772     esdCent->SetCentralityZPC(fCentZPC);
1773     esdCent->SetCentralityV0MvsFMD(fCentV0MvsFMD);
1774     esdCent->SetCentralityTKLvsV0M(fCentTKLvsV0M);
1775     esdCent->SetCentralityZEMvsZDC(fCentZEMvsZDC);
1776   }
1777
1778   // filling QA histograms
1779   if (fFillHistos) {    
1780
1781     if (fIsMCInput) { // fill histo with true centrality for simulations
1782       fCentV0M = fCentV0Mtrue;        
1783       fCentV0A = fCentV0Atrue;        
1784       fCentV0C = fCentV0Ctrue;        
1785       fCentV0MEq = fCentV0MEqtrue;        
1786       fCentV0AEq = fCentV0AEqtrue;        
1787       fCentV0CEq = fCentV0CEqtrue;        
1788       fCentFMD = fCentFMDtrue;        
1789       fCentTRK = fCentTRKtrue;        
1790       fCentTKL = fCentTKLtrue;        
1791       fCentCL0 = fCentCL0true;        
1792       fCentCL1 = fCentCL1true;        
1793       fCentCND = fCentCNDtrue;        
1794       fCentZNA = fCentZNAtrue;        
1795       fCentZNC = fCentZNCtrue;        
1796       fCentZPA = fCentZPAtrue;        
1797       fCentZPC = fCentZPCtrue;        
1798     }
1799
1800
1801     if ((fMB) && (abs(zvtx)<10))        fHOutMultCL1vsTKL->Fill(spdCorr,nTracklets);
1802
1803     if (fCVHN)   fHOutCentV0MCVHN->Fill(fCentV0M);
1804     if (fCVLN)   fHOutCentV0MCVLN->Fill(fCentV0M);
1805     if (fCCENT)  fHOutCentV0MCCENT->Fill(fCentV0M);
1806     if (fCSEMI)  fHOutCentV0MCSEMI->Fill(fCentV0M);
1807     if (fMSL) fHOutCentV0MMSL->Fill(fCentV0M);
1808     if (fMSH) fHOutCentV0MMSH->Fill(fCentV0M);
1809     if (fMUL) fHOutCentV0MMUL->Fill(fCentV0M);
1810     if (fMLL) fHOutCentV0MMLL->Fill(fCentV0M);
1811     if (fEJE) fHOutCentV0MEJE->Fill(fCentV0M);
1812     if (fEGA) fHOutCentV0MEGA->Fill(fCentV0M);
1813     if (fPHS) fHOutCentV0MPHS->Fill(fCentV0M);
1814
1815     if (((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB) && (runType==0)) ||
1816         ((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kINT7) && (runType==1)) || 
1817         ((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB) && (runType==2)) ) { // fill the QA histograms only for MB events!
1818
1819       fHOutQuality->Fill(fQuality);
1820       fHOutVertex->Fill(zvtx);
1821       fHOutVertexT0->Fill(zvtxT0);
1822       
1823       if (fQuality==0) {  
1824         fHOutCentV0M->Fill(fCentV0M);
1825         fHOutCentV0A->Fill(fCentV0A);
1826         fHOutCentV0A0->Fill(fCentV0A0);
1827         fHOutCentV0A123->Fill(fCentV0A123);
1828         fHOutCentV0C->Fill(fCentV0C);
1829         fHOutCentV0A23->Fill(fCentV0A23);
1830         fHOutCentV0C01->Fill(fCentV0C01);
1831         fHOutCentV0S->Fill(fCentV0S);
1832         fHOutCentV0MEq->Fill(fCentV0MEq);
1833         fHOutCentV0AEq->Fill(fCentV0AEq);
1834         fHOutCentV0CEq->Fill(fCentV0CEq);
1835         
1836         if (fCVHNbit)  fHOutCentV0MCVHNinMB->Fill(fCentV0M);
1837         if (fCVLNbit)  fHOutCentV0MCVLNinMB->Fill(fCentV0M);
1838         if (fCCENTbit) fHOutCentV0MCCENTinMB->Fill(fCentV0M);
1839         if (fCSEMIbit) fHOutCentV0MCSEMIinMB->Fill(fCentV0M);
1840         if (fMSL) fHOutCentV0MMSLinMB->Fill(fCentV0M);
1841         if (fMSH) fHOutCentV0MMSHinMB->Fill(fCentV0M);
1842         if (fMUL) fHOutCentV0MMULinMB->Fill(fCentV0M);
1843         if (fMLL) fHOutCentV0MMLLinMB->Fill(fCentV0M);
1844         if (fEJE) fHOutCentV0MEJEinMB->Fill(fCentV0M);
1845         if (fEGA) fHOutCentV0MEGAinMB->Fill(fCentV0M);
1846         if (fPHS) fHOutCentV0MPHSinMB->Fill(fCentV0M);
1847         
1848         fHOutCentFMD->Fill(fCentFMD);
1849         fHOutCentTRK->Fill(fCentTRK);
1850         fHOutCentTKL->Fill(fCentTKL);
1851         fHOutCentCL0->Fill(fCentCL0);
1852         fHOutCentCL1->Fill(fCentCL1);
1853         fHOutCentCND->Fill(fCentCND);
1854         fHOutCentNPA->Fill(fCentNPA);
1855         fHOutCentZNA->Fill(fCentZNA);
1856         fHOutCentZNC->Fill(fCentZNC);
1857         fHOutCentZPA->Fill(fCentZPA);
1858         fHOutCentZPC->Fill(fCentZPC);
1859         fHOutCentV0MvsFMD->Fill(fCentV0MvsFMD);
1860         fHOutCentTKLvsV0M->Fill(fCentTKLvsV0M);
1861         fHOutCentZEMvsZDC->Fill(fCentZEMvsZDC);
1862         fHOutCentV0MvsCentCL1->Fill(fCentV0M,fCentCL1);
1863         fHOutCentV0MvsCentTRK->Fill(fCentV0M,fCentTRK);
1864         fHOutCentTRKvsCentCL1->Fill(fCentTRK,fCentCL1);
1865         fHOutCentV0MvsCentZDC->Fill(fCentV0M,fCentZEMvsZDC);
1866         fHOutCentV0AvsCentV0C->Fill(fCentV0A,fCentV0C);
1867         fHOutCentV0AvsCentTRK->Fill(fCentV0A,fCentTRK);
1868         fHOutCentV0AvsCentCND->Fill(fCentV0A,fCentCND);
1869         fHOutCentV0AvsCentCL1->Fill(fCentV0A,fCentCL1);
1870         fHOutCentV0CvsCentTRK->Fill(fCentV0C,fCentTRK);
1871         fHOutCentV0CvsCentCND->Fill(fCentV0C,fCentCND);
1872         fHOutCentV0CvsCentCL1->Fill(fCentV0C,fCentCL1);
1873         fHOutCentNPAvsCentV0A->Fill(fCentNPA,fCentV0A);
1874         fHOutCentNPAvsCentV0C->Fill(fCentNPA,fCentV0C);
1875         fHOutCentNPAvsCentTRK->Fill(fCentNPA,fCentTRK);
1876         fHOutCentNPAvsCentCND->Fill(fCentNPA,fCentCND);
1877         fHOutCentNPAvsCentCL1->Fill(fCentNPA,fCentCL1);
1878         fHOutCentZNAvsCentV0A->Fill(fCentZNA,fCentV0A);
1879         fHOutCentZNAvsCentV0C->Fill(fCentZNA,fCentV0C);
1880         fHOutCentZNAvsCentTRK->Fill(fCentZNA,fCentTRK);
1881         fHOutCentZNAvsCentCND->Fill(fCentZNA,fCentCND);
1882         fHOutCentZNAvsCentCL1->Fill(fCentZNA,fCentCL1);
1883         fHOutCentZNAvsCentZPA->Fill(fCentZNA,fCentZPA);
1884
1885         fHOutMultV0AC->Fill(multV0A,multV0C);
1886         fHOutMultV0M->Fill(multV0ACorr+multV0CCorr);
1887         fHOutMultV0A->Fill(multV0ACorr);
1888         fHOutMultV0A0->Fill(multV0A0Corr);
1889         fHOutMultV0A123->Fill(multV0A123Corr);
1890         fHOutMultV0C->Fill(multV0CCorr);
1891         fHOutMultV0A23->Fill(multV0A23Corr);
1892         fHOutMultV0C01->Fill(multV0C01Corr);
1893         fHOutMultV0S->Fill(multV0SCorr);
1894         fHOutMultV0MEq->Fill(multV0AEq+multV0CEq);
1895         fHOutMultV0AEq->Fill(multV0AEq);
1896         fHOutMultV0CEq->Fill(multV0CEq);
1897         fHOutMultV0Mnc->Fill(multV0A+multV0C);
1898         fHOutMultV0Anc->Fill(multV0A);
1899         fHOutMultV0Cnc->Fill(multV0C);
1900         fHOutMultV0O->Fill(multV0AOnline+multV0COnline);
1901         fHOutMultV0Cells->Fill(nV0A,nV0C); 
1902         fHOutMultFMD->Fill(multFMDA+multFMDC);
1903         fHOutMultTRK->Fill(nTracks);
1904         fHOutMultTKL->Fill(nTracklets);
1905         fHOutMultCL0->Fill(nClusters[0]);
1906         fHOutMultCL1->Fill(spdCorr);
1907         fHOutMultCND->Fill(multCND);
1908         fHOutMultNPA->Fill(Npart);
1909         if(znaFired)fHOutMultZNA->Fill(znaTower);
1910         if(zncFired)fHOutMultZNC->Fill(zncTower);
1911         if(zpaFired)fHOutMultZPA->Fill(zpaTower);
1912         if(zpcFired)fHOutMultZPC->Fill(zpcTower);
1913         fHOutMultZNAvsZPA->Fill(znaTower,zpaTower);
1914
1915         //fHOutMultV0MvsZDN->Fill(v0Corr,(zncEnergy+znaEnergy));
1916         fHOutMultV0MvsZDN->Fill(v0Corr,znaTower);
1917         fHOutMultZEMvsZDN->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy));
1918         fHOutMultV0MvsZDC->Fill(v0Corr,(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1919         fHOutMultZEMvsZDC->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1920         fHOutMultZEMvsZDCw->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy),fCentV0M);
1921         fHOutMultV0MvsCL1->Fill(v0Corr,spdCorr);
1922         fHOutMultV0MvsTRK->Fill(v0Corr,nTracks);
1923         fHOutMultTRKvsCL1->Fill(nTracks,spdCorr);
1924         fHOutMultV0MvsV0O->Fill(v0Corr,(multV0AOnline+multV0COnline));
1925         fHOutMultV0OvsCL1->Fill((multV0AOnline+multV0COnline),spdCorr);
1926         fHOutMultV0OvsTRK->Fill((multV0AOnline+multV0COnline),nTracks);
1927       } else if (fQuality%2 == 0) {
1928         fHOutCentV0Mqual1->Fill(fCentV0M);
1929         fHOutCentTRKqual1->Fill(fCentTRK);
1930         fHOutCentCL1qual1->Fill(fCentCL1);
1931         fHOutMultV0MvsCL1qual1->Fill(v0Corr,spdCorr);
1932         fHOutMultV0MvsTRKqual1->Fill(v0Corr,nTracks);
1933         fHOutMultTRKvsCL1qual1->Fill(nTracks,spdCorr);
1934       } else {
1935         fHOutCentV0Mqual2->Fill(fCentV0M);
1936         fHOutCentTRKqual2->Fill(fCentTRK);
1937         fHOutCentCL1qual2->Fill(fCentCL1);
1938         fHOutMultV0MvsCL1qual2->Fill(v0Corr,spdCorr);
1939         fHOutMultV0MvsTRKqual2->Fill(v0Corr,nTracks);
1940         fHOutMultTRKvsCL1qual2->Fill(nTracks,spdCorr);
1941       }
1942     }
1943     PostData(1, fOutputList); 
1944   }
1945 }
1946 //________________________________________________________________________
1947 void AliCentralitySelectionTask::Terminate(Option_t */*option*/)
1948 {
1949   // Terminate analysis
1950 }
1951 //________________________________________________________________________
1952 Int_t AliCentralitySelectionTask::SetupRun(const AliVEvent* const esd)
1953 {
1954   // Setup files for run
1955
1956   if (!esd)
1957     return -1;
1958
1959   // check if something to be done
1960   if (fCurrentRun == esd->GetRunNumber())
1961     return 0;
1962   else
1963     fCurrentRun = esd->GetRunNumber();
1964
1965   TString fileName =(Form("%s/COMMON/CENTRALITY/data/centrality.root", AliAnalysisManager::GetOADBPath()));
1966   AliInfo(Form("Setup Centrality Selection for run %d with file %s\n",fCurrentRun,fileName.Data()));
1967
1968   AliOADBContainer *con = new AliOADBContainer("OADB");
1969   con->InitFromFile(fileName,"Centrality");
1970
1971   AliOADBCentrality*  centOADB = 0;
1972   centOADB = (AliOADBCentrality*)(con->GetObject(fCurrentRun));
1973   if (!centOADB) {
1974     AliWarning(Form("Centrality OADB does not exist for run %d, using Default \n",fCurrentRun ));
1975     centOADB  = (AliOADBCentrality*)(con->GetDefaultObject("oadbDefault"));
1976   }
1977
1978   Bool_t isHijing=kFALSE;
1979   Bool_t isDpmjet=kFALSE;
1980   AliAnalysisManager* anMan = AliAnalysisManager::GetAnalysisManager();
1981   AliMCEventHandler* eventHandler = (AliMCEventHandler*)anMan->GetMCtruthEventHandler();
1982   AliMCEvent*  mcEvent=0;
1983   if (fIsMCInput && eventHandler && (mcEvent=eventHandler->MCEvent()) ) {     
1984     AliGenEventHeader* mcGenH = mcEvent->GenEventHeader();
1985     if (mcGenH->InheritsFrom(AliGenHijingEventHeader::Class())) isHijing=kTRUE;
1986     else if (mcGenH->InheritsFrom(AliGenCocktailEventHeader::Class())) isHijing=kTRUE;
1987     else if (mcGenH->InheritsFrom(AliGenDPMjetEventHeader::Class())) isDpmjet=kTRUE;
1988   }
1989
1990
1991   // modes
1992   fUseScaling   = centOADB->UseScaling();
1993   fUseCleaning  = centOADB->UseCleaning();
1994
1995   // cuts
1996   fZVCut        = centOADB->ZVCut();
1997   fOutliersCut  = centOADB->OutliersCut(); 
1998
1999   // centrality histos
2000   fHtempV0M       = centOADB->V0hist(); 
2001   fHtempV0A       = centOADB->V0Ahist(); 
2002   fHtempV0A0      = centOADB->V0A0hist(); 
2003   fHtempV0A123    = centOADB->V0A123hist(); 
2004   fHtempV0C       = centOADB->V0Chist(); 
2005   fHtempV0A23     = centOADB->V0A23hist(); 
2006   fHtempV0C01     = centOADB->V0C01hist(); 
2007   fHtempV0S       = centOADB->V0Shist(); 
2008   fHtempV0MEq     = centOADB->V0Eqhist(); 
2009   fHtempV0AEq     = centOADB->V0AEqhist(); 
2010   fHtempV0CEq     = centOADB->V0CEqhist(); 
2011   fHtempTRK       = centOADB->TPChist();
2012   fHtempCL1       = centOADB->SPDhist();
2013   fHtempCND       = centOADB->CNDhist();
2014   fHtempFMD       = centOADB->FMDhist();
2015   fHtempZNA       = centOADB->ZNAhist();
2016   fHtempZNC       = centOADB->ZNChist();
2017   fHtempZPA       = centOADB->ZPAhist();
2018   fHtempZPC       = centOADB->ZPChist();
2019   fHtempZEMvsZDC  = centOADB->ZEMvsZDChist();
2020
2021    if (isHijing) {       
2022      fHtempNPA           = centOADB->NPAhist();
2023      fHtempV0Mtrue       = centOADB->V0histtrue(); 
2024      fHtempV0Atrue       = centOADB->V0Ahisttrue(); 
2025      fHtempV0Ctrue       = centOADB->V0Chisttrue(); 
2026      fHtempV0MEqtrue     = centOADB->V0Eqhisttrue(); 
2027      fHtempV0AEqtrue     = centOADB->V0AEqhisttrue(); 
2028      fHtempV0CEqtrue     = centOADB->V0CEqhisttrue(); 
2029      fHtempTRKtrue       = centOADB->TPChisttrue();
2030      fHtempCL1true       = centOADB->SPDhisttrue();
2031      fHtempCNDtrue       = centOADB->CNDhisttrue();
2032      fHtempFMDtrue       = centOADB->FMDhisttrue();
2033      fHtempZNAtrue       = centOADB->ZNAhisttrue();
2034      fHtempZNCtrue       = centOADB->ZNChisttrue();
2035      fHtempZPAtrue       = centOADB->ZPAhisttrue();
2036      fHtempZPCtrue       = centOADB->ZPChisttrue();
2037    }   else if (isDpmjet)   {
2038      fHtempNPA           = centOADB->NPAhistDPM();
2039      fHtempV0Mtrue       = centOADB->V0histtrueDPM(); 
2040      fHtempV0Atrue       = centOADB->V0AhisttrueDPM(); 
2041      fHtempV0Ctrue       = centOADB->V0ChisttrueDPM(); 
2042      fHtempV0MEqtrue     = centOADB->V0EqhisttrueDPM(); 
2043      fHtempV0AEqtrue     = centOADB->V0AEqhisttrueDPM(); 
2044      fHtempV0CEqtrue     = centOADB->V0CEqhisttrueDPM(); 
2045      fHtempTRKtrue       = centOADB->TPChisttrueDPM();
2046      fHtempCL1true       = centOADB->SPDhisttrueDPM();
2047      fHtempCNDtrue       = centOADB->CNDhisttrueDPM();
2048      fHtempFMDtrue       = centOADB->FMDhisttrueDPM();
2049      fHtempZNAtrue       = centOADB->ZNAhisttrueDPM();
2050      fHtempZNCtrue       = centOADB->ZNChisttrueDPM();
2051      fHtempZPAtrue       = centOADB->ZPAhisttrueDPM();
2052      fHtempZPCtrue       = centOADB->ZPChisttrueDPM();
2053    }
2054
2055
2056     TString path = gSystem->ExpandPathName(fileName.Data());
2057   if (!fHtempV0M) AliWarning(Form("Calibration for V0M does not exist in %s", path.Data()));
2058   if (!fHtempV0A) AliWarning(Form("Calibration for V0A does not exist in %s", path.Data()));
2059   if (!fHtempV0C) AliWarning(Form("Calibration for V0C does not exist in %s", path.Data()));
2060   if (!fHtempV0A23) AliWarning(Form("Calibration for V0A23 does not exist in %s", path.Data()));
2061   if (!fHtempV0C01) AliWarning(Form("Calibration for V0C01 does not exist in %s", path.Data()));
2062   if (!fHtempV0S) AliWarning(Form("Calibration for V0S does not exist in %s", path.Data()));
2063   if (!fHtempV0MEq) AliWarning(Form("Calibration for V0MEq does not exist in %s", path.Data()));
2064   if (!fHtempV0AEq) AliWarning(Form("Calibration for V0AEq does not exist in %s", path.Data()));
2065   if (!fHtempV0CEq) AliWarning(Form("Calibration for V0CEq does not exist in %s", path.Data()));
2066   if (!fHtempTRK) AliWarning(Form("Calibration for TRK does not exist in %s", path.Data()));
2067   if (!fHtempCL1) AliWarning(Form("Calibration for CL1 does not exist in %s", path.Data()));
2068   if (!fHtempCND) AliWarning(Form("Calibration for CND does not exist in %s", path.Data()));
2069   if (!fHtempZNA) AliWarning(Form("Calibration for ZNA does not exist in %s", path.Data()));
2070   if (!fHtempZNC) AliWarning(Form("Calibration for ZNC does not exist in %s", path.Data()));
2071   if (!fHtempZPA) AliWarning(Form("Calibration for ZPA does not exist in %s", path.Data()));
2072   if (!fHtempZPC) AliWarning(Form("Calibration for ZPC does not exist in %s", path.Data()));
2073   if (!fHtempFMD) AliWarning(Form("Calibration for FMD does not exist in %s", path.Data()));
2074   if (!fHtempZEMvsZDC) AliWarning(Form("Calibration for ZEMvsZDC does not exist in %s", path.Data()));
2075   if (!fHtempNPA) AliWarning(Form("Calibration for NPA does not exist in %s", path.Data()));
2076
2077   if (!fHtempV0Mtrue) AliWarning(Form("Calibration for V0Mtrue does not exist in %s", path.Data()));
2078   if (!fHtempV0Atrue) AliWarning(Form("Calibration for V0Atrue does not exist in %s", path.Data()));
2079   if (!fHtempV0Ctrue) AliWarning(Form("Calibration for V0Ctrue does not exist in %s", path.Data()));
2080   if (!fHtempV0MEqtrue) AliWarning(Form("Calibration for V0MEqtrue does not exist in %s", path.Data()));
2081   if (!fHtempV0AEqtrue) AliWarning(Form("Calibration for V0AEqtrue does not exist in %s", path.Data()));
2082   if (!fHtempV0CEqtrue) AliWarning(Form("Calibration for V0CEqtrue does not exist in %s", path.Data()));
2083   if (!fHtempTRKtrue) AliWarning(Form("Calibration for TRKtrue does not exist in %s", path.Data()));
2084   if (!fHtempCL1true) AliWarning(Form("Calibration for CL1true does not exist in %s", path.Data()));
2085   if (!fHtempCNDtrue) AliWarning(Form("Calibration for CNDtrue does not exist in %s", path.Data()));
2086   if (!fHtempZNAtrue) AliWarning(Form("Calibration for ZNAtrue does not exist in %s", path.Data()));
2087   if (!fHtempZNCtrue) AliWarning(Form("Calibration for ZNCtrue does not exist in %s", path.Data()));
2088   if (!fHtempZPAtrue) AliWarning(Form("Calibration for ZPAtrue does not exist in %s", path.Data()));
2089   if (!fHtempZPCtrue) AliWarning(Form("Calibration for ZPCtrue does not exist in %s", path.Data()));
2090   if (!fHtempFMDtrue) AliWarning(Form("Calibration for FMDtrue does not exist in %s", path.Data()));
2091
2092
2093   // scale factors
2094   fV0MScaleFactor    = centOADB->V0MScaleFactor();
2095   fSPDScaleFactor    = centOADB->SPDScaleFactor();
2096   fTPCScaleFactor    = centOADB->TPCScaleFactor();
2097   fV0MScaleFactorMC  = centOADB->V0MScaleFactorMC();
2098
2099   // outliers parameters
2100   fV0MSPDOutlierPar0 = centOADB->V0MSPDOutlierPar0();      
2101   fV0MSPDOutlierPar1 = centOADB->V0MSPDOutlierPar1();     
2102   fV0MTPCOutlierPar0 = centOADB->V0MTPCOutlierPar0();      
2103   fV0MTPCOutlierPar1 = centOADB->V0MTPCOutlierPar1();     
2104                                                    
2105   fV0MSPDSigmaOutlierPar0 = centOADB->V0MSPDSigmaOutlierPar0(); 
2106   fV0MSPDSigmaOutlierPar1 = centOADB->V0MSPDSigmaOutlierPar1(); 
2107   fV0MSPDSigmaOutlierPar2 = centOADB->V0MSPDSigmaOutlierPar2();
2108   fV0MTPCSigmaOutlierPar0 = centOADB->V0MTPCSigmaOutlierPar0(); 
2109   fV0MTPCSigmaOutlierPar1 = centOADB->V0MTPCSigmaOutlierPar1(); 
2110   fV0MTPCSigmaOutlierPar2 = centOADB->V0MTPCSigmaOutlierPar2(); 
2111                             
2112   fV0MZDCOutlierPar0 =      centOADB->V0MZDCOutlierPar0();      
2113   fV0MZDCOutlierPar1 =      centOADB->V0MZDCOutlierPar1();      
2114   fV0MZDCEcalOutlierPar0 =  centOADB->V0MZDCEcalOutlierPar0();  
2115   fV0MZDCEcalOutlierPar1 =  centOADB->V0MZDCEcalOutlierPar1();  
2116
2117   return 0;
2118 }
2119
2120
2121
2122 //________________________________________________________________________
2123 Bool_t AliCentralitySelectionTask::IsOutlierV0MSPD(Float_t spd, Float_t v0, Int_t cent) const
2124 {
2125   // Clean outliers
2126   Float_t val = fV0MSPDOutlierPar0 +  fV0MSPDOutlierPar1 * v0;
2127   Float_t spdSigma = fV0MSPDSigmaOutlierPar0 + fV0MSPDSigmaOutlierPar1*cent + fV0MSPDSigmaOutlierPar2*cent*cent;
2128   if ( TMath::Abs(spd-val) > fOutliersCut*spdSigma ) 
2129     return kTRUE;
2130   else 
2131     return kFALSE;
2132 }
2133
2134 //________________________________________________________________________
2135 Bool_t AliCentralitySelectionTask::IsOutlierV0MTPC(Int_t tracks, Float_t v0, Int_t cent) const
2136 {
2137   // Clean outliers
2138   Float_t val = fV0MTPCOutlierPar0 +  fV0MTPCOutlierPar1 * v0;
2139   Float_t tpcSigma = fV0MTPCSigmaOutlierPar0 + fV0MTPCSigmaOutlierPar1*cent + fV0MTPCSigmaOutlierPar2*cent*cent;
2140   if ( TMath::Abs(tracks-val) > fOutliersCut*tpcSigma ) 
2141     return kTRUE;
2142   else 
2143     return kFALSE;
2144 }
2145
2146 //________________________________________________________________________
2147 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDC(Float_t zdc, Float_t v0) const
2148 {
2149   // Clean outliers
2150   Float_t val = fV0MZDCOutlierPar0 + fV0MZDCOutlierPar1 * v0;
2151   if (zdc >  val) 
2152     return kTRUE;
2153   else 
2154   return kFALSE;
2155 }
2156
2157 //________________________________________________________________________
2158 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDCECal(Float_t zdc, Float_t v0) const
2159 {
2160   // Clean outliers
2161   Float_t val = fV0MZDCEcalOutlierPar0 + fV0MZDCEcalOutlierPar1 * v0;
2162   if (zdc >  val) 
2163     return kTRUE;
2164   else 
2165     return kFALSE;
2166 }
2167