From 277549774f9a46d9949da6a24de6fd3ca7600af3 Mon Sep 17 00:00:00 2001 From: Cdaq User <cdaq@jlab.org> Date: Wed, 29 Jul 2020 19:41:30 -0400 Subject: [PATCH] add more plots --- include/MonitorDisplay.h | 88 +++++++++++++++++++++++++++------------- 1 file changed, 60 insertions(+), 28 deletions(-) diff --git a/include/MonitorDisplay.h b/include/MonitorDisplay.h index dcee20a..c327d26 100644 --- a/include/MonitorDisplay.h +++ b/include/MonitorDisplay.h @@ -9,6 +9,46 @@ R__LOAD_LIBRARY(libScandalizer.so) #include "monitor/ExperimentMonitor.h" #include "TStyle.h" +struct PlotMeta { int pad; std::string varname, opt; }; +struct CanvasMeta { std::string subdir, name, title; int nrow, ncol, nbins; double xmin, xmax; std::vector<PlotMeta> plots; }; + +static std::vector<CanvasMeta> update_canvases = { + {"cher/", "ch_peaks", "MaPMT Channel Peaks", 4, 4, 400, 0, 4096, { + {1, "Cer11_5_Ppeak", "PFC"}, {2, "Cer12_5_Ppeak", "PFC"}, {3, "Cer13_5_Ppeak", "PFC"}, {4, "Cer14_5_Ppeak", "PFC"}, + {5, "Cer21_5_Ppeak", "PFC"}, {6, "Cer22_5_Ppeak", "PFC"}, {7, "Cer23_5_Ppeak", "PFC"}, {8, "Cer24_5_Ppeak", "PFC"}, + {9, "Cer31_5_Ppeak", "PFC"}, {10, "Cer32_5_Ppeak", "PFC"}, {11, "Cer33_5_Ppeak", "PFC"}, {12, "Cer34_5_Ppeak", "PFC"}, + {13, "Cer41_5_Ppeak", "PFC"}, {14, "Cer42_5_Ppeak", "PFC"}, {15, "Cer43_5_Ppeak", "PFC"}, {16, "Cer44_5_Ppeak", "PFC"}, + }}, + {"cher/", "ch_times", "MaPMT Channel Timings", 4, 4, 63, 0, 62, { + {1, "Cer11_5_Ptime", "PFC"}, {2, "Cer12_5_Ptime", "PFC"}, {3, "Cer13_5_Ptime", "PFC"}, {4, "Cer14_5_Ptime", "PFC"}, + {5, "Cer21_5_Ptime", "PFC"}, {6, "Cer22_5_Ptime", "PFC"}, {7, "Cer23_5_Ptime", "PFC"}, {8, "Cer24_5_Ptime", "PFC"}, + {9, "Cer31_5_Ptime", "PFC"}, {10, "Cer32_5_Ptime", "PFC"}, {11, "Cer33_5_Ptime", "PFC"}, {12, "Cer34_5_Ptime", "PFC"}, + {13, "Cer41_5_Ptime", "PFC"}, {14, "Cer42_5_Ptime", "PFC"}, {15, "Cer43_5_Ptime", "PFC"}, {16, "Cer44_5_Ptime", "PFC"}, + }}, + {"ec/", "ec_peaks", "Calorimeter Channel Peaks", 3, 3, 400, 0, 4096, { + {1, "C4_Ppeak", "PFC"}, {2, "C6_1_Ppeak", "PFC"}, {3, "C7_1_Ppeak", "PFC"}, + {4, "C5_1_Ppeak", "PFC"}, {5, "C9_1_Ppeak", "PFC"}, {6, "C8_1_Ppeak", "PFC"}, + {7, "C1_Ppeak", "PFC"}, {8, "C2_Ppeak", "PFC"}, {9, "C3_Ppeak", "PFC"}, + }}, + {"ec/", "ec_times", "Calorimeter Channel Timings", 3, 3, 63, 0, 62, { + {1, "C4_Ptime", "PFC"}, {2, "C6_1_Ptime", "PFC"}, {3, "C7_1_Ptime", "PFC"}, + {4, "C5_1_Ptime", "PFC"}, {5, "C9_1_Ptime", "PFC"}, {6, "C8_1_Ptime", "PFC"}, + {7, "C1_Ptime", "PFC"}, {8, "C2_Ptime", "PFC"}, {9, "C3_Ptime", "PFC"}, + }}, + {"sc/", "sc_peaks", "Scintillator Channel Peaks", 3, 4, 400, 0, 4096, { + {1, "S2_1_Ppeak", "PFC"}, {2, "S2_2_Ppeak", "PFC"}, {3, "S2_3_Ppeak", "PFC"}, {4, "S2_4_Ppeak", "PFC"}, + {5, "S2_5_Ppeak", "PFC"}, {6, "S2_6_Ppeak", "PFC"}, {7, "S2_7_Ppeak", "PFC"}, {8, "S2_8_Ppeak", "PFC"}, + {9, "S2_9_Ppeak", "PFC"}, {10, "S2_10_Ppeak", "PFC"}, {11, "S2_11_Ppeak", "PFC"}, + }}, + {"sc/", "sc_times", "Scintillator Channel Timings", 3, 4, 63, 0, 62, { + {1, "S2_1_Ptime", "PFC"}, {2, "S2_2_Ptime", "PFC"}, {3, "S2_3_Ptime", "PFC"}, {4, "S2_4_Ptime", "PFC"}, + {5, "S2_5_Ptime", "PFC"}, {6, "S2_6_Ptime", "PFC"}, {7, "S2_7_Ptime", "PFC"}, {8, "S2_8_Ptime", "PFC"}, + {9, "S2_9_Ptime", "PFC"}, {10, "S2_10_Ptime", "PFC"}, {11, "S2_11_Ptime", "PFC"}, + }}, +}; + + + hallc::MonitoringDisplay *CreateMonitorDisplay(const std::string &root_dir, int port, TTree *tree) { gStyle->SetHistFillStyle(3002); @@ -25,39 +65,31 @@ hallc::MonitoringDisplay *CreateMonitorDisplay(const std::string &root_dir, int auto dply = new hallc::MonitoringDisplay(port); dply->SetRootFolder(root_dir); - // cherenkov channels - dply->CreateDisplayPlot("cher", "cher", - [] (hallc::DisplayPlot& plt) { - plt._plot_data._canvas = new TCanvas("cher", "MaPMT Channels", 1280, 720); // 720p HD - plt._plot_data._canvas->Divide(4, 4); - for (int i = 1; i <= 4; ++i) { - for (int j = 1; j <= 4; ++j) { - plt._plot_data._canvas->cd((i - 1)*4 + j); - auto chn = fmt::format("Cer{}{}_5_Ppeak", i, j); - auto h1f = new TH1F(("h" + chn).c_str(), chn.c_str(), 400, 0, 4096); + for (auto &c : update_canvases) { + dply->CreateDisplayPlot(c.subdir, c.name, + [c] (hallc::DisplayPlot& plt) { + plt._plot_data._canvas = new TCanvas(c.name.c_str(), c.title.c_str(), 1280, 720); // 720p HD + plt._plot_data._canvas->Divide(c.nrow, c.ncol); + for (auto &p : c.plots) { + plt._plot_data._canvas->cd(p.pad); + auto h1f = new TH1F(("h" + p.varname).c_str(), p.varname.c_str(), c.nbins, c.xmin, c.xmax); plt._plot_data._hists1.push_back(h1f); - h1f->Draw("PFC"); + h1f->Draw(p.opt.c_str()); gPad->SetLogy(); h1f->GetYaxis()->SetRangeUser(1, 1e5); } + return 0; + }, + [c, tree] (hallc::DisplayPlot& plt) { + // std::cout << "update canvas" << std::endl; + for (auto &p : c.plots) { + plt._plot_data._canvas->cd(p.pad); + tree->Draw(fmt::format("{} >> {}", p.varname, "h" + p.varname).c_str()); + } + return 0; } - return 0; - }, - [tree] (hallc::DisplayPlot& plt) { - // std::cout << "update canvas" << std::endl; - for (size_t i = 0; i < plt._plot_data._hists1.size(); ++i) { - TH1F *h1f = plt._plot_data._hists1[i]; - plt._plot_data._canvas->cd(i + 1); - std::string name = h1f->GetName(); - std::string title = h1f->GetTitle(); - tree->Draw(fmt::format("{} >> {}", title, name).c_str()); - // std::cout << name << ": " << h1f->Integral(1, 400) << std::endl; - } - - return 0; - } - ); - + ); + } return dply; } -- GitLab