Changeset 353


Ignore:
Timestamp:
May 6, 2008 2:39:24 PM (15 years ago)
Author:
srkline
Message:

corrected:

  • smear_model_5,10,76() to creats the proper number of gauss points (rarely used)
  • wrapper will no longer re-initalize the epsilon wave if it already exists

added:

  • three ILL_ files to the Dev/trunk for SANS reduction

These are VERY rough, but at least read in the data properly.

Location:
sans/Dev/trunk/NCNR_User_Procedures/SANS
Files:
3 added
2 edited

Legend:

Unmodified
Added
Removed
  • sans/Dev/trunk/NCNR_User_Procedures/SANS/Analysis/Models/GaussUtils_v40.ipf

    r325 r353  
    756756                Return(0) 
    757757        else 
     758                weightStr = "gauss5wt" 
     759                zStr = "gauss5z" 
     760         
     761        //      if wt,z waves don't exist, create them (only check for weight, should really check for both) 
     762                if (WaveExists($weightStr) == 0) // wave reference is not valid,  
     763                        Make/D/N=(nord) $weightStr,$zStr 
     764                        Wave weightW = $weightStr 
     765                        Wave abscissW = $zStr           // wave references to pass 
     766                        Make5GaussPoints(weightW,abscissW)       
     767                else 
     768                        if(exists(weightStr) > 1)  
     769                                 Abort "wave name is already in use"            //executed only if name is in use elsewhere 
     770                        endif 
     771                        Wave weightW = $weightStr 
     772                        Wave abscissW = $zStr           // create the wave references 
     773                endif 
     774         
     775                answer = Smear_Model_N(fcn,w,x,resW,weightW,abscissW,nord) 
     776                Return (0) 
     777        endif 
     778         
     779End 
     780 
     781//resolution smearing, using only 10 Gauss points 
     782// 
     783// 
     784Function Smear_Model_10(fcn,w,x,answer,resW)                             
     785        FUNCREF SANSModelAAO_proto fcn 
     786        Wave w                  //coefficients of function fcn(w,x) 
     787        Wave x  //x-value (q) for the calculation 
     788        Wave answer // ywave for calculation result 
     789        Wave resW               // Nx4 or NxN matrix of resolution 
     790 
     791        String weightStr,zStr 
     792        Variable nord=10 
     793         
     794        if (dimsize(resW,1) > 4) 
     795                if(dimsize(resW,1) != dimsize(answer,0) ) 
     796                        Abort "ResW and answer are different dimensions - (res,ans)"+num2str(dimsize(resW,1))+","+num2str(dimsize(answer,0)) 
     797                endif 
     798                //USANS Weighting matrix is present. 
     799                fcn(w,answer,x) 
     800         
     801                MatrixOP/O  answer = resW x answer 
     802                //Duplicate/O answer,tmpMat 
     803                //MatrixOP/O answer = resW x tmpMat 
     804                Return(0) 
     805        else 
     806                weightStr = "gauss10wt" 
     807                zStr = "gauss10z" 
     808         
     809        //      if wt,z waves don't exist, create them (only check for weight, should really check for both) 
     810                if (WaveExists($weightStr) == 0) // wave reference is not valid,  
     811                        Make/D/N=(nord) $weightStr,$zStr 
     812                        Wave weightW = $weightStr 
     813                        Wave abscissW = $zStr           // wave references to pass 
     814                        Make10GaussPoints(weightW,abscissW)      
     815                else 
     816                        if(exists(weightStr) > 1)  
     817                                 Abort "wave name is already in use"            //executed only if name is in use elsewhere 
     818                        endif 
     819                        Wave weightW = $weightStr 
     820                        Wave abscissW = $zStr           // create the wave references 
     821                endif 
     822         
     823                answer = Smear_Model_N(fcn,w,x,resW,weightW,abscissW,nord) 
     824                Return (0) 
     825        endif 
     826         
     827End 
     828 
     829// 
     830//Smear_Model_20(SphereForm,s.coefW,s.yW,s.xW,s.resW) 
     831// 
     832//      Wave sigq               //std dev of resolution fn 
     833//      Wave qbar               //mean q-value 
     834//      Wave shad               //beamstop shadow factor 
     835//      Wave qvals      //q-values where R(q) is known 
     836// 
     837Function Smear_Model_20(fcn,w,x,answer,resW)                             
     838        FUNCREF SANSModelAAO_proto fcn 
     839        Wave w                  //coefficients of function fcn(w,x) 
     840        Wave x  //x-value (q) for the calculation 
     841        Wave answer // ywave for calculation result 
     842        Wave resW               // Nx4 or NxN matrix of resolution 
     843        NVAR useTrap = root:Packages:NIST:USANSUseTrap 
     844 
     845        String weightStr,zStr 
     846        Variable nord=20 
     847         
     848        if (dimsize(resW,1) > 4 && useTrap != 1) 
     849                if(dimsize(resW,1) != dimsize(answer,0) ) 
     850                        Abort "ResW and answer are different dimensions - (res,ans)"+num2str(dimsize(resW,1))+","+num2str(dimsize(answer,0)) 
     851                endif 
     852                //USANS Weighting matrix is present. 
     853                fcn(w,answer,x) 
     854         
     855                MatrixOP/O  answer = resW x answer 
     856                //Duplicate/O answer,tmpMat 
     857                //MatrixOP/O answer = resW x tmpMat 
     858                Return(0) 
     859        else 
    758860                weightStr = "gauss20wt" 
    759861                zStr = "gauss20z" 
     
    778880         
    779881End 
    780  
    781 //resolution smearing, using only 10 Gauss points 
    782 // 
    783 // 
    784 Function Smear_Model_10(fcn,w,x,answer,resW)                             
    785         FUNCREF SANSModelAAO_proto fcn 
    786         Wave w                  //coefficients of function fcn(w,x) 
    787         Wave x  //x-value (q) for the calculation 
    788         Wave answer // ywave for calculation result 
    789         Wave resW               // Nx4 or NxN matrix of resolution 
    790  
    791         String weightStr,zStr 
    792         Variable nord=10 
    793          
    794         if (dimsize(resW,1) > 4) 
    795                 if(dimsize(resW,1) != dimsize(answer,0) ) 
    796                         Abort "ResW and answer are different dimensions - (res,ans)"+num2str(dimsize(resW,1))+","+num2str(dimsize(answer,0)) 
    797                 endif 
    798                 //USANS Weighting matrix is present. 
    799                 fcn(w,answer,x) 
    800          
    801                 MatrixOP/O  answer = resW x answer 
    802                 //Duplicate/O answer,tmpMat 
    803                 //MatrixOP/O answer = resW x tmpMat 
    804                 Return(0) 
    805         else 
    806                 weightStr = "gauss20wt" 
    807                 zStr = "gauss20z" 
    808          
    809         //      if wt,z waves don't exist, create them (only check for weight, should really check for both) 
    810                 if (WaveExists($weightStr) == 0) // wave reference is not valid,  
    811                         Make/D/N=(nord) $weightStr,$zStr 
    812                         Wave weightW = $weightStr 
    813                         Wave abscissW = $zStr           // wave references to pass 
    814                         Make20GaussPoints(weightW,abscissW)      
    815                 else 
    816                         if(exists(weightStr) > 1)  
    817                                  Abort "wave name is already in use"            //executed only if name is in use elsewhere 
    818                         endif 
    819                         Wave weightW = $weightStr 
    820                         Wave abscissW = $zStr           // create the wave references 
    821                 endif 
    822          
    823                 answer = Smear_Model_N(fcn,w,x,resW,weightW,abscissW,nord) 
    824                 Return (0) 
    825         endif 
    826          
    827 End 
    828  
    829 // 
    830 //Smear_Model_20(SphereForm,s.coefW,s.yW,s.xW,s.resW) 
    831 // 
    832 //      Wave sigq               //std dev of resolution fn 
    833 //      Wave qbar               //mean q-value 
    834 //      Wave shad               //beamstop shadow factor 
    835 //      Wave qvals      //q-values where R(q) is known 
    836 // 
    837 Function Smear_Model_20(fcn,w,x,answer,resW)                             
    838         FUNCREF SANSModelAAO_proto fcn 
    839         Wave w                  //coefficients of function fcn(w,x) 
    840         Wave x  //x-value (q) for the calculation 
    841         Wave answer // ywave for calculation result 
    842         Wave resW               // Nx4 or NxN matrix of resolution 
    843         NVAR useTrap = root:Packages:NIST:USANSUseTrap 
    844  
    845         String weightStr,zStr 
    846         Variable nord=20 
    847          
    848         if (dimsize(resW,1) > 4 && useTrap != 1) 
    849                 if(dimsize(resW,1) != dimsize(answer,0) ) 
    850                         Abort "ResW and answer are different dimensions - (res,ans)"+num2str(dimsize(resW,1))+","+num2str(dimsize(answer,0)) 
    851                 endif 
    852                 //USANS Weighting matrix is present. 
    853                 fcn(w,answer,x) 
    854          
    855                 MatrixOP/O  answer = resW x answer 
    856                 //Duplicate/O answer,tmpMat 
    857                 //MatrixOP/O answer = resW x tmpMat 
    858                 Return(0) 
    859         else 
    860                 weightStr = "gauss20wt" 
    861                 zStr = "gauss20z" 
    862          
    863         //      if wt,z waves don't exist, create them (only check for weight, should really check for both) 
    864                 if (WaveExists($weightStr) == 0) // wave reference is not valid,  
    865                         Make/D/N=(nord) $weightStr,$zStr 
    866                         Wave weightW = $weightStr 
    867                         Wave abscissW = $zStr           // wave references to pass 
    868                         Make20GaussPoints(weightW,abscissW)      
    869                 else 
    870                         if(exists(weightStr) > 1)  
    871                                  Abort "wave name is already in use"            //executed only if name is in use elsewhere 
    872                         endif 
    873                         Wave weightW = $weightStr 
    874                         Wave abscissW = $zStr           // create the wave references 
    875                 endif 
    876          
    877                 answer = Smear_Model_N(fcn,w,x,resW,weightW,abscissW,nord) 
    878                 Return (0) 
    879         endif 
    880          
    881 End 
    882882/////////////////////////////////////////////////////////////// 
    883883Function Smear_Model_76(fcn,w,x,answer,resW)                             
     
    904904                Return(0) 
    905905        else 
    906                 weightStr = "gauss20wt" 
    907                 zStr = "gauss20z" 
     906                weightStr = "gauss76wt" 
     907                zStr = "gauss76z" 
    908908         
    909909        //      if wt,z waves don't exist, create them (only check for weight, should really check for both) 
     
    912912                        Wave weightW = $weightStr 
    913913                        Wave abscissW = $zStr           // wave references to pass 
    914                         Make20GaussPoints(weightW,abscissW)      
     914                        Make76GaussPoints(weightW,abscissW)      
    915915                else 
    916916                        if(exists(weightStr) > 1)  
  • sans/Dev/trunk/NCNR_User_Procedures/SANS/Analysis/Models/Packages/Wrapper_v40.ipf

    r318 r353  
    343343                                Make/O/D/N=(num) $("epsilon_"+suffix),$("Hold_"+suffix) 
    344344                                Make/O/T/N=(num) $("LoLim_"+suffix),$("HiLim_"+suffix) 
     345                                Wave eps = $("epsilon_"+suffix) 
     346                                Wave coef=$popStr 
     347                                eps = abs(coef*1e-4) + 1e-10                    //default eps is proportional to the coefficients 
    345348                        endif 
    346349                        // default epsilon values, sometimes needed for the fit 
    347                         Wave eps = $("epsilon_"+suffix) 
    348                         Wave coef=$popStr 
    349                         eps = abs(coef*1e-4) + 1e-10                    //default eps is proportional to the coefficients 
     350                         
     351 
    350352                        WAVE/T LoLim = $("LoLim_"+suffix) 
    351353                        WAVE/T HiLim = $("HiLim_"+suffix) 
     
    906908        print "V_chisq = ",V_chisq 
    907909        print cw 
    908         WAVE w_sigma 
     910        WAVE/Z w_sigma 
    909911        print w_sigma 
    910912        String resultStr="" 
Note: See TracChangeset for help on using the changeset viewer.