1 /**************************************************************************
2 * Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
16 //*****************************************************
17 // Class AliCentralitySelectionTask
18 // Class to analyze determine centrality
19 // author: Alberica Toia
20 //*****************************************************
22 #include "AliCentralitySelectionTask.h"
31 #include <TObjString.h>
35 #include <TDirectory.h>
39 #include "AliAnalysisManager.h"
40 #include "AliHeader.h"
41 #include "AliVEvent.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"
68 #include "AliAnalysisTaskSE.h"
69 #include "AliGenEventHeader.h"
70 #include "AliGenHijingEventHeader.h"
71 #include "AliPhysicsSelectionTask.h"
72 #include "AliPhysicsSelection.h"
73 #include "AliBackgroundSelection.h"
74 #include "AliESDUtils.h"
76 ClassImp(AliCentralitySelectionTask)
79 //________________________________________________________________________
80 AliCentralitySelectionTask::AliCentralitySelectionTask():
82 fAnalysisInput("ESD"),
92 fV0MSPDOutlierPar0(0),
93 fV0MSPDOutlierPar1(0),
94 fV0MTPCOutlierPar0(0),
95 fV0MTPCOutlierPar1(0),
96 fV0MSPDSigmaOutlierPar0(0),
97 fV0MSPDSigmaOutlierPar1(0),
98 fV0MSPDSigmaOutlierPar2(0),
99 fV0MTPCSigmaOutlierPar0(0),
100 fV0MTPCSigmaOutlierPar1(0),
101 fV0MTPCSigmaOutlierPar2(0),
102 fV0MZDCOutlierPar0(0),
103 fV0MZDCOutlierPar1(0),
104 fV0MZDCEcalOutlierPar0(0),
105 fV0MZDCEcalOutlierPar1(0),
139 fHOutCentV0M_CVHN(0),
140 fHOutCentV0M_CVLN(0),
141 fHOutCentV0M_CVHNinMB(0),
142 fHOutCentV0M_CVLNinMB(0),
143 fHOutCentV0M_CCENT(0),
144 fHOutCentV0M_CSEMI(0),
145 fHOutCentV0M_CCENTinMB(0),
146 fHOutCentV0M_CSEMIinMB(0),
152 fHOutCentV0MvsFMD(0),
153 fHOutCentTKLvsV0M(0),
154 fHOutCentZEMvsZDC(0),
155 fHOutCentV0MvsCentCL1(0),
156 fHOutCentV0MvsCentTRK(0),
157 fHOutCentTRKvsCentCL1(0),
158 fHOutCentV0MvsCentZDC(0),
166 fHOutMultV0MvsZDN(0),
167 fHOutMultZEMvsZDN(0),
168 fHOutMultV0MvsZDC(0),
169 fHOutMultZEMvsZDC(0),
170 fHOutMultZEMvsZDCw(0),
171 fHOutMultV0MvsCL1(0),
172 fHOutMultV0MvsTRK(0),
173 fHOutMultTRKvsCL1(0),
174 fHOutMultV0MvsV0O(0),
175 fHOutMultV0OvsCL1(0),
176 fHOutMultV0OvsTRK(0),
177 fHOutCentV0Mqual1(0),
178 fHOutCentTRKqual1(0),
179 fHOutCentCL1qual1(0),
180 fHOutMultV0MvsCL1qual1(0),
181 fHOutMultV0MvsTRKqual1(0),
182 fHOutMultTRKvsCL1qual1(0),
183 fHOutCentV0Mqual2(0),
184 fHOutCentTRKqual2(0),
185 fHOutCentCL1qual2(0),
186 fHOutMultV0MvsCL1qual2(0),
187 fHOutMultV0MvsTRKqual2(0),
188 fHOutMultTRKvsCL1qual2(0),
193 // Default constructor
194 AliInfo("Centrality Selection enabled.");
198 fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO.,AliESDTZERO."
199 ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks ";
202 //________________________________________________________________________
203 AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
204 AliAnalysisTaskSE(name),
205 fAnalysisInput("ESD"),
214 fV0MScaleFactorMC(0),
215 fV0MSPDOutlierPar0(0),
216 fV0MSPDOutlierPar1(0),
217 fV0MTPCOutlierPar0(0),
218 fV0MTPCOutlierPar1(0),
219 fV0MSPDSigmaOutlierPar0(0),
220 fV0MSPDSigmaOutlierPar1(0),
221 fV0MSPDSigmaOutlierPar2(0),
222 fV0MTPCSigmaOutlierPar0(0),
223 fV0MTPCSigmaOutlierPar1(0),
224 fV0MTPCSigmaOutlierPar2(0),
225 fV0MZDCOutlierPar0(0),
226 fV0MZDCOutlierPar1(0),
227 fV0MZDCEcalOutlierPar0(0),
228 fV0MZDCEcalOutlierPar1(0),
262 fHOutCentV0M_CVHN(0),
263 fHOutCentV0M_CVLN(0),
264 fHOutCentV0M_CVHNinMB(0),
265 fHOutCentV0M_CVLNinMB(0),
266 fHOutCentV0M_CCENT(0),
267 fHOutCentV0M_CSEMI(0),
268 fHOutCentV0M_CCENTinMB(0),
269 fHOutCentV0M_CSEMIinMB(0),
275 fHOutCentV0MvsFMD(0),
276 fHOutCentTKLvsV0M(0),
277 fHOutCentZEMvsZDC(0),
278 fHOutCentV0MvsCentCL1(0),
279 fHOutCentV0MvsCentTRK(0),
280 fHOutCentTRKvsCentCL1(0),
281 fHOutCentV0MvsCentZDC(0),
289 fHOutMultV0MvsZDN(0),
290 fHOutMultZEMvsZDN(0),
291 fHOutMultV0MvsZDC(0),
292 fHOutMultZEMvsZDC(0),
293 fHOutMultZEMvsZDCw(0),
294 fHOutMultV0MvsCL1(0),
295 fHOutMultV0MvsTRK(0),
296 fHOutMultTRKvsCL1(0),
297 fHOutMultV0MvsV0O(0),
298 fHOutMultV0OvsCL1(0),
299 fHOutMultV0OvsTRK(0),
300 fHOutCentV0Mqual1(0),
301 fHOutCentTRKqual1(0),
302 fHOutCentCL1qual1(0),
303 fHOutMultV0MvsCL1qual1(0),
304 fHOutMultV0MvsTRKqual1(0),
305 fHOutMultTRKvsCL1qual1(0),
306 fHOutCentV0Mqual2(0),
307 fHOutCentTRKqual2(0),
308 fHOutCentCL1qual2(0),
309 fHOutMultV0MvsCL1qual2(0),
310 fHOutMultV0MvsTRKqual2(0),
311 fHOutMultTRKvsCL1qual2(0),
316 // Default constructor
317 AliInfo("Centrality Selection enabled.");
318 DefineOutput(1, TList::Class());
321 fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO.,AliESDTZERO."
322 ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks ";
325 //________________________________________________________________________
326 AliCentralitySelectionTask& AliCentralitySelectionTask::operator=(const AliCentralitySelectionTask& c)
328 // Assignment operator
330 AliAnalysisTaskSE::operator=(c);
335 //________________________________________________________________________
336 AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelectionTask& ana):
337 AliAnalysisTaskSE(ana),
338 fAnalysisInput(ana.fDebug),
339 fIsMCInput(ana.fIsMCInput),
341 fCurrentRun(ana.fCurrentRun),
342 fUseScaling(ana.fUseScaling),
343 fUseCleaning(ana.fUseCleaning),
344 fV0MScaleFactor(ana.fV0MScaleFactor),
345 fSPDScaleFactor(ana.fSPDScaleFactor),
346 fTPCScaleFactor(ana.fTPCScaleFactor),
347 fV0MScaleFactorMC(ana.fV0MScaleFactorMC),
348 fV0MSPDOutlierPar0(ana.fV0MSPDOutlierPar0),
349 fV0MSPDOutlierPar1(ana.fV0MSPDOutlierPar1),
350 fV0MTPCOutlierPar0(ana.fV0MTPCOutlierPar0),
351 fV0MTPCOutlierPar1(ana.fV0MTPCOutlierPar1),
352 fV0MSPDSigmaOutlierPar0(ana.fV0MSPDSigmaOutlierPar0),
353 fV0MSPDSigmaOutlierPar1(ana.fV0MSPDSigmaOutlierPar1),
354 fV0MSPDSigmaOutlierPar2(ana.fV0MSPDSigmaOutlierPar2),
355 fV0MTPCSigmaOutlierPar0(ana.fV0MTPCSigmaOutlierPar0),
356 fV0MTPCSigmaOutlierPar1(ana.fV0MTPCSigmaOutlierPar1),
357 fV0MTPCSigmaOutlierPar2(ana.fV0MTPCSigmaOutlierPar2),
358 fV0MZDCOutlierPar0(ana.fV0MZDCOutlierPar0),
359 fV0MZDCOutlierPar1(ana.fV0MZDCOutlierPar1),
360 fV0MZDCEcalOutlierPar0(ana.fV0MZDCEcalOutlierPar0),
361 fV0MZDCEcalOutlierPar1(ana.fV0MZDCEcalOutlierPar1),
362 fTrackCuts(ana.fTrackCuts),
364 fOutliersCut(ana.fOutliersCut),
365 fQuality(ana.fQuality),
368 fCVHNbit(ana.fCVHNbit),
369 fCVLNbit(ana.fCVLNbit),
372 fCCENTbit(ana.fCCENTbit),
373 fCSEMIbit(ana.fCSEMIbit),
374 fIsSelected(ana.fIsSelected),
375 fCentV0M(ana.fCentV0M),
376 fCentFMD(ana.fCentFMD),
377 fCentTRK(ana.fCentTRK),
378 fCentTKL(ana.fCentTKL),
379 fCentCL0(ana.fCentCL0),
380 fCentCL1(ana.fCentCL1),
381 fCentV0MvsFMD(ana.fCentV0MvsFMD),
382 fCentTKLvsV0M(ana.fCentTKLvsV0M),
383 fCentZEMvsZDC(ana.fCentZEMvsZDC),
384 fHtempV0M(ana.fHtempV0M),
385 fHtempFMD(ana.fHtempFMD),
386 fHtempTRK(ana.fHtempTRK),
387 fHtempTKL(ana.fHtempTKL),
388 fHtempCL0(ana.fHtempCL0),
389 fHtempCL1(ana.fHtempCL1),
390 fHtempV0MvsFMD(ana.fHtempV0MvsFMD),
391 fHtempTKLvsV0M(ana.fHtempTKLvsV0M),
392 fHtempZEMvsZDC(ana.fHtempZEMvsZDC),
393 fOutputList(ana.fOutputList),
394 fHOutCentV0M (ana.fHOutCentV0M ),
395 fHOutCentV0M_CVHN(ana.fHOutCentV0M_CVHN),
396 fHOutCentV0M_CVLN(ana.fHOutCentV0M_CVLN),
397 fHOutCentV0M_CVHNinMB(ana.fHOutCentV0M_CVHNinMB),
398 fHOutCentV0M_CVLNinMB(ana.fHOutCentV0M_CVLNinMB),
399 fHOutCentV0M_CCENT(ana.fHOutCentV0M_CCENT),
400 fHOutCentV0M_CSEMI(ana.fHOutCentV0M_CSEMI),
401 fHOutCentV0M_CCENTinMB(ana.fHOutCentV0M_CCENTinMB),
402 fHOutCentV0M_CSEMIinMB(ana.fHOutCentV0M_CSEMIinMB),
403 fHOutCentFMD (ana.fHOutCentFMD ),
404 fHOutCentTRK (ana.fHOutCentTRK ),
405 fHOutCentTKL (ana.fHOutCentTKL ),
406 fHOutCentCL0 (ana.fHOutCentCL0 ),
407 fHOutCentCL1 (ana.fHOutCentCL1 ),
408 fHOutCentV0MvsFMD(ana.fHOutCentV0MvsFMD),
409 fHOutCentTKLvsV0M(ana.fHOutCentTKLvsV0M),
410 fHOutCentZEMvsZDC(ana.fHOutCentZEMvsZDC),
411 fHOutCentV0MvsCentCL1(ana.fHOutCentV0MvsCentCL1),
412 fHOutCentV0MvsCentTRK(ana.fHOutCentV0MvsCentTRK),
413 fHOutCentTRKvsCentCL1(ana.fHOutCentTRKvsCentCL1),
414 fHOutCentV0MvsCentZDC(ana.fHOutCentV0MvsCentZDC),
415 fHOutMultV0M(ana.fHOutMultV0M),
416 fHOutMultV0O(ana.fHOutMultV0O),
417 fHOutMultFMD(ana.fHOutMultFMD),
418 fHOutMultTRK(ana.fHOutMultTRK),
419 fHOutMultTKL(ana.fHOutMultTKL),
420 fHOutMultCL0(ana.fHOutMultCL0),
421 fHOutMultCL1(ana.fHOutMultCL1),
422 fHOutMultV0MvsZDN(ana.fHOutMultV0MvsZDN),
423 fHOutMultZEMvsZDN(ana.fHOutMultZEMvsZDN),
424 fHOutMultV0MvsZDC(ana.fHOutMultV0MvsZDC),
425 fHOutMultZEMvsZDC(ana.fHOutMultZEMvsZDC),
426 fHOutMultZEMvsZDCw(ana.fHOutMultZEMvsZDCw),
427 fHOutMultV0MvsCL1(ana.fHOutMultV0MvsCL1),
428 fHOutMultV0MvsTRK(ana.fHOutMultV0MvsTRK),
429 fHOutMultTRKvsCL1(ana.fHOutMultTRKvsCL1),
430 fHOutMultV0MvsV0O(ana.fHOutMultV0MvsV0O),
431 fHOutMultV0OvsCL1(ana.fHOutMultV0OvsCL1),
432 fHOutMultV0OvsTRK(ana.fHOutMultV0OvsTRK),
433 fHOutCentV0Mqual1(ana.fHOutCentV0Mqual1),
434 fHOutCentTRKqual1(ana.fHOutCentTRKqual1),
435 fHOutCentCL1qual1(ana.fHOutCentCL1qual1),
436 fHOutMultV0MvsCL1qual1(ana.fHOutMultV0MvsCL1qual1),
437 fHOutMultV0MvsTRKqual1(ana.fHOutMultV0MvsTRKqual1),
438 fHOutMultTRKvsCL1qual1(ana.fHOutMultTRKvsCL1qual1),
439 fHOutCentV0Mqual2(ana.fHOutCentV0Mqual2),
440 fHOutCentTRKqual2(ana.fHOutCentTRKqual2),
441 fHOutCentCL1qual2(ana.fHOutCentCL1qual2),
442 fHOutMultV0MvsCL1qual2(ana.fHOutMultV0MvsCL1qual2),
443 fHOutMultV0MvsTRKqual2(ana.fHOutMultV0MvsTRKqual2),
444 fHOutMultTRKvsCL1qual2(ana.fHOutMultTRKvsCL1qual2),
445 fHOutQuality(ana.fHOutQuality),
446 fHOutVertex(ana.fHOutVertex),
447 fHOutVertexT0(ana.fHOutVertexT0)
453 //________________________________________________________________________
454 AliCentralitySelectionTask::~AliCentralitySelectionTask()
457 if (fOutputList && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) delete fOutputList;
458 if (fTrackCuts) delete fTrackCuts;
461 //________________________________________________________________________
462 void AliCentralitySelectionTask::UserCreateOutputObjects()
464 // Create the output containers
465 if(fDebug>1) printf("AnalysisCentralitySelectionTask::UserCreateOutputObjects() \n");
466 AliLog::SetClassDebugLevel("AliCentralitySelectionTask", AliLog::kInfo);
468 fOutputList = new TList();
469 fOutputList->SetOwner();
470 fHOutCentV0M = new TH1F("fHOutCentV0M","fHOutCentV0M; Centrality V0",505,0,101);
471 fHOutCentV0M_CVHN= new TH1F("fHOutCentV0M_CVHN","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
472 fHOutCentV0M_CVLN= new TH1F("fHOutCentV0M_CVLN","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
473 fHOutCentV0M_CVHNinMB= new TH1F("fHOutCentV0M_CVHNinMB","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
474 fHOutCentV0M_CVLNinMB= new TH1F("fHOutCentV0M_CVLNinMB","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
475 fHOutCentV0M_CCENT= new TH1F("fHOutCentV0M_CCENT","fHOutCentV0M_CCENT; Centrality V0",505,0,101);
476 fHOutCentV0M_CSEMI= new TH1F("fHOutCentV0M_CSEMI","fHOutCentV0M_CSEMI; Centrality V0",505,0,101);
477 fHOutCentV0M_CCENTinMB= new TH1F("fHOutCentV0M_CCENTinMB","fHOutCentV0M_CCENT; Centrality V0",505,0,101);
478 fHOutCentV0M_CSEMIinMB= new TH1F("fHOutCentV0M_CSEMIinMB","fHOutCentV0M_CSEMI; Centrality V0",505,0,101);
479 fHOutCentFMD = new TH1F("fHOutCentFMD","fHOutCentFMD; Centrality FMD",505,0,101);
480 fHOutCentTRK = new TH1F("fHOutCentTRK","fHOutCentTRK; Centrality TPC",505,0,101);
481 fHOutCentTKL = new TH1F("fHOutCentTKL","fHOutCentTKL; Centrality tracklets",505,0,101);
482 fHOutCentCL0 = new TH1F("fHOutCentCL0","fHOutCentCL0; Centrality SPD inner",505,0,101);
483 fHOutCentCL1 = new TH1F("fHOutCentCL1","fHOutCentCL1; Centrality SPD outer",505,0,101);
484 fHOutCentV0MvsFMD= new TH1F("fHOutCentV0MvsFMD","fHOutCentV0MvsFMD; Centrality V0 vs FMD",505,0,101);
485 fHOutCentTKLvsV0M= new TH1F("fHOutCentTKLvsV0M","fHOutCentTKLvsV0M; Centrality tracklets vs V0",505,0,101);
486 fHOutCentZEMvsZDC= new TH1F("fHOutCentZEMvsZDC","fHOutCentZEMvsZDC; Centrality ZEM vs ZDC",505,0,101);
487 fHOutCentV0MvsCentCL1= new TH2F("fHOutCentV0MvsCentCL1","fHOutCentV0MvsCentCL1; Cent V0; Cent SPD",505,0,101,505,0,101);
488 fHOutCentV0MvsCentTRK= new TH2F("fHOutCentV0MvsCentTRK","fHOutCentV0MvsCentTRK; Cent V0; Cent TPC",505,0,101,505,0,101);
489 fHOutCentTRKvsCentCL1= new TH2F("fHOutCentTRKvsCentCL1","fHOutCentTRKvsCentCL1; Cent TPC; Cent SPD",505,0,101,505,0,101);
490 fHOutCentV0MvsCentZDC= new TH2F("fHOutCentV0MvsCentZDC","fHOutCentV0MvsCentZDC; Cent V0; Cent ZDC",505,0,101,505,0,101);
491 fHOutMultV0M = new TH1F("fHOutMultV0M","fHOutMultV0M; Multiplicity V0",25000,0,30000);
492 fHOutMultV0O = new TH1F("fHOutMultV0O","fHOutMultV0O; Multiplicity V0",40000,0,40000);
493 fHOutMultFMD = new TH1F("fHOutMultFMD","fHOutMultFMD; Multiplicity FMD",24000,0,24000);
494 fHOutMultTRK = new TH1F("fHOutMultTRK","fHOutMultTRK; Multiplicity TPC",4000,0,4000);
495 fHOutMultTKL = new TH1F("fHOutMultTKL","fHOutMultTKL; Multiplicity tracklets",5000,0,5000);
496 fHOutMultCL0 = new TH1F("fHOutMultCL0","fHOutMultCL0; Multiplicity SPD inner",7000,0,7000);
497 fHOutMultCL1 = new TH1F("fHOutMultCL1","fHOutMultCL1; Multiplicity SPD outer",7000,0,7000);
498 fHOutMultV0MvsZDN = new TH2F("fHOutMultV0MvsZDN","fHOutMultV0MvsZDN; Multiplicity V0; Energy ZDC-N",500,0,30000,500,0,180000);
499 fHOutMultZEMvsZDN = new TH2F("fHOutMultZEMvsZDN","fHOutMultZEMvsZDN; Energy ZEM; Energy ZDC-N",500,0,2500,500,0,180000);
500 fHOutMultV0MvsZDC = new TH2F("fHOutMultV0MvsZDC","fHOutMultV0MvsZDC; Multiplicity V0; Energy ZDC",500,0,30000,500,0,200000);
501 fHOutMultZEMvsZDC = new TH2F("fHOutMultZEMvsZDC","fHOutMultZEMvsZDC; Energy ZEM; Energy ZDC",500,0,2500,500,0,200000);
502 fHOutMultZEMvsZDCw = new TH2F("fHOutMultZEMvsZDCw","fHOutMultZEMvsZDCw; Energy ZEM; Energy ZDC (weigthed with V0 percentile)",500,0,2500,500,0,200000);
503 fHOutMultV0MvsCL1 = new TH2F("fHOutMultV0MvsCL1","fHOutMultV0MvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
504 fHOutMultV0MvsTRK = new TH2F("fHOutMultV0MvsTRK","fHOutMultV0MvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
505 fHOutMultTRKvsCL1 = new TH2F("fHOutMultTRKvsCL1","fHOutMultTRKvsCL1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
506 fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,40000);
507 fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",500,0,40000,700,0,7000);
508 fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",500,0,40000,400,0,4000);
509 fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,30000);
510 fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
511 fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
513 fHOutCentV0Mqual1 = new TH1F("fHOutCentV0M_qual1","fHOutCentV0M_qual1; Centrality V0",505,0,101);
514 fHOutCentTRKqual1 = new TH1F("fHOutCentTRK_qual1","fHOutCentTRK_qual1; Centrality TPC",505,0,101);
515 fHOutCentCL1qual1 = new TH1F("fHOutCentCL1_qual1","fHOutCentCL1_qual1; Centrality SPD outer",505,0,101);
516 fHOutMultV0MvsCL1qual1 = new TH2F("fHOutMultV0MvsCL1_qual1","fHOutMultV0MvsCL1_qual1; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
517 fHOutMultV0MvsTRKqual1 = new TH2F("fHOutMultV0MvsTRK_qual1","fHOutMultV0MvsTRK_qual1; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
518 fHOutMultTRKvsCL1qual1 = new TH2F("fHOutMultTRKvsCL1_qual1","fHOutMultTRKvsCL1_qual1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
520 fHOutCentV0Mqual2 = new TH1F("fHOutCentV0M_qual2","fHOutCentV0M_qual2; Centrality V0",505,0,101);
521 fHOutCentTRKqual2 = new TH1F("fHOutCentTRK_qual2","fHOutCentTRK_qual2; Centrality TPC",505,0,101);
522 fHOutCentCL1qual2 = new TH1F("fHOutCentCL1_qual2","fHOutCentCL1_qual2; Centrality SPD outer",505,0,101);
523 fHOutMultV0MvsCL1qual2 = new TH2F("fHOutMultV0MvsCL1_qual2","fHOutMultV0MvsCL1_qual2; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
524 fHOutMultV0MvsTRKqual2 = new TH2F("fHOutMultV0MvsTRK_qual2","fHOutMultV0MvsTRK_qual2; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
525 fHOutMultTRKvsCL1qual2 = new TH2F("fHOutMultTRKvsCL1_qual2","fHOutMultTRKvsCL1_qual2; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
527 fHOutQuality = new TH1F("fHOutQuality", "fHOutQuality", 100,-0.5,99.5);
528 fHOutVertex = new TH1F("fHOutVertex", "fHOutVertex", 100,-20,20);
529 fHOutVertexT0 = new TH1F("fHOutVertexT0", "fHOutVertexT0", 100,-20,20);
531 fOutputList->Add( fHOutCentV0M );
532 fOutputList->Add( fHOutCentV0M_CVHN);
533 fOutputList->Add( fHOutCentV0M_CVLN);
534 fOutputList->Add( fHOutCentV0M_CVHNinMB);
535 fOutputList->Add( fHOutCentV0M_CVLNinMB);
536 fOutputList->Add( fHOutCentV0M_CCENT);
537 fOutputList->Add( fHOutCentV0M_CSEMI);
538 fOutputList->Add( fHOutCentV0M_CCENTinMB);
539 fOutputList->Add( fHOutCentV0M_CSEMIinMB);
540 fOutputList->Add( fHOutCentFMD );
541 fOutputList->Add( fHOutCentTRK );
542 fOutputList->Add( fHOutCentTKL );
543 fOutputList->Add( fHOutCentCL0 );
544 fOutputList->Add( fHOutCentCL1 );
545 fOutputList->Add( fHOutCentV0MvsFMD);
546 fOutputList->Add( fHOutCentTKLvsV0M);
547 fOutputList->Add( fHOutCentZEMvsZDC);
548 fOutputList->Add( fHOutCentV0MvsCentCL1);
549 fOutputList->Add( fHOutCentV0MvsCentTRK);
550 fOutputList->Add( fHOutCentTRKvsCentCL1);
551 fOutputList->Add( fHOutCentV0MvsCentZDC);
552 fOutputList->Add( fHOutMultV0M);
553 fOutputList->Add( fHOutMultV0O);
554 fOutputList->Add( fHOutMultFMD);
555 fOutputList->Add( fHOutMultTRK);
556 fOutputList->Add( fHOutMultTKL);
557 fOutputList->Add( fHOutMultCL0);
558 fOutputList->Add( fHOutMultCL1);
559 fOutputList->Add( fHOutMultV0MvsZDN);
560 fOutputList->Add( fHOutMultZEMvsZDN);
561 fOutputList->Add( fHOutMultV0MvsZDC);
562 fOutputList->Add( fHOutMultZEMvsZDC);
563 fOutputList->Add( fHOutMultZEMvsZDCw);
564 fOutputList->Add( fHOutMultV0MvsCL1);
565 fOutputList->Add( fHOutMultV0MvsTRK);
566 fOutputList->Add( fHOutMultTRKvsCL1);
567 fOutputList->Add( fHOutMultV0MvsV0O);
568 fOutputList->Add( fHOutMultV0OvsCL1);
569 fOutputList->Add( fHOutMultV0OvsTRK);
570 fOutputList->Add( fHOutCentV0Mqual1 );
571 fOutputList->Add( fHOutCentTRKqual1 );
572 fOutputList->Add( fHOutCentCL1qual1 );
573 fOutputList->Add( fHOutMultV0MvsCL1qual1);
574 fOutputList->Add( fHOutMultV0MvsTRKqual1);
575 fOutputList->Add( fHOutMultTRKvsCL1qual1);
576 fOutputList->Add( fHOutCentV0Mqual2 );
577 fOutputList->Add( fHOutCentTRKqual2 );
578 fOutputList->Add( fHOutCentCL1qual2 );
579 fOutputList->Add( fHOutMultV0MvsCL1qual2);
580 fOutputList->Add( fHOutMultV0MvsTRKqual2);
581 fOutputList->Add( fHOutMultTRKvsCL1qual2);
582 fOutputList->Add( fHOutQuality );
583 fOutputList->Add( fHOutVertex );
584 fOutputList->Add( fHOutVertexT0 );
586 fTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
588 PostData(1, fOutputList);
590 if (fPass==0) AliFatal("Which pass are you analyzing? You should set it via taskCentrality->SetPass(N)");
593 //________________________________________________________________________
594 void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
596 // Execute analysis for current event:
597 if(fDebug>1) printf(" **** AliCentralitySelectionTask::UserExec() \n");
599 Float_t zncEnergy = 0.; // ZNC Energy
600 Float_t zpcEnergy = 0.; // ZPC Energy
601 Float_t znaEnergy = 0.; // ZNA Energy
602 Float_t zpaEnergy = 0.; // ZPA Energy
603 Float_t zem1Energy = 0.; // ZEM1 Energy
604 Float_t zem2Energy = 0.; // ZEM2 Energy
605 Bool_t zdcEnergyCal = kFALSE; // if zdc is calibrated (in pass2)
607 Int_t nTracks = 0; // no. tracks
608 Int_t nTracklets = 0; // no. tracklets
609 Int_t nClusters[6] = {0}; // no. clusters on 6 ITS layers
610 Int_t nChips[2]; // no. chips on 2 SPD layers
611 Float_t spdCorr =0; // corrected spd2 multiplicity
613 Float_t multV0A = 0; // multiplicity from V0 reco side A
614 Float_t multV0C = 0; // multiplicity from V0 reco side C
615 Short_t multV0AOnline = 0; // multiplicity from V0 reco side A
616 Short_t multV0COnline = 0; // multiplicity from V0 reco side C
617 Float_t v0Corr = 0; // corrected V0 multiplicity (used for MC)
619 Float_t multFMDA = 0; // multiplicity from FMD on detector A
620 Float_t multFMDC = 0; // multiplicity from FMD on detector C
622 Float_t zvtx =0; // z-vertex SPD
623 Int_t zvtxNcont =0; // contributors to z-vertex SPD
625 Float_t zvtxT0 =0; // z-vertex T0
628 AliCentrality *esdCent = 0;
630 if(fAnalysisInput.CompareTo("ESD")==0){
632 AliVEvent* event = InputEvent();
633 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
635 AliError("No ESD Event");
641 if (SetupRun(esd)<0) {
642 AliError("Centrality File not available for this run");
646 esdCent = esd->GetCentrality();
649 AliESDVZERO* esdV0 = esd->GetVZEROData();
650 multV0A=esdV0->GetMTotV0A();
651 multV0C=esdV0->GetMTotV0C();
652 v0Corr = multV0A+multV0C;
654 multV0AOnline=esdV0->GetTriggerChargeA();
655 multV0COnline=esdV0->GetTriggerChargeC();
658 const AliESDTZERO* esdT0 = esd->GetESDTZERO();
661 AliError("AliESDTZERO not available");
663 Int_t trig=esdT0->GetT0Trig();
664 Bool_t kT0BB = kFALSE;
665 if(trig&1) kT0BB=kTRUE;
666 zvtxT0=esdT0->GetT0zVertex();
669 // ***** Trigger info
670 fIsSelected = ((esdV0->GetV0ADecision()==1) && (esdV0->GetV0CDecision()==1));
671 TString trigStr(esd->GetFiredTriggerClasses());
673 fCVHN=kFALSE; fCVLN=kFALSE; fCCENT=kFALSE; fCSEMI=kFALSE;
674 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CVHN")) && (fIsSelected))
676 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CVLN")) && (fIsSelected))
678 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CCENT")) && (fIsSelected))
680 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CSEMI")) && (fIsSelected))
683 fCVHNbit=kFALSE; fCVLNbit=kFALSE; fCCENTbit=kFALSE; fCSEMIbit=kFALSE;
684 if (esdV0->GetTriggerBits() & (1<<8))
686 if (esdV0->GetTriggerBits() & (1<<6))
689 if (kT0BB && fCVHNbit)
691 if (kT0BB && fCVLNbit)
696 const AliESDVertex* vtxESD = esd->GetPrimaryVertexSPD();
697 zvtx = vtxESD->GetZ();
698 zvtxNcont = vtxESD->GetNContributors();
700 // ***** CB info (tracklets, clusters, chips)
701 //nTracks = event->GetNumberOfTracks();
702 nTracks = fTrackCuts ? (Short_t)fTrackCuts->GetReferenceMultiplicity(esd,kTRUE):-1;
704 const AliMultiplicity *mult = esd->GetMultiplicity();
706 nTracklets = mult->GetNumberOfTracklets();
708 for(Int_t ilay=0; ilay<6; ilay++){
709 nClusters[ilay] = mult->GetNumberOfITSClusters(ilay);
712 for(Int_t ilay=0; ilay<2; ilay++){
713 nChips[ilay] = mult->GetNumberOfFiredChips(ilay);
716 spdCorr = AliESDUtils::GetCorrSPD2(nClusters[1],zvtx);
719 AliESDFMD *fmd = esd->GetFMDData();
720 Float_t totalMultA = 0;
721 Float_t totalMultC = 0;
722 const Float_t fFMDLowCut = 0.4;
724 for(UShort_t det=1;det<=3;det++) {
725 Int_t nRings = (det==1 ? 1 : 2);
726 for (UShort_t ir = 0; ir < nRings; ir++) {
727 Char_t ring = (ir == 0 ? 'I' : 'O');
728 UShort_t nsec = (ir == 0 ? 20 : 40);
729 UShort_t nstr = (ir == 0 ? 512 : 256);
730 for(UShort_t sec =0; sec < nsec; sec++) {
731 for(UShort_t strip = 0; strip < nstr; strip++) {
733 Float_t fmdMult = fmd->Multiplicity(det,ring,sec,strip);
734 if(fmdMult == 0 || fmdMult == AliESDFMD::kInvalidMult) continue;
736 Float_t nParticles=0;
738 if(fmdMult > fFMDLowCut) {
742 if (det<3) totalMultA = totalMultA + nParticles;
743 else totalMultC = totalMultC + nParticles;
749 multFMDA = totalMultA;
750 multFMDC = totalMultC;
753 AliESDZDC *esdZDC = esd->GetESDZDC();
754 zdcEnergyCal = esdZDC->AliESDZDC::TestBit(AliESDZDC::kEnergyCalibratedSignal);
756 zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy());
757 zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy());
758 znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy());
759 zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy());
761 zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy())/8.;
762 zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy())/8.;
763 znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy())/8.;
764 zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy())/8.;
766 zem1Energy = (Float_t) (esdZDC->GetZDCEMEnergy(0))/8.;
767 zem2Energy = (Float_t) (esdZDC->GetZDCEMEnergy(1))/8.;
771 else if(fAnalysisInput.CompareTo("AOD")==0){
772 //AliAODEvent *aod = dynamic_cast<AliAODEvent*> (InputEvent());
774 printf(" AOD analysis not yet implemented!!!\n\n");
778 // ***** Scaling for MC
781 v0Corr = Short_t((multV0A+multV0C) * fV0MScaleFactorMC);
783 // ***** Scaling for Data
785 v0Corr = Short_t(v0Corr / fV0MScaleFactor);
786 spdCorr = spdCorr / fSPDScaleFactor;
787 nTracks = Int_t(nTracks / fTPCScaleFactor);
790 // ***** Centrality Selection
791 if(fHtempV0M) fCentV0M = fHtempV0M->GetBinContent(fHtempV0M->FindBin((v0Corr)));
792 if(fHtempFMD) fCentFMD = fHtempFMD->GetBinContent(fHtempFMD->FindBin((multFMDA+multFMDC)));
793 if(fHtempTRK) fCentTRK = fHtempTRK->GetBinContent(fHtempTRK->FindBin(nTracks));
794 if(fHtempTKL) fCentTKL = fHtempTKL->GetBinContent(fHtempTKL->FindBin(nTracklets));
795 if(fHtempCL0) fCentCL0 = fHtempCL0->GetBinContent(fHtempCL0->FindBin(nClusters[0]));
796 if(fHtempCL1) fCentCL1 = fHtempCL1->GetBinContent(fHtempCL1->FindBin(spdCorr));
798 if(fHtempV0MvsFMD) fCentV0MvsFMD = fHtempV0MvsFMD->GetBinContent(fHtempV0MvsFMD->FindBin((multV0A+multV0C)));
799 if(fHtempTKLvsV0M) fCentTKLvsV0M = fHtempTKLvsV0M->GetBinContent(fHtempTKLvsV0M->FindBin(nTracklets));
800 if(fHtempZEMvsZDC) fCentZEMvsZDC = fHtempZEMvsZDC->GetBinContent(fHtempZEMvsZDC->FindBin(zem1Energy+zem2Energy,zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
808 if (TMath::Abs(zvtx)>fZVCut || zvtxNcont<1) fQuality += 1;
810 // ***** outliers, skip in case of MC input
813 if (IsOutlierV0MSPD(spdCorr, v0Corr, int(fCentV0M))) fQuality += 2;
815 if (IsOutlierV0MTPC(nTracks, v0Corr, int(fCentV0M))) fQuality += 4;
817 if (IsOutlierV0MZDC((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
818 (zdcEnergyCal==kFALSE) ) fQuality += 8;
819 if (IsOutlierV0MZDCECal((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
820 (zdcEnergyCal==kTRUE) ) fQuality += 8;
828 esdCent->SetQuality(fQuality);
829 esdCent->SetCentralityV0M(fCentV0M);
830 esdCent->SetCentralityFMD(fCentFMD);
831 esdCent->SetCentralityTRK(fCentTRK);
832 esdCent->SetCentralityTKL(fCentTKL);
833 esdCent->SetCentralityCL0(fCentCL0);
834 esdCent->SetCentralityCL1(fCentCL1);
835 esdCent->SetCentralityV0MvsFMD(fCentV0MvsFMD);
836 esdCent->SetCentralityTKLvsV0M(fCentTKLvsV0M);
837 esdCent->SetCentralityZEMvsZDC(fCentZEMvsZDC);
841 fHOutCentV0M_CVHN->Fill(fCentV0M);
843 fHOutCentV0M_CVLN->Fill(fCentV0M);
845 fHOutCentV0M_CCENT->Fill(fCentV0M);
847 fHOutCentV0M_CSEMI->Fill(fCentV0M);
850 Bool_t isSelected = (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB);
851 if (isSelected) { // fill the QA histograms only for MB events!
852 fHOutQuality->Fill(fQuality);
853 fHOutVertex->Fill(zvtx);
854 fHOutVertexT0->Fill(zvtxT0);
857 fHOutCentV0M->Fill(fCentV0M);
860 fHOutCentV0M_CVHNinMB->Fill(fCentV0M);
862 fHOutCentV0M_CVLNinMB->Fill(fCentV0M);
864 fHOutCentV0M_CCENTinMB->Fill(fCentV0M);
866 fHOutCentV0M_CSEMIinMB->Fill(fCentV0M);
869 fHOutCentFMD->Fill(fCentFMD);
870 fHOutCentTRK->Fill(fCentTRK);
871 fHOutCentTKL->Fill(fCentTKL);
872 fHOutCentCL0->Fill(fCentCL0);
873 fHOutCentCL1->Fill(fCentCL1);
874 fHOutCentV0MvsFMD->Fill(fCentV0MvsFMD);
875 fHOutCentTKLvsV0M->Fill(fCentTKLvsV0M);
876 fHOutCentZEMvsZDC->Fill(fCentZEMvsZDC);
877 fHOutCentV0MvsCentCL1->Fill(fCentV0M,fCentCL1);
878 fHOutCentV0MvsCentTRK->Fill(fCentV0M,fCentTRK);
879 fHOutCentTRKvsCentCL1->Fill(fCentTRK,fCentCL1);
880 fHOutCentV0MvsCentZDC->Fill(fCentV0M,fCentZEMvsZDC);
881 fHOutMultV0M->Fill(multV0A+multV0C);
882 fHOutMultV0O->Fill(multV0AOnline+multV0COnline);
883 fHOutMultFMD->Fill(multFMDA+multFMDC);
884 fHOutMultTRK->Fill(nTracks);
885 fHOutMultTKL->Fill(nTracklets);
886 fHOutMultCL0->Fill(nClusters[0]);
887 fHOutMultCL1->Fill(spdCorr);
888 fHOutMultV0MvsZDN->Fill(v0Corr,(zncEnergy+znaEnergy));
889 fHOutMultZEMvsZDN->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy));
890 fHOutMultV0MvsZDC->Fill(v0Corr,(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
891 fHOutMultZEMvsZDC->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
892 fHOutMultZEMvsZDCw->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy),fCentV0M);
893 fHOutMultV0MvsCL1->Fill(v0Corr,spdCorr);
894 fHOutMultV0MvsTRK->Fill(v0Corr,nTracks);
895 fHOutMultTRKvsCL1->Fill(nTracks,spdCorr);
896 fHOutMultV0MvsV0O->Fill(v0Corr,(multV0AOnline+multV0COnline));
897 fHOutMultV0OvsCL1->Fill((multV0AOnline+multV0COnline),spdCorr);
898 fHOutMultV0OvsTRK->Fill((multV0AOnline+multV0COnline),nTracks);
899 } else if (fQuality%2 == 0) {
900 fHOutCentV0Mqual1->Fill(fCentV0M);
901 fHOutCentTRKqual1->Fill(fCentTRK);
902 fHOutCentCL1qual1->Fill(fCentCL1);
903 fHOutMultV0MvsCL1qual1->Fill(v0Corr,spdCorr);
904 fHOutMultV0MvsTRKqual1->Fill(v0Corr,nTracks);
905 fHOutMultTRKvsCL1qual1->Fill(nTracks,spdCorr);
907 fHOutCentV0Mqual2->Fill(fCentV0M);
908 fHOutCentTRKqual2->Fill(fCentTRK);
909 fHOutCentCL1qual2->Fill(fCentCL1);
910 fHOutMultV0MvsCL1qual2->Fill(v0Corr,spdCorr);
911 fHOutMultV0MvsTRKqual2->Fill(v0Corr,nTracks);
912 fHOutMultTRKvsCL1qual2->Fill(nTracks,spdCorr);
916 PostData(1, fOutputList);
918 //________________________________________________________________________
919 void AliCentralitySelectionTask::Terminate(Option_t */*option*/)
921 // Terminate analysis
923 //________________________________________________________________________
924 Int_t AliCentralitySelectionTask::SetupRun(AliESDEvent* const esd)
926 // Setup files for run
931 // check if something to be done
932 if (fCurrentRun == esd->GetRunNumber())
935 fCurrentRun = esd->GetRunNumber();
937 TString fileName =(Form("%s/COMMON/CENTRALITY/data/centrality.root", AliAnalysisManager::GetOADBPath()));
938 AliInfo(Form("Setup Centrality Selection for run %d with file %s\n",fCurrentRun,fileName.Data()));
940 AliOADBContainer *con = new AliOADBContainer("OADB");
941 con->InitFromFile(fileName,"Centrality");
943 AliOADBCentrality* centOADB = 0;
944 centOADB = (AliOADBCentrality*)(con->GetObject(fCurrentRun));
946 AliWarning(Form("Centrality OADB does not exist for run %d, using Default \n",fCurrentRun ));
947 centOADB = (AliOADBCentrality*)(con->GetDefaultObject("oadbDefault"));
951 fUseScaling = centOADB->UseScaling();
952 fUseCleaning = centOADB->UseCleaning();
955 fZVCut = centOADB->ZVCut();
956 fOutliersCut = centOADB->OutliersCut();
959 fHtempV0M = centOADB->V0hist();
960 fHtempTRK = centOADB->TPChist();
961 fHtempCL1 = centOADB->SPDhist();
962 fHtempZEMvsZDC = centOADB->ZEMvsZDChist();
964 TString path = gSystem->ExpandPathName(fileName.Data());
965 if (!fHtempV0M) AliWarning(Form("Calibration for V0M does not exist in %s", path.Data()));
966 if (!fHtempTRK) AliWarning(Form("Calibration for TRK does not exist in %s", path.Data()));
967 if (!fHtempCL1) AliWarning(Form("Calibration for CL1 does not exist in %s", path.Data()));
968 if (!fHtempZEMvsZDC) AliWarning(Form("Calibration for ZEMvsZDC does not exist in %s", path.Data()));
971 fV0MScaleFactor = centOADB->V0MScaleFactor();
972 fSPDScaleFactor = centOADB->SPDScaleFactor();
973 fTPCScaleFactor = centOADB->TPCScaleFactor();
974 fV0MScaleFactorMC = centOADB->V0MScaleFactor();
976 // outliers parameters
977 fV0MSPDOutlierPar0 = centOADB->V0MSPDOutlierPar0();
978 fV0MSPDOutlierPar1 = centOADB->V0MSPDOutlierPar1();
979 fV0MTPCOutlierPar0 = centOADB->V0MTPCOutlierPar0();
980 fV0MTPCOutlierPar1 = centOADB->V0MTPCOutlierPar1();
982 fV0MSPDSigmaOutlierPar0 = centOADB->V0MSPDSigmaOutlierPar0();
983 fV0MSPDSigmaOutlierPar1 = centOADB->V0MSPDSigmaOutlierPar1();
984 fV0MSPDSigmaOutlierPar2 = centOADB->V0MSPDSigmaOutlierPar2();
985 fV0MTPCSigmaOutlierPar0 = centOADB->V0MTPCSigmaOutlierPar0();
986 fV0MTPCSigmaOutlierPar1 = centOADB->V0MTPCSigmaOutlierPar1();
987 fV0MTPCSigmaOutlierPar2 = centOADB->V0MTPCSigmaOutlierPar2();
989 fV0MZDCOutlierPar0 = centOADB->V0MZDCOutlierPar0();
990 fV0MZDCOutlierPar1 = centOADB->V0MZDCOutlierPar1();
991 fV0MZDCEcalOutlierPar0 = centOADB->V0MZDCEcalOutlierPar0();
992 fV0MZDCEcalOutlierPar1 = centOADB->V0MZDCEcalOutlierPar1();
1001 //________________________________________________________________________
1002 Bool_t AliCentralitySelectionTask::IsOutlierV0MSPD(Float_t spd, Float_t v0, Int_t cent) const
1005 Float_t val = fV0MSPDOutlierPar0 + fV0MSPDOutlierPar1 * v0;
1006 Float_t spdSigma = fV0MSPDSigmaOutlierPar0 + fV0MSPDSigmaOutlierPar1*cent + fV0MSPDSigmaOutlierPar2*cent*cent;
1007 if ( TMath::Abs(spd-val) > fOutliersCut*spdSigma )
1013 //________________________________________________________________________
1014 Bool_t AliCentralitySelectionTask::IsOutlierV0MTPC(Int_t tracks, Float_t v0, Int_t cent) const
1017 Float_t val = fV0MTPCOutlierPar0 + fV0MTPCOutlierPar1 * v0;
1018 Float_t tpcSigma = fV0MTPCSigmaOutlierPar0 + fV0MTPCSigmaOutlierPar1*cent + fV0MTPCSigmaOutlierPar2*cent*cent;
1019 if ( TMath::Abs(tracks-val) > fOutliersCut*tpcSigma )
1025 //________________________________________________________________________
1026 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDC(Float_t zdc, Float_t v0) const
1029 Float_t val = fV0MZDCOutlierPar0 + fV0MZDCOutlierPar1 * v0;
1036 //________________________________________________________________________
1037 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDCECal(Float_t zdc, Float_t v0) const
1040 Float_t val = fV0MZDCEcalOutlierPar0 + fV0MZDCEcalOutlierPar1 * v0;