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