X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ANALYSIS%2FAliCentralitySelectionTask.cxx;h=ebf8a7641d1ba719a5d37e6fc0a8f9673184fa36;hb=e1fc279a094e46db36c72eb8d11f1e50c5dc88a0;hp=cd590253d23726fd6be264c0026d8fc8536e49fc;hpb=0caa916b85ea54b165b0284e603cd10593ef172d;p=u%2Fmrichter%2FAliRoot.git diff --git a/ANALYSIS/AliCentralitySelectionTask.cxx b/ANALYSIS/AliCentralitySelectionTask.cxx index cd590253d23..ebf8a7641d1 100644 --- a/ANALYSIS/AliCentralitySelectionTask.cxx +++ b/ANALYSIS/AliCentralitySelectionTask.cxx @@ -19,10 +19,13 @@ // author: Alberica Toia //***************************************************** +#include "AliCentralitySelectionTask.h" + #include #include #include #include +#include #include #include #include @@ -34,6 +37,7 @@ #include #include "AliAnalysisManager.h" +#include "AliHeader.h" #include "AliVEvent.h" #include "AliESD.h" #include "AliESDEvent.h" @@ -41,28 +45,33 @@ #include "AliESDInputHandler.h" #include "AliESDZDC.h" #include "AliESDFMD.h" +#include "AliESDTZERO.h" #include "AliESDVZERO.h" -#include "AliESDCentrality.h" #include "AliESDtrackCuts.h" +#include "AliESDVertex.h" +#include "AliCentrality.h" +#include "AliOADBCentrality.h" +#include "AliOADBContainer.h" #include "AliMultiplicity.h" #include "AliAODHandler.h" +#include "AliAODHeader.h" #include "AliAODEvent.h" -#include "AliESDVertex.h" #include "AliAODVertex.h" +#include "AliAODVZERO.h" +#include "AliAODTracklets.h" #include "AliAODMCHeader.h" -#include "AliMCEvent.h" #include "AliMCEventHandler.h" +#include "AliMCEvent.h" +#include "AliAODMCParticle.h" #include "AliMCParticle.h" #include "AliStack.h" -#include "AliHeader.h" -#include "AliAODMCParticle.h" #include "AliAnalysisTaskSE.h" #include "AliGenEventHeader.h" #include "AliGenHijingEventHeader.h" #include "AliPhysicsSelectionTask.h" #include "AliPhysicsSelection.h" #include "AliBackgroundSelection.h" -#include "AliCentralitySelectionTask.h" +#include "AliESDUtils.h" ClassImp(AliCentralitySelectionTask) @@ -70,14 +79,50 @@ ClassImp(AliCentralitySelectionTask) //________________________________________________________________________ AliCentralitySelectionTask::AliCentralitySelectionTask(): AliAnalysisTaskSE(), - fDebug(0), fAnalysisInput("ESD"), fIsMCInput(kFALSE), - fFile(0), - fFile2(0), fCurrentRun(-1), - fRunNo(-1), + fUseScaling(0), + fUseCleaning(0), + fFillHistos(0), + fV0MScaleFactor(0), + fSPDScaleFactor(0), + fTPCScaleFactor(0), + fV0MScaleFactorMC(0), + fV0MSPDOutlierPar0(0), + fV0MSPDOutlierPar1(0), + fV0MTPCOutlierPar0(0), + fV0MTPCOutlierPar1(0), + fV0MSPDSigmaOutlierPar0(0), + fV0MSPDSigmaOutlierPar1(0), + fV0MSPDSigmaOutlierPar2(0), + fV0MTPCSigmaOutlierPar0(0), + fV0MTPCSigmaOutlierPar1(0), + fV0MTPCSigmaOutlierPar2(0), + fV0MZDCOutlierPar0(0), + fV0MZDCOutlierPar1(0), + fV0MZDCEcalOutlierPar0(0), + fV0MZDCEcalOutlierPar1(0), fTrackCuts(0), + fZVCut(10), + fOutliersCut(5), + fQuality(999), + fIsSelected(0), + fMSL(0), + fMSH(0), + fMUL(0), + fMLL(0), + fEJE(0), + fEGA(0), + fPHS(0), + fCVHN(0), + fCVLN(0), + fCVHNbit(0), + fCVLNbit(0), + fCCENT(0), + fCSEMI(0), + fCCENTbit(0), + fCSEMIbit(0), fCentV0M(0), fCentFMD(0), fCentTRK(0), @@ -98,6 +143,28 @@ AliAnalysisTaskSE(), fHtempZEMvsZDC(0), fOutputList(0), fHOutCentV0M (0), + fHOutCentV0MCVHN(0), + fHOutCentV0MCVLN(0), + fHOutCentV0MCVHNinMB(0), + fHOutCentV0MCVLNinMB(0), + fHOutCentV0MCCENT(0), + fHOutCentV0MCSEMI(0), + fHOutCentV0MCCENTinMB(0), + fHOutCentV0MCSEMIinMB(0), + fHOutCentV0MMSL(0), + fHOutCentV0MMSH(0), + fHOutCentV0MMUL(0), + fHOutCentV0MMLL(0), + fHOutCentV0MEJE(0), + fHOutCentV0MEGA(0), + fHOutCentV0MPHS(0), + fHOutCentV0MMSLinMB(0), + fHOutCentV0MMSHinMB(0), + fHOutCentV0MMULinMB(0), + fHOutCentV0MMLLinMB(0), + fHOutCentV0MEJEinMB(0), + fHOutCentV0MEGAinMB(0), + fHOutCentV0MPHSinMB(0), fHOutCentFMD (0), fHOutCentTRK (0), fHOutCentTKL (0), @@ -106,33 +173,101 @@ AliAnalysisTaskSE(), fHOutCentV0MvsFMD(0), fHOutCentTKLvsV0M(0), fHOutCentZEMvsZDC(0), + fHOutCentV0MvsCentCL1(0), + fHOutCentV0MvsCentTRK(0), + fHOutCentTRKvsCentCL1(0), + fHOutCentV0MvsCentZDC(0), fHOutMultV0M(0), + fHOutMultV0O(0), fHOutMultFMD(0), fHOutMultTRK(0), fHOutMultTKL(0), fHOutMultCL0(0), fHOutMultCL1(0), + fHOutMultV0MvsZDN(0), + fHOutMultZEMvsZDN(0), fHOutMultV0MvsZDC(0), fHOutMultZEMvsZDC(0), + fHOutMultZEMvsZDCw(0), fHOutMultV0MvsCL1(0), fHOutMultV0MvsTRK(0), - fHOutMultTRKvsCL1(0) + fHOutMultTRKvsCL1(0), + fHOutMultV0MvsV0O(0), + fHOutMultV0OvsCL1(0), + fHOutMultV0OvsTRK(0), + fHOutCentV0Mqual1(0), + fHOutCentTRKqual1(0), + fHOutCentCL1qual1(0), + fHOutMultV0MvsCL1qual1(0), + fHOutMultV0MvsTRKqual1(0), + fHOutMultTRKvsCL1qual1(0), + fHOutCentV0Mqual2(0), + fHOutCentTRKqual2(0), + fHOutCentCL1qual2(0), + fHOutMultV0MvsCL1qual2(0), + fHOutMultV0MvsTRKqual2(0), + fHOutMultTRKvsCL1qual2(0), + fHOutQuality(0), + fHOutVertex(0), + fHOutVertexT0(0) { // Default constructor AliInfo("Centrality Selection enabled."); + + fUseScaling=kTRUE; + fUseCleaning=kTRUE; + fFillHistos=kFALSE; + fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO.,AliESDTZERO." + ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks "; } //________________________________________________________________________ AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name): AliAnalysisTaskSE(name), - fDebug(0), fAnalysisInput("ESD"), fIsMCInput(kFALSE), - fFile(0), - fFile2(0), fCurrentRun(-1), - fRunNo(-1), + fUseScaling(0), + fUseCleaning(0), + fFillHistos(0), + fV0MScaleFactor(0), + fSPDScaleFactor(0), + fTPCScaleFactor(0), + fV0MScaleFactorMC(0), + fV0MSPDOutlierPar0(0), + fV0MSPDOutlierPar1(0), + fV0MTPCOutlierPar0(0), + fV0MTPCOutlierPar1(0), + fV0MSPDSigmaOutlierPar0(0), + fV0MSPDSigmaOutlierPar1(0), + fV0MSPDSigmaOutlierPar2(0), + fV0MTPCSigmaOutlierPar0(0), + fV0MTPCSigmaOutlierPar1(0), + fV0MTPCSigmaOutlierPar2(0), + fV0MZDCOutlierPar0(0), + fV0MZDCOutlierPar1(0), + fV0MZDCEcalOutlierPar0(0), + fV0MZDCEcalOutlierPar1(0), fTrackCuts(0), + fZVCut(10), + fOutliersCut(5), + fQuality(999), + fIsSelected(0), + fMSL(0), + fMSH(0), + fMUL(0), + fMLL(0), + fEJE(0), + fEGA(0), + fPHS(0), + fCVHN(0), + fCVLN(0), + fCVHNbit(0), + fCVLNbit(0), + fCCENT(0), + fCSEMI(0), + fCCENTbit(0), + fCSEMIbit(0), fCentV0M(0), fCentFMD(0), fCentTRK(0), @@ -153,6 +288,28 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name): fHtempZEMvsZDC(0), fOutputList(0), fHOutCentV0M (0), + fHOutCentV0MCVHN(0), + fHOutCentV0MCVLN(0), + fHOutCentV0MCVHNinMB(0), + fHOutCentV0MCVLNinMB(0), + fHOutCentV0MCCENT(0), + fHOutCentV0MCSEMI(0), + fHOutCentV0MCCENTinMB(0), + fHOutCentV0MCSEMIinMB(0), + fHOutCentV0MMSL(0), + fHOutCentV0MMSH(0), + fHOutCentV0MMUL(0), + fHOutCentV0MMLL(0), + fHOutCentV0MEJE(0), + fHOutCentV0MEGA(0), + fHOutCentV0MPHS(0), + fHOutCentV0MMSLinMB(0), + fHOutCentV0MMSHinMB(0), + fHOutCentV0MMULinMB(0), + fHOutCentV0MMLLinMB(0), + fHOutCentV0MEJEinMB(0), + fHOutCentV0MEGAinMB(0), + fHOutCentV0MPHSinMB(0), fHOutCentFMD (0), fHOutCentTRK (0), fHOutCentTKL (0), @@ -161,21 +318,52 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name): fHOutCentV0MvsFMD(0), fHOutCentTKLvsV0M(0), fHOutCentZEMvsZDC(0), + fHOutCentV0MvsCentCL1(0), + fHOutCentV0MvsCentTRK(0), + fHOutCentTRKvsCentCL1(0), + fHOutCentV0MvsCentZDC(0), fHOutMultV0M(0), + fHOutMultV0O(0), fHOutMultFMD(0), fHOutMultTRK(0), fHOutMultTKL(0), fHOutMultCL0(0), fHOutMultCL1(0), + fHOutMultV0MvsZDN(0), + fHOutMultZEMvsZDN(0), fHOutMultV0MvsZDC(0), fHOutMultZEMvsZDC(0), + fHOutMultZEMvsZDCw(0), fHOutMultV0MvsCL1(0), fHOutMultV0MvsTRK(0), - fHOutMultTRKvsCL1(0) + fHOutMultTRKvsCL1(0), + fHOutMultV0MvsV0O(0), + fHOutMultV0OvsCL1(0), + fHOutMultV0OvsTRK(0), + fHOutCentV0Mqual1(0), + fHOutCentTRKqual1(0), + fHOutCentCL1qual1(0), + fHOutMultV0MvsCL1qual1(0), + fHOutMultV0MvsTRKqual1(0), + fHOutMultTRKvsCL1qual1(0), + fHOutCentV0Mqual2(0), + fHOutCentTRKqual2(0), + fHOutCentCL1qual2(0), + fHOutMultV0MvsCL1qual2(0), + fHOutMultV0MvsTRKqual2(0), + fHOutMultTRKvsCL1qual2(0), + fHOutQuality(0), + fHOutVertex(0), + fHOutVertexT0(0) { // Default constructor AliInfo("Centrality Selection enabled."); - DefineOutput(1, TList::Class()); + //DefineOutput(1, TList::Class()); + fUseScaling=kTRUE; + fUseCleaning=kTRUE; + fFillHistos=kFALSE; + fBranchNames="ESD:AliESDRun.,AliESDHeader.,AliESDZDC.,AliESDFMD.,AliESDVZERO.,AliESDTZERO." + ",SPDVertex.,TPCVertex.,PrimaryVertex.,AliMultiplicity.,Tracks "; } //________________________________________________________________________ @@ -191,14 +379,50 @@ AliCentralitySelectionTask& AliCentralitySelectionTask::operator=(const AliCentr //________________________________________________________________________ AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelectionTask& ana): AliAnalysisTaskSE(ana), - fDebug(ana.fDebug), - fAnalysisInput(ana.fDebug), + fAnalysisInput(ana.fAnalysisInput), fIsMCInput(ana.fIsMCInput), - fFile(ana.fFile), - fFile2(ana.fFile2), fCurrentRun(ana.fCurrentRun), - fRunNo(ana.fRunNo), + fUseScaling(ana.fUseScaling), + fUseCleaning(ana.fUseCleaning), + fFillHistos(ana.fFillHistos), + fV0MScaleFactor(ana.fV0MScaleFactor), + fSPDScaleFactor(ana.fSPDScaleFactor), + fTPCScaleFactor(ana.fTPCScaleFactor), + fV0MScaleFactorMC(ana.fV0MScaleFactorMC), + fV0MSPDOutlierPar0(ana.fV0MSPDOutlierPar0), + fV0MSPDOutlierPar1(ana.fV0MSPDOutlierPar1), + fV0MTPCOutlierPar0(ana.fV0MTPCOutlierPar0), + fV0MTPCOutlierPar1(ana.fV0MTPCOutlierPar1), + fV0MSPDSigmaOutlierPar0(ana.fV0MSPDSigmaOutlierPar0), + fV0MSPDSigmaOutlierPar1(ana.fV0MSPDSigmaOutlierPar1), + fV0MSPDSigmaOutlierPar2(ana.fV0MSPDSigmaOutlierPar2), + fV0MTPCSigmaOutlierPar0(ana.fV0MTPCSigmaOutlierPar0), + fV0MTPCSigmaOutlierPar1(ana.fV0MTPCSigmaOutlierPar1), + fV0MTPCSigmaOutlierPar2(ana.fV0MTPCSigmaOutlierPar2), + fV0MZDCOutlierPar0(ana.fV0MZDCOutlierPar0), + fV0MZDCOutlierPar1(ana.fV0MZDCOutlierPar1), + fV0MZDCEcalOutlierPar0(ana.fV0MZDCEcalOutlierPar0), + fV0MZDCEcalOutlierPar1(ana.fV0MZDCEcalOutlierPar1), fTrackCuts(ana.fTrackCuts), + fZVCut(ana.fZVCut), + fOutliersCut(ana.fOutliersCut), + fQuality(ana.fQuality), + fIsSelected(ana.fIsSelected), + fMSL(ana.fMSL), + fMSH(ana.fMSH), + fMUL(ana.fMUL), + fMLL(ana.fMLL), + fEJE(ana.fEJE), + fEGA(ana.fEGA), + fPHS(ana.fPHS), + fCVHN(ana.fCVHN), + fCVLN(ana.fCVLN), + fCVHNbit(ana.fCVHNbit), + fCVLNbit(ana.fCVLNbit), + fCCENT(ana.fCCENT), + fCSEMI(ana.fCSEMI), + fCCENTbit(ana.fCCENTbit), + fCSEMIbit(ana.fCSEMIbit), fCentV0M(ana.fCentV0M), fCentFMD(ana.fCentFMD), fCentTRK(ana.fCentTRK), @@ -219,6 +443,28 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelect fHtempZEMvsZDC(ana.fHtempZEMvsZDC), fOutputList(ana.fOutputList), fHOutCentV0M (ana.fHOutCentV0M ), + fHOutCentV0MCVHN(ana.fHOutCentV0MCVHN), + fHOutCentV0MCVLN(ana.fHOutCentV0MCVLN), + fHOutCentV0MCVHNinMB(ana.fHOutCentV0MCVHNinMB), + fHOutCentV0MCVLNinMB(ana.fHOutCentV0MCVLNinMB), + fHOutCentV0MCCENT(ana.fHOutCentV0MCCENT), + fHOutCentV0MCSEMI(ana.fHOutCentV0MCSEMI), + fHOutCentV0MCCENTinMB(ana.fHOutCentV0MCCENTinMB), + fHOutCentV0MCSEMIinMB(ana.fHOutCentV0MCSEMIinMB), + fHOutCentV0MMSL(ana.fHOutCentV0MMSL), + fHOutCentV0MMSH(ana.fHOutCentV0MMSH), + fHOutCentV0MMUL(ana.fHOutCentV0MMUL), + fHOutCentV0MMLL(ana.fHOutCentV0MMLL), + fHOutCentV0MEJE(ana.fHOutCentV0MEJE), + fHOutCentV0MEGA(ana.fHOutCentV0MEGA), + fHOutCentV0MPHS(ana.fHOutCentV0MPHS), + fHOutCentV0MMSLinMB(ana.fHOutCentV0MMSLinMB), + fHOutCentV0MMSHinMB(ana.fHOutCentV0MMSHinMB), + fHOutCentV0MMULinMB(ana.fHOutCentV0MMULinMB), + fHOutCentV0MMLLinMB(ana.fHOutCentV0MMLLinMB), + fHOutCentV0MEJEinMB(ana.fHOutCentV0MEJEinMB), + fHOutCentV0MEGAinMB(ana.fHOutCentV0MEGAinMB), + fHOutCentV0MPHSinMB(ana.fHOutCentV0MPHSinMB), fHOutCentFMD (ana.fHOutCentFMD ), fHOutCentTRK (ana.fHOutCentTRK ), fHOutCentTKL (ana.fHOutCentTKL ), @@ -227,21 +473,48 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelect fHOutCentV0MvsFMD(ana.fHOutCentV0MvsFMD), fHOutCentTKLvsV0M(ana.fHOutCentTKLvsV0M), fHOutCentZEMvsZDC(ana.fHOutCentZEMvsZDC), + fHOutCentV0MvsCentCL1(ana.fHOutCentV0MvsCentCL1), + fHOutCentV0MvsCentTRK(ana.fHOutCentV0MvsCentTRK), + fHOutCentTRKvsCentCL1(ana.fHOutCentTRKvsCentCL1), + fHOutCentV0MvsCentZDC(ana.fHOutCentV0MvsCentZDC), fHOutMultV0M(ana.fHOutMultV0M), + fHOutMultV0O(ana.fHOutMultV0O), fHOutMultFMD(ana.fHOutMultFMD), fHOutMultTRK(ana.fHOutMultTRK), fHOutMultTKL(ana.fHOutMultTKL), fHOutMultCL0(ana.fHOutMultCL0), fHOutMultCL1(ana.fHOutMultCL1), + fHOutMultV0MvsZDN(ana.fHOutMultV0MvsZDN), + fHOutMultZEMvsZDN(ana.fHOutMultZEMvsZDN), fHOutMultV0MvsZDC(ana.fHOutMultV0MvsZDC), fHOutMultZEMvsZDC(ana.fHOutMultZEMvsZDC), + fHOutMultZEMvsZDCw(ana.fHOutMultZEMvsZDCw), fHOutMultV0MvsCL1(ana.fHOutMultV0MvsCL1), fHOutMultV0MvsTRK(ana.fHOutMultV0MvsTRK), - fHOutMultTRKvsCL1(ana.fHOutMultTRKvsCL1) + fHOutMultTRKvsCL1(ana.fHOutMultTRKvsCL1), + fHOutMultV0MvsV0O(ana.fHOutMultV0MvsV0O), + fHOutMultV0OvsCL1(ana.fHOutMultV0OvsCL1), + fHOutMultV0OvsTRK(ana.fHOutMultV0OvsTRK), + fHOutCentV0Mqual1(ana.fHOutCentV0Mqual1), + fHOutCentTRKqual1(ana.fHOutCentTRKqual1), + fHOutCentCL1qual1(ana.fHOutCentCL1qual1), + fHOutMultV0MvsCL1qual1(ana.fHOutMultV0MvsCL1qual1), + fHOutMultV0MvsTRKqual1(ana.fHOutMultV0MvsTRKqual1), + fHOutMultTRKvsCL1qual1(ana.fHOutMultTRKvsCL1qual1), + fHOutCentV0Mqual2(ana.fHOutCentV0Mqual2), + fHOutCentTRKqual2(ana.fHOutCentTRKqual2), + fHOutCentCL1qual2(ana.fHOutCentCL1qual2), + fHOutMultV0MvsCL1qual2(ana.fHOutMultV0MvsCL1qual2), + fHOutMultV0MvsTRKqual2(ana.fHOutMultV0MvsTRKqual2), + fHOutMultTRKvsCL1qual2(ana.fHOutMultTRKvsCL1qual2), + fHOutQuality(ana.fHOutQuality), + fHOutVertex(ana.fHOutVertex), + fHOutVertexT0(ana.fHOutVertexT0) { // Copy Constructor + } - + //________________________________________________________________________ AliCentralitySelectionTask::~AliCentralitySelectionTask() { @@ -257,55 +530,157 @@ void AliCentralitySelectionTask::UserCreateOutputObjects() if(fDebug>1) printf("AnalysisCentralitySelectionTask::UserCreateOutputObjects() \n"); AliLog::SetClassDebugLevel("AliCentralitySelectionTask", AliLog::kInfo); - fOutputList = new TList(); - fOutputList->SetOwner(); - fHOutCentV0M = new TH1F("fHOutCentV0M","fHOutCentV0M; Centrality V0",101,-0.5,100.5); - fHOutCentFMD = new TH1F("fHOutCentFMD","fHOutCentFMD; Centrality FMD",101,-0.5,100.5); - fHOutCentTRK = new TH1F("fHOutCentTRK","fHOutCentTRK; Centrality TPC",101,-0.5,100.5); - fHOutCentTKL = new TH1F("fHOutCentTKL","fHOutCentTKL; Centrality tracklets",101,-0.5,100.5); - fHOutCentCL0 = new TH1F("fHOutCentCL0","fHOutCentCL0; Centrality SPD inner",101,-0.5,100.5); - fHOutCentCL1 = new TH1F("fHOutCentCL1","fHOutCentCL1; Centrality SPD outer",101,-0.5,100.5); - fHOutCentV0MvsFMD= new TH1F("fHOutCentV0MvsFMD","fHOutCentV0MvsFMD; Centrality V0 vs FMD",101,-0.5,100.5); - fHOutCentTKLvsV0M= new TH1F("fHOutCentTKLvsV0M","fHOutCentTKLvsV0M; Centrality tracklets vs V0",101,-0.5,100.5); - fHOutCentZEMvsZDC= new TH1F("fHOutCentZEMvsZDC","fHOutCentZEMvsZDC; Centrality ZEM vs ZDC",101,-0.5,100.5); - - fHOutMultV0M = new TH1F("fHOutMultV0M","fHOutMultV0M; Multiplicity V0",25000,0,25000); - fHOutMultFMD = new TH1F("fHOutMultFMD","fHOutMultFMD; Multiplicity FMD",24000,0,24000); - fHOutMultTRK = new TH1F("fHOutMultTRK","fHOutMultTRK; Multiplicity TPC",4000,0,4000); - fHOutMultTKL = new TH1F("fHOutMultTKL","fHOutMultTKL; Multiplicity tracklets",5000,0,5000); - fHOutMultCL0 = new TH1F("fHOutMultCL0","fHOutMultCL0; Multiplicity SPD inner",7000,0,7000); - fHOutMultCL1 = new TH1F("fHOutMultCL1","fHOutMultCL1; Multiplicity SPD outer",7000,0,7000); - fHOutMultV0MvsZDC = new TH2F("fHOutMultV0MvsZDC","fHOutMultV0MvsZDC; Multiplicity V0; Energy ZDC",500,0,25000,500,0,6000); - fHOutMultZEMvsZDC = new TH2F("fHOutMultZEMvsZDC","fHOutMultZEMvsZDC; Energy ZEM; Energy ZDC",500,0,2500,500,0,6000); - fHOutMultV0MvsCL1 = new TH2F("fHOutMultV0MvsCL1","fHOutMultV0MvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000); - fHOutMultV0MvsTRK = new TH2F("fHOutMultV0MvsTRK","fHOutMultV0MvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000); - fHOutMultTRKvsCL1 = new TH2F("fHOutMultTRKvsCL1","fHOutMultTRKvsCL1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000); - - fOutputList->Add( fHOutCentV0M ); - fOutputList->Add( fHOutCentFMD ); - fOutputList->Add( fHOutCentTRK ); - fOutputList->Add( fHOutCentTKL ); - fOutputList->Add( fHOutCentCL0 ); - fOutputList->Add( fHOutCentCL1 ); - fOutputList->Add( fHOutCentV0MvsFMD); - fOutputList->Add( fHOutCentTKLvsV0M); - fOutputList->Add( fHOutCentZEMvsZDC); - fOutputList->Add( fHOutMultV0M); - fOutputList->Add( fHOutMultFMD); - fOutputList->Add( fHOutMultTRK); - fOutputList->Add( fHOutMultTKL); - fOutputList->Add( fHOutMultCL0); - fOutputList->Add( fHOutMultCL1); - fOutputList->Add( fHOutMultV0MvsZDC); - fOutputList->Add( fHOutMultZEMvsZDC); - fOutputList->Add( fHOutMultV0MvsCL1); - fOutputList->Add( fHOutMultV0MvsTRK); - fOutputList->Add( fHOutMultTRKvsCL1); - - + if (fFillHistos) { + fOutputList = new TList(); + fOutputList->SetOwner(); + fHOutCentV0M = new TH1F("fHOutCentV0M","fHOutCentV0M; Centrality V0",505,0,101); + fHOutCentV0MCVHN= new TH1F("fHOutCentV0M_CVHN","fHOutCentV0M_CVHN; Centrality V0",505,0,101); + fHOutCentV0MCVLN= new TH1F("fHOutCentV0M_CVLN","fHOutCentV0M_CVLN; Centrality V0",505,0,101); + fHOutCentV0MCVHNinMB= new TH1F("fHOutCentV0M_CVHNinMB","fHOutCentV0M_CVHN; Centrality V0",505,0,101); + fHOutCentV0MCVLNinMB= new TH1F("fHOutCentV0M_CVLNinMB","fHOutCentV0M_CVLN; Centrality V0",505,0,101); + fHOutCentV0MCCENT= new TH1F("fHOutCentV0M_CCENT","fHOutCentV0M_CCENT; Centrality V0",505,0,101); + fHOutCentV0MCSEMI= new TH1F("fHOutCentV0M_CSEMI","fHOutCentV0M_CSEMI; Centrality V0",505,0,101); + fHOutCentV0MCCENTinMB= new TH1F("fHOutCentV0M_CCENTinMB","fHOutCentV0M_CCENT; Centrality V0",505,0,101); + fHOutCentV0MCSEMIinMB= new TH1F("fHOutCentV0M_CSEMIinMB","fHOutCentV0M_CSEMI; Centrality V0",505,0,101); + fHOutCentV0MMSL= new TH1F("fHOutCentV0M_MSL","fHOutCentV0M_MSL; Centrality V0",505,0,101); + fHOutCentV0MMSH= new TH1F("fHOutCentV0M_MSH","fHOutCentV0M_MSH; Centrality V0",505,0,101); + fHOutCentV0MMUL= new TH1F("fHOutCentV0M_MUL","fHOutCentV0M_MUL; Centrality V0",505,0,101); + fHOutCentV0MMLL= new TH1F("fHOutCentV0M_MLL","fHOutCentV0M_MLL; Centrality V0",505,0,101); + fHOutCentV0MEJE= new TH1F("fHOutCentV0M_EJE","fHOutCentV0M_EJE; Centrality V0",505,0,101); + fHOutCentV0MEGA= new TH1F("fHOutCentV0M_EGA","fHOutCentV0M_EGA; Centrality V0",505,0,101); + fHOutCentV0MPHS= new TH1F("fHOutCentV0M_PHS","fHOutCentV0M_PHS; Centrality V0",505,0,101); + fHOutCentV0MMSLinMB= new TH1F("fHOutCentV0M_MSLinMB","fHOutCentV0M_MSLinMB; Centrality V0",505,0,101); + fHOutCentV0MMSHinMB= new TH1F("fHOutCentV0M_MSHinMB","fHOutCentV0M_MSHinMB; Centrality V0",505,0,101); + fHOutCentV0MMULinMB= new TH1F("fHOutCentV0M_MULinMB","fHOutCentV0M_MULinMB; Centrality V0",505,0,101); + fHOutCentV0MMLLinMB= new TH1F("fHOutCentV0M_MLLinMB","fHOutCentV0M_MLLinMB; Centrality V0",505,0,101); + fHOutCentV0MEJEinMB= new TH1F("fHOutCentV0M_EJEinMB","fHOutCentV0M_EJEinMB; Centrality V0",505,0,101); + fHOutCentV0MEGAinMB= new TH1F("fHOutCentV0M_EGAinMB","fHOutCentV0M_EGAinMB; Centrality V0",505,0,101); + fHOutCentV0MPHSinMB= new TH1F("fHOutCentV0M_PHSinMB","fHOutCentV0M_PHSinMB; Centrality V0",505,0,101); + fHOutCentFMD = new TH1F("fHOutCentFMD","fHOutCentFMD; Centrality FMD",505,0,101); + fHOutCentTRK = new TH1F("fHOutCentTRK","fHOutCentTRK; Centrality TPC",505,0,101); + fHOutCentTKL = new TH1F("fHOutCentTKL","fHOutCentTKL; Centrality tracklets",505,0,101); + fHOutCentCL0 = new TH1F("fHOutCentCL0","fHOutCentCL0; Centrality SPD inner",505,0,101); + fHOutCentCL1 = new TH1F("fHOutCentCL1","fHOutCentCL1; Centrality SPD outer",505,0,101); + fHOutCentV0MvsFMD= new TH1F("fHOutCentV0MvsFMD","fHOutCentV0MvsFMD; Centrality V0 vs FMD",505,0,101); + fHOutCentTKLvsV0M= new TH1F("fHOutCentTKLvsV0M","fHOutCentTKLvsV0M; Centrality tracklets vs V0",505,0,101); + fHOutCentZEMvsZDC= new TH1F("fHOutCentZEMvsZDC","fHOutCentZEMvsZDC; Centrality ZEM vs ZDC",505,0,101); + fHOutCentV0MvsCentCL1= new TH2F("fHOutCentV0MvsCentCL1","fHOutCentV0MvsCentCL1; Cent V0; Cent SPD",505,0,101,505,0,101); + fHOutCentV0MvsCentTRK= new TH2F("fHOutCentV0MvsCentTRK","fHOutCentV0MvsCentTRK; Cent V0; Cent TPC",505,0,101,505,0,101); + fHOutCentTRKvsCentCL1= new TH2F("fHOutCentTRKvsCentCL1","fHOutCentTRKvsCentCL1; Cent TPC; Cent SPD",505,0,101,505,0,101); + fHOutCentV0MvsCentZDC= new TH2F("fHOutCentV0MvsCentZDC","fHOutCentV0MvsCentZDC; Cent V0; Cent ZDC",505,0,101,505,0,101); + fHOutMultV0M = new TH1F("fHOutMultV0M","fHOutMultV0M; Multiplicity V0",25000,0,30000); + fHOutMultV0O = new TH1F("fHOutMultV0O","fHOutMultV0O; Multiplicity V0",40000,0,40000); + fHOutMultFMD = new TH1F("fHOutMultFMD","fHOutMultFMD; Multiplicity FMD",24000,0,24000); + fHOutMultTRK = new TH1F("fHOutMultTRK","fHOutMultTRK; Multiplicity TPC",4000,0,4000); + fHOutMultTKL = new TH1F("fHOutMultTKL","fHOutMultTKL; Multiplicity tracklets",5000,0,5000); + fHOutMultCL0 = new TH1F("fHOutMultCL0","fHOutMultCL0; Multiplicity SPD inner",7000,0,7000); + fHOutMultCL1 = new TH1F("fHOutMultCL1","fHOutMultCL1; Multiplicity SPD outer",7000,0,7000); + fHOutMultV0MvsZDN = new TH2F("fHOutMultV0MvsZDN","fHOutMultV0MvsZDN; Multiplicity V0; Energy ZDC-N",500,0,30000,500,0,180000); + fHOutMultZEMvsZDN = new TH2F("fHOutMultZEMvsZDN","fHOutMultZEMvsZDN; Energy ZEM; Energy ZDC-N",500,0,2500,500,0,180000); + fHOutMultV0MvsZDC = new TH2F("fHOutMultV0MvsZDC","fHOutMultV0MvsZDC; Multiplicity V0; Energy ZDC",500,0,30000,500,0,200000); + fHOutMultZEMvsZDC = new TH2F("fHOutMultZEMvsZDC","fHOutMultZEMvsZDC; Energy ZEM; Energy ZDC",500,0,2500,500,0,200000); + fHOutMultZEMvsZDCw = new TH2F("fHOutMultZEMvsZDCw","fHOutMultZEMvsZDCw; Energy ZEM; Energy ZDC (weigthed with V0 percentile)",500,0,2500,500,0,200000); + fHOutMultV0MvsCL1 = new TH2F("fHOutMultV0MvsCL1","fHOutMultV0MvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000); + fHOutMultV0MvsTRK = new TH2F("fHOutMultV0MvsTRK","fHOutMultV0MvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000); + fHOutMultTRKvsCL1 = new TH2F("fHOutMultTRKvsCL1","fHOutMultTRKvsCL1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000); + fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,40000); + fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",500,0,40000,700,0,7000); + fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",500,0,40000,400,0,4000); + fHOutMultV0MvsV0O = new TH2F("fHOutMultV0MvsV0O","fHOutMultV0MvsV0O; Multiplicity V0; Multiplicity V0 Online",500,0,30000,500,0,30000); + fHOutMultV0OvsCL1 = new TH2F("fHOutMultV0OvsCL1","fHOutMultV0OvsCL1; Multiplicity V0; Multiplicity SPD outer",2500,0,30000,700,0,7000); + fHOutMultV0OvsTRK = new TH2F("fHOutMultV0OvsTRK","fHOutMultV0OvsTRK; Multiplicity V0; Multiplicity TPC",2500,0,30000,400,0,4000); + + fHOutCentV0Mqual1 = new TH1F("fHOutCentV0M_qual1","fHOutCentV0M_qual1; Centrality V0",505,0,101); + fHOutCentTRKqual1 = new TH1F("fHOutCentTRK_qual1","fHOutCentTRK_qual1; Centrality TPC",505,0,101); + fHOutCentCL1qual1 = new TH1F("fHOutCentCL1_qual1","fHOutCentCL1_qual1; Centrality SPD outer",505,0,101); + fHOutMultV0MvsCL1qual1 = new TH2F("fHOutMultV0MvsCL1_qual1","fHOutMultV0MvsCL1_qual1; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000); + fHOutMultV0MvsTRKqual1 = new TH2F("fHOutMultV0MvsTRK_qual1","fHOutMultV0MvsTRK_qual1; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000); + fHOutMultTRKvsCL1qual1 = new TH2F("fHOutMultTRKvsCL1_qual1","fHOutMultTRKvsCL1_qual1; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000); + + fHOutCentV0Mqual2 = new TH1F("fHOutCentV0M_qual2","fHOutCentV0M_qual2; Centrality V0",505,0,101); + fHOutCentTRKqual2 = new TH1F("fHOutCentTRK_qual2","fHOutCentTRK_qual2; Centrality TPC",505,0,101); + fHOutCentCL1qual2 = new TH1F("fHOutCentCL1_qual2","fHOutCentCL1_qual2; Centrality SPD outer",505,0,101); + fHOutMultV0MvsCL1qual2 = new TH2F("fHOutMultV0MvsCL1_qual2","fHOutMultV0MvsCL1_qual2; Multiplicity V0; Multiplicity SPD outer",2500,0,25000,700,0,7000); + fHOutMultV0MvsTRKqual2 = new TH2F("fHOutMultV0MvsTRK_qual2","fHOutMultV0MvsTRK_qual2; Multiplicity V0; Multiplicity TPC",2500,0,25000,400,0,4000); + fHOutMultTRKvsCL1qual2 = new TH2F("fHOutMultTRKvsCL1_qual2","fHOutMultTRKvsCL1_qual2; Multiplicity TPC; Multiplicity SPD outer",400,0,4000,700,0,7000); + + fHOutQuality = new TH1F("fHOutQuality", "fHOutQuality", 100,-0.5,99.5); + fHOutVertex = new TH1F("fHOutVertex", "fHOutVertex", 100,-20,20); + fHOutVertexT0 = new TH1F("fHOutVertexT0", "fHOutVertexT0", 100,-20,20); + + fOutputList->Add( fHOutCentV0M ); + fOutputList->Add( fHOutCentV0MCVHN); + fOutputList->Add( fHOutCentV0MCVLN); + fOutputList->Add( fHOutCentV0MCVHNinMB); + fOutputList->Add( fHOutCentV0MCVLNinMB); + fOutputList->Add( fHOutCentV0MCCENT); + fOutputList->Add( fHOutCentV0MCSEMI); + fOutputList->Add( fHOutCentV0MCCENTinMB); + fOutputList->Add( fHOutCentV0MCSEMIinMB); + fOutputList->Add( fHOutCentV0MMSL ); + fOutputList->Add( fHOutCentV0MMSH ); + fOutputList->Add( fHOutCentV0MMUL ); + fOutputList->Add( fHOutCentV0MMLL ); + fOutputList->Add( fHOutCentV0MEJE ); + fOutputList->Add( fHOutCentV0MEGA ); + fOutputList->Add( fHOutCentV0MPHS ); + fOutputList->Add( fHOutCentV0MMSLinMB); + fOutputList->Add( fHOutCentV0MMSHinMB); + fOutputList->Add( fHOutCentV0MMULinMB); + fOutputList->Add( fHOutCentV0MMLLinMB); + fOutputList->Add( fHOutCentV0MEJEinMB); + fOutputList->Add( fHOutCentV0MEGAinMB); + fOutputList->Add( fHOutCentV0MPHSinMB); + fOutputList->Add( fHOutCentFMD ); + fOutputList->Add( fHOutCentTRK ); + fOutputList->Add( fHOutCentTKL ); + fOutputList->Add( fHOutCentCL0 ); + fOutputList->Add( fHOutCentCL1 ); + fOutputList->Add( fHOutCentV0MvsFMD); + fOutputList->Add( fHOutCentTKLvsV0M); + fOutputList->Add( fHOutCentZEMvsZDC); + fOutputList->Add( fHOutCentV0MvsCentCL1); + fOutputList->Add( fHOutCentV0MvsCentTRK); + fOutputList->Add( fHOutCentTRKvsCentCL1); + fOutputList->Add( fHOutCentV0MvsCentZDC); + fOutputList->Add( fHOutMultV0M); + fOutputList->Add( fHOutMultV0O); + fOutputList->Add( fHOutMultFMD); + fOutputList->Add( fHOutMultTRK); + fOutputList->Add( fHOutMultTKL); + fOutputList->Add( fHOutMultCL0); + fOutputList->Add( fHOutMultCL1); + fOutputList->Add( fHOutMultV0MvsZDN); + fOutputList->Add( fHOutMultZEMvsZDN); + fOutputList->Add( fHOutMultV0MvsZDC); + fOutputList->Add( fHOutMultZEMvsZDC); + fOutputList->Add( fHOutMultZEMvsZDCw); + fOutputList->Add( fHOutMultV0MvsCL1); + fOutputList->Add( fHOutMultV0MvsTRK); + fOutputList->Add( fHOutMultTRKvsCL1); + fOutputList->Add( fHOutMultV0MvsV0O); + fOutputList->Add( fHOutMultV0OvsCL1); + fOutputList->Add( fHOutMultV0OvsTRK); + fOutputList->Add( fHOutCentV0Mqual1 ); + fOutputList->Add( fHOutCentTRKqual1 ); + fOutputList->Add( fHOutCentCL1qual1 ); + fOutputList->Add( fHOutMultV0MvsCL1qual1); + fOutputList->Add( fHOutMultV0MvsTRKqual1); + fOutputList->Add( fHOutMultTRKvsCL1qual1); + fOutputList->Add( fHOutCentV0Mqual2 ); + fOutputList->Add( fHOutCentTRKqual2 ); + fOutputList->Add( fHOutCentCL1qual2 ); + fOutputList->Add( fHOutMultV0MvsCL1qual2); + fOutputList->Add( fHOutMultV0MvsTRKqual2); + fOutputList->Add( fHOutMultTRKvsCL1qual2); + fOutputList->Add( fHOutQuality ); + fOutputList->Add( fHOutVertex ); + fOutputList->Add( fHOutVertexT0 ); + + PostData(1, fOutputList); + } + fTrackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts(); - - PostData(1, fOutputList); } //________________________________________________________________________ @@ -313,56 +688,131 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/) { // Execute analysis for current event: if(fDebug>1) printf(" **** AliCentralitySelectionTask::UserExec() \n"); - + Float_t zncEnergy = 0.; // ZNC Energy Float_t zpcEnergy = 0.; // ZPC Energy Float_t znaEnergy = 0.; // ZNA Energy Float_t zpaEnergy = 0.; // ZPA Energy Float_t zem1Energy = 0.; // ZEM1 Energy Float_t zem2Energy = 0.; // ZEM2 Energy - + Bool_t zdcEnergyCal = kFALSE; // if zdc is calibrated (in pass2) + Int_t nTracks = 0; // no. tracks Int_t nTracklets = 0; // no. tracklets - Int_t nClusters[6]; // no. clusters on 6 ITS layers + Int_t nClusters[6] = {0}; // no. clusters on 6 ITS layers Int_t nChips[2]; // no. chips on 2 SPD layers Float_t spdCorr =0; // corrected spd2 multiplicity Float_t multV0A = 0; // multiplicity from V0 reco side A Float_t multV0C = 0; // multiplicity from V0 reco side C + Short_t multV0AOnline = 0; // multiplicity from V0 reco side A + Short_t multV0COnline = 0; // multiplicity from V0 reco side C + Float_t v0Corr = 0; // corrected V0 multiplicity (used for MC) + Float_t multFMDA = 0; // multiplicity from FMD on detector A Float_t multFMDC = 0; // multiplicity from FMD on detector C - Short_t v0Corr = 0; // corrected V0 multiplicity - Short_t v0CorrResc = 0; // corrected and rescaled V0 multiplicity - Float_t zvtx =0; // z-vertex SPD - - AliESDCentrality *esdCent = 0; + Int_t zvtxNcont =0; // contributors to z-vertex SPD + + Float_t zvtxT0 =0; // z-vertex T0 - if(fAnalysisInput.CompareTo("ESD")==0){ + AliCentrality *esdCent = 0; + + if(fAnalysisInput.CompareTo("ESD")==0){ + AliVEvent* event = InputEvent(); AliESDEvent* esd = dynamic_cast(event); + if (!esd) { + AliError("No ESD Event"); + return; + } - if (fRunNo<=0) { - if (SetupRun(esd)<0) - AliFatal("Centrality File not available for this run"); + LoadBranches(); + + if (SetupRun(esd)<0) { + AliError("Centrality File not available for this run"); + return; } - + esdCent = esd->GetCentrality(); // ***** V0 info AliESDVZERO* esdV0 = esd->GetVZEROData(); + if (!esdV0) + { + AliError("AliESDVZERO not available"); + return; + } multV0A=esdV0->GetMTotV0A(); multV0C=esdV0->GetMTotV0C(); + v0Corr = multV0A+multV0C; + + multV0AOnline=esdV0->GetTriggerChargeA(); + multV0COnline=esdV0->GetTriggerChargeC(); - float v0CorrR; - v0Corr = (Short_t)GetCorrV0(esd,v0CorrR); - v0CorrResc = (Short_t)v0CorrR; + // ***** T0 info + const AliESDTZERO* esdT0 = esd->GetESDTZERO(); + if (!esdT0) + { + AliError("AliESDTZERO not available"); + return; + } + Int_t trig=esdT0->GetT0Trig(); + Bool_t kT0BB = kFALSE; + if(trig&1) kT0BB=kTRUE; + zvtxT0=esdT0->GetT0zVertex(); + + // ***** Trigger info + fIsSelected = ((esdV0->GetV0ADecision()==1) && (esdV0->GetV0CDecision()==1)); + TString trigStr(esd->GetFiredTriggerClasses()); + + fCVHN=kFALSE; fCVLN=kFALSE; fCCENT=kFALSE; fCSEMI=kFALSE; + fMSL=kFALSE; fMSH=kFALSE; fMUL=kFALSE; fMLL=kFALSE; + fEJE=kFALSE; fEGA=kFALSE; fPHS=kFALSE; + + if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CVHN")) && (fIsSelected)) + fCVHN=kTRUE; + if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CVLN")) && (fIsSelected)) + fCVLN=kTRUE; + if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CCENT")) && (fIsSelected)) + fCCENT=kTRUE; + if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CSEMI")) && (fIsSelected)) + fCSEMI=kTRUE; + + if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1MSL")) && (fIsSelected)) + fMSL=kTRUE; + if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1MSH")) && (fIsSelected)) + fMSH=kTRUE; + if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1MUL")) && (fIsSelected)) + fMUL=kTRUE; + if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1MLL")) && (fIsSelected)) + fMLL=kTRUE; + if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1EJE")) && (fIsSelected)) + fEJE=kTRUE; + if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1EGA")) && (fIsSelected)) + fEGA=kTRUE; + if ( (trigStr.Contains("-B-")) && (trigStr.Contains("CPBI1PHS")) && (fIsSelected)) + fPHS=kTRUE; + + fCVHNbit=kFALSE; fCVLNbit=kFALSE; fCCENTbit=kFALSE; fCSEMIbit=kFALSE; + if (esdV0->GetTriggerBits() & (1<<8)) + fCVHNbit=kTRUE; + if (esdV0->GetTriggerBits() & (1<<6)) + fCVLNbit=kTRUE; + + if (kT0BB && fCVHNbit) + fCCENTbit=kTRUE; + if (kT0BB && fCVLNbit) + fCSEMIbit=kTRUE; + + // ***** Vertex Info const AliESDVertex* vtxESD = esd->GetPrimaryVertexSPD(); zvtx = vtxESD->GetZ(); + zvtxNcont = vtxESD->GetNContributors(); // ***** CB info (tracklets, clusters, chips) //nTracks = event->GetNumberOfTracks(); @@ -380,165 +830,221 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/) nChips[ilay] = mult->GetNumberOfFiredChips(ilay); } - spdCorr = GetCorrSPD2(nClusters[1],zvtx); + spdCorr = AliESDUtils::GetCorrSPD2(nClusters[1],zvtx); // ***** FMD info AliESDFMD *fmd = esd->GetFMDData(); Float_t totalMultA = 0; Float_t totalMultC = 0; const Float_t fFMDLowCut = 0.4; - + for(UShort_t det=1;det<=3;det++) { Int_t nRings = (det==1 ? 1 : 2); for (UShort_t ir = 0; ir < nRings; ir++) { - Char_t ring = (ir == 0 ? 'I' : 'O'); - UShort_t nsec = (ir == 0 ? 20 : 40); - UShort_t nstr = (ir == 0 ? 512 : 256); - for(UShort_t sec =0; sec < nsec; sec++) { - for(UShort_t strip = 0; strip < nstr; strip++) { + Char_t ring = (ir == 0 ? 'I' : 'O'); + UShort_t nsec = (ir == 0 ? 20 : 40); + UShort_t nstr = (ir == 0 ? 512 : 256); + for(UShort_t sec =0; sec < nsec; sec++) { + for(UShort_t strip = 0; strip < nstr; strip++) { - Float_t FMDmult = fmd->Multiplicity(det,ring,sec,strip); - if(FMDmult == 0 || FMDmult == AliESDFMD::kInvalidMult) continue; + Float_t fmdMult = fmd->Multiplicity(det,ring,sec,strip); + if(fmdMult == 0 || fmdMult == AliESDFMD::kInvalidMult) continue; - Float_t nParticles=0; + Float_t nParticles=0; - if(FMDmult > fFMDLowCut) { - nParticles = 1.; - } + if(fmdMult > fFMDLowCut) { + nParticles = 1.; + } - if (det<3) totalMultA = totalMultA + nParticles; - else totalMultC = totalMultC + nParticles; + if (det<3) totalMultA = totalMultA + nParticles; + else totalMultC = totalMultC + nParticles; - } - } + } + } } } multFMDA = totalMultA; multFMDC = totalMultC; - + // ***** ZDC info AliESDZDC *esdZDC = esd->GetESDZDC(); - zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy())/8.; - zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy())/8.; - znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy())/8.; - zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy())/8.; + zdcEnergyCal = esdZDC->AliESDZDC::TestBit(AliESDZDC::kEnergyCalibratedSignal); + if (zdcEnergyCal) { + zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy()); + zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy()); + znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy()); + zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy()); + } else { + zncEnergy = (Float_t) (esdZDC->GetZDCN1Energy())/8.; + zpcEnergy = (Float_t) (esdZDC->GetZDCP1Energy())/8.; + znaEnergy = (Float_t) (esdZDC->GetZDCN2Energy())/8.; + zpaEnergy = (Float_t) (esdZDC->GetZDCP2Energy())/8.; + } zem1Energy = (Float_t) (esdZDC->GetZDCEMEnergy(0))/8.; zem2Energy = (Float_t) (esdZDC->GetZDCEMEnergy(1))/8.; } + else if(fAnalysisInput.CompareTo("AOD")==0){ //AliAODEvent *aod = dynamic_cast (InputEvent()); // to be implemented printf(" AOD analysis not yet implemented!!!\n\n"); return; + } + + // ***** Scaling for MC + if (fIsMCInput) { + fUseScaling=kFALSE; + v0Corr = Short_t((multV0A+multV0C) * fV0MScaleFactorMC); + } + // ***** Scaling for Data + if (fUseScaling) { + v0Corr = Short_t(v0Corr / fV0MScaleFactor); + spdCorr = spdCorr / fSPDScaleFactor; + nTracks = Int_t(nTracks / fTPCScaleFactor); } // ***** Centrality Selection - if(fHtempV0M) fCentV0M = fHtempV0M->GetBinContent(fHtempV0M->FindBin((v0Corr))); - /// else printf(" Centrality by V0 not available!!!\n\n"); + if(fHtempV0M) fCentV0M = fHtempV0M->GetBinContent(fHtempV0M->FindBin((v0Corr))); if(fHtempFMD) fCentFMD = fHtempFMD->GetBinContent(fHtempFMD->FindBin((multFMDA+multFMDC))); - // else printf(" Centrality by FMD not available!!!\n\n"); if(fHtempTRK) fCentTRK = fHtempTRK->GetBinContent(fHtempTRK->FindBin(nTracks)); - // else printf(" Centrality by TRK not available!!!\n\n"); if(fHtempTKL) fCentTKL = fHtempTKL->GetBinContent(fHtempTKL->FindBin(nTracklets)); - // else printf(" Centrality by TKL not available!!!\n\n"); if(fHtempCL0) fCentCL0 = fHtempCL0->GetBinContent(fHtempCL0->FindBin(nClusters[0])); - // else printf(" Centrality by CL0 not available!!!\n\n"); if(fHtempCL1) fCentCL1 = fHtempCL1->GetBinContent(fHtempCL1->FindBin(spdCorr)); - /// else printf(" Centrality by CL1 not available!!!\n\n"); - + if(fHtempV0MvsFMD) fCentV0MvsFMD = fHtempV0MvsFMD->GetBinContent(fHtempV0MvsFMD->FindBin((multV0A+multV0C))); - // else printf(" Centrality by V0 vs FMD not available!!!\n\n"); if(fHtempTKLvsV0M) fCentTKLvsV0M = fHtempTKLvsV0M->GetBinContent(fHtempTKLvsV0M->FindBin(nTracklets)); - // else printf(" Centrality by V0 vs TKL not available!!!\n\n"); - if(fHtempZEMvsZDC) fCentZEMvsZDC = fHtempZEMvsZDC->GetBinContent(fHtempZEMvsZDC->FindBin((zem1Energy+zem2Energy)/1000.)); - // else printf(" Centrality by ZEM vs ZDC not available!!!\n\n"); - - esdCent->SetCentralityV0M(fCentV0M); - esdCent->SetCentralityFMD(fCentFMD); - esdCent->SetCentralityTRK(fCentTRK); - esdCent->SetCentralityTKL(fCentTKL); - esdCent->SetCentralityCL0(fCentCL0); - esdCent->SetCentralityCL1(fCentCL1); - esdCent->SetCentralityV0MvsFMD(fCentV0MvsFMD); - esdCent->SetCentralityTKLvsV0M(fCentTKLvsV0M); - esdCent->SetCentralityZEMvsZDC(fCentZEMvsZDC); - - fHOutCentV0M->Fill(fCentV0M); - fHOutCentFMD->Fill(fCentFMD); - fHOutCentTRK->Fill(fCentTRK); - fHOutCentTKL->Fill(fCentTKL); - fHOutCentCL0->Fill(fCentCL0); - fHOutCentCL1->Fill(fCentCL1); - fHOutCentV0MvsFMD->Fill(fCentV0MvsFMD); - fHOutCentTKLvsV0M->Fill(fCentTKLvsV0M); - fHOutCentZEMvsZDC->Fill(fCentZEMvsZDC); - fHOutMultV0M->Fill(v0Corr); - fHOutMultFMD->Fill((multFMDA+multFMDC)); - fHOutMultTRK->Fill(nTracks); - fHOutMultTKL->Fill(nTracklets); - fHOutMultCL0->Fill(nClusters[0]); - fHOutMultCL1->Fill(spdCorr); - fHOutMultV0MvsZDC->Fill(v0Corr,(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy)); - fHOutMultZEMvsZDC->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy)); - fHOutMultV0MvsCL1->Fill(v0Corr,spdCorr); - fHOutMultV0MvsTRK->Fill(v0Corr,nTracks); - fHOutMultTRKvsCL1->Fill(nTracks,spdCorr); - - PostData(1, fOutputList); -} + if(fHtempZEMvsZDC) fCentZEMvsZDC = fHtempZEMvsZDC->GetBinContent(fHtempZEMvsZDC->FindBin(zem1Energy+zem2Energy,zncEnergy+znaEnergy+zpcEnergy+zpaEnergy)); -//________________________________________________________________________ -void AliCentralitySelectionTask::ReadCentralityHistos(TString fCentfilename) -{ - // Read centrality histograms - TDirectory *owd = gDirectory; - // Check if the file is present - TString path = gSystem->ExpandPathName(fCentfilename.Data()); - if (gSystem->AccessPathName(path)) { - AliError(Form("File %s does not exist", path.Data())); - return; + + // ***** Cleaning + if (fUseCleaning) { + fQuality=0; + + // ***** vertex + if (TMath::Abs(zvtx)>fZVCut || zvtxNcont<1) fQuality += 1; + + // ***** outliers, skip in case of MC input + if (!fIsMCInput) { + // **** V0 vs SPD + if (IsOutlierV0MSPD(spdCorr, v0Corr, int(fCentV0M))) fQuality += 2; + // ***** V0 vs TPC + if (IsOutlierV0MTPC(nTracks, v0Corr, int(fCentV0M))) fQuality += 4; + // ***** V0 vs ZDC + if (IsOutlierV0MZDC((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) && + (zdcEnergyCal==kFALSE) ) fQuality += 8; + if (IsOutlierV0MZDCECal((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) && + (zdcEnergyCal==kTRUE) ) fQuality += 8; + } + } else { + fQuality = 0; } - fFile = TFile::Open(fCentfilename); - owd->cd(); - fHtempV0M = (TH1F*) (fFile->Get("hmultV0_percentile")); - fHtempFMD = (TH1F*) (fFile->Get("hmultFMD_percentile")); - fHtempTRK = (TH1F*) (fFile->Get("hNtracks_percentile")); - fHtempTKL = (TH1F*) (fFile->Get("hNtracklets_percentile")); - fHtempCL0 = (TH1F*) (fFile->Get("hNclusters0_percentile")); - fHtempCL1 = (TH1F*) (fFile->Get("hNclusters1_percentile")); - owd->cd(); -} -//________________________________________________________________________ -void AliCentralitySelectionTask::ReadCentralityHistos2(TString fCentfilename2) -{ - // Read centrality histograms - TDirectory *owd = gDirectory; - TString path = gSystem->ExpandPathName(fCentfilename2.Data()); - if (gSystem->AccessPathName(path)) { - AliError(Form("File %s does not exist", path.Data())); - return; - } - fFile2 = TFile::Open(fCentfilename2); - owd->cd(); - fHtempV0MvsFMD = (TH1F*) (fFile2->Get("hmultV0vsmultFMD_all_percentile")); - fHtempTKLvsV0M = (TH1F*) (fFile2->Get("hNtrackletsvsmultV0_all_percentile")); - fHtempZEMvsZDC = (TH1F*) (fFile2->Get("hEzemvsEzdc_all_percentile")); - owd->cd(); -} + + if (esdCent) { + esdCent->SetQuality(fQuality); + esdCent->SetCentralityV0M(fCentV0M); + esdCent->SetCentralityFMD(fCentFMD); + esdCent->SetCentralityTRK(fCentTRK); + esdCent->SetCentralityTKL(fCentTKL); + esdCent->SetCentralityCL0(fCentCL0); + esdCent->SetCentralityCL1(fCentCL1); + esdCent->SetCentralityV0MvsFMD(fCentV0MvsFMD); + esdCent->SetCentralityTKLvsV0M(fCentTKLvsV0M); + esdCent->SetCentralityZEMvsZDC(fCentZEMvsZDC); + } + // filling QA histograms + if (fFillHistos) { + if (fCVHN) fHOutCentV0MCVHN->Fill(fCentV0M); + if (fCVLN) fHOutCentV0MCVLN->Fill(fCentV0M); + if (fCCENT) fHOutCentV0MCCENT->Fill(fCentV0M); + if (fCSEMI) fHOutCentV0MCSEMI->Fill(fCentV0M); + if (fMSL) fHOutCentV0MMSL->Fill(fCentV0M); + if (fMSH) fHOutCentV0MMSH->Fill(fCentV0M); + if (fMUL) fHOutCentV0MMUL->Fill(fCentV0M); + if (fMLL) fHOutCentV0MMLL->Fill(fCentV0M); + if (fEJE) fHOutCentV0MEJE->Fill(fCentV0M); + if (fEGA) fHOutCentV0MEGA->Fill(fCentV0M); + if (fPHS) fHOutCentV0MPHS->Fill(fCentV0M); + + if (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB) { // fill the QA histograms only for MB events! + fHOutQuality->Fill(fQuality); + fHOutVertex->Fill(zvtx); + fHOutVertexT0->Fill(zvtxT0); + + if (fQuality==0) { + fHOutCentV0M->Fill(fCentV0M); + + if (fCVHNbit) fHOutCentV0MCVHNinMB->Fill(fCentV0M); + if (fCVLNbit) fHOutCentV0MCVLNinMB->Fill(fCentV0M); + if (fCCENTbit) fHOutCentV0MCCENTinMB->Fill(fCentV0M); + if (fCSEMIbit) fHOutCentV0MCSEMIinMB->Fill(fCentV0M); + if (fMSL) fHOutCentV0MMSLinMB->Fill(fCentV0M); + if (fMSH) fHOutCentV0MMSHinMB->Fill(fCentV0M); + if (fMUL) fHOutCentV0MMULinMB->Fill(fCentV0M); + if (fMLL) fHOutCentV0MMLLinMB->Fill(fCentV0M); + if (fEJE) fHOutCentV0MEJEinMB->Fill(fCentV0M); + if (fEGA) fHOutCentV0MEGAinMB->Fill(fCentV0M); + if (fPHS) fHOutCentV0MPHSinMB->Fill(fCentV0M); + + + fHOutCentFMD->Fill(fCentFMD); + fHOutCentTRK->Fill(fCentTRK); + fHOutCentTKL->Fill(fCentTKL); + fHOutCentCL0->Fill(fCentCL0); + fHOutCentCL1->Fill(fCentCL1); + fHOutCentV0MvsFMD->Fill(fCentV0MvsFMD); + fHOutCentTKLvsV0M->Fill(fCentTKLvsV0M); + fHOutCentZEMvsZDC->Fill(fCentZEMvsZDC); + fHOutCentV0MvsCentCL1->Fill(fCentV0M,fCentCL1); + fHOutCentV0MvsCentTRK->Fill(fCentV0M,fCentTRK); + fHOutCentTRKvsCentCL1->Fill(fCentTRK,fCentCL1); + fHOutCentV0MvsCentZDC->Fill(fCentV0M,fCentZEMvsZDC); + fHOutMultV0M->Fill(multV0A+multV0C); + fHOutMultV0O->Fill(multV0AOnline+multV0COnline); + fHOutMultFMD->Fill(multFMDA+multFMDC); + fHOutMultTRK->Fill(nTracks); + fHOutMultTKL->Fill(nTracklets); + fHOutMultCL0->Fill(nClusters[0]); + fHOutMultCL1->Fill(spdCorr); + fHOutMultV0MvsZDN->Fill(v0Corr,(zncEnergy+znaEnergy)); + fHOutMultZEMvsZDN->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy)); + fHOutMultV0MvsZDC->Fill(v0Corr,(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy)); + fHOutMultZEMvsZDC->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy)); + fHOutMultZEMvsZDCw->Fill((zem1Energy+zem2Energy),(zncEnergy+znaEnergy+zpcEnergy+zpaEnergy),fCentV0M); + fHOutMultV0MvsCL1->Fill(v0Corr,spdCorr); + fHOutMultV0MvsTRK->Fill(v0Corr,nTracks); + fHOutMultTRKvsCL1->Fill(nTracks,spdCorr); + fHOutMultV0MvsV0O->Fill(v0Corr,(multV0AOnline+multV0COnline)); + fHOutMultV0OvsCL1->Fill((multV0AOnline+multV0COnline),spdCorr); + fHOutMultV0OvsTRK->Fill((multV0AOnline+multV0COnline),nTracks); + } else if (fQuality%2 == 0) { + fHOutCentV0Mqual1->Fill(fCentV0M); + fHOutCentTRKqual1->Fill(fCentTRK); + fHOutCentCL1qual1->Fill(fCentCL1); + fHOutMultV0MvsCL1qual1->Fill(v0Corr,spdCorr); + fHOutMultV0MvsTRKqual1->Fill(v0Corr,nTracks); + fHOutMultTRKvsCL1qual1->Fill(nTracks,spdCorr); + } else { + fHOutCentV0Mqual2->Fill(fCentV0M); + fHOutCentTRKqual2->Fill(fCentTRK); + fHOutCentCL1qual2->Fill(fCentCL1); + fHOutMultV0MvsCL1qual2->Fill(v0Corr,spdCorr); + fHOutMultV0MvsTRKqual2->Fill(v0Corr,nTracks); + fHOutMultTRKvsCL1qual2->Fill(nTracks,spdCorr); + } + } + PostData(1, fOutputList); + } +} //________________________________________________________________________ void AliCentralitySelectionTask::Terminate(Option_t */*option*/) { // Terminate analysis - if (fFile && fFile->IsOpen()) - fFile->Close(); - if (fFile2 && fFile2->IsOpen()) - fFile2->Close(); } //________________________________________________________________________ -Int_t AliCentralitySelectionTask::SetupRun(AliESDEvent* esd) +Int_t AliCentralitySelectionTask::SetupRun(const AliESDEvent* const esd) { // Setup files for run @@ -550,134 +1056,115 @@ Int_t AliCentralitySelectionTask::SetupRun(AliESDEvent* esd) return 0; else fCurrentRun = esd->GetRunNumber(); - - AliInfo(Form("Setup Centrality Selection for run %d\n",fCurrentRun)); - fRunNo = fCurrentRun; + TString fileName =(Form("%s/COMMON/CENTRALITY/data/centrality.root", AliAnalysisManager::GetOADBPath())); + AliInfo(Form("Setup Centrality Selection for run %d with file %s\n",fCurrentRun,fileName.Data())); - // CHANGE HERE FOR RUN RANGES - if ( fRunNo <= 137162 ) fRunNo = 137161; - else if ( fRunNo == 137365 ) fRunNo = 137366; - else if ( fRunNo >= 137366 ) fRunNo = 137366; - // CHANGE HERE FOR RUN RANGES - - TString fileName(Form("$ALICE_ROOT/ANALYSIS/macros/AliCentralityBy1D_%d.root", fRunNo)); - TString fileName2(Form("$ALICE_ROOT/ANALYSIS/macros/AliCentralityByFunction_%d.root", fRunNo)); + AliOADBContainer *con = new AliOADBContainer("OADB"); + con->InitFromFile(fileName,"Centrality"); + + AliOADBCentrality* centOADB = 0; + centOADB = (AliOADBCentrality*)(con->GetObject(fCurrentRun)); + if (!centOADB) { + AliWarning(Form("Centrality OADB does not exist for run %d, using Default \n",fCurrentRun )); + centOADB = (AliOADBCentrality*)(con->GetDefaultObject("oadbDefault")); + } + + // modes + fUseScaling = centOADB->UseScaling(); + fUseCleaning = centOADB->UseCleaning(); + + // cuts + fZVCut = centOADB->ZVCut(); + fOutliersCut = centOADB->OutliersCut(); + + // centrality histos + fHtempV0M = centOADB->V0hist(); + fHtempTRK = centOADB->TPChist(); + fHtempCL1 = centOADB->SPDhist(); + fHtempZEMvsZDC = centOADB->ZEMvsZDChist(); - AliInfo(Form("Centrality Selection for run %d is initialized with %s", fCurrentRun, fileName.Data())); - ReadCentralityHistos(fileName.Data()); - ReadCentralityHistos2(fileName2.Data()); - if (!fFile && !fFile2) { - AliFatal(Form("Run %d not known to centrality selection!", fCurrentRun)); - return -1; - } + TString path = gSystem->ExpandPathName(fileName.Data()); + if (!fHtempV0M) AliWarning(Form("Calibration for V0M does not exist in %s", path.Data())); + if (!fHtempTRK) AliWarning(Form("Calibration for TRK does not exist in %s", path.Data())); + if (!fHtempCL1) AliWarning(Form("Calibration for CL1 does not exist in %s", path.Data())); + if (!fHtempZEMvsZDC) AliWarning(Form("Calibration for ZEMvsZDC does not exist in %s", path.Data())); + + // scale factors + fV0MScaleFactor = centOADB->V0MScaleFactor(); + fSPDScaleFactor = centOADB->SPDScaleFactor(); + fTPCScaleFactor = centOADB->TPCScaleFactor(); + fV0MScaleFactorMC = centOADB->V0MScaleFactorMC(); + + // outliers parameters + fV0MSPDOutlierPar0 = centOADB->V0MSPDOutlierPar0(); + fV0MSPDOutlierPar1 = centOADB->V0MSPDOutlierPar1(); + fV0MTPCOutlierPar0 = centOADB->V0MTPCOutlierPar0(); + fV0MTPCOutlierPar1 = centOADB->V0MTPCOutlierPar1(); + + fV0MSPDSigmaOutlierPar0 = centOADB->V0MSPDSigmaOutlierPar0(); + fV0MSPDSigmaOutlierPar1 = centOADB->V0MSPDSigmaOutlierPar1(); + fV0MSPDSigmaOutlierPar2 = centOADB->V0MSPDSigmaOutlierPar2(); + fV0MTPCSigmaOutlierPar0 = centOADB->V0MTPCSigmaOutlierPar0(); + fV0MTPCSigmaOutlierPar1 = centOADB->V0MTPCSigmaOutlierPar1(); + fV0MTPCSigmaOutlierPar2 = centOADB->V0MTPCSigmaOutlierPar2(); + + fV0MZDCOutlierPar0 = centOADB->V0MZDCOutlierPar0(); + fV0MZDCOutlierPar1 = centOADB->V0MZDCOutlierPar1(); + fV0MZDCEcalOutlierPar0 = centOADB->V0MZDCEcalOutlierPar0(); + fV0MZDCEcalOutlierPar1 = centOADB->V0MZDCEcalOutlierPar1(); + + + return 0; } + + + //________________________________________________________________________ -Float_t AliCentralitySelectionTask::GetCorrV0(const AliESDEvent* esd, float &v0CorrResc) +Bool_t AliCentralitySelectionTask::IsOutlierV0MSPD(Float_t spd, Float_t v0, Int_t cent) const { - // correct V0 non-linearity, prepare a version rescaled to SPD2 corr - Double_t *par0; - Double_t *par1; - Double_t *par2; - - Double_t par0_137161[64] = { 6.71e-02 , 6.86e-02 , 7.06e-02 , 6.32e-02 , - 5.91e-02 , 6.07e-02 , 5.78e-02 , 5.73e-02 , 5.91e-02 , 6.22e-02 , - 5.90e-02 , 6.11e-02 , 5.55e-02 , 5.29e-02 , 5.19e-02 , 5.56e-02 , - 6.25e-02 , 7.03e-02 , 5.64e-02 , 5.81e-02 , 4.57e-02 , 5.30e-02 , - 5.13e-02 , 6.43e-02 , 6.27e-02 , 6.48e-02 , 6.07e-02 , 1.01e-01 , - 6.68e-02 , 7.16e-02 , 6.36e-02 , 5.95e-02 , 2.52e-02 , 2.82e-02 , - 2.56e-02 , 2.86e-02 , 2.82e-02 , 2.10e-02 , 2.13e-02 , 2.32e-02 , - 2.75e-02 , 4.34e-02 , 3.78e-02 , 4.52e-02 , 4.11e-02 , 3.89e-02 , - 4.10e-02 , 3.73e-02 , 4.51e-02 , 5.07e-02 , 5.42e-02 , 4.74e-02 , - 4.33e-02 , 4.44e-02 , 4.64e-02 , 3.01e-02 , 6.38e-02 , 5.26e-02 , - 4.99e-02 , 5.26e-02 , 5.47e-02 , 3.84e-02 , 5.00e-02 , 5.20e-02 }; - Double_t par1_137161[64] = { -6.68e-05 , -7.78e-05 , -6.88e-05 , -5.92e-05 , - -2.43e-05 , -3.54e-05 , -2.91e-05 , -1.99e-05 , -1.40e-05 , -4.01e-05 , - -2.29e-05 , -3.68e-05 , -2.53e-05 , -2.44e-06 , -9.22e-06 , -1.51e-05 , - -2.80e-05 , -2.34e-05 , -1.72e-05 , -1.81e-05 , -1.29e-05 , -2.65e-05 , - -1.61e-05 , -2.86e-05 , -1.74e-05 , -4.23e-05 , -3.41e-05 , -1.05e-04 , - -2.76e-05 , -4.71e-05 , -3.06e-05 , -2.32e-05 , -1.55e-06 , 2.15e-05 , - 1.40e-05 , 2.16e-05 , 1.21e-05 , 3.05e-06 , 1.67e-05 , -3.84e-06 , - 3.09e-06 , 1.50e-05 , 3.47e-06 , 4.87e-06 , -3.71e-07 , -1.75e-06 , - -1.80e-06 , 9.99e-06 , -6.46e-06 , -4.91e-06 , 1.33e-05 , -2.52e-07 , - -3.85e-06 , 4.94e-06 , -2.48e-07 , -1.20e-05 , 2.07e-06 , 6.12e-06 , - -1.18e-06 , 4.54e-06 , -1.54e-05 , -1.25e-05 , 1.46e-06 , -6.67e-06 }; - Double_t par2_137161[64] = { 1.29e-08 , 1.51e-08 , 1.43e-08 , 1.11e-08 , - 5.04e-09 , 6.99e-09 , 5.58e-09 , 4.15e-09 , 4.00e-09 , 8.22e-09 , - 4.97e-09 , 7.66e-09 , 4.91e-09 , 1.10e-09 , 2.64e-09 , 3.64e-09 , - 5.76e-09 , 5.46e-09 , 3.38e-09 , 3.47e-09 , 2.43e-09 , 4.13e-09 , - 2.80e-09 , 5.80e-09 , 3.86e-09 , 7.46e-09 , 5.98e-09 , 2.58e-08 , - 5.50e-09 , 8.72e-09 , 5.23e-09 , 4.37e-09 , 2.33e-09 , -6.01e-10 , - 3.99e-11 , -2.02e-10 , 7.67e-10 , 2.03e-09 , 1.17e-10 , 2.56e-09 , - 1.16e-09 , -4.75e-10 , 1.28e-09 , 1.23e-09 , 1.62e-09 , 1.61e-09 , - 1.93e-09 , 2.97e-10 , 2.21e-09 , 2.16e-09 , 5.22e-10 , 1.03e-09 , - 1.56e-09 , 5.00e-10 , 1.01e-09 , 2.93e-09 , 1.05e-09 , 9.96e-11 , - 1.21e-09 , 7.45e-10 , 3.07e-09 , 2.31e-09 , 6.70e-10 , 1.89e-09 }; - - Double_t par0_137366[64] = { 7.12e-02 , 7.34e-02 , 7.39e-02 , 6.54e-02 , 6.11e-02 , 6.31e-02 , 6.15e-02 , - 6.00e-02 , 6.10e-02 , 6.49e-02 , 6.17e-02 , 6.33e-02 , 6.00e-02 , 5.48e-02 , - 5.44e-02 , 5.81e-02 , 6.49e-02 , 7.07e-02 , 5.91e-02 , 6.18e-02 , 4.82e-02 , - 5.67e-02 , 5.36e-02 , 6.60e-02 , 6.37e-02 , 6.78e-02 , 6.31e-02 , 1.04e-01 , - 6.91e-02 , 7.32e-02 , 6.61e-02 , 6.16e-02 , 2.64e-02 , 2.81e-02 , 2.64e-02 , - 2.85e-02 , 2.87e-02 , 2.18e-02 , 2.19e-02 , 2.43e-02 , 2.81e-02 , 4.37e-02 , - 3.90e-02 , 4.66e-02 , 4.24e-02 , 4.09e-02 , 4.21e-02 , 3.88e-02 , 4.83e-02 , - 5.23e-02 , 5.44e-02 , 4.85e-02 , 4.42e-02 , 4.58e-02 , 4.74e-02 , 3.14e-02 , - 6.31e-02 , 5.30e-02 , 5.01e-02 , 5.33e-02 , 5.70e-02 , 3.95e-02 , 4.98e-02 , 5.31e-02 }; - Double_t par1_137366[64] = { -6.99e-05 , -6.99e-05 , -6.94e-05 , -6.55e-05 , -3.55e-05 , -4.50e-05 , - -3.10e-05 , -2.81e-05 , -2.29e-05 , -3.89e-05 , -2.53e-05 , -4.25e-05 , - -1.87e-05 , -2.01e-05 , -1.53e-05 , -2.14e-05 , -2.86e-05 , -4.70e-05 , - -2.23e-05 , -3.30e-05 ,-9.74e-06 , -2.62e-05 , -1.76e-05 , -2.38e-05 , - -2.40e-05 , -3.43e-05 , -2.75e-05 , -6.86e-05 ,-2.35e-05 , -4.45e-05 , - -2.51e-05 , -2.20e-05 , -1.25e-16 , -2.04e-17 , -2.06e-17 , -3.74e-19 , - -1.18e-18 , -2.02e-15 , -3.78e-06 , -1.26e-06 , -2.71e-06 , -6.23e-17 , - -7.39e-08 , -1.76e-16 , -8.98e-06 , -4.10e-18 , -1.34e-05 , -1.06e-16 , - -3.34e-06 , -1.04e-05 , -5.28e-06 , -7.34e-06 , -1.05e-05 , -7.68e-06 , - -1.78e-05 , -1.19e-05 , -1.78e-05 , -1.34e-06 , -9.23e-06 , -3.34e-06 , - -8.02e-06 , -1.39e-05 , -1.38e-05 , -1.40e-05 }; - Double_t par2_137366[64] = { 1.41e-08 , 1.47e-08 , 1.48e-08 , 1.24e-08 , 6.82e-09 , 8.73e-09 , 6.26e-09 , - 5.53e-09 , 5.40e-09 , 7.93e-09 , 5.49e-09 , 8.77e-09 , 4.21e-09 , 3.93e-09 , - 3.60e-09 , 4.67e-09 , 5.59e-09 , 8.81e-09 , 3.89e-09 , 6.19e-09 , 1.97e-09 , - 4.38e-09 , 3.26e-09 , 5.00e-09 , 4.58e-09 , 6.39e-09 , 5.03e-09 , 1.30e-08 , - 4.95e-09 , 8.26e-09 , 4.57e-09 , 4.10e-09 , 2.35e-09 , 2.30e-09 , 2.15e-09 , - 2.27e-09 , 2.17e-09 , 2.27e-09 , 2.97e-09 , 2.25e-09 , 1.69e-09 , 1.44e-09 , - 1.66e-09 , 1.75e-09 , 2.88e-09 , 1.82e-09 , 3.64e-09 , 1.80e-09 , 1.71e-09 , - 2.66e-09 , 3.01e-09 , 1.95e-09 , 2.64e-09 , 2.42e-09 , 3.68e-09 , 2.66e-09 , - 3.92e-09 , 1.18e-09 , 2.26e-09 , 1.57e-09 , 2.02e-09 , 2.71e-09 , 2.99e-09 , 3.04e-09 }; - - - if (esd->GetRunNumber() <= 137165) { - par0=par0_137161; - par1=par1_137161; - par2=par2_137161; - } else { - par0=par0_137366; - par1=par1_137366; - par2=par2_137366; - } - // - Float_t multCorr = 0; - Float_t multCorr2 = 0; - Float_t multChCorr[64]; - AliESDVZERO* esdV0 = esd->GetVZEROData(); - for(Int_t i = 0; i < 64; ++i) { - Double_t b = (esdV0->GetMultiplicity(i)*par1[i]-par0[i]); - Double_t s = (b*b-4.*par2[i]*esdV0->GetMultiplicity(i)*esdV0->GetMultiplicity(i)); - Double_t n = (s<0) ? -b : (-b + TMath::Sqrt(s)); - multChCorr[i] = 2.*esdV0->GetMultiplicity(i)/n*par0[i]; - multCorr += multChCorr[i]; - multCorr2 += (multChCorr[i]/par0[i]/64.); - } - v0CorrResc = multCorr2; - return multCorr; + // Clean outliers + Float_t val = fV0MSPDOutlierPar0 + fV0MSPDOutlierPar1 * v0; + Float_t spdSigma = fV0MSPDSigmaOutlierPar0 + fV0MSPDSigmaOutlierPar1*cent + fV0MSPDSigmaOutlierPar2*cent*cent; + if ( TMath::Abs(spd-val) > fOutliersCut*spdSigma ) + return kTRUE; + else + return kFALSE; } -//____________________________________________________________________ -Float_t AliCentralitySelectionTask::GetCorrSPD2(Float_t spd2raw,Float_t zv) +//________________________________________________________________________ +Bool_t AliCentralitySelectionTask::IsOutlierV0MTPC(Int_t tracks, Float_t v0, Int_t cent) const +{ + // Clean outliers + Float_t val = fV0MTPCOutlierPar0 + fV0MTPCOutlierPar1 * v0; + Float_t tpcSigma = fV0MTPCSigmaOutlierPar0 + fV0MTPCSigmaOutlierPar1*cent + fV0MTPCSigmaOutlierPar2*cent*cent; + if ( TMath::Abs(tracks-val) > fOutliersCut*tpcSigma ) + return kTRUE; + else + return kFALSE; +} + +//________________________________________________________________________ +Bool_t AliCentralitySelectionTask::IsOutlierV0MZDC(Float_t zdc, Float_t v0) const { - // renormalize N spd2 clusters at given Zv to acceptance at Zv=0 - const double pars[] = {8.10030e-01,-2.80364e-03,-7.19504e-04}; - zv -= pars[0]; - float corr = 1 + zv*(pars[1] + zv*pars[2]); - return corr>0 ? spd2raw/corr : -1; + // Clean outliers + Float_t val = fV0MZDCOutlierPar0 + fV0MZDCOutlierPar1 * v0; + if (zdc > val) + return kTRUE; + else + return kFALSE; } + +//________________________________________________________________________ +Bool_t AliCentralitySelectionTask::IsOutlierV0MZDCECal(Float_t zdc, Float_t v0) const +{ + // Clean outliers + Float_t val = fV0MZDCEcalOutlierPar0 + fV0MZDCEcalOutlierPar1 * v0; + if (zdc > val) + return kTRUE; + else + return kFALSE; +} + +