diff --git a/Framework/Indexing/src/Extract.cpp b/Framework/Indexing/src/Extract.cpp index 58910a360e54f83e74d3b917a42ceba9b7f230be..a1d0ce74590cc6ea969a66e217cae6b7ab95864e 100644 --- a/Framework/Indexing/src/Extract.cpp +++ b/Framework/Indexing/src/Extract.cpp @@ -6,6 +6,15 @@ namespace Mantid { namespace Indexing { +namespace { +void checkStorageMode(const IndexInfo &indexInfo) { + using namespace Parallel; + if (indexInfo.storageMode() == StorageMode::Distributed) + throw std::runtime_error("extract() does not support " + + Parallel::toString(StorageMode::Distributed)); +} +} + /// Extracts IndexInfo from source IndexInfo, extracting data for all indices /// specified by index set. IndexInfo extract(const IndexInfo &source, const SpectrumIndexSet &indices) { @@ -15,6 +24,7 @@ IndexInfo extract(const IndexInfo &source, const SpectrumIndexSet &indices) { /// Extracts IndexInfo from source IndexInfo, extracting data for all indices /// specified by vector. IndexInfo extract(const IndexInfo &source, const std::vector<size_t> &indices) { + checkStorageMode(source); std::vector<SpectrumNumber> specNums; std::vector<SpectrumDefinition> specDefs; const auto &sourceDefs = source.spectrumDefinitions(); @@ -31,6 +41,7 @@ IndexInfo extract(const IndexInfo &source, const std::vector<size_t> &indices) { /// specified by range. IndexInfo extract(const IndexInfo &source, const size_t minIndex, const size_t maxIndex) { + checkStorageMode(source); std::vector<SpectrumNumber> specNums; std::vector<SpectrumDefinition> specDefs; const auto &sourceDefs = source.spectrumDefinitions();