Ignore:
Timestamp:
Jul 17, 2018 1:58:12 PM (4 years ago)
Author:
srkline
Message:

two significant changes:

1- in the averaging, before the data is finally written out, duplicate q-values (within 0.1%) are averaged so that duplicate q-values do not appear in the data file. This has a very bad effect on the calculation of the smearing matrix (dq=0).

2-for the data from the back (high res) detector, two steps have been added to the processing at the point where the data is converted to WORK. First, a constant read noise value of 200 cts/pixel is subtracted (found from average of multiple runs with beam off) Second, a 3x3 median filter is applied to the whole image to eliminate the stray bright pixels. Some are saturatd, some are simply outliers. Very effective.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_IQ_Utilities.ipf

    r1098 r1111  
    235235        endswitch 
    236236         
     237         
    237238 
    238239        return(0) 
     
    483484End 
    484485 
     486 
     487Function V_RemoveDuplicateQvals(pathStr,folderStr) 
     488        String pathStr,folderStr 
     489         
     490        SetDataFolder $(pathStr+folderStr) 
     491 
     492        Wave qw = tmp_q 
     493        Wave iw = tmp_i 
     494        Wave sw = tmp_s 
     495        Wave sq = tmp_sq 
     496        Wave qb = tmp_qb 
     497        Wave fs = tmp_fs 
     498         
     499        Variable q1,q2,tol,ii 
     500        tol = 0.001             // 0.1 % 
     501        q1 = qw[0] 
     502        ii=0 
     503        do 
     504                q2 = qw[ii+1] 
     505                if(V_CloseEnough(q1,q2,q1*tol)) 
     506                        // check to be sure that both values are actually real numbers before trying to average 
     507                        if(numtype(iw[ii])==0 && numtype(iw[ii+1])==0)          //==0 => real number 
     508                                iw[ii] = (iw[ii] + iw[ii+1])/2          //both OK 
     509                        endif 
     510                        if(numtype(iw[ii])==0 && numtype(iw[ii+1])!=0)          //==0 => real number 
     511                                iw[ii] = iw[ii]         //one OK 
     512                        endif 
     513                        if(numtype(iw[ii])!=0 && numtype(iw[ii+1])==0)          //==0 => real number 
     514                                iw[ii] = iw[ii+1]               //other OK 
     515                        endif 
     516                        if(numtype(iw[ii])!=0 && numtype(iw[ii+1])!=0)          //==0 => real number 
     517                                iw[ii] = (iw[ii])               // both NaN, get rid of it later 
     518                        endif 
     519                 
     520                        if(numtype(sw[ii])==0 && numtype(sw[ii+1])==0)          //==0 => real number 
     521                                sw[ii] = sqrt(sw[ii]^2 + sw[ii+1]^2)            //both OK 
     522                        endif 
     523                        if(numtype(sw[ii])==0 && numtype(sw[ii+1])!=0)          //==0 => real number 
     524                                sw[ii] = sw[ii]         //one OK 
     525                        endif 
     526                        if(numtype(sw[ii])!=0 && numtype(sw[ii+1])==0)          //==0 => real number 
     527                                sw[ii] = sw[ii+1]               //other OK 
     528                        endif 
     529                        if(numtype(sw[ii])!=0 && numtype(sw[ii+1])!=0)          //==0 => real number 
     530                                sw[ii] = (sw[ii])               // both NaN, get rid of it later 
     531                        endif 
     532                         
     533                        DeletePoints ii+1, 1, qw,iw,sw,sq,qb,fs 
     534                else 
     535                        ii+=1 
     536                        q1 = q2 
     537                endif 
     538        while(ii<numpnts(qw)-2) 
     539         
     540         
     541 
     542        SetDataFolder root: 
     543        return(0) 
     544End 
    485545 
    486546// 
Note: See TracChangeset for help on using the changeset viewer.