15 #include <fmt/format.h>
17 #include <boost/container/static_vector.hpp>
46 template <
typename Histo, std::
size_t N,
typename =
void>
52 template <
typename Histo, std::
size_t N>
55 template <
typename OWNER,
typename FormatName,
typename FormatTitle,
std::size_t... Ns,
56 typename =
typename std::enable_if_t<std::is_invocable_v<FormatName, int>>,
57 typename =
typename std::enable_if_t<std::is_invocable_v<FormatTitle, int>>>
60 :
std::
array<Histo,
N>{ Histo{ owner, fname( Ns ), ftitle( Ns ), allAxis }... } {}
72 template <
typename Histo, std::
size_t N>
75 template <
typename OWNER,
typename FormatName,
typename FormatTitle,
76 typename =
typename std::enable_if_t<std::is_invocable_v<FormatName, int>>,
77 typename =
typename std::enable_if_t<std::is_invocable_v<FormatTitle, int>>>
79 typename Histo::AxisTupleType&& allAxis ) {
80 for (
std::size_t i = 0; i <
N; i++ ) { this->emplace_back( owner, fname( i ), ftitle( i ), allAxis ); }
83 template <
typename OWNER>
85 typename Histo::AxisTupleType&& allAxis ) {
129 typename Seq = std::make_integer_sequence<unsigned int, std::tuple_size_v<typename Histo::AxisTupleType>>>
131 template <
typename Histo,
std::size_t N,
unsigned int... ND>
134 template <
typename OWNER,
typename FormatName,
typename FormatTitle,
std::size_t M =
N,
135 typename std::enable_if_t<( M < 30 ), int> = 0>
136 HistogramArray( OWNER* owner, FormatName&& fname, FormatTitle&& ftitle,
typename Histo::AxisTupleType&& allAxis )
137 :
details::HistogramArrayInternal<Histo,
N>( owner, fname, ftitle,
std::make_integer_sequence<
std::size_t,
N>{},
138 std::forward<typename Histo::AxisTupleType>( allAxis ) ) {}
140 template <
typename OWNER,
typename FormatName,
typename FormatTitle,
std::size_t M =
N,
141 typename std::enable_if_t<( M >= 30 ),
int> = 0>
142 HistogramArray( OWNER* owner, FormatName&& fname, FormatTitle&& ftitle,
typename Histo::AxisTupleType&& allAxis )
144 std::forward<typename Histo::AxisTupleType>( allAxis ) ) {}
146 template <
unsigned int I>
147 using AxisType = std::tuple_element_t<I, typename Histo::AxisTupleType>;
149 template <
typename OWNER,
typename FormatName,
typename FormatTitle>