diff --git a/Code/Mantid/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/EQSANSDirectBeamTransmission.py b/Code/Mantid/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/EQSANSDirectBeamTransmission.py index 424e7a883dbd66aaf24c4546750cd646a4c79c4a..c0485393154573ba327de2a0df23710f10ab8058 100644 --- a/Code/Mantid/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/EQSANSDirectBeamTransmission.py +++ b/Code/Mantid/Framework/PythonInterface/plugins/algorithms/WorkflowAlgorithms/EQSANSDirectBeamTransmission.py @@ -71,6 +71,9 @@ class EQSANSDirectBeamTransmission(PythonAlgorithm): if raw_ws is not None: self.setPropertyValue("RawTransmissionWorkspace", raw_name) self.setProperty("RawTransmissionWorkspace", raw_ws) + + # Save the transmission to disk + self._save_transmission(trans_ws, raw_ws) else: ws = self._with_frame_skipping(workspace) self.setProperty("OutputWorkspace", ws) @@ -229,8 +232,53 @@ class EQSANSDirectBeamTransmission(PythonAlgorithm): self.setPropertyValue("RawTransmissionWorkspace", raw_ws_name) self.setProperty("RawTransmissionWorkspace", raw_ws) + # Save the transmission to disk + self._save_transmission(trans_ws, raw_ws) + # 2- Apply correction (Note: Apply2DTransCorr) #Apply angle-dependent transmission correction using the zero-angle transmission return TransmissionUtils.apply_transmission(self, workspace, trans_ws) + def _save_transmission(self, trans_ws, raw_ws): + """ + Save the transmission data and fit to disk. + @param trans_ws: transmission workspace + @param raw_ws: transmission fit workspace + """ + property_manager_name = self.getProperty("ReductionProperties").value + property_manager = PropertyManagerDataService.retrieve(property_manager_name) + + output_ws_name = self.getPropertyValue('OutputWorkspace') + if property_manager.existsProperty("OutputDirectory"): + output_dir = property_manager.getProperty("OutputDirectory").value + if os.path.isdir(output_dir): + if raw_ws is not None: + filename = os.path.join(output_dir, output_ws_name+'_transmission.txt') + alg = AlgorithmManager.create("SaveAscii") + alg.initialize() + alg.setChild(True) + alg.setProperty("Filename", filename) + alg.setProperty("InputWorkspace", raw_ws) + alg.setProperty("Separator", "Tab") + alg.setProperty("CommentIndicator", "# ") + alg.setProperty("WriteSpectrumID", False) + alg.execute() + + if trans_ws is not None: + filename = os.path.join(output_dir, output_ws_name+'_transmission_fit.txt') + alg = AlgorithmManager.create("SaveAscii") + alg.initialize() + alg.setChild(True) + alg.setProperty("Filename", filename) + alg.setProperty("InputWorkspace", trans_ws) + alg.setProperty("Separator", "Tab") + alg.setProperty("CommentIndicator", "# ") + alg.setProperty("WriteSpectrumID", False) + alg.execute() + else: + msg = "Output directory doesn't exist: %s\n" % output_dir + Logger(__file__).error(msg) + else: + Logger(__file__).error("Could not find output directory") + AlgorithmFactory.subscribe(EQSANSDirectBeamTransmission)