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),
157 fHOutCentV0MCVHNinMB(0),
158 fHOutCentV0MCVLNinMB(0),
159 fHOutCentV0MCCENT(0),
160 fHOutCentV0MCSEMI(0),
161 fHOutCentV0MCCENTinMB(0),
162 fHOutCentV0MCSEMIinMB(0),
170 fHOutCentV0MMSLinMB(0),
171 fHOutCentV0MMSHinMB(0),
172 fHOutCentV0MMULinMB(0),
173 fHOutCentV0MMLLinMB(0),
174 fHOutCentV0MEJEinMB(0),
175 fHOutCentV0MEGAinMB(0),
176 fHOutCentV0MPHSinMB(0),
183 fHOutCentV0MvsFMD(0),
184 fHOutCentTKLvsV0M(0),
185 fHOutCentZEMvsZDC(0),
186 fHOutCentV0MvsCentCL1(0),
187 fHOutCentV0MvsCentTRK(0),
188 fHOutCentTRKvsCentCL1(0),
189 fHOutCentV0MvsCentZDC(0),
190 fHOutCentV0AvsCentV0C(0),
191 fHOutCentV0AvsCentTRK(0),
192 fHOutCentV0AvsCentCND(0),
193 fHOutCentV0AvsCentCL1(0),
194 fHOutCentV0CvsCentTRK(0),
195 fHOutCentV0CvsCentCND(0),
196 fHOutCentV0CvsCentCL1(0),
208 fHOutMultV0MvsZDN(0),
209 fHOutMultZEMvsZDN(0),
210 fHOutMultV0MvsZDC(0),
211 fHOutMultZEMvsZDC(0),
212 fHOutMultZEMvsZDCw(0),
213 fHOutMultV0MvsCL1(0),
214 fHOutMultV0MvsTRK(0),
215 fHOutMultTRKvsCL1(0),
216 fHOutMultV0MvsV0O(0),
217 fHOutMultV0OvsCL1(0),
218 fHOutMultV0OvsTRK(0),
219 fHOutMultCL1vsTKL(0),
220 fHOutCentV0Mqual1(0),
221 fHOutCentTRKqual1(0),
222 fHOutCentCL1qual1(0),
223 fHOutMultV0MvsCL1qual1(0),
224 fHOutMultV0MvsTRKqual1(0),
225 fHOutMultTRKvsCL1qual1(0),
226 fHOutCentV0Mqual2(0),
227 fHOutCentTRKqual2(0),
228 fHOutCentCL1qual2(0),
229 fHOutMultV0MvsCL1qual2(0),
230 fHOutMultV0MvsTRKqual2(0),
231 fHOutMultTRKvsCL1qual2(0),
236 // Default constructor
237 AliInfo("Centrality Selection enabled.");
242 fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO.,AliESDTZERO."
243 ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks ";
246 //________________________________________________________________________
247 AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
248 AliAnalysisTaskSE(name),
249 fAnalysisInput("ESD"),
258 fV0MScaleFactorMC(0),
259 fV0MSPDOutlierPar0(0),
260 fV0MSPDOutlierPar1(0),
261 fV0MTPCOutlierPar0(0),
262 fV0MTPCOutlierPar1(0),
263 fV0MSPDSigmaOutlierPar0(0),
264 fV0MSPDSigmaOutlierPar1(0),
265 fV0MSPDSigmaOutlierPar2(0),
266 fV0MTPCSigmaOutlierPar0(0),
267 fV0MTPCSigmaOutlierPar1(0),
268 fV0MTPCSigmaOutlierPar2(0),
269 fV0MZDCOutlierPar0(0),
270 fV0MZDCOutlierPar1(0),
271 fV0MZDCEcalOutlierPar0(0),
272 fV0MZDCEcalOutlierPar1(0),
324 fHOutCentV0MCVHNinMB(0),
325 fHOutCentV0MCVLNinMB(0),
326 fHOutCentV0MCCENT(0),
327 fHOutCentV0MCSEMI(0),
328 fHOutCentV0MCCENTinMB(0),
329 fHOutCentV0MCSEMIinMB(0),
337 fHOutCentV0MMSLinMB(0),
338 fHOutCentV0MMSHinMB(0),
339 fHOutCentV0MMULinMB(0),
340 fHOutCentV0MMLLinMB(0),
341 fHOutCentV0MEJEinMB(0),
342 fHOutCentV0MEGAinMB(0),
343 fHOutCentV0MPHSinMB(0),
350 fHOutCentV0MvsFMD(0),
351 fHOutCentTKLvsV0M(0),
352 fHOutCentZEMvsZDC(0),
353 fHOutCentV0MvsCentCL1(0),
354 fHOutCentV0MvsCentTRK(0),
355 fHOutCentTRKvsCentCL1(0),
356 fHOutCentV0MvsCentZDC(0),
357 fHOutCentV0AvsCentV0C(0),
358 fHOutCentV0AvsCentTRK(0),
359 fHOutCentV0AvsCentCND(0),
360 fHOutCentV0AvsCentCL1(0),
361 fHOutCentV0CvsCentTRK(0),
362 fHOutCentV0CvsCentCND(0),
363 fHOutCentV0CvsCentCL1(0),
375 fHOutMultV0MvsZDN(0),
376 fHOutMultZEMvsZDN(0),
377 fHOutMultV0MvsZDC(0),
378 fHOutMultZEMvsZDC(0),
379 fHOutMultZEMvsZDCw(0),
380 fHOutMultV0MvsCL1(0),
381 fHOutMultV0MvsTRK(0),
382 fHOutMultTRKvsCL1(0),
383 fHOutMultV0MvsV0O(0),
384 fHOutMultV0OvsCL1(0),
385 fHOutMultV0OvsTRK(0),
386 fHOutMultCL1vsTKL(0),
387 fHOutCentV0Mqual1(0),
388 fHOutCentTRKqual1(0),
389 fHOutCentCL1qual1(0),
390 fHOutMultV0MvsCL1qual1(0),
391 fHOutMultV0MvsTRKqual1(0),
392 fHOutMultTRKvsCL1qual1(0),
393 fHOutCentV0Mqual2(0),
394 fHOutCentTRKqual2(0),
395 fHOutCentCL1qual2(0),
396 fHOutMultV0MvsCL1qual2(0),
397 fHOutMultV0MvsTRKqual2(0),
398 fHOutMultTRKvsCL1qual2(0),
403 // Default constructor
404 AliInfo("Centrality Selection enabled.");
405 //DefineOutput(1, TList::Class());
409 fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO.,AliESDTZERO."
410 ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks ";
413 //________________________________________________________________________
414 AliCentralitySelectionTask& AliCentralitySelectionTask::operator=(const AliCentralitySelectionTask& c)
416 // Assignment operator
418 AliAnalysisTaskSE::operator=(c);
423 //________________________________________________________________________
424 AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelectionTask& ana):
425 AliAnalysisTaskSE(ana),
426 fAnalysisInput(ana.fAnalysisInput),
427 fIsMCInput(ana.fIsMCInput),
428 fCurrentRun(ana.fCurrentRun),
429 fUseScaling(ana.fUseScaling),
430 fUseCleaning(ana.fUseCleaning),
431 fFillHistos(ana.fFillHistos),
432 fV0MScaleFactor(ana.fV0MScaleFactor),
433 fSPDScaleFactor(ana.fSPDScaleFactor),
434 fTPCScaleFactor(ana.fTPCScaleFactor),
435 fV0MScaleFactorMC(ana.fV0MScaleFactorMC),
436 fV0MSPDOutlierPar0(ana.fV0MSPDOutlierPar0),
437 fV0MSPDOutlierPar1(ana.fV0MSPDOutlierPar1),
438 fV0MTPCOutlierPar0(ana.fV0MTPCOutlierPar0),
439 fV0MTPCOutlierPar1(ana.fV0MTPCOutlierPar1),
440 fV0MSPDSigmaOutlierPar0(ana.fV0MSPDSigmaOutlierPar0),
441 fV0MSPDSigmaOutlierPar1(ana.fV0MSPDSigmaOutlierPar1),
442 fV0MSPDSigmaOutlierPar2(ana.fV0MSPDSigmaOutlierPar2),
443 fV0MTPCSigmaOutlierPar0(ana.fV0MTPCSigmaOutlierPar0),
444 fV0MTPCSigmaOutlierPar1(ana.fV0MTPCSigmaOutlierPar1),
445 fV0MTPCSigmaOutlierPar2(ana.fV0MTPCSigmaOutlierPar2),
446 fV0MZDCOutlierPar0(ana.fV0MZDCOutlierPar0),
447 fV0MZDCOutlierPar1(ana.fV0MZDCOutlierPar1),
448 fV0MZDCEcalOutlierPar0(ana.fV0MZDCEcalOutlierPar0),
449 fV0MZDCEcalOutlierPar1(ana.fV0MZDCEcalOutlierPar1),
450 fTrackCuts(ana.fTrackCuts),
452 fOutliersCut(ana.fOutliersCut),
453 fQuality(ana.fQuality),
454 fIsSelected(ana.fIsSelected),
465 fCVHNbit(ana.fCVHNbit),
466 fCVLNbit(ana.fCVLNbit),
469 fCCENTbit(ana.fCCENTbit),
470 fCSEMIbit(ana.fCSEMIbit),
471 fCentV0M(ana.fCentV0M),
472 fCentV0A(ana.fCentV0A),
473 fCentV0C(ana.fCentV0C),
474 fCentFMD(ana.fCentFMD),
475 fCentTRK(ana.fCentTRK),
476 fCentTKL(ana.fCentTKL),
477 fCentCL0(ana.fCentCL0),
478 fCentCL1(ana.fCentCL1),
479 fCentCND(ana.fCentCND),
480 fCentV0MvsFMD(ana.fCentV0MvsFMD),
481 fCentTKLvsV0M(ana.fCentTKLvsV0M),
482 fCentZEMvsZDC(ana.fCentZEMvsZDC),
483 fHtempV0M(ana.fHtempV0M),
484 fHtempV0A(ana.fHtempV0A),
485 fHtempV0C(ana.fHtempV0C),
486 fHtempFMD(ana.fHtempFMD),
487 fHtempTRK(ana.fHtempTRK),
488 fHtempTKL(ana.fHtempTKL),
489 fHtempCL0(ana.fHtempCL0),
490 fHtempCL1(ana.fHtempCL1),
491 fHtempCND(ana.fHtempCND),
492 fHtempV0MvsFMD(ana.fHtempV0MvsFMD),
493 fHtempTKLvsV0M(ana.fHtempTKLvsV0M),
494 fHtempZEMvsZDC(ana.fHtempZEMvsZDC),
495 fOutputList(ana.fOutputList),
496 fHOutCentV0M (ana.fHOutCentV0M ),
497 fHOutCentV0A (ana.fHOutCentV0A ),
498 fHOutCentV0C (ana.fHOutCentV0C ),
499 fHOutCentV0MCVHN(ana.fHOutCentV0MCVHN),
500 fHOutCentV0MCVLN(ana.fHOutCentV0MCVLN),
501 fHOutCentV0MCVHNinMB(ana.fHOutCentV0MCVHNinMB),
502 fHOutCentV0MCVLNinMB(ana.fHOutCentV0MCVLNinMB),
503 fHOutCentV0MCCENT(ana.fHOutCentV0MCCENT),
504 fHOutCentV0MCSEMI(ana.fHOutCentV0MCSEMI),
505 fHOutCentV0MCCENTinMB(ana.fHOutCentV0MCCENTinMB),
506 fHOutCentV0MCSEMIinMB(ana.fHOutCentV0MCSEMIinMB),
507 fHOutCentV0MMSL(ana.fHOutCentV0MMSL),
508 fHOutCentV0MMSH(ana.fHOutCentV0MMSH),
509 fHOutCentV0MMUL(ana.fHOutCentV0MMUL),
510 fHOutCentV0MMLL(ana.fHOutCentV0MMLL),
511 fHOutCentV0MEJE(ana.fHOutCentV0MEJE),
512 fHOutCentV0MEGA(ana.fHOutCentV0MEGA),
513 fHOutCentV0MPHS(ana.fHOutCentV0MPHS),
514 fHOutCentV0MMSLinMB(ana.fHOutCentV0MMSLinMB),
515 fHOutCentV0MMSHinMB(ana.fHOutCentV0MMSHinMB),
516 fHOutCentV0MMULinMB(ana.fHOutCentV0MMULinMB),
517 fHOutCentV0MMLLinMB(ana.fHOutCentV0MMLLinMB),
518 fHOutCentV0MEJEinMB(ana.fHOutCentV0MEJEinMB),
519 fHOutCentV0MEGAinMB(ana.fHOutCentV0MEGAinMB),
520 fHOutCentV0MPHSinMB(ana.fHOutCentV0MPHSinMB),
521 fHOutCentFMD (ana.fHOutCentFMD ),
522 fHOutCentTRK (ana.fHOutCentTRK ),
523 fHOutCentTKL (ana.fHOutCentTKL ),
524 fHOutCentCL0 (ana.fHOutCentCL0 ),
525 fHOutCentCL1 (ana.fHOutCentCL1 ),
526 fHOutCentCND (ana.fHOutCentCND ),
527 fHOutCentV0MvsFMD(ana.fHOutCentV0MvsFMD),
528 fHOutCentTKLvsV0M(ana.fHOutCentTKLvsV0M),
529 fHOutCentZEMvsZDC(ana.fHOutCentZEMvsZDC),
530 fHOutCentV0MvsCentCL1(ana.fHOutCentV0MvsCentCL1),
531 fHOutCentV0MvsCentTRK(ana.fHOutCentV0MvsCentTRK),
532 fHOutCentTRKvsCentCL1(ana.fHOutCentTRKvsCentCL1),
533 fHOutCentV0MvsCentZDC(ana.fHOutCentV0MvsCentZDC),
534 fHOutCentV0AvsCentV0C(ana.fHOutCentV0AvsCentV0C),
535 fHOutCentV0AvsCentTRK(ana.fHOutCentV0AvsCentTRK),
536 fHOutCentV0AvsCentCND(ana.fHOutCentV0AvsCentCND),
537 fHOutCentV0AvsCentCL1(ana.fHOutCentV0AvsCentCL1),
538 fHOutCentV0CvsCentTRK(ana.fHOutCentV0CvsCentTRK),
539 fHOutCentV0CvsCentCND(ana.fHOutCentV0CvsCentCND),
540 fHOutCentV0CvsCentCL1(ana.fHOutCentV0CvsCentCL1),
541 fHOutMultV0AC(ana.fHOutMultV0AC),
542 fHOutMultV0M(ana.fHOutMultV0M),
543 fHOutMultV0A(ana.fHOutMultV0A),
544 fHOutMultV0C(ana.fHOutMultV0C),
545 fHOutMultV0O(ana.fHOutMultV0O),
546 fHOutMultFMD(ana.fHOutMultFMD),
547 fHOutMultTRK(ana.fHOutMultTRK),
548 fHOutMultTKL(ana.fHOutMultTKL),
549 fHOutMultCL0(ana.fHOutMultCL0),
550 fHOutMultCL1(ana.fHOutMultCL1),
551 fHOutMultCND(ana.fHOutMultCND),
552 fHOutMultV0MvsZDN(ana.fHOutMultV0MvsZDN),
553 fHOutMultZEMvsZDN(ana.fHOutMultZEMvsZDN),
554 fHOutMultV0MvsZDC(ana.fHOutMultV0MvsZDC),
555 fHOutMultZEMvsZDC(ana.fHOutMultZEMvsZDC),
556 fHOutMultZEMvsZDCw(ana.fHOutMultZEMvsZDCw),
557 fHOutMultV0MvsCL1(ana.fHOutMultV0MvsCL1),
558 fHOutMultV0MvsTRK(ana.fHOutMultV0MvsTRK),
559 fHOutMultTRKvsCL1(ana.fHOutMultTRKvsCL1),
560 fHOutMultV0MvsV0O(ana.fHOutMultV0MvsV0O),
561 fHOutMultV0OvsCL1(ana.fHOutMultV0OvsCL1),
562 fHOutMultV0OvsTRK(ana.fHOutMultV0OvsTRK),
563 fHOutMultCL1vsTKL(ana.fHOutMultCL1vsTKL),
564 fHOutCentV0Mqual1(ana.fHOutCentV0Mqual1),
565 fHOutCentTRKqual1(ana.fHOutCentTRKqual1),
566 fHOutCentCL1qual1(ana.fHOutCentCL1qual1),
567 fHOutMultV0MvsCL1qual1(ana.fHOutMultV0MvsCL1qual1),
568 fHOutMultV0MvsTRKqual1(ana.fHOutMultV0MvsTRKqual1),
569 fHOutMultTRKvsCL1qual1(ana.fHOutMultTRKvsCL1qual1),
570 fHOutCentV0Mqual2(ana.fHOutCentV0Mqual2),
571 fHOutCentTRKqual2(ana.fHOutCentTRKqual2),
572 fHOutCentCL1qual2(ana.fHOutCentCL1qual2),
573 fHOutMultV0MvsCL1qual2(ana.fHOutMultV0MvsCL1qual2),
574 fHOutMultV0MvsTRKqual2(ana.fHOutMultV0MvsTRKqual2),
575 fHOutMultTRKvsCL1qual2(ana.fHOutMultTRKvsCL1qual2),
576 fHOutQuality(ana.fHOutQuality),
577 fHOutVertex(ana.fHOutVertex),
578 fHOutVertexT0(ana.fHOutVertexT0)
584 //________________________________________________________________________
585 AliCentralitySelectionTask::~AliCentralitySelectionTask()
588 if (fOutputList && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) delete fOutputList;
589 if (fTrackCuts) delete fTrackCuts;
592 //________________________________________________________________________
593 void AliCentralitySelectionTask::UserCreateOutputObjects()
595 // Create the output containers
596 if(fDebug>1) printf("AnalysisCentralitySelectionTask::UserCreateOutputObjects() \n");
597 AliLog::SetClassDebugLevel("AliCentralitySelectionTask", AliLog::kInfo);
600 fOutputList = new TList();
601 fOutputList->SetOwner();
602 fHOutCentV0M = new TH1F("fHOutCentV0M","fHOutCentV0M; Centrality V0",505,0,101);
603 fHOutCentV0A = new TH1F("fHOutCentV0A","fHOutCentV0A; Centrality V0A",505,0,101);
604 fHOutCentV0C = new TH1F("fHOutCentV0C","fHOutCentV0C; Centrality V0C",505,0,101);
605 fHOutCentV0MCVHN= new TH1F("fHOutCentV0M_CVHN","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
606 fHOutCentV0MCVLN= new TH1F("fHOutCentV0M_CVLN","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
607 fHOutCentV0MCVHNinMB= new TH1F("fHOutCentV0M_CVHNinMB","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
608 fHOutCentV0MCVLNinMB= new TH1F("fHOutCentV0M_CVLNinMB","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
609 fHOutCentV0MCCENT= new TH1F("fHOutCentV0M_CCENT","fHOutCentV0M_CCENT; Centrality V0",505,0,101);
610 fHOutCentV0MCSEMI= new TH1F("fHOutCentV0M_CSEMI","fHOutCentV0M_CSEMI; Centrality V0",505,0,101);
611 fHOutCentV0MCCENTinMB= new TH1F("fHOutCentV0M_CCENTinMB","fHOutCentV0M_CCENT; Centrality V0",505,0,101);
612 fHOutCentV0MCSEMIinMB= new TH1F("fHOutCentV0M_CSEMIinMB","fHOutCentV0M_CSEMI; Centrality V0",505,0,101);
613 fHOutCentV0MMSL= new TH1F("fHOutCentV0M_MSL","fHOutCentV0M_MSL; Centrality V0",505,0,101);
614 fHOutCentV0MMSH= new TH1F("fHOutCentV0M_MSH","fHOutCentV0M_MSH; Centrality V0",505,0,101);
615 fHOutCentV0MMUL= new TH1F("fHOutCentV0M_MUL","fHOutCentV0M_MUL; Centrality V0",505,0,101);
616 fHOutCentV0MMLL= new TH1F("fHOutCentV0M_MLL","fHOutCentV0M_MLL; Centrality V0",505,0,101);
617 fHOutCentV0MEJE= new TH1F("fHOutCentV0M_EJE","fHOutCentV0M_EJE; Centrality V0",505,0,101);
618 fHOutCentV0MEGA= new TH1F("fHOutCentV0M_EGA","fHOutCentV0M_EGA; Centrality V0",505,0,101);
619 fHOutCentV0MPHS= new TH1F("fHOutCentV0M_PHS","fHOutCentV0M_PHS; Centrality V0",505,0,101);
620 fHOutCentV0MMSLinMB= new TH1F("fHOutCentV0M_MSLinMB","fHOutCentV0M_MSLinMB; Centrality V0",505,0,101);
621 fHOutCentV0MMSHinMB= new TH1F("fHOutCentV0M_MSHinMB","fHOutCentV0M_MSHinMB; Centrality V0",505,0,101);
622 fHOutCentV0MMULinMB= new TH1F("fHOutCentV0M_MULinMB","fHOutCentV0M_MULinMB; Centrality V0",505,0,101);
623 fHOutCentV0MMLLinMB= new TH1F("fHOutCentV0M_MLLinMB","fHOutCentV0M_MLLinMB; Centrality V0",505,0,101);
624 fHOutCentV0MEJEinMB= new TH1F("fHOutCentV0M_EJEinMB","fHOutCentV0M_EJEinMB; Centrality V0",505,0,101);
625 fHOutCentV0MEGAinMB= new TH1F("fHOutCentV0M_EGAinMB","fHOutCentV0M_EGAinMB; Centrality V0",505,0,101);
626 fHOutCentV0MPHSinMB= new TH1F("fHOutCentV0M_PHSinMB","fHOutCentV0M_PHSinMB; Centrality V0",505,0,101);
627 fHOutCentFMD = new TH1F("fHOutCentFMD","fHOutCentFMD; Centrality FMD",505,0,101);
628 fHOutCentTRK = new TH1F("fHOutCentTRK","fHOutCentTRK; Centrality TPC",505,0,101);
629 fHOutCentTKL = new TH1F("fHOutCentTKL","fHOutCentTKL; Centrality tracklets",505,0,101);
630 fHOutCentCL0 = new TH1F("fHOutCentCL0","fHOutCentCL0; Centrality SPD inner",505,0,101);
631 fHOutCentCL1 = new TH1F("fHOutCentCL1","fHOutCentCL1; Centrality SPD outer",505,0,101);
632 fHOutCentCND = new TH1F("fHOutCentCND","fHOutCentCND; Centrality candle",505,0,101);
633 fHOutCentV0MvsFMD= new TH1F("fHOutCentV0MvsFMD","fHOutCentV0MvsFMD; Centrality V0 vs FMD",505,0,101);
634 fHOutCentTKLvsV0M= new TH1F("fHOutCentTKLvsV0M","fHOutCentTKLvsV0M; Centrality tracklets vs V0",505,0,101);
635 fHOutCentZEMvsZDC= new TH1F("fHOutCentZEMvsZDC","fHOutCentZEMvsZDC; Centrality ZEM vs ZDC",505,0,101);
636 fHOutCentV0MvsCentCL1= new TH2F("fHOutCentV0MvsCentCL1","fHOutCentV0MvsCentCL1; Cent V0; Cent SPD",505,0,101,505,0,101);
637 fHOutCentV0MvsCentTRK= new TH2F("fHOutCentV0MvsCentTRK","fHOutCentV0MvsCentTRK; Cent V0; Cent TPC",505,0,101,505,0,101);
638 fHOutCentTRKvsCentCL1= new TH2F("fHOutCentTRKvsCentCL1","fHOutCentTRKvsCentCL1; Cent TPC; Cent SPD",505,0,101,505,0,101);
639 fHOutCentV0MvsCentZDC= new TH2F("fHOutCentV0MvsCentZDC","fHOutCentV0MvsCentZDC; Cent V0; Cent ZDC",505,0,101,505,0,101);
640 fHOutCentV0AvsCentV0C= new TH2F("fHOutCentV0AvsCentV0C","fHOutCentV0AvsCentV0C; Cent V0A; Cent V0C;", 505,0,101,505,0,101);
641 fHOutCentV0AvsCentTRK= new TH2F("fHOutCentV0AvsCentTRK","fHOutCentV0AvsCentTRK; Cent V0A; Cent TRK;", 505,0,101,505,0,101);
642 fHOutCentV0AvsCentCND= new TH2F("fHOutCentV0AvsCentCND","fHOutCentV0AvsCentCND; Cent V0A; Cent CND;", 505,0,101,505,0,101);
643 fHOutCentV0AvsCentCL1= new TH2F("fHOutCentV0AvsCentCL1","fHOutCentV0AvsCentCL1; Cent V0A; Cent CL1;", 505,0,101,505,0,101);
644 fHOutCentV0CvsCentTRK= new TH2F("fHOutCentV0CvsCentTRK","fHOutCentV0CvsCentTRK; Cent V0C; Cent TRK;", 505,0,101,505,0,101);
645 fHOutCentV0CvsCentCND= new TH2F("fHOutCentV0CvsCentCND","fHOutCentV0CvsCentCND; Cent V0C; Cent CND;", 505,0,101,505,0,101);
646 fHOutCentV0CvsCentCL1= new TH2F("fHOutCentV0CvsCentCL1","fHOutCentV0CvsCentCL1; Cent V0C; Cent CL1;", 505,0,101,505,0,101);
648 fHOutMultV0AC = new TH2F("fHOutMultV0AC","fHOutMultV0AC; Multiplicity V0A; Multiplicity V0C",1000,0,1000,1000,0,1000);
649 fHOutMultV0M = new TH1F("fHOutMultV0M","fHOutMultV0M; Multiplicity V0",25000,0,25000);
650 fHOutMultV0A = new TH1F("fHOutMultV0A","fHOutMultV0A; Multiplicity V0",25000,0,25000);
651 fHOutMultV0C = new TH1F("fHOutMultV0C","fHOutMultV0C; Multiplicity V0",25000,0,25000);
652 fHOutMultV0O = new TH1F("fHOutMultV0O","fHOutMultV0O; Multiplicity V0",40000,0,40000);
653 fHOutMultFMD = new TH1F("fHOutMultFMD","fHOutMultFMD; Multiplicity FMD",24000,0,24000);
654 fHOutMultTRK = new TH1F("fHOutMultTRK","fHOutMultTRK; Multiplicity TPC",4000,0,4000);
655 fHOutMultTKL = new TH1F("fHOutMultTKL","fHOutMultTKL; Multiplicity tracklets",5000,0,5000);
656 fHOutMultCL0 = new TH1F("fHOutMultCL0","fHOutMultCL0; Multiplicity SPD inner",7000,0,7000);
657 fHOutMultCL1 = new TH1F("fHOutMultCL1","fHOutMultCL1; Multiplicity SPD outer",7000,0,7000);
658 fHOutMultCND = new TH1F("fHOutMultCND","fHOutMultCND; Multiplicity candle",4000,0,4000);
660 fHOutMultV0MvsZDN = new TH2F("fHOutMultV0MvsZDN","fHOutMultV0MvsZDN; Multiplicity V0; Energy ZDC-N",500,0,30000,500,0,180000);
661 fHOutMultZEMvsZDN = new TH2F("fHOutMultZEMvsZDN","fHOutMultZEMvsZDN; Energy ZEM; Energy ZDC-N",500,0,2500,500,0,180000);
662 fHOutMultV0MvsZDC = new TH2F("fHOutMultV0MvsZDC","fHOutMultV0MvsZDC; Multiplicity V0; Energy ZDC",500,0,30000,500,0,200000);
663 fHOutMultZEMvsZDC = new TH2F("fHOutMultZEMvsZDC","fHOutMultZEMvsZDC; Energy ZEM; Energy ZDC",500,0,2500,500,0,200000);
664 fHOutMultZEMvsZDCw = new TH2F("fHOutMultZEMvsZDCw","fHOutMultZEMvsZDCw; Energy ZEM; Energy ZDC (weigthed with V0 percentile)",500,0,2500,500,0,200000);
665 fHOutMultV0MvsCL1 = new TH2F("fHOutMultV0MvsCL1","fHOutMultV0MvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
666 fHOutMultV0MvsTRK = new TH2F("fHOutMultV0MvsTRK","fHOutMultV0MvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
667 fHOutMultTRKvsCL1 = new TH2F("fHOutMultTRKvsCL1","fHOutMultTRKvsCL1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
668 fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,40000);
669 fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",500,0,40000,700,0,7000);
670 fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",500,0,40000,400,0,4000);
671 fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,30000);
672 fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
673 fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
674 fHOutMultCL1vsTKL = new TH2F ("fHOutMultCL1vsTKL","fHOutMultCL1vsTKL; Multiplicity SPD outer; Multiplicity tracklets",700,0,7000,700,0,7000);
676 fHOutCentV0Mqual1 = new TH1F("fHOutCentV0M_qual1","fHOutCentV0M_qual1; Centrality V0",505,0,101);
677 fHOutCentTRKqual1 = new TH1F("fHOutCentTRK_qual1","fHOutCentTRK_qual1; Centrality TPC",505,0,101);
678 fHOutCentCL1qual1 = new TH1F("fHOutCentCL1_qual1","fHOutCentCL1_qual1; Centrality SPD outer",505,0,101);
679 fHOutMultV0MvsCL1qual1 = new TH2F("fHOutMultV0MvsCL1_qual1","fHOutMultV0MvsCL1_qual1; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
680 fHOutMultV0MvsTRKqual1 = new TH2F("fHOutMultV0MvsTRK_qual1","fHOutMultV0MvsTRK_qual1; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
681 fHOutMultTRKvsCL1qual1 = new TH2F("fHOutMultTRKvsCL1_qual1","fHOutMultTRKvsCL1_qual1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
683 fHOutCentV0Mqual2 = new TH1F("fHOutCentV0M_qual2","fHOutCentV0M_qual2; Centrality V0",505,0,101);
684 fHOutCentTRKqual2 = new TH1F("fHOutCentTRK_qual2","fHOutCentTRK_qual2; Centrality TPC",505,0,101);
685 fHOutCentCL1qual2 = new TH1F("fHOutCentCL1_qual2","fHOutCentCL1_qual2; Centrality SPD outer",505,0,101);
686 fHOutMultV0MvsCL1qual2 = new TH2F("fHOutMultV0MvsCL1_qual2","fHOutMultV0MvsCL1_qual2; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
687 fHOutMultV0MvsTRKqual2 = new TH2F("fHOutMultV0MvsTRK_qual2","fHOutMultV0MvsTRK_qual2; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
688 fHOutMultTRKvsCL1qual2 = new TH2F("fHOutMultTRKvsCL1_qual2","fHOutMultTRKvsCL1_qual2; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
690 fHOutQuality = new TH1F("fHOutQuality", "fHOutQuality", 100,-0.5,99.5);
691 fHOutVertex = new TH1F("fHOutVertex", "fHOutVertex", 100,-20,20);
692 fHOutVertexT0 = new TH1F("fHOutVertexT0", "fHOutVertexT0", 100,-20,20);
694 fOutputList->Add( fHOutCentV0M );
695 fOutputList->Add( fHOutCentV0A );
696 fOutputList->Add( fHOutCentV0C );
697 fOutputList->Add( fHOutCentV0MCVHN);
698 fOutputList->Add( fHOutCentV0MCVLN);
699 fOutputList->Add( fHOutCentV0MCVHNinMB);
700 fOutputList->Add( fHOutCentV0MCVLNinMB);
701 fOutputList->Add( fHOutCentV0MCCENT);
702 fOutputList->Add( fHOutCentV0MCSEMI);
703 fOutputList->Add( fHOutCentV0MCCENTinMB);
704 fOutputList->Add( fHOutCentV0MCSEMIinMB);
705 fOutputList->Add( fHOutCentV0MMSL );
706 fOutputList->Add( fHOutCentV0MMSH );
707 fOutputList->Add( fHOutCentV0MMUL );
708 fOutputList->Add( fHOutCentV0MMLL );
709 fOutputList->Add( fHOutCentV0MEJE );
710 fOutputList->Add( fHOutCentV0MEGA );
711 fOutputList->Add( fHOutCentV0MPHS );
712 fOutputList->Add( fHOutCentV0MMSLinMB);
713 fOutputList->Add( fHOutCentV0MMSHinMB);
714 fOutputList->Add( fHOutCentV0MMULinMB);
715 fOutputList->Add( fHOutCentV0MMLLinMB);
716 fOutputList->Add( fHOutCentV0MEJEinMB);
717 fOutputList->Add( fHOutCentV0MEGAinMB);
718 fOutputList->Add( fHOutCentV0MPHSinMB);
719 fOutputList->Add( fHOutCentFMD );
720 fOutputList->Add( fHOutCentTRK );
721 fOutputList->Add( fHOutCentTKL );
722 fOutputList->Add( fHOutCentCL0 );
723 fOutputList->Add( fHOutCentCL1 );
724 fOutputList->Add( fHOutCentCND );
725 fOutputList->Add( fHOutCentV0MvsFMD);
726 fOutputList->Add( fHOutCentTKLvsV0M);
727 fOutputList->Add( fHOutCentZEMvsZDC);
728 fOutputList->Add( fHOutCentV0MvsCentCL1);
729 fOutputList->Add( fHOutCentV0MvsCentTRK);
730 fOutputList->Add( fHOutCentTRKvsCentCL1);
731 fOutputList->Add( fHOutCentV0MvsCentZDC);
732 fOutputList->Add( fHOutCentV0AvsCentV0C);
733 fOutputList->Add( fHOutCentV0AvsCentTRK);
734 fOutputList->Add( fHOutCentV0AvsCentCND);
735 fOutputList->Add( fHOutCentV0AvsCentCL1);
736 fOutputList->Add( fHOutCentV0CvsCentTRK);
737 fOutputList->Add( fHOutCentV0CvsCentCND);
738 fOutputList->Add( fHOutCentV0CvsCentCL1);
739 fOutputList->Add( fHOutMultV0AC);
740 fOutputList->Add( fHOutMultV0M);
741 fOutputList->Add( fHOutMultV0A);
742 fOutputList->Add( fHOutMultV0C);
743 fOutputList->Add( fHOutMultV0O);
744 fOutputList->Add( fHOutMultFMD);
745 fOutputList->Add( fHOutMultTRK);
746 fOutputList->Add( fHOutMultTKL);
747 fOutputList->Add( fHOutMultCL0);
748 fOutputList->Add( fHOutMultCL1);
749 fOutputList->Add( fHOutMultCND);
750 fOutputList->Add( fHOutMultV0MvsZDN);
751 fOutputList->Add( fHOutMultZEMvsZDN);
752 fOutputList->Add( fHOutMultV0MvsZDC);
753 fOutputList->Add( fHOutMultZEMvsZDC);
754 fOutputList->Add( fHOutMultZEMvsZDCw);
755 fOutputList->Add( fHOutMultV0MvsCL1);
756 fOutputList->Add( fHOutMultV0MvsTRK);
757 fOutputList->Add( fHOutMultTRKvsCL1);
758 fOutputList->Add( fHOutMultV0MvsV0O);
759 fOutputList->Add( fHOutMultV0OvsCL1);
760 fOutputList->Add( fHOutMultV0OvsTRK);
761 fOutputList->Add( fHOutMultCL1vsTKL);
762 fOutputList->Add( fHOutCentV0Mqual1 );
763 fOutputList->Add( fHOutCentTRKqual1 );
764 fOutputList->Add( fHOutCentCL1qual1 );
765 fOutputList->Add( fHOutMultV0MvsCL1qual1);
766 fOutputList->Add( fHOutMultV0MvsTRKqual1);
767 fOutputList->Add( fHOutMultTRKvsCL1qual1);
768 fOutputList->Add( fHOutCentV0Mqual2 );
769 fOutputList->Add( fHOutCentTRKqual2 );
770 fOutputList->Add( fHOutCentCL1qual2 );
771 fOutputList->Add( fHOutMultV0MvsCL1qual2);
772 fOutputList->Add( fHOutMultV0MvsTRKqual2);
773 fOutputList->Add( fHOutMultTRKvsCL1qual2);
774 fOutputList->Add( fHOutQuality );
775 fOutputList->Add( fHOutVertex );
776 fOutputList->Add( fHOutVertexT0 );
778 PostData(1, fOutputList);
781 fTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
784 //________________________________________________________________________
785 void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
787 // Execute analysis for current event:
788 if(fDebug>1) printf(" **** AliCentralitySelectionTask::UserExec() \n");
790 Float_t zncEnergy = 0.; // ZNC Energy
791 Float_t zpcEnergy = 0.; // ZPC Energy
792 Float_t znaEnergy = 0.; // ZNA Energy
793 Float_t zpaEnergy = 0.; // ZPA Energy
794 Float_t zem1Energy = 0.; // ZEM1 Energy
795 Float_t zem2Energy = 0.; // ZEM2 Energy
796 Bool_t zdcEnergyCal = kFALSE; // if zdc is calibrated (in pass2)
798 Int_t nTracks = 0; // no. tracks
799 Int_t nTracklets = 0; // no. tracklets
800 Int_t nClusters[6] = {0}; // no. clusters on 6 ITS layers
801 Int_t nChips[2]; // no. chips on 2 SPD layers
802 Float_t spdCorr =0; // corrected spd2 multiplicity
803 Int_t multCND = 0; // no. tracks (candle condition)
805 Float_t multV0A = 0; // multiplicity from V0 reco side A
806 Float_t multV0C = 0; // multiplicity from V0 reco side C
807 Short_t multV0AOnline = 0; // multiplicity from V0 reco side A
808 Short_t multV0COnline = 0; // multiplicity from V0 reco side C
809 Float_t v0Corr = 0; // corrected V0 multiplicity (used for MC)
811 Float_t multFMDA = 0; // multiplicity from FMD on detector A
812 Float_t multFMDC = 0; // multiplicity from FMD on detector C
814 Float_t zvtx =0; // z-vertex SPD
815 Int_t zvtxNcont =0; // contributors to z-vertex SPD
817 Float_t zvtxT0 =0; // z-vertex T0
820 AliCentrality *esdCent = 0;
822 if(fAnalysisInput.CompareTo("ESD")==0){
824 AliVEvent* event = InputEvent();
825 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
827 AliError("No ESD Event");
833 if (SetupRun(esd)<0) {
834 AliError("Centrality File not available for this run");
838 esdCent = esd->GetCentrality();
841 AliESDVZERO* esdV0 = esd->GetVZEROData();
844 AliError("AliESDVZERO not available");
847 multV0A=esdV0->GetMTotV0A();
848 multV0C=esdV0->GetMTotV0C();
849 v0Corr = multV0A+multV0C;
851 multV0AOnline=esdV0->GetTriggerChargeA();
852 multV0COnline=esdV0->GetTriggerChargeC();
855 const AliESDTZERO* esdT0 = esd->GetESDTZERO();
858 AliError("AliESDTZERO not available");
861 Int_t trig=esdT0->GetT0Trig();
862 Bool_t kT0BB = kFALSE;
863 if(trig&1) kT0BB=kTRUE;
864 zvtxT0=esdT0->GetT0zVertex();
867 // ***** Trigger info
868 fIsSelected = ((esdV0->GetV0ADecision()==1) && (esdV0->GetV0CDecision()==1));
869 TString trigStr(esd->GetFiredTriggerClasses());
872 fCVHN=kFALSE; fCVLN=kFALSE; fCCENT=kFALSE; fCSEMI=kFALSE;
873 fMSL=kFALSE; fMSH=kFALSE; fMUL=kFALSE; fMLL=kFALSE;
874 fEJE=kFALSE; fEGA=kFALSE; fPHS=kFALSE;
876 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI")) && (fIsSelected))
878 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CVHN")) && (fIsSelected))
880 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CVLN")) && (fIsSelected))
882 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CCENT")) && (fIsSelected))
884 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CSEMI")) && (fIsSelected))
887 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1MSL")) && (fIsSelected))
889 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1MSH")) && (fIsSelected))
891 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1MUL")) && (fIsSelected))
893 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1MLL")) && (fIsSelected))
895 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1EJE")) && (fIsSelected))
897 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1EGA")) && (fIsSelected))
899 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1PHS")) && (fIsSelected))
902 fCVHNbit=kFALSE; fCVLNbit=kFALSE; fCCENTbit=kFALSE; fCSEMIbit=kFALSE;
903 if (esdV0->GetTriggerBits() & (1<<8))
905 if (esdV0->GetTriggerBits() & (1<<6))
908 if (kT0BB && fCVHNbit)
910 if (kT0BB && fCVLNbit)
915 const AliESDVertex* vtxESD = esd->GetPrimaryVertexSPD();
916 zvtx = vtxESD->GetZ();
917 zvtxNcont = vtxESD->GetNContributors();
919 // ***** CB info (tracklets, clusters, chips)
920 //nTracks = event->GetNumberOfTracks();
921 nTracks = fTrackCuts ? (Short_t)fTrackCuts->GetReferenceMultiplicity(esd,kTRUE):-1;
922 Short_t nTrTPCcandle = 0;
923 for (Int_t iTracks = 0; iTracks < esd->GetNumberOfTracks(); iTracks++) {
924 AliESDtrack* track = esd->GetTrack(iTracks);
925 if (!track) continue;
926 if (track->Pt() > 0.5 && TMath::Abs(track->Eta()) < 0.8) nTrTPCcandle++;
928 multCND = nTrTPCcandle;
930 const AliMultiplicity *mult = esd->GetMultiplicity();
931 nTracklets = mult->GetNumberOfTracklets();
933 for(Int_t ilay=0; ilay<6; ilay++){
934 nClusters[ilay] = mult->GetNumberOfITSClusters(ilay);
937 for(Int_t ilay=0; ilay<2; ilay++){
938 nChips[ilay] = mult->GetNumberOfFiredChips(ilay);
941 spdCorr = AliESDUtils::GetCorrSPD2(nClusters[1],zvtx);
944 AliESDFMD *fmd = esd->GetFMDData();
945 Float_t totalMultA = 0;
946 Float_t totalMultC = 0;
947 const Float_t fFMDLowCut = 0.4;
949 for(UShort_t det=1;det<=3;det++) {
950 Int_t nRings = (det==1 ? 1 : 2);
951 for (UShort_t ir = 0; ir < nRings; ir++) {
952 Char_t ring = (ir == 0 ? 'I' : 'O');
953 UShort_t nsec = (ir == 0 ? 20 : 40);
954 UShort_t nstr = (ir == 0 ? 512 : 256);
955 for(UShort_t sec =0; sec < nsec; sec++) {
956 for(UShort_t strip = 0; strip < nstr; strip++) {
958 Float_t fmdMult = fmd->Multiplicity(det,ring,sec,strip);
959 if(fmdMult == 0 || fmdMult == AliESDFMD::kInvalidMult) continue;
961 Float_t nParticles=0;
963 if(fmdMult > fFMDLowCut) {
967 if (det<3) totalMultA = totalMultA + nParticles;
968 else totalMultC = totalMultC + nParticles;
974 multFMDA = totalMultA;
975 multFMDC = totalMultC;
978 AliESDZDC *esdZDC = esd->GetESDZDC();
979 zdcEnergyCal = esdZDC->AliESDZDC::TestBit(AliESDZDC::kEnergyCalibratedSignal);
981 zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy());
982 zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy());
983 znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy());
984 zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy());
986 zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy())/8.;
987 zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy())/8.;
988 znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy())/8.;
989 zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy())/8.;
991 zem1Energy = (Float_t) (esdZDC->GetZDCEMEnergy(0))/8.;
992 zem2Energy = (Float_t) (esdZDC->GetZDCEMEnergy(1))/8.;
996 else if(fAnalysisInput.CompareTo("AOD")==0){
997 //AliAODEvent *aod = dynamic_cast<AliAODEvent*> (InputEvent());
999 printf(" AOD analysis not yet implemented!!!\n\n");
1003 // ***** Scaling for MC
1006 v0Corr = Short_t((multV0A+multV0C) * fV0MScaleFactorMC);
1008 // ***** Scaling for Data
1010 v0Corr = Short_t(v0Corr / fV0MScaleFactor);
1011 spdCorr = spdCorr / fSPDScaleFactor;
1012 nTracks = Int_t(nTracks / fTPCScaleFactor);
1015 // ***** Centrality Selection
1016 if(fHtempV0M) fCentV0M = fHtempV0M->GetBinContent(fHtempV0M->FindBin((v0Corr)));
1017 if(fHtempV0A) fCentV0A = fHtempV0A->GetBinContent(fHtempV0A->FindBin((multV0A)));
1018 if(fHtempV0C) fCentV0C = fHtempV0C->GetBinContent(fHtempV0C->FindBin((multV0C)));
1019 if(fHtempFMD) fCentFMD = fHtempFMD->GetBinContent(fHtempFMD->FindBin((multFMDA+multFMDC)));
1020 if(fHtempTRK) fCentTRK = fHtempTRK->GetBinContent(fHtempTRK->FindBin(nTracks));
1021 if(fHtempTKL) fCentTKL = fHtempTKL->GetBinContent(fHtempTKL->FindBin(nTracklets));
1022 if(fHtempCL0) fCentCL0 = fHtempCL0->GetBinContent(fHtempCL0->FindBin(nClusters[0]));
1023 if(fHtempCL1) fCentCL1 = fHtempCL1->GetBinContent(fHtempCL1->FindBin(spdCorr));
1024 if(fHtempCND) fCentCND = fHtempCND->GetBinContent(fHtempCND->FindBin(multCND));
1026 if(fHtempV0MvsFMD) fCentV0MvsFMD = fHtempV0MvsFMD->GetBinContent(fHtempV0MvsFMD->FindBin((multV0A+multV0C)));
1027 if(fHtempTKLvsV0M) fCentTKLvsV0M = fHtempTKLvsV0M->GetBinContent(fHtempTKLvsV0M->FindBin(nTracklets));
1028 if(fHtempZEMvsZDC) fCentZEMvsZDC = fHtempZEMvsZDC->GetBinContent(fHtempZEMvsZDC->FindBin(zem1Energy+zem2Energy,zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1036 if (TMath::Abs(zvtx)>fZVCut || zvtxNcont<1) fQuality += 1;
1038 // ***** outliers, skip in case of MC input
1041 if (IsOutlierV0MSPD(spdCorr, v0Corr, int(fCentV0M))) fQuality += 2;
1043 if (IsOutlierV0MTPC(nTracks, v0Corr, int(fCentV0M))) fQuality += 4;
1045 if (IsOutlierV0MZDC((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
1046 (zdcEnergyCal==kFALSE) ) fQuality += 8;
1047 if (IsOutlierV0MZDCECal((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
1048 (zdcEnergyCal==kTRUE) ) fQuality += 8;
1056 esdCent->SetQuality(fQuality);
1057 esdCent->SetCentralityV0M(fCentV0M);
1058 esdCent->SetCentralityV0A(fCentV0A);
1059 esdCent->SetCentralityV0C(fCentV0C);
1060 esdCent->SetCentralityFMD(fCentFMD);
1061 esdCent->SetCentralityTRK(fCentTRK);
1062 esdCent->SetCentralityTKL(fCentTKL);
1063 esdCent->SetCentralityCL0(fCentCL0);
1064 esdCent->SetCentralityCL1(fCentCL1);
1065 esdCent->SetCentralityCND(fCentCND);
1066 esdCent->SetCentralityV0MvsFMD(fCentV0MvsFMD);
1067 esdCent->SetCentralityTKLvsV0M(fCentTKLvsV0M);
1068 esdCent->SetCentralityZEMvsZDC(fCentZEMvsZDC);
1071 // filling QA histograms
1073 if ((fMB) && (abs(zvtx)<10)) fHOutMultCL1vsTKL->Fill(spdCorr,nTracklets);
1075 if (fCVHN) fHOutCentV0MCVHN->Fill(fCentV0M);
1076 if (fCVLN) fHOutCentV0MCVLN->Fill(fCentV0M);
1077 if (fCCENT) fHOutCentV0MCCENT->Fill(fCentV0M);
1078 if (fCSEMI) fHOutCentV0MCSEMI->Fill(fCentV0M);
1079 if (fMSL) fHOutCentV0MMSL->Fill(fCentV0M);
1080 if (fMSH) fHOutCentV0MMSH->Fill(fCentV0M);
1081 if (fMUL) fHOutCentV0MMUL->Fill(fCentV0M);
1082 if (fMLL) fHOutCentV0MMLL->Fill(fCentV0M);
1083 if (fEJE) fHOutCentV0MEJE->Fill(fCentV0M);
1084 if (fEGA) fHOutCentV0MEGA->Fill(fCentV0M);
1085 if (fPHS) fHOutCentV0MPHS->Fill(fCentV0M);
1087 if (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB) { // fill the QA histograms only for MB events!
1088 fHOutQuality->Fill(fQuality);
1089 fHOutVertex->Fill(zvtx);
1090 fHOutVertexT0->Fill(zvtxT0);
1093 fHOutCentV0M->Fill(fCentV0M);
1094 fHOutCentV0A->Fill(fCentV0A);
1095 fHOutCentV0C->Fill(fCentV0C);
1097 if (fCVHNbit) fHOutCentV0MCVHNinMB->Fill(fCentV0M);
1098 if (fCVLNbit) fHOutCentV0MCVLNinMB->Fill(fCentV0M);
1099 if (fCCENTbit) fHOutCentV0MCCENTinMB->Fill(fCentV0M);
1100 if (fCSEMIbit) fHOutCentV0MCSEMIinMB->Fill(fCentV0M);
1101 if (fMSL) fHOutCentV0MMSLinMB->Fill(fCentV0M);
1102 if (fMSH) fHOutCentV0MMSHinMB->Fill(fCentV0M);
1103 if (fMUL) fHOutCentV0MMULinMB->Fill(fCentV0M);
1104 if (fMLL) fHOutCentV0MMLLinMB->Fill(fCentV0M);
1105 if (fEJE) fHOutCentV0MEJEinMB->Fill(fCentV0M);
1106 if (fEGA) fHOutCentV0MEGAinMB->Fill(fCentV0M);
1107 if (fPHS) fHOutCentV0MPHSinMB->Fill(fCentV0M);
1109 fHOutCentFMD->Fill(fCentFMD);
1110 fHOutCentTRK->Fill(fCentTRK);
1111 fHOutCentTKL->Fill(fCentTKL);
1112 fHOutCentCL0->Fill(fCentCL0);
1113 fHOutCentCL1->Fill(fCentCL1);
1114 fHOutCentCND->Fill(fCentCND);
1115 fHOutCentV0MvsFMD->Fill(fCentV0MvsFMD);
1116 fHOutCentTKLvsV0M->Fill(fCentTKLvsV0M);
1117 fHOutCentZEMvsZDC->Fill(fCentZEMvsZDC);
1118 fHOutCentV0MvsCentCL1->Fill(fCentV0M,fCentCL1);
1119 fHOutCentV0MvsCentTRK->Fill(fCentV0M,fCentTRK);
1120 fHOutCentTRKvsCentCL1->Fill(fCentTRK,fCentCL1);
1121 fHOutCentV0MvsCentZDC->Fill(fCentV0M,fCentZEMvsZDC);
1122 fHOutCentV0AvsCentV0C->Fill(fCentV0A,fCentV0C);
1123 fHOutCentV0AvsCentTRK->Fill(fCentV0A,fCentTRK);
1124 fHOutCentV0AvsCentCND->Fill(fCentV0A,fCentCND);
1125 fHOutCentV0AvsCentCL1->Fill(fCentV0A,fCentCL1);
1126 fHOutCentV0CvsCentTRK->Fill(fCentV0C,fCentTRK);
1127 fHOutCentV0CvsCentCND->Fill(fCentV0C,fCentCND);
1128 fHOutCentV0CvsCentCL1->Fill(fCentV0C,fCentCL1);
1130 fHOutMultV0AC->Fill(multV0A,multV0C);
1131 fHOutMultV0M->Fill(multV0A+multV0C);
1132 fHOutMultV0A->Fill(multV0A);
1133 fHOutMultV0C->Fill(multV0C);
1134 fHOutMultV0O->Fill(multV0AOnline+multV0COnline);
1135 fHOutMultFMD->Fill(multFMDA+multFMDC);
1136 fHOutMultTRK->Fill(nTracks);
1137 fHOutMultTKL->Fill(nTracklets);
1138 fHOutMultCL0->Fill(nClusters[0]);
1139 fHOutMultCL1->Fill(spdCorr);
1140 fHOutMultCND->Fill(multCND);
1142 fHOutMultV0MvsZDN->Fill(v0Corr,(zncEnergy+znaEnergy));
1143 fHOutMultZEMvsZDN->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy));
1144 fHOutMultV0MvsZDC->Fill(v0Corr,(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1145 fHOutMultZEMvsZDC->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1146 fHOutMultZEMvsZDCw->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy),fCentV0M);
1147 fHOutMultV0MvsCL1->Fill(v0Corr,spdCorr);
1148 fHOutMultV0MvsTRK->Fill(v0Corr,nTracks);
1149 fHOutMultTRKvsCL1->Fill(nTracks,spdCorr);
1150 fHOutMultV0MvsV0O->Fill(v0Corr,(multV0AOnline+multV0COnline));
1151 fHOutMultV0OvsCL1->Fill((multV0AOnline+multV0COnline),spdCorr);
1152 fHOutMultV0OvsTRK->Fill((multV0AOnline+multV0COnline),nTracks);
1153 } else if (fQuality%2 == 0) {
1154 fHOutCentV0Mqual1->Fill(fCentV0M);
1155 fHOutCentTRKqual1->Fill(fCentTRK);
1156 fHOutCentCL1qual1->Fill(fCentCL1);
1157 fHOutMultV0MvsCL1qual1->Fill(v0Corr,spdCorr);
1158 fHOutMultV0MvsTRKqual1->Fill(v0Corr,nTracks);
1159 fHOutMultTRKvsCL1qual1->Fill(nTracks,spdCorr);
1161 fHOutCentV0Mqual2->Fill(fCentV0M);
1162 fHOutCentTRKqual2->Fill(fCentTRK);
1163 fHOutCentCL1qual2->Fill(fCentCL1);
1164 fHOutMultV0MvsCL1qual2->Fill(v0Corr,spdCorr);
1165 fHOutMultV0MvsTRKqual2->Fill(v0Corr,nTracks);
1166 fHOutMultTRKvsCL1qual2->Fill(nTracks,spdCorr);
1169 PostData(1, fOutputList);
1172 //________________________________________________________________________
1173 void AliCentralitySelectionTask::Terminate(Option_t */*option*/)
1175 // Terminate analysis
1177 //________________________________________________________________________
1178 Int_t AliCentralitySelectionTask::SetupRun(const AliESDEvent* const esd)
1180 // Setup files for run
1185 // check if something to be done
1186 if (fCurrentRun == esd->GetRunNumber())
1189 fCurrentRun = esd->GetRunNumber();
1191 TString fileName =(Form("%s/COMMON/CENTRALITY/data/centrality.root", AliAnalysisManager::GetOADBPath()));
1192 AliInfo(Form("Setup Centrality Selection for run %d with file %s\n",fCurrentRun,fileName.Data()));
1194 AliOADBContainer *con = new AliOADBContainer("OADB");
1195 con->InitFromFile(fileName,"Centrality");
1197 AliOADBCentrality* centOADB = 0;
1198 centOADB = (AliOADBCentrality*)(con->GetObject(fCurrentRun));
1200 AliWarning(Form("Centrality OADB does not exist for run %d, using Default \n",fCurrentRun ));
1201 centOADB = (AliOADBCentrality*)(con->GetDefaultObject("oadbDefault"));
1205 fUseScaling = centOADB->UseScaling();
1206 fUseCleaning = centOADB->UseCleaning();
1209 fZVCut = centOADB->ZVCut();
1210 fOutliersCut = centOADB->OutliersCut();
1212 // centrality histos
1213 fHtempV0M = centOADB->V0hist();
1214 fHtempV0A = centOADB->V0Ahist();
1215 fHtempV0C = centOADB->V0Chist();
1216 fHtempTRK = centOADB->TPChist();
1217 fHtempCL1 = centOADB->SPDhist();
1218 fHtempCND = centOADB->CNDhist();
1219 fHtempZEMvsZDC = centOADB->ZEMvsZDChist();
1221 TString path = gSystem->ExpandPathName(fileName.Data());
1222 if (!fHtempV0M) AliWarning(Form("Calibration for V0M does not exist in %s", path.Data()));
1223 if (!fHtempV0A) AliWarning(Form("Calibration for V0A does not exist in %s", path.Data()));
1224 if (!fHtempV0C) AliWarning(Form("Calibration for V0C does not exist in %s", path.Data()));
1225 if (!fHtempTRK) AliWarning(Form("Calibration for TRK does not exist in %s", path.Data()));
1226 if (!fHtempCL1) AliWarning(Form("Calibration for CL1 does not exist in %s", path.Data()));
1227 if (!fHtempCND) AliWarning(Form("Calibration for CND does not exist in %s", path.Data()));
1228 if (!fHtempZEMvsZDC) AliWarning(Form("Calibration for ZEMvsZDC does not exist in %s", path.Data()));
1231 fV0MScaleFactor = centOADB->V0MScaleFactor();
1232 fSPDScaleFactor = centOADB->SPDScaleFactor();
1233 fTPCScaleFactor = centOADB->TPCScaleFactor();
1234 fV0MScaleFactorMC = centOADB->V0MScaleFactorMC();
1236 // outliers parameters
1237 fV0MSPDOutlierPar0 = centOADB->V0MSPDOutlierPar0();
1238 fV0MSPDOutlierPar1 = centOADB->V0MSPDOutlierPar1();
1239 fV0MTPCOutlierPar0 = centOADB->V0MTPCOutlierPar0();
1240 fV0MTPCOutlierPar1 = centOADB->V0MTPCOutlierPar1();
1242 fV0MSPDSigmaOutlierPar0 = centOADB->V0MSPDSigmaOutlierPar0();
1243 fV0MSPDSigmaOutlierPar1 = centOADB->V0MSPDSigmaOutlierPar1();
1244 fV0MSPDSigmaOutlierPar2 = centOADB->V0MSPDSigmaOutlierPar2();
1245 fV0MTPCSigmaOutlierPar0 = centOADB->V0MTPCSigmaOutlierPar0();
1246 fV0MTPCSigmaOutlierPar1 = centOADB->V0MTPCSigmaOutlierPar1();
1247 fV0MTPCSigmaOutlierPar2 = centOADB->V0MTPCSigmaOutlierPar2();
1249 fV0MZDCOutlierPar0 = centOADB->V0MZDCOutlierPar0();
1250 fV0MZDCOutlierPar1 = centOADB->V0MZDCOutlierPar1();
1251 fV0MZDCEcalOutlierPar0 = centOADB->V0MZDCEcalOutlierPar0();
1252 fV0MZDCEcalOutlierPar1 = centOADB->V0MZDCEcalOutlierPar1();
1261 //________________________________________________________________________
1262 Bool_t AliCentralitySelectionTask::IsOutlierV0MSPD(Float_t spd, Float_t v0, Int_t cent) const
1265 Float_t val = fV0MSPDOutlierPar0 + fV0MSPDOutlierPar1 * v0;
1266 Float_t spdSigma = fV0MSPDSigmaOutlierPar0 + fV0MSPDSigmaOutlierPar1*cent + fV0MSPDSigmaOutlierPar2*cent*cent;
1267 if ( TMath::Abs(spd-val) > fOutliersCut*spdSigma )
1273 //________________________________________________________________________
1274 Bool_t AliCentralitySelectionTask::IsOutlierV0MTPC(Int_t tracks, Float_t v0, Int_t cent) const
1277 Float_t val = fV0MTPCOutlierPar0 + fV0MTPCOutlierPar1 * v0;
1278 Float_t tpcSigma = fV0MTPCSigmaOutlierPar0 + fV0MTPCSigmaOutlierPar1*cent + fV0MTPCSigmaOutlierPar2*cent*cent;
1279 if ( TMath::Abs(tracks-val) > fOutliersCut*tpcSigma )
1285 //________________________________________________________________________
1286 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDC(Float_t zdc, Float_t v0) const
1289 Float_t val = fV0MZDCOutlierPar0 + fV0MZDCOutlierPar1 * v0;
1296 //________________________________________________________________________
1297 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDCECal(Float_t zdc, Float_t v0) const
1300 Float_t val = fV0MZDCEcalOutlierPar0 + fV0MZDCEcalOutlierPar1 * v0;