diff --git a/Code/Mantid/Framework/DataObjects/inc/MantidDataObjects/MDHistoWorkspaceIterator.h b/Code/Mantid/Framework/DataObjects/inc/MantidDataObjects/MDHistoWorkspaceIterator.h index 07ae1d8d6fb7756a96253c694200a1f4ecb7e1d7..454bb4ea833518726525c45821694cbe297607e2 100644 --- a/Code/Mantid/Framework/DataObjects/inc/MantidDataObjects/MDHistoWorkspaceIterator.h +++ b/Code/Mantid/Framework/DataObjects/inc/MantidDataObjects/MDHistoWorkspaceIterator.h @@ -103,6 +103,8 @@ public: virtual size_t getNumEvents() const; + virtual signal_t getNumEventsFraction() const; + virtual uint16_t getInnerRunIndex(size_t index) const; virtual int32_t getInnerDetectorID(size_t index) const; diff --git a/Code/Mantid/Framework/DataObjects/src/MDHistoWorkspaceIterator.cpp b/Code/Mantid/Framework/DataObjects/src/MDHistoWorkspaceIterator.cpp index 529265e29d417147608d469c0d1dc73cee0a9cfe..f18a82bc58547428832e5c940dd95d5af83acb72 100644 --- a/Code/Mantid/Framework/DataObjects/src/MDHistoWorkspaceIterator.cpp +++ b/Code/Mantid/Framework/DataObjects/src/MDHistoWorkspaceIterator.cpp @@ -377,9 +377,16 @@ VecMDExtents MDHistoWorkspaceIterator::getBoxExtents() const //---------------------------------------------------------------------------------------------- /// Returns the number of events/points contained in this box -/// @return 1 always: e.g. there is one (fake) event in the middle of the box. +/// @return truncated number of events size_t MDHistoWorkspaceIterator::getNumEvents() const { - return static_cast<size_t>(m_ws->getNumEventsAt(m_pos)); + return static_cast<size_t>(this->getNumEventsFraction()); +} + +//---------------------------------------------------------------------------------------------- +/// Returns the number of events/points contained in this box +/// @return eact number of events (weights may be applied) +signal_t MDHistoWorkspaceIterator::getNumEventsFraction() const { + return m_ws->getNumEventsAt(m_pos); } //---------------------------------------------------------------------------------------------- diff --git a/Code/Mantid/Framework/MDAlgorithms/src/IntegrateMDHistoWorkspace.cpp b/Code/Mantid/Framework/MDAlgorithms/src/IntegrateMDHistoWorkspace.cpp index 4965eb815736fbf3aec70c252add1e488ee8b92f..582be236120683009b4426c66798aae595c8a612 100644 --- a/Code/Mantid/Framework/MDAlgorithms/src/IntegrateMDHistoWorkspace.cpp +++ b/Code/Mantid/Framework/MDAlgorithms/src/IntegrateMDHistoWorkspace.cpp @@ -159,7 +159,7 @@ void performWeightedSum(MDHistoWorkspaceIterator const *const iterator, sumSignal += weight * iterator->getSignal(); const double error = iterator->getError(); sumSQErrors += weight * (error * error); - sumNEvents += weight * iterator->getNumEvents(); + sumNEvents += weight * double(iterator->getNumEventsFraction()); } }