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 "AliGenDPMjetEventHeader.h"
72 #include "AliGenCocktailEventHeader.h"
73 #include "AliPhysicsSelectionTask.h"
74 #include "AliPhysicsSelection.h"
75 #include "AliBackgroundSelection.h"
76 #include "AliESDUtils.h"
78 ClassImp(AliCentralitySelectionTask)
81 //________________________________________________________________________
82 AliCentralitySelectionTask::AliCentralitySelectionTask():
84 fAnalysisInput("ESD"),
94 fV0MSPDOutlierPar0(0),
95 fV0MSPDOutlierPar1(0),
96 fV0MTPCOutlierPar0(0),
97 fV0MTPCOutlierPar1(0),
98 fV0MSPDSigmaOutlierPar0(0),
99 fV0MSPDSigmaOutlierPar1(0),
100 fV0MSPDSigmaOutlierPar2(0),
101 fV0MTPCSigmaOutlierPar0(0),
102 fV0MTPCSigmaOutlierPar1(0),
103 fV0MTPCSigmaOutlierPar2(0),
104 fV0MZDCOutlierPar0(0),
105 fV0MZDCOutlierPar1(0),
106 fV0MZDCEcalOutlierPar0(0),
107 fV0MZDCEcalOutlierPar1(0),
110 fEsdTrackCutsExtra1(0),
111 fEsdTrackCutsExtra2(0),
186 fHOutCentV0MCVHNinMB(0),
187 fHOutCentV0MCVLNinMB(0),
188 fHOutCentV0MCCENT(0),
189 fHOutCentV0MCSEMI(0),
190 fHOutCentV0MCCENTinMB(0),
191 fHOutCentV0MCSEMIinMB(0),
199 fHOutCentV0MMSLinMB(0),
200 fHOutCentV0MMSHinMB(0),
201 fHOutCentV0MMULinMB(0),
202 fHOutCentV0MMLLinMB(0),
203 fHOutCentV0MEJEinMB(0),
204 fHOutCentV0MEGAinMB(0),
205 fHOutCentV0MPHSinMB(0),
214 fHOutCentV0MvsFMD(0),
215 fHOutCentTKLvsV0M(0),
216 fHOutCentZEMvsZDC(0),
217 fHOutCentV0MvsCentCL1(0),
218 fHOutCentV0MvsCentTRK(0),
219 fHOutCentTRKvsCentCL1(0),
220 fHOutCentV0MvsCentZDC(0),
221 fHOutCentV0AvsCentV0C(0),
222 fHOutCentV0AvsCentTRK(0),
223 fHOutCentV0AvsCentCND(0),
224 fHOutCentV0AvsCentCL1(0),
225 fHOutCentV0CvsCentTRK(0),
226 fHOutCentV0CvsCentCND(0),
227 fHOutCentV0CvsCentCL1(0),
228 fHOutCentNPAvsCentV0A(0),
229 fHOutCentNPAvsCentV0C(0),
230 fHOutCentNPAvsCentTRK(0),
231 fHOutCentNPAvsCentCND(0),
232 fHOutCentNPAvsCentCL1(0),
233 fHOutCentZNAvsCentV0A(0),
234 fHOutCentZNAvsCentV0C(0),
235 fHOutCentZNAvsCentTRK(0),
236 fHOutCentZNAvsCentCND(0),
237 fHOutCentZNAvsCentCL1(0),
255 fHOutMultV0MvsZDN(0),
256 fHOutMultZEMvsZDN(0),
257 fHOutMultV0MvsZDC(0),
258 fHOutMultZEMvsZDC(0),
259 fHOutMultZEMvsZDCw(0),
260 fHOutMultV0MvsCL1(0),
261 fHOutMultV0MvsTRK(0),
262 fHOutMultTRKvsCL1(0),
263 fHOutMultV0MvsV0O(0),
264 fHOutMultV0OvsCL1(0),
265 fHOutMultV0OvsTRK(0),
266 fHOutMultCL1vsTKL(0),
267 fHOutCentV0Mqual1(0),
268 fHOutCentTRKqual1(0),
269 fHOutCentCL1qual1(0),
270 fHOutMultV0MvsCL1qual1(0),
271 fHOutMultV0MvsTRKqual1(0),
272 fHOutMultTRKvsCL1qual1(0),
273 fHOutCentV0Mqual2(0),
274 fHOutCentTRKqual2(0),
275 fHOutCentCL1qual2(0),
276 fHOutMultV0MvsCL1qual2(0),
277 fHOutMultV0MvsTRKqual2(0),
278 fHOutMultTRKvsCL1qual2(0),
283 // Default constructor
284 AliInfo("Centrality Selection enabled.");
289 fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO.,AliESDTZERO."
290 ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks ";
293 //________________________________________________________________________
294 AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
295 AliAnalysisTaskSE(name),
296 fAnalysisInput("ESD"),
305 fV0MScaleFactorMC(0),
306 fV0MSPDOutlierPar0(0),
307 fV0MSPDOutlierPar1(0),
308 fV0MTPCOutlierPar0(0),
309 fV0MTPCOutlierPar1(0),
310 fV0MSPDSigmaOutlierPar0(0),
311 fV0MSPDSigmaOutlierPar1(0),
312 fV0MSPDSigmaOutlierPar2(0),
313 fV0MTPCSigmaOutlierPar0(0),
314 fV0MTPCSigmaOutlierPar1(0),
315 fV0MTPCSigmaOutlierPar2(0),
316 fV0MZDCOutlierPar0(0),
317 fV0MZDCOutlierPar1(0),
318 fV0MZDCEcalOutlierPar0(0),
319 fV0MZDCEcalOutlierPar1(0),
322 fEsdTrackCutsExtra1(0),
323 fEsdTrackCutsExtra2(0),
398 fHOutCentV0MCVHNinMB(0),
399 fHOutCentV0MCVLNinMB(0),
400 fHOutCentV0MCCENT(0),
401 fHOutCentV0MCSEMI(0),
402 fHOutCentV0MCCENTinMB(0),
403 fHOutCentV0MCSEMIinMB(0),
411 fHOutCentV0MMSLinMB(0),
412 fHOutCentV0MMSHinMB(0),
413 fHOutCentV0MMULinMB(0),
414 fHOutCentV0MMLLinMB(0),
415 fHOutCentV0MEJEinMB(0),
416 fHOutCentV0MEGAinMB(0),
417 fHOutCentV0MPHSinMB(0),
426 fHOutCentV0MvsFMD(0),
427 fHOutCentTKLvsV0M(0),
428 fHOutCentZEMvsZDC(0),
429 fHOutCentV0MvsCentCL1(0),
430 fHOutCentV0MvsCentTRK(0),
431 fHOutCentTRKvsCentCL1(0),
432 fHOutCentV0MvsCentZDC(0),
433 fHOutCentV0AvsCentV0C(0),
434 fHOutCentV0AvsCentTRK(0),
435 fHOutCentV0AvsCentCND(0),
436 fHOutCentV0AvsCentCL1(0),
437 fHOutCentV0CvsCentTRK(0),
438 fHOutCentV0CvsCentCND(0),
439 fHOutCentV0CvsCentCL1(0),
440 fHOutCentNPAvsCentV0A(0),
441 fHOutCentNPAvsCentV0C(0),
442 fHOutCentNPAvsCentTRK(0),
443 fHOutCentNPAvsCentCND(0),
444 fHOutCentNPAvsCentCL1(0),
445 fHOutCentZNAvsCentV0A(0),
446 fHOutCentZNAvsCentV0C(0),
447 fHOutCentZNAvsCentTRK(0),
448 fHOutCentZNAvsCentCND(0),
449 fHOutCentZNAvsCentCL1(0),
467 fHOutMultV0MvsZDN(0),
468 fHOutMultZEMvsZDN(0),
469 fHOutMultV0MvsZDC(0),
470 fHOutMultZEMvsZDC(0),
471 fHOutMultZEMvsZDCw(0),
472 fHOutMultV0MvsCL1(0),
473 fHOutMultV0MvsTRK(0),
474 fHOutMultTRKvsCL1(0),
475 fHOutMultV0MvsV0O(0),
476 fHOutMultV0OvsCL1(0),
477 fHOutMultV0OvsTRK(0),
478 fHOutMultCL1vsTKL(0),
479 fHOutCentV0Mqual1(0),
480 fHOutCentTRKqual1(0),
481 fHOutCentCL1qual1(0),
482 fHOutMultV0MvsCL1qual1(0),
483 fHOutMultV0MvsTRKqual1(0),
484 fHOutMultTRKvsCL1qual1(0),
485 fHOutCentV0Mqual2(0),
486 fHOutCentTRKqual2(0),
487 fHOutCentCL1qual2(0),
488 fHOutMultV0MvsCL1qual2(0),
489 fHOutMultV0MvsTRKqual2(0),
490 fHOutMultTRKvsCL1qual2(0),
495 // Default constructor
496 AliInfo("Centrality Selection enabled.");
497 //DefineOutput(1, TList::Class());
501 fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO.,AliESDTZERO."
502 ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks ";
505 //________________________________________________________________________
506 AliCentralitySelectionTask& AliCentralitySelectionTask::operator=(const AliCentralitySelectionTask& c)
508 // Assignment operator
510 AliAnalysisTaskSE::operator=(c);
515 //________________________________________________________________________
516 AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelectionTask& ana):
517 AliAnalysisTaskSE(ana),
518 fAnalysisInput(ana.fAnalysisInput),
519 fIsMCInput(ana.fIsMCInput),
520 fCurrentRun(ana.fCurrentRun),
521 fUseScaling(ana.fUseScaling),
522 fUseCleaning(ana.fUseCleaning),
523 fFillHistos(ana.fFillHistos),
524 fV0MScaleFactor(ana.fV0MScaleFactor),
525 fSPDScaleFactor(ana.fSPDScaleFactor),
526 fTPCScaleFactor(ana.fTPCScaleFactor),
527 fV0MScaleFactorMC(ana.fV0MScaleFactorMC),
528 fV0MSPDOutlierPar0(ana.fV0MSPDOutlierPar0),
529 fV0MSPDOutlierPar1(ana.fV0MSPDOutlierPar1),
530 fV0MTPCOutlierPar0(ana.fV0MTPCOutlierPar0),
531 fV0MTPCOutlierPar1(ana.fV0MTPCOutlierPar1),
532 fV0MSPDSigmaOutlierPar0(ana.fV0MSPDSigmaOutlierPar0),
533 fV0MSPDSigmaOutlierPar1(ana.fV0MSPDSigmaOutlierPar1),
534 fV0MSPDSigmaOutlierPar2(ana.fV0MSPDSigmaOutlierPar2),
535 fV0MTPCSigmaOutlierPar0(ana.fV0MTPCSigmaOutlierPar0),
536 fV0MTPCSigmaOutlierPar1(ana.fV0MTPCSigmaOutlierPar1),
537 fV0MTPCSigmaOutlierPar2(ana.fV0MTPCSigmaOutlierPar2),
538 fV0MZDCOutlierPar0(ana.fV0MZDCOutlierPar0),
539 fV0MZDCOutlierPar1(ana.fV0MZDCOutlierPar1),
540 fV0MZDCEcalOutlierPar0(ana.fV0MZDCEcalOutlierPar0),
541 fV0MZDCEcalOutlierPar1(ana.fV0MZDCEcalOutlierPar1),
542 fTrackCuts(ana.fTrackCuts),
543 fEsdTrackCuts(ana.fEsdTrackCuts),
544 fEsdTrackCutsExtra1(ana.fEsdTrackCutsExtra1),
545 fEsdTrackCutsExtra2(ana.fEsdTrackCutsExtra2),
547 fOutliersCut(ana.fOutliersCut),
548 fQuality(ana.fQuality),
549 fIsSelected(ana.fIsSelected),
560 fCVHNbit(ana.fCVHNbit),
561 fCVLNbit(ana.fCVLNbit),
564 fCCENTbit(ana.fCCENTbit),
565 fCSEMIbit(ana.fCSEMIbit),
566 fCentV0M(ana.fCentV0M),
567 fCentV0A(ana.fCentV0A),
568 fCentV0C(ana.fCentV0C),
569 fCentFMD(ana.fCentFMD),
570 fCentTRK(ana.fCentTRK),
571 fCentTKL(ana.fCentTKL),
572 fCentCL0(ana.fCentCL0),
573 fCentCL1(ana.fCentCL1),
574 fCentCND(ana.fCentCND),
575 fCentZNA(ana.fCentZNA),
576 fCentNPA(ana.fCentNPA),
577 fCentV0MvsFMD(ana.fCentV0MvsFMD),
578 fCentTKLvsV0M(ana.fCentTKLvsV0M),
579 fCentZEMvsZDC(ana.fCentZEMvsZDC),
580 fCentV0Mtrue(ana.fCentV0Mtrue),
581 fCentV0Atrue(ana.fCentV0Atrue),
582 fCentV0Ctrue(ana.fCentV0Ctrue),
583 fCentFMDtrue(ana.fCentFMDtrue),
584 fCentTRKtrue(ana.fCentTRKtrue),
585 fCentTKLtrue(ana.fCentTKLtrue),
586 fCentCL0true(ana.fCentCL0true),
587 fCentCL1true(ana.fCentCL1true),
588 fCentCNDtrue(ana.fCentCNDtrue),
589 fCentZNAtrue(ana.fCentZNAtrue),
590 fHtempV0M(ana.fHtempV0M),
591 fHtempV0A(ana.fHtempV0A),
592 fHtempV0C(ana.fHtempV0C),
593 fHtempFMD(ana.fHtempFMD),
594 fHtempTRK(ana.fHtempTRK),
595 fHtempTKL(ana.fHtempTKL),
596 fHtempCL0(ana.fHtempCL0),
597 fHtempCL1(ana.fHtempCL1),
598 fHtempCND(ana.fHtempCND),
599 fHtempZNA(ana.fHtempZNA),
600 fHtempV0MvsFMD(ana.fHtempV0MvsFMD),
601 fHtempTKLvsV0M(ana.fHtempTKLvsV0M),
602 fHtempZEMvsZDC(ana.fHtempZEMvsZDC),
603 fHtempNPA(ana.fHtempNPA),
604 fHtempV0Mtrue(ana.fHtempV0Mtrue),
605 fHtempV0Atrue(ana.fHtempV0Atrue),
606 fHtempV0Ctrue(ana.fHtempV0Ctrue),
607 fHtempFMDtrue(ana.fHtempFMDtrue),
608 fHtempTRKtrue(ana.fHtempTRKtrue),
609 fHtempTKLtrue(ana.fHtempTKLtrue),
610 fHtempCL0true(ana.fHtempCL0true),
611 fHtempCL1true(ana.fHtempCL1true),
612 fHtempCNDtrue(ana.fHtempCNDtrue),
613 fHtempZNAtrue(ana.fHtempZNAtrue),
614 fOutputList(ana.fOutputList),
615 fHOutCentV0M(ana.fHOutCentV0M),
616 fHOutCentV0A(ana.fHOutCentV0A),
617 fHOutCentV0C(ana.fHOutCentV0C),
618 fHOutCentV0MCVHN(ana.fHOutCentV0MCVHN),
619 fHOutCentV0MCVLN(ana.fHOutCentV0MCVLN),
620 fHOutCentV0MCVHNinMB(ana.fHOutCentV0MCVHNinMB),
621 fHOutCentV0MCVLNinMB(ana.fHOutCentV0MCVLNinMB),
622 fHOutCentV0MCCENT(ana.fHOutCentV0MCCENT),
623 fHOutCentV0MCSEMI(ana.fHOutCentV0MCSEMI),
624 fHOutCentV0MCCENTinMB(ana.fHOutCentV0MCCENTinMB),
625 fHOutCentV0MCSEMIinMB(ana.fHOutCentV0MCSEMIinMB),
626 fHOutCentV0MMSL(ana.fHOutCentV0MMSL),
627 fHOutCentV0MMSH(ana.fHOutCentV0MMSH),
628 fHOutCentV0MMUL(ana.fHOutCentV0MMUL),
629 fHOutCentV0MMLL(ana.fHOutCentV0MMLL),
630 fHOutCentV0MEJE(ana.fHOutCentV0MEJE),
631 fHOutCentV0MEGA(ana.fHOutCentV0MEGA),
632 fHOutCentV0MPHS(ana.fHOutCentV0MPHS),
633 fHOutCentV0MMSLinMB(ana.fHOutCentV0MMSLinMB),
634 fHOutCentV0MMSHinMB(ana.fHOutCentV0MMSHinMB),
635 fHOutCentV0MMULinMB(ana.fHOutCentV0MMULinMB),
636 fHOutCentV0MMLLinMB(ana.fHOutCentV0MMLLinMB),
637 fHOutCentV0MEJEinMB(ana.fHOutCentV0MEJEinMB),
638 fHOutCentV0MEGAinMB(ana.fHOutCentV0MEGAinMB),
639 fHOutCentV0MPHSinMB(ana.fHOutCentV0MPHSinMB),
640 fHOutCentFMD(ana.fHOutCentFMD),
641 fHOutCentTRK(ana.fHOutCentTRK),
642 fHOutCentTKL(ana.fHOutCentTKL),
643 fHOutCentCL0(ana.fHOutCentCL0),
644 fHOutCentCL1(ana.fHOutCentCL1),
645 fHOutCentCND(ana.fHOutCentCND),
646 fHOutCentNPA(ana.fHOutCentNPA),
647 fHOutCentZNA(ana.fHOutCentZNA),
648 fHOutCentV0MvsFMD(ana.fHOutCentV0MvsFMD),
649 fHOutCentTKLvsV0M(ana.fHOutCentTKLvsV0M),
650 fHOutCentZEMvsZDC(ana.fHOutCentZEMvsZDC),
651 fHOutCentV0MvsCentCL1(ana.fHOutCentV0MvsCentCL1),
652 fHOutCentV0MvsCentTRK(ana.fHOutCentV0MvsCentTRK),
653 fHOutCentTRKvsCentCL1(ana.fHOutCentTRKvsCentCL1),
654 fHOutCentV0MvsCentZDC(ana.fHOutCentV0MvsCentZDC),
655 fHOutCentV0AvsCentV0C(ana.fHOutCentV0AvsCentV0C),
656 fHOutCentV0AvsCentTRK(ana.fHOutCentV0AvsCentTRK),
657 fHOutCentV0AvsCentCND(ana.fHOutCentV0AvsCentCND),
658 fHOutCentV0AvsCentCL1(ana.fHOutCentV0AvsCentCL1),
659 fHOutCentV0CvsCentTRK(ana.fHOutCentV0CvsCentTRK),
660 fHOutCentV0CvsCentCND(ana.fHOutCentV0CvsCentCND),
661 fHOutCentV0CvsCentCL1(ana.fHOutCentV0CvsCentCL1),
662 fHOutCentNPAvsCentV0A(ana.fHOutCentNPAvsCentV0A),
663 fHOutCentNPAvsCentV0C(ana.fHOutCentNPAvsCentV0C),
664 fHOutCentNPAvsCentTRK(ana.fHOutCentNPAvsCentTRK),
665 fHOutCentNPAvsCentCND(ana.fHOutCentNPAvsCentCND),
666 fHOutCentNPAvsCentCL1(ana.fHOutCentNPAvsCentCL1),
667 fHOutCentZNAvsCentV0A(ana.fHOutCentZNAvsCentV0A),
668 fHOutCentZNAvsCentV0C(ana.fHOutCentZNAvsCentV0C),
669 fHOutCentZNAvsCentTRK(ana.fHOutCentZNAvsCentTRK),
670 fHOutCentZNAvsCentCND(ana.fHOutCentZNAvsCentCND),
671 fHOutCentZNAvsCentCL1(ana.fHOutCentZNAvsCentCL1),
672 fHOutMultV0AC(ana.fHOutMultV0AC),
673 fHOutMultV0M(ana.fHOutMultV0M),
674 fHOutMultV0A(ana.fHOutMultV0A),
675 fHOutMultV0C(ana.fHOutMultV0C),
676 fHOutMultV0Mnc(ana.fHOutMultV0Mnc),
677 fHOutMultV0Anc(ana.fHOutMultV0Anc),
678 fHOutMultV0Cnc(ana.fHOutMultV0Cnc),
679 fHOutMultV0O(ana.fHOutMultV0O),
680 fHOutMultV0Cells(ana.fHOutMultV0Cells),
681 fHOutMultFMD(ana.fHOutMultFMD),
682 fHOutMultTRK(ana.fHOutMultTRK),
683 fHOutMultTKL(ana.fHOutMultTKL),
684 fHOutMultCL0(ana.fHOutMultCL0),
685 fHOutMultCL1(ana.fHOutMultCL1),
686 fHOutMultCND(ana.fHOutMultCND),
687 fHOutMultNPA(ana.fHOutMultNPA),
688 fHOutMultZNA(ana.fHOutMultZNA),
689 fHOutMultV0MvsZDN(ana.fHOutMultV0MvsZDN),
690 fHOutMultZEMvsZDN(ana.fHOutMultZEMvsZDN),
691 fHOutMultV0MvsZDC(ana.fHOutMultV0MvsZDC),
692 fHOutMultZEMvsZDC(ana.fHOutMultZEMvsZDC),
693 fHOutMultZEMvsZDCw(ana.fHOutMultZEMvsZDCw),
694 fHOutMultV0MvsCL1(ana.fHOutMultV0MvsCL1),
695 fHOutMultV0MvsTRK(ana.fHOutMultV0MvsTRK),
696 fHOutMultTRKvsCL1(ana.fHOutMultTRKvsCL1),
697 fHOutMultV0MvsV0O(ana.fHOutMultV0MvsV0O),
698 fHOutMultV0OvsCL1(ana.fHOutMultV0OvsCL1),
699 fHOutMultV0OvsTRK(ana.fHOutMultV0OvsTRK),
700 fHOutMultCL1vsTKL(ana.fHOutMultCL1vsTKL),
701 fHOutCentV0Mqual1(ana.fHOutCentV0Mqual1),
702 fHOutCentTRKqual1(ana.fHOutCentTRKqual1),
703 fHOutCentCL1qual1(ana.fHOutCentCL1qual1),
704 fHOutMultV0MvsCL1qual1(ana.fHOutMultV0MvsCL1qual1),
705 fHOutMultV0MvsTRKqual1(ana.fHOutMultV0MvsTRKqual1),
706 fHOutMultTRKvsCL1qual1(ana.fHOutMultTRKvsCL1qual1),
707 fHOutCentV0Mqual2(ana.fHOutCentV0Mqual2),
708 fHOutCentTRKqual2(ana.fHOutCentTRKqual2),
709 fHOutCentCL1qual2(ana.fHOutCentCL1qual2),
710 fHOutMultV0MvsCL1qual2(ana.fHOutMultV0MvsCL1qual2),
711 fHOutMultV0MvsTRKqual2(ana.fHOutMultV0MvsTRKqual2),
712 fHOutMultTRKvsCL1qual2(ana.fHOutMultTRKvsCL1qual2),
713 fHOutQuality(ana.fHOutQuality),
714 fHOutVertex(ana.fHOutVertex),
715 fHOutVertexT0(ana.fHOutVertexT0)
721 //________________________________________________________________________
722 AliCentralitySelectionTask::~AliCentralitySelectionTask()
725 if (fOutputList && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) delete fOutputList;
726 if (fTrackCuts) delete fTrackCuts;
727 if (fEsdTrackCuts) delete fEsdTrackCuts;
728 if (fEsdTrackCutsExtra1) delete fEsdTrackCutsExtra1;
729 if (fEsdTrackCutsExtra2) delete fEsdTrackCutsExtra2;
732 //________________________________________________________________________
733 void AliCentralitySelectionTask::UserCreateOutputObjects()
735 // Create the output containers
736 if(fDebug>1) printf("AnalysisCentralitySelectionTask::UserCreateOutputObjects() \n");
737 AliLog::SetClassDebugLevel("AliCentralitySelectionTask", AliLog::kInfo);
740 fOutputList = new TList();
741 fOutputList->SetOwner();
742 fHOutCentV0M = new TH1F("fHOutCentV0M","fHOutCentV0M; Centrality V0",505,0,101);
743 fHOutCentV0A = new TH1F("fHOutCentV0A","fHOutCentV0A; Centrality V0A",505,0,101);
744 fHOutCentV0C = new TH1F("fHOutCentV0C","fHOutCentV0C; Centrality V0C",505,0,101);
745 fHOutCentV0MCVHN= new TH1F("fHOutCentV0M_CVHN","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
746 fHOutCentV0MCVLN= new TH1F("fHOutCentV0M_CVLN","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
747 fHOutCentV0MCVHNinMB= new TH1F("fHOutCentV0M_CVHNinMB","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
748 fHOutCentV0MCVLNinMB= new TH1F("fHOutCentV0M_CVLNinMB","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
749 fHOutCentV0MCCENT= new TH1F("fHOutCentV0M_CCENT","fHOutCentV0M_CCENT; Centrality V0",505,0,101);
750 fHOutCentV0MCSEMI= new TH1F("fHOutCentV0M_CSEMI","fHOutCentV0M_CSEMI; Centrality V0",505,0,101);
751 fHOutCentV0MCCENTinMB= new TH1F("fHOutCentV0M_CCENTinMB","fHOutCentV0M_CCENT; Centrality V0",505,0,101);
752 fHOutCentV0MCSEMIinMB= new TH1F("fHOutCentV0M_CSEMIinMB","fHOutCentV0M_CSEMI; Centrality V0",505,0,101);
753 fHOutCentV0MMSL= new TH1F("fHOutCentV0M_MSL","fHOutCentV0M_MSL; Centrality V0",505,0,101);
754 fHOutCentV0MMSH= new TH1F("fHOutCentV0M_MSH","fHOutCentV0M_MSH; Centrality V0",505,0,101);
755 fHOutCentV0MMUL= new TH1F("fHOutCentV0M_MUL","fHOutCentV0M_MUL; Centrality V0",505,0,101);
756 fHOutCentV0MMLL= new TH1F("fHOutCentV0M_MLL","fHOutCentV0M_MLL; Centrality V0",505,0,101);
757 fHOutCentV0MEJE= new TH1F("fHOutCentV0M_EJE","fHOutCentV0M_EJE; Centrality V0",505,0,101);
758 fHOutCentV0MEGA= new TH1F("fHOutCentV0M_EGA","fHOutCentV0M_EGA; Centrality V0",505,0,101);
759 fHOutCentV0MPHS= new TH1F("fHOutCentV0M_PHS","fHOutCentV0M_PHS; Centrality V0",505,0,101);
760 fHOutCentV0MMSLinMB= new TH1F("fHOutCentV0M_MSLinMB","fHOutCentV0M_MSLinMB; Centrality V0",505,0,101);
761 fHOutCentV0MMSHinMB= new TH1F("fHOutCentV0M_MSHinMB","fHOutCentV0M_MSHinMB; Centrality V0",505,0,101);
762 fHOutCentV0MMULinMB= new TH1F("fHOutCentV0M_MULinMB","fHOutCentV0M_MULinMB; Centrality V0",505,0,101);
763 fHOutCentV0MMLLinMB= new TH1F("fHOutCentV0M_MLLinMB","fHOutCentV0M_MLLinMB; Centrality V0",505,0,101);
764 fHOutCentV0MEJEinMB= new TH1F("fHOutCentV0M_EJEinMB","fHOutCentV0M_EJEinMB; Centrality V0",505,0,101);
765 fHOutCentV0MEGAinMB= new TH1F("fHOutCentV0M_EGAinMB","fHOutCentV0M_EGAinMB; Centrality V0",505,0,101);
766 fHOutCentV0MPHSinMB= new TH1F("fHOutCentV0M_PHSinMB","fHOutCentV0M_PHSinMB; Centrality V0",505,0,101);
767 fHOutCentFMD = new TH1F("fHOutCentFMD","fHOutCentFMD; Centrality FMD",505,0,101);
768 fHOutCentTRK = new TH1F("fHOutCentTRK","fHOutCentTRK; Centrality TPC",505,0,101);
769 fHOutCentTKL = new TH1F("fHOutCentTKL","fHOutCentTKL; Centrality tracklets",505,0,101);
770 fHOutCentCL0 = new TH1F("fHOutCentCL0","fHOutCentCL0; Centrality SPD inner",505,0,101);
771 fHOutCentCL1 = new TH1F("fHOutCentCL1","fHOutCentCL1; Centrality SPD outer",505,0,101);
772 fHOutCentCND = new TH1F("fHOutCentCND","fHOutCentCND; Centrality candle",505,0,101);
773 fHOutCentNPA = new TH1F("fHOutCentNPA","fHOutCentNPA; Centrality Npart",505,0,101);
774 fHOutCentZNA = new TH1F("fHOutCentZNA","fHOutCentZNA; Centrality ZNA",505,0,101);
775 fHOutCentV0MvsFMD= new TH1F("fHOutCentV0MvsFMD","fHOutCentV0MvsFMD; Centrality V0 vs FMD",505,0,101);
776 fHOutCentTKLvsV0M= new TH1F("fHOutCentTKLvsV0M","fHOutCentTKLvsV0M; Centrality tracklets vs V0",505,0,101);
777 fHOutCentZEMvsZDC= new TH1F("fHOutCentZEMvsZDC","fHOutCentZEMvsZDC; Centrality ZEM vs ZDC",505,0,101);
778 fHOutCentV0MvsCentCL1= new TH2F("fHOutCentV0MvsCentCL1","fHOutCentV0MvsCentCL1; Cent V0; Cent SPD",505,0,101,505,0,101);
779 fHOutCentV0MvsCentTRK= new TH2F("fHOutCentV0MvsCentTRK","fHOutCentV0MvsCentTRK; Cent V0; Cent TPC",505,0,101,505,0,101);
780 fHOutCentTRKvsCentCL1= new TH2F("fHOutCentTRKvsCentCL1","fHOutCentTRKvsCentCL1; Cent TPC; Cent SPD",505,0,101,505,0,101);
781 fHOutCentV0MvsCentZDC= new TH2F("fHOutCentV0MvsCentZDC","fHOutCentV0MvsCentZDC; Cent V0; Cent ZDC",505,0,101,505,0,101);
782 fHOutCentV0AvsCentV0C= new TH2F("fHOutCentV0AvsCentV0C","fHOutCentV0AvsCentV0C; Cent V0A; Cent V0C;", 505,0,101,505,0,101);
783 fHOutCentV0AvsCentTRK= new TH2F("fHOutCentV0AvsCentTRK","fHOutCentV0AvsCentTRK; Cent V0A; Cent TRK;", 505,0,101,505,0,101);
784 fHOutCentV0AvsCentCND= new TH2F("fHOutCentV0AvsCentCND","fHOutCentV0AvsCentCND; Cent V0A; Cent CND;", 505,0,101,505,0,101);
785 fHOutCentV0AvsCentCL1= new TH2F("fHOutCentV0AvsCentCL1","fHOutCentV0AvsCentCL1; Cent V0A; Cent CL1;", 505,0,101,505,0,101);
786 fHOutCentV0CvsCentTRK= new TH2F("fHOutCentV0CvsCentTRK","fHOutCentV0CvsCentTRK; Cent V0C; Cent TRK;", 505,0,101,505,0,101);
787 fHOutCentV0CvsCentCND= new TH2F("fHOutCentV0CvsCentCND","fHOutCentV0CvsCentCND; Cent V0C; Cent CND;", 505,0,101,505,0,101);
788 fHOutCentV0CvsCentCL1= new TH2F("fHOutCentV0CvsCentCL1","fHOutCentV0CvsCentCL1; Cent V0C; Cent CL1;", 505,0,101,505,0,101);
789 fHOutCentNPAvsCentV0A= new TH2F("fHOutCentNPAvsCentV0A","fHOutCentNPAvsCentV0A; Cent NPA; Cent V0A;", 505,0,101,505,0,101);
790 fHOutCentNPAvsCentV0C= new TH2F("fHOutCentNPAvsCentV0C","fHOutCentNPAvsCentV0C; Cent NPA; Cent V0C;", 505,0,101,505,0,101);
791 fHOutCentNPAvsCentTRK= new TH2F("fHOutCentNPAvsCentTRK","fHOutCentNPAvsCentTRK; Cent NPA; Cent TRK;", 505,0,101,505,0,101);
792 fHOutCentNPAvsCentCND= new TH2F("fHOutCentNPAvsCentCND","fHOutCentNPAvsCentCND; Cent NPA; Cent CND;", 505,0,101,505,0,101);
793 fHOutCentNPAvsCentCL1= new TH2F("fHOutCentNPAvsCentCL1","fHOutCentNPAvsCentCL1; Cent NPA; Cent CL1;", 505,0,101,505,0,101);
794 fHOutCentZNAvsCentV0A= new TH2F("fHOutCentZNAvsCentV0A","fHOutCentZNAvsCentV0A; Cent ZNA; Cent V0A;", 505,0,101,505,0,101);
795 fHOutCentZNAvsCentV0C= new TH2F("fHOutCentZNAvsCentV0C","fHOutCentZNAvsCentV0C; Cent ZNA; Cent V0C;", 505,0,101,505,0,101);
796 fHOutCentZNAvsCentTRK= new TH2F("fHOutCentZNAvsCentTRK","fHOutCentZNAvsCentTRK; Cent ZNA; Cent TRK;", 505,0,101,505,0,101);
797 fHOutCentZNAvsCentCND= new TH2F("fHOutCentZNAvsCentCND","fHOutCentZNAvsCentCND; Cent ZNA; Cent CND;", 505,0,101,505,0,101);
798 fHOutCentZNAvsCentCL1= new TH2F("fHOutCentZNAvsCentCL1","fHOutCentZNAvsCentCL1; Cent ZNA; Cent CL1;", 505,0,101,505,0,101);
800 fHOutMultV0AC = new TH2F("fHOutMultV0AC","fHOutMultV0AC; Multiplicity V0A; Multiplicity V0C",1000,0,1000,1000,0,1000);
801 fHOutMultV0M = new TH1F("fHOutMultV0M","fHOutMultV0M; Multiplicity V0",25000,0,25000);
802 fHOutMultV0A = new TH1F("fHOutMultV0A","fHOutMultV0A; Multiplicity V0",25000,0,25000);
803 fHOutMultV0C = new TH1F("fHOutMultV0C","fHOutMultV0C; Multiplicity V0",25000,0,25000);
804 fHOutMultV0Mnc= new TH1F("fHOutMultV0Mnc","fHOutMultV0Mnc; Multiplicity V0",25000,0,25000);
805 fHOutMultV0Anc= new TH1F("fHOutMultV0Anc","fHOutMultV0Anc; Multiplicity V0",25000,0,25000);
806 fHOutMultV0Cnc= new TH1F("fHOutMultV0Cnc","fHOutMultV0Cnc; Multiplicity V0",25000,0,25000);
807 fHOutMultV0O = new TH1F("fHOutMultV0O","fHOutMultV0O; Multiplicity V0",40000,0,40000);
808 fHOutMultV0Cells = new TH2F("fHOutMultV0Cells","fHOutMultV0Cells",33,-0.5,32.5,33,-0.5,32.5);
809 fHOutMultFMD = new TH1F("fHOutMultFMD","fHOutMultFMD; Multiplicity FMD",24000,0,24000);
810 fHOutMultTRK = new TH1F("fHOutMultTRK","fHOutMultTRK; Multiplicity TPC",4000,0,4000);
811 fHOutMultTKL = new TH1F("fHOutMultTKL","fHOutMultTKL; Multiplicity tracklets",5000,0,5000);
812 fHOutMultCL0 = new TH1F("fHOutMultCL0","fHOutMultCL0; Multiplicity SPD inner",7000,0,7000);
813 fHOutMultCL1 = new TH1F("fHOutMultCL1","fHOutMultCL1; Multiplicity SPD outer",7000,0,7000);
814 fHOutMultCND = new TH1F("fHOutMultCND","fHOutMultCND; Multiplicity candle",4000,0,4000);
815 fHOutMultNPA = new TH1F("fHOutMultNPA","fHOutMultNPA; Nparticipants",450,0,450);
816 fHOutMultZNA = new TH1F("fHOutMultZNA","fHOutMultZNA; ZNA Energy",500,0,2000);
818 fHOutMultV0MvsZDN = new TH2F("fHOutMultV0MvsZDN","fHOutMultV0MvsZDN; Multiplicity V0; Energy ZDC-N",500,0,30000,500,0,180000);
819 fHOutMultZEMvsZDN = new TH2F("fHOutMultZEMvsZDN","fHOutMultZEMvsZDN; Energy ZEM; Energy ZDC-N",500,0,2500,500,0,180000);
820 fHOutMultV0MvsZDC = new TH2F("fHOutMultV0MvsZDC","fHOutMultV0MvsZDC; Multiplicity V0; Energy ZDC",500,0,30000,500,0,200000);
821 fHOutMultZEMvsZDC = new TH2F("fHOutMultZEMvsZDC","fHOutMultZEMvsZDC; Energy ZEM; Energy ZDC",500,0,2500,500,0,200000);
822 fHOutMultZEMvsZDCw = new TH2F("fHOutMultZEMvsZDCw","fHOutMultZEMvsZDCw; Energy ZEM; Energy ZDC (weigthed with V0 percentile)",500,0,2500,500,0,200000);
823 fHOutMultV0MvsCL1 = new TH2F("fHOutMultV0MvsCL1","fHOutMultV0MvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
824 fHOutMultV0MvsTRK = new TH2F("fHOutMultV0MvsTRK","fHOutMultV0MvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
825 fHOutMultTRKvsCL1 = new TH2F("fHOutMultTRKvsCL1","fHOutMultTRKvsCL1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
826 fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,40000);
827 fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",500,0,40000,700,0,7000);
828 fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",500,0,40000,400,0,4000);
829 fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,30000);
830 fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
831 fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
832 fHOutMultCL1vsTKL = new TH2F ("fHOutMultCL1vsTKL","fHOutMultCL1vsTKL; Multiplicity SPD outer; Multiplicity tracklets",700,0,7000,700,0,7000);
834 fHOutCentV0Mqual1 = new TH1F("fHOutCentV0M_qual1","fHOutCentV0M_qual1; Centrality V0",505,0,101);
835 fHOutCentTRKqual1 = new TH1F("fHOutCentTRK_qual1","fHOutCentTRK_qual1; Centrality TPC",505,0,101);
836 fHOutCentCL1qual1 = new TH1F("fHOutCentCL1_qual1","fHOutCentCL1_qual1; Centrality SPD outer",505,0,101);
837 fHOutMultV0MvsCL1qual1 = new TH2F("fHOutMultV0MvsCL1_qual1","fHOutMultV0MvsCL1_qual1; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
838 fHOutMultV0MvsTRKqual1 = new TH2F("fHOutMultV0MvsTRK_qual1","fHOutMultV0MvsTRK_qual1; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
839 fHOutMultTRKvsCL1qual1 = new TH2F("fHOutMultTRKvsCL1_qual1","fHOutMultTRKvsCL1_qual1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
841 fHOutCentV0Mqual2 = new TH1F("fHOutCentV0M_qual2","fHOutCentV0M_qual2; Centrality V0",505,0,101);
842 fHOutCentTRKqual2 = new TH1F("fHOutCentTRK_qual2","fHOutCentTRK_qual2; Centrality TPC",505,0,101);
843 fHOutCentCL1qual2 = new TH1F("fHOutCentCL1_qual2","fHOutCentCL1_qual2; Centrality SPD outer",505,0,101);
844 fHOutMultV0MvsCL1qual2 = new TH2F("fHOutMultV0MvsCL1_qual2","fHOutMultV0MvsCL1_qual2; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
845 fHOutMultV0MvsTRKqual2 = new TH2F("fHOutMultV0MvsTRK_qual2","fHOutMultV0MvsTRK_qual2; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
846 fHOutMultTRKvsCL1qual2 = new TH2F("fHOutMultTRKvsCL1_qual2","fHOutMultTRKvsCL1_qual2; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
848 fHOutQuality = new TH1F("fHOutQuality", "fHOutQuality", 100,-0.5,99.5);
849 fHOutVertex = new TH1F("fHOutVertex", "fHOutVertex", 100,-20,20);
850 fHOutVertexT0 = new TH1F("fHOutVertexT0", "fHOutVertexT0", 100,-20,20);
852 fOutputList->Add( fHOutCentV0M );
853 fOutputList->Add( fHOutCentV0A );
854 fOutputList->Add( fHOutCentV0C );
855 fOutputList->Add( fHOutCentV0MCVHN);
856 fOutputList->Add( fHOutCentV0MCVLN);
857 fOutputList->Add( fHOutCentV0MCVHNinMB);
858 fOutputList->Add( fHOutCentV0MCVLNinMB);
859 fOutputList->Add( fHOutCentV0MCCENT);
860 fOutputList->Add( fHOutCentV0MCSEMI);
861 fOutputList->Add( fHOutCentV0MCCENTinMB);
862 fOutputList->Add( fHOutCentV0MCSEMIinMB);
863 fOutputList->Add( fHOutCentV0MMSL );
864 fOutputList->Add( fHOutCentV0MMSH );
865 fOutputList->Add( fHOutCentV0MMUL );
866 fOutputList->Add( fHOutCentV0MMLL );
867 fOutputList->Add( fHOutCentV0MEJE );
868 fOutputList->Add( fHOutCentV0MEGA );
869 fOutputList->Add( fHOutCentV0MPHS );
870 fOutputList->Add( fHOutCentV0MMSLinMB);
871 fOutputList->Add( fHOutCentV0MMSHinMB);
872 fOutputList->Add( fHOutCentV0MMULinMB);
873 fOutputList->Add( fHOutCentV0MMLLinMB);
874 fOutputList->Add( fHOutCentV0MEJEinMB);
875 fOutputList->Add( fHOutCentV0MEGAinMB);
876 fOutputList->Add( fHOutCentV0MPHSinMB);
877 fOutputList->Add( fHOutCentFMD );
878 fOutputList->Add( fHOutCentTRK );
879 fOutputList->Add( fHOutCentTKL );
880 fOutputList->Add( fHOutCentCL0 );
881 fOutputList->Add( fHOutCentCL1 );
882 fOutputList->Add( fHOutCentCND );
883 fOutputList->Add( fHOutCentNPA );
884 fOutputList->Add( fHOutCentZNA );
885 fOutputList->Add( fHOutCentV0MvsFMD);
886 fOutputList->Add( fHOutCentTKLvsV0M);
887 fOutputList->Add( fHOutCentZEMvsZDC);
888 fOutputList->Add( fHOutCentV0MvsCentCL1);
889 fOutputList->Add( fHOutCentV0MvsCentTRK);
890 fOutputList->Add( fHOutCentTRKvsCentCL1);
891 fOutputList->Add( fHOutCentV0MvsCentZDC);
892 fOutputList->Add( fHOutCentV0AvsCentV0C);
893 fOutputList->Add( fHOutCentV0AvsCentTRK);
894 fOutputList->Add( fHOutCentV0AvsCentCND);
895 fOutputList->Add( fHOutCentV0AvsCentCL1);
896 fOutputList->Add( fHOutCentV0CvsCentTRK);
897 fOutputList->Add( fHOutCentV0CvsCentCND);
898 fOutputList->Add( fHOutCentV0CvsCentCL1);
899 fOutputList->Add( fHOutCentNPAvsCentV0A);
900 fOutputList->Add( fHOutCentNPAvsCentV0C);
901 fOutputList->Add( fHOutCentNPAvsCentTRK);
902 fOutputList->Add( fHOutCentNPAvsCentCND);
903 fOutputList->Add( fHOutCentNPAvsCentCL1);
904 fOutputList->Add( fHOutCentZNAvsCentV0A);
905 fOutputList->Add( fHOutCentZNAvsCentV0C);
906 fOutputList->Add( fHOutCentZNAvsCentTRK);
907 fOutputList->Add( fHOutCentZNAvsCentCND);
908 fOutputList->Add( fHOutCentZNAvsCentCL1);
910 fOutputList->Add( fHOutMultV0AC);
911 fOutputList->Add( fHOutMultV0M);
912 fOutputList->Add( fHOutMultV0A);
913 fOutputList->Add( fHOutMultV0C);
914 fOutputList->Add( fHOutMultV0Mnc);
915 fOutputList->Add( fHOutMultV0Anc);
916 fOutputList->Add( fHOutMultV0Cnc);
917 fOutputList->Add( fHOutMultV0O);
918 fOutputList->Add( fHOutMultV0Cells) ;
919 fOutputList->Add( fHOutMultFMD);
920 fOutputList->Add( fHOutMultTRK);
921 fOutputList->Add( fHOutMultTKL);
922 fOutputList->Add( fHOutMultCL0);
923 fOutputList->Add( fHOutMultCL1);
924 fOutputList->Add( fHOutMultCND);
925 fOutputList->Add( fHOutMultNPA);
926 fOutputList->Add( fHOutMultZNA);
927 fOutputList->Add( fHOutMultV0MvsZDN);
928 fOutputList->Add( fHOutMultZEMvsZDN);
929 fOutputList->Add( fHOutMultV0MvsZDC);
930 fOutputList->Add( fHOutMultZEMvsZDC);
931 fOutputList->Add( fHOutMultZEMvsZDCw);
932 fOutputList->Add( fHOutMultV0MvsCL1);
933 fOutputList->Add( fHOutMultV0MvsTRK);
934 fOutputList->Add( fHOutMultTRKvsCL1);
935 fOutputList->Add( fHOutMultV0MvsV0O);
936 fOutputList->Add( fHOutMultV0OvsCL1);
937 fOutputList->Add( fHOutMultV0OvsTRK);
938 fOutputList->Add( fHOutMultCL1vsTKL);
939 fOutputList->Add( fHOutCentV0Mqual1 );
940 fOutputList->Add( fHOutCentTRKqual1 );
941 fOutputList->Add( fHOutCentCL1qual1 );
942 fOutputList->Add( fHOutMultV0MvsCL1qual1);
943 fOutputList->Add( fHOutMultV0MvsTRKqual1);
944 fOutputList->Add( fHOutMultTRKvsCL1qual1);
945 fOutputList->Add( fHOutCentV0Mqual2 );
946 fOutputList->Add( fHOutCentTRKqual2 );
947 fOutputList->Add( fHOutCentCL1qual2 );
948 fOutputList->Add( fHOutMultV0MvsCL1qual2);
949 fOutputList->Add( fHOutMultV0MvsTRKqual2);
950 fOutputList->Add( fHOutMultTRKvsCL1qual2);
951 fOutputList->Add( fHOutQuality );
952 fOutputList->Add( fHOutVertex );
953 fOutputList->Add( fHOutVertexT0 );
955 PostData(1, fOutputList);
958 fTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
959 fEsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011();
960 fEsdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kOff);
961 // Add SPD requirement
962 fEsdTrackCutsExtra1 = new AliESDtrackCuts("SPD", "Require 1 cluster in SPD");
963 fEsdTrackCutsExtra1->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
964 // Add SDD requirement
965 fEsdTrackCutsExtra2 = new AliESDtrackCuts("SDD", "Require 1 cluster in first layer SDD");
966 fEsdTrackCutsExtra2->SetClusterRequirementITS(AliESDtrackCuts::kSDD,AliESDtrackCuts::kFirst);
969 //________________________________________________________________________
970 void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
972 // Execute analysis for current event:
973 if(fDebug>1) printf(" **** AliCentralitySelectionTask::UserExec() \n");
975 Int_t runType = 0; // 0:PbPb, 1:pPb or Pbp
977 Float_t zncEnergy = 0.; // ZNC Energy
978 Float_t zpcEnergy = 0.; // ZPC Energy
979 Float_t znaEnergy = 0.; // ZNA Energy
980 Float_t zpaEnergy = 0.; // ZPA Energy
981 Float_t zem1Energy = 0.; // ZEM1 Energy
982 Float_t zem2Energy = 0.; // ZEM2 Energy
983 Bool_t zdcEnergyCal = kFALSE; // if zdc is calibrated (in pass2)
984 Double_t znaTower = 0.; // common PMT of ZNA
985 Bool_t znaFired = kFALSE;
987 Int_t nTracks = 0; // no. tracks
988 Int_t nTracklets = 0; // no. tracklets
989 Int_t nClusters[6] = {0}; // no. clusters on 6 ITS layers
990 Int_t nChips[2]; // no. chips on 2 SPD layers
991 Float_t spdCorr =0; // corrected spd2 multiplicity
992 Int_t multCND = 0; // no. tracks (candle condition)
994 Float_t multV0A = 0; // multiplicity from V0 reco side A
995 Float_t multV0C = 0; // multiplicity from V0 reco side C
996 Float_t multV0ACorr = 0; // multiplicity from V0 reco side A
997 Float_t multV0CCorr = 0; // multiplicity from V0 reco side C
998 Short_t multV0AOnline = 0; // multiplicity from V0 reco side A
999 Short_t multV0COnline = 0; // multiplicity from V0 reco side C
1000 Float_t v0Corr = 0; // corrected V0 multiplicity (used for MC)
1004 Float_t multFMDA = 0; // multiplicity from FMD on detector A
1005 Float_t multFMDC = 0; // multiplicity from FMD on detector C
1007 Float_t zvtx =0; // z-vertex SPD
1008 Int_t zvtxNcont =0; // contributors to z-vertex SPD
1010 Float_t zvtxT0 =0; // z-vertex T0
1012 Int_t Npart =0; // N. of participants (true MC)
1014 AliCentrality *esdCent = 0;
1016 if(fAnalysisInput.CompareTo("ESD")==0){
1018 AliVEvent* event = InputEvent();
1019 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
1021 AliError("No ESD Event");
1027 if (SetupRun(esd)<0) {
1028 AliError("Centrality File not available for this run");
1032 if (strcmp(esd->GetESDRun()->GetBeamType(), "A-A") == 0) runType=0;
1035 esdCent = esd->GetCentrality();
1037 // ***** Vertex Info
1038 const AliESDVertex* vtxESD = esd->GetPrimaryVertexSPD();
1039 zvtx = vtxESD->GetZ();
1040 zvtxNcont = vtxESD->GetNContributors();
1043 AliESDVZERO* esdV0 = esd->GetVZEROData();
1046 AliError("AliESDVZERO not available");
1049 multV0A=esdV0->GetMTotV0A();
1050 multV0C=esdV0->GetMTotV0C();
1052 multV0ACorr = AliESDUtils::GetCorrV0A(multV0A,zvtx);
1053 multV0CCorr = AliESDUtils::GetCorrV0C(multV0C,zvtx);
1055 v0Corr = multV0A+multV0C;
1057 multV0AOnline=esdV0->GetTriggerChargeA();
1058 multV0COnline=esdV0->GetTriggerChargeC();
1061 for(Int_t i = 0; i < 32; ++i) {
1062 if (esdV0->GetBBFlag(i)) nV0C++;
1063 if (esdV0->GetBBFlag(i+32)) nV0A++;
1067 const AliESDTZERO* esdT0 = esd->GetESDTZERO();
1070 AliError("AliESDTZERO not available");
1073 Int_t trig=esdT0->GetT0Trig();
1074 Bool_t kT0BB = kFALSE;
1075 if(trig&1) kT0BB=kTRUE;
1076 zvtxT0=esdT0->GetT0zVertex();
1079 // ***** Trigger info
1080 fIsSelected = ((esdV0->GetV0ADecision()==1) && (esdV0->GetV0CDecision()==1));
1081 TString trigStr(esd->GetFiredTriggerClasses());
1084 fCVHN=kFALSE; fCVLN=kFALSE; fCCENT=kFALSE; fCSEMI=kFALSE;
1085 fMSL=kFALSE; fMSH=kFALSE; fMUL=kFALSE; fMLL=kFALSE;
1086 fEJE=kFALSE; fEGA=kFALSE; fPHS=kFALSE;
1088 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI")) && (fIsSelected))
1090 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CVHN")) && (fIsSelected))
1092 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CVLN")) && (fIsSelected))
1094 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CCENT")) && (fIsSelected))
1096 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CSEMI")) && (fIsSelected))
1099 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1MSL")) && (fIsSelected))
1101 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1MSH")) && (fIsSelected))
1103 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1MUL")) && (fIsSelected))
1105 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1MLL")) && (fIsSelected))
1107 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1EJE")) && (fIsSelected))
1109 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1EGA")) && (fIsSelected))
1111 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1PHS")) && (fIsSelected))
1114 fCVHNbit=kFALSE; fCVLNbit=kFALSE; fCCENTbit=kFALSE; fCSEMIbit=kFALSE;
1115 if (esdV0->GetTriggerBits() & (1<<8))
1117 if (esdV0->GetTriggerBits() & (1<<6))
1120 if (kT0BB && fCVHNbit)
1122 if (kT0BB && fCVLNbit)
1126 // ***** CB info (tracklets, clusters, chips)
1127 //nTracks = event->GetNumberOfTracks();
1128 nTracks = fTrackCuts ? (Short_t)fTrackCuts->GetReferenceMultiplicity(esd,kTRUE):-1;
1130 Short_t nTrTPCcandle = 0;
1131 for (Int_t iTracks = 0; iTracks < esd->GetNumberOfTracks(); iTracks++) {
1133 AliESDtrack* track = esd->GetTrack(iTracks);
1134 if (!track) continue;
1136 if (! fEsdTrackCuts->IsSelected(track) )continue;
1138 if (fEsdTrackCutsExtra1 && fEsdTrackCutsExtra2 &&
1139 !fEsdTrackCutsExtra1->IsSelected(track) &&
1140 !fEsdTrackCutsExtra2->IsSelected(track)) continue;
1142 if (track->Pt() > 0.4 && TMath::Abs(track->Eta()) < 0.9) nTrTPCcandle++;
1144 multCND = nTrTPCcandle;
1146 const AliMultiplicity *mult = esd->GetMultiplicity();
1147 nTracklets = mult->GetNumberOfTracklets();
1149 for(Int_t ilay=0; ilay<6; ilay++){
1150 nClusters[ilay] = mult->GetNumberOfITSClusters(ilay);
1153 for(Int_t ilay=0; ilay<2; ilay++){
1154 nChips[ilay] = mult->GetNumberOfFiredChips(ilay);
1157 spdCorr = AliESDUtils::GetCorrSPD2(nClusters[1],zvtx);
1160 AliESDFMD *fmd = esd->GetFMDData();
1161 Float_t totalMultA = 0;
1162 Float_t totalMultC = 0;
1163 const Float_t fFMDLowCut = 0.4;
1165 for(UShort_t det=1;det<=3;det++) {
1166 Int_t nRings = (det==1 ? 1 : 2);
1167 for (UShort_t ir = 0; ir < nRings; ir++) {
1168 Char_t ring = (ir == 0 ? 'I' : 'O');
1169 UShort_t nsec = (ir == 0 ? 20 : 40);
1170 UShort_t nstr = (ir == 0 ? 512 : 256);
1171 for(UShort_t sec =0; sec < nsec; sec++) {
1172 for(UShort_t strip = 0; strip < nstr; strip++) {
1174 Float_t fmdMult = fmd->Multiplicity(det,ring,sec,strip);
1175 if(fmdMult == 0 || fmdMult == AliESDFMD::kInvalidMult) continue;
1177 Float_t nParticles=0;
1179 if(fmdMult > fFMDLowCut) {
1183 if (det<3) totalMultA = totalMultA + nParticles;
1184 else totalMultC = totalMultC + nParticles;
1190 multFMDA = totalMultA;
1191 multFMDC = totalMultC;
1194 AliESDZDC *esdZDC = esd->GetESDZDC();
1195 zdcEnergyCal = esdZDC->AliESDZDC::TestBit(AliESDZDC::kEnergyCalibratedSignal);
1197 zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy());
1198 zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy());
1199 znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy());
1200 zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy());
1202 zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy())/8.;
1203 zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy())/8.;
1204 znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy())/8.;
1205 zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy())/8.;
1207 zem1Energy = (Float_t) (esdZDC->GetZDCEMEnergy(0))/8.;
1208 zem2Energy = (Float_t) (esdZDC->GetZDCEMEnergy(1))/8.;
1210 const Double_t *ZNAtower = esdZDC->GetZN2TowerEnergy();
1211 znaTower = ZNAtower[0];
1213 for (Int_t j = 0; j < 4; ++j) {
1214 if (esdZDC->GetZDCTDCData(12,j) != 0) {
1220 AliAnalysisManager* anMan = AliAnalysisManager::GetAnalysisManager();
1221 AliMCEventHandler* eventHandler = (AliMCEventHandler*)anMan->GetMCtruthEventHandler();
1223 AliMCEvent* mcEvent=0;
1224 if (fIsMCInput && eventHandler && (mcEvent=eventHandler->MCEvent()) && (stack=mcEvent->Stack())) {
1226 AliGenHijingEventHeader* hHijing=0;
1227 AliGenDPMjetEventHeader* dpmHeader=0;
1229 AliGenEventHeader* mcGenH = mcEvent->GenEventHeader();
1230 if (mcGenH->InheritsFrom(AliGenHijingEventHeader::Class())) {
1231 hHijing = (AliGenHijingEventHeader*)mcGenH;
1232 if(hHijing) Npart = hHijing->ProjectileParticipants()+hHijing->TargetParticipants();
1234 else if (mcGenH->InheritsFrom(AliGenCocktailEventHeader::Class())) {
1235 TList* headers = ((AliGenCocktailEventHeader*)mcGenH)->GetHeaders();
1236 hHijing = dynamic_cast<AliGenHijingEventHeader*>(headers->FindObject("Hijing"));
1237 if(hHijing) Npart = hHijing->ProjectileParticipants()+hHijing->TargetParticipants();
1239 else if (mcGenH->InheritsFrom(AliGenDPMjetEventHeader::Class())) {
1240 dpmHeader = (AliGenDPMjetEventHeader*)mcGenH;
1241 if(dpmHeader) Npart = dpmHeader->ProjectileParticipants()+ dpmHeader->TargetParticipants();
1246 else if(fAnalysisInput.CompareTo("AOD")==0){
1247 //AliAODEvent *aod = dynamic_cast<AliAODEvent*> (InputEvent());
1248 // to be implemented
1249 printf(" AOD analysis not yet implemented!!!\n\n");
1253 // ***** Scaling for MC
1256 v0Corr = Short_t((multV0A+multV0C) * fV0MScaleFactorMC);
1257 multV0A = multV0A * fV0MScaleFactorMC;
1258 multV0C = multV0C * fV0MScaleFactorMC;
1260 // ***** Scaling for Data
1262 v0Corr = Short_t(v0Corr / fV0MScaleFactor);
1263 spdCorr = spdCorr / fSPDScaleFactor;
1264 nTracks = Int_t(nTracks / fTPCScaleFactor);
1267 // ***** Centrality Selection
1268 if(fHtempV0M) fCentV0M = fHtempV0M->GetBinContent(fHtempV0M->FindBin((v0Corr)));
1269 if(fHtempV0A) fCentV0A = fHtempV0A->GetBinContent(fHtempV0A->FindBin((multV0ACorr)));
1270 if(fHtempV0C) fCentV0C = fHtempV0C->GetBinContent(fHtempV0C->FindBin((multV0CCorr)));
1271 if(fHtempFMD) fCentFMD = fHtempFMD->GetBinContent(fHtempFMD->FindBin((multFMDA+multFMDC)));
1272 if(fHtempTRK) fCentTRK = fHtempTRK->GetBinContent(fHtempTRK->FindBin(nTracks));
1273 if(fHtempTKL) fCentTKL = fHtempTKL->GetBinContent(fHtempTKL->FindBin(nTracklets));
1274 if(fHtempCL0) fCentCL0 = fHtempCL0->GetBinContent(fHtempCL0->FindBin(nClusters[0]));
1275 if(fHtempCL1) fCentCL1 = fHtempCL1->GetBinContent(fHtempCL1->FindBin(spdCorr));
1276 if(fHtempCND) fCentCND = fHtempCND->GetBinContent(fHtempCND->FindBin(multCND));
1278 if(znaFired) fCentZNA = fHtempZNA->GetBinContent(fHtempZNA->FindBin(znaTower));
1279 else fCentZNA = 101;
1281 if(fHtempV0MvsFMD) fCentV0MvsFMD = fHtempV0MvsFMD->GetBinContent(fHtempV0MvsFMD->FindBin((multV0A+multV0C)));
1282 if(fHtempTKLvsV0M) fCentTKLvsV0M = fHtempTKLvsV0M->GetBinContent(fHtempTKLvsV0M->FindBin(nTracklets));
1283 if(fHtempZEMvsZDC) fCentZEMvsZDC = fHtempZEMvsZDC->GetBinContent(fHtempZEMvsZDC->FindBin(zem1Energy+zem2Energy,zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1285 if(fHtempNPA) fCentNPA = fHtempNPA->GetBinContent(fHtempNPA->FindBin(Npart));
1286 if(fHtempV0Mtrue) fCentV0Mtrue = fHtempV0Mtrue->GetBinContent(fHtempV0Mtrue->FindBin((multV0ACorr+multV0CCorr)));
1287 if(fHtempV0Atrue) fCentV0Atrue = fHtempV0Atrue->GetBinContent(fHtempV0Atrue->FindBin((multV0ACorr)));
1288 if(fHtempV0Ctrue) fCentV0Ctrue = fHtempV0Ctrue->GetBinContent(fHtempV0Ctrue->FindBin((multV0CCorr)));
1289 if(fHtempFMDtrue) fCentFMDtrue = fHtempFMDtrue->GetBinContent(fHtempFMDtrue->FindBin((multFMDA+multFMDC)));
1290 if(fHtempTRKtrue) fCentTRKtrue = fHtempTRKtrue->GetBinContent(fHtempTRKtrue->FindBin(nTracks));
1291 if(fHtempTKLtrue) fCentTKLtrue = fHtempTKLtrue->GetBinContent(fHtempTKLtrue->FindBin(nTracklets));
1292 if(fHtempCL0true) fCentCL0true = fHtempCL0true->GetBinContent(fHtempCL0true->FindBin(nClusters[0]));
1293 if(fHtempCL1true) fCentCL1true = fHtempCL1true->GetBinContent(fHtempCL1true->FindBin(spdCorr));
1294 if(fHtempCNDtrue) fCentCNDtrue = fHtempCNDtrue->GetBinContent(fHtempCNDtrue->FindBin(multCND));
1295 if(fHtempZNAtrue) fCentZNAtrue = fHtempZNAtrue->GetBinContent(fHtempZNAtrue->FindBin(znaTower));
1304 if (TMath::Abs(zvtx)>fZVCut || zvtxNcont<1) fQuality += 1;
1306 // ***** outliers, skip in case of MC input
1309 if (IsOutlierV0MSPD(spdCorr, v0Corr, int(fCentV0M))) fQuality += 2;
1311 if (IsOutlierV0MTPC(nTracks, v0Corr, int(fCentV0M))) fQuality += 4;
1313 if (IsOutlierV0MZDC((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
1314 (zdcEnergyCal==kFALSE) ) fQuality += 8;
1315 if (IsOutlierV0MZDCECal((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
1316 (zdcEnergyCal==kTRUE) ) fQuality += 8;
1324 esdCent->SetQuality(fQuality);
1325 esdCent->SetCentralityV0M(fCentV0M);
1326 esdCent->SetCentralityV0A(fCentV0A);
1327 esdCent->SetCentralityV0C(fCentV0C);
1328 esdCent->SetCentralityFMD(fCentFMD);
1329 esdCent->SetCentralityTRK(fCentTRK);
1330 esdCent->SetCentralityTKL(fCentTKL);
1331 esdCent->SetCentralityCL0(fCentCL0);
1332 esdCent->SetCentralityCL1(fCentCL1);
1333 esdCent->SetCentralityCND(fCentCND);
1334 esdCent->SetCentralityNPA(fCentNPA);
1335 esdCent->SetCentralityZNA(fCentZNA);
1336 esdCent->SetCentralityV0MvsFMD(fCentV0MvsFMD);
1337 esdCent->SetCentralityTKLvsV0M(fCentTKLvsV0M);
1338 esdCent->SetCentralityZEMvsZDC(fCentZEMvsZDC);
1341 // filling QA histograms
1344 if (fIsMCInput) { // fill histo with true centrality for simulations
1345 fCentV0M = fCentV0Mtrue;
1346 fCentV0A = fCentV0Atrue;
1347 fCentV0C = fCentV0Ctrue;
1348 fCentFMD = fCentFMDtrue;
1349 fCentTRK = fCentTRKtrue;
1350 fCentTKL = fCentTKLtrue;
1351 fCentCL0 = fCentCL0true;
1352 fCentCL1 = fCentCL1true;
1353 fCentCND = fCentCNDtrue;
1354 fCentZNA = fCentZNAtrue;
1358 if ((fMB) && (abs(zvtx)<10)) fHOutMultCL1vsTKL->Fill(spdCorr,nTracklets);
1360 if (fCVHN) fHOutCentV0MCVHN->Fill(fCentV0M);
1361 if (fCVLN) fHOutCentV0MCVLN->Fill(fCentV0M);
1362 if (fCCENT) fHOutCentV0MCCENT->Fill(fCentV0M);
1363 if (fCSEMI) fHOutCentV0MCSEMI->Fill(fCentV0M);
1364 if (fMSL) fHOutCentV0MMSL->Fill(fCentV0M);
1365 if (fMSH) fHOutCentV0MMSH->Fill(fCentV0M);
1366 if (fMUL) fHOutCentV0MMUL->Fill(fCentV0M);
1367 if (fMLL) fHOutCentV0MMLL->Fill(fCentV0M);
1368 if (fEJE) fHOutCentV0MEJE->Fill(fCentV0M);
1369 if (fEGA) fHOutCentV0MEGA->Fill(fCentV0M);
1370 if (fPHS) fHOutCentV0MPHS->Fill(fCentV0M);
1372 if (((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB) && (runType==0)) ||
1373 ((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kINT7) && (runType==1))) { // fill the QA histograms only for MB events!
1375 fHOutQuality->Fill(fQuality);
1376 fHOutVertex->Fill(zvtx);
1377 fHOutVertexT0->Fill(zvtxT0);
1380 fHOutCentV0M->Fill(fCentV0M);
1381 fHOutCentV0A->Fill(fCentV0A);
1382 fHOutCentV0C->Fill(fCentV0C);
1384 if (fCVHNbit) fHOutCentV0MCVHNinMB->Fill(fCentV0M);
1385 if (fCVLNbit) fHOutCentV0MCVLNinMB->Fill(fCentV0M);
1386 if (fCCENTbit) fHOutCentV0MCCENTinMB->Fill(fCentV0M);
1387 if (fCSEMIbit) fHOutCentV0MCSEMIinMB->Fill(fCentV0M);
1388 if (fMSL) fHOutCentV0MMSLinMB->Fill(fCentV0M);
1389 if (fMSH) fHOutCentV0MMSHinMB->Fill(fCentV0M);
1390 if (fMUL) fHOutCentV0MMULinMB->Fill(fCentV0M);
1391 if (fMLL) fHOutCentV0MMLLinMB->Fill(fCentV0M);
1392 if (fEJE) fHOutCentV0MEJEinMB->Fill(fCentV0M);
1393 if (fEGA) fHOutCentV0MEGAinMB->Fill(fCentV0M);
1394 if (fPHS) fHOutCentV0MPHSinMB->Fill(fCentV0M);
1396 fHOutCentFMD->Fill(fCentFMD);
1397 fHOutCentTRK->Fill(fCentTRK);
1398 fHOutCentTKL->Fill(fCentTKL);
1399 fHOutCentCL0->Fill(fCentCL0);
1400 fHOutCentCL1->Fill(fCentCL1);
1401 fHOutCentCND->Fill(fCentCND);
1402 fHOutCentNPA->Fill(fCentNPA);
1403 fHOutCentZNA->Fill(fCentZNA);
1404 fHOutCentV0MvsFMD->Fill(fCentV0MvsFMD);
1405 fHOutCentTKLvsV0M->Fill(fCentTKLvsV0M);
1406 fHOutCentZEMvsZDC->Fill(fCentZEMvsZDC);
1407 fHOutCentV0MvsCentCL1->Fill(fCentV0M,fCentCL1);
1408 fHOutCentV0MvsCentTRK->Fill(fCentV0M,fCentTRK);
1409 fHOutCentTRKvsCentCL1->Fill(fCentTRK,fCentCL1);
1410 fHOutCentV0MvsCentZDC->Fill(fCentV0M,fCentZEMvsZDC);
1411 fHOutCentV0AvsCentV0C->Fill(fCentV0A,fCentV0C);
1412 fHOutCentV0AvsCentTRK->Fill(fCentV0A,fCentTRK);
1413 fHOutCentV0AvsCentCND->Fill(fCentV0A,fCentCND);
1414 fHOutCentV0AvsCentCL1->Fill(fCentV0A,fCentCL1);
1415 fHOutCentV0CvsCentTRK->Fill(fCentV0C,fCentTRK);
1416 fHOutCentV0CvsCentCND->Fill(fCentV0C,fCentCND);
1417 fHOutCentV0CvsCentCL1->Fill(fCentV0C,fCentCL1);
1418 fHOutCentNPAvsCentV0A->Fill(fCentNPA,fCentV0A);
1419 fHOutCentNPAvsCentV0C->Fill(fCentNPA,fCentV0C);
1420 fHOutCentNPAvsCentTRK->Fill(fCentNPA,fCentTRK);
1421 fHOutCentNPAvsCentCND->Fill(fCentNPA,fCentCND);
1422 fHOutCentNPAvsCentCL1->Fill(fCentNPA,fCentCL1);
1423 fHOutCentZNAvsCentV0A->Fill(fCentZNA,fCentV0A);
1424 fHOutCentZNAvsCentV0C->Fill(fCentZNA,fCentV0C);
1425 fHOutCentZNAvsCentTRK->Fill(fCentZNA,fCentTRK);
1426 fHOutCentZNAvsCentCND->Fill(fCentZNA,fCentCND);
1427 fHOutCentZNAvsCentCL1->Fill(fCentZNA,fCentCL1);
1429 fHOutMultV0AC->Fill(multV0A,multV0C);
1430 fHOutMultV0M->Fill(multV0ACorr+multV0CCorr);
1431 fHOutMultV0A->Fill(multV0ACorr);
1432 fHOutMultV0C->Fill(multV0CCorr);
1433 fHOutMultV0Mnc->Fill(multV0A+multV0C);
1434 fHOutMultV0Anc->Fill(multV0A);
1435 fHOutMultV0Cnc->Fill(multV0C);
1436 fHOutMultV0O->Fill(multV0AOnline+multV0COnline);
1437 fHOutMultV0Cells->Fill(nV0A,nV0C);
1438 fHOutMultFMD->Fill(multFMDA+multFMDC);
1439 fHOutMultTRK->Fill(nTracks);
1440 fHOutMultTKL->Fill(nTracklets);
1441 fHOutMultCL0->Fill(nClusters[0]);
1442 fHOutMultCL1->Fill(spdCorr);
1443 fHOutMultCND->Fill(multCND);
1444 fHOutMultNPA->Fill(Npart);
1445 fHOutMultZNA->Fill(znaTower);
1447 fHOutMultV0MvsZDN->Fill(v0Corr,(zncEnergy+znaEnergy));
1448 fHOutMultZEMvsZDN->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy));
1449 fHOutMultV0MvsZDC->Fill(v0Corr,(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1450 fHOutMultZEMvsZDC->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1451 fHOutMultZEMvsZDCw->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy),fCentV0M);
1452 fHOutMultV0MvsCL1->Fill(v0Corr,spdCorr);
1453 fHOutMultV0MvsTRK->Fill(v0Corr,nTracks);
1454 fHOutMultTRKvsCL1->Fill(nTracks,spdCorr);
1455 fHOutMultV0MvsV0O->Fill(v0Corr,(multV0AOnline+multV0COnline));
1456 fHOutMultV0OvsCL1->Fill((multV0AOnline+multV0COnline),spdCorr);
1457 fHOutMultV0OvsTRK->Fill((multV0AOnline+multV0COnline),nTracks);
1458 } else if (fQuality%2 == 0) {
1459 fHOutCentV0Mqual1->Fill(fCentV0M);
1460 fHOutCentTRKqual1->Fill(fCentTRK);
1461 fHOutCentCL1qual1->Fill(fCentCL1);
1462 fHOutMultV0MvsCL1qual1->Fill(v0Corr,spdCorr);
1463 fHOutMultV0MvsTRKqual1->Fill(v0Corr,nTracks);
1464 fHOutMultTRKvsCL1qual1->Fill(nTracks,spdCorr);
1466 fHOutCentV0Mqual2->Fill(fCentV0M);
1467 fHOutCentTRKqual2->Fill(fCentTRK);
1468 fHOutCentCL1qual2->Fill(fCentCL1);
1469 fHOutMultV0MvsCL1qual2->Fill(v0Corr,spdCorr);
1470 fHOutMultV0MvsTRKqual2->Fill(v0Corr,nTracks);
1471 fHOutMultTRKvsCL1qual2->Fill(nTracks,spdCorr);
1474 PostData(1, fOutputList);
1477 //________________________________________________________________________
1478 void AliCentralitySelectionTask::Terminate(Option_t */*option*/)
1480 // Terminate analysis
1482 //________________________________________________________________________
1483 Int_t AliCentralitySelectionTask::SetupRun(const AliESDEvent* const esd)
1485 // Setup files for run
1490 // check if something to be done
1491 if (fCurrentRun == esd->GetRunNumber())
1494 fCurrentRun = esd->GetRunNumber();
1496 TString fileName =(Form("%s/COMMON/CENTRALITY/data/centrality.root", AliAnalysisManager::GetOADBPath()));
1497 AliInfo(Form("Setup Centrality Selection for run %d with file %s\n",fCurrentRun,fileName.Data()));
1499 AliOADBContainer *con = new AliOADBContainer("OADB");
1500 con->InitFromFile(fileName,"Centrality");
1502 AliOADBCentrality* centOADB = 0;
1503 centOADB = (AliOADBCentrality*)(con->GetObject(fCurrentRun));
1505 AliWarning(Form("Centrality OADB does not exist for run %d, using Default \n",fCurrentRun ));
1506 centOADB = (AliOADBCentrality*)(con->GetDefaultObject("oadbDefault"));
1509 Bool_t isHijing=kFALSE;
1510 Bool_t isDpmjet=kFALSE;
1511 AliAnalysisManager* anMan = AliAnalysisManager::GetAnalysisManager();
1512 AliMCEventHandler* eventHandler = (AliMCEventHandler*)anMan->GetMCtruthEventHandler();
1513 AliMCEvent* mcEvent=0;
1514 if (fIsMCInput && eventHandler && (mcEvent=eventHandler->MCEvent()) ) {
1515 AliGenEventHeader* mcGenH = mcEvent->GenEventHeader();
1516 if (mcGenH->InheritsFrom(AliGenHijingEventHeader::Class())) isHijing=kTRUE;
1517 else if (mcGenH->InheritsFrom(AliGenCocktailEventHeader::Class())) isHijing=kTRUE;
1518 else if (mcGenH->InheritsFrom(AliGenDPMjetEventHeader::Class())) isDpmjet=kTRUE;
1523 fUseScaling = centOADB->UseScaling();
1524 fUseCleaning = centOADB->UseCleaning();
1527 fZVCut = centOADB->ZVCut();
1528 fOutliersCut = centOADB->OutliersCut();
1530 // centrality histos
1531 fHtempV0M = centOADB->V0hist();
1532 fHtempV0A = centOADB->V0Ahist();
1533 fHtempV0C = centOADB->V0Chist();
1534 fHtempTRK = centOADB->TPChist();
1535 fHtempCL1 = centOADB->SPDhist();
1536 fHtempCND = centOADB->CNDhist();
1537 fHtempFMD = centOADB->FMDhist();
1538 fHtempZNA = centOADB->ZNAhist();
1539 fHtempZEMvsZDC = centOADB->ZEMvsZDChist();
1542 fHtempNPA = centOADB->NPAhist();
1543 fHtempV0Mtrue = centOADB->V0histtrue();
1544 fHtempV0Atrue = centOADB->V0Ahisttrue();
1545 fHtempV0Ctrue = centOADB->V0Chisttrue();
1546 fHtempTRKtrue = centOADB->TPChisttrue();
1547 fHtempCL1true = centOADB->SPDhisttrue();
1548 fHtempCNDtrue = centOADB->CNDhisttrue();
1549 fHtempFMDtrue = centOADB->FMDhisttrue();
1550 fHtempZNAtrue = centOADB->ZNAhisttrue();
1551 } else if (isDpmjet) {
1552 fHtempNPA = centOADB->NPAhistDPM();
1553 fHtempV0Mtrue = centOADB->V0histtrueDPM();
1554 fHtempV0Atrue = centOADB->V0AhisttrueDPM();
1555 fHtempV0Ctrue = centOADB->V0ChisttrueDPM();
1556 fHtempTRKtrue = centOADB->TPChisttrueDPM();
1557 fHtempCL1true = centOADB->SPDhisttrueDPM();
1558 fHtempCNDtrue = centOADB->CNDhisttrueDPM();
1559 fHtempFMDtrue = centOADB->FMDhisttrueDPM();
1560 fHtempZNAtrue = centOADB->ZNAhisttrueDPM();
1563 TString path = gSystem->ExpandPathName(fileName.Data());
1564 if (!fHtempV0M) AliWarning(Form("Calibration for V0M does not exist in %s", path.Data()));
1565 if (!fHtempV0A) AliWarning(Form("Calibration for V0A does not exist in %s", path.Data()));
1566 if (!fHtempV0C) AliWarning(Form("Calibration for V0C does not exist in %s", path.Data()));
1567 if (!fHtempTRK) AliWarning(Form("Calibration for TRK does not exist in %s", path.Data()));
1568 if (!fHtempCL1) AliWarning(Form("Calibration for CL1 does not exist in %s", path.Data()));
1569 if (!fHtempCND) AliWarning(Form("Calibration for CND does not exist in %s", path.Data()));
1570 if (!fHtempZNA) AliWarning(Form("Calibration for ZNA does not exist in %s", path.Data()));
1571 if (!fHtempFMD) AliWarning(Form("Calibration for FMD does not exist in %s", path.Data()));
1572 if (!fHtempZEMvsZDC) AliWarning(Form("Calibration for ZEMvsZDC does not exist in %s", path.Data()));
1573 if (!fHtempNPA) AliWarning(Form("Calibration for NPA does not exist in %s", path.Data()));
1575 if (!fHtempV0Mtrue) AliWarning(Form("Calibration for V0Mtrue does not exist in %s", path.Data()));
1576 if (!fHtempV0Atrue) AliWarning(Form("Calibration for V0Atrue does not exist in %s", path.Data()));
1577 if (!fHtempV0Ctrue) AliWarning(Form("Calibration for V0Ctrue does not exist in %s", path.Data()));
1578 if (!fHtempTRKtrue) AliWarning(Form("Calibration for TRKtrue does not exist in %s", path.Data()));
1579 if (!fHtempCL1true) AliWarning(Form("Calibration for CL1true does not exist in %s", path.Data()));
1580 if (!fHtempCNDtrue) AliWarning(Form("Calibration for CNDtrue does not exist in %s", path.Data()));
1581 if (!fHtempZNAtrue) AliWarning(Form("Calibration for ZNAtrue does not exist in %s", path.Data()));
1582 if (!fHtempFMDtrue) AliWarning(Form("Calibration for FMDtrue does not exist in %s", path.Data()));
1585 fV0MScaleFactor = centOADB->V0MScaleFactor();
1586 fSPDScaleFactor = centOADB->SPDScaleFactor();
1587 fTPCScaleFactor = centOADB->TPCScaleFactor();
1588 fV0MScaleFactorMC = centOADB->V0MScaleFactorMC();
1590 // outliers parameters
1591 fV0MSPDOutlierPar0 = centOADB->V0MSPDOutlierPar0();
1592 fV0MSPDOutlierPar1 = centOADB->V0MSPDOutlierPar1();
1593 fV0MTPCOutlierPar0 = centOADB->V0MTPCOutlierPar0();
1594 fV0MTPCOutlierPar1 = centOADB->V0MTPCOutlierPar1();
1596 fV0MSPDSigmaOutlierPar0 = centOADB->V0MSPDSigmaOutlierPar0();
1597 fV0MSPDSigmaOutlierPar1 = centOADB->V0MSPDSigmaOutlierPar1();
1598 fV0MSPDSigmaOutlierPar2 = centOADB->V0MSPDSigmaOutlierPar2();
1599 fV0MTPCSigmaOutlierPar0 = centOADB->V0MTPCSigmaOutlierPar0();
1600 fV0MTPCSigmaOutlierPar1 = centOADB->V0MTPCSigmaOutlierPar1();
1601 fV0MTPCSigmaOutlierPar2 = centOADB->V0MTPCSigmaOutlierPar2();
1603 fV0MZDCOutlierPar0 = centOADB->V0MZDCOutlierPar0();
1604 fV0MZDCOutlierPar1 = centOADB->V0MZDCOutlierPar1();
1605 fV0MZDCEcalOutlierPar0 = centOADB->V0MZDCEcalOutlierPar0();
1606 fV0MZDCEcalOutlierPar1 = centOADB->V0MZDCEcalOutlierPar1();
1615 //________________________________________________________________________
1616 Bool_t AliCentralitySelectionTask::IsOutlierV0MSPD(Float_t spd, Float_t v0, Int_t cent) const
1619 Float_t val = fV0MSPDOutlierPar0 + fV0MSPDOutlierPar1 * v0;
1620 Float_t spdSigma = fV0MSPDSigmaOutlierPar0 + fV0MSPDSigmaOutlierPar1*cent + fV0MSPDSigmaOutlierPar2*cent*cent;
1621 if ( TMath::Abs(spd-val) > fOutliersCut*spdSigma )
1627 //________________________________________________________________________
1628 Bool_t AliCentralitySelectionTask::IsOutlierV0MTPC(Int_t tracks, Float_t v0, Int_t cent) const
1631 Float_t val = fV0MTPCOutlierPar0 + fV0MTPCOutlierPar1 * v0;
1632 Float_t tpcSigma = fV0MTPCSigmaOutlierPar0 + fV0MTPCSigmaOutlierPar1*cent + fV0MTPCSigmaOutlierPar2*cent*cent;
1633 if ( TMath::Abs(tracks-val) > fOutliersCut*tpcSigma )
1639 //________________________________________________________________________
1640 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDC(Float_t zdc, Float_t v0) const
1643 Float_t val = fV0MZDCOutlierPar0 + fV0MZDCOutlierPar1 * v0;
1650 //________________________________________________________________________
1651 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDCECal(Float_t zdc, Float_t v0) const
1654 Float_t val = fV0MZDCEcalOutlierPar0 + fV0MZDCEcalOutlierPar1 * v0;