diff --git a/Code/Mantid/Framework/API/src/MatrixWorkspace.cpp b/Code/Mantid/Framework/API/src/MatrixWorkspace.cpp index e59421d5920c9cb01579e6667abdcc1f4b1e08d3..38d30cb37e2abfd2e9899be51fb103d5a6d745dd 100644 --- a/Code/Mantid/Framework/API/src/MatrixWorkspace.cpp +++ b/Code/Mantid/Framework/API/src/MatrixWorkspace.cpp @@ -1555,9 +1555,14 @@ signal_t MatrixWorkspace::getSignalAtCoord( switch (normalization) { case NoNormalization: return y; - case VolumeNormalization: + case VolumeNormalization: { // Divide the signal by the area - return y / (yBinSize * (X[i] - X[i - 1])); + auto volume = yBinSize * (X[i] - X[i - 1]); + if (volume == 0.0) { + return std::numeric_limits<double>::quiet_NaN(); + } + return y / volume; + } case NumEventsNormalization: // Not yet implemented, may not make sense return y; diff --git a/Code/Mantid/MantidQt/API/src/MantidQwtIMDWorkspaceData.cpp b/Code/Mantid/MantidQt/API/src/MantidQwtIMDWorkspaceData.cpp index 1212cf2cb5fab46b2bdc95e6adf562b5ae86d28f..d1a16749ee6fbd9c7aa268cdc72a4031d9d4c660 100644 --- a/Code/Mantid/MantidQt/API/src/MantidQwtIMDWorkspaceData.cpp +++ b/Code/Mantid/MantidQt/API/src/MantidQwtIMDWorkspaceData.cpp @@ -87,7 +87,11 @@ MantidQwtIMDWorkspaceData::MantidQwtIMDWorkspaceData(Mantid::API::IMDWorkspace_c } // Unit direction of the line m_dir = m_end - m_start; - m_dir.normalize(); + if (m_end != m_start) { + m_dir.normalize(); + } else { + m_dir[0] = 1.0; + } // And cache the X/Y values this->cacheLinePlot(); }