diff --git a/Framework/Algorithms/test/CreateUserDefinedBackgroundTest.h b/Framework/Algorithms/test/CreateUserDefinedBackgroundTest.h index c59567b8009b07405e86023a3a3edb9e89a0e8e8..61cb415db20b6eff761b6c4641b9dd768640a9ca 100644 --- a/Framework/Algorithms/test/CreateUserDefinedBackgroundTest.h +++ b/Framework/Algorithms/test/CreateUserDefinedBackgroundTest.h @@ -243,7 +243,7 @@ public: void test_exec_distribution() { // Create test input const auto inputWS = createTestData(true); - const auto bgPoints = createTable(); + const auto bgPoints = createTable(true); Mantid::API::WorkspaceHelpers::makeDistribution(inputWS); CreateUserDefinedBackground alg; @@ -262,8 +262,10 @@ public: TS_ASSERT(outputWS); // The expected result - const auto expected = createExpectedResults(true, true); - TS_ASSERT(workspacesEqual(expected, outputWS, 5e-2)); + const auto expected = createExpectedResults(true, false); + Mantid::API::WorkspaceHelpers::makeDistribution(expected); + + TS_ASSERT(workspacesEqual(expected, outputWS, 0.1, true)); } private: @@ -274,14 +276,15 @@ private: } /// Create table containing user-selected background points - ITableWorkspace_sptr createTable() { + ITableWorkspace_sptr createTable(bool isDistribution = false) { auto table = boost::make_shared<Mantid::DataObjects::TableWorkspace>(); table->addColumn("double", "X"); table->addColumn("double", "Y"); + double width = 0.1; for (int i = 0; i < 100; i++) { - const auto x = static_cast<double>(i) / 10.0; + const auto x = static_cast<double>(i) * width; Mantid::API::TableRow row = table->appendRow(); - row << x << background(x); + row << x << (isDistribution ? background(x) / width : background(x)); } return table; } diff --git a/Framework/HistogramData/inc/MantidHistogramData/Histogram.h b/Framework/HistogramData/inc/MantidHistogramData/Histogram.h index a9c1f83fe5d2f5bc7f70079c08cdcdc0ceff659a..7c91f01257e895bb7e67d5ec864a31540e3317eb 100644 --- a/Framework/HistogramData/inc/MantidHistogramData/Histogram.h +++ b/Framework/HistogramData/inc/MantidHistogramData/Histogram.h @@ -404,7 +404,7 @@ template <typename... T> void Histogram::setFrequencies(T &&... data) & { checkSize(frequencies); if (selfAssignmentY(data...)) return; - m_y = Counts(frequencies, binEdges()).cowData(); + m_y = frequencies.cowData(); } /// Sets the Histogram's frequency variances. @@ -414,7 +414,7 @@ template <typename... T> void Histogram::setFrequencyVariances(T &&... data) & { checkSize(frequencies); if (selfAssignmentE(data...)) return; - m_e = CountStandardDeviations(frequencies, binEdges()).cowData(); + m_e = FrequencyStandardDeviations(std::move(frequencies)).cowData(); } /// Sets the Histogram's frequency standard deviations. @@ -425,7 +425,7 @@ void Histogram::setFrequencyStandardDeviations(T &&... data) & { checkSize(frequencies); if (selfAssignmentE(data...)) return; - m_e = CountStandardDeviations(frequencies, binEdges()).cowData(); + m_e = frequencies.cowData(); } template <> diff --git a/Framework/HistogramData/test/HistogramTest.h b/Framework/HistogramData/test/HistogramTest.h index 86d3d052427e02e1ae21595f606236fea0178b64..b890ea5b9a9a4e239c0d2d9b8d39e36717e73097 100644 --- a/Framework/HistogramData/test/HistogramTest.h +++ b/Framework/HistogramData/test/HistogramTest.h @@ -620,16 +620,39 @@ public: TS_ASSERT_THROWS_NOTHING(h.setCountStandardDeviations(2)); } + void test_setFrequenciesDataValid() { + Histogram h(BinEdges{1, 2, 3}); + std::vector<double> freqs(2, 0.36); + h.setFrequencies(freqs); + TS_ASSERT_EQUALS(freqs, h.y().rawData()); + } + void test_setFrequencyVariances() { Histogram h(Points{1.0, 2.0}); TS_ASSERT_THROWS_NOTHING(h.setFrequencyVariances(2)); } + void test_setFrequencyVariancesDataValid() { + Histogram h(BinEdges{1, 2, 3}); + std::vector<double> freqVars(2, 100); + std::vector<double> freqStdDevs(2, 10); + + h.setFrequencyVariances(freqVars); + TS_ASSERT_EQUALS(freqStdDevs, h.e().rawData()); + } + void test_setFrequencyStandardDeviations() { Histogram h(Points{1.0, 2.0}); TS_ASSERT_THROWS_NOTHING(h.setFrequencyStandardDeviations(2)); } + void test_setFrequencyStandardDeviationsDataValid() { + Histogram h(BinEdges{1, 2, 3}); + std::vector<double> freqStdDevs(2, 0.11); + h.setFrequencyStandardDeviations(freqStdDevs); + TS_ASSERT_EQUALS(freqStdDevs, h.e().rawData()); + } + void test_setCountVariances_size_mismatch() { Histogram h(Points{1.0, 2.0}); TS_ASSERT_THROWS(h.setCountVariances(1), std::logic_error);