diff --git a/Code/Mantid/Framework/PythonInterface/plugins/algorithms/SNSPowderReduction.py b/Code/Mantid/Framework/PythonInterface/plugins/algorithms/SNSPowderReduction.py index 3e824ec7cd0cefa31c87c53bce70e72b7de39578..594f6109a4dc9d9238dcba56e925197b6e0a4899 100644 --- a/Code/Mantid/Framework/PythonInterface/plugins/algorithms/SNSPowderReduction.py +++ b/Code/Mantid/Framework/PythonInterface/plugins/algorithms/SNSPowderReduction.py @@ -24,6 +24,14 @@ def noRunSpecified(runs): return runs[0] <= 0 return False +def allEventWorkspaces(*args): + result = True + + for arg in args: + result = result and (arg.id() == EVENT_WORKSPACE_ID) + + return result + #pylint: disable=too-many-instance-attributes class SNSPowderReduction(DataProcessorAlgorithm): COMPRESS_TOL_TOF = .01 @@ -371,7 +379,8 @@ class SNSPowderReduction(DataProcessorAlgorithm): if vbackRun.id() == EVENT_WORKSPACE_ID and vbackRun.getNumberEvents() <= 0: pass else: - vanRun = api.Minus(LHSWorkspace=vanRun, RHSWorkspace=vbackRun, OutputWorkspace=vanRun) + vanRun = api.Minus(LHSWorkspace=vanRun, RHSWorkspace=vbackRun, OutputWorkspace=vanRun, + ClearRHSWorkspace=allEventWorkspaces(vanRun, vbackRun)) api.DeleteWorkspace(Workspace=vbackRun) @@ -591,7 +600,8 @@ class SNSPowderReduction(DataProcessorAlgorithm): else: self.checkInfoMatch(info, tempinfo) - sumRun = api.Plus(LHSWorkspace=sumRun, RHSWorkspace=temp, OutputWorkspace=sumRun) + sumRun = api.Plus(LHSWorkspace=sumRun, RHSWorkspace=temp, OutputWorkspace=sumRun, + ClearRHSWorkspace=allEventWorkspaces(sumRun, temp)) if sumRun.id() == EVENT_WORKSPACE_ID: sumRun = api.CompressEvents(InputWorkspace=sumRun, OutputWorkspace=sumRun,\ Tolerance=self.COMPRESS_TOL_TOF) # 10ns @@ -632,7 +642,8 @@ class SNSPowderReduction(DataProcessorAlgorithm): else: self.checkInfoMatch(info, tempinfo) - sumRun = api.Plus(LHSWorkspace=sumRun, RHSWorkspace=temp, OutputWorkspace=sumRun) + sumRun = api.Plus(LHSWorkspace=sumRun, RHSWorkspace=temp, OutputWorkspace=sumRun, + ClearRHSWorkspace=allEventWorkspaces(sumRun, temp)) if sumRun.id() == EVENT_WORKSPACE_ID: sumRun = api.CompressEvents(InputWorkspace=sumRun, OutputWorkspace=sumRun,\ Tolerance=self.COMPRESS_TOL_TOF) # 10ns @@ -804,7 +815,9 @@ class SNSPowderReduction(DataProcessorAlgorithm): wksplist[itemp] = api.RenameWorkspace(InputWorkspace=temp, OutputWorkspace=wkspname) firstChunkList[itemp] = False else: - wksplist[itemp] = api.Plus(LHSWorkspace=wksplist[itemp], RHSWorkspace=temp, OutputWorkspace=wksplist[itemp]) + wksplist[itemp] = api.Plus(LHSWorkspace=wksplist[itemp], RHSWorkspace=temp, + OutputWorkspace=wksplist[itemp], + ClearRHSWorkspace=allEventWorkspaces(sumRun, temp)) api.DeleteWorkspace(temp) # ENDIF # ENDFOR (spliited workspaces)