R3BROOT
R3B analysis software
Loading...
Searching...
No Matches
R3BNeulandHitXYCanvas.cxx
Go to the documentation of this file.
1
/******************************************************************************
2
* Copyright (C) 2019 GSI Helmholtzzentrum für Schwerionenforschung GmbH *
3
* Copyright (C) 2019-2023 Members of R3B Collaboration *
4
* *
5
* This software is distributed under the terms of the *
6
* GNU General Public Licence (GPL) version 3, *
7
* copied verbatim in the file "LICENSE". *
8
* *
9
* In applying this license GSI does not waive the privileges and immunities *
10
* granted to it by virtue of its status as an Intergovernmental Organization *
11
* or submit itself to any jurisdiction. *
12
******************************************************************************/
13
14
#include "
R3BNeulandHitXYCanvas.h
"
15
#include <
R3BNeulandCommon.h
>
16
#include <
R3BNeulandOnlineSpectra2.h
>
17
#include <TH2.h>
18
#include <range/v3/algorithm.hpp>
19
#include <range/v3/view.hpp>
20
21
namespace
R3B::Neuland
22
{
23
void
HitXYCanvas::DataInit
() { hit_data_.init(); }
24
void
HitXYCanvas::CanvasInit
(
DataMonitor
& histograms)
25
{
26
auto
& canvas =
CreateNewCanvas
(histograms);
27
auto
bar_numbers =
GetBarNumber
();
28
auto
num_of_plane =
static_cast<
int
>
(bar_numbers /
BarsPerPlane
);
29
30
canvas.divide(5, 6);
31
32
constexpr
auto
XY_BIN_SIZE = 300;
33
constexpr
auto
XY_MAX = 150;
34
35
h_xy_per_plane_.reserve(num_of_plane);
36
for
(
const
auto
& plane_id : ranges::views::iota(0, num_of_plane))
37
{
38
const
auto
hist_name = fmt::format(
"hHitXYPlane{}"
, plane_id);
39
const
auto
hist_title = fmt::format(
"Hit XY Plane{}"
, plane_id);
40
auto
hist = canvas.add<TH2D>(
41
plane_id + 1, hist_name, hist_title, XY_BIN_SIZE, -XY_MAX, XY_MAX, XY_BIN_SIZE, -XY_MAX, XY_MAX);
42
h_xy_per_plane_.push_back(hist);
43
}
44
}
45
46
void
HitXYCanvas::CanvasFill
(
DataMonitor
&
/*histograms*/
)
47
{
48
auto
* rand_gen =
GetOnlineSpectra
()->GetRandomGenerator();
49
for
(
const
auto
& hit : hit_data_)
50
{
51
const
auto
module_id = hit.module_id;
52
const
auto
plane_id =
ModuleID2PlaneID
(module_id);
53
const
auto
bar_width_error = rand_gen->Uniform(-
BarSize_XY
/ 2.,
BarSize_XY
/ 2.);
54
// TODO: introduce calibration errors
55
if
(
IsPlaneIDHorizontal
(plane_id))
56
{
57
h_xy_per_plane_.at(plane_id)->Fill(hit.position.X(), hit.position.Y() + bar_width_error);
58
}
59
else
60
{
61
h_xy_per_plane_.at(plane_id)->Fill(hit.position.X() + bar_width_error, hit.position.Y());
62
}
63
}
64
}
65
void
HitXYCanvas::CanvasFinish
() {}
66
}
// namespace R3B::Neuland
R3BNeulandCommon.h
R3BNeulandHitXYCanvas.h
R3BNeulandOnlineSpectra2.h
R3B::DataMonitor
Definition
R3BDataMonitor.h:30
R3B::Neuland::HitXYCanvas::CanvasFinish
void CanvasFinish() override
Definition
R3BNeulandHitXYCanvas.cxx:65
R3B::Neuland::HitXYCanvas::DataInit
void DataInit() override
Definition
R3BNeulandHitXYCanvas.cxx:23
R3B::Neuland::HitXYCanvas::CanvasFill
void CanvasFill(DataMonitor &histograms) override
Definition
R3BNeulandHitXYCanvas.cxx:46
R3B::Neuland::HitXYCanvas::CanvasInit
void CanvasInit(DataMonitor &histograms) override
Definition
R3BNeulandHitXYCanvas.cxx:24
R3B::Neuland::OnlineCanvas::GetBarNumber
auto GetBarNumber() const -> int
Definition
R3BNeulandOnlineCanvas.h:41
R3B::Neuland::OnlineCanvas::CreateNewCanvas
auto CreateNewCanvas(DataMonitor &histograms) -> DataMonitorCanvas &
Definition
R3BNeulandOnlineCanvas.h:46
R3B::Neuland::OnlineCanvas::GetOnlineSpectra
auto GetOnlineSpectra() const -> OnlineSpectra *
Definition
R3BNeulandOnlineCanvas.h:42
R3B::Neuland
Simulation of NeuLAND Bar/Paddle.
Definition
R3BNeulandAnalysisApp.cxx:80
R3B::Neuland::BarsPerPlane
constexpr auto BarsPerPlane
Definition
R3BNeulandCommon.h:84
R3B::Neuland::ModuleID2PlaneID
constexpr auto ModuleID2PlaneID(int moduleID) -> int
Definition
R3BNeulandCommon.h:99
R3B::Neuland::BarSize_XY
constexpr auto BarSize_XY
Definition
R3BNeulandCommon.h:71
R3B::Neuland::IsPlaneIDHorizontal
constexpr auto IsPlaneIDHorizontal(int plane_id) -> bool
Definition
R3BNeulandCommon.h:97
neuland
online
canvases
R3BNeulandHitXYCanvas.cxx
Generated by
1.13.2