Skip to content
Snippets Groups Projects
Commit 3b8c1014 authored by Dan Nixon's avatar Dan Nixon
Browse files

Merge pull request #12936 from mantidproject/12907_Compute_errors_in_BaselineModelling_step

Keep errors after fit in BaselineModelling step
parents a20d0174 aa15929f
No related branches found
No related tags found
No related merge requests found
...@@ -84,6 +84,9 @@ namespace CustomInterfaces ...@@ -84,6 +84,9 @@ namespace CustomInterfaces
void setCorrectedData(MatrixWorkspace_const_sptr data); void setCorrectedData(MatrixWorkspace_const_sptr data);
void setFittedFunction(IFunction_const_sptr function); void setFittedFunction(IFunction_const_sptr function);
// Set errors in the ws after the fit
void setErrorsAfterFit(MatrixWorkspace_sptr data);
/// Disables points which shouldn't be used for fitting /// Disables points which shouldn't be used for fitting
static void disableUnwantedPoints(MatrixWorkspace_sptr ws, const std::vector<Section>& sections); static void disableUnwantedPoints(MatrixWorkspace_sptr ws, const std::vector<Section>& sections);
......
...@@ -44,6 +44,7 @@ namespace CustomInterfaces ...@@ -44,6 +44,7 @@ namespace CustomInterfaces
m_parameterTable = fit->getProperty("OutputParameters"); m_parameterTable = fit->getProperty("OutputParameters");
enableDisabledPoints(fitOutput,m_data); enableDisabledPoints(fitOutput,m_data);
setErrorsAfterFit(fitOutput);
setCorrectedData(fitOutput); setCorrectedData(fitOutput);
setFittedFunction(funcToFit); setFittedFunction(funcToFit);
...@@ -109,6 +110,15 @@ namespace CustomInterfaces ...@@ -109,6 +110,15 @@ namespace CustomInterfaces
destWs->dataE(0) = sourceWs->readE(0); destWs->dataE(0) = sourceWs->readE(0);
} }
/**
* Set errors in Diff spectrum after a fit
* @param data :: [input/output] Workspace containing spectrum to set errors to
*/
void ALCBaselineModellingModel::setErrorsAfterFit (MatrixWorkspace_sptr data) {
data->dataE(2)=data->readE(0);
}
MatrixWorkspace_sptr ALCBaselineModellingModel::exportWorkspace() MatrixWorkspace_sptr ALCBaselineModellingModel::exportWorkspace()
{ {
if ( m_data && m_data->getNumberHistograms() == 3 ) { if ( m_data && m_data->getNumberHistograms() == 3 ) {
......
...@@ -67,10 +67,12 @@ public: ...@@ -67,10 +67,12 @@ public:
void test_fit() void test_fit()
{ {
std::vector<double> e = boost::assign::list_of(10.0)(1.0)(1.41)(10.0)(10.0)(1.73)(2.0)(2.5)(10.0);
std::vector<double> y = boost::assign::list_of(100)(1)(2)(100)(100)(3)(4)(5)(100); std::vector<double> y = boost::assign::list_of(100)(1)(2)(100)(100)(3)(4)(5)(100);
std::vector<double> x = boost::assign::list_of(1)(2)(3)(4)(5)(6)(7)(8)(9); std::vector<double> x = boost::assign::list_of(1)(2)(3)(4)(5)(6)(7)(8)(9);
MatrixWorkspace_sptr data = WorkspaceFactory::Instance().create("Workspace2D", 1, y.size(), y.size()); MatrixWorkspace_sptr data = WorkspaceFactory::Instance().create("Workspace2D", 1, y.size(), y.size());
data->dataE(0) = e;
data->dataY(0) = y; data->dataY(0) = y;
data->dataX(0) = x; data->dataX(0) = x;
...@@ -91,8 +93,8 @@ public: ...@@ -91,8 +93,8 @@ public:
if (fittedFunc) if (fittedFunc)
{ {
TS_ASSERT_EQUALS(fittedFunc->name(), "FlatBackground"); TS_ASSERT_EQUALS(fittedFunc->name(), "FlatBackground");
TS_ASSERT_DELTA(fittedFunc->getParameter("A0"), 3, 1E-8); TS_ASSERT_DELTA(fittedFunc->getParameter("A0"), 2.13979, 1E-5);
TS_ASSERT_DELTA(fittedFunc->getError(0),0.447214,1E-6); TS_ASSERT_DELTA(fittedFunc->getError(0),0.66709,1E-5);
} }
MatrixWorkspace_const_sptr corrected = m_model->correctedData(); MatrixWorkspace_const_sptr corrected = m_model->correctedData();
...@@ -103,10 +105,12 @@ public: ...@@ -103,10 +105,12 @@ public:
TS_ASSERT_EQUALS(corrected->getNumberHistograms(), 1); TS_ASSERT_EQUALS(corrected->getNumberHistograms(), 1);
TS_ASSERT_EQUALS(corrected->blocksize(), 9); TS_ASSERT_EQUALS(corrected->blocksize(), 9);
TS_ASSERT_DELTA(corrected->readY(0)[0], 97, 1E-8); TS_ASSERT_DELTA(corrected->readY(0)[0], 97.86021, 1E-5);
TS_ASSERT_DELTA(corrected->readY(0)[2], -1, 1E-8); TS_ASSERT_DELTA(corrected->readY(0)[2], -0.13979, 1E-5);
TS_ASSERT_DELTA(corrected->readY(0)[5], 0.0, 1E-8); TS_ASSERT_DELTA(corrected->readY(0)[5], 0.86021, 1E-5);
TS_ASSERT_DELTA(corrected->readY(0)[8], 97, 1E-8); TS_ASSERT_DELTA(corrected->readY(0)[8], 97.86021, 1E-5);
TS_ASSERT_EQUALS (corrected->readE(0), data->readE(0));
} }
ITableWorkspace_sptr parameters = m_model->parameterTable(); ITableWorkspace_sptr parameters = m_model->parameterTable();
...@@ -120,10 +124,10 @@ public: ...@@ -120,10 +124,10 @@ public:
// Check table entries // Check table entries
TS_ASSERT_EQUALS(parameters->String(0,0), "A0"); TS_ASSERT_EQUALS(parameters->String(0,0), "A0");
TS_ASSERT_EQUALS(parameters->Double(0,1), 3); TS_ASSERT_DELTA (parameters->Double(0,1), 2.13978, 1E-5);
TS_ASSERT_DELTA (parameters->Double(0,2), 0.447214,1E-6); TS_ASSERT_DELTA (parameters->Double(0,2), 0.66709, 1E-5);
TS_ASSERT_EQUALS(parameters->String(1,0), "Cost function value"); TS_ASSERT_EQUALS(parameters->String(1,0), "Cost function value");
TS_ASSERT_DELTA (parameters->Double(1,1), 1.250000,1E-6); TS_ASSERT_DELTA (parameters->Double(1,1), 0.46627, 1E-5);
TS_ASSERT_EQUALS(parameters->Double(1,2), 0); TS_ASSERT_EQUALS(parameters->Double(1,2), 0);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment