Ticket #8455: patch_for_sans_reduction_steps.patch

File patch_for_sans_reduction_steps.patch, 3.2 KB (added by Gesner Passos, 7 years ago)
  • Code/Mantid/scripts/reduction/instruments/sans/sans_reduction_steps.py

    diff --git a/Code/Mantid/scripts/reduction/instruments/sans/sans_reduction_steps.py b/Code/Mantid/scripts/reduction/instruments/sans/sans_reduction_steps.py
    index 260bdd3..12ebbe3 100644
    a b class SampleGeomCor(ReductionStep): 
    750750        ORNL only divides by thickness, in the absolute scaling step 
    751751 
    752752    """ 
    753     def execute(self, reducer, workspace): 
    754         """ 
    755             Divide the counts by the volume of the sample 
    756         """ 
    757         self.geo = reducer._sample_run.geometry 
    758         assert( issubclass(self.geo.__class__, GetSampleGeom)) 
     753    def __init__(self): 
     754        self.volume = 1.0 
     755 
     756    def calculate_volume(self, reducer): 
     757        geo = reducer.get_sample().geometry 
     758        assert( issubclass(geo.__class__, GetSampleGeom)) 
    759759 
    760760        try: 
    761             if self.geo.shape == 'cylinder-axis-up': 
     761            if geo.shape == 'cylinder-axis-up': 
    762762                # Volume = circle area * height 
    763763                # Factor of four comes from radius = width/2 
    764                 volume = self.geo.height*math.pi 
    765                 volume *= math.pow(self.geo.width,2)/4.0 
    766             elif self.geo.shape == 'cuboid': 
     764                volume = geo.height*math.pi 
     765                volume *= math.pow(geo.width,2)/4.0 
     766            elif geo.shape == 'cuboid': 
    767767                # Flat plate sample 
    768                 volume = self.geo.width 
    769                 volume *= self.geo.height*self.geo.thickness 
    770             elif self.geo.shape == 'cylinder-axis-along': 
     768                volume = geo.width 
     769                volume *= geo.height*geo.thickness 
     770            elif geo.shape == 'cylinder-axis-along': 
    771771                # Factor of four comes from radius = width/2 
    772772                # Disc - where height is not used 
    773                 volume = self.geo.thickness*math.pi 
    774                 volume *= math.pow(self.geo.width, 2)/4.0 
     773                volume = geo.thickness*math.pi 
     774                volume *= math.pow(geo.width, 2)/4.0 
    775775            else: 
    776                 raise NotImplemented('Shape "'+self.geo.shape+'" is not in the list of supported shapes') 
     776                raise NotImplemented('Shape "'+geo.shape+'" is not in the list of supported shapes') 
    777777        except TypeError: 
    778             raise TypeError('Error calculating sample volume with width='+str(self._width) + ' height='+str(self._height) + 'and thickness='+str(self._thickness))  
    779          
    780         ws = mtd[workspace] 
    781         ws /= volume 
     778            raise TypeError('Error calculating sample volume with width='+str(geo.width) + ' height='+str(geo.height) + 'and thickness='+str(geo.thickness))  
     779                 
     780        return volume 
     781 
     782    def execute(self, reducer, workspace): 
     783        """ 
     784            Divide the counts by the volume of the sample 
     785        """ 
     786        if not reducer.is_can(): 
     787            # it calculates the volume for the sample and may or not apply to the can as well. 
     788            self.volume = self.calculate_volume(reducer) 
     789             
     790        ws = mtd[str(workspace)] 
     791        ws /= self.volume 
    782792 
    783793class StripEndZeros(ReductionStep): 
    784794    # ISIS only