Ignore:
Timestamp:
Sep 18, 2017 12:08:50 PM (5 years ago)
Author:
srkline
Message:

many minor changes after real VSANS data collected.

additional procedures added to allow easy correction of the incorrect header information from NICE.

Most notable addition is the pinhole resolution added to the calculation and the I(q) output. White beam is also treated (incorrectly) as a gaussian distrivution, but the results of smeared fitting look to be quite good.

Trimming and sorting routines are now (pinhole) resolution aware.

File identification routines have been updated to use the proper definitions of "purpose" and "intent". Both fields are now in the catalog, to allow for better sorting.

File:
1 edited

Legend:

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

    r1057 r1064  
    167167//      SetDataFolder $("root:Packages:NIST:VSANS:"+type) 
    168168        SetDataFolder $(pathStr+type) 
    169         Killwaves/Z tmp_q,tmp_i,tmp_s 
     169        Killwaves/Z tmp_q,tmp_i,tmp_s,tmp_sq,tmp_qb,tmp_fs 
    170170        setDataFolder root: 
    171171        V_1DConcatenate(pathStr,type,tagStr,binType) 
     
    222222        WAVE/Z iBin2 = iBin2_qxqy_B 
    223223 
     224        // resolution waves 
     225        Wave/Z sigQ = sigmaQ_qxqy_B 
     226        Wave/Z qBar = qBar_qxqy_B 
     227        Wave/Z fSubS = fSubS_qxqy_B 
     228 
    224229        if(qBin[0] == 0) 
    225                 DeletePoints 0, 1, qBin,iBin,eBin,nBin,iBin2 
     230                DeletePoints 0, 1, qBin,iBin,eBin,nBin,iBin2,sigQ,qBar,fSubS 
    226231        endif 
    227232         
     
    273278 
    274279        //kill these waves before starting, or the new concatenation will be added to the old 
    275         KillWaves/Z tmp_q,tmp_i,tmp_s 
     280        KillWaves/Z tmp_q,tmp_i,tmp_s,tmp_qb,tmp_sq,tmp_fs 
    276281 
    277282        NVAR gIgnoreDetB = root:Packages:NIST:VSANS:Globals:gIgnoreDetB 
     
    330335                         
    331336                Concatenate/NP/O waveListStr, tmp_s 
     337                 
     338                //sigma Q 
     339                waveListStr="" 
     340                if(!gIgnoreDetB) 
     341                        waveListStr =  "sigmaQ_qxqy_B" + tagStr + ";" 
     342                endif 
     343                waveListStr += "sigmaQ_qxqy_MB" + tagStr + ";" 
     344                waveListStr += "sigmaQ_qxqy_MT" + tagStr + ";" 
     345                waveListStr += "sigmaQ_qxqy_ML" + tagStr + ";" 
     346                waveListStr += "sigmaQ_qxqy_MR" + tagStr + ";" 
     347                waveListStr += "sigmaQ_qxqy_FB" + tagStr + ";" 
     348                waveListStr += "sigmaQ_qxqy_FT" + tagStr + ";" 
     349                waveListStr += "sigmaQ_qxqy_FL" + tagStr + ";" 
     350                waveListStr += "sigmaQ_qxqy_FR" + tagStr + ";" 
     351//              waveListStr = "sigmaQ_qxqy_B;sigmaQ_qxqy_MB;sigmaQ_qxqy_MT;sigmaQ_qxqy_ML;sigmaQ_qxqy_MR;" 
     352//              waveListStr += "sigmaQ_qxqy_FB;sigmaQ_qxqy_FT;sigmaQ_qxqy_FL;sigmaQ_qxqy_FR;" 
     353                         
     354                Concatenate/NP/O waveListStr, tmp_sq 
     355 
     356                //Q bar 
     357                waveListStr="" 
     358                if(!gIgnoreDetB) 
     359                        waveListStr =  "qBar_qxqy_B" + tagStr + ";" 
     360                endif 
     361                waveListStr += "qBar_qxqy_MB" + tagStr + ";" 
     362                waveListStr += "qBar_qxqy_MT" + tagStr + ";" 
     363                waveListStr += "qBar_qxqy_ML" + tagStr + ";" 
     364                waveListStr += "qBar_qxqy_MR" + tagStr + ";" 
     365                waveListStr += "qBar_qxqy_FB" + tagStr + ";" 
     366                waveListStr += "qBar_qxqy_FT" + tagStr + ";" 
     367                waveListStr += "qBar_qxqy_FL" + tagStr + ";" 
     368                waveListStr += "qBar_qxqy_FR" + tagStr + ";" 
     369//              waveListStr = "qBar_qxqy_B;qBar_qxqy_MB;qBar_qxqy_MT;qBar_qxqy_ML;qBar_qxqy_MR;" 
     370//              waveListStr += "qBar_qxqy_FB;qBar_qxqy_FT;qBar_qxqy_FL;qBar_qxqy_FR;" 
     371                         
     372                Concatenate/NP/O waveListStr, tmp_qb 
     373                                                                 
     374                //shadow fs 
     375                waveListStr="" 
     376                if(!gIgnoreDetB) 
     377                        waveListStr =  "fSubS_qxqy_B" + tagStr + ";" 
     378                endif 
     379                waveListStr += "fSubS_qxqy_MB" + tagStr + ";" 
     380                waveListStr += "fSubS_qxqy_MT" + tagStr + ";" 
     381                waveListStr += "fSubS_qxqy_ML" + tagStr + ";" 
     382                waveListStr += "fSubS_qxqy_MR" + tagStr + ";" 
     383                waveListStr += "fSubS_qxqy_FB" + tagStr + ";" 
     384                waveListStr += "fSubS_qxqy_FT" + tagStr + ";" 
     385                waveListStr += "fSubS_qxqy_FL" + tagStr + ";" 
     386                waveListStr += "fSubS_qxqy_FR" + tagStr + ";" 
     387//              waveListStr = "fSubS_qxqy_B;fSubS_qxqy_MB;fSubS_qxqy_MT;fSubS_qxqy_ML;fSubS_qxqy_MR;" 
     388//              waveListStr += "fSubS_qxqy_FB;fSubS_qxqy_FT;fSubS_qxqy_FL;fSubS_qxqy_FR;" 
     389                         
     390                Concatenate/NP/O waveListStr, tmp_fs 
     391                                                                                 
    332392        endif 
    333393 
     
    377437                         
    378438                Concatenate/NP/O waveListStr, tmp_s 
     439                 
     440                // sigma Q 
     441                waveListStr="" 
     442                if(!gIgnoreDetB) 
     443                        waveListStr =  "sigmaQ_qxqy_B" + tagStr + ";" 
     444                endif 
     445                waveListStr += "sigmaQ_qxqy_MTB" + tagStr + ";" 
     446                waveListStr += "sigmaQ_qxqy_MLR" + tagStr + ";" 
     447                waveListStr += "sigmaQ_qxqy_FTB" + tagStr + ";" 
     448                waveListStr += "sigmaQ_qxqy_FLR" + tagStr + ";" 
     449                 
     450//              waveListStr = "sigmaQ_qxqy_B;sigmaQ_qxqy_MTB;sigmaQ_qxqy_MLR;" 
     451//              waveListStr += "sigmaQ_qxqy_FTB;sigmaQ_qxqy_FLR;" 
     452                         
     453                Concatenate/NP/O waveListStr, tmp_sq 
     454                 
     455                                // Q bar 
     456                waveListStr="" 
     457                if(!gIgnoreDetB) 
     458                        waveListStr =  "qBar_qxqy_B" + tagStr + ";" 
     459                endif 
     460                waveListStr += "qBar_qxqy_MTB" + tagStr + ";" 
     461                waveListStr += "qBar_qxqy_MLR" + tagStr + ";" 
     462                waveListStr += "qBar_qxqy_FTB" + tagStr + ";" 
     463                waveListStr += "qBar_qxqy_FLR" + tagStr + ";" 
     464                 
     465//              waveListStr = "qBar_qxqy_B;qBar_qxqy_MTB;qBar_qxqy_MLR;" 
     466//              waveListStr += "qBar_qxqy_FTB;qBar_qxqy_FLR;" 
     467                         
     468                Concatenate/NP/O waveListStr, tmp_qb 
     469                 
     470                // shadow fs 
     471                waveListStr="" 
     472                if(!gIgnoreDetB) 
     473                        waveListStr =  "fSubS_qxqy_B" + tagStr + ";" 
     474                endif 
     475                waveListStr += "fSubS_qxqy_MTB" + tagStr + ";" 
     476                waveListStr += "fSubS_qxqy_MLR" + tagStr + ";" 
     477                waveListStr += "fSubS_qxqy_FTB" + tagStr + ";" 
     478                waveListStr += "fSubS_qxqy_FLR" + tagStr + ";" 
     479                 
     480//              waveListStr = "fSubS_qxqy_B;fSubS_qxqy_MTB;fSubS_qxqy_MLR;" 
     481//              waveListStr += "fSubS_qxqy_FTB;fSubS_qxqy_FLR;" 
     482                         
     483                Concatenate/NP/O waveListStr, tmp_fs 
     484                 
    379485        endif 
    380486 
     
    415521                         
    416522                Concatenate/NP/O waveListStr, tmp_s 
     523                 
     524                // sigma Q 
     525                waveListStr="" 
     526                if(!gIgnoreDetB) 
     527                        waveListStr =  "sigmaQ_qxqy_B" + tagStr + ";" 
     528                endif 
     529                waveListStr += "sigmaQ_qxqy_MLRTB" + tagStr + ";" 
     530                waveListStr += "sigmaQ_qxqy_FLRTB" + tagStr + ";" 
     531                 
     532//              waveListStr = "sigmaQ_qxqy_B;sigmaQ_qxqy_MLRTB;sigmaQ_qxqy_FLRTB;" 
     533                         
     534                Concatenate/NP/O waveListStr, tmp_sq 
     535                 
     536                // Q bar 
     537                waveListStr="" 
     538                if(!gIgnoreDetB) 
     539                        waveListStr =  "qBar_qxqy_B" + tagStr + ";" 
     540                endif 
     541                waveListStr += "qBar_qxqy_MLRTB" + tagStr + ";" 
     542                waveListStr += "qBar_qxqy_FLRTB" + tagStr + ";" 
     543                 
     544//              waveListStr = "qBar_qxqy_B;qBar_qxqy_MLRTB;qBar_qxqy_FLRTB;" 
     545                         
     546                Concatenate/NP/O waveListStr, tmp_qb 
     547                 
     548                // shadow fs 
     549                waveListStr="" 
     550                if(!gIgnoreDetB) 
     551                        waveListStr =  "fSubS_qxqy_B" + tagStr + ";" 
     552                endif 
     553                waveListStr += "fSubS_qxqy_MLRTB" + tagStr + ";" 
     554                waveListStr += "fSubS_qxqy_FLRTB" + tagStr + ";" 
     555                 
     556//              waveListStr = "fSubS_qxqy_B;fSubS_qxqy_MLRTB;fSubS_qxqy_FLRTB;" 
     557                         
     558                Concatenate/NP/O waveListStr, tmp_fs 
    417559        endif 
    418560 
     
    475617                         
    476618                Concatenate/NP/O waveListStr, tmp_s 
     619                 
     620                //sigma Q 
     621                waveListStr="" 
     622                if(!gIgnoreDetB) 
     623                        waveListStr =  "sigmaQ_qxqy_B" + tagStr + ";" 
     624                endif 
     625//              waveListStr += "sigmaQ_qxqy_MB" + tagStr + ";" 
     626//              waveListStr += "sigmaQ_qxqy_MT" + tagStr + ";" 
     627                waveListStr += "sigmaQ_qxqy_ML" + tagStr + ";" 
     628                waveListStr += "sigmaQ_qxqy_MR" + tagStr + ";" 
     629//              waveListStr += "sigmaQ_qxqy_FB" + tagStr + ";" 
     630//              waveListStr += "sigmaQ_qxqy_FT" + tagStr + ";" 
     631                waveListStr += "sigmaQ_qxqy_FL" + tagStr + ";" 
     632                waveListStr += "sigmaQ_qxqy_FR" + tagStr + ";" 
     633//              waveListStr = "sigmaQ_qxqy_B;sigmaQ_qxqy_MB;sigmaQ_qxqy_MT;sigmaQ_qxqy_ML;sigmaQ_qxqy_MR;" 
     634//              waveListStr += "sigmaQ_qxqy_FB;sigmaQ_qxqy_FT;sigmaQ_qxqy_FL;sigmaQ_qxqy_FR;" 
     635                         
     636                Concatenate/NP/O waveListStr, tmp_sq 
     637 
     638                //Q bar 
     639                waveListStr="" 
     640                if(!gIgnoreDetB) 
     641                        waveListStr =  "qBar_qxqy_B" + tagStr + ";" 
     642                endif 
     643//              waveListStr += "qBar_qxqy_MB" + tagStr + ";" 
     644//              waveListStr += "qBar_qxqy_MT" + tagStr + ";" 
     645                waveListStr += "qBar_qxqy_ML" + tagStr + ";" 
     646                waveListStr += "qBar_qxqy_MR" + tagStr + ";" 
     647//              waveListStr += "qBar_qxqy_FB" + tagStr + ";" 
     648//              waveListStr += "qBar_qxqy_FT" + tagStr + ";" 
     649                waveListStr += "qBar_qxqy_FL" + tagStr + ";" 
     650                waveListStr += "qBar_qxqy_FR" + tagStr + ";" 
     651//              waveListStr = "qBar_qxqy_B;qBar_qxqy_MB;qBar_qxqy_MT;qBar_qxqy_ML;qBar_qxqy_MR;" 
     652//              waveListStr += "qBar_qxqy_FB;qBar_qxqy_FT;qBar_qxqy_FL;qBar_qxqy_FR;" 
     653                         
     654                Concatenate/NP/O waveListStr, tmp_qb 
     655                                                                 
     656                //shadow fs 
     657                waveListStr="" 
     658                if(!gIgnoreDetB) 
     659                        waveListStr =  "fSubS_qxqy_B" + tagStr + ";" 
     660                endif 
     661//              waveListStr += "fSubS_qxqy_MB" + tagStr + ";" 
     662//              waveListStr += "fSubS_qxqy_MT" + tagStr + ";" 
     663                waveListStr += "fSubS_qxqy_ML" + tagStr + ";" 
     664                waveListStr += "fSubS_qxqy_MR" + tagStr + ";" 
     665//              waveListStr += "fSubS_qxqy_FB" + tagStr + ";" 
     666//              waveListStr += "fSubS_qxqy_FT" + tagStr + ";" 
     667                waveListStr += "fSubS_qxqy_FL" + tagStr + ";" 
     668                waveListStr += "fSubS_qxqy_FR" + tagStr + ";" 
     669//              waveListStr = "fSubS_qxqy_B;fSubS_qxqy_MB;fSubS_qxqy_MT;fSubS_qxqy_ML;fSubS_qxqy_MR;" 
     670//              waveListStr += "fSubS_qxqy_FB;fSubS_qxqy_FT;fSubS_qxqy_FL;fSubS_qxqy_FR;" 
     671                         
     672                Concatenate/NP/O waveListStr, tmp_fs 
     673                 
    477674        endif 
    478675 
     
    501698        Wave iw = tmp_i 
    502699        Wave sw = tmp_s 
    503          
    504 //      Sort qw, qw,iw,sw,res0,res1,res2,res3 
    505  
    506         Sort qw, qw,iw,sw 
     700        Wave sq = tmp_sq 
     701        Wave qb = tmp_qb 
     702        Wave fs = tmp_fs 
     703         
     704 
     705        Sort qw, qw,iw,sw,sq,qb,fs 
    507706 
    508707 
     
    753952 
    754953 
    755 // TODO: 
    756 // -- this is a temporary solution before a real writer is created 
    757 // -- resolution is not generated here (and it shouldn't be) since resolution is not known yet. 
    758 // -- but a real writer will need to be aware of resolution, and there may be different forms 
    759 // 
    760 // this will bypass save dialogs 
    761 // -- AND WILL OVERWITE DATA WITH THE SAME NAME 
    762 // 
    763 Function V_Write1DData(pathStr,folderStr,saveName) 
    764         String pathStr,folderStr,saveName 
    765          
    766         String formatStr="",fullpath="" 
    767         Variable refnum,dialog=1 
    768  
    769         SetDataFolder $(pathStr+folderStr) 
    770  
    771         Wave qw = tmp_q 
    772         Wave iw = tmp_i 
    773         Wave sw = tmp_s 
    774          
    775         String dataSetFolderParent,basestr 
    776          
    777         // ParseFilePath to get path without folder name 
    778 //      dataSetFolderParent = ParseFilePath(1,folderStr,":",1,0) 
    779         // ParseFilePath to get basestr 
    780 //      basestr = ParseFilePath(0,folderStr,":",1,0) 
    781          
    782         //make sure the waves exist 
    783          
    784         if(WaveExists(qw) == 0) 
    785                 Abort "q is missing" 
    786         endif 
    787         if(WaveExists(iw) == 0) 
    788                 Abort "i is missing" 
    789         endif 
    790         if(WaveExists(sw) == 0) 
    791                 Abort "s is missing" 
    792         endif 
    793 //      if(WaveExists(resw) == 0) 
    794 //              Abort "Resolution information is missing." 
    795 //      endif 
    796          
    797 //      Duplicate/O qw qbar,sigQ,fs 
    798 //      if(dimsize(resW,1) > 4) 
    799 //              //it's USANS put -dQv back in the last 3 columns 
    800 //              NVAR/Z dQv = USANS_dQv 
    801 //              if(NVAR_Exists(dQv) == 0) 
    802 //                      SetDataFolder root: 
    803 //                      Abort "It's USANS data, and I don't know what the slit height is." 
    804 //              endif 
    805 //              sigQ = -dQv 
    806 //              qbar = -dQv 
    807 //              fs = -dQv 
    808 //      else 
    809 //              //it's SANS 
    810 //              sigQ = resw[p][0] 
    811 //              qbar = resw[p][1] 
    812 //              fs = resw[p][2] 
    813 //      endif 
    814 //       
    815  
    816         PathInfo catPathName 
    817         fullPath = S_Path + saveName 
    818  
    819         Open refnum as fullpath 
    820  
    821         fprintf refnum,"Combined data written from folder %s on %s\r\n",folderStr,(date()+" "+time()) 
    822  
    823 // TODO -- make this work for 6-columns (or??) 
    824 //      formatStr = "%15.4g %15.4g %15.4g %15.4g %15.4g %15.4g\r\n"      
    825 //      fprintf refnum, "The 6 columns are | Q (1/A) | I(Q) (1/cm) | std. dev. I(Q) (1/cm) | sigmaQ | meanQ | ShadowFactor|\r\n"         
    826 //      wfprintf refnum,formatStr,qw,iw,sw,sigQ,qbar,fs 
    827  
    828         //currently, only three columns 
    829         formatStr = "%15.4g %15.4g %15.4g\r\n"   
    830         fprintf refnum, "The 3 columns are | Q (1/A) | I(Q) (1/cm) | std. dev. I(Q) (1/cm)\r\n"  
    831  
    832         wfprintf refnum,formatStr,qw,iw,sw 
    833         Close refnum 
    834          
    835 //      KillWaves/Z sigQ,qbar,fs 
    836         Print "Data written to: ",fullpath 
    837          
    838         SetDataFolder root: 
    839         return(0) 
    840 End 
    841  
    842  
    843  
    844 // TODO: 
    845 // -- this is a temporary solution before a real writer is created 
    846 // -- resolution is not generated here (and it shouldn't be) since resolution is not known yet. 
    847 // -- but a real writer will need to be aware of resolution, and there may be different forms 
    848 // 
    849 // This saves the data in Igor Text format, an ASCII format, but NOT standard SANS columns 
    850 // No concatenation is done. This is meant to be used for input to TRIM, or for general troubleshooting 
    851 // 
    852 // 
    853 // this will bypass save dialogs 
    854 // -- AND WILL OVERWRITE DATA WITH THE SAME NAME 
    855 // 
    856 Function V_Write1DData_ITX(pathStr,folderStr,saveName,binType) 
    857         String pathStr,folderStr,saveName 
    858         Variable binType 
    859          
    860         String formatStr="",fullpath="" 
    861         Variable refnum,dialog=1 
    862  
    863         SetDataFolder $(pathStr+folderStr) 
    864  
    865  
    866         //TODO 
    867         //-- make sure the waves exist 
    868          
    869 //      if(WaveExists(qw) == 0) 
    870 //              Abort "q is missing" 
    871 //      endif 
    872 //      if(WaveExists(iw) == 0) 
    873 //              Abort "i is missing" 
    874 //      endif 
    875 //      if(WaveExists(sw) == 0) 
    876 //              Abort "s is missing" 
    877 //      endif 
    878 //      if(WaveExists(resw) == 0) 
    879 //              Abort "Resolution information is missing." 
    880 //      endif 
    881          
    882 //      Duplicate/O qw qbar,sigQ,fs 
    883 //      if(dimsize(resW,1) > 4) 
    884 //              //it's USANS put -dQv back in the last 3 columns 
    885 //              NVAR/Z dQv = USANS_dQv 
    886 //              if(NVAR_Exists(dQv) == 0) 
    887 //                      SetDataFolder root: 
    888 //                      Abort "It's USANS data, and I don't know what the slit height is." 
    889 //              endif 
    890 //              sigQ = -dQv 
    891 //              qbar = -dQv 
    892 //              fs = -dQv 
    893 //      else 
    894 //              //it's SANS 
    895 //              sigQ = resw[p][0] 
    896 //              qbar = resw[p][1] 
    897 //              fs = resw[p][2] 
    898 //      endif 
    899 //       
    900  
    901  
    902  
    903         // TODO: 
    904         // -- currently I'm using the Save comand and the /B flag 
    905         //    to save the data as Igor Text format, since otherwise the command string would be 
    906         //    too long. Need to come up with an Igor-demo friendly save here 
    907         // 
    908         // -- see V_ExportProtocol() for a quick example of how to generate the .ITX format 
    909         // 
    910         // -- need a reader/plotter capable of handling this data. The regular data loader won't handle 
    911         //    all the different number of columns present, or the ITX format. See V_DataPlotting and duplicate these routines 
    912         //    Most of these routines take "winNameStr" as an argument, so I may be able to use them 
    913         // 
    914         // -- do I want to add the /O flag to force an overwrite if there is a name conflict? 
    915  
    916         PathInfo catPathName 
    917         fullPath = S_Path + saveName + ".itx" 
    918  
    919 //      Open refnum as fullpath 
    920 //      fprintf refnum,"Individual data sets written from folder %s on %s\r\n",folderStr,(date()+" "+time()) 
    921  
    922         String waveStr="" 
    923         // can be a multiple number of columns 
    924                  
    925         switch(binType) 
    926                 case 1:         // 9 sets = 27 waves! 
    927                         waveStr = "qBin_qxqy_B;iBin_qxqy_B;eBin_qxqy_B;" 
    928                         waveStr += "qBin_qxqy_ML;iBin_qxqy_ML;eBin_qxqy_ML;" 
    929                         waveStr += "qBin_qxqy_MR;iBin_qxqy_MR;eBin_qxqy_MR;" 
    930                         waveStr += "qBin_qxqy_MT;iBin_qxqy_MT;eBin_qxqy_MT;" 
    931                         waveStr += "qBin_qxqy_MB;iBin_qxqy_MB;eBin_qxqy_MB;" 
    932                         waveStr += "qBin_qxqy_FL;iBin_qxqy_FL;eBin_qxqy_FL;" 
    933                         waveStr += "qBin_qxqy_FR;iBin_qxqy_FR;eBin_qxqy_FR;" 
    934                         waveStr += "qBin_qxqy_FT;iBin_qxqy_FT;eBin_qxqy_FT;" 
    935                         waveStr += "qBin_qxqy_FB;iBin_qxqy_FB;eBin_qxqy_FB;" 
    936                          
    937                          
    938                         Save/T/M="\r\n"/B waveStr as fullPath 
    939  
    940                                                  
    941 //                      formatStr = "%15.4g %15.4g %15.4g\r\n" 
    942 //                       
    943 //                      fprintf refnum, "The 3 columns are | Q (1/A) | I(Q) (1/cm) | std. dev. I(Q) (1/cm)\r\n"  
    944 //       
    945 //                      wfprintf refnum,formatStr,qw,iw,sw 
    946                         break 
    947                 case 2:         // 5 sets 
    948  
    949                         waveStr = "qBin_qxqy_B;iBin_qxqy_B;eBin_qxqy_B;" 
    950                         waveStr += "qBin_qxqy_MLR;iBin_qxqy_MLR;eBin_qxqy_MLR;qBin_qxqy_MTB;iBin_qxqy_MTB;eBin_qxqy_MTB;" 
    951                         waveStr += "qBin_qxqy_FLR;iBin_qxqy_FLR;eBin_qxqy_FLR;qBin_qxqy_FTB;iBin_qxqy_FTB;eBin_qxqy_FTB;" 
    952  
    953                         Save/T/M="\r\n"/B waveStr as fullPath 
    954                          
    955 //                      formatStr = "%15.4g %15.4g %15.4g\r\n" 
    956 //                       
    957 //                      fprintf refnum, "The 3 columns are | Q (1/A) | I(Q) (1/cm) | std. dev. I(Q) (1/cm)\r\n"  
    958 //       
    959 //                      wfprintf refnum,formatStr,qw,iw,sw 
    960                         break 
    961                 case 3:         // 3 sets 
    962 //                      WAVE q1 = qBin_qxqy_B 
    963 //                      WAVE i1 = iBin_qxqy_B 
    964 //                      WAVE s1 = eBin_qxqy_B 
    965 //                      WAVE q2 = qBin_qxqy_MLRTB 
    966 //                      WAVE i2 = iBin_qxqy_MLRTB 
    967 //                      WAVE s2 = eBin_qxqy_MLRTB 
    968 //                      WAVE q3 = qBin_qxqy_FLRTB 
    969 //                      WAVE i3 = iBin_qxqy_FLRTB 
    970 //                      WAVE s3 = eBin_qxqy_FLRTB 
    971 // 
    972 //                               
    973 //                      Save/T/M="\r\n" q1,i1,s1,q2,i2,s2,q3,i3,s3 as fullPath 
    974                          
    975                         waveStr = "qBin_qxqy_B;iBin_qxqy_B;eBin_qxqy_B;" 
    976                         waveStr += "qBin_qxqy_MLRTB;iBin_qxqy_MLRTB;eBin_qxqy_MLRTB;qBin_qxqy_FLRTB;iBin_qxqy_FLRTB;eBin_qxqy_FLRTB;" 
    977  
    978                         Save/T/M="\r\n"/B waveStr as fullPath                    
    979                          
    980                          
    981 //                      formatStr = "%15.4g %15.4g %15.4g\r\n" 
    982 //                       
    983 //                      fprintf refnum, "The 3 columns are | Q (1/A) | I(Q) (1/cm) | std. dev. I(Q) (1/cm)\r\n"  
    984 //       
    985 //                      wfprintf refnum,formatStr,qw,iw,sw 
    986                         break 
    987                 case 4:         // 9 sets 
    988                         waveStr = "qBin_qxqy_B;iBin_qxqy_B;eBin_qxqy_B;" 
    989                         waveStr += "qBin_qxqy_ML;iBin_qxqy_ML;eBin_qxqy_ML;" 
    990                         waveStr += "qBin_qxqy_MR;iBin_qxqy_MR;eBin_qxqy_MR;" 
    991                         waveStr += "qBin_qxqy_MT;iBin_qxqy_MT;eBin_qxqy_MT;" 
    992                         waveStr += "qBin_qxqy_MB;iBin_qxqy_MB;eBin_qxqy_MB;" 
    993                         waveStr += "qBin_qxqy_FL;iBin_qxqy_FL;eBin_qxqy_FL;" 
    994                         waveStr += "qBin_qxqy_FR;iBin_qxqy_FR;eBin_qxqy_FR;" 
    995                         waveStr += "qBin_qxqy_FT;iBin_qxqy_FT;eBin_qxqy_FT;" 
    996                         waveStr += "qBin_qxqy_FB;iBin_qxqy_FB;eBin_qxqy_FB;" 
    997                          
    998                          
    999                         Save/T/M="\r\n"/B waveStr as fullPath 
    1000  
    1001 //                      formatStr = "%15.4g %15.4g %15.4g\r\n" 
    1002 //                       
    1003 //                      fprintf refnum, "The 3 columns are | Q (1/A) | I(Q) (1/cm) | std. dev. I(Q) (1/cm)\r\n"  
    1004 //       
    1005 //                      wfprintf refnum,formatStr,qw,iw,sw 
    1006                         break 
    1007                                          
    1008                 default: 
    1009                 // do nothing, just close 
    1010  
    1011         endswitch 
    1012  
    1013 //      Close refnum 
    1014  
    1015 // TODO 
    1016 // -- clean up any waves on exit?        Only if I generate extra waves 
    1017 //      KillWaves/Z sigQ,qbar,fs 
    1018          
    1019         SetDataFolder root: 
    1020         return(0) 
    1021 End 
    1022  
    1023  
     954/ 
    1024955Proc V_Load_Data_ITX() 
    1025956        V_Load_itx("","",0,0) 
     
    11831114 
    11841115// TODO 
    1185 // -- make this resolution-aware 
     1116// x- make this resolution-aware 
    11861117// 
    11871118Function V_TrimOneSet(folderStr,detStr,nBeg,nEnd) 
     
    12071138                Wave/Z iw = $("iBin_qxqy_"+detStr) 
    12081139                Wave/Z ew = $("eBin_qxqy_"+detStr) 
    1209  
    1210                          
    1211                 DeletePoints 0,nBeg, qw,iw,ew 
     1140                // resolution waves 
     1141                Wave/Z sigQ = $("sigmaQ_qxqy_"+detStr) 
     1142                Wave/Z qBar = $("qBar_qxqy_"+detStr) 
     1143                Wave/Z fSubS = $("fSubS_qxqy_"+detStr) 
     1144                         
     1145                DeletePoints 0,nBeg, qw,iw,ew,sigQ,qBar,fSubS 
    12121146 
    12131147                Variable npt 
    12141148                npt = numpnts(qw)  
    1215                 DeletePoints npt-nEnd,nEnd, qw,iw,ew 
     1149                DeletePoints npt-nEnd,nEnd, qw,iw,ew,sigQ,qBar,fSubS 
    12161150         
    12171151        return(0) 
    12181152End 
     1153 
     1154 
     1155// 
     1156// returns 1 if the val is non-negative, other value 
     1157// indicates that the resoution data is USANS data. 
     1158// 
     1159// TODO: 
     1160// -- this DUPLICATES a same-named SANS procedure, so there could be a clash at some point 
     1161// -- bigger issue - I'll need a better way to identify and load the different resolution  
     1162//              conditions with VSANS 
     1163// 
     1164// 
     1165Function isSANSResolution(val) 
     1166        Variable val 
     1167         
     1168        if(val >= 0) 
     1169                return(1) 
     1170        else 
     1171                return(0) 
     1172        endif 
     1173End 
     1174 
     1175 
Note: See TracChangeset for help on using the changeset viewer.