]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ANALYSIS/AliCentralitySelectionTask.cxx
Added host name and alien site to fileinfo.log
[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   fZVCut(10),
110   fOutliersCut(5),
111   fQuality(999),
112   fIsSelected(0),
113   fMSL(0),
114   fMSH(0),
115   fMUL(0),
116   fMLL(0),
117   fEJE(0),
118   fEGA(0),
119   fPHS(0),
120   fMB(0),
121   fCVHN(0),
122   fCVLN(0),
123   fCVHNbit(0),
124   fCVLNbit(0),
125   fCCENT(0),
126   fCSEMI(0),
127   fCCENTbit(0),
128   fCSEMIbit(0),
129   fCentV0M(0),
130   fCentV0A(0),
131   fCentV0C(0),
132   fCentFMD(0),
133   fCentTRK(0),
134   fCentTKL(0),
135   fCentCL0(0),
136   fCentCL1(0),
137   fCentCND(0),
138   fCentNPA(0),
139   fCentV0MvsFMD(0),
140   fCentTKLvsV0M(0),
141   fCentZEMvsZDC(0),
142   fHtempV0M(0),
143   fHtempV0A(0),
144   fHtempV0C(0),
145   fHtempFMD(0),
146   fHtempTRK(0),
147   fHtempTKL(0),
148   fHtempCL0(0),
149   fHtempCL1(0),
150   fHtempCND(0),
151   fHtempNPA(0),
152   fHtempV0MvsFMD(0),
153   fHtempTKLvsV0M(0),
154   fHtempZEMvsZDC(0),
155   fOutputList(0),
156   fHOutCentV0M    (0),
157   fHOutCentV0A    (0),
158   fHOutCentV0C    (0),
159   fHOutCentV0MCVHN(0),
160   fHOutCentV0MCVLN(0),
161   fHOutCentV0MCVHNinMB(0),
162   fHOutCentV0MCVLNinMB(0),
163   fHOutCentV0MCCENT(0),
164   fHOutCentV0MCSEMI(0),
165   fHOutCentV0MCCENTinMB(0),
166   fHOutCentV0MCSEMIinMB(0),
167   fHOutCentV0MMSL(0),
168   fHOutCentV0MMSH(0),
169   fHOutCentV0MMUL(0),
170   fHOutCentV0MMLL(0),
171   fHOutCentV0MEJE(0),
172   fHOutCentV0MEGA(0),
173   fHOutCentV0MPHS(0),
174   fHOutCentV0MMSLinMB(0),
175   fHOutCentV0MMSHinMB(0),
176   fHOutCentV0MMULinMB(0),
177   fHOutCentV0MMLLinMB(0),
178   fHOutCentV0MEJEinMB(0),
179   fHOutCentV0MEGAinMB(0),
180   fHOutCentV0MPHSinMB(0),
181   fHOutCentFMD     (0),
182   fHOutCentTRK     (0),
183   fHOutCentTKL     (0),
184   fHOutCentCL0     (0),
185   fHOutCentCL1     (0),
186   fHOutCentCND     (0),
187   fHOutCentNPA     (0),
188   fHOutCentV0MvsFMD(0),
189   fHOutCentTKLvsV0M(0),
190   fHOutCentZEMvsZDC(0),
191   fHOutCentV0MvsCentCL1(0),
192   fHOutCentV0MvsCentTRK(0),
193   fHOutCentTRKvsCentCL1(0),
194   fHOutCentV0MvsCentZDC(0),
195   fHOutCentV0AvsCentV0C(0),
196   fHOutCentV0AvsCentTRK(0),
197   fHOutCentV0AvsCentCND(0),
198   fHOutCentV0AvsCentCL1(0),
199   fHOutCentV0CvsCentTRK(0),
200   fHOutCentV0CvsCentCND(0),
201   fHOutCentV0CvsCentCL1(0),
202   fHOutCentNPAvsCentV0A(0),
203   fHOutCentNPAvsCentV0C(0),
204   fHOutCentNPAvsCentTRK(0),
205   fHOutCentNPAvsCentCND(0),
206   fHOutCentNPAvsCentCL1(0),
207   fHOutMultV0AC(0),
208   fHOutMultV0M(0),
209   fHOutMultV0A(0),
210   fHOutMultV0C(0),
211   fHOutMultV0Mnc(0),
212   fHOutMultV0Anc(0),
213   fHOutMultV0Cnc(0),
214   fHOutMultV0O(0),
215   fHOutMultV0Cells(0),
216   fHOutMultFMD(0),
217   fHOutMultTRK(0),
218   fHOutMultTKL(0),
219   fHOutMultCL0(0),
220   fHOutMultCL1(0),
221   fHOutMultCND(0),
222   fHOutMultNPA(0),
223   fHOutMultV0MvsZDN(0),
224   fHOutMultZEMvsZDN(0),
225   fHOutMultV0MvsZDC(0),
226   fHOutMultZEMvsZDC(0),
227   fHOutMultZEMvsZDCw(0),
228   fHOutMultV0MvsCL1(0),
229   fHOutMultV0MvsTRK(0),
230   fHOutMultTRKvsCL1(0),
231   fHOutMultV0MvsV0O(0),
232   fHOutMultV0OvsCL1(0),
233   fHOutMultV0OvsTRK(0),
234   fHOutMultCL1vsTKL(0),
235   fHOutCentV0Mqual1(0),
236   fHOutCentTRKqual1(0),
237   fHOutCentCL1qual1(0),
238   fHOutMultV0MvsCL1qual1(0),
239   fHOutMultV0MvsTRKqual1(0),
240   fHOutMultTRKvsCL1qual1(0),
241   fHOutCentV0Mqual2(0),
242   fHOutCentTRKqual2(0),
243   fHOutCentCL1qual2(0),
244   fHOutMultV0MvsCL1qual2(0),
245   fHOutMultV0MvsTRKqual2(0),
246   fHOutMultTRKvsCL1qual2(0),
247   fHOutQuality(0),
248   fHOutVertex(0),
249   fHOutVertexT0(0)
250 {   
251   // Default constructor
252   AliInfo("Centrality Selection enabled.");
253
254   fUseScaling=kTRUE;
255   fUseCleaning=kTRUE;
256   fFillHistos=kFALSE;
257   fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO.,AliESDTZERO."
258     ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks ";
259 }   
260
261 //________________________________________________________________________
262 AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
263   AliAnalysisTaskSE(name),
264   fAnalysisInput("ESD"),
265   fIsMCInput(kFALSE),
266   fCurrentRun(-1),
267   fUseScaling(0),
268   fUseCleaning(0),
269   fFillHistos(0),
270   fV0MScaleFactor(0),
271   fSPDScaleFactor(0),
272   fTPCScaleFactor(0),
273   fV0MScaleFactorMC(0),
274   fV0MSPDOutlierPar0(0),  
275   fV0MSPDOutlierPar1(0),  
276   fV0MTPCOutlierPar0(0),  
277   fV0MTPCOutlierPar1(0),  
278   fV0MSPDSigmaOutlierPar0(0),  
279   fV0MSPDSigmaOutlierPar1(0),  
280   fV0MSPDSigmaOutlierPar2(0),  
281   fV0MTPCSigmaOutlierPar0(0),  
282   fV0MTPCSigmaOutlierPar1(0),  
283   fV0MTPCSigmaOutlierPar2(0),   
284   fV0MZDCOutlierPar0(0),            
285   fV0MZDCOutlierPar1(0),            
286   fV0MZDCEcalOutlierPar0(0),   
287   fV0MZDCEcalOutlierPar1(0),   
288   fTrackCuts(0),
289   fZVCut(10),
290   fOutliersCut(5),
291   fQuality(999),
292   fIsSelected(0),
293   fMSL(0),
294   fMSH(0),
295   fMUL(0),
296   fMLL(0),
297   fEJE(0),
298   fEGA(0),
299   fPHS(0),
300   fMB(0),
301   fCVHN(0),
302   fCVLN(0),
303   fCVHNbit(0),
304   fCVLNbit(0),
305   fCCENT(0),
306   fCSEMI(0),
307   fCCENTbit(0),
308   fCSEMIbit(0),
309   fCentV0M(0),
310   fCentV0A(0),
311   fCentV0C(0),
312   fCentFMD(0),
313   fCentTRK(0),
314   fCentTKL(0),
315   fCentCL0(0),
316   fCentCL1(0),
317   fCentCND(0),
318   fCentNPA(0),
319   fCentV0MvsFMD(0),
320   fCentTKLvsV0M(0),
321   fCentZEMvsZDC(0),
322   fHtempV0M(0),
323   fHtempV0A(0),
324   fHtempV0C(0),
325   fHtempFMD(0),
326   fHtempTRK(0),
327   fHtempTKL(0),
328   fHtempCL0(0),
329   fHtempCL1(0),
330   fHtempCND(0),
331   fHtempNPA(0),
332   fHtempV0MvsFMD(0),
333   fHtempTKLvsV0M(0),
334   fHtempZEMvsZDC(0),
335   fOutputList(0),
336   fHOutCentV0M    (0),
337   fHOutCentV0A    (0),
338   fHOutCentV0C    (0),
339   fHOutCentV0MCVHN(0),
340   fHOutCentV0MCVLN(0),
341   fHOutCentV0MCVHNinMB(0),
342   fHOutCentV0MCVLNinMB(0),
343   fHOutCentV0MCCENT(0),
344   fHOutCentV0MCSEMI(0),
345   fHOutCentV0MCCENTinMB(0),
346   fHOutCentV0MCSEMIinMB(0),
347   fHOutCentV0MMSL(0),
348   fHOutCentV0MMSH(0),
349   fHOutCentV0MMUL(0),
350   fHOutCentV0MMLL(0),
351   fHOutCentV0MEJE(0),
352   fHOutCentV0MEGA(0),
353   fHOutCentV0MPHS(0),
354   fHOutCentV0MMSLinMB(0),
355   fHOutCentV0MMSHinMB(0),
356   fHOutCentV0MMULinMB(0),
357   fHOutCentV0MMLLinMB(0),
358   fHOutCentV0MEJEinMB(0),
359   fHOutCentV0MEGAinMB(0),
360   fHOutCentV0MPHSinMB(0),
361   fHOutCentFMD     (0),
362   fHOutCentTRK     (0),
363   fHOutCentTKL     (0),
364   fHOutCentCL0     (0),
365   fHOutCentCL1     (0),
366   fHOutCentCND     (0),
367   fHOutCentNPA     (0),
368   fHOutCentV0MvsFMD(0),
369   fHOutCentTKLvsV0M(0),
370   fHOutCentZEMvsZDC(0),
371   fHOutCentV0MvsCentCL1(0),
372   fHOutCentV0MvsCentTRK(0),
373   fHOutCentTRKvsCentCL1(0),
374   fHOutCentV0MvsCentZDC(0),
375   fHOutCentV0AvsCentV0C(0),
376   fHOutCentV0AvsCentTRK(0),
377   fHOutCentV0AvsCentCND(0),
378   fHOutCentV0AvsCentCL1(0),
379   fHOutCentV0CvsCentTRK(0),
380   fHOutCentV0CvsCentCND(0),
381   fHOutCentV0CvsCentCL1(0),
382   fHOutCentNPAvsCentV0A(0),
383   fHOutCentNPAvsCentV0C(0),
384   fHOutCentNPAvsCentTRK(0),
385   fHOutCentNPAvsCentCND(0),
386   fHOutCentNPAvsCentCL1(0),
387   fHOutMultV0AC(0),
388   fHOutMultV0M(0),
389   fHOutMultV0A(0),
390   fHOutMultV0C(0),
391   fHOutMultV0Mnc(0),
392   fHOutMultV0Anc(0),
393   fHOutMultV0Cnc(0),
394   fHOutMultV0O(0),
395   fHOutMultV0Cells(0),
396   fHOutMultFMD(0),
397   fHOutMultTRK(0),
398   fHOutMultTKL(0),
399   fHOutMultCL0(0),
400   fHOutMultCL1(0),
401   fHOutMultCND(0),
402   fHOutMultNPA(0),
403   fHOutMultV0MvsZDN(0),
404   fHOutMultZEMvsZDN(0),
405   fHOutMultV0MvsZDC(0),
406   fHOutMultZEMvsZDC(0),
407   fHOutMultZEMvsZDCw(0),
408   fHOutMultV0MvsCL1(0),
409   fHOutMultV0MvsTRK(0),
410   fHOutMultTRKvsCL1(0),
411   fHOutMultV0MvsV0O(0),
412   fHOutMultV0OvsCL1(0),
413   fHOutMultV0OvsTRK(0),
414   fHOutMultCL1vsTKL(0),
415   fHOutCentV0Mqual1(0),
416   fHOutCentTRKqual1(0),
417   fHOutCentCL1qual1(0),
418   fHOutMultV0MvsCL1qual1(0),
419   fHOutMultV0MvsTRKqual1(0),
420   fHOutMultTRKvsCL1qual1(0),
421   fHOutCentV0Mqual2(0),
422   fHOutCentTRKqual2(0),
423   fHOutCentCL1qual2(0),
424   fHOutMultV0MvsCL1qual2(0),
425   fHOutMultV0MvsTRKqual2(0),
426   fHOutMultTRKvsCL1qual2(0),
427   fHOutQuality(0),
428   fHOutVertex(0),
429   fHOutVertexT0(0)
430 {
431   // Default constructor
432   AliInfo("Centrality Selection enabled.");
433   //DefineOutput(1, TList::Class());
434   fUseScaling=kTRUE;
435   fUseCleaning=kTRUE;
436   fFillHistos=kFALSE;
437   fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO.,AliESDTZERO."
438     ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks ";
439 }
440
441 //________________________________________________________________________
442 AliCentralitySelectionTask& AliCentralitySelectionTask::operator=(const AliCentralitySelectionTask& c)
443 {
444   // Assignment operator
445   if (this!=&c) {
446     AliAnalysisTaskSE::operator=(c);
447   }
448   return *this;
449 }
450
451 //________________________________________________________________________
452 AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelectionTask& ana):
453   AliAnalysisTaskSE(ana),
454   fAnalysisInput(ana.fAnalysisInput),
455   fIsMCInput(ana.fIsMCInput),
456   fCurrentRun(ana.fCurrentRun),
457   fUseScaling(ana.fUseScaling),
458   fUseCleaning(ana.fUseCleaning),
459   fFillHistos(ana.fFillHistos),
460   fV0MScaleFactor(ana.fV0MScaleFactor),
461   fSPDScaleFactor(ana.fSPDScaleFactor),
462   fTPCScaleFactor(ana.fTPCScaleFactor),
463   fV0MScaleFactorMC(ana.fV0MScaleFactorMC),
464   fV0MSPDOutlierPar0(ana.fV0MSPDOutlierPar0),  
465   fV0MSPDOutlierPar1(ana.fV0MSPDOutlierPar1),  
466   fV0MTPCOutlierPar0(ana.fV0MTPCOutlierPar0),  
467   fV0MTPCOutlierPar1(ana.fV0MTPCOutlierPar1),  
468   fV0MSPDSigmaOutlierPar0(ana.fV0MSPDSigmaOutlierPar0),  
469   fV0MSPDSigmaOutlierPar1(ana.fV0MSPDSigmaOutlierPar1),  
470   fV0MSPDSigmaOutlierPar2(ana.fV0MSPDSigmaOutlierPar2),  
471   fV0MTPCSigmaOutlierPar0(ana.fV0MTPCSigmaOutlierPar0),  
472   fV0MTPCSigmaOutlierPar1(ana.fV0MTPCSigmaOutlierPar1),  
473   fV0MTPCSigmaOutlierPar2(ana.fV0MTPCSigmaOutlierPar2), 
474   fV0MZDCOutlierPar0(ana.fV0MZDCOutlierPar0),       
475   fV0MZDCOutlierPar1(ana.fV0MZDCOutlierPar1),       
476   fV0MZDCEcalOutlierPar0(ana.fV0MZDCEcalOutlierPar0),   
477   fV0MZDCEcalOutlierPar1(ana.fV0MZDCEcalOutlierPar1),   
478   fTrackCuts(ana.fTrackCuts),
479   fZVCut(ana.fZVCut),
480   fOutliersCut(ana.fOutliersCut),
481   fQuality(ana.fQuality),
482   fIsSelected(ana.fIsSelected),
483   fMSL(ana.fMSL),
484   fMSH(ana.fMSH),
485   fMUL(ana.fMUL),
486   fMLL(ana.fMLL),
487   fEJE(ana.fEJE),
488   fEGA(ana.fEGA),
489   fPHS(ana.fPHS),
490   fMB(ana.fMB),
491   fCVHN(ana.fCVHN),
492   fCVLN(ana.fCVLN),
493   fCVHNbit(ana.fCVHNbit),
494   fCVLNbit(ana.fCVLNbit),
495   fCCENT(ana.fCCENT),
496   fCSEMI(ana.fCSEMI),
497   fCCENTbit(ana.fCCENTbit),
498   fCSEMIbit(ana.fCSEMIbit),
499   fCentV0M(ana.fCentV0M),
500   fCentV0A(ana.fCentV0A),
501   fCentV0C(ana.fCentV0C),
502   fCentFMD(ana.fCentFMD),
503   fCentTRK(ana.fCentTRK),
504   fCentTKL(ana.fCentTKL),
505   fCentCL0(ana.fCentCL0),
506   fCentCL1(ana.fCentCL1),
507   fCentCND(ana.fCentCND),
508   fCentNPA(ana.fCentNPA),
509   fCentV0MvsFMD(ana.fCentV0MvsFMD),
510   fCentTKLvsV0M(ana.fCentTKLvsV0M),
511   fCentZEMvsZDC(ana.fCentZEMvsZDC),
512   fHtempV0M(ana.fHtempV0M),
513   fHtempV0A(ana.fHtempV0A),
514   fHtempV0C(ana.fHtempV0C),
515   fHtempFMD(ana.fHtempFMD),
516   fHtempTRK(ana.fHtempTRK),
517   fHtempTKL(ana.fHtempTKL),
518   fHtempCL0(ana.fHtempCL0),
519   fHtempCL1(ana.fHtempCL1),
520   fHtempCND(ana.fHtempCND),
521   fHtempNPA(ana.fHtempNPA),
522   fHtempV0MvsFMD(ana.fHtempV0MvsFMD),
523   fHtempTKLvsV0M(ana.fHtempTKLvsV0M),
524   fHtempZEMvsZDC(ana.fHtempZEMvsZDC),
525   fOutputList(ana.fOutputList),
526   fHOutCentV0M    (ana.fHOutCentV0M    ),
527   fHOutCentV0A    (ana.fHOutCentV0A    ),
528   fHOutCentV0C    (ana.fHOutCentV0C    ),
529   fHOutCentV0MCVHN(ana.fHOutCentV0MCVHN),
530   fHOutCentV0MCVLN(ana.fHOutCentV0MCVLN),
531   fHOutCentV0MCVHNinMB(ana.fHOutCentV0MCVHNinMB),
532   fHOutCentV0MCVLNinMB(ana.fHOutCentV0MCVLNinMB),
533   fHOutCentV0MCCENT(ana.fHOutCentV0MCCENT),
534   fHOutCentV0MCSEMI(ana.fHOutCentV0MCSEMI),
535   fHOutCentV0MCCENTinMB(ana.fHOutCentV0MCCENTinMB),
536   fHOutCentV0MCSEMIinMB(ana.fHOutCentV0MCSEMIinMB),
537   fHOutCentV0MMSL(ana.fHOutCentV0MMSL),
538   fHOutCentV0MMSH(ana.fHOutCentV0MMSH),
539   fHOutCentV0MMUL(ana.fHOutCentV0MMUL),
540   fHOutCentV0MMLL(ana.fHOutCentV0MMLL),
541   fHOutCentV0MEJE(ana.fHOutCentV0MEJE),
542   fHOutCentV0MEGA(ana.fHOutCentV0MEGA),
543   fHOutCentV0MPHS(ana.fHOutCentV0MPHS),
544   fHOutCentV0MMSLinMB(ana.fHOutCentV0MMSLinMB),
545   fHOutCentV0MMSHinMB(ana.fHOutCentV0MMSHinMB),
546   fHOutCentV0MMULinMB(ana.fHOutCentV0MMULinMB),
547   fHOutCentV0MMLLinMB(ana.fHOutCentV0MMLLinMB),
548   fHOutCentV0MEJEinMB(ana.fHOutCentV0MEJEinMB),
549   fHOutCentV0MEGAinMB(ana.fHOutCentV0MEGAinMB),
550   fHOutCentV0MPHSinMB(ana.fHOutCentV0MPHSinMB),
551   fHOutCentFMD     (ana.fHOutCentFMD     ),
552   fHOutCentTRK     (ana.fHOutCentTRK     ),
553   fHOutCentTKL     (ana.fHOutCentTKL     ),
554   fHOutCentCL0     (ana.fHOutCentCL0     ),
555   fHOutCentCL1     (ana.fHOutCentCL1     ),
556   fHOutCentCND     (ana.fHOutCentCND     ),
557   fHOutCentNPA     (ana.fHOutCentNPA     ),
558   fHOutCentV0MvsFMD(ana.fHOutCentV0MvsFMD),
559   fHOutCentTKLvsV0M(ana.fHOutCentTKLvsV0M),
560   fHOutCentZEMvsZDC(ana.fHOutCentZEMvsZDC),
561   fHOutCentV0MvsCentCL1(ana.fHOutCentV0MvsCentCL1),
562   fHOutCentV0MvsCentTRK(ana.fHOutCentV0MvsCentTRK),
563   fHOutCentTRKvsCentCL1(ana.fHOutCentTRKvsCentCL1),
564   fHOutCentV0MvsCentZDC(ana.fHOutCentV0MvsCentZDC),
565   fHOutCentV0AvsCentV0C(ana.fHOutCentV0AvsCentV0C),
566   fHOutCentV0AvsCentTRK(ana.fHOutCentV0AvsCentTRK),
567   fHOutCentV0AvsCentCND(ana.fHOutCentV0AvsCentCND),
568   fHOutCentV0AvsCentCL1(ana.fHOutCentV0AvsCentCL1),
569   fHOutCentV0CvsCentTRK(ana.fHOutCentV0CvsCentTRK),
570   fHOutCentV0CvsCentCND(ana.fHOutCentV0CvsCentCND),
571   fHOutCentV0CvsCentCL1(ana.fHOutCentV0CvsCentCL1),
572   fHOutCentNPAvsCentV0A(ana.fHOutCentNPAvsCentV0A),
573   fHOutCentNPAvsCentV0C(ana.fHOutCentNPAvsCentV0C),
574   fHOutCentNPAvsCentTRK(ana.fHOutCentNPAvsCentTRK),
575   fHOutCentNPAvsCentCND(ana.fHOutCentNPAvsCentCND),
576   fHOutCentNPAvsCentCL1(ana.fHOutCentNPAvsCentCL1),
577   fHOutMultV0AC(ana.fHOutMultV0AC),
578   fHOutMultV0M(ana.fHOutMultV0M),
579   fHOutMultV0A(ana.fHOutMultV0A),
580   fHOutMultV0C(ana.fHOutMultV0C),
581   fHOutMultV0Mnc(ana.fHOutMultV0Mnc),
582   fHOutMultV0Anc(ana.fHOutMultV0Anc),
583   fHOutMultV0Cnc(ana.fHOutMultV0Cnc),
584   fHOutMultV0O(ana.fHOutMultV0O),
585   fHOutMultV0Cells(ana.fHOutMultV0Cells),
586   fHOutMultFMD(ana.fHOutMultFMD),
587   fHOutMultTRK(ana.fHOutMultTRK),
588   fHOutMultTKL(ana.fHOutMultTKL),
589   fHOutMultCL0(ana.fHOutMultCL0),
590   fHOutMultCL1(ana.fHOutMultCL1),
591   fHOutMultCND(ana.fHOutMultCND),
592   fHOutMultNPA(ana.fHOutMultNPA),
593   fHOutMultV0MvsZDN(ana.fHOutMultV0MvsZDN),
594   fHOutMultZEMvsZDN(ana.fHOutMultZEMvsZDN),
595   fHOutMultV0MvsZDC(ana.fHOutMultV0MvsZDC),
596   fHOutMultZEMvsZDC(ana.fHOutMultZEMvsZDC),
597   fHOutMultZEMvsZDCw(ana.fHOutMultZEMvsZDCw),
598   fHOutMultV0MvsCL1(ana.fHOutMultV0MvsCL1),
599   fHOutMultV0MvsTRK(ana.fHOutMultV0MvsTRK),
600   fHOutMultTRKvsCL1(ana.fHOutMultTRKvsCL1),
601   fHOutMultV0MvsV0O(ana.fHOutMultV0MvsV0O),
602   fHOutMultV0OvsCL1(ana.fHOutMultV0OvsCL1),
603   fHOutMultV0OvsTRK(ana.fHOutMultV0OvsTRK),
604   fHOutMultCL1vsTKL(ana.fHOutMultCL1vsTKL),
605   fHOutCentV0Mqual1(ana.fHOutCentV0Mqual1),
606   fHOutCentTRKqual1(ana.fHOutCentTRKqual1),
607   fHOutCentCL1qual1(ana.fHOutCentCL1qual1),
608   fHOutMultV0MvsCL1qual1(ana.fHOutMultV0MvsCL1qual1),
609   fHOutMultV0MvsTRKqual1(ana.fHOutMultV0MvsTRKqual1),
610   fHOutMultTRKvsCL1qual1(ana.fHOutMultTRKvsCL1qual1),
611   fHOutCentV0Mqual2(ana.fHOutCentV0Mqual2),
612   fHOutCentTRKqual2(ana.fHOutCentTRKqual2),
613   fHOutCentCL1qual2(ana.fHOutCentCL1qual2),
614   fHOutMultV0MvsCL1qual2(ana.fHOutMultV0MvsCL1qual2),
615   fHOutMultV0MvsTRKqual2(ana.fHOutMultV0MvsTRKqual2),
616   fHOutMultTRKvsCL1qual2(ana.fHOutMultTRKvsCL1qual2),
617   fHOutQuality(ana.fHOutQuality),
618   fHOutVertex(ana.fHOutVertex),
619   fHOutVertexT0(ana.fHOutVertexT0)
620 {
621   // Copy Constructor   
622
623 }
624
625 //________________________________________________________________________
626 AliCentralitySelectionTask::~AliCentralitySelectionTask()
627 {
628   // Destructor  
629   if (fOutputList && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) delete fOutputList;
630   if (fTrackCuts) delete fTrackCuts;
631 }  
632
633 //________________________________________________________________________
634 void AliCentralitySelectionTask::UserCreateOutputObjects()
635 {  
636   // Create the output containers
637   if(fDebug>1) printf("AnalysisCentralitySelectionTask::UserCreateOutputObjects() \n");
638   AliLog::SetClassDebugLevel("AliCentralitySelectionTask", AliLog::kInfo);
639
640   if (fFillHistos) {    
641     fOutputList = new TList();
642     fOutputList->SetOwner();
643     fHOutCentV0M     = new TH1F("fHOutCentV0M","fHOutCentV0M; Centrality V0",505,0,101);
644     fHOutCentV0A    = new TH1F("fHOutCentV0A","fHOutCentV0A; Centrality V0A",505,0,101);
645     fHOutCentV0C    = new TH1F("fHOutCentV0C","fHOutCentV0C; Centrality V0C",505,0,101);
646     fHOutCentV0MCVHN= new TH1F("fHOutCentV0M_CVHN","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
647     fHOutCentV0MCVLN= new TH1F("fHOutCentV0M_CVLN","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
648     fHOutCentV0MCVHNinMB= new TH1F("fHOutCentV0M_CVHNinMB","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
649     fHOutCentV0MCVLNinMB= new TH1F("fHOutCentV0M_CVLNinMB","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
650     fHOutCentV0MCCENT= new TH1F("fHOutCentV0M_CCENT","fHOutCentV0M_CCENT; Centrality V0",505,0,101);
651     fHOutCentV0MCSEMI= new TH1F("fHOutCentV0M_CSEMI","fHOutCentV0M_CSEMI; Centrality V0",505,0,101);
652     fHOutCentV0MCCENTinMB= new TH1F("fHOutCentV0M_CCENTinMB","fHOutCentV0M_CCENT; Centrality V0",505,0,101);
653     fHOutCentV0MCSEMIinMB= new TH1F("fHOutCentV0M_CSEMIinMB","fHOutCentV0M_CSEMI; Centrality V0",505,0,101);
654     fHOutCentV0MMSL= new TH1F("fHOutCentV0M_MSL","fHOutCentV0M_MSL; Centrality V0",505,0,101);
655     fHOutCentV0MMSH= new TH1F("fHOutCentV0M_MSH","fHOutCentV0M_MSH; Centrality V0",505,0,101);
656     fHOutCentV0MMUL= new TH1F("fHOutCentV0M_MUL","fHOutCentV0M_MUL; Centrality V0",505,0,101);
657     fHOutCentV0MMLL= new TH1F("fHOutCentV0M_MLL","fHOutCentV0M_MLL; Centrality V0",505,0,101);
658     fHOutCentV0MEJE= new TH1F("fHOutCentV0M_EJE","fHOutCentV0M_EJE; Centrality V0",505,0,101);
659     fHOutCentV0MEGA= new TH1F("fHOutCentV0M_EGA","fHOutCentV0M_EGA; Centrality V0",505,0,101);
660     fHOutCentV0MPHS= new TH1F("fHOutCentV0M_PHS","fHOutCentV0M_PHS; Centrality V0",505,0,101);
661     fHOutCentV0MMSLinMB= new TH1F("fHOutCentV0M_MSLinMB","fHOutCentV0M_MSLinMB; Centrality V0",505,0,101);
662     fHOutCentV0MMSHinMB= new TH1F("fHOutCentV0M_MSHinMB","fHOutCentV0M_MSHinMB; Centrality V0",505,0,101);
663     fHOutCentV0MMULinMB= new TH1F("fHOutCentV0M_MULinMB","fHOutCentV0M_MULinMB; Centrality V0",505,0,101);
664     fHOutCentV0MMLLinMB= new TH1F("fHOutCentV0M_MLLinMB","fHOutCentV0M_MLLinMB; Centrality V0",505,0,101);
665     fHOutCentV0MEJEinMB= new TH1F("fHOutCentV0M_EJEinMB","fHOutCentV0M_EJEinMB; Centrality V0",505,0,101);
666     fHOutCentV0MEGAinMB= new TH1F("fHOutCentV0M_EGAinMB","fHOutCentV0M_EGAinMB; Centrality V0",505,0,101);
667     fHOutCentV0MPHSinMB= new TH1F("fHOutCentV0M_PHSinMB","fHOutCentV0M_PHSinMB; Centrality V0",505,0,101);
668     fHOutCentFMD     = new TH1F("fHOutCentFMD","fHOutCentFMD; Centrality FMD",505,0,101);
669     fHOutCentTRK     = new TH1F("fHOutCentTRK","fHOutCentTRK; Centrality TPC",505,0,101);
670     fHOutCentTKL     = new TH1F("fHOutCentTKL","fHOutCentTKL; Centrality tracklets",505,0,101);
671     fHOutCentCL0     = new TH1F("fHOutCentCL0","fHOutCentCL0; Centrality SPD inner",505,0,101);
672     fHOutCentCL1     = new TH1F("fHOutCentCL1","fHOutCentCL1; Centrality SPD outer",505,0,101);
673     fHOutCentCND     = new TH1F("fHOutCentCND","fHOutCentCND; Centrality candle",505,0,101);
674     fHOutCentNPA     = new TH1F("fHOutCentNPA","fHOutCentNPA; Centrality candle",505,0,101);
675     fHOutCentV0MvsFMD= new TH1F("fHOutCentV0MvsFMD","fHOutCentV0MvsFMD; Centrality V0 vs FMD",505,0,101);
676     fHOutCentTKLvsV0M= new TH1F("fHOutCentTKLvsV0M","fHOutCentTKLvsV0M; Centrality tracklets vs V0",505,0,101);
677     fHOutCentZEMvsZDC= new TH1F("fHOutCentZEMvsZDC","fHOutCentZEMvsZDC; Centrality ZEM vs ZDC",505,0,101);
678     fHOutCentV0MvsCentCL1= new TH2F("fHOutCentV0MvsCentCL1","fHOutCentV0MvsCentCL1; Cent V0; Cent SPD",505,0,101,505,0,101);
679     fHOutCentV0MvsCentTRK= new TH2F("fHOutCentV0MvsCentTRK","fHOutCentV0MvsCentTRK; Cent V0; Cent TPC",505,0,101,505,0,101);
680     fHOutCentTRKvsCentCL1= new TH2F("fHOutCentTRKvsCentCL1","fHOutCentTRKvsCentCL1; Cent TPC; Cent SPD",505,0,101,505,0,101);
681     fHOutCentV0MvsCentZDC= new TH2F("fHOutCentV0MvsCentZDC","fHOutCentV0MvsCentZDC; Cent V0; Cent ZDC",505,0,101,505,0,101);
682     fHOutCentV0AvsCentV0C= new TH2F("fHOutCentV0AvsCentV0C","fHOutCentV0AvsCentV0C; Cent V0A; Cent V0C;", 505,0,101,505,0,101);
683     fHOutCentV0AvsCentTRK= new TH2F("fHOutCentV0AvsCentTRK","fHOutCentV0AvsCentTRK; Cent V0A; Cent TRK;", 505,0,101,505,0,101);
684     fHOutCentV0AvsCentCND= new TH2F("fHOutCentV0AvsCentCND","fHOutCentV0AvsCentCND; Cent V0A; Cent CND;", 505,0,101,505,0,101);
685     fHOutCentV0AvsCentCL1= new TH2F("fHOutCentV0AvsCentCL1","fHOutCentV0AvsCentCL1; Cent V0A; Cent CL1;", 505,0,101,505,0,101);
686     fHOutCentV0CvsCentTRK= new TH2F("fHOutCentV0CvsCentTRK","fHOutCentV0CvsCentTRK; Cent V0C; Cent TRK;", 505,0,101,505,0,101);
687     fHOutCentV0CvsCentCND= new TH2F("fHOutCentV0CvsCentCND","fHOutCentV0CvsCentCND; Cent V0C; Cent CND;", 505,0,101,505,0,101);
688     fHOutCentV0CvsCentCL1= new TH2F("fHOutCentV0CvsCentCL1","fHOutCentV0CvsCentCL1; Cent V0C; Cent CL1;", 505,0,101,505,0,101);
689     fHOutCentNPAvsCentV0A= new TH2F("fHOutCentNPAvsCentV0A","fHOutCentNPAvsCentV0A; Cent NPA; Cent V0A;", 505,0,101,505,0,101);
690     fHOutCentNPAvsCentV0C= new TH2F("fHOutCentNPAvsCentV0C","fHOutCentNPAvsCentV0C; Cent NPA; Cent V0C;", 505,0,101,505,0,101);
691     fHOutCentNPAvsCentTRK= new TH2F("fHOutCentNPAvsCentTRK","fHOutCentNPAvsCentTRK; Cent NPA; Cent TRK;", 505,0,101,505,0,101);
692     fHOutCentNPAvsCentCND= new TH2F("fHOutCentNPAvsCentCND","fHOutCentNPAvsCentCND; Cent NPA; Cent CND;", 505,0,101,505,0,101);
693     fHOutCentNPAvsCentCL1= new TH2F("fHOutCentNPAvsCentCL1","fHOutCentNPAvsCentCL1; Cent NPA; Cent CL1;", 505,0,101,505,0,101);
694
695     fHOutMultV0AC = new TH2F("fHOutMultV0AC","fHOutMultV0AC; Multiplicity V0A; Multiplicity V0C",1000,0,1000,1000,0,1000);
696     fHOutMultV0M  = new TH1F("fHOutMultV0M","fHOutMultV0M; Multiplicity V0",25000,0,25000);
697     fHOutMultV0A  = new TH1F("fHOutMultV0A","fHOutMultV0A; Multiplicity V0",25000,0,25000);
698     fHOutMultV0C  = new TH1F("fHOutMultV0C","fHOutMultV0C; Multiplicity V0",25000,0,25000);
699     fHOutMultV0Mnc= new TH1F("fHOutMultV0Mnc","fHOutMultV0Mnc; Multiplicity V0",25000,0,25000);
700     fHOutMultV0Anc= new TH1F("fHOutMultV0Anc","fHOutMultV0Anc; Multiplicity V0",25000,0,25000);
701     fHOutMultV0Cnc= new TH1F("fHOutMultV0Cnc","fHOutMultV0Cnc; Multiplicity V0",25000,0,25000);
702     fHOutMultV0O  = new TH1F("fHOutMultV0O","fHOutMultV0O; Multiplicity V0",40000,0,40000);
703     fHOutMultV0Cells = new TH2F("fHOutMultV0Cells","fHOutMultV0Cells",33,-0.5,32.5,33,-0.5,32.5); 
704     fHOutMultFMD = new TH1F("fHOutMultFMD","fHOutMultFMD; Multiplicity FMD",24000,0,24000);
705     fHOutMultTRK = new TH1F("fHOutMultTRK","fHOutMultTRK; Multiplicity TPC",4000,0,4000);
706     fHOutMultTKL = new TH1F("fHOutMultTKL","fHOutMultTKL; Multiplicity tracklets",5000,0,5000);
707     fHOutMultCL0 = new TH1F("fHOutMultCL0","fHOutMultCL0; Multiplicity SPD inner",7000,0,7000);
708     fHOutMultCL1 = new TH1F("fHOutMultCL1","fHOutMultCL1; Multiplicity SPD outer",7000,0,7000);
709     fHOutMultCND = new TH1F("fHOutMultCND","fHOutMultCND; Multiplicity candle",4000,0,4000);
710     fHOutMultNPA = new TH1F("fHOutMultNPA","fHOutMultNPA; Nparticipants",450,0,450);
711
712     fHOutMultV0MvsZDN = new TH2F("fHOutMultV0MvsZDN","fHOutMultV0MvsZDN; Multiplicity V0; Energy ZDC-N",500,0,30000,500,0,180000);
713     fHOutMultZEMvsZDN = new TH2F("fHOutMultZEMvsZDN","fHOutMultZEMvsZDN; Energy ZEM; Energy ZDC-N",500,0,2500,500,0,180000);
714     fHOutMultV0MvsZDC = new TH2F("fHOutMultV0MvsZDC","fHOutMultV0MvsZDC; Multiplicity V0; Energy ZDC",500,0,30000,500,0,200000);
715     fHOutMultZEMvsZDC = new TH2F("fHOutMultZEMvsZDC","fHOutMultZEMvsZDC; Energy ZEM; Energy ZDC",500,0,2500,500,0,200000);
716     fHOutMultZEMvsZDCw = new TH2F("fHOutMultZEMvsZDCw","fHOutMultZEMvsZDCw; Energy ZEM; Energy ZDC (weigthed with V0 percentile)",500,0,2500,500,0,200000);
717     fHOutMultV0MvsCL1 = new TH2F("fHOutMultV0MvsCL1","fHOutMultV0MvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
718     fHOutMultV0MvsTRK = new TH2F("fHOutMultV0MvsTRK","fHOutMultV0MvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
719     fHOutMultTRKvsCL1 = new TH2F("fHOutMultTRKvsCL1","fHOutMultTRKvsCL1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
720     fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,40000);
721     fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",500,0,40000,700,0,7000);
722     fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",500,0,40000,400,0,4000);
723     fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,30000);
724     fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
725     fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
726     fHOutMultCL1vsTKL = new TH2F ("fHOutMultCL1vsTKL","fHOutMultCL1vsTKL; Multiplicity SPD outer; Multiplicity tracklets",700,0,7000,700,0,7000);
727     
728     fHOutCentV0Mqual1 = new TH1F("fHOutCentV0M_qual1","fHOutCentV0M_qual1; Centrality V0",505,0,101);
729     fHOutCentTRKqual1 = new TH1F("fHOutCentTRK_qual1","fHOutCentTRK_qual1; Centrality TPC",505,0,101);
730     fHOutCentCL1qual1 = new TH1F("fHOutCentCL1_qual1","fHOutCentCL1_qual1; Centrality SPD outer",505,0,101);
731     fHOutMultV0MvsCL1qual1 = new TH2F("fHOutMultV0MvsCL1_qual1","fHOutMultV0MvsCL1_qual1; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
732     fHOutMultV0MvsTRKqual1 = new TH2F("fHOutMultV0MvsTRK_qual1","fHOutMultV0MvsTRK_qual1; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
733     fHOutMultTRKvsCL1qual1 = new TH2F("fHOutMultTRKvsCL1_qual1","fHOutMultTRKvsCL1_qual1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
734     
735     fHOutCentV0Mqual2 = new TH1F("fHOutCentV0M_qual2","fHOutCentV0M_qual2; Centrality V0",505,0,101);
736     fHOutCentTRKqual2 = new TH1F("fHOutCentTRK_qual2","fHOutCentTRK_qual2; Centrality TPC",505,0,101);
737     fHOutCentCL1qual2 = new TH1F("fHOutCentCL1_qual2","fHOutCentCL1_qual2; Centrality SPD outer",505,0,101);
738     fHOutMultV0MvsCL1qual2 = new TH2F("fHOutMultV0MvsCL1_qual2","fHOutMultV0MvsCL1_qual2; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
739     fHOutMultV0MvsTRKqual2 = new TH2F("fHOutMultV0MvsTRK_qual2","fHOutMultV0MvsTRK_qual2; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
740     fHOutMultTRKvsCL1qual2 = new TH2F("fHOutMultTRKvsCL1_qual2","fHOutMultTRKvsCL1_qual2; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
741     
742     fHOutQuality = new TH1F("fHOutQuality", "fHOutQuality", 100,-0.5,99.5);
743     fHOutVertex  = new TH1F("fHOutVertex", "fHOutVertex", 100,-20,20);
744     fHOutVertexT0  = new TH1F("fHOutVertexT0", "fHOutVertexT0", 100,-20,20);
745   
746     fOutputList->Add(  fHOutCentV0M    );
747     fOutputList->Add(  fHOutCentV0A    );
748     fOutputList->Add(  fHOutCentV0C    );
749     fOutputList->Add(  fHOutCentV0MCVHN);
750     fOutputList->Add(  fHOutCentV0MCVLN);
751     fOutputList->Add(  fHOutCentV0MCVHNinMB);
752     fOutputList->Add(  fHOutCentV0MCVLNinMB);
753     fOutputList->Add(  fHOutCentV0MCCENT);
754     fOutputList->Add(  fHOutCentV0MCSEMI);
755     fOutputList->Add(  fHOutCentV0MCCENTinMB);
756     fOutputList->Add(  fHOutCentV0MCSEMIinMB);
757     fOutputList->Add(  fHOutCentV0MMSL    );
758     fOutputList->Add(  fHOutCentV0MMSH    );
759     fOutputList->Add(  fHOutCentV0MMUL    );
760     fOutputList->Add(  fHOutCentV0MMLL    );
761     fOutputList->Add(  fHOutCentV0MEJE    );
762     fOutputList->Add(  fHOutCentV0MEGA    );
763     fOutputList->Add(  fHOutCentV0MPHS   );
764     fOutputList->Add(  fHOutCentV0MMSLinMB);
765     fOutputList->Add(  fHOutCentV0MMSHinMB);
766     fOutputList->Add(  fHOutCentV0MMULinMB);
767     fOutputList->Add(  fHOutCentV0MMLLinMB);
768     fOutputList->Add(  fHOutCentV0MEJEinMB);
769     fOutputList->Add(  fHOutCentV0MEGAinMB);
770     fOutputList->Add(  fHOutCentV0MPHSinMB);
771     fOutputList->Add(  fHOutCentFMD     );
772     fOutputList->Add(  fHOutCentTRK     );
773     fOutputList->Add(  fHOutCentTKL     );
774     fOutputList->Add(  fHOutCentCL0     );
775     fOutputList->Add(  fHOutCentCL1     );
776     fOutputList->Add(  fHOutCentCND     );
777     fOutputList->Add(  fHOutCentNPA     );
778     fOutputList->Add(  fHOutCentV0MvsFMD);
779     fOutputList->Add(  fHOutCentTKLvsV0M);
780     fOutputList->Add(  fHOutCentZEMvsZDC);
781     fOutputList->Add(  fHOutCentV0MvsCentCL1);
782     fOutputList->Add(  fHOutCentV0MvsCentTRK);
783     fOutputList->Add(  fHOutCentTRKvsCentCL1);
784     fOutputList->Add(  fHOutCentV0MvsCentZDC);
785     fOutputList->Add(  fHOutCentV0AvsCentV0C);
786     fOutputList->Add(  fHOutCentV0AvsCentTRK);
787     fOutputList->Add(  fHOutCentV0AvsCentCND);
788     fOutputList->Add(  fHOutCentV0AvsCentCL1);
789     fOutputList->Add(  fHOutCentV0CvsCentTRK);
790     fOutputList->Add(  fHOutCentV0CvsCentCND);
791     fOutputList->Add(  fHOutCentV0CvsCentCL1);
792     fOutputList->Add(  fHOutCentNPAvsCentV0A);
793     fOutputList->Add(  fHOutCentNPAvsCentV0C);
794     fOutputList->Add(  fHOutCentNPAvsCentTRK);
795     fOutputList->Add(  fHOutCentNPAvsCentCND);
796     fOutputList->Add(  fHOutCentNPAvsCentCL1);
797
798     fOutputList->Add(  fHOutMultV0AC); 
799     fOutputList->Add(  fHOutMultV0M); 
800     fOutputList->Add(  fHOutMultV0A); 
801     fOutputList->Add(  fHOutMultV0C); 
802     fOutputList->Add(  fHOutMultV0Mnc); 
803     fOutputList->Add(  fHOutMultV0Anc); 
804     fOutputList->Add(  fHOutMultV0Cnc); 
805     fOutputList->Add(  fHOutMultV0O);
806     fOutputList->Add(  fHOutMultV0Cells) ;   
807     fOutputList->Add(  fHOutMultFMD); 
808     fOutputList->Add(  fHOutMultTRK); 
809     fOutputList->Add(  fHOutMultTKL); 
810     fOutputList->Add(  fHOutMultCL0); 
811     fOutputList->Add(  fHOutMultCL1); 
812     fOutputList->Add(  fHOutMultCND); 
813     fOutputList->Add(  fHOutMultNPA); 
814     fOutputList->Add(  fHOutMultV0MvsZDN);
815     fOutputList->Add(  fHOutMultZEMvsZDN);
816     fOutputList->Add(  fHOutMultV0MvsZDC);
817     fOutputList->Add(  fHOutMultZEMvsZDC);
818     fOutputList->Add(  fHOutMultZEMvsZDCw);
819     fOutputList->Add(  fHOutMultV0MvsCL1);
820     fOutputList->Add(  fHOutMultV0MvsTRK);
821     fOutputList->Add(  fHOutMultTRKvsCL1);
822     fOutputList->Add(  fHOutMultV0MvsV0O);
823     fOutputList->Add(  fHOutMultV0OvsCL1);
824     fOutputList->Add(  fHOutMultV0OvsTRK);
825     fOutputList->Add(  fHOutMultCL1vsTKL);
826     fOutputList->Add(  fHOutCentV0Mqual1 );
827     fOutputList->Add(  fHOutCentTRKqual1 );
828     fOutputList->Add(  fHOutCentCL1qual1 );                   
829     fOutputList->Add(  fHOutMultV0MvsCL1qual1);
830     fOutputList->Add(  fHOutMultV0MvsTRKqual1);
831     fOutputList->Add(  fHOutMultTRKvsCL1qual1);
832     fOutputList->Add(  fHOutCentV0Mqual2 );
833     fOutputList->Add(  fHOutCentTRKqual2 );
834     fOutputList->Add(  fHOutCentCL1qual2 );
835     fOutputList->Add(  fHOutMultV0MvsCL1qual2);
836     fOutputList->Add(  fHOutMultV0MvsTRKqual2);
837     fOutputList->Add(  fHOutMultTRKvsCL1qual2);
838     fOutputList->Add(  fHOutQuality );
839     fOutputList->Add(  fHOutVertex );
840     fOutputList->Add(  fHOutVertexT0 );
841   
842     PostData(1, fOutputList); 
843   }
844   
845   fTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
846 }
847
848 //________________________________________________________________________
849 void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
850
851   // Execute analysis for current event:
852   if(fDebug>1) printf(" **** AliCentralitySelectionTask::UserExec() \n");
853
854   Float_t  zncEnergy = 0.;          //  ZNC Energy
855   Float_t  zpcEnergy = 0.;          //  ZPC Energy
856   Float_t  znaEnergy = 0.;          //  ZNA Energy
857   Float_t  zpaEnergy = 0.;          //  ZPA Energy
858   Float_t  zem1Energy = 0.;         //  ZEM1 Energy
859   Float_t  zem2Energy = 0.;         //  ZEM2 Energy
860   Bool_t   zdcEnergyCal = kFALSE;   // if zdc is calibrated (in pass2)
861
862   Int_t    nTracks = 0;             //  no. tracks
863   Int_t    nTracklets = 0;          //  no. tracklets
864   Int_t    nClusters[6] = {0};      //  no. clusters on 6 ITS layers
865   Int_t    nChips[2];               //  no. chips on 2 SPD layers
866   Float_t  spdCorr =0;              //  corrected spd2 multiplicity
867   Int_t    multCND = 0;             //  no. tracks (candle condition)
868
869   Float_t  multV0A  = 0;            //  multiplicity from V0 reco side A
870   Float_t  multV0C  = 0;            //  multiplicity from V0 reco side C
871   Float_t  multV0ACorr  = 0;            //  multiplicity from V0 reco side A
872   Float_t  multV0CCorr  = 0;            //  multiplicity from V0 reco side C
873   Short_t  multV0AOnline  = 0;      //  multiplicity from V0 reco side A
874   Short_t  multV0COnline  = 0;      //  multiplicity from V0 reco side C
875   Float_t  v0Corr = 0;              // corrected V0 multiplicity (used for MC)
876   Int_t nV0A = 0;
877   Int_t nV0C = 0;
878
879   Float_t  multFMDA = 0;            //  multiplicity from FMD on detector A
880   Float_t  multFMDC = 0;            //  multiplicity from FMD on detector C
881
882   Float_t zvtx =0;                  // z-vertex SPD
883   Int_t zvtxNcont =0;               // contributors to z-vertex SPD
884
885   Float_t zvtxT0 =0;                // z-vertex T0
886
887   Int_t Npart =0;                   // N. of participants (true MC)
888
889   AliCentrality *esdCent = 0;
890
891   if(fAnalysisInput.CompareTo("ESD")==0){
892   
893     AliVEvent* event = InputEvent();
894     AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
895     if (!esd) {
896       AliError("No ESD Event");
897       return;
898     }
899   
900     LoadBranches();
901     
902     if (SetupRun(esd)<0) {
903       AliError("Centrality File not available for this run");
904       return;
905     }
906     
907     esdCent = esd->GetCentrality();
908
909     // ***** Vertex Info
910     const AliESDVertex* vtxESD = esd->GetPrimaryVertexSPD();
911     zvtx        = vtxESD->GetZ(); 
912     zvtxNcont   = vtxESD->GetNContributors();
913
914     // ***** V0 info    
915     AliESDVZERO* esdV0 = esd->GetVZEROData();
916     if (!esdV0)
917       {
918         AliError("AliESDVZERO not available");
919         return;
920       }
921     multV0A=esdV0->GetMTotV0A();
922     multV0C=esdV0->GetMTotV0C();
923
924     multV0ACorr = AliESDUtils::GetCorrV0A(multV0A,zvtx);    
925     multV0CCorr = AliESDUtils::GetCorrV0C(multV0C,zvtx);    
926
927     v0Corr = multV0A+multV0C;
928
929     multV0AOnline=esdV0->GetTriggerChargeA(); 
930     multV0COnline=esdV0->GetTriggerChargeC(); 
931
932     // Count V0 flags
933     for(Int_t i = 0; i < 32; ++i) {
934       if (esdV0->GetBBFlag(i)) nV0C++;
935       if (esdV0->GetBBFlag(i+32)) nV0A++;
936     }
937     
938     // ***** T0 info    
939     const AliESDTZERO* esdT0 = esd->GetESDTZERO();
940     if (!esdT0)
941       {
942         AliError("AliESDTZERO not available");
943         return;
944       }
945     Int_t trig=esdT0->GetT0Trig();
946     Bool_t kT0BB = kFALSE;    
947     if(trig&1) kT0BB=kTRUE;
948     zvtxT0=esdT0->GetT0zVertex();
949
950
951     // ***** Trigger info    
952     fIsSelected = ((esdV0->GetV0ADecision()==1) && (esdV0->GetV0CDecision()==1));
953     TString trigStr(esd->GetFiredTriggerClasses());
954     
955     fMB=kFALSE;
956     fCVHN=kFALSE; fCVLN=kFALSE; fCCENT=kFALSE; fCSEMI=kFALSE; 
957     fMSL=kFALSE;  fMSH=kFALSE;  fMUL=kFALSE;   fMLL=kFALSE;
958     fEJE=kFALSE;  fEGA=kFALSE;  fPHS=kFALSE;
959
960     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI")) && (fIsSelected)) 
961       fMB=kTRUE;
962     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CVHN")) && (fIsSelected)) 
963       fCVHN=kTRUE;
964     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CVLN")) && (fIsSelected))
965       fCVLN=kTRUE;
966     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CCENT")) && (fIsSelected)) 
967       fCCENT=kTRUE;
968     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CSEMI")) && (fIsSelected))
969       fCSEMI=kTRUE;
970     
971     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MSL")) && (fIsSelected))
972       fMSL=kTRUE;
973     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MSH")) && (fIsSelected))
974       fMSH=kTRUE;
975     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MUL")) && (fIsSelected))
976       fMUL=kTRUE;
977     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1MLL")) && (fIsSelected))
978       fMLL=kTRUE;
979     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1EJE")) && (fIsSelected))
980       fEJE=kTRUE;
981     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1EGA")) && (fIsSelected))
982       fEGA=kTRUE;
983     if ( (trigStr.Contains("-B-")) &&  (trigStr.Contains("CPBI1PHS")) && (fIsSelected))
984       fPHS=kTRUE;
985
986     fCVHNbit=kFALSE;    fCVLNbit=kFALSE;       fCCENTbit=kFALSE;    fCSEMIbit=kFALSE; 
987     if (esdV0->GetTriggerBits() & (1<<8)) 
988       fCVHNbit=kTRUE;
989     if (esdV0->GetTriggerBits() & (1<<6)) 
990       fCVLNbit=kTRUE;
991     
992     if (kT0BB && fCVHNbit)
993       fCCENTbit=kTRUE;
994     if (kT0BB && fCVLNbit)
995       fCSEMIbit=kTRUE;
996
997     
998     // ***** CB info (tracklets, clusters, chips)
999     //nTracks    = event->GetNumberOfTracks();     
1000     nTracks    = fTrackCuts ? (Short_t)fTrackCuts->GetReferenceMultiplicity(esd,kTRUE):-1;
1001     Short_t nTrTPCcandle = 0;
1002     for (Int_t iTracks = 0; iTracks < esd->GetNumberOfTracks(); iTracks++) {
1003       AliESDtrack* track = esd->GetTrack(iTracks);
1004       if (!track) continue;
1005       if (track->Pt() > 0.5 && TMath::Abs(track->Eta()) < 0.8)  nTrTPCcandle++;
1006     } 
1007     multCND = nTrTPCcandle;
1008
1009     const AliMultiplicity *mult = esd->GetMultiplicity();
1010     nTracklets = mult->GetNumberOfTracklets();
1011
1012     for(Int_t ilay=0; ilay<6; ilay++){
1013       nClusters[ilay] = mult->GetNumberOfITSClusters(ilay);
1014     }
1015
1016     for(Int_t ilay=0; ilay<2; ilay++){
1017       nChips[ilay] = mult->GetNumberOfFiredChips(ilay);
1018     }
1019
1020     spdCorr = AliESDUtils::GetCorrSPD2(nClusters[1],zvtx);    
1021
1022     // ***** FMD info
1023     AliESDFMD *fmd = esd->GetFMDData();
1024     Float_t totalMultA = 0;
1025     Float_t totalMultC = 0;
1026     const Float_t fFMDLowCut = 0.4;
1027   
1028     for(UShort_t det=1;det<=3;det++) {
1029       Int_t nRings = (det==1 ? 1 : 2);
1030       for (UShort_t ir = 0; ir < nRings; ir++) {          
1031         Char_t   ring = (ir == 0 ? 'I' : 'O');
1032         UShort_t nsec = (ir == 0 ? 20  : 40);
1033         UShort_t nstr = (ir == 0 ? 512 : 256);
1034         for(UShort_t sec =0; sec < nsec;  sec++)  {
1035           for(UShort_t strip = 0; strip < nstr; strip++) {
1036             
1037             Float_t fmdMult = fmd->Multiplicity(det,ring,sec,strip);
1038             if(fmdMult == 0 || fmdMult == AliESDFMD::kInvalidMult) continue;
1039             
1040             Float_t nParticles=0;
1041             
1042             if(fmdMult > fFMDLowCut) {
1043               nParticles = 1.;
1044             }
1045             
1046             if (det<3) totalMultA = totalMultA + nParticles;
1047             else totalMultC = totalMultC + nParticles;
1048             
1049           }
1050         }
1051       }
1052     }
1053     multFMDA = totalMultA;
1054     multFMDC = totalMultC;
1055   
1056     // ***** ZDC info
1057     AliESDZDC *esdZDC = esd->GetESDZDC();
1058     zdcEnergyCal = esdZDC->AliESDZDC::TestBit(AliESDZDC::kEnergyCalibratedSignal);
1059     if (zdcEnergyCal) {      
1060       zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy());
1061       zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy());
1062       znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy());
1063       zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy());
1064     } else {
1065       zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy())/8.;
1066       zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy())/8.;
1067       znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy())/8.;
1068       zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy())/8.;
1069     }
1070     zem1Energy = (Float_t) (esdZDC->GetZDCEMEnergy(0))/8.;
1071     zem2Energy = (Float_t) (esdZDC->GetZDCEMEnergy(1))/8.;
1072     
1073   }   
1074   
1075   // ***** MC info
1076   AliAnalysisManager* anMan = AliAnalysisManager::GetAnalysisManager();
1077   AliMCEventHandler* eventHandler = (AliMCEventHandler*)anMan->GetMCtruthEventHandler();
1078   AliStack*    stack=0;
1079   AliMCEvent*  mcEvent=0;
1080   if (fIsMCInput && eventHandler && (mcEvent=eventHandler->MCEvent()) && (stack=mcEvent->Stack())) {
1081     
1082     AliGenHijingEventHeader* hHijing=0;
1083     AliGenEventHeader* mcGenH = mcEvent->GenEventHeader();
1084     if (mcGenH->InheritsFrom(AliGenHijingEventHeader::Class())) {
1085       hHijing = (AliGenHijingEventHeader*)mcGenH;
1086     }
1087     else if (mcGenH->InheritsFrom(AliGenCocktailEventHeader::Class())) {
1088       TList* headers = ((AliGenCocktailEventHeader*)mcGenH)->GetHeaders();
1089       hHijing = dynamic_cast<AliGenHijingEventHeader*>(headers->FindObject("Hijing"));
1090     }
1091     if (hHijing) {
1092       Npart  = hHijing->ProjectileParticipants()+hHijing->TargetParticipants();
1093     }
1094     else {
1095       // now you really have a problem.
1096     } 
1097   }
1098
1099
1100   else if(fAnalysisInput.CompareTo("AOD")==0){
1101     //AliAODEvent *aod =  dynamic_cast<AliAODEvent*> (InputEvent());
1102     // to be implemented
1103     printf("  AOD analysis not yet implemented!!!\n\n");
1104     return;
1105   } 
1106
1107   // ***** Scaling for MC
1108   if (fIsMCInput) {
1109     fUseScaling=kFALSE;
1110     v0Corr  = Short_t((multV0A+multV0C)  * fV0MScaleFactorMC);
1111   }
1112   // ***** Scaling for Data 
1113   if (fUseScaling) {
1114     v0Corr  = Short_t(v0Corr /   fV0MScaleFactor);
1115     spdCorr = spdCorr / fSPDScaleFactor;
1116     nTracks = Int_t(nTracks /   fTPCScaleFactor);
1117   }
1118
1119   // ***** Centrality Selection
1120   if(fHtempV0M) fCentV0M = fHtempV0M->GetBinContent(fHtempV0M->FindBin((v0Corr)));
1121   if(fHtempV0A) fCentV0A = fHtempV0A->GetBinContent(fHtempV0A->FindBin((multV0ACorr)));
1122   if(fHtempV0C) fCentV0C = fHtempV0C->GetBinContent(fHtempV0C->FindBin((multV0CCorr)));
1123   if(fHtempFMD) fCentFMD = fHtempFMD->GetBinContent(fHtempFMD->FindBin((multFMDA+multFMDC)));
1124   if(fHtempTRK) fCentTRK = fHtempTRK->GetBinContent(fHtempTRK->FindBin(nTracks));
1125   if(fHtempTKL) fCentTKL = fHtempTKL->GetBinContent(fHtempTKL->FindBin(nTracklets));
1126   if(fHtempCL0) fCentCL0 = fHtempCL0->GetBinContent(fHtempCL0->FindBin(nClusters[0]));
1127   if(fHtempCL1) fCentCL1 = fHtempCL1->GetBinContent(fHtempCL1->FindBin(spdCorr));
1128   if(fHtempCND) fCentCND = fHtempCND->GetBinContent(fHtempCND->FindBin(multCND));
1129   if(fHtempNPA) fCentNPA = fHtempNPA->GetBinContent(fHtempNPA->FindBin(Npart));
1130
1131   if(fHtempV0MvsFMD) fCentV0MvsFMD = fHtempV0MvsFMD->GetBinContent(fHtempV0MvsFMD->FindBin((multV0A+multV0C)));
1132   if(fHtempTKLvsV0M) fCentTKLvsV0M = fHtempTKLvsV0M->GetBinContent(fHtempTKLvsV0M->FindBin(nTracklets));
1133   if(fHtempZEMvsZDC) fCentZEMvsZDC = fHtempZEMvsZDC->GetBinContent(fHtempZEMvsZDC->FindBin(zem1Energy+zem2Energy,zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1134
1135
1136   // ***** Cleaning
1137   if (fUseCleaning) {
1138     fQuality=0;
1139     
1140     // ***** vertex
1141     if (TMath::Abs(zvtx)>fZVCut || zvtxNcont<1) fQuality += 1;   
1142
1143     // ***** outliers, skip in case of MC input
1144     if (!fIsMCInput) {
1145       // **** V0 vs SPD
1146       if (IsOutlierV0MSPD(spdCorr, v0Corr, int(fCentV0M))) fQuality  += 2;
1147       // ***** V0 vs TPC
1148       if (IsOutlierV0MTPC(nTracks, v0Corr, int(fCentV0M))) fQuality  += 4;
1149       // ***** V0 vs ZDC
1150       if (IsOutlierV0MZDC((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
1151           (zdcEnergyCal==kFALSE) ) fQuality  += 8;
1152       if (IsOutlierV0MZDCECal((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
1153           (zdcEnergyCal==kTRUE) ) fQuality  += 8;
1154     }
1155   } else {
1156     fQuality = 0;
1157   }
1158
1159       
1160   if (esdCent) {
1161     esdCent->SetQuality(fQuality);
1162     esdCent->SetCentralityV0M(fCentV0M);
1163     esdCent->SetCentralityV0A(fCentV0A);
1164     esdCent->SetCentralityV0C(fCentV0C);
1165     esdCent->SetCentralityFMD(fCentFMD);
1166     esdCent->SetCentralityTRK(fCentTRK);
1167     esdCent->SetCentralityTKL(fCentTKL);
1168     esdCent->SetCentralityCL0(fCentCL0);
1169     esdCent->SetCentralityCL1(fCentCL1);
1170     esdCent->SetCentralityCND(fCentCND);
1171     esdCent->SetCentralityNPA(fCentNPA);
1172     esdCent->SetCentralityV0MvsFMD(fCentV0MvsFMD);
1173     esdCent->SetCentralityTKLvsV0M(fCentTKLvsV0M);
1174     esdCent->SetCentralityZEMvsZDC(fCentZEMvsZDC);
1175   }
1176
1177   // filling QA histograms
1178   if (fFillHistos) {    
1179     if ((fMB) && (abs(zvtx)<10))        fHOutMultCL1vsTKL->Fill(spdCorr,nTracklets);
1180
1181     if (fCVHN)   fHOutCentV0MCVHN->Fill(fCentV0M);
1182     if (fCVLN)   fHOutCentV0MCVLN->Fill(fCentV0M);
1183     if (fCCENT)  fHOutCentV0MCCENT->Fill(fCentV0M);
1184     if (fCSEMI)  fHOutCentV0MCSEMI->Fill(fCentV0M);
1185     if (fMSL) fHOutCentV0MMSL->Fill(fCentV0M);
1186     if (fMSH) fHOutCentV0MMSH->Fill(fCentV0M);
1187     if (fMUL) fHOutCentV0MMUL->Fill(fCentV0M);
1188     if (fMLL) fHOutCentV0MMLL->Fill(fCentV0M);
1189     if (fEJE) fHOutCentV0MEJE->Fill(fCentV0M);
1190     if (fEGA) fHOutCentV0MEGA->Fill(fCentV0M);
1191     if (fPHS) fHOutCentV0MPHS->Fill(fCentV0M);
1192
1193     if (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB) { // fill the QA histograms only for MB events!
1194       fHOutQuality->Fill(fQuality);
1195       fHOutVertex->Fill(zvtx);
1196       fHOutVertexT0->Fill(zvtxT0);
1197       
1198       if (fQuality==0) {  
1199         fHOutCentV0M->Fill(fCentV0M);
1200         fHOutCentV0A->Fill(fCentV0A);
1201         fHOutCentV0C->Fill(fCentV0C);
1202         
1203         if (fCVHNbit)  fHOutCentV0MCVHNinMB->Fill(fCentV0M);
1204         if (fCVLNbit)  fHOutCentV0MCVLNinMB->Fill(fCentV0M);
1205         if (fCCENTbit) fHOutCentV0MCCENTinMB->Fill(fCentV0M);
1206         if (fCSEMIbit) fHOutCentV0MCSEMIinMB->Fill(fCentV0M);
1207         if (fMSL) fHOutCentV0MMSLinMB->Fill(fCentV0M);
1208         if (fMSH) fHOutCentV0MMSHinMB->Fill(fCentV0M);
1209         if (fMUL) fHOutCentV0MMULinMB->Fill(fCentV0M);
1210         if (fMLL) fHOutCentV0MMLLinMB->Fill(fCentV0M);
1211         if (fEJE) fHOutCentV0MEJEinMB->Fill(fCentV0M);
1212         if (fEGA) fHOutCentV0MEGAinMB->Fill(fCentV0M);
1213         if (fPHS) fHOutCentV0MPHSinMB->Fill(fCentV0M);
1214         
1215         fHOutCentFMD->Fill(fCentFMD);
1216         fHOutCentTRK->Fill(fCentTRK);
1217         fHOutCentTKL->Fill(fCentTKL);
1218         fHOutCentCL0->Fill(fCentCL0);
1219         fHOutCentCL1->Fill(fCentCL1);
1220         fHOutCentCND->Fill(fCentCND);
1221         fHOutCentNPA->Fill(fCentNPA);
1222         fHOutCentV0MvsFMD->Fill(fCentV0MvsFMD);
1223         fHOutCentTKLvsV0M->Fill(fCentTKLvsV0M);
1224         fHOutCentZEMvsZDC->Fill(fCentZEMvsZDC);
1225         fHOutCentV0MvsCentCL1->Fill(fCentV0M,fCentCL1);
1226         fHOutCentV0MvsCentTRK->Fill(fCentV0M,fCentTRK);
1227         fHOutCentTRKvsCentCL1->Fill(fCentTRK,fCentCL1);
1228         fHOutCentV0MvsCentZDC->Fill(fCentV0M,fCentZEMvsZDC);
1229         fHOutCentV0AvsCentV0C->Fill(fCentV0A,fCentV0C);
1230         fHOutCentV0AvsCentTRK->Fill(fCentV0A,fCentTRK);
1231         fHOutCentV0AvsCentCND->Fill(fCentV0A,fCentCND);
1232         fHOutCentV0AvsCentCL1->Fill(fCentV0A,fCentCL1);
1233         fHOutCentV0CvsCentTRK->Fill(fCentV0C,fCentTRK);
1234         fHOutCentV0CvsCentCND->Fill(fCentV0C,fCentCND);
1235         fHOutCentV0CvsCentCL1->Fill(fCentV0C,fCentCL1);
1236         fHOutCentNPAvsCentV0A->Fill(fCentNPA,fCentV0A);
1237         fHOutCentNPAvsCentV0C->Fill(fCentNPA,fCentV0C);
1238         fHOutCentNPAvsCentTRK->Fill(fCentNPA,fCentTRK);
1239         fHOutCentNPAvsCentCND->Fill(fCentNPA,fCentCND);
1240         fHOutCentNPAvsCentCL1->Fill(fCentNPA,fCentCL1);
1241
1242         fHOutMultV0AC->Fill(multV0A,multV0C);
1243         fHOutMultV0M->Fill(multV0ACorr+multV0CCorr);
1244         fHOutMultV0A->Fill(multV0ACorr);
1245         fHOutMultV0C->Fill(multV0CCorr);
1246         fHOutMultV0Mnc->Fill(multV0A+multV0C);
1247         fHOutMultV0Anc->Fill(multV0A);
1248         fHOutMultV0Cnc->Fill(multV0C);
1249         fHOutMultV0O->Fill(multV0AOnline+multV0COnline);
1250         fHOutMultV0Cells->Fill(nV0A,nV0C); 
1251         fHOutMultFMD->Fill(multFMDA+multFMDC);
1252         fHOutMultTRK->Fill(nTracks);
1253         fHOutMultTKL->Fill(nTracklets);
1254         fHOutMultCL0->Fill(nClusters[0]);
1255         fHOutMultCL1->Fill(spdCorr);
1256         fHOutMultCND->Fill(multCND);
1257         fHOutMultNPA->Fill(Npart);
1258
1259         fHOutMultV0MvsZDN->Fill(v0Corr,(zncEnergy+znaEnergy));
1260         fHOutMultZEMvsZDN->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy));
1261         fHOutMultV0MvsZDC->Fill(v0Corr,(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1262         fHOutMultZEMvsZDC->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1263         fHOutMultZEMvsZDCw->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy),fCentV0M);
1264         fHOutMultV0MvsCL1->Fill(v0Corr,spdCorr);
1265         fHOutMultV0MvsTRK->Fill(v0Corr,nTracks);
1266         fHOutMultTRKvsCL1->Fill(nTracks,spdCorr);
1267         fHOutMultV0MvsV0O->Fill(v0Corr,(multV0AOnline+multV0COnline));
1268         fHOutMultV0OvsCL1->Fill((multV0AOnline+multV0COnline),spdCorr);
1269         fHOutMultV0OvsTRK->Fill((multV0AOnline+multV0COnline),nTracks);
1270       } else if (fQuality%2 == 0) {
1271         fHOutCentV0Mqual1->Fill(fCentV0M);
1272         fHOutCentTRKqual1->Fill(fCentTRK);
1273         fHOutCentCL1qual1->Fill(fCentCL1);
1274         fHOutMultV0MvsCL1qual1->Fill(v0Corr,spdCorr);
1275         fHOutMultV0MvsTRKqual1->Fill(v0Corr,nTracks);
1276         fHOutMultTRKvsCL1qual1->Fill(nTracks,spdCorr);
1277       } else {
1278         fHOutCentV0Mqual2->Fill(fCentV0M);
1279         fHOutCentTRKqual2->Fill(fCentTRK);
1280         fHOutCentCL1qual2->Fill(fCentCL1);
1281         fHOutMultV0MvsCL1qual2->Fill(v0Corr,spdCorr);
1282         fHOutMultV0MvsTRKqual2->Fill(v0Corr,nTracks);
1283         fHOutMultTRKvsCL1qual2->Fill(nTracks,spdCorr);
1284       }
1285     }
1286     PostData(1, fOutputList); 
1287   }
1288 }
1289 //________________________________________________________________________
1290 void AliCentralitySelectionTask::Terminate(Option_t */*option*/)
1291 {
1292   // Terminate analysis
1293 }
1294 //________________________________________________________________________
1295 Int_t AliCentralitySelectionTask::SetupRun(const AliESDEvent* const esd)
1296 {
1297   // Setup files for run
1298
1299   if (!esd)
1300     return -1;
1301
1302   // check if something to be done
1303   if (fCurrentRun == esd->GetRunNumber())
1304     return 0;
1305   else
1306     fCurrentRun = esd->GetRunNumber();
1307
1308   TString fileName =(Form("%s/COMMON/CENTRALITY/data/centrality.root", AliAnalysisManager::GetOADBPath()));
1309   AliInfo(Form("Setup Centrality Selection for run %d with file %s\n",fCurrentRun,fileName.Data()));
1310
1311   AliOADBContainer *con = new AliOADBContainer("OADB");
1312   con->InitFromFile(fileName,"Centrality");
1313
1314   AliOADBCentrality*  centOADB = 0;
1315   centOADB = (AliOADBCentrality*)(con->GetObject(fCurrentRun));
1316   if (!centOADB) {
1317     AliWarning(Form("Centrality OADB does not exist for run %d, using Default \n",fCurrentRun ));
1318     centOADB  = (AliOADBCentrality*)(con->GetDefaultObject("oadbDefault"));
1319   }
1320
1321   // modes
1322   fUseScaling   = centOADB->UseScaling();
1323   fUseCleaning  = centOADB->UseCleaning();
1324
1325   // cuts
1326   fZVCut        = centOADB->ZVCut();
1327   fOutliersCut  = centOADB->OutliersCut(); 
1328
1329   // centrality histos
1330   fHtempV0M       = centOADB->V0hist(); 
1331   fHtempV0A       = centOADB->V0Ahist(); 
1332   fHtempV0C       = centOADB->V0Chist(); 
1333   fHtempTRK       = centOADB->TPChist();
1334   fHtempCL1       = centOADB->SPDhist();
1335   fHtempCND       = centOADB->CNDhist();
1336   fHtempNPA       = centOADB->NPAhist();
1337   fHtempZEMvsZDC  = centOADB->ZEMvsZDChist();
1338   
1339   TString path = gSystem->ExpandPathName(fileName.Data());
1340   if (!fHtempV0M) AliWarning(Form("Calibration for V0M does not exist in %s", path.Data()));
1341   if (!fHtempV0A) AliWarning(Form("Calibration for V0A does not exist in %s", path.Data()));
1342   if (!fHtempV0C) AliWarning(Form("Calibration for V0C does not exist in %s", path.Data()));
1343   if (!fHtempTRK) AliWarning(Form("Calibration for TRK does not exist in %s", path.Data()));
1344   if (!fHtempCL1) AliWarning(Form("Calibration for CL1 does not exist in %s", path.Data()));
1345   if (!fHtempCND) AliWarning(Form("Calibration for CND does not exist in %s", path.Data()));
1346   if (!fHtempNPA) AliWarning(Form("Calibration for NPA does not exist in %s", path.Data()));
1347   if (!fHtempZEMvsZDC) AliWarning(Form("Calibration for ZEMvsZDC does not exist in %s", path.Data()));
1348
1349   // scale factors
1350   fV0MScaleFactor    = centOADB->V0MScaleFactor();
1351   fSPDScaleFactor    = centOADB->SPDScaleFactor();
1352   fTPCScaleFactor    = centOADB->TPCScaleFactor();
1353   fV0MScaleFactorMC  = centOADB->V0MScaleFactorMC();
1354
1355   // outliers parameters
1356   fV0MSPDOutlierPar0 = centOADB->V0MSPDOutlierPar0();      
1357   fV0MSPDOutlierPar1 = centOADB->V0MSPDOutlierPar1();     
1358   fV0MTPCOutlierPar0 = centOADB->V0MTPCOutlierPar0();      
1359   fV0MTPCOutlierPar1 = centOADB->V0MTPCOutlierPar1();     
1360                                                    
1361   fV0MSPDSigmaOutlierPar0 = centOADB->V0MSPDSigmaOutlierPar0(); 
1362   fV0MSPDSigmaOutlierPar1 = centOADB->V0MSPDSigmaOutlierPar1(); 
1363   fV0MSPDSigmaOutlierPar2 = centOADB->V0MSPDSigmaOutlierPar2();
1364   fV0MTPCSigmaOutlierPar0 = centOADB->V0MTPCSigmaOutlierPar0(); 
1365   fV0MTPCSigmaOutlierPar1 = centOADB->V0MTPCSigmaOutlierPar1(); 
1366   fV0MTPCSigmaOutlierPar2 = centOADB->V0MTPCSigmaOutlierPar2(); 
1367                             
1368   fV0MZDCOutlierPar0 =      centOADB->V0MZDCOutlierPar0();      
1369   fV0MZDCOutlierPar1 =      centOADB->V0MZDCOutlierPar1();      
1370   fV0MZDCEcalOutlierPar0 =  centOADB->V0MZDCEcalOutlierPar0();  
1371   fV0MZDCEcalOutlierPar1 =  centOADB->V0MZDCEcalOutlierPar1();  
1372
1373
1374
1375   return 0;
1376 }
1377
1378
1379
1380 //________________________________________________________________________
1381 Bool_t AliCentralitySelectionTask::IsOutlierV0MSPD(Float_t spd, Float_t v0, Int_t cent) const
1382 {
1383   // Clean outliers
1384   Float_t val = fV0MSPDOutlierPar0 +  fV0MSPDOutlierPar1 * v0;
1385   Float_t spdSigma = fV0MSPDSigmaOutlierPar0 + fV0MSPDSigmaOutlierPar1*cent + fV0MSPDSigmaOutlierPar2*cent*cent;
1386   if ( TMath::Abs(spd-val) > fOutliersCut*spdSigma ) 
1387     return kTRUE;
1388   else 
1389     return kFALSE;
1390 }
1391
1392 //________________________________________________________________________
1393 Bool_t AliCentralitySelectionTask::IsOutlierV0MTPC(Int_t tracks, Float_t v0, Int_t cent) const
1394 {
1395   // Clean outliers
1396   Float_t val = fV0MTPCOutlierPar0 +  fV0MTPCOutlierPar1 * v0;
1397   Float_t tpcSigma = fV0MTPCSigmaOutlierPar0 + fV0MTPCSigmaOutlierPar1*cent + fV0MTPCSigmaOutlierPar2*cent*cent;
1398   if ( TMath::Abs(tracks-val) > fOutliersCut*tpcSigma ) 
1399     return kTRUE;
1400   else 
1401     return kFALSE;
1402 }
1403
1404 //________________________________________________________________________
1405 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDC(Float_t zdc, Float_t v0) const
1406 {
1407   // Clean outliers
1408   Float_t val = fV0MZDCOutlierPar0 + fV0MZDCOutlierPar1 * v0;
1409   if (zdc >  val) 
1410     return kTRUE;
1411   else 
1412   return kFALSE;
1413 }
1414
1415 //________________________________________________________________________
1416 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDCECal(Float_t zdc, Float_t v0) const
1417 {
1418   // Clean outliers
1419   Float_t val = fV0MZDCEcalOutlierPar0 + fV0MZDCEcalOutlierPar1 * v0;
1420   if (zdc >  val) 
1421     return kTRUE;
1422   else 
1423     return kFALSE;
1424 }
1425
1426