guide_fill_weighted_histogram.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. // Copyright 2019 Hans Dembinski
  2. //
  3. // Distributed under the Boost Software License, Version 1.0.
  4. // (See accompanying file LICENSE_1_0.txt
  5. // or copy at http://www.boost.org/LICENSE_1_0.txt)
  6. //[ guide_fill_weighted_histogram
  7. #include <boost/histogram.hpp>
  8. #include <cassert>
  9. int main() {
  10. using namespace boost::histogram;
  11. // Create a histogram with weight counters that keep track of a variance estimate.
  12. auto h = make_weighted_histogram(axis::regular<>(3, 0.0, 1.0));
  13. h(0.0, weight(1)); // weight 1 goes to first bin
  14. h(0.1, weight(2)); // weight 2 goes to first bin
  15. h(0.4, weight(3)); // weight 3 goes to second bin
  16. h(0.5, weight(4)); // weight 4 goes to second bin
  17. // chunk-wise filling is also supported
  18. auto x = {0.2, 0.6};
  19. auto w = {5, 6};
  20. h.fill(x, weight(w));
  21. // Weight counters have methods to access the value (sum of weights) and the variance
  22. // (sum of weights squared, why this gives the variance is explained in the rationale)
  23. assert(h[0].value() == 1 + 2 + 5);
  24. assert(h[0].variance() == 1 * 1 + 2 * 2 + 5 * 5);
  25. assert(h[1].value() == 3 + 4 + 6);
  26. assert(h[1].variance() == 3 * 3 + 4 * 4 + 6 * 6);
  27. }
  28. //]