18#include <range/v3/view.hpp>
20namespace rng = ranges;
34 auto num_of_plane =
static_cast<int>(bar_numbers /
BarsPerPlane);
38 constexpr auto TOF_BIN_SIZE = 3000;
39 constexpr auto TOF_MIN = -100;
40 constexpr auto TOF_MAX = 500;
42 constexpr auto X_BIN_SIZE = 1000;
43 constexpr auto X_MAX = 200;
45 constexpr auto TDC_BIN_SIZE = 1000;
46 constexpr auto TDC_MAX = 10000;
49 canvas.add<1, TH2D>(
"hTofvsZ",
"Tof vs Z", num_of_plane, 0, num_of_plane, TOF_BIN_SIZE, TOF_MIN, TOF_MAX);
50 hTofvsZ_.pad()->SetLogz();
51 hNeuLANDvsStart_ = canvas.add<2, TH2D>(
"hNeuLANDvsStart",
59 hTOFc_ = canvas.add<3, TH1D>(
"hTOFc",
"hTOFc", TOF_BIN_SIZE, TOF_MIN, TOF_MAX);
60 hTOFc_.pad()->SetLogy();
62 canvas.add<4, TH2D>(
"hTofcvsX",
"Tofc vs X", X_BIN_SIZE, -X_MAX, X_MAX, TOF_BIN_SIZE, TOF_MIN, TOF_MAX);
63 hTofcvsX_.pad()->SetLogz();
66 void TimingCanvas::hit_data_fill()
70 for (
const auto& hit : hit_data_)
72 const auto module_id = hit.module_id;
76 const auto time = hit.time;
77 const auto correc_time = time - (hit.position.Mag() - distance_to_target) /
CLight;
78 const auto pos_x =
IsPlaneIDHorizontal(plane_id) ? hit.position.X() : hit.position.X() + bar_width_error;
80 hTofvsZ_->Fill(plane_id, time);
81 hTofcvsX_->Fill(pos_x, correc_time);
86 hTOFc_->Fill(correc_time);
92 void TimingCanvas::cal_data_fill()
95 const auto time_start = event_header->GetTStart();
96 if (std::isnan(time_start))
100 for (
const auto& cal_signal :
102 rng::views::transform([](
const auto& bar_signal)
103 {
return ranges::views::concat(bar_signal.left, bar_signal.right); }) |
106 const auto time_cal = cal_signal.leading_time - cal_signal.trigger_time;
107 hNeuLANDvsStart_->Fill(time_start, time_cal.value);
auto GetBarNumber() const -> int
auto CreateNewCanvas(DataMonitor &histograms) -> DataMonitorCanvas &
auto GetOnlineSpectra() const -> OnlineSpectra *
void CanvasFinish() override
void CanvasFill(DataMonitor &histograms) override
void CanvasInit(DataMonitor &histograms) override
Simulation of NeuLAND Bar/Paddle.
constexpr auto BarsPerPlane
constexpr auto ModuleID2PlaneID(int moduleID) -> int
constexpr auto BarSize_XY
constexpr auto IsPlaneIDHorizontal(int plane_id) -> bool