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