46 double max_x,
double min_y,
double max_y,
double min_z,
48 : m_limits{{std::make_pair(min_x, max_x), std::make_pair(min_y, max_y),
49 std::make_pair(min_z, max_z)}},
50 m_n_bins{{
static_cast<std::size_t
>(n_x_bins),
51 static_cast<std::size_t
>(n_y_bins),
52 static_cast<std::size_t
>(n_z_bins)}} {
54 throw std::runtime_error(
"max_x has to be > min_x");
56 throw std::runtime_error(
"max_y has to be > min_y");
58 throw std::runtime_error(
"max_z has to be > min_z");
60 throw std::domain_error(
"n_x_bins has to be >= 1");
62 throw std::domain_error(
"n_y_bins has to be >= 1");
64 throw std::domain_error(
"n_z_bins has to be >= 1");
76 std::array<std::vector<double>, 3>
edges()
const {
77 std::array<std::vector<double>, 3> profile_edges = {
78 {std::vector<double>(m_n_bins[0] + 1),
79 std::vector<double>(m_n_bins[1] + 1),
80 std::vector<double>(m_n_bins[2] + 1)}};
83 profile_edges[0].begin());
86 profile_edges[1].begin());
89 profile_edges[2].begin());