Skip to content
Snippets Groups Projects
Commit d189a388 authored by Gemma Guest's avatar Gemma Guest
Browse files

Add polarization correction type to model

Re #22263
parent 1714539f
No related branches found
No related tags found
No related merge requests found
......@@ -55,11 +55,13 @@ void ExperimentPresenter::onReductionPaused() { m_view->enableAll(); }
void ExperimentPresenter::onReductionResumed() { m_view->disableAll(); }
PolarizationCorrections ExperimentPresenter::polarizationCorrectionsFromView() {
auto const correctionType = polarizationCorrectionTypeFromString(
m_view->getPolarisationCorrectionType());
auto const cRho = m_view->getCRho();
auto const cAlpha = m_view->getCAlpha();
auto const cAp = m_view->getCAp();
auto const cPp = m_view->getCPp();
return PolarizationCorrections(cRho, cAlpha, cAp, cPp);
return PolarizationCorrections(correctionType, cRho, cAlpha, cAp, cPp);
}
boost::optional<RangeInLambda>
......
......@@ -25,7 +25,8 @@ private:
Experiment makeModel() {
// TODO get defaults from algorithm
auto polarizationCorrections = PolarizationCorrections(0.0, 0.0, 0.0, 0.0);
auto polarizationCorrections = PolarizationCorrections(
PolarizationCorrectionType::None, 0.0, 0.0, 0.0, 0.0);
auto stitchParameters = std::map<std::string, std::string>();
auto perThetaDefaults = std::vector<PerThetaDefaults>(
{PerThetaDefaults(boost::none, std::pair<std::string, std::string>(),
......
......@@ -2,17 +2,23 @@
namespace MantidQt {
namespace CustomInterfaces {
PolarizationCorrections::PolarizationCorrections(double CRho, double CAlpha,
double CAp, double CPp)
: CRho(CRho), CAlpha(CAlpha), CAp(CAp), CPp(CPp) {}
PolarizationCorrections::PolarizationCorrections(
PolarizationCorrectionType correctionType, double CRho, double CAlpha,
double CAp, double CPp)
: m_correctionType(correctionType), m_cRho(CRho), m_cAlpha(CAlpha),
m_cAp(CAp), m_cPp(CPp) {}
double PolarizationCorrections::cRho() const { return CRho; }
PolarizationCorrectionType PolarizationCorrections::correctionType() {
return m_correctionType;
}
double PolarizationCorrections::cRho() const { return m_cRho; }
double PolarizationCorrections::cAlpha() const { return CAlpha; }
double PolarizationCorrections::cAlpha() const { return m_cAlpha; }
double PolarizationCorrections::cAp() const { return CAp; }
double PolarizationCorrections::cAp() const { return m_cAp; }
double PolarizationCorrections::cPp() const { return CPp; }
double PolarizationCorrections::cPp() const { return m_cPp; }
bool operator!=(PolarizationCorrections const &lhs,
PolarizationCorrections const &rhs) {
......
#ifndef MANTID_CUSTOMINTERFACES_POLARIZATIONCORRECTIONS_H_
#define MANTID_CUSTOMINTERFACES_POLARIZATIONCORRECTIONS_H_
#include "../DllConfig.h"
#include <stdexcept>
#include <string>
namespace MantidQt {
namespace CustomInterfaces {
enum class PolarizationCorrectionType { None, PA, PNR, ParameterFile };
inline PolarizationCorrectionType
polarizationCorrectionTypeFromString(std::string const &correctionType) {
if (correctionType == "None")
return PolarizationCorrectionType::None;
else if (correctionType == "PA")
return PolarizationCorrectionType::PA;
else if (correctionType == "PNR")
return PolarizationCorrectionType::PNR;
else if (correctionType == "ParameterFile")
return PolarizationCorrectionType::ParameterFile;
else
throw std::runtime_error("Unexpected polarization correction type.");
}
class MANTIDQT_ISISREFLECTOMETRY_DLL PolarizationCorrections {
public:
PolarizationCorrections(double CRho, double CAlpha, double CAp, double CPp);
PolarizationCorrections(PolarizationCorrectionType correctionType,
double CRho, double CAlpha, double CAp, double CPp);
PolarizationCorrectionType correctionType();
double cRho() const;
double cAlpha() const;
double cAp() const;
double cPp() const;
private:
double CRho;
double CAlpha;
double CAp;
double CPp;
PolarizationCorrectionType m_correctionType;
double m_cRho;
double m_cAlpha;
double m_cAp;
double m_cPp;
};
MANTIDQT_ISISREFLECTOMETRY_DLL bool
......
......@@ -95,7 +95,8 @@ public:
void testSetPolarizationCorrections() {
auto presenter = makePresenter();
PolarizationCorrections polCorr(1.2, 1.3, 2.4, 2.5);
PolarizationCorrections polCorr(PolarizationCorrectionType::PA, 1.2, 1.3,
2.4, 2.5);
expectViewReturnsDefaultValues();
EXPECT_CALL(m_view, getCRho()).WillOnce(Return(polCorr.cRho()));
......@@ -244,7 +245,8 @@ private:
NiceMock<MockExperimentView> m_view;
Experiment makeModel() {
auto polarizationCorrections = PolarizationCorrections(0.0, 0.0, 0.0, 0.0);
auto polarizationCorrections = PolarizationCorrections(
PolarizationCorrectionType::None, 0.0, 0.0, 0.0, 0.0);
auto transmissionRunRange = RangeInLambda(0.0, 0.0);
auto stitchParameters = std::map<std::string, std::string>();
auto perThetaDefaults = std::vector<PerThetaDefaults>(
......
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