Changeset 545


Ignore:
Timestamp:
Aug 7, 2009 2:00:32 PM (13 years ago)
Author:
srkline
Message:

(1) changed the "guessing" of transmission files to be tolerant (within 1%) of mismatches in the wavelength. With the VAX, I had required them to be equal. ICE reports a FP number that varies in the 3rd decimal place (from the RPM?).

(2) Changed the calculation of errors and total detector count in 1D simulation to be correct.

Location:
sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/SASCALC.ipf

    r542 r545  
    908908                                 
    909909                                Wave inten=$"root:Simulation:Simulation_i"              // this will exist and send the smeared calculation to the corect DF 
     910                                 
     911                                // the resolution-smeared intensity is calculated, including the incoherent background 
    910912                                func($coefStr,inten,qval) 
    911913 
     
    932934                                Variable sig_sas=0 
    933935                                 
     936                                // remember that the random deviate is the coherent portion ONLY - the incoherent background is  
     937                                // subtracted before the calculation. 
    934938                                CalculateRandomDeviate(funcUnsmeared,$coefStr,wavelength,"root:Packages:NIST:SAS:ran_dev",sig_sas) 
    935939                                 
     
    940944                                Print "Sig_sas = ",sig_sas 
    941945                                 
    942                                 Duplicate/O qval prob_i,circle_fraction,rval,nCells_expected 
    943                                 rval = sdd*tan(2*asin(qval*wavelength/4/pi))            //radial distance in cm 
    944                                 nCells_expected = 2*pi*rval/pixSize                                     //does this need to be an integer? 
    945                                 circle_fraction = nCells / nCells_expected 
     946                                Duplicate/O qval prob_i,countsInAnnulus 
     947                                 
     948                                // not needed - nCells takes care of this when the error is correctly calculated 
     949//                              Duplicate/O qval circle_fraction,rval,nCells_expected 
     950//                              rval = sdd*tan(2*asin(qval*wavelength/4/pi))            //radial distance in cm 
     951//                              nCells_expected = 2*pi*rval/pixSize                                     //does this need to be an integer? 
     952//                              circle_fraction = nCells / nCells_expected 
    946953                                 
    947954                                                         
    948                                 prob_i = trans*thick*nCells*(pixSize/sdd)^2*inten                       //probability of a neutron in q-bin(i) that has nCells 
     955//                              prob_i = trans*thick*nCells*(pixSize/sdd)^2*inten                       //probability of a neutron in q-bin(i) that has nCells 
     956                                prob_i = trans*thick*(pixSize/sdd)^2*inten                      //probability of a neutron in q-bin(i)  
    949957                                 
    950958                                Variable P_on = sum(prob_i,-inf,inf) 
    951959                                Print "P_on = ",P_on 
    952                                 fracScat = P_on 
    953960                                 
    954                                 aveint = (Imon*ctTime)*prob_i / circle_fraction / nCells_expected 
    955  
    956                                 SimDetCts = sum(aveint,-inf,inf) 
     961//                              fracScat = P_on 
     962                                fracScat = 1-estTrans 
     963                                 
     964//                              aveint = (Imon*ctTime)*prob_i / circle_fraction / nCells_expected 
     965                                aveint = (Imon*ctTime)*prob_i 
     966 
     967                                countsInAnnulus = aveint*nCells 
     968                                SimDetCts = sum(countsInAnnulus,-inf,inf) 
    957969                                estDetCR = SimDetCts/SimCountTime 
    958970                                 
     
    961973                                NVAR addNoise = root:Packages:NIST:SAS:g_1D_AddNoise 
    962974                                                         
    963                                 sigave = sqrt(aveint)           // assuming that N is large 
     975                                sigave = sqrt(aveint/nCells)            // corrected based on John's memo, from 8/9/99 
    964976                                 
    965977                                // add in random error in aveint based on the sigave 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/Transmission.ipf

    r502 r545  
    16151615// apply TWO criteria 
    16161616// (1) the label must match "well enough" 
    1617 // (2) the wavelength must be the same 
     1617// (2) the wavelength must be the same "enough", given the unnecessary precision reported by ICE 
     1618// 
     1619// (for example, "6" can be anything from 6.0008 to 6.0020 in a recent experiment) 
    16181620// 
    16191621// passes the matching rows in the sample table back 
     
    16301632        Wave tLam = root:myGlobals:TransHeaderInfo:T_Lambda             //Transmission file wavelength 
    16311633         
    1632         Variable num,ii,found 
     1634        Variable num,ii,found,tolerance=0.01            //0.01 = 1% tolerance 
    16331635        String transStr = "",testStr="" 
    16341636         
     
    16421644                testStr=sw[ii] 
    16431645                found = stringmatch(testStr, transStr ) 
    1644                 if( (found == 1) && (sLam[ii] == tLam[row]) )           // both must match 
     1646                if( (found == 1) && (abs(sLam[ii] - tLam[row]) < tolerance) )           // both must match 
    16451647                        Print "Match Found at:  ",transStr,snam[ii],sw[ii] 
    16461648                        InsertPoints numpnts(matchRows), 1, matchRows 
Note: See TracChangeset for help on using the changeset viewer.