From 41799d434e9ca2f6ecbbf03e4096f609f679713e Mon Sep 17 00:00:00 2001
From: Elliot Oram <Elliot.Oram@stfc.ac.uk>
Date: Thu, 30 Nov 2017 12:12:35 +0000
Subject: [PATCH] WIP: basic total scattering analysis

Refs #21294
---
 .../SystemTests/tests/analysis/ISIS_PowderPolarisTest.py  | 8 ++++++++
 scripts/Diffraction/isis_powder/polaris.py                | 8 ++++++++
 .../isis_powder/polaris_routines/polaris_algs.py          | 8 ++++++++
 .../isis_powder/polaris_routines/polaris_param_mapping.py | 2 ++
 4 files changed, 26 insertions(+)

diff --git a/Testing/SystemTests/tests/analysis/ISIS_PowderPolarisTest.py b/Testing/SystemTests/tests/analysis/ISIS_PowderPolarisTest.py
index 5faf10b8166..28725bef8ae 100644
--- a/Testing/SystemTests/tests/analysis/ISIS_PowderPolarisTest.py
+++ b/Testing/SystemTests/tests/analysis/ISIS_PowderPolarisTest.py
@@ -94,6 +94,14 @@ class FocusTest(stresstesting.MantidStressTest):
             config['datasearch.directories'] = self.existing_config
             mantid.mtd.clear()
 
+class TotalScatteringTest(stresstesting.MantidStressTest):
+
+    def runTest(self):
+
+
+    def validate(self):
+
+    def cleanup(self):
 
 def _gen_required_files():
     required_run_numbers = ["98531", "98532",  # create_van : PDF mode
diff --git a/scripts/Diffraction/isis_powder/polaris.py b/scripts/Diffraction/isis_powder/polaris.py
index 8232bd6c7b4..ffbf1b69ea4 100644
--- a/scripts/Diffraction/isis_powder/polaris.py
+++ b/scripts/Diffraction/isis_powder/polaris.py
@@ -42,6 +42,14 @@ class Polaris(AbstractInst):
                                              output_path=run_details.unsplined_vanadium_file_path)
         return vanadium_d
 
+    def create_total_scattering_pdf(self, **kwargs):
+        self._inst_settings.update_attributes(kwargs=kwargs)
+        # Validate that required files exist
+        # generate pdf
+        pdf_output = self._generate_ts_pdf(focused_ws=self._inst_settings.focused_ws,
+                                           merge_banks=self._inst_settings.merge_banks)
+        return pdf_output
+
     def set_sample_details(self, **kwargs):
         self._switch_mode_specific_inst_settings(kwargs.get("mode"))
         kwarg_name = "sample"
diff --git a/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py b/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py
index 595da208bca..246809469dd 100644
--- a/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py
+++ b/scripts/Diffraction/isis_powder/polaris_routines/polaris_algs.py
@@ -76,6 +76,14 @@ def save_unsplined_vanadium(vanadium_ws, output_path):
     mantid.DeleteWorkspace(converted_group)
 
 
+def generate_ts_pdf(tof_ws, merge_banks=False):
+    q_ws = mantid.ConvertUnits(InputWorkspace=tof_ws, Target="MomentumTransfer")
+    if merge_banks:
+        raise RuntimeError("Merging banks is currently not supported")
+    pdf_output = mantid.PDFFourierTransform(Inputworkspace=q_ws, InputSofQType="S(Q)", PDFType="G(r)")
+    return pdf_output
+
+
 def _apply_bragg_peaks_masking(workspaces_to_mask, mask_list):
     output_workspaces = list(workspaces_to_mask)
 
diff --git a/scripts/Diffraction/isis_powder/polaris_routines/polaris_param_mapping.py b/scripts/Diffraction/isis_powder/polaris_routines/polaris_param_mapping.py
index 8b4931b2b1a..06e03095d39 100644
--- a/scripts/Diffraction/isis_powder/polaris_routines/polaris_param_mapping.py
+++ b/scripts/Diffraction/isis_powder/polaris_routines/polaris_param_mapping.py
@@ -16,8 +16,10 @@ attr_mapping = \
      ParamMapEntry(ext_name="first_cycle_run_no",          int_name="run_in_range"),
      ParamMapEntry(ext_name="focused_cropping_values",     int_name="focused_cropping_values"),
      ParamMapEntry(ext_name="focused_bin_widths",          int_name="focused_bin_widths"),
+     ParamMapEntry(ext_name="focused_workspace",           int_name="focused_ws"),
      ParamMapEntry(ext_name="grouping_file_name",          int_name="grouping_file_name"),
      ParamMapEntry(ext_name="input_mode",                  int_name="input_mode", enum_class=INPUT_BATCHING),
+     ParamMapEntry(ext_name="merge_banks",                 int_name="merge_banks"),
      ParamMapEntry(ext_name="mode",                        int_name="mode", enum_class=POLARIS_CHOPPER_MODES),
      ParamMapEntry(ext_name="multiple_scattering",         int_name="multiple_scattering"),
      ParamMapEntry(ext_name="raw_data_cropping_values",    int_name="raw_data_crop_values"),
-- 
GitLab