6 #ifndef DISMEC_HISTOGRAM_H
7 #define DISMEC_HISTOGRAM_H
10 #if defined __has_include
11 #if __has_include(<boost/histogram.hpp>)
12 #include <boost/histogram.hpp>
13 #define DISMEC_STATS_SUPPORT_HISTOGRAM 1
19 #if DISMEC_STATS_SUPPORT_HISTOGRAM
21 class HistogramStat final :
public StatImplBase<HistogramStat<Axis>> {
24 ~HistogramStat()
override =
default;
26 [[nodiscard]] std::unique_ptr<Statistics> clone()
const override;
27 void merge_imp(
const HistogramStat<Axis>& other);
31 void record_int(
long value)
override;
32 void record_real(
real_t value)
override;
35 boost::histogram::histogram<std::tuple<Axis>> m_Histogram;
44 class TaggedHistogramStat final :
public StatImplBase<TaggedHistogramStat<Axis>> {
46 TaggedHistogramStat(std::string tag,
int max_tag,
int bins,
real_t min,
real_t max);
47 ~TaggedHistogramStat()
override =
default;
49 [[nodiscard]] std::unique_ptr<Statistics> clone()
const override;
50 void merge_imp(
const TaggedHistogramStat<Axis>& other);
53 void setup(
const StatisticsCollection& source)
override;
55 void record_int(
long value)
override;
56 void record_real(
real_t value)
override;
59 using histogram_t = boost::histogram::histogram<std::tuple<Axis>>;
60 std::vector<histogram_t> m_Histograms;
62 histogram_t& get_active_hist();
73 #warning "Compiling without histogram support"
std::unique_ptr< Statistics > make_linear_histogram(int bins, real_t min, real_t max)
std::unique_ptr< Statistics > make_logarithmic_histogram(int bins, real_t min, real_t max)
types::DenseVector< real_t > DenseRealVector
Any dense, real values vector.