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