diff --git a/Framework/PythonInterface/plugins/algorithms/OptimizeCrystalPlacementByRun.py b/Framework/PythonInterface/plugins/algorithms/OptimizeCrystalPlacementByRun.py
index 5a2907267b427427245e92a88b35fd2383294cb1..6b65588d59dd7d064615d961eb19dd8762eb7e4c 100644
--- a/Framework/PythonInterface/plugins/algorithms/OptimizeCrystalPlacementByRun.py
+++ b/Framework/PythonInterface/plugins/algorithms/OptimizeCrystalPlacementByRun.py
@@ -5,7 +5,6 @@
 #     & Institut Laue - Langevin
 # SPDX - License - Identifier: GPL - 3.0 +
 #pylint: disable=no-init
-from __future__ import (absolute_import, division, print_function)
 
 from mantid.api import PythonAlgorithm, AlgorithmFactory, ITableWorkspaceProperty, WorkspaceFactory
 from mantid.kernel import Direction
@@ -42,33 +41,37 @@ class OptimizeCrystalPlacementByRun(PythonAlgorithm):
         if not ws.sample().hasOrientedLattice():
             FindUBUsingIndexedPeaks(PeaksWorkspace=ws,Tolerance=tolerance)
         num,err=IndexPeaks(PeaksWorkspace=ws,Tolerance=tolerance)
-        print('Initial Number indexed: %s error: %s\n'%(num, err))
+        logger.notice('Initial Number indexed: %s error: %s\n'%(num, err))
         stats = StatisticsOfTableWorkspace(InputWorkspace=ws)
         stat_col = stats.column('Statistic')
         minR = int(stats.column('RunNumber')[stat_col.index('Minimum')])
         maxR = int(stats.column('RunNumber')[stat_col.index('Maximum')]) + 1
+        AnalysisDataService.remove(stats.getName())
         
         group = []
         for run in range(minR, maxR):
-            FilterPeaks(InputWorkspace=ws, OutputWorkspace=str(run), FilterVariable='RunNumber', FilterValue=run, Operator='=')
+            FilterPeaks(InputWorkspace=ws, OutputWorkspace=str(run), FilterVariable='RunNumber', 
+                FilterValue=run, Operator='=')
             run = mtd[str(run)]
             peaks = run.getNumberPeaks()
             if peaks == 0:
-                AnalysisDataService.remove( str(run))
+                AnalysisDataService.remove(str(run))
             else:
                 group.append(str(run))
         GroupWorkspaces(InputWorkspaces=group, OutputWorkspace=ws_group)
         
-        OptimizeCrystalPlacement(PeaksWorkspace=ws_group, ModifiedPeaksWorkspace=ws_group, AdjustSampleOffsets=True, MaxSamplePositionChangeMeters=0.005,MaxIndexingError=tolerance)
+        OptimizeCrystalPlacement(PeaksWorkspace=ws_group, ModifiedPeaksWorkspace=ws_group, AdjustSampleOffsets=True, 
+            MaxSamplePositionChangeMeters=0.005,MaxIndexingError=tolerance)
         
         CloneWorkspace(InputWorkspace=str(minR),OutputWorkspace=ws_append)
+        AnalysisDataService.remove(str(minR))
         for run in range(minR+1, maxR):
-            if AnalysisDataService.doesExist( str(run)):
+            if AnalysisDataService.doesExist(str(run)):
                 CombinePeaksWorkspaces(LHSWorkspace=ws_append, RHSWorkspace=str(run),OutputWorkspace=ws_append)
-                print('Optimized %s sample position: %s\n'%(str(run),mtd[str(run)].getPeak(0).getSamplePos()))
+                logger.notice('Optimized %s sample position: %s\n'%(str(run),mtd[str(run)].getPeak(0).getSamplePos()))
                 AnalysisDataService.remove( str(run))
         num,err=IndexPeaks(PeaksWorkspace=ws_append,Tolerance=tolerance)
-        print('After Optimization Number indexed: %s error: %s\n'%(num, err))
+        logger.notice('After Optimization Number indexed: %s error: %s\n'%(num, err))
         AnalysisDataService.remove(ws_group)
     
         self.setProperty("OutputWorkspace", ws_append)