]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ANALYSIS/AliCentralitySelectionTask.cxx
Supressed warning when a data slot is not connected to a container
[u/mrichter/AliRoot.git] / ANALYSIS / AliCentralitySelectionTask.cxx
index ef0641dd738181d826f2e0cd47d539ea6df28a10..c7dc6e20c2a4594691d53a84802b474f08168988 100644 (file)
@@ -122,6 +122,8 @@ AliAnalysisTaskSE(),
   fHOutMultTKL(0),
   fHOutMultCL0(0),
   fHOutMultCL1(0),
+  fHOutMultV0MvsZDN(0),
+  fHOutMultZEMvsZDN(0),
   fHOutMultV0MvsZDC(0),
   fHOutMultZEMvsZDC(0),
   fHOutMultV0MvsCL1(0),
@@ -141,7 +143,7 @@ AliAnalysisTaskSE(),
   fLowRunN =136851;
   fHighRunN=139517;
 
-  for (Int_t i=0; i<(fHighRunN-fLowRunN); i++) {
+  for (Int_t i=0; i < 2667; i++) {
     V0MScaleFactor[i]=0.0;
     SPDScaleFactor[i]=0.0;
     TPCScaleFactor[i]=0.0;
@@ -202,6 +204,8 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
   fHOutMultTKL(0),
   fHOutMultCL0(0),
   fHOutMultCL1(0),
+  fHOutMultV0MvsZDN(0),
+  fHOutMultZEMvsZDN(0),
   fHOutMultV0MvsZDC(0),
   fHOutMultZEMvsZDC(0),
   fHOutMultV0MvsCL1(0),
@@ -222,7 +226,7 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const char *name):
 
   AliInfo("Centrality Selection enabled.");
   DefineOutput(1, TList::Class());
-  for (Int_t i=0; i<(fHighRunN-fLowRunN); i++) {
+  for (Int_t i=0; i<2667; i++) {
     V0MScaleFactor[i]=0.0;
     SPDScaleFactor[i]=0.0;
     TPCScaleFactor[i]=0.0;
@@ -293,6 +297,8 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelect
   fHOutMultTKL(ana.fHOutMultTKL),
   fHOutMultCL0(ana.fHOutMultCL0),
   fHOutMultCL1(ana.fHOutMultCL1),
+  fHOutMultV0MvsZDN(ana.fHOutMultV0MvsZDN),
+  fHOutMultZEMvsZDN(ana.fHOutMultZEMvsZDN),
   fHOutMultV0MvsZDC(ana.fHOutMultV0MvsZDC),
   fHOutMultZEMvsZDC(ana.fHOutMultZEMvsZDC),
   fHOutMultV0MvsCL1(ana.fHOutMultV0MvsCL1),
@@ -308,6 +314,13 @@ AliCentralitySelectionTask::AliCentralitySelectionTask(const AliCentralitySelect
   fHOutVertex(ana.fHOutVertex)
 {
   // Copy Constructor  
+    for (Int_t i=0; i<2667; i++) {
+       V0MScaleFactor[i]=0.0;
+       SPDScaleFactor[i]=0.0;
+       TPCScaleFactor[i]=0.0;
+       V0MScaleFactorMC[i]=0.0;
+    }
+
 }
  
 //________________________________________________________________________
@@ -344,8 +357,10 @@ void AliCentralitySelectionTask::UserCreateOutputObjects()
   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);
+  fHOutMultV0MvsZDN = new TH2F("fHOutMultV0MvsZDN","fHOutMultV0MvsZDN; Multiplicity V0; Energy ZDC-N",500,0,25000,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,25000,500,0,200000);
+  fHOutMultZEMvsZDC = new TH2F("fHOutMultZEMvsZDC","fHOutMultZEMvsZDC; Energy ZEM; Energy ZDC",500,0,2500,500,0,200000);
   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);
@@ -377,6 +392,8 @@ void AliCentralitySelectionTask::UserCreateOutputObjects()
   fOutputList->Add(  fHOutMultTKL); 
   fOutputList->Add(  fHOutMultCL0); 
   fOutputList->Add(  fHOutMultCL1); 
+  fOutputList->Add(  fHOutMultV0MvsZDN);
+  fOutputList->Add(  fHOutMultZEMvsZDN);
   fOutputList->Add(  fHOutMultV0MvsZDC);
   fOutputList->Add(  fHOutMultZEMvsZDC);
   fOutputList->Add(  fHOutMultV0MvsCL1);
@@ -412,7 +429,8 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
   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] = {0};      //  no. clusters on 6 ITS layers
@@ -514,13 +532,21 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
     
     // ***** 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<AliAODEvent*> (InputEvent());
@@ -555,8 +581,7 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
   
   if(fHtempV0MvsFMD) fCentV0MvsFMD = fHtempV0MvsFMD->GetBinContent(fHtempV0MvsFMD->FindBin((multV0A+multV0C)));
   if(fHtempTKLvsV0M) fCentTKLvsV0M = fHtempTKLvsV0M->GetBinContent(fHtempTKLvsV0M->FindBin(nTracklets));
-  if(fHtempZEMvsZDC) fCentZEMvsZDC = fHtempZEMvsZDC->GetBinContent(fHtempZEMvsZDC->FindBin((zem1Energy+zem2Energy)/1000.));
-
+  if(fHtempZEMvsZDC) fCentZEMvsZDC = fHtempZEMvsZDC->GetBinContent(fHtempZEMvsZDC->FindBin(zem1Energy+zem2Energy,zncEnergy+znaEnergy+zpcEnergy+zpaEnergy));
 
   // ***** Cleaning
   fQuality=0;
@@ -568,13 +593,12 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
 
   // ***** outliers
   // **** V0 vs SPD
-  printf("AnalysisCentralitySelectionTask::centrality is %f\n",fCentV0M);
-
   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)) fQuality  += 8;
+  if (IsOutlierV0MZDC((zncEnergy+znaEnergy+zpcEnergy+zpaEnergy), v0Corr) && 
+      (zdcEnergyCal==kFALSE)) fQuality  += 8;
 
   if (esdCent) {
       esdCent->SetQuality(fQuality);
@@ -592,6 +616,8 @@ void AliCentralitySelectionTask::UserExec(Option_t */*option*/)
   fHOutQuality->Fill(fQuality);
   fHOutVertex->Fill(zvtx);
 
+  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));
   fHOutMultV0MvsCL1->Fill(v0Corr,spdCorr);
@@ -672,7 +698,7 @@ void AliCentralitySelectionTask::ReadCentralityHistos2(TString fCentfilename2)
   owd->cd();
   fHtempV0MvsFMD =  (TH1F*) (fFile2->Get("hmultV0vsmultFMD_all_percentile"));
   fHtempTKLvsV0M  = (TH1F*) (fFile2->Get("hNtrackletsvsmultV0_all_percentile"));
-  fHtempZEMvsZDC  = (TH1F*) (fFile2->Get("hEzemvsEzdc_all_percentile"));
+  fHtempZEMvsZDC  = (TH2F*) (fFile2->Get("hEzemvsEzdc_all_percentile"));
 
   if (!fHtempV0MvsFMD) AliWarning(Form("Calibration for V0MvsFMD does not exist in %s", path.Data()));
   if (!fHtempTKLvsV0M) AliWarning(Form("Calibration for TKLvsV0M does not exist in %s", path.Data()));
@@ -727,7 +753,7 @@ Int_t AliCentralitySelectionTask::SetupRun(AliESDEvent* esd)
 //________________________________________________________________________
 Bool_t AliCentralitySelectionTask::IsOutlierV0MSPD(Float_t spd, Float_t v0, Int_t cent)
 {
-  TF1 *V0MSPDfun = new TF1("V0MSPDfun","-0.143789+ 0.288874*x",0,25000);
+  Float_t val= -0.143789 + 0.288874 * v0;
   Float_t SPDsigma[100]={231.483, 189.446, 183.359, 179.923, 174.229, 170.309, 165.021, 
                         160.84, 159.33, 154.453, 151.644, 148.337, 145.215, 142.353, 
                         139.351, 136, 133.838, 129.885, 127.36, 125.032, 122.21, 120.3, 
@@ -743,7 +769,7 @@ Bool_t AliCentralitySelectionTask::IsOutlierV0MSPD(Float_t spd, Float_t v0, Int_
                         15.7185, 15.3006, 14.7432, 14.4174, 14.0805, 13.7638, 13.7638, 
                         13.7638, 13.7638, 13.7638, 13.7638, 13.7638, 13.7638, 13.7638, 18.0803};
 
-  if ( TMath::Abs(spd-V0MSPDfun->Eval(v0)) > fOutliersCut*SPDsigma[cent] ) 
+  if ( TMath::Abs(spd-val) > fOutliersCut*SPDsigma[cent] ) 
     return kTRUE;
   else 
     return kFALSE;
@@ -752,7 +778,7 @@ Bool_t AliCentralitySelectionTask::IsOutlierV0MSPD(Float_t spd, Float_t v0, Int_
 //________________________________________________________________________
 Bool_t AliCentralitySelectionTask::IsOutlierV0MTPC(Int_t tracks, Float_t v0, Int_t cent)
 {
-  TF1 *V0MTPCfun = new TF1("V0MTPCfun","-0.540691+0.128358*x",0,25000);
+  Float_t val = -0.540691 + 0.128358 * v0;
   Float_t TPCsigma[100]={106.439, 89.2834, 86.7568, 85.3641, 83.379, 81.6093, 79.3189, 
                         78.0616, 77.2167, 75.0021, 73.9957, 72.0926, 71.0442, 69.8395, 
                         68.1169, 66.6676, 66.0038, 64.2284, 63.3845, 61.7439, 60.642, 
@@ -768,7 +794,7 @@ Bool_t AliCentralitySelectionTask::IsOutlierV0MTPC(Int_t tracks, Float_t v0, Int
                         8.67375, 8.43029, 8.34818, 8.33484, 8.40709, 8.3974, 8.32814, 
                         8.32814, 8.32814, 8.32814, 8.32814, 8.32814, 8.32814, 8.32814, 8.32814, 12.351};
 
-  if ( TMath::Abs(tracks-V0MTPCfun->Eval(v0)) > fOutliersCut*TPCsigma[cent] ) 
+  if ( TMath::Abs(tracks-val) > fOutliersCut*TPCsigma[cent] ) 
     return kTRUE;
   else 
     return kFALSE;
@@ -777,10 +803,9 @@ Bool_t AliCentralitySelectionTask::IsOutlierV0MTPC(Int_t tracks, Float_t v0, Int
 //________________________________________________________________________
 Bool_t AliCentralitySelectionTask::IsOutlierV0MZDC(Float_t zdc, Float_t v0)
 {
-  TF1 *fun1 = new TF1("fun1","6350-0.26*x",0,25000);
-  TF1 *fun2 = new TF1("fun2","5580",0,25000);
-
-  if ( (zdc > fun1->Eval(v0)) || (zdc > fun2->Eval(v0)) )
+  Float_t val1 = 6350. - 0.26 * v0;
+  Float_t val2 = 5580.;
+  if ((zdc >  val1) || (zdc > val2)) 
     return kTRUE;
   else 
     return kFALSE;