From 7d625cc9f20ae344abf08226a9fc5031fec2a11e Mon Sep 17 00:00:00 2001
From: slebedev <s.lebedev@gsi.de>
Date: Fri, 10 Dec 2021 10:32:04 +0100
Subject: [PATCH] LMVM: Cut efficiency histograms.

---
 analysis/PWGDIL/dielectron/lmvm/LmvmCand.h   |  2 +-
 analysis/PWGDIL/dielectron/lmvm/LmvmDraw.cxx | 31 ++++++++++++++++++--
 analysis/PWGDIL/dielectron/lmvm/LmvmDraw.h   |  2 ++
 analysis/PWGDIL/dielectron/lmvm/LmvmTask.cxx |  3 +-
 4 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/analysis/PWGDIL/dielectron/lmvm/LmvmCand.h b/analysis/PWGDIL/dielectron/lmvm/LmvmCand.h
index c14db26234..65a54829c5 100644
--- a/analysis/PWGDIL/dielectron/lmvm/LmvmCand.h
+++ b/analysis/PWGDIL/dielectron/lmvm/LmvmCand.h
@@ -70,7 +70,7 @@ public:
   double fTrdAnn     = 0.;
   double fMass2      = 0.;
   double fTrdLikeEl  = -1.;
-  double fTrdLikePi  = -1.;  
+  double fTrdLikePi  = -1.;
 
   // Cuts. If true then cut is passed
   bool fIsChi2Prim = false;
diff --git a/analysis/PWGDIL/dielectron/lmvm/LmvmDraw.cxx b/analysis/PWGDIL/dielectron/lmvm/LmvmDraw.cxx
index 6229db8419..456a0bccc6 100644
--- a/analysis/PWGDIL/dielectron/lmvm/LmvmDraw.cxx
+++ b/analysis/PWGDIL/dielectron/lmvm/LmvmDraw.cxx
@@ -171,6 +171,30 @@ TH2D* LmvmDraw::CreateSignificanceH2(TH2D* signal, TH2D* bg, const string& name,
   return hsig;
 }
 
+void LmvmDraw::DrawCutEffH1(const string& hist, const string& option)
+{
+  vector<TH1*> effHist;
+  for (ELmvmSrc src : fH.fSrcs) {
+    TH1D* eff            = fH.H1Clone(hist, src);
+    int nBins            = eff->GetNbinsX();
+    double integralTotal = fH.H1(hist, src)->Integral(1, nBins, "width");
+
+    if (option == "right") {
+      for (int iB = 1; iB <= nBins; iB++) {
+        eff->SetBinContent(iB, fH.H1(hist, src)->Integral(1, iB, "width") / integralTotal);
+      }
+    }
+    else if (option == "left") {
+      for (int iB = nBins; iB >= 1; iB--) {
+        eff->SetBinContent(iB, fH.H1(hist, src)->Integral(iB, nBins, "width") / integralTotal);
+      }
+    }
+    effHist.push_back(eff);
+  }
+  DrawH1(effHist, fH.fSrcLatex, kLinear, kLog, true, 0.8, 0.8, 0.99, 0.99, "hist");
+}
+
+
 void LmvmDraw::DrawAnaStepMany(const string& cName, function<void(ELmvmAnaStep)> drawFunc)
 {
   int hi          = 1;
@@ -306,10 +330,10 @@ void LmvmDraw::Draw1DCut(const string& hist, const string& sigOption, double cut
 {
   int w = 800;
   int h = 800;
-  if (fDrawSignificance) w = 1600;
+  if (fDrawSignificance) w = 2400;
   TCanvas* c = fH.fHM.CreateCanvas(("lmvm_" + hist).c_str(), ("lmvm_" + hist).c_str(), w, h);
   if (fDrawSignificance) {
-    c->Divide(2, 1);
+    c->Divide(3, 1);
     c->cd(1);
   }
   DrawSrcH1(hist);
@@ -320,6 +344,9 @@ void LmvmDraw::Draw1DCut(const string& hist, const string& sigOption, double cut
   }
   if (fDrawSignificance) {
     c->cd(2);
+    DrawCutEffH1(hist, sigOption);
+
+    c->cd(3);
     TH1D* sign =
       CreateSignificanceH1(fH.H1(hist, ELmvmSrc::Signal), fH.H1(hist, ELmvmSrc::Bg), hist + "_significance", sigOption);
     DrawH1(sign, kLinear, kLinear, "hist");
diff --git a/analysis/PWGDIL/dielectron/lmvm/LmvmDraw.h b/analysis/PWGDIL/dielectron/lmvm/LmvmDraw.h
index 623aab423d..feafb024af 100644
--- a/analysis/PWGDIL/dielectron/lmvm/LmvmDraw.h
+++ b/analysis/PWGDIL/dielectron/lmvm/LmvmDraw.h
@@ -79,6 +79,8 @@ private:
      */
   TH2D* CreateSignificanceH2(TH2D* signal, TH2D* bg, const std::string& name, const std::string& title);
 
+  void DrawCutEffH1(const std::string& hist, const std::string& option);
+
   void DrawAnaStepMany(const std::string& cName, std::function<void(ELmvmAnaStep)> drawFunc);
 
   void DrawPtY(ELmvmAnaStep step);
diff --git a/analysis/PWGDIL/dielectron/lmvm/LmvmTask.cxx b/analysis/PWGDIL/dielectron/lmvm/LmvmTask.cxx
index 7f34fb19e1..d59d4db22a 100644
--- a/analysis/PWGDIL/dielectron/lmvm/LmvmTask.cxx
+++ b/analysis/PWGDIL/dielectron/lmvm/LmvmTask.cxx
@@ -98,7 +98,8 @@ void LmvmTask::InitHists()
   fH.CreateH1("hChi2PrimVertex", fH.fSrcNames, "#chi^{2}_{prim}", ax, 200, 0., 20.);
   fH.CreateH1("hNofMvdHits", fH.fSrcNames, "Number of hits in MVD", ax, 5, -0.5, 4.5);
   fH.CreateH1("hNofStsHits", fH.fSrcNames, "Number of hits in STS", ax, 9, -0.5, 8.5);
-  fH.CreateH2("hTrdLike", {"El", "Pi"}, fH.fSrcNames, "P [GeV/c]", "Likelihood output", ax, 100, 0., 6., 100, -0.1, 1.1);
+  fH.CreateH2("hTrdLike", {"El", "Pi"}, fH.fSrcNames, "P [GeV/c]", "Likelihood output", ax, 100, 0., 6., 100, -0.1,
+              1.1);
 
   fH.CreateH2("hTtCut", {"all", "pion", "truePair"}, fH.fSrcNames, "#sqrt{p_{e^{#pm}} p_{rec}} [GeV/c]",
               "#theta_{e^{+},e^{-}} [deg]", ax, 100, 0., 5., 100, 0., 5.);
-- 
GitLab