From 5fbb00e8fadf9ca8ebf6b46112468399608a1091 Mon Sep 17 00:00:00 2001 From: Lamar Moore <lamar.moore@stfc.ac.uk> Date: Thu, 20 Sep 2018 15:10:06 +0100 Subject: [PATCH] Remove duplicate WorkspaceIndices #23548 --- qt/widgets/instrumentview/src/InstrumentActor.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/qt/widgets/instrumentview/src/InstrumentActor.cpp b/qt/widgets/instrumentview/src/InstrumentActor.cpp index 1a4bdba2e61..26d08f62e68 100644 --- a/qt/widgets/instrumentview/src/InstrumentActor.cpp +++ b/qt/widgets/instrumentview/src/InstrumentActor.cpp @@ -1063,14 +1063,19 @@ void InstrumentActor::setDataIntegrationRange(const double &xmin, /// Add a range of bins for masking void InstrumentActor::addMaskBinsData(const std::vector<size_t> &indices) { - std::vector<size_t> wsIndices; - wsIndices.reserve(indices.size()); + // Ensure we do not have duplicate workspace indices. + std::set<size_t> wi; for (auto det : indices) { auto index = getWorkspaceIndex(det); if (index == INVALID_INDEX) continue; - wsIndices.emplace_back(index); + wi.insert(index); } + + // We will be able to do this more efficiently in C++17 + std::vector<size_t> wsIndices(wi.size()); + std::copy(wi.begin(), wi.end(), wsIndices.begin()); + if (!indices.empty()) { m_maskBinsData.addXRange(m_BinMinValue, m_BinMaxValue, wsIndices); auto workspace = getWorkspace(); -- GitLab