]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG0/dNdPt/AlidNdPtCorrection.cxx
fix coding rules violation
[u/mrichter/AliRoot.git] / PWG0 / dNdPt / AlidNdPtCorrection.cxx
index 8f00fa8c57f695c483047c31a66532b20b943ad7..8573e32cbb9ea405a1be92f0222df40edeee1c77 100644 (file)
  * about the suitability of this software for any purpose. It is          *\r
  * provided "as is" without express or implied warranty.                  *\r
  **************************************************************************/\r
-\r
-#include <iostream>\r
+//------------------------------------------------------------------------------\r
+// AlidNdPtCorrection class:\r
+//\r
+// a. functionality:\r
+// - applies corrections on dNdPt spectra\r
+// - fills corrected dNdPt histograms\r
+// - fills correction control histograms \r
+//\r
+// b. data members:\r
+// - dNdPt spectra before and after correction procedure\r
+// - control histograms\r
+// - correction matrices (must be loaded)\r
+// \r
+// Author: J.Otwinowski 04/11/2008 \r
+//------------------------------------------------------------------------------\r
 \r
 #include "TFile.h"\r
-#include "TCint.h"\r
 #include "TH1.h"\r
 #include "TH2.h"\r
 \r
@@ -823,7 +835,7 @@ void AlidNdPtCorrection::Process(AliESDEvent *esdEvent, AliMCEvent *mcEvent)
 \r
         // only charged particles\r
         Double_t charge = particle->GetPDG()->Charge()/3.;\r
-        if (charge == 0.0)\r
+        if (TMath::Abs(charge) < 0.001)\r
           continue;\r
 \r
         // only postive charged \r
@@ -865,7 +877,7 @@ void AlidNdPtCorrection::Process(AliESDEvent *esdEvent, AliMCEvent *mcEvent)
 }\r
 \r
 //_____________________________________________________________________________\r
-void AlidNdPtCorrection::FillHistograms(AlidNdPtHelper::EventObject eventObj, Double_t zv, Int_t multMBTracks)\r
+void AlidNdPtCorrection::FillHistograms(AlidNdPtHelper::EventObject eventObj, Double_t zv, Int_t multMBTracks) const\r
 {\r
   //\r
   // Fill corrected histograms\r
@@ -893,22 +905,22 @@ void AlidNdPtCorrection::FillHistograms(AlidNdPtHelper::EventObject eventObj, Do
   if(eventObj==AlidNdPtHelper::kTriggeredEvents && multMBTracks==0) // empty triggered events\r
   {\r
     Int_t bin = fZvEmptyEventsNorm->FindBin(zv);\r
-    Double_t Fz = fZvEmptyEventsNorm->GetBinContent(bin);\r
+    Double_t factZ = fZvEmptyEventsNorm->GetBinContent(bin);\r
     Double_t corrToInelF0 = GetCorrFactZvMult(fCorrTriggerMBtoInelEventMatrix,zv,multMBTracks);\r
     Double_t corrToNDF0 = GetCorrFactZvMult(fCorrTriggerMBtoNDEventMatrix,zv,multMBTracks);\r
     Double_t corrToNSDF0 = GetCorrFactZvMult(fCorrTriggerMBtoNSDEventMatrix,zv,multMBTracks);\r
-    //printf("Fz %f, corrToInelF0 %f, corrToNDF0 %f, corrToNSDF0 %f \n",Fz,corrToInelF0,corrToNDF0,corrToNSDF0);\r
+    //printf("factZ %f, corrToInelF0 %f, corrToNDF0 %f, corrToNSDF0 %f \n",factZ,corrToInelF0,corrToNDF0,corrToNSDF0);\r
 \r
     fCorrRecEventHist2[0]->Fill(vEventMatrix);\r
-    fCorrRecEventHist2[1]->Fill(vEventMatrix,Fz);\r
-    fCorrRecEventHist2[2]->Fill(vEventMatrix,Fz*corrToInelF0);\r
-    fCorrRecEventHist2[3]->Fill(vEventMatrix,Fz*corrToNDF0);\r
-    fCorrRecEventHist2[4]->Fill(vEventMatrix,Fz*corrToNSDF0);\r
+    fCorrRecEventHist2[1]->Fill(vEventMatrix,factZ);\r
+    fCorrRecEventHist2[2]->Fill(vEventMatrix,factZ*corrToInelF0);\r
+    fCorrRecEventHist2[3]->Fill(vEventMatrix,factZ*corrToNDF0);\r
+    fCorrRecEventHist2[4]->Fill(vEventMatrix,factZ*corrToNSDF0);\r
   }\r
 }\r
 \r
 //_____________________________________________________________________________\r
-void AlidNdPtCorrection::FillHistograms(AliESDtrack *esdTrack, AliStack *stack, AlidNdPtHelper::TrackObject trackObj, Double_t zv, Int_t mult)\r
+void AlidNdPtCorrection::FillHistograms(AliESDtrack * const esdTrack, AliStack * const stack, AlidNdPtHelper::TrackObject trackObj, Double_t zv, Int_t mult) const\r
 {\r
   //\r
   // Fill ESD track and MC histograms \r
@@ -928,7 +940,7 @@ void AlidNdPtCorrection::FillHistograms(AliESDtrack *esdTrack, AliStack *stack,
     if(!particle) return;\r
    \r
     Double_t gq = particle->GetPDG()->Charge()/3.0; // Charge units |e|/3\r
-    if(gq==0) return;\r
+    if(TMath::Abs(gq)<0.001) return;\r
     Float_t gpt = particle->Pt();\r
     Float_t geta = particle->Eta();\r
     Float_t gphi = particle->Phi();\r
@@ -985,7 +997,7 @@ void AlidNdPtCorrection::FillHistograms(AliESDtrack *esdTrack, AliStack *stack,
 }\r
 \r
 //_____________________________________________________________________________\r
-void AlidNdPtCorrection::FillHistograms(AliStack *stack, Int_t /*label*/, AlidNdPtHelper::TrackObject /*trackObj*/, Int_t /*mult*/)\r
+void AlidNdPtCorrection::FillHistograms(AliStack * const stack, Int_t /*label*/, AlidNdPtHelper::TrackObject /*trackObj*/, Int_t /*mult*/) const\r
 {\r
   // Fill MC histograms\r
   if(!stack) return;\r
@@ -1027,7 +1039,7 @@ void AlidNdPtCorrection::FillHistograms(AliStack *stack, Int_t /*label*/, AlidNd
 }\r
 \r
 //_____________________________________________________________________________\r
-Double_t AlidNdPtCorrection::GetCorrFactZvPtEta(THnSparse *hist, Double_t zv, Double_t pt, Double_t eta) const {\r
+Double_t AlidNdPtCorrection::GetCorrFactZvPtEta(THnSparse * const hist, Double_t zv, Double_t pt, Double_t eta) const {\r
 // return correction factor F(zv,pt,eta)\r
 \r
  if(!hist) return 1.;\r
@@ -1048,7 +1060,7 @@ return fact;
 }\r
 \r
 //_____________________________________________________________________________\r
-Double_t AlidNdPtCorrection::GetContFactZvPtEta(THnSparse *hist, Double_t zv, Double_t pt, Double_t eta) const {\r
+Double_t AlidNdPtCorrection::GetContFactZvPtEta(THnSparse * const hist, Double_t zv, Double_t pt, Double_t eta) const {\r
 // return contamination correction factor F(zv,pt,eta)\r
 \r
  if(!hist) return 1.0;\r
@@ -1070,7 +1082,7 @@ return fact;
 }\r
 \r
 //_____________________________________________________________________________\r
-Double_t AlidNdPtCorrection::GetCorrFactZvMult(THnSparse *hist, Double_t zv, Int_t mult) const {\r
+Double_t AlidNdPtCorrection::GetCorrFactZvMult(THnSparse * const hist, Double_t zv, Int_t mult) const {\r
 // return correction factor F(zv,mult)\r
 \r
  if(!hist) return 1.;\r
@@ -1088,7 +1100,7 @@ return fact;
 }\r
 \r
 //_____________________________________________________________________________\r
-Double_t AlidNdPtCorrection::GetContFactZvMult(THnSparse *hist, Double_t zv, Int_t mult) const {\r
+Double_t AlidNdPtCorrection::GetContFactZvMult(THnSparse * const hist, Double_t zv, Int_t mult) const {\r
 // return contamination correction factor F(zv,mult)\r
 \r
  if(!hist) return 1.;\r
@@ -1104,7 +1116,7 @@ return fact;
 }\r
 \r
 //_____________________________________________________________________________\r
-Long64_t AlidNdPtCorrection::Merge(TCollection* list) \r
+Long64_t AlidNdPtCorrection::Merge(TCollection* const list) \r
 {\r
   // Merge list of objects (needed by PROOF)\r
 \r
@@ -1160,10 +1172,14 @@ Long64_t AlidNdPtCorrection::Merge(TCollection* list)
 return count;\r
 }\r
  \r
-Int_t AlidNdPtCorrection::GetTrueMult(THnSparse *hist, Int_t mult)\r
+//____________________________________________________________________________\r
+Int_t AlidNdPtCorrection::GetTrueMult(THnSparse * const hist, Int_t mult) const\r
 {\r
+//\r
+// get multiplicity of primary particles\r
+//\r
  if(!hist) return 0;\r
- Int_t true_mult = 0;\r
+ Int_t trueMult = 0;\r
 \r
  // 0 bins exluded\r
  TAxis *ax = hist->GetAxis(0);\r
@@ -1176,9 +1192,9 @@ Int_t AlidNdPtCorrection::GetTrueMult(THnSparse *hist, Int_t mult)
 \r
  // get true multiplicity\r
  TH1D *h1 = (TH1D *)hist->Projection(1);\r
- true_mult = (Int_t)h1->GetMean();\r
+ trueMult = (Int_t)h1->GetMean();\r
 \r
- return true_mult;\r
+ return trueMult;\r
 }\r
 \r
 //_____________________________________________________________________________\r
@@ -1209,9 +1225,10 @@ void AlidNdPtCorrection::Analyse()
   //\r
   //Double_t minPt = accCuts->GetMinPt();\r
   //Double_t maxPt = accCuts->GetMaxPt();\r
-  //Double_t minEta = accCuts->GetMinEta();\r
-  //Double_t maxEta = accCuts->GetMaxEta()-0.00001;\r
+  Double_t minEta = accCuts->GetMinEta();\r
+  Double_t maxEta = accCuts->GetMaxEta()-0.00001;\r
  \r
+  printf("minEta %f, maxEta %f \n",minEta, maxEta);\r
 \r
   //\r
   // cosmics background histo\r
@@ -1446,6 +1463,36 @@ void AlidNdPtCorrection::Analyse()
   hsc->Scale(1./(fCorrRecEventHist1[2]->Projection(1)->Integral() + fCorrRecEventHist2[2]->Projection(1)->Integral()));\r
   aFolderObj->Add(hsc);\r
 \r
+   // positive eta\r
+  fCorrRecTrackMultHist1[5]->GetAxis(1)->SetRangeUser(0., maxEta);\r
+\r
+  h = fCorrRecTrackMultHist1[5]->Projection(0);\r
+  h->SetName("pt_rec_trig_event_track_mult_eff_cont_corrected_posEta");\r
+  hs = AlidNdPtHelper::ScaleByBinWidth(h);\r
+  hs->SetName("pt_rec_trig_event_track_mult_eff_cont_corrected_s_posEta");\r
+  aFolderObj->Add(hs);\r
+\r
+  hsc = (TH1D*)hs->Clone();\r
+  hsc->SetName("pt_rec_trig_event_track_mult_eff_cont_corrected_s_norm_posEta");\r
+  hsc->Scale(1./(fCorrRecEventHist1[2]->Projection(1)->Integral()+fCorrRecEventHist2[2]->Projection(1)->Integral()));\r
+  aFolderObj->Add(hsc);\r
+\r
+  // negative eta\r
+  fCorrRecTrackMultHist1[5]->GetAxis(1)->SetRangeUser(minEta, -0.00001);\r
+\r
+  h = fCorrRecTrackMultHist1[5]->Projection(0);\r
+  h->SetName("pt_rec_trig_event_track_mult_eff_cont_corrected_negEta");\r
+  hs = AlidNdPtHelper::ScaleByBinWidth(h);\r
+  hs->SetName("pt_rec_trig_event_track_mult_eff_cont_corrected_s_negEta");\r
+  aFolderObj->Add(hs);\r
+\r
+  hsc = (TH1D*)hs->Clone();\r
+  hsc->SetName("pt_rec_trig_event_track_mult_eff_cont_corrected_s_norm_negEta");\r
+  hsc->Scale(1./(fCorrRecEventHist1[2]->Projection(1)->Integral()+fCorrRecEventHist2[2]->Projection(1)->Integral()));\r
+  aFolderObj->Add(hsc);\r
+\r
+  fCorrRecTrackMultHist1[5]->GetAxis(1)->SetRange(1, fCorrRecTrackMultHist1[5]->GetAxis(1)->GetNbins());\r
+\r
   //\r
   h = fCorrRecTrackMultHist1[6]->Projection(0);\r
   h->SetName("pt_rec_ND_trig_event_track_mult_eff_cont_corrected");\r
@@ -1470,6 +1517,40 @@ void AlidNdPtCorrection::Analyse()
   hsc->Scale(1./(fCorrRecEventHist1[4]->Projection(1)->Integral()+fCorrRecEventHist2[4]->Projection(1)->Integral()));\r
   aFolderObj->Add(hsc);\r
 \r
+  //\r
+  // positive eta\r
+  //\r
+  fCorrRecTrackMultHist1[7]->GetAxis(1)->SetRangeUser(0., maxEta);\r
+\r
+  h = fCorrRecTrackMultHist1[7]->Projection(0);\r
+  h->SetName("pt_rec_NSD_trig_event_track_mult_eff_cont_corrected_posEta");\r
+  hs = AlidNdPtHelper::ScaleByBinWidth(h);\r
+  hs->SetName("pt_rec_NSD_trig_event_track_mult_eff_cont_corrected_s_posEta");\r
+  aFolderObj->Add(hs);\r
+\r
+  hsc = (TH1D*)hs->Clone();\r
+  hsc->SetName("pt_rec_NSD_trig_event_track_mult_eff_cont_corrected_s_norm_posEta");\r
+  hsc->Scale(1./(fCorrRecEventHist1[4]->Projection(1)->Integral()+fCorrRecEventHist2[4]->Projection(1)->Integral()));\r
+  aFolderObj->Add(hsc);\r
+\r
+  //\r
+  // negative eta\r
+  //\r
+  fCorrRecTrackMultHist1[7]->GetAxis(1)->SetRangeUser(minEta, -0.00001);\r
+\r
+  h = fCorrRecTrackMultHist1[7]->Projection(0);\r
+  h->SetName("pt_rec_NSD_trig_event_track_mult_eff_cont_corrected_negEta");\r
+  hs = AlidNdPtHelper::ScaleByBinWidth(h);\r
+  hs->SetName("pt_rec_NSD_trig_event_track_mult_eff_cont_corrected_s_negEta");\r
+  aFolderObj->Add(hs);\r
+\r
+  hsc = (TH1D*)hs->Clone();\r
+  hsc->SetName("pt_rec_NSD_trig_event_track_mult_eff_cont_corrected_s_norm_negEta");\r
+  hsc->Scale(1./(fCorrRecEventHist1[4]->Projection(1)->Integral()+fCorrRecEventHist2[4]->Projection(1)->Integral()));\r
+  aFolderObj->Add(hsc);\r
+\r
+  fCorrRecTrackMultHist1[7]->GetAxis(1)->SetRange(1, fCorrRecTrackMultHist1[7]->GetAxis(1)->GetNbins());\r
+\r
   // eta axis\r
   h = fCorrRecTrackMultHist1[0]->Projection(1);\r
   h->SetName("eta_rec_track_not_corrected");\r