]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliCentralitySelectionTask.cxx
T0 ESD convert:only time from triggered interaction used for T0 raw vertex calculations
[u/mrichter/AliRoot.git] / ANALYSIS / AliCentralitySelectionTask.cxx
index bfe04871c8b865da47f77b582b8e65f89a6d6e32..a71e7c38cb10b0eb850aac2708961de9c86c08c9 100644 (file)
@@ -131,6 +131,7 @@ AliAnalysisTaskSE(),
   fCSEMIbit(0),
   fCentV0M(0),
   fCentV0A(0),
+  fCentV0A0(0),
   fCentV0A123(0),
   fCentV0C(0),
   fCentV0MEq(0),
@@ -168,6 +169,7 @@ AliAnalysisTaskSE(),
   fCentZPCtrue(0),
   fHtempV0M(0),
   fHtempV0A(0),
+  fHtempV0A0(0),
   fHtempV0A123(0),
   fHtempV0C(0),
   fHtempV0MEq(0),
@@ -206,6 +208,7 @@ AliAnalysisTaskSE(),
   fOutputList(0),
   fHOutCentV0M(0),
   fHOutCentV0A(0),
+  fHOutCentV0A0(0),
   fHOutCentV0A123(0),
   fHOutCentV0C(0),
   fHOutCentV0MEq(0),
@@ -272,6 +275,7 @@ AliAnalysisTaskSE(),
   fHOutMultV0AC(0),
   fHOutMultV0M(0),
   fHOutMultV0A(0),
+  fHOutMultV0A0(0),
   fHOutMultV0A123(0),
   fHOutMultV0C(0),
   fHOutMultV0MEq(0),
@@ -385,6 +389,7 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
   fCSEMIbit(0),
   fCentV0M(0),
   fCentV0A(0),
+  fCentV0A0(0),
   fCentV0A123(0),
   fCentV0C(0),
   fCentV0MEq(0),
@@ -422,6 +427,7 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
   fCentZPCtrue(0),
   fHtempV0M(0),
   fHtempV0A(0),
+  fHtempV0A0(0),
   fHtempV0A123(0),
   fHtempV0C(0),
   fHtempV0MEq(0),
@@ -460,6 +466,7 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
   fOutputList(0),
   fHOutCentV0M(0),
   fHOutCentV0A(0),
+  fHOutCentV0A0(0),
   fHOutCentV0A123(0),
   fHOutCentV0C(0),
   fHOutCentV0MEq(0),
@@ -526,6 +533,7 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
   fHOutMultV0AC(0),
   fHOutMultV0M(0),
   fHOutMultV0A(0),
+  fHOutMultV0A0(0),
   fHOutMultV0A123(0),
   fHOutMultV0C(0),
   fHOutMultV0MEq(0),
@@ -649,6 +657,7 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelect
   fCSEMIbit(ana.fCSEMIbit),
   fCentV0M(ana.fCentV0M),
   fCentV0A(ana.fCentV0A),
+  fCentV0A0(ana.fCentV0A0),
   fCentV0A123(ana.fCentV0A123),
   fCentV0C(ana.fCentV0C),
   fCentV0MEq(ana.fCentV0MEq),
@@ -686,6 +695,7 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelect
   fCentZPCtrue(ana.fCentZPCtrue),
   fHtempV0M(ana.fHtempV0M),
   fHtempV0A(ana.fHtempV0A),
+  fHtempV0A0(ana.fHtempV0A0),
   fHtempV0A123(ana.fHtempV0A123),
   fHtempV0C(ana.fHtempV0C),
   fHtempV0MEq(ana.fHtempV0MEq),
@@ -724,6 +734,7 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelect
   fOutputList(ana.fOutputList),
   fHOutCentV0M(ana.fHOutCentV0M),
   fHOutCentV0A(ana.fHOutCentV0A),
+  fHOutCentV0A0(ana.fHOutCentV0A0),
   fHOutCentV0A123(ana.fHOutCentV0A123),
   fHOutCentV0C(ana.fHOutCentV0C),
   fHOutCentV0MEq(ana.fHOutCentV0MEq),
@@ -790,6 +801,7 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelect
   fHOutMultV0AC(ana.fHOutMultV0AC),
   fHOutMultV0M(ana.fHOutMultV0M),
   fHOutMultV0A(ana.fHOutMultV0A),
+  fHOutMultV0A0(ana.fHOutMultV0A0),
   fHOutMultV0A123(ana.fHOutMultV0A123),
   fHOutMultV0C(ana.fHOutMultV0C),
   fHOutMultV0MEq(ana.fHOutMultV0MEq),
@@ -867,6 +879,7 @@ void AliCentralitySelectionTask::UserCreateOutputObjects()
     fOutputList->SetOwner();
     fHOutCentV0M     = new TH1F("fHOutCentV0M","fHOutCentV0M; Centrality V0",505,0,101);
     fHOutCentV0A    = new TH1F("fHOutCentV0A","fHOutCentV0A; Centrality V0A",505,0,101);
+    fHOutCentV0A0 = new TH1F("fHOutCentV0A0","fHOutCentV0A0; Centrality V0A-0",505,0,101);
     fHOutCentV0A123 = new TH1F("fHOutCentV0A123","fHOutCentV0A123; Centrality V0A-123",505,0,101);
     fHOutCentV0C    = new TH1F("fHOutCentV0C","fHOutCentV0C; Centrality V0C",505,0,101);
     fHOutCentV0MEq     = new TH1F("fHOutCentV0MEq","fHOutCentV0MEq; Centrality V0 equalized",505,0,101);
@@ -934,6 +947,7 @@ void AliCentralitySelectionTask::UserCreateOutputObjects()
     fHOutMultV0AC = new TH2F("fHOutMultV0AC","fHOutMultV0AC; Multiplicity V0A; Multiplicity V0C",1000,0,1000,1000,0,1000);
     fHOutMultV0M  = new TH1F("fHOutMultV0M","fHOutMultV0M; Multiplicity V0",25000,0,25000);
     fHOutMultV0A  = new TH1F("fHOutMultV0A","fHOutMultV0A; Multiplicity V0",25000,0,25000);
+    fHOutMultV0A0  = new TH1F("fHOutMultV0A0","fHOutMultV0A0; Multiplicity V0A-0",25000,0,25000);
     fHOutMultV0A123  = new TH1F("fHOutMultV0A123","fHOutMultV0A123; Multiplicity V0A-123",25000,0,25000);
     fHOutMultV0C  = new TH1F("fHOutMultV0C","fHOutMultV0C; Multiplicity V0",25000,0,25000);
     fHOutMultV0MEq  = new TH1F("fHOutMultV0MEq","fHOutMultV0MEq; Multiplicity V0",25000,0,25000);
@@ -993,6 +1007,7 @@ void AliCentralitySelectionTask::UserCreateOutputObjects()
   
     fOutputList->Add(fHOutCentV0M);
     fOutputList->Add(fHOutCentV0A);
+    fOutputList->Add(fHOutCentV0A0);
     fOutputList->Add(fHOutCentV0A123);
     fOutputList->Add(fHOutCentV0C);
     fOutputList->Add(fHOutCentV0MEq);
@@ -1060,6 +1075,7 @@ void AliCentralitySelectionTask::UserCreateOutputObjects()
     fOutputList->Add(fHOutMultV0AC); 
     fOutputList->Add(fHOutMultV0M); 
     fOutputList->Add(fHOutMultV0A); 
+    fOutputList->Add(fHOutMultV0A0); 
     fOutputList->Add(fHOutMultV0A123); 
     fOutputList->Add(fHOutMultV0C); 
     fOutputList->Add(fHOutMultV0MEq); 
@@ -1155,13 +1171,16 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
   Float_t  spdCorr =0;              //  corrected spd2 multiplicity
   Int_t    multCND = 0;             //  no. tracks (candle condition)
 
+  Float_t  multV0A0 = 0;            //  multiplicity from V0 reco side A (ring 0)
   Float_t  multV0A123 = 0;          //  multiplicity from V0 reco side A (ring 1-2-3)
   Float_t  multV0A  = 0;            //  multiplicity from V0 reco side A
   Float_t  multV0C  = 0;            //  multiplicity from V0 reco side C
   Float_t  multV0AEq  = 0;          //  multiplicity from V0 reco side A
   Float_t  multV0CEq  = 0;          //  multiplicity from V0 reco side C
-  Float_t  multV0ACorr  = 0;            //  multiplicity from V0 reco side A
-  Float_t  multV0CCorr  = 0;            //  multiplicity from V0 reco side C
+  Float_t  multV0A0Corr  = 0;       //  multiplicity from V0 reco side A (ring 0)
+  Float_t  multV0A123Corr  = 0;     //  multiplicity from V0 reco side A (ring 1-2-3)
+  Float_t  multV0ACorr  = 0;        //  multiplicity from V0 reco side A
+  Float_t  multV0CCorr  = 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)
@@ -1204,7 +1223,7 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
   if (esd) {
     if (strcmp(esd->GetESDRun()->GetBeamType(), "A-A") == 0) runType=0;
     else runType=1;
-    if (strcmp(esd->GetESDRun()->GetBeamType(), "p-p") == 0) runType=2;
+    if (strcmp(esd->GetESDRun()->GetBeamType(), "p-p") == 0) runType=2;  
   } else {
     Int_t runNumber = event->GetRunNumber();
     if ((runNumber >= 136851 && runNumber <= 139517) ||  // LHC10h
@@ -1236,11 +1255,15 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
   multV0C=esdV0->GetMTotV0C();
 
   // excluding innermost V0A ring
+  for (int i=32; i<40; i++)
+    multV0A0 += esdV0->GetMultiplicity(i);
   for (int i=40; i<64; i++)
     multV0A123 += esdV0->GetMultiplicity(i);
 
-  multV0ACorr = AliESDUtils::GetCorrV0A(multV0A,zvtx);    
-  multV0CCorr = AliESDUtils::GetCorrV0C(multV0C,zvtx);    
+  multV0A0Corr   = AliESDUtils::GetCorrV0A0(multV0A0,zvtx);    
+  multV0A123Corr = AliESDUtils::GetCorrV0A(multV0A123,zvtx);    
+  multV0ACorr    = AliESDUtils::GetCorrV0A(multV0A,zvtx);    
+  multV0CCorr    = AliESDUtils::GetCorrV0C(multV0C,zvtx);    
 
   v0Corr = multV0A+multV0C; // Todo: C.L. not clear why here we do not use the sum of the corrected values?
 
@@ -1256,15 +1279,26 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
   // Equalized signals
   multV0AEq=0.;
   multV0CEq=0.;
-  for(Int_t iCh = 4; iCh < 7; ++iCh) {
-    Double_t mult = esd->GetVZEROEqMultiplicity(iCh);
-    multV0AEq += mult;
+  if (esd) { // only for ESD?
+    for(Int_t iCh = 32; iCh < 64; ++iCh) {
+      Double_t mult = esd->GetVZEROEqMultiplicity(iCh);
+      multV0AEq += mult;
+    }
+    for(Int_t iCh = 0; iCh < 32; ++iCh) {
+      Double_t mult = esd->GetVZEROEqMultiplicity(iCh);
+      multV0CEq += mult;
+    }
   }
-  for(Int_t iCh = 0; iCh < 3; ++iCh) {
-    Double_t mult = esd->GetVZEROEqMultiplicity(iCh);
-    multV0CEq += mult;
+  else {
+    for(Int_t iCh = 32; iCh < 64; ++iCh) {
+      Double_t mult = aod->GetVZEROEqMultiplicity(iCh);
+      multV0AEq += mult;
+    }
+    for(Int_t iCh = 0; iCh < 32; ++iCh) {
+      Double_t mult = aod->GetVZEROEqMultiplicity(iCh);
+      multV0CEq += mult;
+    }
   }
-
   Bool_t kT0BB = kFALSE;    
   if (esd) {
     // ***** T0 info    
@@ -1539,7 +1573,8 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
   // ***** Scaling for MC
   if (fIsMCInput) {
     fUseScaling=kFALSE;
-    v0Corr  = Short_t((multV0A+multV0C)  * fV0MScaleFactorMC);
+    v0Corr   = Short_t((multV0A+multV0C)  * fV0MScaleFactorMC);
+    multV0A0 = multV0A0 * fV0MScaleFactorMC;
     multV0A  = multV0A * fV0MScaleFactorMC;
     multV0C  = multV0C * fV0MScaleFactorMC;
   }
@@ -1553,7 +1588,8 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
   // ***** Centrality Selection
   if(fHtempV0M) fCentV0M = fHtempV0M->GetBinContent(fHtempV0M->FindBin((v0Corr)));
   if(fHtempV0A) fCentV0A = fHtempV0A->GetBinContent(fHtempV0A->FindBin((multV0ACorr)));
-  if(fHtempV0A123) fCentV0A123 = fHtempV0A123->GetBinContent(fHtempV0A123->FindBin((multV0A123)));
+  if(fHtempV0A0) fCentV0A0 = fHtempV0A0->GetBinContent(fHtempV0A0->FindBin((multV0A0Corr)));
+  if(fHtempV0A123) fCentV0A123 = fHtempV0A123->GetBinContent(fHtempV0A123->FindBin((multV0A123Corr)));
   if(fHtempV0C) fCentV0C = fHtempV0C->GetBinContent(fHtempV0C->FindBin((multV0CCorr)));
   if(fHtempV0MEq) fCentV0MEq = fHtempV0MEq->GetBinContent(fHtempV0MEq->FindBin((multV0AEq+multV0CEq)));
   if(fHtempV0AEq) fCentV0AEq = fHtempV0AEq->GetBinContent(fHtempV0AEq->FindBin((multV0AEq)));
@@ -1641,6 +1677,7 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
     esdCent->SetQuality(fQuality);
     esdCent->SetCentralityV0M(fCentV0M);
     esdCent->SetCentralityV0A(fCentV0A);
+    esdCent->SetCentralityV0A0(fCentV0A0);
     esdCent->SetCentralityV0A123(fCentV0A123);
     esdCent->SetCentralityV0C(fCentV0C);
     esdCent->SetCentralityV0MEq(fCentV0MEq);
@@ -1660,24 +1697,6 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
     esdCent->SetCentralityV0MvsFMD(fCentV0MvsFMD);
     esdCent->SetCentralityTKLvsV0M(fCentTKLvsV0M);
     esdCent->SetCentralityZEMvsZDC(fCentZEMvsZDC);
-
-    esdCent->SetCentralityV0Mtrue(fCentV0Mtrue);
-    esdCent->SetCentralityV0Atrue(fCentV0Atrue);
-    esdCent->SetCentralityV0Ctrue(fCentV0Ctrue);
-    // no setters in AliCentrality for
-    // fCentV0MEqtrue
-    // fCentV0AEqtrue
-    // fCentV0CEqtrue
-    esdCent->SetCentralityFMDtrue(fCentFMDtrue);
-    esdCent->SetCentralityTRKtrue(fCentTRKtrue);
-    esdCent->SetCentralityTKLtrue(fCentTKLtrue);
-    esdCent->SetCentralityCL0true(fCentCL0true);
-    esdCent->SetCentralityCL1true(fCentCL1true);
-    esdCent->SetCentralityCNDtrue(fCentCNDtrue);
-    esdCent->SetCentralityZNAtrue(fCentZNAtrue);
-    esdCent->SetCentralityZNCtrue(fCentZNCtrue);
-    esdCent->SetCentralityZPAtrue(fCentZPAtrue);
-    esdCent->SetCentralityZPCtrue(fCentZPCtrue);
   }
 
   // filling QA histograms
@@ -1720,7 +1739,7 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
     if (((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB) && (runType==0)) ||
        ((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kINT7) && (runType==1)) || 
        ((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMB) && (runType==2)) ) { // fill the QA histograms only for MB events!
-      
+
       fHOutQuality->Fill(fQuality);
       fHOutVertex->Fill(zvtx);
       fHOutVertexT0->Fill(zvtxT0);
@@ -1728,6 +1747,7 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
       if (fQuality==0) {  
        fHOutCentV0M->Fill(fCentV0M);
        fHOutCentV0A->Fill(fCentV0A);
+       fHOutCentV0A0->Fill(fCentV0A0);
        fHOutCentV0A123->Fill(fCentV0A123);
        fHOutCentV0C->Fill(fCentV0C);
        fHOutCentV0MEq->Fill(fCentV0MEq);
@@ -1786,7 +1806,8 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
        fHOutMultV0AC->Fill(multV0A,multV0C);
        fHOutMultV0M->Fill(multV0ACorr+multV0CCorr);
        fHOutMultV0A->Fill(multV0ACorr);
-       fHOutMultV0A123->Fill(multV0A123);
+       fHOutMultV0A0->Fill(multV0A0Corr);
+       fHOutMultV0A123->Fill(multV0A123Corr);
        fHOutMultV0C->Fill(multV0CCorr);
        fHOutMultV0MEq->Fill(multV0AEq+multV0CEq);
        fHOutMultV0AEq->Fill(multV0AEq);
@@ -1896,6 +1917,7 @@ Int_t AliCentralitySelectionTask::SetupRun(const AliVEvent* const esd)
   // centrality histos
   fHtempV0M       = centOADB->V0hist(); 
   fHtempV0A       = centOADB->V0Ahist(); 
+  fHtempV0A0      = centOADB->V0A0hist(); 
   fHtempV0A123    = centOADB->V0A123hist(); 
   fHtempV0C       = centOADB->V0Chist(); 
   fHtempV0MEq     = centOADB->V0Eqhist(); 
@@ -2054,3 +2076,4 @@ Bool_t AliCentralitySelectionTask::IsOutlierV0MZDCECal(Float_t zdc, Float_t v0)
   else 
     return kFALSE;
 }
+