diff --git a/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentPresenter.cpp b/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentPresenter.cpp
index cbf38d3a5a2a887a4a0cbcbd6e00a617391e2735..c0be0045acef677d687165f7963a9cf4df28169c 100644
--- a/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentPresenter.cpp
+++ b/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentPresenter.cpp
@@ -78,6 +78,19 @@ PolarizationCorrections ExperimentPresenter::polarizationCorrectionsFromView() {
   return PolarizationCorrections(correctionType);
 }
 
+FloodCorrections ExperimentPresenter::floodCorrectionsFromView() {
+  auto const correctionType =
+      floodCorrectionTypeFromString(m_view->getFloodCorrectionType());
+
+  if (floodCorrectionRequiresInputs(correctionType)) {
+    m_view->enableFloodCorrectionInputs();
+    return FloodCorrections(correctionType, m_view->getFloodWorkspace());
+  }
+
+  m_view->disableFloodCorrectionInputs();
+  return FloodCorrections(correctionType);
+}
+
 boost::optional<RangeInLambda>
 ExperimentPresenter::transmissionRunRangeFromView() {
   auto const range = RangeInLambda(m_view->getTransmissionStartOverlap(),
@@ -117,13 +130,17 @@ ExperimentValidationResult ExperimentPresenter::validateExperimentFromView() {
         reductionTypeFromString(m_view->getReductionType());
     auto const summationType =
         summationTypeFromString(m_view->getSummationType());
+    auto const includePartialBins = m_view->getIncludePartialBins();
+    auto const debugOption = m_view->getDebugOption();
     auto transmissionRunRange = transmissionRunRangeFromView();
     auto polarizationCorrections = polarizationCorrectionsFromView();
+    auto floodCorrections = floodCorrectionsFromView();
     auto stitchParameters = stitchParametersFromView();
     return ExperimentValidationResult(
         Experiment(analysisMode, reductionType, summationType,
-                   polarizationCorrections, transmissionRunRange,
-                   stitchParameters, perThetaValidationResult.assertValid()));
+                   includePartialBins, debugOption, polarizationCorrections,
+                   floodCorrections, transmissionRunRange, stitchParameters,
+                   perThetaValidationResult.assertValid()));
   } else {
     return ExperimentValidationResult(
         ExperimentValidationErrors(perThetaValidationResult.assertError()));
diff --git a/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentPresenter.h b/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentPresenter.h
index a7d60e5606ce9b7e1e36c5f09ed4a165d132ffce..4e4ac02d37df3cdb79831995fcbed3c6b9ebb845 100644
--- a/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentPresenter.h
+++ b/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentPresenter.h
@@ -64,6 +64,7 @@ public:
 private:
   ExperimentValidationResult validateExperimentFromView();
   PolarizationCorrections polarizationCorrectionsFromView();
+  FloodCorrections floodCorrectionsFromView();
   boost::optional<RangeInLambda> transmissionRunRangeFromView();
   std::map<std::string, std::string> stitchParametersFromView();
 
diff --git a/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentPresenterFactory.h b/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentPresenterFactory.h
index 4e5d359608660533171c8f258ab40452e1388361..dc1fa88eb82713b7f4ea3880e8aa08a33c30f4d6 100644
--- a/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentPresenterFactory.h
+++ b/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentPresenterFactory.h
@@ -32,15 +32,16 @@ private:
   Experiment makeModel() {
     // TODO get defaults from algorithm
     auto polarizationCorrections =
-        PolarizationCorrections(PolarizationCorrectionType::None, boost::none,
-                                boost::none, boost::none, boost::none);
+        PolarizationCorrections(PolarizationCorrectionType::None);
+    auto floodCorrections(FloodCorrectionType::Workspace);
     auto stitchParameters = std::map<std::string, std::string>();
     auto perThetaDefaults = std::vector<PerThetaDefaults>(
         {PerThetaDefaults(boost::none, std::pair<std::string, std::string>(),
                           RangeInQ(), boost::none, ProcessingInstructions())});
     return Experiment(AnalysisMode::PointDetector, ReductionType::Normal,
-                      SummationType::SumInLambda,
-                      std::move(polarizationCorrections), boost::none,
+                      SummationType::SumInLambda, false, false,
+                      std::move(polarizationCorrections),
+                      std::move(floodCorrections), boost::none,
                       std::move(stitchParameters), std::move(perThetaDefaults));
   }
 };
diff --git a/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentView.cpp b/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentView.cpp
index 44b7741f22bcf52f357880ee7a7531624ac6a9d1..5e45526934bc03e7ac4167815a1ccc893d2645ac 100644
--- a/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentView.cpp
+++ b/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentView.cpp
@@ -110,8 +110,6 @@ void ExperimentView::initLayout() {
           SLOT(summationTypeChanged(int)));
   connect(m_ui.addPerAngleOptionsButton, SIGNAL(clicked()), this,
           SLOT(onNewPerThetaDefaultsRowRequested()));
-  connect(m_ui.floodCorComboBox, SIGNAL(currentIndexChanged(const QString &)),
-          this, SLOT(floodCorComboBoxChanged(const QString &)));
 }
 
 void ExperimentView::initializeTableItems(QTableWidget &table) {
@@ -368,6 +366,16 @@ void ExperimentView::disablePolarizationCorrectionInputs() {
   m_ui.CPpEdit->setEnabled(false);
 }
 
+void ExperimentView::enableFloodCorrectionInputs() {
+  m_ui.floodWorkspaceWsSelector->setVisible(true);
+  m_ui.floodWorkspaceWsSelectorLabel->setVisible(true);
+}
+
+void ExperimentView::disableFloodCorrectionInputs() {
+  m_ui.floodWorkspaceWsSelector->setVisible(false);
+  m_ui.floodWorkspaceWsSelectorLabel->setVisible(false);
+}
+
 void ExperimentView::onPerAngleDefaultsChanged(int row, int column) {
   m_notifyee->notifyPerAngleDefaultsChanged(row, column);
 }
@@ -389,12 +397,6 @@ void ExperimentView::removePerThetaDefaultsRow(int rowIndex) {
   m_ui.optionsTable->removeRow(rowIndex);
 }
 
-void ExperimentView::floodCorComboBoxChanged(const QString &text) {
-  auto const showWorkspaceSelector = text == "Workspace";
-  m_ui.floodWorkspaceWsSelector->setVisible(showWorkspaceSelector);
-  m_ui.floodWorkspaceWsSelectorLabel->setVisible(showWorkspaceSelector);
-}
-
 std::string ExperimentView::getText(QLineEdit const &lineEdit) const {
   return lineEdit.text().toStdString();
 }
diff --git a/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentView.h b/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentView.h
index 1eddcbad51a15e00dbd1884c310f0d5b82c7dd55..0e19e06e365bacd6ceac89c8f754bf8cabead23b 100644
--- a/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentView.h
+++ b/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/ExperimentView.h
@@ -99,6 +99,9 @@ public:
   void enablePolarizationCorrectionInputs() override;
   void disablePolarizationCorrectionInputs() override;
 
+  void enableFloodCorrectionInputs() override;
+  void disableFloodCorrectionInputs() override;
+
   void addPerThetaDefaultsRow() override;
   void removePerThetaDefaultsRow(int rowIndex) override;
 
@@ -110,9 +113,6 @@ public slots:
   void onSettingsChanged();
   void onPerAngleDefaultsChanged(int row, int column);
 
-private slots:
-  void floodCorComboBoxChanged(const QString &text);
-
 private:
   void initializeTableItems(QTableWidget &table);
   void initializeTableRow(QTableWidget &table, int row);
diff --git a/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/IExperimentView.h b/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/IExperimentView.h
index 9e0df97574b5f1ab8cd4a14867c8e1aa5f6bcc8d..8bcf7c5f504b64258cdf522baa110098bc35bb2f 100644
--- a/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/IExperimentView.h
+++ b/qt/scientific_interfaces/ISISReflectometry/GUI/Experiment/IExperimentView.h
@@ -73,6 +73,9 @@ public:
   virtual void enablePolarizationCorrectionInputs() = 0;
   virtual void disablePolarizationCorrectionInputs() = 0;
 
+  virtual void enableFloodCorrectionInputs() = 0;
+  virtual void disableFloodCorrectionInputs() = 0;
+
   virtual double getTransmissionStartOverlap() const = 0;
   virtual void setTransmissionStartOverlap(double start) = 0;
   virtual double getTransmissionEndOverlap() const = 0;
diff --git a/qt/scientific_interfaces/ISISReflectometry/Reduction/CMakeLists.txt b/qt/scientific_interfaces/ISISReflectometry/Reduction/CMakeLists.txt
index 1b46abca8e2996f3f238506efa1186ea4c33be28..19a7f4d958b5c9f67c9f2ad8629a992342fff08f 100644
--- a/qt/scientific_interfaces/ISISReflectometry/Reduction/CMakeLists.txt
+++ b/qt/scientific_interfaces/ISISReflectometry/Reduction/CMakeLists.txt
@@ -10,6 +10,7 @@ set ( REDUCTION_SRC_FILES
 
     DetectorCorrections.cpp
     Experiment.cpp
+    FloodCorrections.cpp
     Instrument.cpp
     MonitorCorrections.cpp
     PolarizationCorrections.cpp
@@ -35,6 +36,7 @@ set ( REDUCTION_INC_FILES
     AnalysisMode.h
     DetectorCorrections.h
     Experiment.h
+    FloodCorrections.h
     Instrument.h
     MonitorCorrections.h
     PolarizationCorrections.h
diff --git a/qt/scientific_interfaces/ISISReflectometry/Reduction/Experiment.cpp b/qt/scientific_interfaces/ISISReflectometry/Reduction/Experiment.cpp
index a2a343d1d6dd065efe5117a80858d4d23a09b2fd..25e93a8348eccb047946c77b5eccec4f8f9521ca 100644
--- a/qt/scientific_interfaces/ISISReflectometry/Reduction/Experiment.cpp
+++ b/qt/scientific_interfaces/ISISReflectometry/Reduction/Experiment.cpp
@@ -12,14 +12,18 @@ namespace MantidQt {
 namespace CustomInterfaces {
 
 Experiment::Experiment(AnalysisMode analysisMode, ReductionType reductionType,
-                       SummationType summationType,
+                       SummationType summationType, bool includePartialBins,
+                       bool debug,
                        PolarizationCorrections polarizationCorrections,
+                       FloodCorrections floodCorrections,
                        boost::optional<RangeInLambda> transmissionRunRange,
                        std::map<std::string, std::string> stitchParameters,
                        std::vector<PerThetaDefaults> perThetaDefaults)
     : m_analysisMode(analysisMode), m_reductionType(reductionType),
-      m_summationType(summationType),
+      m_summationType(summationType), m_includePartialBins(includePartialBins),
+      m_debug(debug),
       m_polarizationCorrections(std::move(polarizationCorrections)),
+      m_floodCorrections(std::move(floodCorrections)),
       m_transmissionRunRange(std::move(transmissionRunRange)),
       m_stitchParameters(std::move(stitchParameters)),
       m_perThetaDefaults(std::move(perThetaDefaults)) {}
@@ -27,9 +31,14 @@ Experiment::Experiment(AnalysisMode analysisMode, ReductionType reductionType,
 AnalysisMode Experiment::analysisMode() const { return m_analysisMode; }
 ReductionType Experiment::reductionType() const { return m_reductionType; }
 SummationType Experiment::summationType() const { return m_summationType; }
+bool Experiment::includePartialBins() const { return m_includePartialBins; }
+bool Experiment::debug() const { return m_debug; }
 PolarizationCorrections const &Experiment::polarizationCorrections() const {
   return m_polarizationCorrections;
 }
+FloodCorrections const &Experiment::floodCorrections() const {
+  return m_floodCorrections;
+}
 
 boost::optional<RangeInLambda> Experiment::transmissionRunRange() const {
   return m_transmissionRunRange;
diff --git a/qt/scientific_interfaces/ISISReflectometry/Reduction/Experiment.h b/qt/scientific_interfaces/ISISReflectometry/Reduction/Experiment.h
index 4d06f63f11fd9ca4adc3578cffecbbe496f33b18..447188156617f27126196640051a653f17185c59 100644
--- a/qt/scientific_interfaces/ISISReflectometry/Reduction/Experiment.h
+++ b/qt/scientific_interfaces/ISISReflectometry/Reduction/Experiment.h
@@ -9,6 +9,7 @@
 
 #include "../DllConfig.h"
 #include "AnalysisMode.h"
+#include "FloodCorrections.h"
 #include "PerThetaDefaults.h"
 #include "PolarizationCorrections.h"
 #include "RangeInLambda.h"
@@ -24,8 +25,9 @@ namespace CustomInterfaces {
 class MANTIDQT_ISISREFLECTOMETRY_DLL Experiment {
 public:
   Experiment(AnalysisMode analysisMode, ReductionType reductionType,
-             SummationType summationType,
+             SummationType summationType, bool includePartialBins, bool debug,
              PolarizationCorrections polarizationCorrections,
+             FloodCorrections floodCorrections,
              boost::optional<RangeInLambda> transmissionRunRange,
              std::map<std::string, std::string> stitchParameters,
              std::vector<PerThetaDefaults> perThetaDefaults);
@@ -33,7 +35,10 @@ public:
   AnalysisMode analysisMode() const;
   ReductionType reductionType() const;
   SummationType summationType() const;
+  bool includePartialBins() const;
+  bool debug() const;
   PolarizationCorrections const &polarizationCorrections() const;
+  FloodCorrections const &floodCorrections() const;
   boost::optional<RangeInLambda> transmissionRunRange() const;
   std::map<std::string, std::string> stitchParameters() const;
   std::vector<PerThetaDefaults> const &perThetaDefaults() const;
@@ -45,8 +50,11 @@ private:
   AnalysisMode m_analysisMode;
   ReductionType m_reductionType;
   SummationType m_summationType;
+  bool m_includePartialBins;
+  bool m_debug;
 
   PolarizationCorrections m_polarizationCorrections;
+  FloodCorrections m_floodCorrections;
   boost::optional<RangeInLambda> m_transmissionRunRange;
 
   std::map<std::string, std::string> m_stitchParameters;
diff --git a/qt/scientific_interfaces/ISISReflectometry/Reduction/FloodCorrections.cpp b/qt/scientific_interfaces/ISISReflectometry/Reduction/FloodCorrections.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..fc3f1ce92b6c36be49206fa53c48e2fd75823c39
--- /dev/null
+++ b/qt/scientific_interfaces/ISISReflectometry/Reduction/FloodCorrections.cpp
@@ -0,0 +1,32 @@
+// Mantid Repository : https://github.com/mantidproject/mantid
+//
+// Copyright &copy; 2018 ISIS Rutherford Appleton Laboratory UKRI,
+//     NScD Oak Ridge National Laboratory, European Spallation Source
+//     & Institut Laue - Langevin
+// SPDX - License - Identifier: GPL - 3.0 +
+#include "FloodCorrections.h"
+namespace MantidQt {
+namespace CustomInterfaces {
+
+FloodCorrections::FloodCorrections(FloodCorrectionType correctionType,
+                                   boost::optional<std::string> workspace)
+    : m_correctionType(correctionType), m_workspace(workspace) {}
+
+FloodCorrectionType FloodCorrections::correctionType() const {
+  return m_correctionType;
+}
+
+boost::optional<std::string> FloodCorrections::workspace() const {
+  return m_workspace;
+}
+
+bool operator!=(FloodCorrections const &lhs, FloodCorrections const &rhs) {
+  return !(lhs == rhs);
+}
+
+bool operator==(FloodCorrections const &lhs, FloodCorrections const &rhs) {
+  return lhs.correctionType() == rhs.correctionType() &&
+         lhs.workspace() == rhs.workspace();
+}
+} // namespace CustomInterfaces
+} // namespace MantidQt
diff --git a/qt/scientific_interfaces/ISISReflectometry/Reduction/FloodCorrections.h b/qt/scientific_interfaces/ISISReflectometry/Reduction/FloodCorrections.h
new file mode 100644
index 0000000000000000000000000000000000000000..6b6e3c4e6733fb3d8906f65e399f4ac4ab5a39f4
--- /dev/null
+++ b/qt/scientific_interfaces/ISISReflectometry/Reduction/FloodCorrections.h
@@ -0,0 +1,49 @@
+// Mantid Repository : https://github.com/mantidproject/mantid
+//
+// Copyright &copy; 2018 ISIS Rutherford Appleton Laboratory UKRI,
+//     NScD Oak Ridge National Laboratory, European Spallation Source
+//     & Institut Laue - Langevin
+// SPDX - License - Identifier: GPL - 3.0 +
+#ifndef MANTID_CUSTOMINTERFACES_FLOODCORRECTIONS_H_
+#define MANTID_CUSTOMINTERFACES_FLOODCORRECTIONS_H_
+#include "../DllConfig.h"
+#include <boost/optional.hpp>
+#include <string>
+namespace MantidQt {
+namespace CustomInterfaces {
+enum class FloodCorrectionType { Workspace, ParameterFile };
+
+inline FloodCorrectionType
+floodCorrectionTypeFromString(std::string const &correctionType) {
+  if (correctionType == "Workspace")
+    return FloodCorrectionType::Workspace;
+  else if (correctionType == "ParameterFile")
+    return FloodCorrectionType::ParameterFile;
+  else
+    throw std::runtime_error("Unexpected flood correction type.");
+}
+
+inline bool floodCorrectionRequiresInputs(FloodCorrectionType correctionType) {
+  return (correctionType == FloodCorrectionType::Workspace);
+}
+
+class MANTIDQT_ISISREFLECTOMETRY_DLL FloodCorrections {
+public:
+  FloodCorrections(FloodCorrectionType correctionType,
+                   boost::optional<std::string> workspace = boost::none);
+
+  FloodCorrectionType correctionType() const;
+  boost::optional<std::string> workspace() const;
+
+private:
+  FloodCorrectionType m_correctionType;
+  boost::optional<std::string> m_workspace;
+};
+
+MANTIDQT_ISISREFLECTOMETRY_DLL bool operator==(FloodCorrections const &lhs,
+                                               FloodCorrections const &rhs);
+MANTIDQT_ISISREFLECTOMETRY_DLL bool operator!=(FloodCorrections const &lhs,
+                                               FloodCorrections const &rhs);
+} // namespace CustomInterfaces
+} // namespace MantidQt
+#endif // MANTID_CUSTOMINTERFACES_FLOODCORRECTIONS_H_
diff --git a/qt/scientific_interfaces/test/ISISReflectometry/Experiment/ExperimentPresenterTest.h b/qt/scientific_interfaces/test/ISISReflectometry/Experiment/ExperimentPresenterTest.h
index d7b38df06840d962f017012d32a8af0f8861b24f..df3539494a061011bc9ffce0f55251e690ebe28a 100644
--- a/qt/scientific_interfaces/test/ISISReflectometry/Experiment/ExperimentPresenterTest.h
+++ b/qt/scientific_interfaces/test/ISISReflectometry/Experiment/ExperimentPresenterTest.h
@@ -89,7 +89,7 @@ public:
     verifyAndClear();
   }
 
-  void testSumInQWidgetsEnbledWhenChangeToSumInQ() {
+  void testSumInQWidgetsEnabledWhenChangeToSumInQ() {
     auto presenter = makePresenter();
 
     expectViewReturnsSumInQDefaults();
@@ -100,6 +100,28 @@ public:
     verifyAndClear();
   }
 
+  void testChangingIncludePartialBinsUpdatesModel() {
+    auto presenter = makePresenter();
+
+    expectViewReturnsSumInQDefaults();
+    EXPECT_CALL(m_view, getIncludePartialBins()).WillOnce(Return(true));
+    presenter.notifySettingsChanged();
+
+    TS_ASSERT(presenter.experiment().includePartialBins());
+    verifyAndClear();
+  }
+
+  void testChangingDebugOptionUpdatesModel() {
+    auto presenter = makePresenter();
+
+    expectViewReturnsSumInQDefaults();
+    EXPECT_CALL(m_view, getDebugOption()).WillOnce(Return(true));
+    presenter.notifySettingsChanged();
+
+    TS_ASSERT(presenter.experiment().debug());
+    verifyAndClear();
+  }
+
   void testSetPolarizationCorrectionsUpdatesModel() {
     auto presenter = makePresenter();
     PolarizationCorrections polCorr(PolarizationCorrectionType::PA, 1.2, 1.3,
@@ -132,6 +154,28 @@ public:
     runWithPolarizationCorrectionInputsEnabled("PNR");
   }
 
+  void testSetFloodCorrectionsUpdatesModel() {
+    auto presenter = makePresenter();
+    FloodCorrections floodCorr(FloodCorrectionType::Workspace,
+                               std::string{"testWS"});
+
+    EXPECT_CALL(m_view, getFloodCorrectionType()).WillOnce(Return("Workspace"));
+    EXPECT_CALL(m_view, getFloodWorkspace())
+        .WillOnce(Return(floodCorr.workspace().get()));
+    presenter.notifySettingsChanged();
+
+    TS_ASSERT_EQUALS(presenter.experiment().floodCorrections(), floodCorr);
+    verifyAndClear();
+  }
+
+  void testSetFloodCorrectionsToWorkspaceEnablesInputs() {
+    runWithFloodCorrectionInputsEnabled("Workspace");
+  }
+
+  void testSetFloodCorrectionsToParameterFileDisablesInputs() {
+    runWithFloodCorrectionInputsDisabled("ParameterFile");
+  }
+
   void testSetValidTransmissionRunRange() {
     RangeInLambda range(7.2, 10);
     runTestForValidTransmissionRunRange(range, range);
@@ -345,14 +389,15 @@ private:
 
   Experiment makeModel() {
     auto polarizationCorrections =
-        PolarizationCorrections(PolarizationCorrectionType::None, boost::none,
-                                boost::none, boost::none, boost::none);
+        PolarizationCorrections(PolarizationCorrectionType::None);
+    auto floodCorrections = FloodCorrections(FloodCorrectionType::Workspace);
     auto transmissionRunRange = boost::none;
     auto stitchParameters = std::map<std::string, std::string>();
     auto perThetaDefaults = std::vector<PerThetaDefaults>();
     return Experiment(AnalysisMode::PointDetector, ReductionType::Normal,
-                      SummationType::SumInLambda,
+                      SummationType::SumInLambda, false, false,
                       std::move(polarizationCorrections),
+                      std::move(floodCorrections),
                       std::move(transmissionRunRange),
                       std::move(stitchParameters), std::move(perThetaDefaults));
   }
@@ -405,6 +450,28 @@ private:
     verifyAndClear();
   }
 
+  void runWithFloodCorrectionInputsDisabled(std::string const &type) {
+    auto presenter = makePresenter();
+
+    EXPECT_CALL(m_view, getFloodCorrectionType()).WillOnce(Return(type));
+    EXPECT_CALL(m_view, disableFloodCorrectionInputs()).Times(1);
+    EXPECT_CALL(m_view, getFloodWorkspace()).Times(0);
+    presenter.notifySettingsChanged();
+
+    verifyAndClear();
+  }
+
+  void runWithFloodCorrectionInputsEnabled(std::string const &type) {
+    auto presenter = makePresenter();
+
+    EXPECT_CALL(m_view, getFloodCorrectionType()).WillOnce(Return(type));
+    EXPECT_CALL(m_view, enableFloodCorrectionInputs()).Times(1);
+    EXPECT_CALL(m_view, getFloodWorkspace()).Times(1);
+    presenter.notifySettingsChanged();
+
+    verifyAndClear();
+  }
+
   void runTestForValidTransmissionRunRange(
       RangeInLambda const &range,
       boost::optional<RangeInLambda> const &result) {
diff --git a/qt/scientific_interfaces/test/ISISReflectometry/Experiment/MockExperimentView.h b/qt/scientific_interfaces/test/ISISReflectometry/Experiment/MockExperimentView.h
index dcfb788fd756ea6e091800a797a5c0783dde24bf..933e27e2effeae4cec690269fec40a61a3e0dcef 100644
--- a/qt/scientific_interfaces/test/ISISReflectometry/Experiment/MockExperimentView.h
+++ b/qt/scientific_interfaces/test/ISISReflectometry/Experiment/MockExperimentView.h
@@ -23,6 +23,11 @@ public:
     ON_CALL(*this, getReductionType()).WillByDefault(testing::Return("Normal"));
     ON_CALL(*this, getPolarizationCorrectionType())
         .WillByDefault(testing::Return("None"));
+    ON_CALL(*this, getFloodCorrectionType())
+        .WillByDefault(testing::Return("Workspace"));
+    ON_CALL(*this, getDebugOption()).WillByDefault(testing::Return(false));
+    ON_CALL(*this, getIncludePartialBins())
+        .WillByDefault(testing::Return(false));
   }
   MOCK_METHOD1(subscribe, void(ExperimentViewSubscriber *));
   MOCK_METHOD1(createStitchHints,
@@ -52,6 +57,8 @@ public:
   MOCK_METHOD0(disablePolarizationCorrections, void());
   MOCK_METHOD0(enablePolarizationCorrectionInputs, void());
   MOCK_METHOD0(disablePolarizationCorrectionInputs, void());
+  MOCK_METHOD0(enableFloodCorrectionInputs, void());
+  MOCK_METHOD0(disableFloodCorrectionInputs, void());
   MOCK_CONST_METHOD0(getTransmissionStartOverlap, double());
   MOCK_METHOD1(setTransmissionStartOverlap, void(double));
   MOCK_CONST_METHOD0(getTransmissionEndOverlap, double());