Skip to content

Commit

Permalink
Refs #10774. PoldiSpectrumLinearBackground uses workspace.
Browse files Browse the repository at this point in the history
  • Loading branch information
Michael Wedel committed Jan 7, 2015
1 parent 68994e0 commit c07be4c
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 1 deletion.
Expand Up @@ -50,6 +50,9 @@ class MANTID_SINQ_DLL PoldiSpectrumLinearBackground

virtual std::string name() const { return "PoldiSpectrumLinearBackground"; }

virtual void setWorkspace(boost::shared_ptr<const API::Workspace> ws);
size_t getTimeBinCount() const;

virtual void function1DSpectrum(const API::FunctionDomain1DSpectrum &domain,
API::FunctionValues &values) const;
virtual void
Expand All @@ -58,6 +61,8 @@ class MANTID_SINQ_DLL PoldiSpectrumLinearBackground

protected:
void init();

size_t m_timeBinCount;
};

} // namespace Poldi
Expand Down
@@ -1,5 +1,6 @@
#include "MantidSINQ/PoldiUtilities/PoldiSpectrumLinearBackground.h"
#include "MantidAPI/FunctionFactory.h"
#include "MantidAPI/MatrixWorkspace.h"

namespace Mantid {
namespace Poldi {
Expand All @@ -10,7 +11,21 @@ DECLARE_FUNCTION(PoldiSpectrumLinearBackground)

/// Default constructor
PoldiSpectrumLinearBackground::PoldiSpectrumLinearBackground()
: ParamFunction(), IFunction1DSpectrum() {}
: ParamFunction(), IFunction1DSpectrum(), m_timeBinCount(0) {}

void PoldiSpectrumLinearBackground::setWorkspace(boost::shared_ptr<const Workspace> ws)
{
MatrixWorkspace_const_sptr matrixWs = boost::dynamic_pointer_cast<const MatrixWorkspace>(ws);

if(matrixWs && matrixWs->getNumberHistograms() > 0) {
m_timeBinCount = matrixWs->readX(0).size();
}
}

size_t PoldiSpectrumLinearBackground::getTimeBinCount() const
{
return m_timeBinCount;
}

/// Calculates the function values as f(x) = A1 * wi
void PoldiSpectrumLinearBackground::function1DSpectrum(
Expand Down
Expand Up @@ -50,6 +50,25 @@ class PoldiSpectrumLinearBackgroundTest : public CxxTest::TestSuite
TS_ASSERT(function);
}

void testSetWorkspace()
{
IFunction_sptr function = FunctionFactory::Instance().createFunction("PoldiSpectrumLinearBackground");
boost::shared_ptr<PoldiSpectrumLinearBackground> castedFunction = boost::dynamic_pointer_cast<PoldiSpectrumLinearBackground>(function);

// default is 0
TS_ASSERT_EQUALS(castedFunction->getTimeBinCount(), 0);

// invalid workspace, nothing happens
MatrixWorkspace_const_sptr invalid;
TS_ASSERT_THROWS_NOTHING(castedFunction->setWorkspace(invalid));
TS_ASSERT_EQUALS(castedFunction->getTimeBinCount(), 0);

// valid workspace with 10 bins
MatrixWorkspace_sptr ws = WorkspaceCreationHelper::Create2DWorkspace123(1, 10);
TS_ASSERT_THROWS_NOTHING(castedFunction->setWorkspace(ws));
TS_ASSERT_EQUALS(castedFunction->getTimeBinCount(), 10);
}

void testFunctionValue()
{
IFunction_sptr function = FunctionFactory::Instance().createFunction("PoldiSpectrumLinearBackground");
Expand Down

0 comments on commit c07be4c

Please sign in to comment.