Changeset 7182d96 in sasview for Invariant


Ignore:
Timestamp:
Jun 8, 2010 12:54:45 PM (14 years ago)
Author:
Jae Cho <jhjcho@…>
Branches:
master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
76f2d63
Parents:
fca90f82
Message:

added Q* cal for smeared data

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Invariant/invariant.py

    ra45622a r7182d96  
    361361        self._background = background 
    362362        self._scale = scale 
    363          
     363        # slit height for smeared data 
     364        self._smeared = None 
    364365        # The data should be private 
    365366        self._data = self._get_data(data) 
     367        # get the dxl if the data is smeared: This is done only once on init. 
     368        if data.dxl != None and data.dxl.all() >0: 
     369            # assumes constant dxl 
     370            self._smeared = data.dxl[0] 
    366371       
    367372        # Since there are multiple variants of Q*, you should force the 
     
    407412            (min(new_data.dy)==0 and max(new_data.dy)==0): 
    408413            new_data.dy = numpy.ones(len(new_data.x))   
    409          
    410414        return  new_data 
    411415      
     
    438442     
    439443            q_star = x0**2 *y0 *dx0 +x1**2 *y1 *dx1  
    440                         + ..+ xn**2 *yn *dxn  
     444                        + ..+ xn**2 *yn *dxn    for non smeared data 
     445                         
     446            q_star = dxl0 *x0 *y0 *dx0 +dxl1 *x1 *y1 *dx1  
     447                        + ..+ dlxn *xn *yn *dxn    for smeared data 
    441448                         
    442449            where n >= len(data.x)-1 
     450            dxl = slit height dQl 
    443451            dxi = 1/2*(xi+1 - xi) + (xi - xi-1) 
    444452            dx0 = (x1 - x0)/2 
     
    454462            raise ValueError, msg 
    455463        else: 
     464            # Take care of smeared data 
     465            if self._smeared is None: 
     466                gx = data.x * data.x 
     467            # assumes that len(x) == len(dxl). 
     468            else:                
     469                gx = data.dxl * data.x  
     470                 
    456471            n = len(data.x)- 1 
    457472            #compute the first delta q 
     
    460475            dxn = (data.x[n] - data.x[n-1])/2 
    461476            sum = 0 
    462             sum += data.x[0] * data.x[0] * data.y[0] * dx0 
    463             sum += data.x[n] * data.x[n] * data.y[n] * dxn 
     477            sum += gx[0] * data.y[0] * dx0 
     478            sum += gx[n] * data.y[n] * dxn 
    464479             
    465480            if len(data.x) == 2: 
     
    469484                for i in xrange(1, n-1): 
    470485                    dxi = (data.x[i+1] - data.x[i-1])/2 
    471                     sum += data.x[i] * data.x[i] * data.y[i] * dxi 
     486                    sum += gx[i] * data.y[i] * dxi 
    472487                return sum 
    473488             
     
    501516            else: 
    502517                dy = data.dy 
    503                  
     518            # Take care of smeared data 
     519            if self._smeared is None: 
     520                gx = data.x * data.x 
     521            # assumes that len(x) == len(dxl). 
     522            else: 
     523                gx = data.dxl * data.x 
     524   
    504525            n = len(data.x) - 1 
    505526            #compute the first delta 
     
    508529            dxn= (data.x[n] - data.x[n-1])/2 
    509530            sum = 0 
    510             sum += (data.x[0] * data.x[0] * dy[0] * dx0)**2 
    511             sum += (data.x[n] * data.x[n] * dy[n] * dxn)**2 
     531            sum += (gx[0] * dy[0] * dx0)**2 
     532            sum += (gx[n] * dy[n] * dxn)**2 
    512533            if len(data.x) == 2: 
    513534                return math.sqrt(sum) 
     
    516537                for i in xrange(1, n-1): 
    517538                    dxi = (data.x[i+1] - data.x[i-1])/2 
    518                     sum += (data.x[i] * data.x[i] * dy[i] * dxi)**2 
     539                    sum += (gx[i] * dy[i] * dxi)**2 
    519540                return math.sqrt(sum) 
    520541         
     
    533554          
    534555        result_data = LoaderData1D(x=q, y=iq, dy=diq) 
     556        if self._smeared != None: 
     557            result_data.dxl = self._smeared * numpy.ones(len(q)) 
    535558        return result_data 
    536559     
Note: See TracChangeset for help on using the changeset viewer.