diff --git a/Framework/Algorithms/src/ExtractSpectra.cpp b/Framework/Algorithms/src/ExtractSpectra.cpp index d151a6a433016d5e84a5aabcc6bb5727e5086da7..f0792c1e0a87352cd31fd214d814be0c18ec9fa9 100644 --- a/Framework/Algorithms/src/ExtractSpectra.cpp +++ b/Framework/Algorithms/src/ExtractSpectra.cpp @@ -140,6 +140,8 @@ void ExtractSpectra::execHistogram() { oldX.begin() + m_maxX); } + bool doCrop = ((m_minX != 0) || (m_maxX != m_inputWorkspace->x(0).size())); + Progress prog(this, 0.0, 1.0, (m_workspaceIndexList.size())); // Loop over the required workspace indices, copying in the desired bins for (int j = 0; j < static_cast<int>(m_workspaceIndexList.size()); ++j) { @@ -163,12 +165,17 @@ void ExtractSpectra::execHistogram() { outputWorkspace->setSharedDx(j, m_inputWorkspace->sharedDx(i)); } - auto &oldY = m_inputWorkspace->y(i); - outputWorkspace->mutableY(j) - .assign(oldY.begin() + m_minX, oldY.begin() + (m_maxX - m_histogram)); - auto &oldE = m_inputWorkspace->e(i); - outputWorkspace->mutableE(j) - .assign(oldE.begin() + m_minX, oldE.begin() + (m_maxX - m_histogram)); + if (doCrop) { + auto &oldY = m_inputWorkspace->y(i); + outputWorkspace->mutableY(j) + .assign(oldY.begin() + m_minX, oldY.begin() + (m_maxX - m_histogram)); + auto &oldE = m_inputWorkspace->e(i); + outputWorkspace->mutableE(j) + .assign(oldE.begin() + m_minX, oldE.begin() + (m_maxX - m_histogram)); + } else { + outputWorkspace->setSharedY(j, m_inputWorkspace->sharedY(i)); + outputWorkspace->setSharedE(j, m_inputWorkspace->sharedE(i)); + } // copy over the axis entry for each spectrum, regardless of the type of // axes present