|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
From af2e5c8b1bf17a0a0e1c1492735395bdd49ffd65 Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
From: Mattias Ellert <mattias.ellert@physics.uu.se>
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
Date: Mon, 29 Jun 2020 12:57:43 +0200
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
Subject: [PATCH] Fix off-by-one error in the histogram v7 bin iterator
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
The histogram bin iterator should start at 1 and end at N + 1, not
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
start at 0 and end at N. (As for all iterators, the end element is the
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
invalid element after the last one.)
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
Fixes an assertion in the histhistv7testUnit test
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
[----------] 2 tests from BinIterNBins
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
[ RUN ] BinIterNBins.NumBins
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
/usr/include/c++/10/bits/stl_vector.h:1045: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) [with _Tp = float; _Alloc = std::allocator<float>; std::vector<_Tp, _Alloc>::reference = float&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]: Assertion '__builtin_expect(__n < this->size(), true)' failed.
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
---
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
hist/histv7/inc/ROOT/RHist.hxx | 4 ++--
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
hist/histv7/test/biniter.cxx | 2 +-
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
2 files changed, 3 insertions(+), 3 deletions(-)
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
diff --git a/hist/histv7/inc/ROOT/RHist.hxx b/hist/histv7/inc/ROOT/RHist.hxx
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
index ebb319f1ef..9521fe182f 100644
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
--- a/hist/histv7/inc/ROOT/RHist.hxx
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
+++ b/hist/histv7/inc/ROOT/RHist.hxx
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
@@ -158,9 +158,9 @@ public:
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
/// Get the uncertainty on the content of the bin at `x`.
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
double GetBinUncertainty(const CoordArray_t &x) const { return fImpl->GetBinUncertainty(x); }
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
- const_iterator begin() const { return const_iterator(*fImpl); }
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
+ const_iterator begin() const { return const_iterator(*fImpl, 1); }
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
- const_iterator end() const { return const_iterator(*fImpl, fImpl->GetNBinsNoOver()); }
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
+ const_iterator end() const { return const_iterator(*fImpl, fImpl->GetNBinsNoOver() + 1); }
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
/// Swap *this and other.
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
///
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
diff --git a/hist/histv7/test/biniter.cxx b/hist/histv7/test/biniter.cxx
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
index aa1c2dfef9..1f940aa8e7 100644
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
--- a/hist/histv7/test/biniter.cxx
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
+++ b/hist/histv7/test/biniter.cxx
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
@@ -45,7 +45,7 @@ TEST(BinIterNBins, BinRef) {
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
double founduncert = -1.;
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
RH2F::CoordArray_t foundcoord{};
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
- int nBins = 0;
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
+ int nBins = 1;
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
for (auto bin: h) {
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
auto binCenter = bin.GetCenter();
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
if (std::fabs(binCenter[0] - x) < 0.1 && std::fabs(binCenter[1] - y) < 0.1) {
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
--
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
2.26.2
|
|
![](https://seccdn.libravatar.org/avatar/01757ac6220c7c80daecba48378c2721a35cf00771becbb512a1ec0b1043f5ea?s=16&d=retro) |
b2cd752 |
|