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),
209 fHOutMultV0MvsZDN(0),
210 fHOutMultZEMvsZDN(0),
211 fHOutMultV0MvsZDC(0),
212 fHOutMultZEMvsZDC(0),
213 fHOutMultZEMvsZDCw(0),
214 fHOutMultV0MvsCL1(0),
215 fHOutMultV0MvsTRK(0),
216 fHOutMultTRKvsCL1(0),
217 fHOutMultV0MvsV0O(0),
218 fHOutMultV0OvsCL1(0),
219 fHOutMultV0OvsTRK(0),
220 fHOutMultCL1vsTKL(0),
221 fHOutCentV0Mqual1(0),
222 fHOutCentTRKqual1(0),
223 fHOutCentCL1qual1(0),
224 fHOutMultV0MvsCL1qual1(0),
225 fHOutMultV0MvsTRKqual1(0),
226 fHOutMultTRKvsCL1qual1(0),
227 fHOutCentV0Mqual2(0),
228 fHOutCentTRKqual2(0),
229 fHOutCentCL1qual2(0),
230 fHOutMultV0MvsCL1qual2(0),
231 fHOutMultV0MvsTRKqual2(0),
232 fHOutMultTRKvsCL1qual2(0),
237 // Default constructor
238 AliInfo("Centrality Selection enabled.");
243 fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO.,AliESDTZERO."
244 ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks ";
247 //________________________________________________________________________
248 AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
249 AliAnalysisTaskSE(name),
250 fAnalysisInput("ESD"),
259 fV0MScaleFactorMC(0),
260 fV0MSPDOutlierPar0(0),
261 fV0MSPDOutlierPar1(0),
262 fV0MTPCOutlierPar0(0),
263 fV0MTPCOutlierPar1(0),
264 fV0MSPDSigmaOutlierPar0(0),
265 fV0MSPDSigmaOutlierPar1(0),
266 fV0MSPDSigmaOutlierPar2(0),
267 fV0MTPCSigmaOutlierPar0(0),
268 fV0MTPCSigmaOutlierPar1(0),
269 fV0MTPCSigmaOutlierPar2(0),
270 fV0MZDCOutlierPar0(0),
271 fV0MZDCOutlierPar1(0),
272 fV0MZDCEcalOutlierPar0(0),
273 fV0MZDCEcalOutlierPar1(0),
325 fHOutCentV0MCVHNinMB(0),
326 fHOutCentV0MCVLNinMB(0),
327 fHOutCentV0MCCENT(0),
328 fHOutCentV0MCSEMI(0),
329 fHOutCentV0MCCENTinMB(0),
330 fHOutCentV0MCSEMIinMB(0),
338 fHOutCentV0MMSLinMB(0),
339 fHOutCentV0MMSHinMB(0),
340 fHOutCentV0MMULinMB(0),
341 fHOutCentV0MMLLinMB(0),
342 fHOutCentV0MEJEinMB(0),
343 fHOutCentV0MEGAinMB(0),
344 fHOutCentV0MPHSinMB(0),
351 fHOutCentV0MvsFMD(0),
352 fHOutCentTKLvsV0M(0),
353 fHOutCentZEMvsZDC(0),
354 fHOutCentV0MvsCentCL1(0),
355 fHOutCentV0MvsCentTRK(0),
356 fHOutCentTRKvsCentCL1(0),
357 fHOutCentV0MvsCentZDC(0),
358 fHOutCentV0AvsCentV0C(0),
359 fHOutCentV0AvsCentTRK(0),
360 fHOutCentV0AvsCentCND(0),
361 fHOutCentV0AvsCentCL1(0),
362 fHOutCentV0CvsCentTRK(0),
363 fHOutCentV0CvsCentCND(0),
364 fHOutCentV0CvsCentCL1(0),
377 fHOutMultV0MvsZDN(0),
378 fHOutMultZEMvsZDN(0),
379 fHOutMultV0MvsZDC(0),
380 fHOutMultZEMvsZDC(0),
381 fHOutMultZEMvsZDCw(0),
382 fHOutMultV0MvsCL1(0),
383 fHOutMultV0MvsTRK(0),
384 fHOutMultTRKvsCL1(0),
385 fHOutMultV0MvsV0O(0),
386 fHOutMultV0OvsCL1(0),
387 fHOutMultV0OvsTRK(0),
388 fHOutMultCL1vsTKL(0),
389 fHOutCentV0Mqual1(0),
390 fHOutCentTRKqual1(0),
391 fHOutCentCL1qual1(0),
392 fHOutMultV0MvsCL1qual1(0),
393 fHOutMultV0MvsTRKqual1(0),
394 fHOutMultTRKvsCL1qual1(0),
395 fHOutCentV0Mqual2(0),
396 fHOutCentTRKqual2(0),
397 fHOutCentCL1qual2(0),
398 fHOutMultV0MvsCL1qual2(0),
399 fHOutMultV0MvsTRKqual2(0),
400 fHOutMultTRKvsCL1qual2(0),
405 // Default constructor
406 AliInfo("Centrality Selection enabled.");
407 //DefineOutput(1, TList::Class());
411 fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO.,AliESDTZERO."
412 ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks ";
415 //________________________________________________________________________
416 AliCentralitySelectionTask& AliCentralitySelectionTask::operator=(const AliCentralitySelectionTask& c)
418 // Assignment operator
420 AliAnalysisTaskSE::operator=(c);
425 //________________________________________________________________________
426 AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelectionTask& ana):
427 AliAnalysisTaskSE(ana),
428 fAnalysisInput(ana.fAnalysisInput),
429 fIsMCInput(ana.fIsMCInput),
430 fCurrentRun(ana.fCurrentRun),
431 fUseScaling(ana.fUseScaling),
432 fUseCleaning(ana.fUseCleaning),
433 fFillHistos(ana.fFillHistos),
434 fV0MScaleFactor(ana.fV0MScaleFactor),
435 fSPDScaleFactor(ana.fSPDScaleFactor),
436 fTPCScaleFactor(ana.fTPCScaleFactor),
437 fV0MScaleFactorMC(ana.fV0MScaleFactorMC),
438 fV0MSPDOutlierPar0(ana.fV0MSPDOutlierPar0),
439 fV0MSPDOutlierPar1(ana.fV0MSPDOutlierPar1),
440 fV0MTPCOutlierPar0(ana.fV0MTPCOutlierPar0),
441 fV0MTPCOutlierPar1(ana.fV0MTPCOutlierPar1),
442 fV0MSPDSigmaOutlierPar0(ana.fV0MSPDSigmaOutlierPar0),
443 fV0MSPDSigmaOutlierPar1(ana.fV0MSPDSigmaOutlierPar1),
444 fV0MSPDSigmaOutlierPar2(ana.fV0MSPDSigmaOutlierPar2),
445 fV0MTPCSigmaOutlierPar0(ana.fV0MTPCSigmaOutlierPar0),
446 fV0MTPCSigmaOutlierPar1(ana.fV0MTPCSigmaOutlierPar1),
447 fV0MTPCSigmaOutlierPar2(ana.fV0MTPCSigmaOutlierPar2),
448 fV0MZDCOutlierPar0(ana.fV0MZDCOutlierPar0),
449 fV0MZDCOutlierPar1(ana.fV0MZDCOutlierPar1),
450 fV0MZDCEcalOutlierPar0(ana.fV0MZDCEcalOutlierPar0),
451 fV0MZDCEcalOutlierPar1(ana.fV0MZDCEcalOutlierPar1),
452 fTrackCuts(ana.fTrackCuts),
454 fOutliersCut(ana.fOutliersCut),
455 fQuality(ana.fQuality),
456 fIsSelected(ana.fIsSelected),
467 fCVHNbit(ana.fCVHNbit),
468 fCVLNbit(ana.fCVLNbit),
471 fCCENTbit(ana.fCCENTbit),
472 fCSEMIbit(ana.fCSEMIbit),
473 fCentV0M(ana.fCentV0M),
474 fCentV0A(ana.fCentV0A),
475 fCentV0C(ana.fCentV0C),
476 fCentFMD(ana.fCentFMD),
477 fCentTRK(ana.fCentTRK),
478 fCentTKL(ana.fCentTKL),
479 fCentCL0(ana.fCentCL0),
480 fCentCL1(ana.fCentCL1),
481 fCentCND(ana.fCentCND),
482 fCentV0MvsFMD(ana.fCentV0MvsFMD),
483 fCentTKLvsV0M(ana.fCentTKLvsV0M),
484 fCentZEMvsZDC(ana.fCentZEMvsZDC),
485 fHtempV0M(ana.fHtempV0M),
486 fHtempV0A(ana.fHtempV0A),
487 fHtempV0C(ana.fHtempV0C),
488 fHtempFMD(ana.fHtempFMD),
489 fHtempTRK(ana.fHtempTRK),
490 fHtempTKL(ana.fHtempTKL),
491 fHtempCL0(ana.fHtempCL0),
492 fHtempCL1(ana.fHtempCL1),
493 fHtempCND(ana.fHtempCND),
494 fHtempV0MvsFMD(ana.fHtempV0MvsFMD),
495 fHtempTKLvsV0M(ana.fHtempTKLvsV0M),
496 fHtempZEMvsZDC(ana.fHtempZEMvsZDC),
497 fOutputList(ana.fOutputList),
498 fHOutCentV0M (ana.fHOutCentV0M ),
499 fHOutCentV0A (ana.fHOutCentV0A ),
500 fHOutCentV0C (ana.fHOutCentV0C ),
501 fHOutCentV0MCVHN(ana.fHOutCentV0MCVHN),
502 fHOutCentV0MCVLN(ana.fHOutCentV0MCVLN),
503 fHOutCentV0MCVHNinMB(ana.fHOutCentV0MCVHNinMB),
504 fHOutCentV0MCVLNinMB(ana.fHOutCentV0MCVLNinMB),
505 fHOutCentV0MCCENT(ana.fHOutCentV0MCCENT),
506 fHOutCentV0MCSEMI(ana.fHOutCentV0MCSEMI),
507 fHOutCentV0MCCENTinMB(ana.fHOutCentV0MCCENTinMB),
508 fHOutCentV0MCSEMIinMB(ana.fHOutCentV0MCSEMIinMB),
509 fHOutCentV0MMSL(ana.fHOutCentV0MMSL),
510 fHOutCentV0MMSH(ana.fHOutCentV0MMSH),
511 fHOutCentV0MMUL(ana.fHOutCentV0MMUL),
512 fHOutCentV0MMLL(ana.fHOutCentV0MMLL),
513 fHOutCentV0MEJE(ana.fHOutCentV0MEJE),
514 fHOutCentV0MEGA(ana.fHOutCentV0MEGA),
515 fHOutCentV0MPHS(ana.fHOutCentV0MPHS),
516 fHOutCentV0MMSLinMB(ana.fHOutCentV0MMSLinMB),
517 fHOutCentV0MMSHinMB(ana.fHOutCentV0MMSHinMB),
518 fHOutCentV0MMULinMB(ana.fHOutCentV0MMULinMB),
519 fHOutCentV0MMLLinMB(ana.fHOutCentV0MMLLinMB),
520 fHOutCentV0MEJEinMB(ana.fHOutCentV0MEJEinMB),
521 fHOutCentV0MEGAinMB(ana.fHOutCentV0MEGAinMB),
522 fHOutCentV0MPHSinMB(ana.fHOutCentV0MPHSinMB),
523 fHOutCentFMD (ana.fHOutCentFMD ),
524 fHOutCentTRK (ana.fHOutCentTRK ),
525 fHOutCentTKL (ana.fHOutCentTKL ),
526 fHOutCentCL0 (ana.fHOutCentCL0 ),
527 fHOutCentCL1 (ana.fHOutCentCL1 ),
528 fHOutCentCND (ana.fHOutCentCND ),
529 fHOutCentV0MvsFMD(ana.fHOutCentV0MvsFMD),
530 fHOutCentTKLvsV0M(ana.fHOutCentTKLvsV0M),
531 fHOutCentZEMvsZDC(ana.fHOutCentZEMvsZDC),
532 fHOutCentV0MvsCentCL1(ana.fHOutCentV0MvsCentCL1),
533 fHOutCentV0MvsCentTRK(ana.fHOutCentV0MvsCentTRK),
534 fHOutCentTRKvsCentCL1(ana.fHOutCentTRKvsCentCL1),
535 fHOutCentV0MvsCentZDC(ana.fHOutCentV0MvsCentZDC),
536 fHOutCentV0AvsCentV0C(ana.fHOutCentV0AvsCentV0C),
537 fHOutCentV0AvsCentTRK(ana.fHOutCentV0AvsCentTRK),
538 fHOutCentV0AvsCentCND(ana.fHOutCentV0AvsCentCND),
539 fHOutCentV0AvsCentCL1(ana.fHOutCentV0AvsCentCL1),
540 fHOutCentV0CvsCentTRK(ana.fHOutCentV0CvsCentTRK),
541 fHOutCentV0CvsCentCND(ana.fHOutCentV0CvsCentCND),
542 fHOutCentV0CvsCentCL1(ana.fHOutCentV0CvsCentCL1),
543 fHOutMultV0AC(ana.fHOutMultV0AC),
544 fHOutMultV0M(ana.fHOutMultV0M),
545 fHOutMultV0A(ana.fHOutMultV0A),
546 fHOutMultV0C(ana.fHOutMultV0C),
547 fHOutMultV0O(ana.fHOutMultV0O),
548 fHOutMultV0Cells(ana.fHOutMultV0Cells),
549 fHOutMultFMD(ana.fHOutMultFMD),
550 fHOutMultTRK(ana.fHOutMultTRK),
551 fHOutMultTKL(ana.fHOutMultTKL),
552 fHOutMultCL0(ana.fHOutMultCL0),
553 fHOutMultCL1(ana.fHOutMultCL1),
554 fHOutMultCND(ana.fHOutMultCND),
555 fHOutMultV0MvsZDN(ana.fHOutMultV0MvsZDN),
556 fHOutMultZEMvsZDN(ana.fHOutMultZEMvsZDN),
557 fHOutMultV0MvsZDC(ana.fHOutMultV0MvsZDC),
558 fHOutMultZEMvsZDC(ana.fHOutMultZEMvsZDC),
559 fHOutMultZEMvsZDCw(ana.fHOutMultZEMvsZDCw),
560 fHOutMultV0MvsCL1(ana.fHOutMultV0MvsCL1),
561 fHOutMultV0MvsTRK(ana.fHOutMultV0MvsTRK),
562 fHOutMultTRKvsCL1(ana.fHOutMultTRKvsCL1),
563 fHOutMultV0MvsV0O(ana.fHOutMultV0MvsV0O),
564 fHOutMultV0OvsCL1(ana.fHOutMultV0OvsCL1),
565 fHOutMultV0OvsTRK(ana.fHOutMultV0OvsTRK),
566 fHOutMultCL1vsTKL(ana.fHOutMultCL1vsTKL),
567 fHOutCentV0Mqual1(ana.fHOutCentV0Mqual1),
568 fHOutCentTRKqual1(ana.fHOutCentTRKqual1),
569 fHOutCentCL1qual1(ana.fHOutCentCL1qual1),
570 fHOutMultV0MvsCL1qual1(ana.fHOutMultV0MvsCL1qual1),
571 fHOutMultV0MvsTRKqual1(ana.fHOutMultV0MvsTRKqual1),
572 fHOutMultTRKvsCL1qual1(ana.fHOutMultTRKvsCL1qual1),
573 fHOutCentV0Mqual2(ana.fHOutCentV0Mqual2),
574 fHOutCentTRKqual2(ana.fHOutCentTRKqual2),
575 fHOutCentCL1qual2(ana.fHOutCentCL1qual2),
576 fHOutMultV0MvsCL1qual2(ana.fHOutMultV0MvsCL1qual2),
577 fHOutMultV0MvsTRKqual2(ana.fHOutMultV0MvsTRKqual2),
578 fHOutMultTRKvsCL1qual2(ana.fHOutMultTRKvsCL1qual2),
579 fHOutQuality(ana.fHOutQuality),
580 fHOutVertex(ana.fHOutVertex),
581 fHOutVertexT0(ana.fHOutVertexT0)
587 //________________________________________________________________________
588 AliCentralitySelectionTask::~AliCentralitySelectionTask()
591 if (fOutputList && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) delete fOutputList;
592 if (fTrackCuts) delete fTrackCuts;
595 //________________________________________________________________________
596 void AliCentralitySelectionTask::UserCreateOutputObjects()
598 // Create the output containers
599 if(fDebug>1) printf("AnalysisCentralitySelectionTask::UserCreateOutputObjects() \n");
600 AliLog::SetClassDebugLevel("AliCentralitySelectionTask", AliLog::kInfo);
603 fOutputList = new TList();
604 fOutputList->SetOwner();
605 fHOutCentV0M = new TH1F("fHOutCentV0M","fHOutCentV0M; Centrality V0",505,0,101);
606 fHOutCentV0A = new TH1F("fHOutCentV0A","fHOutCentV0A; Centrality V0A",505,0,101);
607 fHOutCentV0C = new TH1F("fHOutCentV0C","fHOutCentV0C; Centrality V0C",505,0,101);
608 fHOutCentV0MCVHN= new TH1F("fHOutCentV0M_CVHN","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
609 fHOutCentV0MCVLN= new TH1F("fHOutCentV0M_CVLN","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
610 fHOutCentV0MCVHNinMB= new TH1F("fHOutCentV0M_CVHNinMB","fHOutCentV0M_CVHN; Centrality V0",505,0,101);
611 fHOutCentV0MCVLNinMB= new TH1F("fHOutCentV0M_CVLNinMB","fHOutCentV0M_CVLN; Centrality V0",505,0,101);
612 fHOutCentV0MCCENT= new TH1F("fHOutCentV0M_CCENT","fHOutCentV0M_CCENT; Centrality V0",505,0,101);
613 fHOutCentV0MCSEMI= new TH1F("fHOutCentV0M_CSEMI","fHOutCentV0M_CSEMI; Centrality V0",505,0,101);
614 fHOutCentV0MCCENTinMB= new TH1F("fHOutCentV0M_CCENTinMB","fHOutCentV0M_CCENT; Centrality V0",505,0,101);
615 fHOutCentV0MCSEMIinMB= new TH1F("fHOutCentV0M_CSEMIinMB","fHOutCentV0M_CSEMI; Centrality V0",505,0,101);
616 fHOutCentV0MMSL= new TH1F("fHOutCentV0M_MSL","fHOutCentV0M_MSL; Centrality V0",505,0,101);
617 fHOutCentV0MMSH= new TH1F("fHOutCentV0M_MSH","fHOutCentV0M_MSH; Centrality V0",505,0,101);
618 fHOutCentV0MMUL= new TH1F("fHOutCentV0M_MUL","fHOutCentV0M_MUL; Centrality V0",505,0,101);
619 fHOutCentV0MMLL= new TH1F("fHOutCentV0M_MLL","fHOutCentV0M_MLL; Centrality V0",505,0,101);
620 fHOutCentV0MEJE= new TH1F("fHOutCentV0M_EJE","fHOutCentV0M_EJE; Centrality V0",505,0,101);
621 fHOutCentV0MEGA= new TH1F("fHOutCentV0M_EGA","fHOutCentV0M_EGA; Centrality V0",505,0,101);
622 fHOutCentV0MPHS= new TH1F("fHOutCentV0M_PHS","fHOutCentV0M_PHS; Centrality V0",505,0,101);
623 fHOutCentV0MMSLinMB= new TH1F("fHOutCentV0M_MSLinMB","fHOutCentV0M_MSLinMB; Centrality V0",505,0,101);
624 fHOutCentV0MMSHinMB= new TH1F("fHOutCentV0M_MSHinMB","fHOutCentV0M_MSHinMB; Centrality V0",505,0,101);
625 fHOutCentV0MMULinMB= new TH1F("fHOutCentV0M_MULinMB","fHOutCentV0M_MULinMB; Centrality V0",505,0,101);
626 fHOutCentV0MMLLinMB= new TH1F("fHOutCentV0M_MLLinMB","fHOutCentV0M_MLLinMB; Centrality V0",505,0,101);
627 fHOutCentV0MEJEinMB= new TH1F("fHOutCentV0M_EJEinMB","fHOutCentV0M_EJEinMB; Centrality V0",505,0,101);
628 fHOutCentV0MEGAinMB= new TH1F("fHOutCentV0M_EGAinMB","fHOutCentV0M_EGAinMB; Centrality V0",505,0,101);
629 fHOutCentV0MPHSinMB= new TH1F("fHOutCentV0M_PHSinMB","fHOutCentV0M_PHSinMB; Centrality V0",505,0,101);
630 fHOutCentFMD = new TH1F("fHOutCentFMD","fHOutCentFMD; Centrality FMD",505,0,101);
631 fHOutCentTRK = new TH1F("fHOutCentTRK","fHOutCentTRK; Centrality TPC",505,0,101);
632 fHOutCentTKL = new TH1F("fHOutCentTKL","fHOutCentTKL; Centrality tracklets",505,0,101);
633 fHOutCentCL0 = new TH1F("fHOutCentCL0","fHOutCentCL0; Centrality SPD inner",505,0,101);
634 fHOutCentCL1 = new TH1F("fHOutCentCL1","fHOutCentCL1; Centrality SPD outer",505,0,101);
635 fHOutCentCND = new TH1F("fHOutCentCND","fHOutCentCND; Centrality candle",505,0,101);
636 fHOutCentV0MvsFMD= new TH1F("fHOutCentV0MvsFMD","fHOutCentV0MvsFMD; Centrality V0 vs FMD",505,0,101);
637 fHOutCentTKLvsV0M= new TH1F("fHOutCentTKLvsV0M","fHOutCentTKLvsV0M; Centrality tracklets vs V0",505,0,101);
638 fHOutCentZEMvsZDC= new TH1F("fHOutCentZEMvsZDC","fHOutCentZEMvsZDC; Centrality ZEM vs ZDC",505,0,101);
639 fHOutCentV0MvsCentCL1= new TH2F("fHOutCentV0MvsCentCL1","fHOutCentV0MvsCentCL1; Cent V0; Cent SPD",505,0,101,505,0,101);
640 fHOutCentV0MvsCentTRK= new TH2F("fHOutCentV0MvsCentTRK","fHOutCentV0MvsCentTRK; Cent V0; Cent TPC",505,0,101,505,0,101);
641 fHOutCentTRKvsCentCL1= new TH2F("fHOutCentTRKvsCentCL1","fHOutCentTRKvsCentCL1; Cent TPC; Cent SPD",505,0,101,505,0,101);
642 fHOutCentV0MvsCentZDC= new TH2F("fHOutCentV0MvsCentZDC","fHOutCentV0MvsCentZDC; Cent V0; Cent ZDC",505,0,101,505,0,101);
643 fHOutCentV0AvsCentV0C= new TH2F("fHOutCentV0AvsCentV0C","fHOutCentV0AvsCentV0C; Cent V0A; Cent V0C;", 505,0,101,505,0,101);
644 fHOutCentV0AvsCentTRK= new TH2F("fHOutCentV0AvsCentTRK","fHOutCentV0AvsCentTRK; Cent V0A; Cent TRK;", 505,0,101,505,0,101);
645 fHOutCentV0AvsCentCND= new TH2F("fHOutCentV0AvsCentCND","fHOutCentV0AvsCentCND; Cent V0A; Cent CND;", 505,0,101,505,0,101);
646 fHOutCentV0AvsCentCL1= new TH2F("fHOutCentV0AvsCentCL1","fHOutCentV0AvsCentCL1; Cent V0A; Cent CL1;", 505,0,101,505,0,101);
647 fHOutCentV0CvsCentTRK= new TH2F("fHOutCentV0CvsCentTRK","fHOutCentV0CvsCentTRK; Cent V0C; Cent TRK;", 505,0,101,505,0,101);
648 fHOutCentV0CvsCentCND= new TH2F("fHOutCentV0CvsCentCND","fHOutCentV0CvsCentCND; Cent V0C; Cent CND;", 505,0,101,505,0,101);
649 fHOutCentV0CvsCentCL1= new TH2F("fHOutCentV0CvsCentCL1","fHOutCentV0CvsCentCL1; Cent V0C; Cent CL1;", 505,0,101,505,0,101);
651 fHOutMultV0AC = new TH2F("fHOutMultV0AC","fHOutMultV0AC; Multiplicity V0A; Multiplicity V0C",1000,0,1000,1000,0,1000);
652 fHOutMultV0M = new TH1F("fHOutMultV0M","fHOutMultV0M; Multiplicity V0",25000,0,25000);
653 fHOutMultV0A = new TH1F("fHOutMultV0A","fHOutMultV0A; Multiplicity V0",25000,0,25000);
654 fHOutMultV0C = new TH1F("fHOutMultV0C","fHOutMultV0C; Multiplicity V0",25000,0,25000);
655 fHOutMultV0O = new TH1F("fHOutMultV0O","fHOutMultV0O; Multiplicity V0",40000,0,40000);
656 fHOutMultV0Cells = new TH2F("fHOutMultV0Cells","fHOutMultV0Cells",33,-0.5,32.5,33,-0.5,32.5);
657 fHOutMultFMD = new TH1F("fHOutMultFMD","fHOutMultFMD; Multiplicity FMD",24000,0,24000);
658 fHOutMultTRK = new TH1F("fHOutMultTRK","fHOutMultTRK; Multiplicity TPC",4000,0,4000);
659 fHOutMultTKL = new TH1F("fHOutMultTKL","fHOutMultTKL; Multiplicity tracklets",5000,0,5000);
660 fHOutMultCL0 = new TH1F("fHOutMultCL0","fHOutMultCL0; Multiplicity SPD inner",7000,0,7000);
661 fHOutMultCL1 = new TH1F("fHOutMultCL1","fHOutMultCL1; Multiplicity SPD outer",7000,0,7000);
662 fHOutMultCND = new TH1F("fHOutMultCND","fHOutMultCND; Multiplicity candle",4000,0,4000);
664 fHOutMultV0MvsZDN = new TH2F("fHOutMultV0MvsZDN","fHOutMultV0MvsZDN; Multiplicity V0; Energy ZDC-N",500,0,30000,500,0,180000);
665 fHOutMultZEMvsZDN = new TH2F("fHOutMultZEMvsZDN","fHOutMultZEMvsZDN; Energy ZEM; Energy ZDC-N",500,0,2500,500,0,180000);
666 fHOutMultV0MvsZDC = new TH2F("fHOutMultV0MvsZDC","fHOutMultV0MvsZDC; Multiplicity V0; Energy ZDC",500,0,30000,500,0,200000);
667 fHOutMultZEMvsZDC = new TH2F("fHOutMultZEMvsZDC","fHOutMultZEMvsZDC; Energy ZEM; Energy ZDC",500,0,2500,500,0,200000);
668 fHOutMultZEMvsZDCw = new TH2F("fHOutMultZEMvsZDCw","fHOutMultZEMvsZDCw; Energy ZEM; Energy ZDC (weigthed with V0 percentile)",500,0,2500,500,0,200000);
669 fHOutMultV0MvsCL1 = new TH2F("fHOutMultV0MvsCL1","fHOutMultV0MvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
670 fHOutMultV0MvsTRK = new TH2F("fHOutMultV0MvsTRK","fHOutMultV0MvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
671 fHOutMultTRKvsCL1 = new TH2F("fHOutMultTRKvsCL1","fHOutMultTRKvsCL1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
672 fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,40000);
673 fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",500,0,40000,700,0,7000);
674 fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",500,0,40000,400,0,4000);
675 fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,30000);
676 fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000);
677 fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000);
678 fHOutMultCL1vsTKL = new TH2F ("fHOutMultCL1vsTKL","fHOutMultCL1vsTKL; Multiplicity SPD outer; Multiplicity tracklets",700,0,7000,700,0,7000);
680 fHOutCentV0Mqual1 = new TH1F("fHOutCentV0M_qual1","fHOutCentV0M_qual1; Centrality V0",505,0,101);
681 fHOutCentTRKqual1 = new TH1F("fHOutCentTRK_qual1","fHOutCentTRK_qual1; Centrality TPC",505,0,101);
682 fHOutCentCL1qual1 = new TH1F("fHOutCentCL1_qual1","fHOutCentCL1_qual1; Centrality SPD outer",505,0,101);
683 fHOutMultV0MvsCL1qual1 = new TH2F("fHOutMultV0MvsCL1_qual1","fHOutMultV0MvsCL1_qual1; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
684 fHOutMultV0MvsTRKqual1 = new TH2F("fHOutMultV0MvsTRK_qual1","fHOutMultV0MvsTRK_qual1; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
685 fHOutMultTRKvsCL1qual1 = new TH2F("fHOutMultTRKvsCL1_qual1","fHOutMultTRKvsCL1_qual1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
687 fHOutCentV0Mqual2 = new TH1F("fHOutCentV0M_qual2","fHOutCentV0M_qual2; Centrality V0",505,0,101);
688 fHOutCentTRKqual2 = new TH1F("fHOutCentTRK_qual2","fHOutCentTRK_qual2; Centrality TPC",505,0,101);
689 fHOutCentCL1qual2 = new TH1F("fHOutCentCL1_qual2","fHOutCentCL1_qual2; Centrality SPD outer",505,0,101);
690 fHOutMultV0MvsCL1qual2 = new TH2F("fHOutMultV0MvsCL1_qual2","fHOutMultV0MvsCL1_qual2; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000);
691 fHOutMultV0MvsTRKqual2 = new TH2F("fHOutMultV0MvsTRK_qual2","fHOutMultV0MvsTRK_qual2; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000);
692 fHOutMultTRKvsCL1qual2 = new TH2F("fHOutMultTRKvsCL1_qual2","fHOutMultTRKvsCL1_qual2; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000);
694 fHOutQuality = new TH1F("fHOutQuality", "fHOutQuality", 100,-0.5,99.5);
695 fHOutVertex = new TH1F("fHOutVertex", "fHOutVertex", 100,-20,20);
696 fHOutVertexT0 = new TH1F("fHOutVertexT0", "fHOutVertexT0", 100,-20,20);
698 fOutputList->Add( fHOutCentV0M );
699 fOutputList->Add( fHOutCentV0A );
700 fOutputList->Add( fHOutCentV0C );
701 fOutputList->Add( fHOutCentV0MCVHN);
702 fOutputList->Add( fHOutCentV0MCVLN);
703 fOutputList->Add( fHOutCentV0MCVHNinMB);
704 fOutputList->Add( fHOutCentV0MCVLNinMB);
705 fOutputList->Add( fHOutCentV0MCCENT);
706 fOutputList->Add( fHOutCentV0MCSEMI);
707 fOutputList->Add( fHOutCentV0MCCENTinMB);
708 fOutputList->Add( fHOutCentV0MCSEMIinMB);
709 fOutputList->Add( fHOutCentV0MMSL );
710 fOutputList->Add( fHOutCentV0MMSH );
711 fOutputList->Add( fHOutCentV0MMUL );
712 fOutputList->Add( fHOutCentV0MMLL );
713 fOutputList->Add( fHOutCentV0MEJE );
714 fOutputList->Add( fHOutCentV0MEGA );
715 fOutputList->Add( fHOutCentV0MPHS );
716 fOutputList->Add( fHOutCentV0MMSLinMB);
717 fOutputList->Add( fHOutCentV0MMSHinMB);
718 fOutputList->Add( fHOutCentV0MMULinMB);
719 fOutputList->Add( fHOutCentV0MMLLinMB);
720 fOutputList->Add( fHOutCentV0MEJEinMB);
721 fOutputList->Add( fHOutCentV0MEGAinMB);
722 fOutputList->Add( fHOutCentV0MPHSinMB);
723 fOutputList->Add( fHOutCentFMD );
724 fOutputList->Add( fHOutCentTRK );
725 fOutputList->Add( fHOutCentTKL );
726 fOutputList->Add( fHOutCentCL0 );
727 fOutputList->Add( fHOutCentCL1 );
728 fOutputList->Add( fHOutCentCND );
729 fOutputList->Add( fHOutCentV0MvsFMD);
730 fOutputList->Add( fHOutCentTKLvsV0M);
731 fOutputList->Add( fHOutCentZEMvsZDC);
732 fOutputList->Add( fHOutCentV0MvsCentCL1);
733 fOutputList->Add( fHOutCentV0MvsCentTRK);
734 fOutputList->Add( fHOutCentTRKvsCentCL1);
735 fOutputList->Add( fHOutCentV0MvsCentZDC);
736 fOutputList->Add( fHOutCentV0AvsCentV0C);
737 fOutputList->Add( fHOutCentV0AvsCentTRK);
738 fOutputList->Add( fHOutCentV0AvsCentCND);
739 fOutputList->Add( fHOutCentV0AvsCentCL1);
740 fOutputList->Add( fHOutCentV0CvsCentTRK);
741 fOutputList->Add( fHOutCentV0CvsCentCND);
742 fOutputList->Add( fHOutCentV0CvsCentCL1);
743 fOutputList->Add( fHOutMultV0AC);
744 fOutputList->Add( fHOutMultV0M);
745 fOutputList->Add( fHOutMultV0A);
746 fOutputList->Add( fHOutMultV0C);
747 fOutputList->Add( fHOutMultV0O);
748 fOutputList->Add( fHOutMultV0Cells) ;
749 fOutputList->Add( fHOutMultFMD);
750 fOutputList->Add( fHOutMultTRK);
751 fOutputList->Add( fHOutMultTKL);
752 fOutputList->Add( fHOutMultCL0);
753 fOutputList->Add( fHOutMultCL1);
754 fOutputList->Add( fHOutMultCND);
755 fOutputList->Add( fHOutMultV0MvsZDN);
756 fOutputList->Add( fHOutMultZEMvsZDN);
757 fOutputList->Add( fHOutMultV0MvsZDC);
758 fOutputList->Add( fHOutMultZEMvsZDC);
759 fOutputList->Add( fHOutMultZEMvsZDCw);
760 fOutputList->Add( fHOutMultV0MvsCL1);
761 fOutputList->Add( fHOutMultV0MvsTRK);
762 fOutputList->Add( fHOutMultTRKvsCL1);
763 fOutputList->Add( fHOutMultV0MvsV0O);
764 fOutputList->Add( fHOutMultV0OvsCL1);
765 fOutputList->Add( fHOutMultV0OvsTRK);
766 fOutputList->Add( fHOutMultCL1vsTKL);
767 fOutputList->Add( fHOutCentV0Mqual1 );
768 fOutputList->Add( fHOutCentTRKqual1 );
769 fOutputList->Add( fHOutCentCL1qual1 );
770 fOutputList->Add( fHOutMultV0MvsCL1qual1);
771 fOutputList->Add( fHOutMultV0MvsTRKqual1);
772 fOutputList->Add( fHOutMultTRKvsCL1qual1);
773 fOutputList->Add( fHOutCentV0Mqual2 );
774 fOutputList->Add( fHOutCentTRKqual2 );
775 fOutputList->Add( fHOutCentCL1qual2 );
776 fOutputList->Add( fHOutMultV0MvsCL1qual2);
777 fOutputList->Add( fHOutMultV0MvsTRKqual2);
778 fOutputList->Add( fHOutMultTRKvsCL1qual2);
779 fOutputList->Add( fHOutQuality );
780 fOutputList->Add( fHOutVertex );
781 fOutputList->Add( fHOutVertexT0 );
783 PostData(1, fOutputList);
786 fTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
789 //________________________________________________________________________
790 void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
792 // Execute analysis for current event:
793 if(fDebug>1) printf(" **** AliCentralitySelectionTask::UserExec() \n");
795 Float_t zncEnergy = 0.; // ZNC Energy
796 Float_t zpcEnergy = 0.; // ZPC Energy
797 Float_t znaEnergy = 0.; // ZNA Energy
798 Float_t zpaEnergy = 0.; // ZPA Energy
799 Float_t zem1Energy = 0.; // ZEM1 Energy
800 Float_t zem2Energy = 0.; // ZEM2 Energy
801 Bool_t zdcEnergyCal = kFALSE; // if zdc is calibrated (in pass2)
803 Int_t nTracks = 0; // no. tracks
804 Int_t nTracklets = 0; // no. tracklets
805 Int_t nClusters[6] = {0}; // no. clusters on 6 ITS layers
806 Int_t nChips[2]; // no. chips on 2 SPD layers
807 Float_t spdCorr =0; // corrected spd2 multiplicity
808 Int_t multCND = 0; // no. tracks (candle condition)
810 Float_t multV0A = 0; // multiplicity from V0 reco side A
811 Float_t multV0C = 0; // multiplicity from V0 reco side C
812 Short_t multV0AOnline = 0; // multiplicity from V0 reco side A
813 Short_t multV0COnline = 0; // multiplicity from V0 reco side C
814 Float_t v0Corr = 0; // corrected V0 multiplicity (used for MC)
818 Float_t multFMDA = 0; // multiplicity from FMD on detector A
819 Float_t multFMDC = 0; // multiplicity from FMD on detector C
821 Float_t zvtx =0; // z-vertex SPD
822 Int_t zvtxNcont =0; // contributors to z-vertex SPD
824 Float_t zvtxT0 =0; // z-vertex T0
827 AliCentrality *esdCent = 0;
829 if(fAnalysisInput.CompareTo("ESD")==0){
831 AliVEvent* event = InputEvent();
832 AliESDEvent* esd = dynamic_cast<AliESDEvent*>(event);
834 AliError("No ESD Event");
840 if (SetupRun(esd)<0) {
841 AliError("Centrality File not available for this run");
845 esdCent = esd->GetCentrality();
848 AliESDVZERO* esdV0 = esd->GetVZEROData();
851 AliError("AliESDVZERO not available");
854 multV0A=esdV0->GetMTotV0A();
855 multV0C=esdV0->GetMTotV0C();
856 v0Corr = multV0A+multV0C;
858 multV0AOnline=esdV0->GetTriggerChargeA();
859 multV0COnline=esdV0->GetTriggerChargeC();
862 for(Int_t i = 0; i < 32; ++i) {
863 if (esdV0->GetBBFlag(i)) nV0C++;
864 if (esdV0->GetBBFlag(i+32)) nV0A++;
868 const AliESDTZERO* esdT0 = esd->GetESDTZERO();
871 AliError("AliESDTZERO not available");
874 Int_t trig=esdT0->GetT0Trig();
875 Bool_t kT0BB = kFALSE;
876 if(trig&1) kT0BB=kTRUE;
877 zvtxT0=esdT0->GetT0zVertex();
880 // ***** Trigger info
881 fIsSelected = ((esdV0->GetV0ADecision()==1) && (esdV0->GetV0CDecision()==1));
882 TString trigStr(esd->GetFiredTriggerClasses());
885 fCVHN=kFALSE; fCVLN=kFALSE; fCCENT=kFALSE; fCSEMI=kFALSE;
886 fMSL=kFALSE; fMSH=kFALSE; fMUL=kFALSE; fMLL=kFALSE;
887 fEJE=kFALSE; fEGA=kFALSE; fPHS=kFALSE;
889 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI")) && (fIsSelected))
891 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CVHN")) && (fIsSelected))
893 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CVLN")) && (fIsSelected))
895 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CCENT")) && (fIsSelected))
897 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CSEMI")) && (fIsSelected))
900 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1MSL")) && (fIsSelected))
902 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1MSH")) && (fIsSelected))
904 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1MUL")) && (fIsSelected))
906 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1MLL")) && (fIsSelected))
908 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1EJE")) && (fIsSelected))
910 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1EGA")) && (fIsSelected))
912 if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1PHS")) && (fIsSelected))
915 fCVHNbit=kFALSE; fCVLNbit=kFALSE; fCCENTbit=kFALSE; fCSEMIbit=kFALSE;
916 if (esdV0->GetTriggerBits() & (1<<8))
918 if (esdV0->GetTriggerBits() & (1<<6))
921 if (kT0BB && fCVHNbit)
923 if (kT0BB && fCVLNbit)
928 const AliESDVertex* vtxESD = esd->GetPrimaryVertexSPD();
929 zvtx = vtxESD->GetZ();
930 zvtxNcont = vtxESD->GetNContributors();
932 // ***** CB info (tracklets, clusters, chips)
933 //nTracks = event->GetNumberOfTracks();
934 nTracks = fTrackCuts ? (Short_t)fTrackCuts->GetReferenceMultiplicity(esd,kTRUE):-1;
935 Short_t nTrTPCcandle = 0;
936 for (Int_t iTracks = 0; iTracks < esd->GetNumberOfTracks(); iTracks++) {
937 AliESDtrack* track = esd->GetTrack(iTracks);
938 if (!track) continue;
939 if (track->Pt() > 0.5 && TMath::Abs(track->Eta()) < 0.8) nTrTPCcandle++;
941 multCND = nTrTPCcandle;
943 const AliMultiplicity *mult = esd->GetMultiplicity();
944 nTracklets = mult->GetNumberOfTracklets();
946 for(Int_t ilay=0; ilay<6; ilay++){
947 nClusters[ilay] = mult->GetNumberOfITSClusters(ilay);
950 for(Int_t ilay=0; ilay<2; ilay++){
951 nChips[ilay] = mult->GetNumberOfFiredChips(ilay);
954 spdCorr = AliESDUtils::GetCorrSPD2(nClusters[1],zvtx);
957 AliESDFMD *fmd = esd->GetFMDData();
958 Float_t totalMultA = 0;
959 Float_t totalMultC = 0;
960 const Float_t fFMDLowCut = 0.4;
962 for(UShort_t det=1;det<=3;det++) {
963 Int_t nRings = (det==1 ? 1 : 2);
964 for (UShort_t ir = 0; ir < nRings; ir++) {
965 Char_t ring = (ir == 0 ? 'I' : 'O');
966 UShort_t nsec = (ir == 0 ? 20 : 40);
967 UShort_t nstr = (ir == 0 ? 512 : 256);
968 for(UShort_t sec =0; sec < nsec; sec++) {
969 for(UShort_t strip = 0; strip < nstr; strip++) {
971 Float_t fmdMult = fmd->Multiplicity(det,ring,sec,strip);
972 if(fmdMult == 0 || fmdMult == AliESDFMD::kInvalidMult) continue;
974 Float_t nParticles=0;
976 if(fmdMult > fFMDLowCut) {
980 if (det<3) totalMultA = totalMultA + nParticles;
981 else totalMultC = totalMultC + nParticles;
987 multFMDA = totalMultA;
988 multFMDC = totalMultC;
991 AliESDZDC *esdZDC = esd->GetESDZDC();
992 zdcEnergyCal = esdZDC->AliESDZDC::TestBit(AliESDZDC::kEnergyCalibratedSignal);
994 zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy());
995 zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy());
996 znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy());
997 zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy());
999 zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy())/8.;
1000 zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy())/8.;
1001 znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy())/8.;
1002 zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy())/8.;
1004 zem1Energy = (Float_t) (esdZDC->GetZDCEMEnergy(0))/8.;
1005 zem2Energy = (Float_t) (esdZDC->GetZDCEMEnergy(1))/8.;
1009 else if(fAnalysisInput.CompareTo("AOD")==0){
1010 //AliAODEvent *aod = dynamic_cast<AliAODEvent*> (InputEvent());
1011 // to be implemented
1012 printf(" AOD analysis not yet implemented!!!\n\n");
1016 // ***** Scaling for MC
1019 v0Corr = Short_t((multV0A+multV0C) * fV0MScaleFactorMC);
1021 // ***** Scaling for Data
1023 v0Corr = Short_t(v0Corr / fV0MScaleFactor);
1024 spdCorr = spdCorr / fSPDScaleFactor;
1025 nTracks = Int_t(nTracks / fTPCScaleFactor);
1028 // ***** Centrality Selection
1029 if(fHtempV0M) fCentV0M = fHtempV0M->GetBinContent(fHtempV0M->FindBin((v0Corr)));
1030 if(fHtempV0A) fCentV0A = fHtempV0A->GetBinContent(fHtempV0A->FindBin((multV0A)));
1031 if(fHtempV0C) fCentV0C = fHtempV0C->GetBinContent(fHtempV0C->FindBin((multV0C)));
1032 if(fHtempFMD) fCentFMD = fHtempFMD->GetBinContent(fHtempFMD->FindBin((multFMDA+multFMDC)));
1033 if(fHtempTRK) fCentTRK = fHtempTRK->GetBinContent(fHtempTRK->FindBin(nTracks));
1034 if(fHtempTKL) fCentTKL = fHtempTKL->GetBinContent(fHtempTKL->FindBin(nTracklets));
1035 if(fHtempCL0) fCentCL0 = fHtempCL0->GetBinContent(fHtempCL0->FindBin(nClusters[0]));
1036 if(fHtempCL1) fCentCL1 = fHtempCL1->GetBinContent(fHtempCL1->FindBin(spdCorr));
1037 if(fHtempCND) fCentCND = fHtempCND->GetBinContent(fHtempCND->FindBin(multCND));
1039 if(fHtempV0MvsFMD) fCentV0MvsFMD = fHtempV0MvsFMD->GetBinContent(fHtempV0MvsFMD->FindBin((multV0A+multV0C)));
1040 if(fHtempTKLvsV0M) fCentTKLvsV0M = fHtempTKLvsV0M->GetBinContent(fHtempTKLvsV0M->FindBin(nTracklets));
1041 if(fHtempZEMvsZDC) fCentZEMvsZDC = fHtempZEMvsZDC->GetBinContent(fHtempZEMvsZDC->FindBin(zem1Energy+zem2Energy,zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1049 if (TMath::Abs(zvtx)>fZVCut || zvtxNcont<1) fQuality += 1;
1051 // ***** outliers, skip in case of MC input
1054 if (IsOutlierV0MSPD(spdCorr, v0Corr, int(fCentV0M))) fQuality += 2;
1056 if (IsOutlierV0MTPC(nTracks, v0Corr, int(fCentV0M))) fQuality += 4;
1058 if (IsOutlierV0MZDC((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
1059 (zdcEnergyCal==kFALSE) ) fQuality += 8;
1060 if (IsOutlierV0MZDCECal((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) &&
1061 (zdcEnergyCal==kTRUE) ) fQuality += 8;
1069 esdCent->SetQuality(fQuality);
1070 esdCent->SetCentralityV0M(fCentV0M);
1071 esdCent->SetCentralityV0A(fCentV0A);
1072 esdCent->SetCentralityV0C(fCentV0C);
1073 esdCent->SetCentralityFMD(fCentFMD);
1074 esdCent->SetCentralityTRK(fCentTRK);
1075 esdCent->SetCentralityTKL(fCentTKL);
1076 esdCent->SetCentralityCL0(fCentCL0);
1077 esdCent->SetCentralityCL1(fCentCL1);
1078 esdCent->SetCentralityCND(fCentCND);
1079 esdCent->SetCentralityV0MvsFMD(fCentV0MvsFMD);
1080 esdCent->SetCentralityTKLvsV0M(fCentTKLvsV0M);
1081 esdCent->SetCentralityZEMvsZDC(fCentZEMvsZDC);
1084 // filling QA histograms
1086 if ((fMB) && (abs(zvtx)<10)) fHOutMultCL1vsTKL->Fill(spdCorr,nTracklets);
1088 if (fCVHN) fHOutCentV0MCVHN->Fill(fCentV0M);
1089 if (fCVLN) fHOutCentV0MCVLN->Fill(fCentV0M);
1090 if (fCCENT) fHOutCentV0MCCENT->Fill(fCentV0M);
1091 if (fCSEMI) fHOutCentV0MCSEMI->Fill(fCentV0M);
1092 if (fMSL) fHOutCentV0MMSL->Fill(fCentV0M);
1093 if (fMSH) fHOutCentV0MMSH->Fill(fCentV0M);
1094 if (fMUL) fHOutCentV0MMUL->Fill(fCentV0M);
1095 if (fMLL) fHOutCentV0MMLL->Fill(fCentV0M);
1096 if (fEJE) fHOutCentV0MEJE->Fill(fCentV0M);
1097 if (fEGA) fHOutCentV0MEGA->Fill(fCentV0M);
1098 if (fPHS) fHOutCentV0MPHS->Fill(fCentV0M);
1100 if (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB) { // fill the QA histograms only for MB events!
1101 fHOutQuality->Fill(fQuality);
1102 fHOutVertex->Fill(zvtx);
1103 fHOutVertexT0->Fill(zvtxT0);
1106 fHOutCentV0M->Fill(fCentV0M);
1107 fHOutCentV0A->Fill(fCentV0A);
1108 fHOutCentV0C->Fill(fCentV0C);
1110 if (fCVHNbit) fHOutCentV0MCVHNinMB->Fill(fCentV0M);
1111 if (fCVLNbit) fHOutCentV0MCVLNinMB->Fill(fCentV0M);
1112 if (fCCENTbit) fHOutCentV0MCCENTinMB->Fill(fCentV0M);
1113 if (fCSEMIbit) fHOutCentV0MCSEMIinMB->Fill(fCentV0M);
1114 if (fMSL) fHOutCentV0MMSLinMB->Fill(fCentV0M);
1115 if (fMSH) fHOutCentV0MMSHinMB->Fill(fCentV0M);
1116 if (fMUL) fHOutCentV0MMULinMB->Fill(fCentV0M);
1117 if (fMLL) fHOutCentV0MMLLinMB->Fill(fCentV0M);
1118 if (fEJE) fHOutCentV0MEJEinMB->Fill(fCentV0M);
1119 if (fEGA) fHOutCentV0MEGAinMB->Fill(fCentV0M);
1120 if (fPHS) fHOutCentV0MPHSinMB->Fill(fCentV0M);
1122 fHOutCentFMD->Fill(fCentFMD);
1123 fHOutCentTRK->Fill(fCentTRK);
1124 fHOutCentTKL->Fill(fCentTKL);
1125 fHOutCentCL0->Fill(fCentCL0);
1126 fHOutCentCL1->Fill(fCentCL1);
1127 fHOutCentCND->Fill(fCentCND);
1128 fHOutCentV0MvsFMD->Fill(fCentV0MvsFMD);
1129 fHOutCentTKLvsV0M->Fill(fCentTKLvsV0M);
1130 fHOutCentZEMvsZDC->Fill(fCentZEMvsZDC);
1131 fHOutCentV0MvsCentCL1->Fill(fCentV0M,fCentCL1);
1132 fHOutCentV0MvsCentTRK->Fill(fCentV0M,fCentTRK);
1133 fHOutCentTRKvsCentCL1->Fill(fCentTRK,fCentCL1);
1134 fHOutCentV0MvsCentZDC->Fill(fCentV0M,fCentZEMvsZDC);
1135 fHOutCentV0AvsCentV0C->Fill(fCentV0A,fCentV0C);
1136 fHOutCentV0AvsCentTRK->Fill(fCentV0A,fCentTRK);
1137 fHOutCentV0AvsCentCND->Fill(fCentV0A,fCentCND);
1138 fHOutCentV0AvsCentCL1->Fill(fCentV0A,fCentCL1);
1139 fHOutCentV0CvsCentTRK->Fill(fCentV0C,fCentTRK);
1140 fHOutCentV0CvsCentCND->Fill(fCentV0C,fCentCND);
1141 fHOutCentV0CvsCentCL1->Fill(fCentV0C,fCentCL1);
1143 fHOutMultV0AC->Fill(multV0A,multV0C);
1144 fHOutMultV0M->Fill(multV0A+multV0C);
1145 fHOutMultV0A->Fill(multV0A);
1146 fHOutMultV0C->Fill(multV0C);
1147 fHOutMultV0O->Fill(multV0AOnline+multV0COnline);
1148 fHOutMultV0Cells->Fill(nV0A,nV0C);
1149 fHOutMultFMD->Fill(multFMDA+multFMDC);
1150 fHOutMultTRK->Fill(nTracks);
1151 fHOutMultTKL->Fill(nTracklets);
1152 fHOutMultCL0->Fill(nClusters[0]);
1153 fHOutMultCL1->Fill(spdCorr);
1154 fHOutMultCND->Fill(multCND);
1156 fHOutMultV0MvsZDN->Fill(v0Corr,(zncEnergy+znaEnergy));
1157 fHOutMultZEMvsZDN->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy));
1158 fHOutMultV0MvsZDC->Fill(v0Corr,(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1159 fHOutMultZEMvsZDC->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
1160 fHOutMultZEMvsZDCw->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy),fCentV0M);
1161 fHOutMultV0MvsCL1->Fill(v0Corr,spdCorr);
1162 fHOutMultV0MvsTRK->Fill(v0Corr,nTracks);
1163 fHOutMultTRKvsCL1->Fill(nTracks,spdCorr);
1164 fHOutMultV0MvsV0O->Fill(v0Corr,(multV0AOnline+multV0COnline));
1165 fHOutMultV0OvsCL1->Fill((multV0AOnline+multV0COnline),spdCorr);
1166 fHOutMultV0OvsTRK->Fill((multV0AOnline+multV0COnline),nTracks);
1167 } else if (fQuality%2 == 0) {
1168 fHOutCentV0Mqual1->Fill(fCentV0M);
1169 fHOutCentTRKqual1->Fill(fCentTRK);
1170 fHOutCentCL1qual1->Fill(fCentCL1);
1171 fHOutMultV0MvsCL1qual1->Fill(v0Corr,spdCorr);
1172 fHOutMultV0MvsTRKqual1->Fill(v0Corr,nTracks);
1173 fHOutMultTRKvsCL1qual1->Fill(nTracks,spdCorr);
1175 fHOutCentV0Mqual2->Fill(fCentV0M);
1176 fHOutCentTRKqual2->Fill(fCentTRK);
1177 fHOutCentCL1qual2->Fill(fCentCL1);
1178 fHOutMultV0MvsCL1qual2->Fill(v0Corr,spdCorr);
1179 fHOutMultV0MvsTRKqual2->Fill(v0Corr,nTracks);
1180 fHOutMultTRKvsCL1qual2->Fill(nTracks,spdCorr);
1183 PostData(1, fOutputList);
1186 //________________________________________________________________________
1187 void AliCentralitySelectionTask::Terminate(Option_t */*option*/)
1189 // Terminate analysis
1191 //________________________________________________________________________
1192 Int_t AliCentralitySelectionTask::SetupRun(const AliESDEvent* const esd)
1194 // Setup files for run
1199 // check if something to be done
1200 if (fCurrentRun == esd->GetRunNumber())
1203 fCurrentRun = esd->GetRunNumber();
1205 TString fileName =(Form("%s/COMMON/CENTRALITY/data/centrality.root", AliAnalysisManager::GetOADBPath()));
1206 AliInfo(Form("Setup Centrality Selection for run %d with file %s\n",fCurrentRun,fileName.Data()));
1208 AliOADBContainer *con = new AliOADBContainer("OADB");
1209 con->InitFromFile(fileName,"Centrality");
1211 AliOADBCentrality* centOADB = 0;
1212 centOADB = (AliOADBCentrality*)(con->GetObject(fCurrentRun));
1214 AliWarning(Form("Centrality OADB does not exist for run %d, using Default \n",fCurrentRun ));
1215 centOADB = (AliOADBCentrality*)(con->GetDefaultObject("oadbDefault"));
1219 fUseScaling = centOADB->UseScaling();
1220 fUseCleaning = centOADB->UseCleaning();
1223 fZVCut = centOADB->ZVCut();
1224 fOutliersCut = centOADB->OutliersCut();
1226 // centrality histos
1227 fHtempV0M = centOADB->V0hist();
1228 fHtempV0A = centOADB->V0Ahist();
1229 fHtempV0C = centOADB->V0Chist();
1230 fHtempTRK = centOADB->TPChist();
1231 fHtempCL1 = centOADB->SPDhist();
1232 fHtempCND = centOADB->CNDhist();
1233 fHtempZEMvsZDC = centOADB->ZEMvsZDChist();
1235 TString path = gSystem->ExpandPathName(fileName.Data());
1236 if (!fHtempV0M) AliWarning(Form("Calibration for V0M does not exist in %s", path.Data()));
1237 if (!fHtempV0A) AliWarning(Form("Calibration for V0A does not exist in %s", path.Data()));
1238 if (!fHtempV0C) AliWarning(Form("Calibration for V0C does not exist in %s", path.Data()));
1239 if (!fHtempTRK) AliWarning(Form("Calibration for TRK does not exist in %s", path.Data()));
1240 if (!fHtempCL1) AliWarning(Form("Calibration for CL1 does not exist in %s", path.Data()));
1241 if (!fHtempCND) AliWarning(Form("Calibration for CND does not exist in %s", path.Data()));
1242 if (!fHtempZEMvsZDC) AliWarning(Form("Calibration for ZEMvsZDC does not exist in %s", path.Data()));
1245 fV0MScaleFactor = centOADB->V0MScaleFactor();
1246 fSPDScaleFactor = centOADB->SPDScaleFactor();
1247 fTPCScaleFactor = centOADB->TPCScaleFactor();
1248 fV0MScaleFactorMC = centOADB->V0MScaleFactorMC();
1250 // outliers parameters
1251 fV0MSPDOutlierPar0 = centOADB->V0MSPDOutlierPar0();
1252 fV0MSPDOutlierPar1 = centOADB->V0MSPDOutlierPar1();
1253 fV0MTPCOutlierPar0 = centOADB->V0MTPCOutlierPar0();
1254 fV0MTPCOutlierPar1 = centOADB->V0MTPCOutlierPar1();
1256 fV0MSPDSigmaOutlierPar0 = centOADB->V0MSPDSigmaOutlierPar0();
1257 fV0MSPDSigmaOutlierPar1 = centOADB->V0MSPDSigmaOutlierPar1();
1258 fV0MSPDSigmaOutlierPar2 = centOADB->V0MSPDSigmaOutlierPar2();
1259 fV0MTPCSigmaOutlierPar0 = centOADB->V0MTPCSigmaOutlierPar0();
1260 fV0MTPCSigmaOutlierPar1 = centOADB->V0MTPCSigmaOutlierPar1();
1261 fV0MTPCSigmaOutlierPar2 = centOADB->V0MTPCSigmaOutlierPar2();
1263 fV0MZDCOutlierPar0 = centOADB->V0MZDCOutlierPar0();
1264 fV0MZDCOutlierPar1 = centOADB->V0MZDCOutlierPar1();
1265 fV0MZDCEcalOutlierPar0 = centOADB->V0MZDCEcalOutlierPar0();
1266 fV0MZDCEcalOutlierPar1 = centOADB->V0MZDCEcalOutlierPar1();
1275 //________________________________________________________________________
1276 Bool_t AliCentralitySelectionTask::IsOutlierV0MSPD(Float_t spd, Float_t v0, Int_t cent) const
1279 Float_t val = fV0MSPDOutlierPar0 + fV0MSPDOutlierPar1 * v0;
1280 Float_t spdSigma = fV0MSPDSigmaOutlierPar0 + fV0MSPDSigmaOutlierPar1*cent + fV0MSPDSigmaOutlierPar2*cent*cent;
1281 if ( TMath::Abs(spd-val) > fOutliersCut*spdSigma )
1287 //________________________________________________________________________
1288 Bool_t AliCentralitySelectionTask::IsOutlierV0MTPC(Int_t tracks, Float_t v0, Int_t cent) const
1291 Float_t val = fV0MTPCOutlierPar0 + fV0MTPCOutlierPar1 * v0;
1292 Float_t tpcSigma = fV0MTPCSigmaOutlierPar0 + fV0MTPCSigmaOutlierPar1*cent + fV0MTPCSigmaOutlierPar2*cent*cent;
1293 if ( TMath::Abs(tracks-val) > fOutliersCut*tpcSigma )
1299 //________________________________________________________________________
1300 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDC(Float_t zdc, Float_t v0) const
1303 Float_t val = fV0MZDCOutlierPar0 + fV0MZDCOutlierPar1 * v0;
1310 //________________________________________________________________________
1311 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDCECal(Float_t zdc, Float_t v0) const
1314 Float_t val = fV0MZDCEcalOutlierPar0 + fV0MZDCEcalOutlierPar1 * v0;