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.