R3BROOT
R3B analysis software
Loading...
Searching...
No Matches
R3BDataMonitorCanvas.cxx
Go to the documentation of this file.
2
3template <typename T>
4using remove_const_ref = std::remove_const_t<std::remove_reference_t<T>>;
5
6namespace R3B
7{
9 : monitor_{ monitor }
10 {
11 }
12
14 {
15 for (auto& [div_num, figures] : figures_)
16 {
17 canvas_->cd(div_num);
18 for (auto iter = figures.begin(); iter != figures.end(); ++iter)
19 {
20 auto is_first = (iter == figures.begin());
21 std::visit(
22 [is_first](auto& figure)
23 {
24 const auto* option = figure->GetOption();
25 if (is_first)
26 {
27
28 figure->Draw(option);
29 }
30 else
31 {
32 figure->Draw(fmt::format("same {}", option).c_str());
33 }
34 },
35 *iter);
36 }
37 }
38 }
39
41 {
42 for (auto& [div_num, hists] : figures_)
43 {
44 for (auto& hist : hists)
45 {
46 std::visit(
47 [](auto& figure)
48 {
49 if constexpr (std::is_same_v<TGraph*, remove_const_ref<decltype(figure)>>)
50 {
51 figure->Set(0);
52 }
53 else if constexpr (std::is_same_v<TH1*, remove_const_ref<decltype(figure)>>)
54 {
55 figure->Reset();
56 }
57 },
58 hist);
59 }
60 }
61 }
62} // namespace R3B
std::remove_const_t< std::remove_reference_t< T > > remove_const_ref
DataMonitorCanvas(DataMonitor *monitor)