From d6f2c2cb18ac0d3d8ba6a38822d2471f23f98af1 Mon Sep 17 00:00:00 2001
From: Harriet Brown <harriet.brown@stfc.ac.uk>
Date: Tue, 15 Oct 2019 11:49:29 +0100
Subject: [PATCH] fix FitIncidentSpectrum not correcting for different binning
 sizes

---
 .../plugins/algorithms/FitIncidentSpectrum.py          | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/Framework/PythonInterface/plugins/algorithms/FitIncidentSpectrum.py b/Framework/PythonInterface/plugins/algorithms/FitIncidentSpectrum.py
index 50732478d97..b54bb76c005 100644
--- a/Framework/PythonInterface/plugins/algorithms/FitIncidentSpectrum.py
+++ b/Framework/PythonInterface/plugins/algorithms/FitIncidentSpectrum.py
@@ -89,16 +89,17 @@ class FitIncidentSpectrum(PythonAlgorithm):
             y_fit = np.array(self._input_ws.readY(self._incident_index))
         else:
             rebinned = Rebin(
-                self._input_ws,
+                InputWorkspace=self._input_ws,
                 Params=self._binning_for_fit,
-                PreserveEvents=True,
-                StoreInADS=False)
+                PreserveEvents=True)
             x_fit = np.array(rebinned.readX(self._incident_index))
             y_fit = np.array(rebinned.readY(self._incident_index))
 
+        rebin_norm = x.size/x_fit.size
         x_bin_centers = 0.5*(x[:-1] + x[1:])
         if len(x_fit) != len(y_fit):
             x_fit = 0.5*(x_fit[:-1] + x_fit[1:])
+
         if self._fit_spectrum_with == 'CubicSpline':
             # Fit using cubic spline
             fit, fit_prime = self.fit_cubic_spline(x_fit, y_fit, x_bin_centers, s=1e7)
@@ -113,11 +114,12 @@ class FitIncidentSpectrum(PythonAlgorithm):
         elif self._fit_spectrum_with == 'GaussConvCubicSpline':
             # Fit using Gauss conv cubic spline
             fit, fit_prime = self.fit_cubic_spline_with_gauss_conv(x_fit, y_fit, x_bin_centers, sigma=0.5)
+
         # Create output workspace
         unit = self._input_ws.getAxis(0).getUnit().unitID()
         output_workspace = CreateWorkspace(
             DataX=x,
-            DataY=np.append(fit, fit_prime),
+            DataY=np.append(fit, fit_prime)/rebin_norm,
             UnitX=unit,
             NSpec=2,
             Distribution=False,
-- 
GitLab