]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ANALYSIS/AliCentralitySelectionTask.cxx
Coverity warning corrected.
[u/mrichter/AliRoot.git] / ANALYSIS / AliCentralitySelectionTask.cxx
CommitLineData
a540a9d3 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"
136f0a9b 40#include "AliHeader.h"
a540a9d3 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 "AliESDVZERO.h"
a540a9d3 49#include "AliESDtrackCuts.h"
136f0a9b 50#include "AliESDVertex.h"
51#include "AliCentrality.h"
a43ed687 52#include "AliOADBCentrality.h"
53#include "AliOADBContainer.h"
a540a9d3 54#include "AliMultiplicity.h"
55#include "AliAODHandler.h"
136f0a9b 56#include "AliAODHeader.h"
a540a9d3 57#include "AliAODEvent.h"
a540a9d3 58#include "AliAODVertex.h"
136f0a9b 59#include "AliAODVZERO.h"
60#include "AliAODTracklets.h"
a540a9d3 61#include "AliAODMCHeader.h"
a540a9d3 62#include "AliMCEventHandler.h"
136f0a9b 63#include "AliMCEvent.h"
64#include "AliAODMCParticle.h"
a540a9d3 65#include "AliMCParticle.h"
66#include "AliStack.h"
a540a9d3 67#include "AliAnalysisTaskSE.h"
68#include "AliGenEventHeader.h"
69#include "AliGenHijingEventHeader.h"
70#include "AliPhysicsSelectionTask.h"
71#include "AliPhysicsSelection.h"
72#include "AliBackgroundSelection.h"
73#include "AliESDUtils.h"
74
75ClassImp(AliCentralitySelectionTask)
76
77
78//________________________________________________________________________
79AliCentralitySelectionTask::AliCentralitySelectionTask():
80AliAnalysisTaskSE(),
a540a9d3 81 fAnalysisInput("ESD"),
82 fIsMCInput(kFALSE),
a121a512 83 fPass(0),
a540a9d3 84 fCurrentRun(-1),
a540a9d3 85 fUseScaling(0),
d015c169 86 fUseCleaning(0),
a43ed687 87 fV0MScaleFactor(0),
88 fSPDScaleFactor(0),
89 fTPCScaleFactor(0),
90 fV0MScaleFactorMC(0),
91 fV0MSPDOutlierPar0(0),
92 fV0MSPDOutlierPar1(0),
93 fV0MTPCOutlierPar0(0),
94 fV0MTPCOutlierPar1(0),
95 fV0MSPDSigmaOutlierPar0(0),
96 fV0MSPDSigmaOutlierPar1(0),
97 fV0MSPDSigmaOutlierPar2(0),
98 fV0MTPCSigmaOutlierPar0(0),
99 fV0MTPCSigmaOutlierPar1(0),
100 fV0MTPCSigmaOutlierPar2(0),
101 fV0MZDCOutlierPar0(0),
102 fV0MZDCOutlierPar1(0),
103 fV0MZDCEcalOutlierPar0(0),
104 fV0MZDCEcalOutlierPar1(0),
a540a9d3 105 fTrackCuts(0),
106 fZVCut(10),
107 fOutliersCut(5),
407bd85b 108 fQuality(999),
4fced115 109 fCVHN(0),
110 fCVLN(0),
0caaf699 111 fCVHNbit(0),
112 fCVLNbit(0),
624cda23 113 fIsSelected(0),
a540a9d3 114 fCentV0M(0),
115 fCentFMD(0),
116 fCentTRK(0),
117 fCentTKL(0),
118 fCentCL0(0),
119 fCentCL1(0),
120 fCentV0MvsFMD(0),
121 fCentTKLvsV0M(0),
122 fCentZEMvsZDC(0),
123 fHtempV0M(0),
124 fHtempFMD(0),
125 fHtempTRK(0),
126 fHtempTKL(0),
127 fHtempCL0(0),
128 fHtempCL1(0),
129 fHtempV0MvsFMD(0),
130 fHtempTKLvsV0M(0),
131 fHtempZEMvsZDC(0),
132 fOutputList(0),
133 fHOutCentV0M (0),
4fced115 134 fHOutCentV0M_CVHN(0),
135 fHOutCentV0M_CVLN(0),
84bbff84 136 fHOutCentV0M_CVHNinMB(0),
137 fHOutCentV0M_CVLNinMB(0),
a540a9d3 138 fHOutCentFMD (0),
139 fHOutCentTRK (0),
140 fHOutCentTKL (0),
141 fHOutCentCL0 (0),
142 fHOutCentCL1 (0),
143 fHOutCentV0MvsFMD(0),
144 fHOutCentTKLvsV0M(0),
145 fHOutCentZEMvsZDC(0),
9138a60c 146 fHOutCentV0MvsCentCL1(0),
147 fHOutCentV0MvsCentTRK(0),
148 fHOutCentTRKvsCentCL1(0),
980d6ad3 149 fHOutCentV0MvsCentZDC(0),
a540a9d3 150 fHOutMultV0M(0),
a43ed687 151 fHOutMultV0O(0),
a540a9d3 152 fHOutMultFMD(0),
153 fHOutMultTRK(0),
154 fHOutMultTKL(0),
155 fHOutMultCL0(0),
156 fHOutMultCL1(0),
31200bdf 157 fHOutMultV0MvsZDN(0),
158 fHOutMultZEMvsZDN(0),
a540a9d3 159 fHOutMultV0MvsZDC(0),
160 fHOutMultZEMvsZDC(0),
39bbe018 161 fHOutMultZEMvsZDCw(0),
a540a9d3 162 fHOutMultV0MvsCL1(0),
163 fHOutMultV0MvsTRK(0),
164 fHOutMultTRKvsCL1(0),
a43ed687 165 fHOutMultV0MvsV0O(0),
166 fHOutMultV0OvsCL1(0),
167 fHOutMultV0OvsTRK(0),
04341115 168 fHOutCentV0Mqual1(0),
169 fHOutCentTRKqual1(0),
170 fHOutCentCL1qual1(0),
79d4544b 171 fHOutMultV0MvsCL1qual1(0),
172 fHOutMultV0MvsTRKqual1(0),
173 fHOutMultTRKvsCL1qual1(0),
04341115 174 fHOutCentV0Mqual2(0),
175 fHOutCentTRKqual2(0),
176 fHOutCentCL1qual2(0),
79d4544b 177 fHOutMultV0MvsCL1qual2(0),
178 fHOutMultV0MvsTRKqual2(0),
179 fHOutMultTRKvsCL1qual2(0),
a540a9d3 180 fHOutQuality(0),
181 fHOutVertex(0)
182{
183 // Default constructor
184 AliInfo("Centrality Selection enabled.");
a43ed687 185
a540a9d3 186 fUseScaling=kTRUE;
d015c169 187 fUseCleaning=kTRUE;
cb15f505 188 fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO."
a43ed687 189 ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks ";
a540a9d3 190}
191
192//________________________________________________________________________
193AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
194 AliAnalysisTaskSE(name),
a540a9d3 195 fAnalysisInput("ESD"),
196 fIsMCInput(kFALSE),
a121a512 197 fPass(0),
a540a9d3 198 fCurrentRun(-1),
a540a9d3 199 fUseScaling(0),
d015c169 200 fUseCleaning(0),
a43ed687 201 fV0MScaleFactor(0),
202 fSPDScaleFactor(0),
203 fTPCScaleFactor(0),
204 fV0MScaleFactorMC(0),
205 fV0MSPDOutlierPar0(0),
206 fV0MSPDOutlierPar1(0),
207 fV0MTPCOutlierPar0(0),
208 fV0MTPCOutlierPar1(0),
209 fV0MSPDSigmaOutlierPar0(0),
210 fV0MSPDSigmaOutlierPar1(0),
211 fV0MSPDSigmaOutlierPar2(0),
212 fV0MTPCSigmaOutlierPar0(0),
213 fV0MTPCSigmaOutlierPar1(0),
4fced115 214 fV0MTPCSigmaOutlierPar2(0),
a43ed687 215 fV0MZDCOutlierPar0(0),
216 fV0MZDCOutlierPar1(0),
217 fV0MZDCEcalOutlierPar0(0),
218 fV0MZDCEcalOutlierPar1(0),
a540a9d3 219 fTrackCuts(0),
220 fZVCut(10),
221 fOutliersCut(5),
407bd85b 222 fQuality(999),
4fced115 223 fCVHN(0),
224 fCVLN(0),
0caaf699 225 fCVHNbit(0),
226 fCVLNbit(0),
624cda23 227 fIsSelected(0),
a540a9d3 228 fCentV0M(0),
229 fCentFMD(0),
230 fCentTRK(0),
231 fCentTKL(0),
232 fCentCL0(0),
233 fCentCL1(0),
234 fCentV0MvsFMD(0),
235 fCentTKLvsV0M(0),
236 fCentZEMvsZDC(0),
237 fHtempV0M(0),
238 fHtempFMD(0),
239 fHtempTRK(0),
240 fHtempTKL(0),
241 fHtempCL0(0),
242 fHtempCL1(0),
243 fHtempV0MvsFMD(0),
244 fHtempTKLvsV0M(0),
245 fHtempZEMvsZDC(0),
246 fOutputList(0),
247 fHOutCentV0M (0),
4fced115 248 fHOutCentV0M_CVHN(0),
249 fHOutCentV0M_CVLN(0),
84bbff84 250 fHOutCentV0M_CVHNinMB(0),
251 fHOutCentV0M_CVLNinMB(0),
a540a9d3 252 fHOutCentFMD (0),
253 fHOutCentTRK (0),
254 fHOutCentTKL (0),
255 fHOutCentCL0 (0),
256 fHOutCentCL1 (0),
257 fHOutCentV0MvsFMD(0),
258 fHOutCentTKLvsV0M(0),
259 fHOutCentZEMvsZDC(0),
9138a60c 260 fHOutCentV0MvsCentCL1(0),
261 fHOutCentV0MvsCentTRK(0),
262 fHOutCentTRKvsCentCL1(0),
980d6ad3 263 fHOutCentV0MvsCentZDC(0),
a540a9d3 264 fHOutMultV0M(0),
a43ed687 265 fHOutMultV0O(0),
a540a9d3 266 fHOutMultFMD(0),
267 fHOutMultTRK(0),
268 fHOutMultTKL(0),
269 fHOutMultCL0(0),
270 fHOutMultCL1(0),
31200bdf 271 fHOutMultV0MvsZDN(0),
272 fHOutMultZEMvsZDN(0),
a540a9d3 273 fHOutMultV0MvsZDC(0),
274 fHOutMultZEMvsZDC(0),
39bbe018 275 fHOutMultZEMvsZDCw(0),
a540a9d3 276 fHOutMultV0MvsCL1(0),
277 fHOutMultV0MvsTRK(0),
278 fHOutMultTRKvsCL1(0),
a43ed687 279 fHOutMultV0MvsV0O(0),
280 fHOutMultV0OvsCL1(0),
281 fHOutMultV0OvsTRK(0),
04341115 282 fHOutCentV0Mqual1(0),
283 fHOutCentTRKqual1(0),
284 fHOutCentCL1qual1(0),
79d4544b 285 fHOutMultV0MvsCL1qual1(0),
286 fHOutMultV0MvsTRKqual1(0),
287 fHOutMultTRKvsCL1qual1(0),
04341115 288 fHOutCentV0Mqual2(0),
289 fHOutCentTRKqual2(0),
290 fHOutCentCL1qual2(0),
79d4544b 291 fHOutMultV0MvsCL1qual2(0),
292 fHOutMultV0MvsTRKqual2(0),
293 fHOutMultTRKvsCL1qual2(0),
a540a9d3 294 fHOutQuality(0),
295 fHOutVertex(0)
296{
a43ed687 297 // Default constructor
a540a9d3 298 AliInfo("Centrality Selection enabled.");
299 DefineOutput(1, TList::Class());
a540a9d3 300 fUseScaling=kTRUE;
d015c169 301 fUseCleaning=kTRUE;
cb15f505 302 fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO."
a43ed687 303 ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks ";
a540a9d3 304}
305
306//________________________________________________________________________
307AliCentralitySelectionTask& AliCentralitySelectionTask::operator=(const AliCentralitySelectionTask& c)
308{
309 // Assignment operator
310 if (this!=&c) {
311 AliAnalysisTaskSE::operator=(c);
312 }
313 return *this;
314}
315
316//________________________________________________________________________
317AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelectionTask& ana):
318 AliAnalysisTaskSE(ana),
a540a9d3 319 fAnalysisInput(ana.fDebug),
320 fIsMCInput(ana.fIsMCInput),
a121a512 321 fPass(ana.fPass),
a540a9d3 322 fCurrentRun(ana.fCurrentRun),
a540a9d3 323 fUseScaling(ana.fUseScaling),
d015c169 324 fUseCleaning(ana.fUseCleaning),
a43ed687 325 fV0MScaleFactor(ana.fV0MScaleFactor),
326 fSPDScaleFactor(ana.fSPDScaleFactor),
327 fTPCScaleFactor(ana.fTPCScaleFactor),
328 fV0MScaleFactorMC(ana.fV0MScaleFactorMC),
329 fV0MSPDOutlierPar0(ana.fV0MSPDOutlierPar0),
330 fV0MSPDOutlierPar1(ana.fV0MSPDOutlierPar1),
331 fV0MTPCOutlierPar0(ana.fV0MTPCOutlierPar0),
332 fV0MTPCOutlierPar1(ana.fV0MTPCOutlierPar1),
333 fV0MSPDSigmaOutlierPar0(ana.fV0MSPDSigmaOutlierPar0),
334 fV0MSPDSigmaOutlierPar1(ana.fV0MSPDSigmaOutlierPar1),
335 fV0MSPDSigmaOutlierPar2(ana.fV0MSPDSigmaOutlierPar2),
336 fV0MTPCSigmaOutlierPar0(ana.fV0MTPCSigmaOutlierPar0),
337 fV0MTPCSigmaOutlierPar1(ana.fV0MTPCSigmaOutlierPar1),
4fced115 338 fV0MTPCSigmaOutlierPar2(ana.fV0MTPCSigmaOutlierPar2),
a43ed687 339 fV0MZDCOutlierPar0(ana.fV0MZDCOutlierPar0),
340 fV0MZDCOutlierPar1(ana.fV0MZDCOutlierPar1),
341 fV0MZDCEcalOutlierPar0(ana.fV0MZDCEcalOutlierPar0),
342 fV0MZDCEcalOutlierPar1(ana.fV0MZDCEcalOutlierPar1),
a540a9d3 343 fTrackCuts(ana.fTrackCuts),
344 fZVCut(ana.fZVCut),
345 fOutliersCut(ana.fOutliersCut),
346 fQuality(ana.fQuality),
4fced115 347 fCVHN(ana.fCVHN),
348 fCVLN(ana.fCVLN),
0caaf699 349 fCVHNbit(ana.fCVHNbit),
350 fCVLNbit(ana.fCVLNbit),
624cda23 351 fIsSelected(ana.fIsSelected),
a540a9d3 352 fCentV0M(ana.fCentV0M),
353 fCentFMD(ana.fCentFMD),
354 fCentTRK(ana.fCentTRK),
355 fCentTKL(ana.fCentTKL),
356 fCentCL0(ana.fCentCL0),
357 fCentCL1(ana.fCentCL1),
358 fCentV0MvsFMD(ana.fCentV0MvsFMD),
359 fCentTKLvsV0M(ana.fCentTKLvsV0M),
360 fCentZEMvsZDC(ana.fCentZEMvsZDC),
361 fHtempV0M(ana.fHtempV0M),
362 fHtempFMD(ana.fHtempFMD),
363 fHtempTRK(ana.fHtempTRK),
364 fHtempTKL(ana.fHtempTKL),
365 fHtempCL0(ana.fHtempCL0),
366 fHtempCL1(ana.fHtempCL1),
367 fHtempV0MvsFMD(ana.fHtempV0MvsFMD),
368 fHtempTKLvsV0M(ana.fHtempTKLvsV0M),
369 fHtempZEMvsZDC(ana.fHtempZEMvsZDC),
370 fOutputList(ana.fOutputList),
371 fHOutCentV0M (ana.fHOutCentV0M ),
4fced115 372 fHOutCentV0M_CVHN(ana.fHOutCentV0M_CVHN),
373 fHOutCentV0M_CVLN(ana.fHOutCentV0M_CVLN),
84bbff84 374 fHOutCentV0M_CVHNinMB(ana.fHOutCentV0M_CVHNinMB),
375 fHOutCentV0M_CVLNinMB(ana.fHOutCentV0M_CVLNinMB),
a540a9d3 376 fHOutCentFMD (ana.fHOutCentFMD ),
377 fHOutCentTRK (ana.fHOutCentTRK ),
378 fHOutCentTKL (ana.fHOutCentTKL ),
379 fHOutCentCL0 (ana.fHOutCentCL0 ),
380 fHOutCentCL1 (ana.fHOutCentCL1 ),
381 fHOutCentV0MvsFMD(ana.fHOutCentV0MvsFMD),
382 fHOutCentTKLvsV0M(ana.fHOutCentTKLvsV0M),
383 fHOutCentZEMvsZDC(ana.fHOutCentZEMvsZDC),
9138a60c 384 fHOutCentV0MvsCentCL1(ana.fHOutCentV0MvsCentCL1),
385 fHOutCentV0MvsCentTRK(ana.fHOutCentV0MvsCentTRK),
386 fHOutCentTRKvsCentCL1(ana.fHOutCentTRKvsCentCL1),
980d6ad3 387 fHOutCentV0MvsCentZDC(ana.fHOutCentV0MvsCentZDC),
a540a9d3 388 fHOutMultV0M(ana.fHOutMultV0M),
a43ed687 389 fHOutMultV0O(ana.fHOutMultV0O),
a540a9d3 390 fHOutMultFMD(ana.fHOutMultFMD),
391 fHOutMultTRK(ana.fHOutMultTRK),
392 fHOutMultTKL(ana.fHOutMultTKL),
393 fHOutMultCL0(ana.fHOutMultCL0),
394 fHOutMultCL1(ana.fHOutMultCL1),
31200bdf 395 fHOutMultV0MvsZDN(ana.fHOutMultV0MvsZDN),
396 fHOutMultZEMvsZDN(ana.fHOutMultZEMvsZDN),
a540a9d3 397 fHOutMultV0MvsZDC(ana.fHOutMultV0MvsZDC),
398 fHOutMultZEMvsZDC(ana.fHOutMultZEMvsZDC),
39bbe018 399 fHOutMultZEMvsZDCw(ana.fHOutMultZEMvsZDCw),
a540a9d3 400 fHOutMultV0MvsCL1(ana.fHOutMultV0MvsCL1),
401 fHOutMultV0MvsTRK(ana.fHOutMultV0MvsTRK),
402 fHOutMultTRKvsCL1(ana.fHOutMultTRKvsCL1),
a43ed687 403 fHOutMultV0MvsV0O(ana.fHOutMultV0MvsV0O),
404 fHOutMultV0OvsCL1(ana.fHOutMultV0OvsCL1),
405 fHOutMultV0OvsTRK(ana.fHOutMultV0OvsTRK),
04341115 406 fHOutCentV0Mqual1(ana.fHOutCentV0Mqual1),
407 fHOutCentTRKqual1(ana.fHOutCentTRKqual1),
408 fHOutCentCL1qual1(ana.fHOutCentCL1qual1),
79d4544b 409 fHOutMultV0MvsCL1qual1(ana.fHOutMultV0MvsCL1qual1),
410 fHOutMultV0MvsTRKqual1(ana.fHOutMultV0MvsTRKqual1),
411 fHOutMultTRKvsCL1qual1(ana.fHOutMultTRKvsCL1qual1),
04341115 412 fHOutCentV0Mqual2(ana.fHOutCentV0Mqual2),
413 fHOutCentTRKqual2(ana.fHOutCentTRKqual2),
414 fHOutCentCL1qual2(ana.fHOutCentCL1qual2),
79d4544b 415 fHOutMultV0MvsCL1qual2(ana.fHOutMultV0MvsCL1qual2),
416 fHOutMultV0MvsTRKqual2(ana.fHOutMultV0MvsTRKqual2),
417 fHOutMultTRKvsCL1qual2(ana.fHOutMultTRKvsCL1qual2),
a540a9d3 418 fHOutQuality(ana.fHOutQuality),
419 fHOutVertex(ana.fHOutVertex)
420{
421 // Copy Constructor
7ee7a2df 422
a540a9d3 423}
a43ed687 424
a540a9d3 425//________________________________________________________________________
426AliCentralitySelectionTask::~AliCentralitySelectionTask()
427{
428 // Destructor
429 if (fOutputList && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) delete fOutputList;
430 if (fTrackCuts) delete fTrackCuts;
431}
432
433//________________________________________________________________________
434void AliCentralitySelectionTask::UserCreateOutputObjects()
435{
436 // Create the output containers
437 if(fDebug>1) printf("AnalysisCentralitySelectionTask::UserCreateOutputObjects() \n");
438 AliLog::SetClassDebugLevel("AliCentralitySelectionTask", AliLog::kInfo);
439
440 fOutputList = new TList();
441 fOutputList->SetOwner();
bab72d34 442 fHOutCentV0M = new TH1F("fHOutCentV0M","fHOutCentV0M; Centrality V0",505,0,101);
4fced115 443 fHOutCentV0M_CVHN= new TH1F("fHOutCentV0M_CVHN","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
444 fHOutCentV0M_CVLN= new TH1F("fHOutCentV0M_CVLN","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
84bbff84 445 fHOutCentV0M_CVHNinMB= new TH1F("fHOutCentV0M_CVHNinMB","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
446 fHOutCentV0M_CVLNinMB= new TH1F("fHOutCentV0M_CVLNinMB","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
bab72d34 447 fHOutCentFMD = new TH1F("fHOutCentFMD","fHOutCentFMD; Centrality FMD",505,0,101);
448 fHOutCentTRK = new TH1F("fHOutCentTRK","fHOutCentTRK; Centrality TPC",505,0,101);
449 fHOutCentTKL = new TH1F("fHOutCentTKL","fHOutCentTKL; Centrality tracklets",505,0,101);
450 fHOutCentCL0 = new TH1F("fHOutCentCL0","fHOutCentCL0; Centrality SPD inner",505,0,101);
451 fHOutCentCL1 = new TH1F("fHOutCentCL1","fHOutCentCL1; Centrality SPD outer",505,0,101);
452 fHOutCentV0MvsFMD= new TH1F("fHOutCentV0MvsFMD","fHOutCentV0MvsFMD; Centrality V0 vs FMD",505,0,101);
453 fHOutCentTKLvsV0M= new TH1F("fHOutCentTKLvsV0M","fHOutCentTKLvsV0M; Centrality tracklets vs V0",505,0,101);
454 fHOutCentZEMvsZDC= new TH1F("fHOutCentZEMvsZDC","fHOutCentZEMvsZDC; Centrality ZEM vs ZDC",505,0,101);
980d6ad3 455 fHOutCentV0MvsCentCL1= new TH2F("fHOutCentV0MvsCentCL1","fHOutCentV0MvsCentCL1; Cent V0; Cent SPD",505,0,101,505,0,101);
456 fHOutCentV0MvsCentTRK= new TH2F("fHOutCentV0MvsCentTRK","fHOutCentV0MvsCentTRK; Cent V0; Cent TPC",505,0,101,505,0,101);
457 fHOutCentTRKvsCentCL1= new TH2F("fHOutCentTRKvsCentCL1","fHOutCentTRKvsCentCL1; Cent TPC; Cent SPD",505,0,101,505,0,101);
458 fHOutCentV0MvsCentZDC= new TH2F("fHOutCentV0MvsCentZDC","fHOutCentV0MvsCentZDC; Cent V0; Cent ZDC",505,0,101,505,0,101);
a43ed687 459 fHOutMultV0M = new TH1F("fHOutMultV0M","fHOutMultV0M; Multiplicity V0",25000,0,30000);
14559332 460 fHOutMultV0O = new TH1F("fHOutMultV0O","fHOutMultV0O; Multiplicity V0",40000,0,40000);
a540a9d3 461 fHOutMultFMD = new TH1F("fHOutMultFMD","fHOutMultFMD; Multiplicity FMD",24000,0,24000);
462 fHOutMultTRK = new TH1F("fHOutMultTRK","fHOutMultTRK; Multiplicity TPC",4000,0,4000);
463 fHOutMultTKL = new TH1F("fHOutMultTKL","fHOutMultTKL; Multiplicity tracklets",5000,0,5000);
464 fHOutMultCL0 = new TH1F("fHOutMultCL0","fHOutMultCL0; Multiplicity SPD inner",7000,0,7000);
465 fHOutMultCL1 = new TH1F("fHOutMultCL1","fHOutMultCL1; Multiplicity SPD outer",7000,0,7000);
a43ed687 466 fHOutMultV0MvsZDN = new TH2F("fHOutMultV0MvsZDN","fHOutMultV0MvsZDN; Multiplicity V0; Energy ZDC-N",500,0,30000,500,0,180000);
31200bdf 467 fHOutMultZEMvsZDN = new TH2F("fHOutMultZEMvsZDN","fHOutMultZEMvsZDN; Energy ZEM; Energy ZDC-N",500,0,2500,500,0,180000);
a43ed687 468 fHOutMultV0MvsZDC = new TH2F("fHOutMultV0MvsZDC","fHOutMultV0MvsZDC; Multiplicity V0; Energy ZDC",500,0,30000,500,0,200000);
31200bdf 469 fHOutMultZEMvsZDC = new TH2F("fHOutMultZEMvsZDC","fHOutMultZEMvsZDC; Energy ZEM; Energy ZDC",500,0,2500,500,0,200000);
39bbe018 470 fHOutMultZEMvsZDCw = new TH2F("fHOutMultZEMvsZDCw","fHOutMultZEMvsZDCw; Energy ZEM; Energy ZDC (weigthed with V0 percentile)",500,0,2500,500,0,200000);
a43ed687 471 fHOutMultV0MvsCL1 = new TH2F("fHOutMultV0MvsCL1","fHOutMultV0MvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
472 fHOutMultV0MvsTRK = new TH2F("fHOutMultV0MvsTRK","fHOutMultV0MvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
a540a9d3 473 fHOutMultTRKvsCL1 = new TH2F("fHOutMultTRKvsCL1","fHOutMultTRKvsCL1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
14559332 474 fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,40000);
475 fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",500,0,40000,700,0,7000);
476 fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",500,0,40000,400,0,4000);
a43ed687 477 fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,30000);
478 fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
479 fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
a540a9d3 480
04341115 481 fHOutCentV0Mqual1 = new TH1F("fHOutCentV0M_qual1","fHOutCentV0M_qual1; Centrality V0",505,0,101);
482 fHOutCentTRKqual1 = new TH1F("fHOutCentTRK_qual1","fHOutCentTRK_qual1; Centrality TPC",505,0,101);
483 fHOutCentCL1qual1 = new TH1F("fHOutCentCL1_qual1","fHOutCentCL1_qual1; Centrality SPD outer",505,0,101);
79d4544b 484 fHOutMultV0MvsCL1qual1 = new TH2F("fHOutMultV0MvsCL1_qual1","fHOutMultV0MvsCL1_qual1; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
485 fHOutMultV0MvsTRKqual1 = new TH2F("fHOutMultV0MvsTRK_qual1","fHOutMultV0MvsTRK_qual1; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
486 fHOutMultTRKvsCL1qual1 = new TH2F("fHOutMultTRKvsCL1_qual1","fHOutMultTRKvsCL1_qual1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
a540a9d3 487
04341115 488 fHOutCentV0Mqual2 = new TH1F("fHOutCentV0M_qual2","fHOutCentV0M_qual2; Centrality V0",505,0,101);
489 fHOutCentTRKqual2 = new TH1F("fHOutCentTRK_qual2","fHOutCentTRK_qual2; Centrality TPC",505,0,101);
490 fHOutCentCL1qual2 = new TH1F("fHOutCentCL1_qual2","fHOutCentCL1_qual2; Centrality SPD outer",505,0,101);
79d4544b 491 fHOutMultV0MvsCL1qual2 = new TH2F("fHOutMultV0MvsCL1_qual2","fHOutMultV0MvsCL1_qual2; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
492 fHOutMultV0MvsTRKqual2 = new TH2F("fHOutMultV0MvsTRK_qual2","fHOutMultV0MvsTRK_qual2; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
493 fHOutMultTRKvsCL1qual2 = new TH2F("fHOutMultTRKvsCL1_qual2","fHOutMultTRKvsCL1_qual2; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
a540a9d3 494
407bd85b 495 fHOutQuality = new TH1F("fHOutQuality", "fHOutQuality", 100,-0.5,99.5);
a540a9d3 496 fHOutVertex = new TH1F("fHOutVertex", "fHOutVertex", 100,-20,20);
497
498 fOutputList->Add( fHOutCentV0M );
4fced115 499 fOutputList->Add( fHOutCentV0M_CVHN);
500 fOutputList->Add( fHOutCentV0M_CVLN);
84bbff84 501 fOutputList->Add( fHOutCentV0M_CVHNinMB);
502 fOutputList->Add( fHOutCentV0M_CVLNinMB);
a540a9d3 503 fOutputList->Add( fHOutCentFMD );
504 fOutputList->Add( fHOutCentTRK );
505 fOutputList->Add( fHOutCentTKL );
506 fOutputList->Add( fHOutCentCL0 );
507 fOutputList->Add( fHOutCentCL1 );
508 fOutputList->Add( fHOutCentV0MvsFMD);
509 fOutputList->Add( fHOutCentTKLvsV0M);
510 fOutputList->Add( fHOutCentZEMvsZDC);
9138a60c 511 fOutputList->Add( fHOutCentV0MvsCentCL1);
512 fOutputList->Add( fHOutCentV0MvsCentTRK);
513 fOutputList->Add( fHOutCentTRKvsCentCL1);
980d6ad3 514 fOutputList->Add( fHOutCentV0MvsCentZDC);
a540a9d3 515 fOutputList->Add( fHOutMultV0M);
a43ed687 516 fOutputList->Add( fHOutMultV0O);
a540a9d3 517 fOutputList->Add( fHOutMultFMD);
518 fOutputList->Add( fHOutMultTRK);
519 fOutputList->Add( fHOutMultTKL);
520 fOutputList->Add( fHOutMultCL0);
521 fOutputList->Add( fHOutMultCL1);
31200bdf 522 fOutputList->Add( fHOutMultV0MvsZDN);
523 fOutputList->Add( fHOutMultZEMvsZDN);
a540a9d3 524 fOutputList->Add( fHOutMultV0MvsZDC);
525 fOutputList->Add( fHOutMultZEMvsZDC);
39bbe018 526 fOutputList->Add( fHOutMultZEMvsZDCw);
a540a9d3 527 fOutputList->Add( fHOutMultV0MvsCL1);
528 fOutputList->Add( fHOutMultV0MvsTRK);
529 fOutputList->Add( fHOutMultTRKvsCL1);
a43ed687 530 fOutputList->Add( fHOutMultV0MvsV0O);
531 fOutputList->Add( fHOutMultV0OvsCL1);
532 fOutputList->Add( fHOutMultV0OvsTRK);
04341115 533 fOutputList->Add( fHOutCentV0Mqual1 );
534 fOutputList->Add( fHOutCentTRKqual1 );
535 fOutputList->Add( fHOutCentCL1qual1 );
79d4544b 536 fOutputList->Add( fHOutMultV0MvsCL1qual1);
537 fOutputList->Add( fHOutMultV0MvsTRKqual1);
538 fOutputList->Add( fHOutMultTRKvsCL1qual1);
04341115 539 fOutputList->Add( fHOutCentV0Mqual2 );
540 fOutputList->Add( fHOutCentTRKqual2 );
541 fOutputList->Add( fHOutCentCL1qual2 );
79d4544b 542 fOutputList->Add( fHOutMultV0MvsCL1qual2);
543 fOutputList->Add( fHOutMultV0MvsTRKqual2);
544 fOutputList->Add( fHOutMultTRKvsCL1qual2);
a540a9d3 545 fOutputList->Add( fHOutQuality );
546 fOutputList->Add( fHOutVertex );
547
548
549 fTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
550
551 PostData(1, fOutputList);
552
afb1125b 553 if (fPass==0) AliFatal("Which pass are you analyzing? You should set it via taskCentrality->SetPass(N)");
a540a9d3 554}
555
556//________________________________________________________________________
557void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
558{
559 // Execute analysis for current event:
560 if(fDebug>1) printf(" **** AliCentralitySelectionTask::UserExec() \n");
a43ed687 561
a540a9d3 562 Float_t zncEnergy = 0.; // ZNC Energy
563 Float_t zpcEnergy = 0.; // ZPC Energy
564 Float_t znaEnergy = 0.; // ZNA Energy
565 Float_t zpaEnergy = 0.; // ZPA Energy
566 Float_t zem1Energy = 0.; // ZEM1 Energy
567 Float_t zem2Energy = 0.; // ZEM2 Energy
cfead5a9 568 Bool_t zdcEnergyCal = kFALSE; // if zdc is calibrated (in pass2)
569
a540a9d3 570 Int_t nTracks = 0; // no. tracks
571 Int_t nTracklets = 0; // no. tracklets
572 Int_t nClusters[6] = {0}; // no. clusters on 6 ITS layers
573 Int_t nChips[2]; // no. chips on 2 SPD layers
574 Float_t spdCorr =0; // corrected spd2 multiplicity
575
576 Float_t multV0A = 0; // multiplicity from V0 reco side A
577 Float_t multV0C = 0; // multiplicity from V0 reco side C
a43ed687 578 Short_t multV0AOnline = 0; // multiplicity from V0 reco side A
579 Short_t multV0COnline = 0; // multiplicity from V0 reco side C
580 Float_t v0Corr = 0; // corrected V0 multiplicity (used for MC)
581
a540a9d3 582 Float_t multFMDA = 0; // multiplicity from FMD on detector A
583 Float_t multFMDC = 0; // multiplicity from FMD on detector C
584
a540a9d3 585 Float_t zvtx =0; // z-vertex SPD
407bd85b 586 Int_t zvtxNcont =0; // contributors to z-vertex SPD
136f0a9b 587
a43ed687 588
a540a9d3 589 AliCentrality *esdCent = 0;
590
591 if(fAnalysisInput.CompareTo("ESD")==0){
a43ed687 592
a540a9d3 593 AliVEvent* event = InputEvent();
594 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
595 if (!esd) {
a43ed687 596 AliError("No ESD Event");
597 return;
a540a9d3 598 }
a43ed687 599
cb15f505 600 LoadBranches();
a540a9d3 601
a43ed687 602 if (SetupRun(esd)<0) {
603 AliError("Centrality File not available for this run");
604 return;
a540a9d3 605 }
a43ed687 606
a540a9d3 607 esdCent = esd->GetCentrality();
608
609 // ***** V0 info
610 AliESDVZERO* esdV0 = esd->GetVZEROData();
611 multV0A=esdV0->GetMTotV0A();
612 multV0C=esdV0->GetMTotV0C();
a43ed687 613 v0Corr = multV0A+multV0C;
614
615 multV0AOnline=esdV0->GetTriggerChargeA();
616 multV0COnline=esdV0->GetTriggerChargeC();
a540a9d3 617
a540a9d3 618
4fced115 619 // ***** Trigger info
624cda23 620 fIsSelected = ((esdV0->GetV0ADecision()==1) && (esdV0->GetV0CDecision()==1));
4fced115 621 TString trigStr(esd->GetFiredTriggerClasses());
622 fCVHN=kFALSE; fCVLN=kFALSE;
624cda23 623 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CVHN")) && (fIsSelected))
624 fCVHN=kTRUE;
625 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CVLN")) && (fIsSelected))
626 fCVLN=kTRUE;
0caaf699 627 fCVHNbit=kFALSE; fCVLNbit=kFALSE;
628 if (esdV0->GetTriggerBits() & (1<<8))
629 fCVHNbit=kTRUE;
630 if (esdV0->GetTriggerBits() & (1<<6))
631 fCVLNbit=kTRUE;
632
4fced115 633
a540a9d3 634 // ***** Vertex Info
635 const AliESDVertex* vtxESD = esd->GetPrimaryVertexSPD();
636 zvtx = vtxESD->GetZ();
407bd85b 637 zvtxNcont = vtxESD->GetNContributors();
a540a9d3 638
639 // ***** CB info (tracklets, clusters, chips)
640 //nTracks = event->GetNumberOfTracks();
641 nTracks = fTrackCuts ? (Short_t)fTrackCuts->GetReferenceMultiplicity(esd,kTRUE):-1;
642
643 const AliMultiplicity *mult = esd->GetMultiplicity();
644
645 nTracklets = mult->GetNumberOfTracklets();
646
647 for(Int_t ilay=0; ilay<6; ilay++){
648 nClusters[ilay] = mult->GetNumberOfITSClusters(ilay);
649 }
650
651 for(Int_t ilay=0; ilay<2; ilay++){
652 nChips[ilay] = mult->GetNumberOfFiredChips(ilay);
653 }
654
655 spdCorr = AliESDUtils::GetCorrSPD2(nClusters[1],zvtx);
656
657 // ***** FMD info
658 AliESDFMD *fmd = esd->GetFMDData();
659 Float_t totalMultA = 0;
660 Float_t totalMultC = 0;
661 const Float_t fFMDLowCut = 0.4;
a43ed687 662
a540a9d3 663 for(UShort_t det=1;det<=3;det++) {
664 Int_t nRings = (det==1 ? 1 : 2);
665 for (UShort_t ir = 0; ir < nRings; ir++) {
a43ed687 666 Char_t ring = (ir == 0 ? 'I' : 'O');
667 UShort_t nsec = (ir == 0 ? 20 : 40);
668 UShort_t nstr = (ir == 0 ? 512 : 256);
669 for(UShort_t sec =0; sec < nsec; sec++) {
670 for(UShort_t strip = 0; strip < nstr; strip++) {
a540a9d3 671
a43ed687 672 Float_t fmdMult = fmd->Multiplicity(det,ring,sec,strip);
673 if(fmdMult == 0 || fmdMult == AliESDFMD::kInvalidMult) continue;
a540a9d3 674
a43ed687 675 Float_t nParticles=0;
a540a9d3 676
a43ed687 677 if(fmdMult > fFMDLowCut) {
678 nParticles = 1.;
679 }
a540a9d3 680
a43ed687 681 if (det<3) totalMultA = totalMultA + nParticles;
682 else totalMultC = totalMultC + nParticles;
a540a9d3 683
a43ed687 684 }
685 }
a540a9d3 686 }
687 }
688 multFMDA = totalMultA;
689 multFMDC = totalMultC;
a43ed687 690
a540a9d3 691 // ***** ZDC info
692 AliESDZDC *esdZDC = esd->GetESDZDC();
cfead5a9 693 zdcEnergyCal = esdZDC->AliESDZDC::TestBit(AliESDZDC::kEnergyCalibratedSignal);
694 if (zdcEnergyCal) {
695 zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy());
696 zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy());
697 znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy());
698 zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy());
699 } else {
700 zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy())/8.;
701 zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy())/8.;
702 znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy())/8.;
703 zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy())/8.;
704 }
a540a9d3 705 zem1Energy = (Float_t) (esdZDC->GetZDCEMEnergy(0))/8.;
706 zem2Energy = (Float_t) (esdZDC->GetZDCEMEnergy(1))/8.;
a43ed687 707
a540a9d3 708 }
136f0a9b 709
a540a9d3 710 else if(fAnalysisInput.CompareTo("AOD")==0){
711 //AliAODEvent *aod = dynamic_cast<AliAODEvent*> (InputEvent());
712 // to be implemented
713 printf(" AOD analysis not yet implemented!!!\n\n");
714 return;
715 }
716
d015c169 717 // ***** Scaling for MC
718 if (fIsMCInput) {
719 fUseScaling=kFALSE;
a43ed687 720 v0Corr = Short_t((multV0A+multV0C) * fV0MScaleFactorMC);
d015c169 721 }
a43ed687 722 // ***** Scaling for Data
a540a9d3 723 if (fUseScaling) {
a43ed687 724 v0Corr = Short_t(v0Corr / fV0MScaleFactor);
725 spdCorr = spdCorr / fSPDScaleFactor;
726 nTracks = Int_t(nTracks / fTPCScaleFactor);
a540a9d3 727 }
a540a9d3 728
729 // ***** Centrality Selection
730 if(fHtempV0M) fCentV0M = fHtempV0M->GetBinContent(fHtempV0M->FindBin((v0Corr)));
731 if(fHtempFMD) fCentFMD = fHtempFMD->GetBinContent(fHtempFMD->FindBin((multFMDA+multFMDC)));
732 if(fHtempTRK) fCentTRK = fHtempTRK->GetBinContent(fHtempTRK->FindBin(nTracks));
733 if(fHtempTKL) fCentTKL = fHtempTKL->GetBinContent(fHtempTKL->FindBin(nTracklets));
734 if(fHtempCL0) fCentCL0 = fHtempCL0->GetBinContent(fHtempCL0->FindBin(nClusters[0]));
735 if(fHtempCL1) fCentCL1 = fHtempCL1->GetBinContent(fHtempCL1->FindBin(spdCorr));
a43ed687 736
a540a9d3 737 if(fHtempV0MvsFMD) fCentV0MvsFMD = fHtempV0MvsFMD->GetBinContent(fHtempV0MvsFMD->FindBin((multV0A+multV0C)));
738 if(fHtempTKLvsV0M) fCentTKLvsV0M = fHtempTKLvsV0M->GetBinContent(fHtempTKLvsV0M->FindBin(nTracklets));
7ee7a2df 739 if(fHtempZEMvsZDC) fCentZEMvsZDC = fHtempZEMvsZDC->GetBinContent(fHtempZEMvsZDC->FindBin(zem1Energy+zem2Energy,zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
a540a9d3 740
a43ed687 741
a540a9d3 742 // ***** Cleaning
d015c169 743 if (fUseCleaning) {
a43ed687 744 fQuality=0;
745
746 // ***** vertex
747 if (TMath::Abs(zvtx)>fZVCut || zvtxNcont<1) fQuality += 1;
748
749 // ***** outliers, skip in case of MC input
750 if (!fIsMCInput) {
751 // **** V0 vs SPD
752 if (IsOutlierV0MSPD(spdCorr, v0Corr, int(fCentV0M))) fQuality += 2;
753 // ***** V0 vs TPC
754 if (IsOutlierV0MTPC(nTracks, v0Corr, int(fCentV0M))) fQuality += 4;
755 // ***** V0 vs ZDC
756 if (IsOutlierV0MZDC((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
757 (zdcEnergyCal==kFALSE) ) fQuality += 8;
758 if (IsOutlierV0MZDCECal((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
759 (zdcEnergyCal==kTRUE) ) fQuality += 8;
760 }
d015c169 761 } else {
a43ed687 762 fQuality = 0;
d015c169 763 }
a540a9d3 764
a43ed687 765
a540a9d3 766 if (esdCent) {
a43ed687 767 esdCent->SetQuality(fQuality);
768 esdCent->SetCentralityV0M(fCentV0M);
769 esdCent->SetCentralityFMD(fCentFMD);
770 esdCent->SetCentralityTRK(fCentTRK);
771 esdCent->SetCentralityTKL(fCentTKL);
772 esdCent->SetCentralityCL0(fCentCL0);
773 esdCent->SetCentralityCL1(fCentCL1);
774 esdCent->SetCentralityV0MvsFMD(fCentV0MvsFMD);
775 esdCent->SetCentralityTKLvsV0M(fCentTKLvsV0M);
776 esdCent->SetCentralityZEMvsZDC(fCentZEMvsZDC);
a540a9d3 777 }
778
4fced115 779 if (fCVHN)
780 fHOutCentV0M_CVHN->Fill(fCentV0M);
781 if (fCVLN)
782 fHOutCentV0M_CVLN->Fill(fCentV0M);
4402d4dc 783
784 Bool_t isSelected = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB);
785 if (isSelected) { // fill the QA histograms only for MB events!
a540a9d3 786 fHOutQuality->Fill(fQuality);
787 fHOutVertex->Fill(zvtx);
a43ed687 788
a540a9d3 789 if (fQuality==0) {
790 fHOutCentV0M->Fill(fCentV0M);
84bbff84 791
0caaf699 792 if (fCVHNbit)
84bbff84 793 fHOutCentV0M_CVHNinMB->Fill(fCentV0M);
0caaf699 794 if (fCVLNbit)
84bbff84 795 fHOutCentV0M_CVLNinMB->Fill(fCentV0M);
796
a540a9d3 797 fHOutCentFMD->Fill(fCentFMD);
798 fHOutCentTRK->Fill(fCentTRK);
799 fHOutCentTKL->Fill(fCentTKL);
800 fHOutCentCL0->Fill(fCentCL0);
801 fHOutCentCL1->Fill(fCentCL1);
802 fHOutCentV0MvsFMD->Fill(fCentV0MvsFMD);
803 fHOutCentTKLvsV0M->Fill(fCentTKLvsV0M);
804 fHOutCentZEMvsZDC->Fill(fCentZEMvsZDC);
9138a60c 805 fHOutCentV0MvsCentCL1->Fill(fCentV0M,fCentCL1);
806 fHOutCentV0MvsCentTRK->Fill(fCentV0M,fCentTRK);
807 fHOutCentTRKvsCentCL1->Fill(fCentTRK,fCentCL1);
39bbe018 808 fHOutCentV0MvsCentZDC->Fill(fCentV0M,fCentZEMvsZDC);
a43ed687 809 fHOutMultV0M->Fill(multV0A+multV0C);
810 fHOutMultV0O->Fill(multV0AOnline+multV0COnline);
811 fHOutMultFMD->Fill(multFMDA+multFMDC);
a540a9d3 812 fHOutMultTRK->Fill(nTracks);
813 fHOutMultTKL->Fill(nTracklets);
814 fHOutMultCL0->Fill(nClusters[0]);
815 fHOutMultCL1->Fill(spdCorr);
79d4544b 816 fHOutMultV0MvsZDN->Fill(v0Corr,(zncEnergy+znaEnergy));
817 fHOutMultZEMvsZDN->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy));
818 fHOutMultV0MvsZDC->Fill(v0Corr,(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
819 fHOutMultZEMvsZDC->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
39bbe018 820 fHOutMultZEMvsZDCw->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy),fCentV0M);
79d4544b 821 fHOutMultV0MvsCL1->Fill(v0Corr,spdCorr);
822 fHOutMultV0MvsTRK->Fill(v0Corr,nTracks);
a540a9d3 823 fHOutMultTRKvsCL1->Fill(nTracks,spdCorr);
a43ed687 824 fHOutMultV0MvsV0O->Fill(v0Corr,(multV0AOnline+multV0COnline));
825 fHOutMultV0OvsCL1->Fill((multV0AOnline+multV0COnline),spdCorr);
826 fHOutMultV0OvsTRK->Fill((multV0AOnline+multV0COnline),nTracks);
79d4544b 827 } else if (fQuality%2 == 0) {
04341115 828 fHOutCentV0Mqual1->Fill(fCentV0M);
829 fHOutCentTRKqual1->Fill(fCentTRK);
830 fHOutCentCL1qual1->Fill(fCentCL1);
79d4544b 831 fHOutMultV0MvsCL1qual1->Fill(v0Corr,spdCorr);
832 fHOutMultV0MvsTRKqual1->Fill(v0Corr,nTracks);
833 fHOutMultTRKvsCL1qual1->Fill(nTracks,spdCorr);
a540a9d3 834 } else {
04341115 835 fHOutCentV0Mqual2->Fill(fCentV0M);
836 fHOutCentTRKqual2->Fill(fCentTRK);
837 fHOutCentCL1qual2->Fill(fCentCL1);
79d4544b 838 fHOutMultV0MvsCL1qual2->Fill(v0Corr,spdCorr);
839 fHOutMultV0MvsTRKqual2->Fill(v0Corr,nTracks);
840 fHOutMultTRKvsCL1qual2->Fill(nTracks,spdCorr);
a540a9d3 841 }
4402d4dc 842 }
a540a9d3 843
844 PostData(1, fOutputList);
845}
a540a9d3 846//________________________________________________________________________
847void AliCentralitySelectionTask::Terminate(Option_t */*option*/)
848{
849 // Terminate analysis
a540a9d3 850}
851//________________________________________________________________________
f690bf48 852Int_t AliCentralitySelectionTask::SetupRun(AliESDEvent* const esd)
a540a9d3 853{
854 // Setup files for run
855
856 if (!esd)
857 return -1;
858
859 // check if something to be done
860 if (fCurrentRun == esd->GetRunNumber())
861 return 0;
862 else
863 fCurrentRun = esd->GetRunNumber();
a43ed687 864
865 TString fileName =(Form("%s/COMMON/CENTRALITY/data/centrality.root", AliAnalysisManager::GetOADBPath()));
866 AliInfo(Form("Setup Centrality Selection for run %d with file %s\n",fCurrentRun,fileName.Data()));
867
868 AliOADBContainer *con = new AliOADBContainer("OADB");
869 con->InitFromFile(fileName,"Centrality");
870
871 AliOADBCentrality* centOADB = 0;
872 centOADB = (AliOADBCentrality*)(con->GetObject(fCurrentRun));
873 if (!centOADB) {
874 AliWarning(Form("Centrality OADB does not exist for run %d, using Default \n",fCurrentRun ));
875 centOADB = (AliOADBCentrality*)(con->GetDefaultObject("oadbDefault"));
876 }
877
878 // modes
879 fUseScaling = centOADB->UseScaling();
880 fUseCleaning = centOADB->UseCleaning();
881
882 // cuts
883 fZVCut = centOADB->ZVCut();
884 fOutliersCut = centOADB->OutliersCut();
885
886 // centrality histos
887 fHtempV0M = centOADB->V0hist();
888 fHtempTRK = centOADB->TPChist();
889 fHtempCL1 = centOADB->SPDhist();
890 fHtempZEMvsZDC = centOADB->ZEMvsZDChist();
a540a9d3 891
a43ed687 892 TString path = gSystem->ExpandPathName(fileName.Data());
893 if (!fHtempV0M) AliWarning(Form("Calibration for V0M does not exist in %s", path.Data()));
894 if (!fHtempTRK) AliWarning(Form("Calibration for TRK does not exist in %s", path.Data()));
895 if (!fHtempCL1) AliWarning(Form("Calibration for CL1 does not exist in %s", path.Data()));
896 if (!fHtempZEMvsZDC) AliWarning(Form("Calibration for ZEMvsZDC does not exist in %s", path.Data()));
897
898 // scale factors
899 fV0MScaleFactor = centOADB->V0MScaleFactor();
900 fSPDScaleFactor = centOADB->SPDScaleFactor();
901 fTPCScaleFactor = centOADB->TPCScaleFactor();
902 fV0MScaleFactorMC = centOADB->V0MScaleFactor();
903
904 // outliers parameters
905 fV0MSPDOutlierPar0 = centOADB->V0MSPDOutlierPar0();
906 fV0MSPDOutlierPar1 = centOADB->V0MSPDOutlierPar1();
907 fV0MTPCOutlierPar0 = centOADB->V0MTPCOutlierPar0();
908 fV0MTPCOutlierPar1 = centOADB->V0MTPCOutlierPar1();
909
910 fV0MSPDSigmaOutlierPar0 = centOADB->V0MSPDSigmaOutlierPar0();
911 fV0MSPDSigmaOutlierPar1 = centOADB->V0MSPDSigmaOutlierPar1();
912 fV0MSPDSigmaOutlierPar2 = centOADB->V0MSPDSigmaOutlierPar2();
913 fV0MTPCSigmaOutlierPar0 = centOADB->V0MTPCSigmaOutlierPar0();
914 fV0MTPCSigmaOutlierPar1 = centOADB->V0MTPCSigmaOutlierPar1();
915 fV0MTPCSigmaOutlierPar2 = centOADB->V0MTPCSigmaOutlierPar2();
916
917 fV0MZDCOutlierPar0 = centOADB->V0MZDCOutlierPar0();
918 fV0MZDCOutlierPar1 = centOADB->V0MZDCOutlierPar1();
919 fV0MZDCEcalOutlierPar0 = centOADB->V0MZDCEcalOutlierPar0();
920 fV0MZDCEcalOutlierPar1 = centOADB->V0MZDCEcalOutlierPar1();
921
922
923
a540a9d3 924 return 0;
925}
926
a43ed687 927
928
a540a9d3 929//________________________________________________________________________
f690bf48 930Bool_t AliCentralitySelectionTask::IsOutlierV0MSPD(Float_t spd, Float_t v0, Int_t cent) const
a540a9d3 931{
a43ed687 932 // Clean outliers
933 Float_t val = fV0MSPDOutlierPar0 + fV0MSPDOutlierPar1 * v0;
934 Float_t spdSigma = fV0MSPDSigmaOutlierPar0 + fV0MSPDSigmaOutlierPar1*cent + fV0MSPDSigmaOutlierPar2*cent*cent;
935 if ( TMath::Abs(spd-val) > fOutliersCut*spdSigma )
a540a9d3 936 return kTRUE;
937 else
938 return kFALSE;
939}
940
941//________________________________________________________________________
f690bf48 942Bool_t AliCentralitySelectionTask::IsOutlierV0MTPC(Int_t tracks, Float_t v0, Int_t cent) const
a540a9d3 943{
a43ed687 944 // Clean outliers
945 Float_t val = fV0MTPCOutlierPar0 + fV0MTPCOutlierPar1 * v0;
946 Float_t tpcSigma = fV0MTPCSigmaOutlierPar0 + fV0MTPCSigmaOutlierPar1*cent + fV0MTPCSigmaOutlierPar2*cent*cent;
947 if ( TMath::Abs(tracks-val) > fOutliersCut*tpcSigma )
a540a9d3 948 return kTRUE;
949 else
950 return kFALSE;
951}
952
953//________________________________________________________________________
6abef102 954Bool_t AliCentralitySelectionTask::IsOutlierV0MZDC(Float_t zdc, Float_t v0) const
a540a9d3 955{
a43ed687 956 // Clean outliers
957 Float_t val = fV0MZDCOutlierPar0 + fV0MZDCOutlierPar1 * v0;
6abef102 958 if (zdc > val)
959 return kTRUE;
960 else
a43ed687 961 return kFALSE;
a540a9d3 962}
963
9138a60c 964//________________________________________________________________________
a43ed687 965Bool_t AliCentralitySelectionTask::IsOutlierV0MZDCECal(Float_t zdc, Float_t v0) const
9138a60c 966{
a43ed687 967 // Clean outliers
968 Float_t val = fV0MZDCEcalOutlierPar0 + fV0MZDCEcalOutlierPar1 * v0;
969 if (zdc > val)
970 return kTRUE;
971 else
9138a60c 972 return kFALSE;
973}
974
a540a9d3 975