cooler example

This commit is contained in:
Hans Dembinski 2018-11-16 12:48:30 +01:00
parent 09f58022c0
commit 36a5dba626

View File

@ -12,18 +12,30 @@
namespace bh = boost::histogram;
// stateless axis which returns 1 if the input is even and 0 otherwise
struct minimal_axis {
struct even_odd_axis {
int operator()(int x) const { return x % 2; }
unsigned size() const { return 2; }
};
// threshold axis which returns 1 if the input is above threshold
struct threshold_axis {
threshold_axis(double x) : thr(x) {}
int operator()(double x) const { return x >= thr; }
unsigned size() const { return 2; }
double thr;
};
int main() {
auto h = bh::make_histogram(minimal_axis());
auto h = bh::make_histogram(even_odd_axis(), threshold_axis(3));
h(0); h(1); h(2);
h(0, 2);
h(1, 4);
h(2, 4);
assert(h.at(0) == 2); // two even numbers
assert(h.at(1) == 1); // one uneven number
assert(h.at(0, 0) == 1); // even, below threshold
assert(h.at(0, 1) == 1); // even, above threshold
assert(h.at(1, 0) == 0); // odd, below threshold
assert(h.at(1, 1) == 1); // odd, above threshold
}
//]