]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ANALYSIS/AliCentralitySelectionTask.cxx
Book missing histos are last commit.
[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     fHOutCentV0MEq     = new TH1F("fHOutCentV0MEq","fHOutCentV0MEq; Centrality V0 equalized",505,0,101);
818     fHOutCentV0AEq    = new TH1F("fHOutCentV0AEq","fHOutCentV0AEq; Centrality V0A equalized",505,0,101);
819     fHOutCentV0CEq    = new TH1F("fHOutCentV0CEq","fHOutCentV0CEq; Centrality V0C equalized",505,0,101);
820     fHOutCentV0MCVHN= new TH1F("fHOutCentV0M_CVHN","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
821     fHOutCentV0MCVLN= new TH1F("fHOutCentV0M_CVLN","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
822     fHOutCentV0MCVHNinMB= new TH1F("fHOutCentV0M_CVHNinMB","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
823     fHOutCentV0MCVLNinMB= new TH1F("fHOutCentV0M_CVLNinMB","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
824     fHOutCentV0MCCENT= new TH1F("fHOutCentV0M_CCENT","fHOutCentV0M_CCENT; Centrality V0",505,0,101);
825     fHOutCentV0MCSEMI= new TH1F("fHOutCentV0M_CSEMI","fHOutCentV0M_CSEMI; Centrality V0",505,0,101);
826     fHOutCentV0MCCENTinMB= new TH1F("fHOutCentV0M_CCENTinMB","fHOutCentV0M_CCENT; Centrality V0",505,0,101);
827     fHOutCentV0MCSEMIinMB= new TH1F("fHOutCentV0M_CSEMIinMB","fHOutCentV0M_CSEMI; Centrality V0",505,0,101);
828     fHOutCentV0MMSL= new TH1F("fHOutCentV0M_MSL","fHOutCentV0M_MSL; Centrality V0",505,0,101);
829     fHOutCentV0MMSH= new TH1F("fHOutCentV0M_MSH","fHOutCentV0M_MSH; Centrality V0",505,0,101);
830     fHOutCentV0MMUL= new TH1F("fHOutCentV0M_MUL","fHOutCentV0M_MUL; Centrality V0",505,0,101);
831     fHOutCentV0MMLL= new TH1F("fHOutCentV0M_MLL","fHOutCentV0M_MLL; Centrality V0",505,0,101);
832     fHOutCentV0MEJE= new TH1F("fHOutCentV0M_EJE","fHOutCentV0M_EJE; Centrality V0",505,0,101);
833     fHOutCentV0MEGA= new TH1F("fHOutCentV0M_EGA","fHOutCentV0M_EGA; Centrality V0",505,0,101);
834     fHOutCentV0MPHS= new TH1F("fHOutCentV0M_PHS","fHOutCentV0M_PHS; Centrality V0",505,0,101);
835     fHOutCentV0MMSLinMB= new TH1F("fHOutCentV0M_MSLinMB","fHOutCentV0M_MSLinMB; Centrality V0",505,0,101);
836     fHOutCentV0MMSHinMB= new TH1F("fHOutCentV0M_MSHinMB","fHOutCentV0M_MSHinMB; Centrality V0",505,0,101);
837     fHOutCentV0MMULinMB= new TH1F("fHOutCentV0M_MULinMB","fHOutCentV0M_MULinMB; Centrality V0",505,0,101);
838     fHOutCentV0MMLLinMB= new TH1F("fHOutCentV0M_MLLinMB","fHOutCentV0M_MLLinMB; Centrality V0",505,0,101);
839     fHOutCentV0MEJEinMB= new TH1F("fHOutCentV0M_EJEinMB","fHOutCentV0M_EJEinMB; Centrality V0",505,0,101);
840     fHOutCentV0MEGAinMB= new TH1F("fHOutCentV0M_EGAinMB","fHOutCentV0M_EGAinMB; Centrality V0",505,0,101);
841     fHOutCentV0MPHSinMB= new TH1F("fHOutCentV0M_PHSinMB","fHOutCentV0M_PHSinMB; Centrality V0",505,0,101);
842     fHOutCentFMD     = new TH1F("fHOutCentFMD","fHOutCentFMD; Centrality FMD",505,0,101);
843     fHOutCentTRK     = new TH1F("fHOutCentTRK","fHOutCentTRK; Centrality TPC",505,0,101);
844     fHOutCentTKL     = new TH1F("fHOutCentTKL","fHOutCentTKL; Centrality tracklets",505,0,101);
845     fHOutCentCL0     = new TH1F("fHOutCentCL0","fHOutCentCL0; Centrality SPD inner",505,0,101);
846     fHOutCentCL1     = new TH1F("fHOutCentCL1","fHOutCentCL1; Centrality SPD outer",505,0,101);
847     fHOutCentCND     = new TH1F("fHOutCentCND","fHOutCentCND; Centrality candle",505,0,101);
848     fHOutCentNPA     = new TH1F("fHOutCentNPA","fHOutCentNPA; Centrality Npart",505,0,101);
849     fHOutCentZNA     = new TH1F("fHOutCentZNA","fHOutCentZNA; Centrality ZNA",505,0,101);
850     fHOutCentZNC     = new TH1F("fHOutCentZNC","fHOutCentZNC; Centrality ZNC",505,0,101);
851     fHOutCentV0MvsFMD= new TH1F("fHOutCentV0MvsFMD","fHOutCentV0MvsFMD; Centrality V0 vs FMD",505,0,101);
852     fHOutCentTKLvsV0M= new TH1F("fHOutCentTKLvsV0M","fHOutCentTKLvsV0M; Centrality tracklets vs V0",505,0,101);
853     fHOutCentZEMvsZDC= new TH1F("fHOutCentZEMvsZDC","fHOutCentZEMvsZDC; Centrality ZEM vs ZDC",505,0,101);
854     fHOutCentV0MvsCentCL1= new TH2F("fHOutCentV0MvsCentCL1","fHOutCentV0MvsCentCL1; Cent V0; Cent SPD",505,0,101,505,0,101);
855     fHOutCentV0MvsCentTRK= new TH2F("fHOutCentV0MvsCentTRK","fHOutCentV0MvsCentTRK; Cent V0; Cent TPC",505,0,101,505,0,101);
856     fHOutCentTRKvsCentCL1= new TH2F("fHOutCentTRKvsCentCL1","fHOutCentTRKvsCentCL1; Cent TPC; Cent SPD",505,0,101,505,0,101);
857     fHOutCentV0MvsCentZDC= new TH2F("fHOutCentV0MvsCentZDC","fHOutCentV0MvsCentZDC; Cent V0; Cent ZDC",505,0,101,505,0,101);
858     fHOutCentV0AvsCentV0C= new TH2F("fHOutCentV0AvsCentV0C","fHOutCentV0AvsCentV0C; Cent V0A; Cent V0C;", 505,0,101,505,0,101);
859     fHOutCentV0AvsCentTRK= new TH2F("fHOutCentV0AvsCentTRK","fHOutCentV0AvsCentTRK; Cent V0A; Cent TRK;", 505,0,101,505,0,101);
860     fHOutCentV0AvsCentCND= new TH2F("fHOutCentV0AvsCentCND","fHOutCentV0AvsCentCND; Cent V0A; Cent CND;", 505,0,101,505,0,101);
861     fHOutCentV0AvsCentCL1= new TH2F("fHOutCentV0AvsCentCL1","fHOutCentV0AvsCentCL1; Cent V0A; Cent CL1;", 505,0,101,505,0,101);
862     fHOutCentV0CvsCentTRK= new TH2F("fHOutCentV0CvsCentTRK","fHOutCentV0CvsCentTRK; Cent V0C; Cent TRK;", 505,0,101,505,0,101);
863     fHOutCentV0CvsCentCND= new TH2F("fHOutCentV0CvsCentCND","fHOutCentV0CvsCentCND; Cent V0C; Cent CND;", 505,0,101,505,0,101);
864     fHOutCentV0CvsCentCL1= new TH2F("fHOutCentV0CvsCentCL1","fHOutCentV0CvsCentCL1; Cent V0C; Cent CL1;", 505,0,101,505,0,101);
865     fHOutCentNPAvsCentV0A= new TH2F("fHOutCentNPAvsCentV0A","fHOutCentNPAvsCentV0A; Cent NPA; Cent V0A;", 505,0,101,505,0,101);
866     fHOutCentNPAvsCentV0C= new TH2F("fHOutCentNPAvsCentV0C","fHOutCentNPAvsCentV0C; Cent NPA; Cent V0C;", 505,0,101,505,0,101);
867     fHOutCentNPAvsCentTRK= new TH2F("fHOutCentNPAvsCentTRK","fHOutCentNPAvsCentTRK; Cent NPA; Cent TRK;", 505,0,101,505,0,101);
868     fHOutCentNPAvsCentCND= new TH2F("fHOutCentNPAvsCentCND","fHOutCentNPAvsCentCND; Cent NPA; Cent CND;", 505,0,101,505,0,101);
869     fHOutCentNPAvsCentCL1= new TH2F("fHOutCentNPAvsCentCL1","fHOutCentNPAvsCentCL1; Cent NPA; Cent CL1;", 505,0,101,505,0,101);
870     fHOutCentZNAvsCentV0A= new TH2F("fHOutCentZNAvsCentV0A","fHOutCentZNAvsCentV0A; Cent ZNA; Cent V0A;", 505,0,101,505,0,101);
871     fHOutCentZNAvsCentV0C= new TH2F("fHOutCentZNAvsCentV0C","fHOutCentZNAvsCentV0C; Cent ZNA; Cent V0C;", 505,0,101,505,0,101);
872     fHOutCentZNAvsCentTRK= new TH2F("fHOutCentZNAvsCentTRK","fHOutCentZNAvsCentTRK; Cent ZNA; Cent TRK;", 505,0,101,505,0,101);
873     fHOutCentZNAvsCentCND= new TH2F("fHOutCentZNAvsCentCND","fHOutCentZNAvsCentCND; Cent ZNA; Cent CND;", 505,0,101,505,0,101);
874     fHOutCentZNAvsCentCL1= new TH2F("fHOutCentZNAvsCentCL1","fHOutCentZNAvsCentCL1; Cent ZNA; Cent CL1;", 505,0,101,505,0,101);
875
876     fHOutMultV0AC = new TH2F("fHOutMultV0AC","fHOutMultV0AC; Multiplicity V0A; Multiplicity V0C",1000,0,1000,1000,0,1000);
877     fHOutMultV0M  = new TH1F("fHOutMultV0M","fHOutMultV0M; Multiplicity V0",25000,0,25000);
878     fHOutMultV0A  = new TH1F("fHOutMultV0A","fHOutMultV0A; Multiplicity V0",25000,0,25000);
879     fHOutMultV0C  = new TH1F("fHOutMultV0C","fHOutMultV0C; Multiplicity V0",25000,0,25000);
880     fHOutMultV0Mnc= new TH1F("fHOutMultV0Mnc","fHOutMultV0Mnc; Multiplicity V0",25000,0,25000);
881     fHOutMultV0Anc= new TH1F("fHOutMultV0Anc","fHOutMultV0Anc; Multiplicity V0",25000,0,25000);
882     fHOutMultV0Cnc= new TH1F("fHOutMultV0Cnc","fHOutMultV0Cnc; Multiplicity V0",25000,0,25000);
883     fHOutMultV0O  = new TH1F("fHOutMultV0O","fHOutMultV0O; Multiplicity V0",40000,0,40000);
884     fHOutMultV0Cells = new TH2F("fHOutMultV0Cells","fHOutMultV0Cells",33,-0.5,32.5,33,-0.5,32.5); 
885     fHOutMultFMD = new TH1F("fHOutMultFMD","fHOutMultFMD; Multiplicity FMD",24000,0,24000);
886     fHOutMultTRK = new TH1F("fHOutMultTRK","fHOutMultTRK; Multiplicity TPC",4000,0,4000);
887     fHOutMultTKL = new TH1F("fHOutMultTKL","fHOutMultTKL; Multiplicity tracklets",5000,0,5000);
888     fHOutMultCL0 = new TH1F("fHOutMultCL0","fHOutMultCL0; Multiplicity SPD inner",7000,0,7000);
889     fHOutMultCL1 = new TH1F("fHOutMultCL1","fHOutMultCL1; Multiplicity SPD outer",7000,0,7000);
890     fHOutMultCND = new TH1F("fHOutMultCND","fHOutMultCND; Multiplicity candle",4000,0,4000);
891     fHOutMultNPA = new TH1F("fHOutMultNPA","fHOutMultNPA; Nparticipants",450,0,450);
892     fHOutMultZNA = new TH1F("fHOutMultZNA","fHOutMultZNA; ZNA Energy",500,0,2000);
893
894     fHOutMultV0MvsZDN = new TH2F("fHOutMultV0MvsZDN","fHOutMultV0MvsZDN; Multiplicity V0; Energy ZDC-N",500,0,30000,500,0,180000);
895     fHOutMultZEMvsZDN = new TH2F("fHOutMultZEMvsZDN","fHOutMultZEMvsZDN; Energy ZEM; Energy ZDC-N",500,0,2500,500,0,180000);
896     fHOutMultV0MvsZDC = new TH2F("fHOutMultV0MvsZDC","fHOutMultV0MvsZDC; Multiplicity V0; Energy ZDC",500,0,30000,500,0,200000);
897     fHOutMultZEMvsZDC = new TH2F("fHOutMultZEMvsZDC","fHOutMultZEMvsZDC; Energy ZEM; Energy ZDC",500,0,2500,500,0,200000);
898     fHOutMultZEMvsZDCw = new TH2F("fHOutMultZEMvsZDCw","fHOutMultZEMvsZDCw; Energy ZEM; Energy ZDC (weigthed with V0 percentile)",500,0,2500,500,0,200000);
899     fHOutMultV0MvsCL1 = new TH2F("fHOutMultV0MvsCL1","fHOutMultV0MvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
900     fHOutMultV0MvsTRK = new TH2F("fHOutMultV0MvsTRK","fHOutMultV0MvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
901     fHOutMultTRKvsCL1 = new TH2F("fHOutMultTRKvsCL1","fHOutMultTRKvsCL1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
902     fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,40000);
903     fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",500,0,40000,700,0,7000);
904     fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",500,0,40000,400,0,4000);
905     fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,30000);
906     fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
907     fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
908     fHOutMultCL1vsTKL = new TH2F ("fHOutMultCL1vsTKL","fHOutMultCL1vsTKL; Multiplicity SPD outer; Multiplicity tracklets",700,0,7000,700,0,7000);
909     
910     fHOutCentV0Mqual1 = new TH1F("fHOutCentV0M_qual1","fHOutCentV0M_qual1; Centrality V0",505,0,101);
911     fHOutCentTRKqual1 = new TH1F("fHOutCentTRK_qual1","fHOutCentTRK_qual1; Centrality TPC",505,0,101);
912     fHOutCentCL1qual1 = new TH1F("fHOutCentCL1_qual1","fHOutCentCL1_qual1; Centrality SPD outer",505,0,101);
913     fHOutMultV0MvsCL1qual1 = new TH2F("fHOutMultV0MvsCL1_qual1","fHOutMultV0MvsCL1_qual1; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
914     fHOutMultV0MvsTRKqual1 = new TH2F("fHOutMultV0MvsTRK_qual1","fHOutMultV0MvsTRK_qual1; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
915     fHOutMultTRKvsCL1qual1 = new TH2F("fHOutMultTRKvsCL1_qual1","fHOutMultTRKvsCL1_qual1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
916     
917     fHOutCentV0Mqual2 = new TH1F("fHOutCentV0M_qual2","fHOutCentV0M_qual2; Centrality V0",505,0,101);
918     fHOutCentTRKqual2 = new TH1F("fHOutCentTRK_qual2","fHOutCentTRK_qual2; Centrality TPC",505,0,101);
919     fHOutCentCL1qual2 = new TH1F("fHOutCentCL1_qual2","fHOutCentCL1_qual2; Centrality SPD outer",505,0,101);
920     fHOutMultV0MvsCL1qual2 = new TH2F("fHOutMultV0MvsCL1_qual2","fHOutMultV0MvsCL1_qual2; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
921     fHOutMultV0MvsTRKqual2 = new TH2F("fHOutMultV0MvsTRK_qual2","fHOutMultV0MvsTRK_qual2; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
922     fHOutMultTRKvsCL1qual2 = new TH2F("fHOutMultTRKvsCL1_qual2","fHOutMultTRKvsCL1_qual2; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
923     
924     fHOutQuality = new TH1F("fHOutQuality", "fHOutQuality", 100,-0.5,99.5);
925     fHOutVertex  = new TH1F("fHOutVertex", "fHOutVertex", 100,-20,20);
926     fHOutVertexT0  = new TH1F("fHOutVertexT0", "fHOutVertexT0", 100,-20,20);
927   
928     fOutputList->Add(fHOutCentV0M);
929     fOutputList->Add(fHOutCentV0A);
930     fOutputList->Add(fHOutCentV0C);
931     fOutputList->Add(fHOutCentV0MEq);
932     fOutputList->Add(fHOutCentV0AEq);
933     fOutputList->Add(fHOutCentV0CEq);
934     fOutputList->Add(fHOutCentV0MCVHN);
935     fOutputList->Add(fHOutCentV0MCVLN);
936     fOutputList->Add(fHOutCentV0MCVHNinMB);
937     fOutputList->Add(fHOutCentV0MCVLNinMB);
938     fOutputList->Add(fHOutCentV0MCCENT);
939     fOutputList->Add(fHOutCentV0MCSEMI);
940     fOutputList->Add(fHOutCentV0MCCENTinMB);
941     fOutputList->Add(fHOutCentV0MCSEMIinMB);
942     fOutputList->Add(fHOutCentV0MMSL);
943     fOutputList->Add(fHOutCentV0MMSH);
944     fOutputList->Add(fHOutCentV0MMUL);
945     fOutputList->Add(fHOutCentV0MMLL);
946     fOutputList->Add(fHOutCentV0MEJE);
947     fOutputList->Add(fHOutCentV0MEGA);
948     fOutputList->Add(fHOutCentV0MPHS);
949     fOutputList->Add(fHOutCentV0MMSLinMB);
950     fOutputList->Add(fHOutCentV0MMSHinMB);
951     fOutputList->Add(fHOutCentV0MMULinMB);
952     fOutputList->Add(fHOutCentV0MMLLinMB);
953     fOutputList->Add(fHOutCentV0MEJEinMB);
954     fOutputList->Add(fHOutCentV0MEGAinMB);
955     fOutputList->Add(fHOutCentV0MPHSinMB);
956     fOutputList->Add(fHOutCentFMD);
957     fOutputList->Add(fHOutCentTRK);
958     fOutputList->Add(fHOutCentTKL);
959     fOutputList->Add(fHOutCentCL0);
960     fOutputList->Add(fHOutCentCL1);
961     fOutputList->Add(fHOutCentCND);
962     fOutputList->Add(fHOutCentNPA);
963     fOutputList->Add(fHOutCentZNA);
964     fOutputList->Add(fHOutCentZNC);
965     fOutputList->Add(fHOutCentV0MvsFMD);
966     fOutputList->Add(fHOutCentTKLvsV0M);
967     fOutputList->Add(fHOutCentZEMvsZDC);
968     fOutputList->Add(fHOutCentV0MvsCentCL1);
969     fOutputList->Add(fHOutCentV0MvsCentTRK);
970     fOutputList->Add(fHOutCentTRKvsCentCL1);
971     fOutputList->Add(fHOutCentV0MvsCentZDC);
972     fOutputList->Add(fHOutCentV0AvsCentV0C);
973     fOutputList->Add(fHOutCentV0AvsCentTRK);
974     fOutputList->Add(fHOutCentV0AvsCentCND);
975     fOutputList->Add(fHOutCentV0AvsCentCL1);
976     fOutputList->Add(fHOutCentV0CvsCentTRK);
977     fOutputList->Add(fHOutCentV0CvsCentCND);
978     fOutputList->Add(fHOutCentV0CvsCentCL1);
979     fOutputList->Add(fHOutCentNPAvsCentV0A);
980     fOutputList->Add(fHOutCentNPAvsCentV0C);
981     fOutputList->Add(fHOutCentNPAvsCentTRK);
982     fOutputList->Add(fHOutCentNPAvsCentCND);
983     fOutputList->Add(fHOutCentNPAvsCentCL1);
984     fOutputList->Add(fHOutCentZNAvsCentV0A);
985     fOutputList->Add(fHOutCentZNAvsCentV0C);
986     fOutputList->Add(fHOutCentZNAvsCentTRK);
987     fOutputList->Add(fHOutCentZNAvsCentCND);
988     fOutputList->Add(fHOutCentZNAvsCentCL1);
989
990     fOutputList->Add(fHOutMultV0AC); 
991     fOutputList->Add(fHOutMultV0M); 
992     fOutputList->Add(fHOutMultV0A); 
993     fOutputList->Add(fHOutMultV0C); 
994     fOutputList->Add(fHOutMultV0Mnc); 
995     fOutputList->Add(fHOutMultV0Anc); 
996     fOutputList->Add(fHOutMultV0Cnc); 
997     fOutputList->Add(fHOutMultV0O);
998     fOutputList->Add(fHOutMultV0Cells) ;   
999     fOutputList->Add(fHOutMultFMD); 
1000     fOutputList->Add(fHOutMultTRK); 
1001     fOutputList->Add(fHOutMultTKL); 
1002     fOutputList->Add(fHOutMultCL0); 
1003     fOutputList->Add(fHOutMultCL1); 
1004     fOutputList->Add(fHOutMultCND); 
1005     fOutputList->Add(fHOutMultNPA); 
1006     fOutputList->Add(fHOutMultZNA); 
1007     fOutputList->Add(fHOutMultV0MvsZDN);
1008     fOutputList->Add(fHOutMultZEMvsZDN);
1009     fOutputList->Add(fHOutMultV0MvsZDC);
1010     fOutputList->Add(fHOutMultZEMvsZDC);
1011     fOutputList->Add(fHOutMultZEMvsZDCw);
1012     fOutputList->Add(fHOutMultV0MvsCL1);
1013     fOutputList->Add(fHOutMultV0MvsTRK);
1014     fOutputList->Add(fHOutMultTRKvsCL1);
1015     fOutputList->Add(fHOutMultV0MvsV0O);
1016     fOutputList->Add(fHOutMultV0OvsCL1);
1017     fOutputList->Add(fHOutMultV0OvsTRK);
1018     fOutputList->Add(fHOutMultCL1vsTKL);
1019     fOutputList->Add(fHOutCentV0Mqual1);
1020     fOutputList->Add(fHOutCentTRKqual1);
1021     fOutputList->Add(fHOutCentCL1qual1);                   
1022     fOutputList->Add(fHOutMultV0MvsCL1qual1);
1023     fOutputList->Add(fHOutMultV0MvsTRKqual1);
1024     fOutputList->Add(fHOutMultTRKvsCL1qual1);
1025     fOutputList->Add(fHOutCentV0Mqual2);
1026     fOutputList->Add(fHOutCentTRKqual2);
1027     fOutputList->Add(fHOutCentCL1qual2);
1028     fOutputList->Add(fHOutMultV0MvsCL1qual2);
1029     fOutputList->Add(fHOutMultV0MvsTRKqual2);
1030     fOutputList->Add(fHOutMultTRKvsCL1qual2);
1031     fOutputList->Add(fHOutQuality);
1032     fOutputList->Add(fHOutVertex);
1033     fOutputList->Add(fHOutVertexT0);
1034   
1035     PostData(1, fOutputList); 
1036   }
1037   
1038   fTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
1039   fEsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
1040   fEsdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kOff);
1041   // Add SPD requirement
1042   fEsdTrackCutsExtra1 = new AliESDtrackCuts("SPD", "Require 1 cluster in SPD");
1043   fEsdTrackCutsExtra1->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
1044   // Add SDD requirement
1045   fEsdTrackCutsExtra2 = new AliESDtrackCuts("SDD", "Require 1 cluster in first layer SDD");
1046   fEsdTrackCutsExtra2->SetClusterRequirementITS(AliESDtrackCuts::kSDD,AliESDtrackCuts::kFirst);  
1047 }
1048
1049 //________________________________________________________________________
1050 void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
1051
1052   // Execute analysis for current event:
1053   if(fDebug>1) printf(" **** AliCentralitySelectionTask::UserExec() \n");
1054
1055   Int_t    runType = 0;             // 0:PbPb, 1:pPb or Pbp 
1056
1057   Float_t  zncEnergy = 0.;          //  ZNC Energy
1058   Float_t  zpcEnergy = 0.;          //  ZPC Energy
1059   Float_t  znaEnergy = 0.;          //  ZNA Energy
1060   Float_t  zpaEnergy = 0.;          //  ZPA Energy
1061   Float_t  zem1Energy = 0.;         //  ZEM1 Energy
1062   Float_t  zem2Energy = 0.;         //  ZEM2 Energy
1063   Bool_t   zdcEnergyCal = kFALSE;   // if zdc is calibrated (in pass2)
1064   Double_t znaTower = 0.;           // common PMT of ZNA 
1065   Double_t zncTower = 0.;
1066   Bool_t   znaFired = kFALSE;
1067   Bool_t   zncFired = kFALSE;
1068
1069   Int_t    nTracks = 0;             //  no. tracks
1070   Int_t    nTracklets = 0;          //  no. tracklets
1071   Int_t    nClusters[6] = {0};      //  no. clusters on 6 ITS layers
1072   Int_t    nChips[2] = {0,0};       //  no. chips on 2 SPD layers
1073   Float_t  spdCorr =0;              //  corrected spd2 multiplicity
1074   Int_t    multCND = 0;             //  no. tracks (candle condition)
1075
1076   Float_t  multV0A  = 0;            //  multiplicity from V0 reco side A
1077   Float_t  multV0C  = 0;            //  multiplicity from V0 reco side C
1078   Float_t  multV0AEq  = 0;          //  multiplicity from V0 reco side A
1079   Float_t  multV0CEq  = 0;          //  multiplicity from V0 reco side C
1080   Float_t  multV0ACorr  = 0;            //  multiplicity from V0 reco side A
1081   Float_t  multV0CCorr  = 0;            //  multiplicity from V0 reco side C
1082   Short_t  multV0AOnline  = 0;      //  multiplicity from V0 reco side A
1083   Short_t  multV0COnline  = 0;      //  multiplicity from V0 reco side C
1084   Float_t  v0Corr = 0;              // corrected V0 multiplicity (used for MC)
1085   Int_t nV0A = 0;
1086   Int_t nV0C = 0;
1087
1088   Float_t  multFMDA = 0;            //  multiplicity from FMD on detector A
1089   Float_t  multFMDC = 0;            //  multiplicity from FMD on detector C
1090
1091   Float_t zvtx =0;                  // z-vertex SPD
1092   Int_t zvtxNcont =0;               // contributors to z-vertex SPD
1093
1094   Float_t zvtxT0 =0;                // z-vertex T0
1095
1096   Int_t Npart =0;                   // N. of participants (true MC)
1097
1098   AliCentrality *esdCent = 0;
1099
1100   AliVEvent *event = InputEvent();
1101   AliESDEvent *esd = dynamic_cast<AliESDEvent*>(event);
1102   AliAODEvent *aod =  dynamic_cast<AliAODEvent*>(event);
1103   if(fAnalysisInput.CompareTo("ESD")==0){
1104     if (!esd) {
1105       AliError("No ESD Event");
1106       return;
1107     }
1108   } else if(fAnalysisInput.CompareTo("AOD")==0){
1109     if (!aod) {
1110       AliError("No AOD Event");
1111       return;
1112     }
1113   }
1114   LoadBranches();
1115
1116   if (SetupRun(event)<0) {
1117     AliError("Centrality File not available for this run");
1118     return;
1119   }
1120
1121   if (esd) {
1122     if (strcmp(esd->GetESDRun()->GetBeamType(), "A-A") == 0) runType=0;
1123     else runType=1;  
1124   } else {
1125     Int_t runNumber = event->GetRunNumber();
1126     if ((runNumber >= 136851 && runNumber <= 139517) ||  // LHC10h
1127         (runNumber >= 166529 && runNumber <= 170593))    // LHC11h
1128       runType=0;
1129   }
1130
1131   esdCent = event->GetCentrality();
1132
1133   // ***** Vertex Info
1134   if (esd) {
1135     const AliESDVertex* vtxESD = esd->GetPrimaryVertexSPD();
1136     zvtx        = vtxESD->GetZ(); 
1137     zvtxNcont   = vtxESD->GetNContributors();
1138   } else {
1139     const AliAODVertex* spdVtx = aod->GetPrimaryVertexSPD();
1140     zvtx        = spdVtx->GetZ(); 
1141     zvtxNcont   = spdVtx->GetNContributors();
1142   }
1143
1144     // ***** V0 info    
1145   AliVVZERO* esdV0 = event->GetVZEROData();
1146   if (!esdV0) {
1147     AliError("AliVVZERO not available");
1148     return;
1149   }
1150
1151   multV0A=esdV0->GetMTotV0A();
1152   multV0C=esdV0->GetMTotV0C();
1153
1154   multV0ACorr = AliESDUtils::GetCorrV0A(multV0A,zvtx);    
1155   multV0CCorr = AliESDUtils::GetCorrV0C(multV0C,zvtx);    
1156
1157   v0Corr = multV0A+multV0C; // Todo: C.L. not clear why here we do not use the sum of the corrected values?
1158
1159   multV0AOnline=esdV0->GetTriggerChargeA(); 
1160   multV0COnline=esdV0->GetTriggerChargeC(); 
1161
1162   // Count V0 flags
1163   for(Int_t i = 0; i < 32; ++i) {
1164     if (esdV0->GetBBFlag(i)) nV0C++;
1165     if (esdV0->GetBBFlag(i+32)) nV0A++;
1166   }
1167     
1168   // Equalized signals
1169   multV0AEq=0.;
1170   multV0CEq=0.;
1171   for(Int_t iCh = 4; iCh < 7; ++iCh) {
1172     Double_t mult = esd->GetVZEROEqMultiplicity(iCh);
1173     multV0AEq += mult;
1174   }
1175   for(Int_t iCh = 0; iCh < 3; ++iCh) {
1176     Double_t mult = esd->GetVZEROEqMultiplicity(iCh);
1177     multV0CEq += mult;
1178   }
1179   
1180   Bool_t kT0BB = kFALSE;    
1181   if (esd) {
1182     // ***** T0 info    
1183     const AliESDTZERO* esdT0 = esd->GetESDTZERO();
1184     if (!esdT0)
1185       {
1186         AliError("AliESDTZERO not available");
1187         return;
1188       }
1189     Int_t trig=esdT0->GetT0Trig();
1190     if(trig&1) kT0BB=kTRUE;
1191     zvtxT0=esdT0->GetT0zVertex();
1192   } else {
1193     const AliAODTZERO* esdT0 = aod->GetTZEROData();
1194     if (!esdT0)
1195       {
1196         AliError("AliAODTZERO not available");
1197         return;
1198       }
1199     Int_t trig=1;//esdT0->GetT0Trig(); //* Todo: C.L. This info is not in AOD? */
1200     if(trig&1) kT0BB=kTRUE;
1201     zvtxT0=esdT0->GetT0zVertex();
1202   }
1203
1204   // ***** Trigger info    
1205   fIsSelected = ((esdV0->GetV0ADecision()==1) && (esdV0->GetV0CDecision()==1));
1206   TString trigStr;
1207   if (esd)
1208     trigStr = esd->GetFiredTriggerClasses();
1209   else
1210     trigStr = aod->GetFiredTriggerClasses();
1211     
1212   fMB=kFALSE;
1213   fCVHN=kFALSE; fCVLN=kFALSE; fCCENT=kFALSE; fCSEMI=kFALSE; 
1214   fMSL=kFALSE;  fMSH=kFALSE;  fMUL=kFALSE;   fMLL=kFALSE;
1215   fEJE=kFALSE;  fEGA=kFALSE;  fPHS=kFALSE;
1216
1217   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI")) && (fIsSelected)) 
1218     fMB=kTRUE;
1219   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CVHN")) && (fIsSelected)) 
1220     fCVHN=kTRUE;
1221   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CVLN")) && (fIsSelected))
1222     fCVLN=kTRUE;
1223   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CCENT")) && (fIsSelected)) 
1224     fCCENT=kTRUE;
1225   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CSEMI")) && (fIsSelected))
1226     fCSEMI=kTRUE;
1227     
1228   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MSL")) && (fIsSelected))
1229     fMSL=kTRUE;
1230   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MSH")) && (fIsSelected))
1231     fMSH=kTRUE;
1232   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MUL")) && (fIsSelected))
1233     fMUL=kTRUE;
1234   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MLL")) && (fIsSelected))
1235     fMLL=kTRUE;
1236   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1EJE")) && (fIsSelected))
1237     fEJE=kTRUE;
1238   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1EGA")) && (fIsSelected))
1239     fEGA=kTRUE;
1240   if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1PHS")) && (fIsSelected))
1241     fPHS=kTRUE;
1242   
1243   fCVHNbit=kFALSE;    fCVLNbit=kFALSE;       fCCENTbit=kFALSE;    fCSEMIbit=kFALSE; 
1244   if (esdV0->GetTriggerBits() & (1<<8)) 
1245     fCVHNbit=kTRUE;
1246   if (esdV0->GetTriggerBits() & (1<<6)) 
1247     fCVLNbit=kTRUE;
1248     
1249   if (kT0BB && fCVHNbit)
1250     fCCENTbit=kTRUE;
1251   if (kT0BB && fCVLNbit)
1252     fCSEMIbit=kTRUE;
1253
1254   if (esd) {  
1255     // ***** CB info (tracklets, clusters, chips)
1256     //nTracks    = event->GetNumberOfTracks();     
1257     nTracks    = fTrackCuts ? (Short_t)fTrackCuts->GetReferenceMultiplicity(esd,kTRUE):-1;
1258   } else {
1259     AliAODHeader *h = aod->GetHeader();
1260     nTracks    = h!=0 ? (Short_t)h->GetTPConlyRefMultiplicity():-1;
1261   }
1262
1263   if (esd) {
1264     Short_t nTrTPCcandle = 0;
1265     for (Int_t iTracks = 0; iTracks < esd->GetNumberOfTracks(); iTracks++) {
1266
1267       AliESDtrack* track = esd->GetTrack(iTracks);
1268       if (!track) continue;
1269       
1270       if (! fEsdTrackCuts->IsSelected(track) )continue;
1271       
1272       if (fEsdTrackCutsExtra1 && fEsdTrackCutsExtra2 &&
1273           !fEsdTrackCutsExtra1->IsSelected(track) &&
1274           !fEsdTrackCutsExtra2->IsSelected(track)) continue;
1275       
1276       if (track->Pt() > 0.4 && TMath::Abs(track->Eta()) < 0.9)  nTrTPCcandle++;
1277     } 
1278     multCND = nTrTPCcandle;
1279   } else {
1280     Short_t nTrTPCcandle = 0;
1281     for (Int_t iTracks = 0; iTracks < aod->GetNumberOfTracks(); iTracks++) {
1282
1283       AliAODTrack* track = aod->GetTrack(iTracks);
1284
1285       if (!track) continue;
1286       if (!track->TestFilterBit(1<<5) && 
1287           !track->TestFilterBit(1<<6)) continue;
1288
1289       if (track->Pt() > 0.4 && TMath::Abs(track->Eta()) < 0.9)  nTrTPCcandle++;
1290     }
1291     multCND = nTrTPCcandle;
1292   }
1293
1294   if (esd) {
1295     const AliMultiplicity *mult = esd->GetMultiplicity();
1296     nTracklets = mult->GetNumberOfTracklets();
1297
1298     for(Int_t ilay=0; ilay<6; ilay++){
1299       nClusters[ilay] = mult->GetNumberOfITSClusters(ilay);
1300     }
1301
1302     for(Int_t ilay=0; ilay<2; ilay++){
1303       nChips[ilay] = mult->GetNumberOfFiredChips(ilay);
1304     }
1305   } else {
1306     AliAODTracklets *mult = aod->GetTracklets();
1307     nTracklets = mult->GetNumberOfTracklets();
1308     AliAODHeader *h = aod->GetHeader();
1309     for(Int_t ilay=0; ilay<6; ilay++){
1310       nClusters[ilay] = h->GetNumberOfITSClusters(ilay);
1311     }
1312   }
1313   spdCorr = AliESDUtils::GetCorrSPD2(nClusters[1],zvtx);
1314   
1315   if (esd) {
1316     // ***** FMD info
1317     AliESDFMD *fmd = esd->GetFMDData();
1318     Float_t totalMultA = 0;
1319     Float_t totalMultC = 0;
1320     const Float_t fFMDLowCut = 0.4;
1321   
1322     for(UShort_t det=1;det<=3;det++) {
1323       Int_t nRings = (det==1 ? 1 : 2);
1324       for (UShort_t ir = 0; ir < nRings; ir++) {          
1325         Char_t   ring = (ir == 0 ? 'I' : 'O');
1326         UShort_t nsec = (ir == 0 ? 20  : 40);
1327         UShort_t nstr = (ir == 0 ? 512 : 256);
1328         for(UShort_t sec =0; sec < nsec;  sec++)  {
1329           for(UShort_t strip = 0; strip < nstr; strip++) {
1330             
1331             Float_t fmdMult = fmd->Multiplicity(det,ring,sec,strip);
1332             if(fmdMult == 0 || fmdMult == AliESDFMD::kInvalidMult) continue;
1333             
1334             Float_t nParticles=0;
1335             
1336             if(fmdMult > fFMDLowCut) {
1337               nParticles = 1.;
1338             }
1339             
1340             if (det<3) totalMultA = totalMultA + nParticles;
1341             else totalMultC = totalMultC + nParticles;
1342             
1343           }
1344         }
1345       }
1346     }
1347     multFMDA = totalMultA;
1348     multFMDC = totalMultC;
1349   }
1350
1351   if (esd) {
1352     // ***** ZDC info
1353     AliESDZDC *esdZDC = esd->GetESDZDC();
1354     zdcEnergyCal = esdZDC->AliESDZDC::TestBit(AliESDZDC::kEnergyCalibratedSignal);
1355     if (zdcEnergyCal) {      
1356       zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy());
1357       zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy());
1358       znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy());
1359       zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy());
1360     } else {
1361       zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy())/8.;
1362       zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy())/8.;
1363       znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy())/8.;
1364       zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy())/8.;
1365     }
1366     zem1Energy = (Float_t) (esdZDC->GetZDCEMEnergy(0))/8.;
1367     zem2Energy = (Float_t) (esdZDC->GetZDCEMEnergy(1))/8.;
1368
1369     const Double_t *ZNAtower = esdZDC->GetZN2TowerEnergy(); 
1370     znaTower = ZNAtower[0];
1371     const Double_t *ZNCtower = esdZDC->GetZN1TowerEnergy();
1372     zncTower = ZNCtower[0];
1373     
1374     for (Int_t j = 0; j < 4; ++j) 
1375       if (esdZDC->GetZDCTDCData(12,j) != 0) 
1376         znaFired = kTRUE;
1377     
1378     for (Int_t j = 0; j < 4; ++j) 
1379       if (esdZDC->GetZDCTDCData(10,j) != 0) 
1380         zncFired = kTRUE;   
1381
1382   } else {
1383     AliAODHeader *h = aod->GetHeader();
1384     zncEnergy = (Float_t) (h->GetZDCN1Energy());
1385     zpcEnergy = (Float_t) (h->GetZDCP1Energy());
1386     znaEnergy = (Float_t) (h->GetZDCN2Energy());
1387     zpaEnergy = (Float_t) (h->GetZDCP2Energy());
1388     zem1Energy = (Float_t) (h->GetZDCEMEnergy(0))/8.; //Todo: C.L. Should we devide here by 8? It is done in the ESD case!
1389     zem2Energy = (Float_t) (h->GetZDCEMEnergy(1))/8.;
1390
1391     AliAODZDC *aodZDC = aod->GetZDCData();
1392     const Double_t *ZNAtower = aodZDC->GetZNATowerEnergy(); 
1393     znaTower = ZNAtower[0];
1394
1395     znaFired = kFALSE; // trick because info is not stored in AOD
1396     if (esdCent->GetCentralityPercentile("ZNA") != 101)
1397       znaFired = kTRUE;
1398   }
1399
1400   if (esd) {
1401     // ***** MC info
1402     AliAnalysisManager* anMan = AliAnalysisManager::GetAnalysisManager();
1403     AliMCEventHandler* eventHandler = (AliMCEventHandler*)anMan->GetMCtruthEventHandler();
1404     AliStack*    stack=0;
1405     AliMCEvent*  mcEvent=0;
1406     if (fIsMCInput && eventHandler && (mcEvent=eventHandler->MCEvent()) && (stack=mcEvent->Stack())) {
1407       AliGenHijingEventHeader* hHijing=0;
1408       AliGenDPMjetEventHeader* dpmHeader=0;
1409       
1410       AliGenEventHeader* mcGenH = mcEvent->GenEventHeader();
1411       if (mcGenH->InheritsFrom(AliGenHijingEventHeader::Class())) 
1412         hHijing = (AliGenHijingEventHeader*)mcGenH;      
1413       else if (mcGenH->InheritsFrom(AliGenCocktailEventHeader::Class())) {
1414         TList* headers = ((AliGenCocktailEventHeader*)mcGenH)->GetHeaders();
1415         hHijing = dynamic_cast<AliGenHijingEventHeader*>(headers->FindObject("Hijing"));
1416         if (!hHijing) hHijing = dynamic_cast<AliGenHijingEventHeader*>(headers->FindObject("Hijing pPb_0"));
1417       }
1418       else if (mcGenH->InheritsFrom(AliGenDPMjetEventHeader::Class())) {
1419         dpmHeader = (AliGenDPMjetEventHeader*)mcGenH;
1420       }
1421       if(hHijing)   Npart = hHijing->ProjectileParticipants()+hHijing->TargetParticipants();
1422       if(dpmHeader) Npart = dpmHeader->ProjectileParticipants()+ dpmHeader->TargetParticipants();
1423     }
1424   } 
1425
1426   // ***** Scaling for MC
1427   if (fIsMCInput) {
1428     fUseScaling=kFALSE;
1429     v0Corr  = Short_t((multV0A+multV0C)  * fV0MScaleFactorMC);
1430     multV0A  = multV0A * fV0MScaleFactorMC;
1431     multV0C  = multV0C * fV0MScaleFactorMC;
1432   }
1433   // ***** Scaling for Data 
1434   if (fUseScaling) {
1435     v0Corr  = Short_t(v0Corr /   fV0MScaleFactor);
1436     spdCorr = spdCorr / fSPDScaleFactor;
1437     nTracks = Int_t(nTracks /   fTPCScaleFactor);
1438   }
1439
1440   // ***** Centrality Selection
1441   if(fHtempV0M) fCentV0M = fHtempV0M->GetBinContent(fHtempV0M->FindBin((v0Corr)));
1442   if(fHtempV0A) fCentV0A = fHtempV0A->GetBinContent(fHtempV0A->FindBin((multV0ACorr)));
1443   if(fHtempV0C) fCentV0C = fHtempV0C->GetBinContent(fHtempV0C->FindBin((multV0CCorr)));
1444   if(fHtempV0MEq) fCentV0MEq = fHtempV0MEq->GetBinContent(fHtempV0MEq->FindBin((multV0AEq+multV0CEq)));
1445   if(fHtempV0AEq) fCentV0AEq = fHtempV0AEq->GetBinContent(fHtempV0AEq->FindBin((multV0AEq)));
1446   if(fHtempV0CEq) fCentV0CEq = fHtempV0CEq->GetBinContent(fHtempV0CEq->FindBin((multV0CEq)));
1447   if(fHtempFMD) fCentFMD = fHtempFMD->GetBinContent(fHtempFMD->FindBin((multFMDA+multFMDC)));
1448   if(fHtempTRK) fCentTRK = fHtempTRK->GetBinContent(fHtempTRK->FindBin(nTracks));
1449   if(fHtempTKL) fCentTKL = fHtempTKL->GetBinContent(fHtempTKL->FindBin(nTracklets));
1450   if(fHtempCL0) fCentCL0 = fHtempCL0->GetBinContent(fHtempCL0->FindBin(nClusters[0]));
1451   if(fHtempCL1) fCentCL1 = fHtempCL1->GetBinContent(fHtempCL1->FindBin(spdCorr));
1452   if(fHtempCND) fCentCND = fHtempCND->GetBinContent(fHtempCND->FindBin(multCND));
1453   if(fHtempZNA) {
1454     if(znaFired) fCentZNA = fHtempZNA->GetBinContent(fHtempZNA->FindBin(znaTower));
1455     else fCentZNA = 101;
1456   }
1457   if(fHtempZNC) {
1458     if(zncFired) fCentZNC = fHtempZNC->GetBinContent(fHtempZNC->FindBin(zncTower));
1459     else fCentZNC = 101;
1460   }
1461   if(fHtempV0MvsFMD) fCentV0MvsFMD = fHtempV0MvsFMD->GetBinContent(fHtempV0MvsFMD->FindBin((multV0A+multV0C)));
1462   if(fHtempTKLvsV0M) fCentTKLvsV0M = fHtempTKLvsV0M->GetBinContent(fHtempTKLvsV0M->FindBin(nTracklets));
1463   if(fHtempZEMvsZDC) fCentZEMvsZDC = fHtempZEMvsZDC->GetBinContent(fHtempZEMvsZDC->FindBin(zem1Energy+zem2Energy,zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1464
1465   if(fHtempNPA) fCentNPA = fHtempNPA->GetBinContent(fHtempNPA->FindBin(Npart));
1466   if(fHtempV0Mtrue) fCentV0Mtrue = fHtempV0Mtrue->GetBinContent(fHtempV0Mtrue->FindBin((multV0ACorr+multV0CCorr)));
1467   if(fHtempV0Atrue) fCentV0Atrue = fHtempV0Atrue->GetBinContent(fHtempV0Atrue->FindBin((multV0ACorr)));
1468   if(fHtempV0Ctrue) fCentV0Ctrue = fHtempV0Ctrue->GetBinContent(fHtempV0Ctrue->FindBin((multV0CCorr)));
1469   if(fHtempV0MEqtrue) fCentV0MEqtrue = fHtempV0MEqtrue->GetBinContent(fHtempV0MEqtrue->FindBin((multV0AEq+multV0CEq)));
1470   if(fHtempV0AEqtrue) fCentV0AEqtrue = fHtempV0AEqtrue->GetBinContent(fHtempV0AEqtrue->FindBin((multV0AEq)));
1471   if(fHtempV0CEqtrue) fCentV0CEqtrue = fHtempV0CEqtrue->GetBinContent(fHtempV0CEqtrue->FindBin((multV0CEq)));
1472   if(fHtempFMDtrue) fCentFMDtrue = fHtempFMDtrue->GetBinContent(fHtempFMDtrue->FindBin((multFMDA+multFMDC)));
1473   if(fHtempTRKtrue) fCentTRKtrue = fHtempTRKtrue->GetBinContent(fHtempTRKtrue->FindBin(nTracks));
1474   if(fHtempTKLtrue) fCentTKLtrue = fHtempTKLtrue->GetBinContent(fHtempTKLtrue->FindBin(nTracklets));
1475   if(fHtempCL0true) fCentCL0true = fHtempCL0true->GetBinContent(fHtempCL0true->FindBin(nClusters[0]));
1476   if(fHtempCL1true) fCentCL1true = fHtempCL1true->GetBinContent(fHtempCL1true->FindBin(spdCorr));
1477   if(fHtempCNDtrue) fCentCNDtrue = fHtempCNDtrue->GetBinContent(fHtempCNDtrue->FindBin(multCND));
1478   if(fHtempZNAtrue) fCentZNAtrue = fHtempZNAtrue->GetBinContent(fHtempZNAtrue->FindBin(znaTower));
1479   if(fHtempZNCtrue) fCentZNCtrue = fHtempZNCtrue->GetBinContent(fHtempZNCtrue->FindBin(zncTower));
1480    
1481
1482   // ***** Cleaning
1483   if (fUseCleaning) {
1484     fQuality=0;
1485     
1486     // ***** vertex
1487     if (TMath::Abs(zvtx)>fZVCut || zvtxNcont<1) fQuality += 1;   
1488
1489     // ***** outliers, skip in case of MC input
1490     if (!fIsMCInput) {
1491       // **** V0 vs SPD
1492       if (IsOutlierV0MSPD(spdCorr, v0Corr, int(fCentV0M))) fQuality  += 2;
1493       // ***** V0 vs TPC
1494       if (IsOutlierV0MTPC(nTracks, v0Corr, int(fCentV0M))) fQuality  += 4;
1495       // ***** V0 vs ZDC
1496       if (IsOutlierV0MZDC((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
1497           (zdcEnergyCal==kFALSE) ) fQuality  += 8;
1498       if (IsOutlierV0MZDCECal((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
1499           (zdcEnergyCal==kTRUE) ) fQuality  += 8;
1500     }
1501   } else {
1502     fQuality = 0;
1503   }
1504
1505       
1506   if (esdCent) {
1507     if (aod&&(fDebug>1)) {
1508       Double_t v0m = esdCent->GetCentralityPercentile("V0M");
1509       Double_t cl1 = esdCent->GetCentralityPercentile("CL1");
1510       Double_t trk = esdCent->GetCentralityPercentile("TRK");
1511       Double_t cnd = esdCent->GetCentralityPercentile("CND");
1512       Double_t zna = esdCent->GetCentralityPercentile("ZNA");
1513       printf("AOD: v0m %.2f %.2f (%.2f) cl1 %.2f %.2f (%.2f) trk %.2f %.2f (%.2f) cnd %.2f %.2f (%.2f) zna %.2f %.2f (%.2f)\n", 
1514              v0m, fCentV0M, fCentV0M!=0?v0m/fCentV0M:1, cl1, fCentCL1, fCentCL1!=0?cl1/fCentCL1:1, trk, fCentTRK, 
1515              fCentTRK!=0?trk/fCentTRK:1, cnd, fCentCND, fCentCND!=0?cnd/fCentCND:1, zna, fCentZNA, fCentZNA!=0?zna/fCentZNA:1);
1516     }
1517     esdCent->SetQuality(fQuality);
1518     esdCent->SetCentralityV0M(fCentV0M);
1519     esdCent->SetCentralityV0A(fCentV0A);
1520     esdCent->SetCentralityV0C(fCentV0C);
1521     esdCent->SetCentralityV0MEq(fCentV0MEq);
1522     esdCent->SetCentralityV0AEq(fCentV0AEq);
1523     esdCent->SetCentralityV0CEq(fCentV0CEq);
1524     esdCent->SetCentralityFMD(fCentFMD);
1525     esdCent->SetCentralityTRK(fCentTRK);
1526     esdCent->SetCentralityTKL(fCentTKL);
1527     esdCent->SetCentralityCL0(fCentCL0);
1528     esdCent->SetCentralityCL1(fCentCL1);
1529     esdCent->SetCentralityCND(fCentCND);
1530     esdCent->SetCentralityNPA(fCentNPA);
1531     esdCent->SetCentralityZNA(fCentZNA);
1532     esdCent->SetCentralityZNC(fCentZNC);
1533     esdCent->SetCentralityV0MvsFMD(fCentV0MvsFMD);
1534     esdCent->SetCentralityTKLvsV0M(fCentTKLvsV0M);
1535     esdCent->SetCentralityZEMvsZDC(fCentZEMvsZDC);
1536   }
1537
1538   // filling QA histograms
1539   if (fFillHistos) {    
1540
1541     if (fIsMCInput) { // fill histo with true centrality for simulations
1542       fCentV0M = fCentV0Mtrue;        
1543       fCentV0A = fCentV0Atrue;        
1544       fCentV0C = fCentV0Ctrue;        
1545       fCentV0MEq = fCentV0MEqtrue;        
1546       fCentV0AEq = fCentV0AEqtrue;        
1547       fCentV0CEq = fCentV0CEqtrue;        
1548       fCentFMD = fCentFMDtrue;        
1549       fCentTRK = fCentTRKtrue;        
1550       fCentTKL = fCentTKLtrue;        
1551       fCentCL0 = fCentCL0true;        
1552       fCentCL1 = fCentCL1true;        
1553       fCentCND = fCentCNDtrue;        
1554       fCentZNA = fCentZNAtrue;        
1555       fCentZNC = fCentZNCtrue;        
1556     }
1557
1558
1559     if ((fMB) && (abs(zvtx)<10))        fHOutMultCL1vsTKL->Fill(spdCorr,nTracklets);
1560
1561     if (fCVHN)   fHOutCentV0MCVHN->Fill(fCentV0M);
1562     if (fCVLN)   fHOutCentV0MCVLN->Fill(fCentV0M);
1563     if (fCCENT)  fHOutCentV0MCCENT->Fill(fCentV0M);
1564     if (fCSEMI)  fHOutCentV0MCSEMI->Fill(fCentV0M);
1565     if (fMSL) fHOutCentV0MMSL->Fill(fCentV0M);
1566     if (fMSH) fHOutCentV0MMSH->Fill(fCentV0M);
1567     if (fMUL) fHOutCentV0MMUL->Fill(fCentV0M);
1568     if (fMLL) fHOutCentV0MMLL->Fill(fCentV0M);
1569     if (fEJE) fHOutCentV0MEJE->Fill(fCentV0M);
1570     if (fEGA) fHOutCentV0MEGA->Fill(fCentV0M);
1571     if (fPHS) fHOutCentV0MPHS->Fill(fCentV0M);
1572
1573     if (((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB) && (runType==0)) ||
1574         ((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kINT7) && (runType==1))) { // fill the QA histograms only for MB events!
1575       
1576       fHOutQuality->Fill(fQuality);
1577       fHOutVertex->Fill(zvtx);
1578       fHOutVertexT0->Fill(zvtxT0);
1579       
1580       if (fQuality==0) {  
1581         fHOutCentV0M->Fill(fCentV0M);
1582         fHOutCentV0A->Fill(fCentV0A);
1583         fHOutCentV0C->Fill(fCentV0C);
1584         fHOutCentV0MEq->Fill(fCentV0MEq);
1585         fHOutCentV0AEq->Fill(fCentV0AEq);
1586         fHOutCentV0CEq->Fill(fCentV0CEq);
1587         
1588         if (fCVHNbit)  fHOutCentV0MCVHNinMB->Fill(fCentV0M);
1589         if (fCVLNbit)  fHOutCentV0MCVLNinMB->Fill(fCentV0M);
1590         if (fCCENTbit) fHOutCentV0MCCENTinMB->Fill(fCentV0M);
1591         if (fCSEMIbit) fHOutCentV0MCSEMIinMB->Fill(fCentV0M);
1592         if (fMSL) fHOutCentV0MMSLinMB->Fill(fCentV0M);
1593         if (fMSH) fHOutCentV0MMSHinMB->Fill(fCentV0M);
1594         if (fMUL) fHOutCentV0MMULinMB->Fill(fCentV0M);
1595         if (fMLL) fHOutCentV0MMLLinMB->Fill(fCentV0M);
1596         if (fEJE) fHOutCentV0MEJEinMB->Fill(fCentV0M);
1597         if (fEGA) fHOutCentV0MEGAinMB->Fill(fCentV0M);
1598         if (fPHS) fHOutCentV0MPHSinMB->Fill(fCentV0M);
1599         
1600         fHOutCentFMD->Fill(fCentFMD);
1601         fHOutCentTRK->Fill(fCentTRK);
1602         fHOutCentTKL->Fill(fCentTKL);
1603         fHOutCentCL0->Fill(fCentCL0);
1604         fHOutCentCL1->Fill(fCentCL1);
1605         fHOutCentCND->Fill(fCentCND);
1606         fHOutCentNPA->Fill(fCentNPA);
1607         fHOutCentZNA->Fill(fCentZNA);
1608         fHOutCentZNC->Fill(fCentZNC);
1609         fHOutCentV0MvsFMD->Fill(fCentV0MvsFMD);
1610         fHOutCentTKLvsV0M->Fill(fCentTKLvsV0M);
1611         fHOutCentZEMvsZDC->Fill(fCentZEMvsZDC);
1612         fHOutCentV0MvsCentCL1->Fill(fCentV0M,fCentCL1);
1613         fHOutCentV0MvsCentTRK->Fill(fCentV0M,fCentTRK);
1614         fHOutCentTRKvsCentCL1->Fill(fCentTRK,fCentCL1);
1615         fHOutCentV0MvsCentZDC->Fill(fCentV0M,fCentZEMvsZDC);
1616         fHOutCentV0AvsCentV0C->Fill(fCentV0A,fCentV0C);
1617         fHOutCentV0AvsCentTRK->Fill(fCentV0A,fCentTRK);
1618         fHOutCentV0AvsCentCND->Fill(fCentV0A,fCentCND);
1619         fHOutCentV0AvsCentCL1->Fill(fCentV0A,fCentCL1);
1620         fHOutCentV0CvsCentTRK->Fill(fCentV0C,fCentTRK);
1621         fHOutCentV0CvsCentCND->Fill(fCentV0C,fCentCND);
1622         fHOutCentV0CvsCentCL1->Fill(fCentV0C,fCentCL1);
1623         fHOutCentNPAvsCentV0A->Fill(fCentNPA,fCentV0A);
1624         fHOutCentNPAvsCentV0C->Fill(fCentNPA,fCentV0C);
1625         fHOutCentNPAvsCentTRK->Fill(fCentNPA,fCentTRK);
1626         fHOutCentNPAvsCentCND->Fill(fCentNPA,fCentCND);
1627         fHOutCentNPAvsCentCL1->Fill(fCentNPA,fCentCL1);
1628         fHOutCentZNAvsCentV0A->Fill(fCentZNA,fCentV0A);
1629         fHOutCentZNAvsCentV0C->Fill(fCentZNA,fCentV0C);
1630         fHOutCentZNAvsCentTRK->Fill(fCentZNA,fCentTRK);
1631         fHOutCentZNAvsCentCND->Fill(fCentZNA,fCentCND);
1632         fHOutCentZNAvsCentCL1->Fill(fCentZNA,fCentCL1);
1633
1634         fHOutMultV0AC->Fill(multV0A,multV0C);
1635         fHOutMultV0M->Fill(multV0ACorr+multV0CCorr);
1636         fHOutMultV0A->Fill(multV0ACorr);
1637         fHOutMultV0C->Fill(multV0CCorr);
1638         fHOutMultV0MEq->Fill(multV0AEq+multV0CEq);
1639         fHOutMultV0AEq->Fill(multV0AEq);
1640         fHOutMultV0CEq->Fill(multV0CEq);
1641         fHOutMultV0Mnc->Fill(multV0A+multV0C);
1642         fHOutMultV0Anc->Fill(multV0A);
1643         fHOutMultV0Cnc->Fill(multV0C);
1644         fHOutMultV0O->Fill(multV0AOnline+multV0COnline);
1645         fHOutMultV0Cells->Fill(nV0A,nV0C); 
1646         fHOutMultFMD->Fill(multFMDA+multFMDC);
1647         fHOutMultTRK->Fill(nTracks);
1648         fHOutMultTKL->Fill(nTracklets);
1649         fHOutMultCL0->Fill(nClusters[0]);
1650         fHOutMultCL1->Fill(spdCorr);
1651         fHOutMultCND->Fill(multCND);
1652         fHOutMultNPA->Fill(Npart);
1653         if(znaFired)fHOutMultZNA->Fill(znaTower);
1654         if(zncFired)fHOutMultZNC->Fill(zncTower);
1655
1656         fHOutMultV0MvsZDN->Fill(v0Corr,(zncEnergy+znaEnergy));
1657         fHOutMultZEMvsZDN->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy));
1658         fHOutMultV0MvsZDC->Fill(v0Corr,(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1659         fHOutMultZEMvsZDC->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1660         fHOutMultZEMvsZDCw->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy),fCentV0M);
1661         fHOutMultV0MvsCL1->Fill(v0Corr,spdCorr);
1662         fHOutMultV0MvsTRK->Fill(v0Corr,nTracks);
1663         fHOutMultTRKvsCL1->Fill(nTracks,spdCorr);
1664         fHOutMultV0MvsV0O->Fill(v0Corr,(multV0AOnline+multV0COnline));
1665         fHOutMultV0OvsCL1->Fill((multV0AOnline+multV0COnline),spdCorr);
1666         fHOutMultV0OvsTRK->Fill((multV0AOnline+multV0COnline),nTracks);
1667       } else if (fQuality%2 == 0) {
1668         fHOutCentV0Mqual1->Fill(fCentV0M);
1669         fHOutCentTRKqual1->Fill(fCentTRK);
1670         fHOutCentCL1qual1->Fill(fCentCL1);
1671         fHOutMultV0MvsCL1qual1->Fill(v0Corr,spdCorr);
1672         fHOutMultV0MvsTRKqual1->Fill(v0Corr,nTracks);
1673         fHOutMultTRKvsCL1qual1->Fill(nTracks,spdCorr);
1674       } else {
1675         fHOutCentV0Mqual2->Fill(fCentV0M);
1676         fHOutCentTRKqual2->Fill(fCentTRK);
1677         fHOutCentCL1qual2->Fill(fCentCL1);
1678         fHOutMultV0MvsCL1qual2->Fill(v0Corr,spdCorr);
1679         fHOutMultV0MvsTRKqual2->Fill(v0Corr,nTracks);
1680         fHOutMultTRKvsCL1qual2->Fill(nTracks,spdCorr);
1681       }
1682     }
1683     PostData(1, fOutputList); 
1684   }
1685 }
1686 //________________________________________________________________________
1687 void AliCentralitySelectionTask::Terminate(Option_t */*option*/)
1688 {
1689   // Terminate analysis
1690 }
1691 //________________________________________________________________________
1692 Int_t AliCentralitySelectionTask::SetupRun(const AliVEvent* const esd)
1693 {
1694   // Setup files for run
1695
1696   if (!esd)
1697     return -1;
1698
1699   // check if something to be done
1700   if (fCurrentRun == esd->GetRunNumber())
1701     return 0;
1702   else
1703     fCurrentRun = esd->GetRunNumber();
1704
1705   TString fileName =(Form("%s/COMMON/CENTRALITY/data/centrality.root", AliAnalysisManager::GetOADBPath()));
1706   AliInfo(Form("Setup Centrality Selection for run %d with file %s\n",fCurrentRun,fileName.Data()));
1707
1708   AliOADBContainer *con = new AliOADBContainer("OADB");
1709   con->InitFromFile(fileName,"Centrality");
1710
1711   AliOADBCentrality*  centOADB = 0;
1712   centOADB = (AliOADBCentrality*)(con->GetObject(fCurrentRun));
1713   if (!centOADB) {
1714     AliWarning(Form("Centrality OADB does not exist for run %d, using Default \n",fCurrentRun ));
1715     centOADB  = (AliOADBCentrality*)(con->GetDefaultObject("oadbDefault"));
1716   }
1717
1718   Bool_t isHijing=kFALSE;
1719   Bool_t isDpmjet=kFALSE;
1720   AliAnalysisManager* anMan = AliAnalysisManager::GetAnalysisManager();
1721   AliMCEventHandler* eventHandler = (AliMCEventHandler*)anMan->GetMCtruthEventHandler();
1722   AliMCEvent*  mcEvent=0;
1723   if (fIsMCInput && eventHandler && (mcEvent=eventHandler->MCEvent()) ) {     
1724     AliGenEventHeader* mcGenH = mcEvent->GenEventHeader();
1725     if (mcGenH->InheritsFrom(AliGenHijingEventHeader::Class())) isHijing=kTRUE;
1726     else if (mcGenH->InheritsFrom(AliGenCocktailEventHeader::Class())) isHijing=kTRUE;
1727     else if (mcGenH->InheritsFrom(AliGenDPMjetEventHeader::Class())) isDpmjet=kTRUE;
1728   }
1729
1730
1731   // modes
1732   fUseScaling   = centOADB->UseScaling();
1733   fUseCleaning  = centOADB->UseCleaning();
1734
1735   // cuts
1736   fZVCut        = centOADB->ZVCut();
1737   fOutliersCut  = centOADB->OutliersCut(); 
1738
1739   // centrality histos
1740   fHtempV0M       = centOADB->V0hist(); 
1741   fHtempV0A       = centOADB->V0Ahist(); 
1742   fHtempV0C       = centOADB->V0Chist(); 
1743   fHtempV0MEq     = centOADB->V0Eqhist(); 
1744   fHtempV0AEq     = centOADB->V0AEqhist(); 
1745   fHtempV0CEq     = centOADB->V0CEqhist(); 
1746   fHtempTRK       = centOADB->TPChist();
1747   fHtempCL1       = centOADB->SPDhist();
1748   fHtempCND       = centOADB->CNDhist();
1749   fHtempFMD       = centOADB->FMDhist();
1750   fHtempZNA       = centOADB->ZNAhist();
1751   fHtempZNC       = centOADB->ZNChist();
1752   fHtempZEMvsZDC  = centOADB->ZEMvsZDChist();
1753
1754    if (isHijing) {       
1755      fHtempNPA           = centOADB->NPAhist();
1756      fHtempV0Mtrue       = centOADB->V0histtrue(); 
1757      fHtempV0Atrue       = centOADB->V0Ahisttrue(); 
1758      fHtempV0Ctrue       = centOADB->V0Chisttrue(); 
1759      fHtempV0MEqtrue     = centOADB->V0Eqhisttrue(); 
1760      fHtempV0AEqtrue     = centOADB->V0AEqhisttrue(); 
1761      fHtempV0CEqtrue     = centOADB->V0CEqhisttrue(); 
1762      fHtempTRKtrue       = centOADB->TPChisttrue();
1763      fHtempCL1true       = centOADB->SPDhisttrue();
1764      fHtempCNDtrue       = centOADB->CNDhisttrue();
1765      fHtempFMDtrue       = centOADB->FMDhisttrue();
1766      fHtempZNAtrue       = centOADB->ZNAhisttrue();
1767      fHtempZNCtrue       = centOADB->ZNChisttrue();
1768    }   else if (isDpmjet)   {
1769      fHtempNPA           = centOADB->NPAhistDPM();
1770      fHtempV0Mtrue       = centOADB->V0histtrueDPM(); 
1771      fHtempV0Atrue       = centOADB->V0AhisttrueDPM(); 
1772      fHtempV0Ctrue       = centOADB->V0ChisttrueDPM(); 
1773      fHtempV0MEqtrue     = centOADB->V0EqhisttrueDPM(); 
1774      fHtempV0AEqtrue     = centOADB->V0AEqhisttrueDPM(); 
1775      fHtempV0CEqtrue     = centOADB->V0CEqhisttrueDPM(); 
1776      fHtempTRKtrue       = centOADB->TPChisttrueDPM();
1777      fHtempCL1true       = centOADB->SPDhisttrueDPM();
1778      fHtempCNDtrue       = centOADB->CNDhisttrueDPM();
1779      fHtempFMDtrue       = centOADB->FMDhisttrueDPM();
1780      fHtempZNAtrue       = centOADB->ZNAhisttrueDPM();
1781      fHtempZNCtrue       = centOADB->ZNChisttrueDPM();
1782    }
1783
1784
1785     TString path = gSystem->ExpandPathName(fileName.Data());
1786   if (!fHtempV0M) AliWarning(Form("Calibration for V0M does not exist in %s", path.Data()));
1787   if (!fHtempV0A) AliWarning(Form("Calibration for V0A does not exist in %s", path.Data()));
1788   if (!fHtempV0C) AliWarning(Form("Calibration for V0C does not exist in %s", path.Data()));
1789   if (!fHtempV0MEq) AliWarning(Form("Calibration for V0MEq does not exist in %s", path.Data()));
1790   if (!fHtempV0AEq) AliWarning(Form("Calibration for V0AEq does not exist in %s", path.Data()));
1791   if (!fHtempV0CEq) AliWarning(Form("Calibration for V0CEq does not exist in %s", path.Data()));
1792   if (!fHtempTRK) AliWarning(Form("Calibration for TRK does not exist in %s", path.Data()));
1793   if (!fHtempCL1) AliWarning(Form("Calibration for CL1 does not exist in %s", path.Data()));
1794   if (!fHtempCND) AliWarning(Form("Calibration for CND does not exist in %s", path.Data()));
1795   if (!fHtempZNA) AliWarning(Form("Calibration for ZNA does not exist in %s", path.Data()));
1796   if (!fHtempZNC) AliWarning(Form("Calibration for ZNC does not exist in %s", path.Data()));
1797   if (!fHtempFMD) AliWarning(Form("Calibration for FMD does not exist in %s", path.Data()));
1798   if (!fHtempZEMvsZDC) AliWarning(Form("Calibration for ZEMvsZDC does not exist in %s", path.Data()));
1799   if (!fHtempNPA) AliWarning(Form("Calibration for NPA does not exist in %s", path.Data()));
1800
1801   if (!fHtempV0Mtrue) AliWarning(Form("Calibration for V0Mtrue does not exist in %s", path.Data()));
1802   if (!fHtempV0Atrue) AliWarning(Form("Calibration for V0Atrue does not exist in %s", path.Data()));
1803   if (!fHtempV0Ctrue) AliWarning(Form("Calibration for V0Ctrue does not exist in %s", path.Data()));
1804   if (!fHtempV0MEqtrue) AliWarning(Form("Calibration for V0MEqtrue does not exist in %s", path.Data()));
1805   if (!fHtempV0AEqtrue) AliWarning(Form("Calibration for V0AEqtrue does not exist in %s", path.Data()));
1806   if (!fHtempV0CEqtrue) AliWarning(Form("Calibration for V0CEqtrue does not exist in %s", path.Data()));
1807   if (!fHtempTRKtrue) AliWarning(Form("Calibration for TRKtrue does not exist in %s", path.Data()));
1808   if (!fHtempCL1true) AliWarning(Form("Calibration for CL1true does not exist in %s", path.Data()));
1809   if (!fHtempCNDtrue) AliWarning(Form("Calibration for CNDtrue does not exist in %s", path.Data()));
1810   if (!fHtempZNAtrue) AliWarning(Form("Calibration for ZNAtrue does not exist in %s", path.Data()));
1811   if (!fHtempZNCtrue) AliWarning(Form("Calibration for ZNCtrue does not exist in %s", path.Data()));
1812   if (!fHtempFMDtrue) AliWarning(Form("Calibration for FMDtrue does not exist in %s", path.Data()));
1813
1814
1815   // scale factors
1816   fV0MScaleFactor    = centOADB->V0MScaleFactor();
1817   fSPDScaleFactor    = centOADB->SPDScaleFactor();
1818   fTPCScaleFactor    = centOADB->TPCScaleFactor();
1819   fV0MScaleFactorMC  = centOADB->V0MScaleFactorMC();
1820
1821   // outliers parameters
1822   fV0MSPDOutlierPar0 = centOADB->V0MSPDOutlierPar0();      
1823   fV0MSPDOutlierPar1 = centOADB->V0MSPDOutlierPar1();     
1824   fV0MTPCOutlierPar0 = centOADB->V0MTPCOutlierPar0();      
1825   fV0MTPCOutlierPar1 = centOADB->V0MTPCOutlierPar1();     
1826                                                    
1827   fV0MSPDSigmaOutlierPar0 = centOADB->V0MSPDSigmaOutlierPar0(); 
1828   fV0MSPDSigmaOutlierPar1 = centOADB->V0MSPDSigmaOutlierPar1(); 
1829   fV0MSPDSigmaOutlierPar2 = centOADB->V0MSPDSigmaOutlierPar2();
1830   fV0MTPCSigmaOutlierPar0 = centOADB->V0MTPCSigmaOutlierPar0(); 
1831   fV0MTPCSigmaOutlierPar1 = centOADB->V0MTPCSigmaOutlierPar1(); 
1832   fV0MTPCSigmaOutlierPar2 = centOADB->V0MTPCSigmaOutlierPar2(); 
1833                             
1834   fV0MZDCOutlierPar0 =      centOADB->V0MZDCOutlierPar0();      
1835   fV0MZDCOutlierPar1 =      centOADB->V0MZDCOutlierPar1();      
1836   fV0MZDCEcalOutlierPar0 =  centOADB->V0MZDCEcalOutlierPar0();  
1837   fV0MZDCEcalOutlierPar1 =  centOADB->V0MZDCEcalOutlierPar1();  
1838
1839   return 0;
1840 }
1841
1842
1843
1844 //________________________________________________________________________
1845 Bool_t AliCentralitySelectionTask::IsOutlierV0MSPD(Float_t spd, Float_t v0, Int_t cent) const
1846 {
1847   // Clean outliers
1848   Float_t val = fV0MSPDOutlierPar0 +  fV0MSPDOutlierPar1 * v0;
1849   Float_t spdSigma = fV0MSPDSigmaOutlierPar0 + fV0MSPDSigmaOutlierPar1*cent + fV0MSPDSigmaOutlierPar2*cent*cent;
1850   if ( TMath::Abs(spd-val) > fOutliersCut*spdSigma ) 
1851     return kTRUE;
1852   else 
1853     return kFALSE;
1854 }
1855
1856 //________________________________________________________________________
1857 Bool_t AliCentralitySelectionTask::IsOutlierV0MTPC(Int_t tracks, Float_t v0, Int_t cent) const
1858 {
1859   // Clean outliers
1860   Float_t val = fV0MTPCOutlierPar0 +  fV0MTPCOutlierPar1 * v0;
1861   Float_t tpcSigma = fV0MTPCSigmaOutlierPar0 + fV0MTPCSigmaOutlierPar1*cent + fV0MTPCSigmaOutlierPar2*cent*cent;
1862   if ( TMath::Abs(tracks-val) > fOutliersCut*tpcSigma ) 
1863     return kTRUE;
1864   else 
1865     return kFALSE;
1866 }
1867
1868 //________________________________________________________________________
1869 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDC(Float_t zdc, Float_t v0) const
1870 {
1871   // Clean outliers
1872   Float_t val = fV0MZDCOutlierPar0 + fV0MZDCOutlierPar1 * v0;
1873   if (zdc >  val) 
1874     return kTRUE;
1875   else 
1876   return kFALSE;
1877 }
1878
1879 //________________________________________________________________________
1880 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDCECal(Float_t zdc, Float_t v0) const
1881 {
1882   // Clean outliers
1883   Float_t val = fV0MZDCEcalOutlierPar0 + fV0MZDCEcalOutlierPar1 * v0;
1884   if (zdc >  val) 
1885     return kTRUE;
1886   else 
1887     return kFALSE;
1888 }