Changeset 625


Ignore:
Timestamp:
Jan 30, 2010 12:09:44 AM (13 years ago)
Author:
ajj
Message:

Modifications to NSORT to use data folder methods for dataset handling

  • XML input supported
  • No XML output yet, but preparation work done.
Location:
sans/Dev/trunk/NCNR_User_Procedures
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • sans/Dev/trunk/NCNR_User_Procedures/Common/NIST_XML_v40.ipf

    r607 r625  
    1212// Dec 2008 :  
    1313//                       Caveats - Assumes Q in /A and I in /cm 
    14 function LoadNISTXMLData(filestr,doPlot) 
    15         String filestr 
    16         Variable doPlot 
     14// Takes outStr as output name. If outStr is specified then we must load only the first SASData in the firstSASEntry,  
     15// since anything else doesn't make sense. This is a bit of a hack to support NSORT. 
     16 
     17 
     18function LoadNISTXMLData(filestr,outStr,doPlot,forceOverwrite) 
     19        String filestr,outStr 
     20        Variable doPlot,forceOverwrite 
    1721         
    1822         
     
    3539                        String xmlDataFolder,xmlDataSetFolder 
    3640                         
    37                         for (i = 0; i < CountObjects(xmlReaderFolder,4); i+=1) 
     41                        Variable numSASEntries 
     42                         
     43                        if(!cmpStr(outStr,"")) 
     44                                //no outStr defined 
     45                                numSASEntries = CountObjects(xmlReaderFolder,4) 
     46                        else 
     47                                numSASEntries = 1 
     48                        endif 
     49                         
     50                        for (i = 0; i < numSASEntries; i+=1) 
    3851                                                                 
    3952                                xmlDataFolder = xmlReaderFolder+GetIndexedObjName(xmlReaderFolder,4,i)+":" 
    40                                 numDataSets = CountObjects(xmlDataFolder,4) 
     53                                if (!cmpstr(outstr,"")) 
     54                                        numDataSets = CountObjects(xmlDataFolder,4) 
     55                                else 
     56                                        numDataSets = 0 
     57                                endif 
     58                                 
    4159                                if (numDataSets > 0) 
    4260                                        //Multiple SASData sets in this SASEntry 
     
    4866                                         
    4967                                                basestr = CleanupName(getXMLDataSetTitle(xmlDataSetFolder,j),0) 
     68                                                 
    5069                                                //String basestr = ParseFilePath(3, ParseFilePath(5,filestr,":",0,0),":",0,0)                            
    5170                                                fileName =  ParseFilePath(0,ParseFilePath(5,filestr,":",0,0),":",1,0) 
     
    5776                                                //print "fileName: ",fileName 
    5877                                                //remove the semicolon AND period from files from the VAX 
     78                                                print basestr 
    5979                                                w0 = basestr + "_q" 
    6080                                                w1 = basestr + "_i" 
     
    6585                                                 
    6686                                                if(DataFolderExists("root:"+baseStr)) 
     87                                                        if(!forceOverwrite) 
    6788                                                                DoAlert 1,"The data set " + basestr + " from file "+fileName+" has already been loaded. Do you want to load the new data file, overwriting the data in memory?" 
    6889                                                                if(V_flag==2)   //user selected No, don't load the data 
     
    7394                                                                        return  0       //quits the macro 
    7495                                                                endif 
    75                                                                 SetDataFolder $("root:"+baseStr) 
     96                                                        endif 
     97                                                        SetDataFolder $("root:"+baseStr) 
    7698                                                else 
    7799                                                        NewDataFolder/S $("root:"+baseStr) 
     
    81103                                                Duplicate/O $(xmlDataSetFolder+"Isas") $w1 
    82104                                                Duplicate/O $(xmlDataSetFolder+"Idev") $w2 
    83                  
    84                  
    85                                                          
     105 
     106                                                 
    86107                                                if (exists(xmlDataSetFolder+"Qdev")) 
    87108                                                        Wave Qsas = $(xmlDataSetFolder+"Qsas") 
     
    173194                                        print xmlDataFolder 
    174195                                         
    175                                         basestr = CleanupName(getXMLDataSetTitle(xmlDataFolder,0),0) 
     196                                        //if outstr has been specified, we'll find ourselves here.... 
     197                                        if (!cmpstr(outstr,"")) 
     198                                                basestr = CleanupName(getXMLDataSetTitle(xmlDataFolder,0),0) 
     199                                        else 
     200                                                basestr = CleanupName(outstr,0) 
     201                                        endif 
     202                                         
    176203                                        //String basestr = ParseFilePath(3, ParseFilePath(5,filestr,":",0,0),":",0,0)                            
    177204                                        fileName =  ParseFilePath(0,ParseFilePath(5,filestr,":",0,0),":",1,0) 
     
    186213                                         
    187214                                        if(DataFolderExists("root:"+baseStr)) 
     215                                                if(!forceOverwrite) 
    188216                                                        DoAlert 1,"The data set " + basestr + " from file "+fileName+" has already been loaded. Do you want to load the new data file, overwriting the data in memory?" 
    189217                                                        if(V_flag==2)   //user selected No, don't load the data 
     
    194222                                                                return  0       //quits the macro 
    195223                                                        endif 
    196                                                         SetDataFolder $("root:"+baseStr) 
     224                                                endif 
     225                                                SetDataFolder $("root:"+baseStr) 
    197226                                        else 
    198227                                                NewDataFolder/S $("root:"+baseStr) 
     
    963992End 
    964993 
     994 
     995 
     996 
    965997#else   // if( Exists("XmlOpenFile") ) 
    966998        // No XMLutils XOP: provide dummy function so that IgorPro can compile dependent support code 
     
    9861018                return(-6) 
    9871019        end 
    988          
     1020 
    9891021        Function ReWrite1DXMLData(folderStr) 
    9901022                String folderStr 
  • sans/Dev/trunk/NCNR_User_Procedures/Common/Packages/PlotManager/PlotUtilsMacro_v40.ipf

    r622 r625  
    6464// the data folder is given the "base name" of the data file as it's loaded 
    6565// 
     66 
    6667Proc A_LoadOneDDataWithName(fileStr,doPlot) 
    6768        String fileStr 
    6869        Variable doPlot 
     70         
     71        A_LoadOneDDataToName(fileStr,"",doPlot,0) 
     72 
     73End 
     74 
     75 
     76///Function that takes output name as well as input 
     77Proc A_LoadOneDDataToName(fileStr,outStr,doPlot,forceOverwrite) 
     78        String fileStr, outstr 
     79        Variable doPlot,forceOverwrite 
    6980         
    7081        Variable rr,gg,bb,refnum,dQv 
     
    95106 
    96107        if (isXML(fileStr) == 1) 
    97                 LoadNISTXMLData(fileStr,doPlot) 
     108                LoadNISTXMLData(fileStr,outstr,doPlot,forceOverwrite) 
    98109        else             
    99110                //Load the waves, using default waveX names 
     
    102113                String fileNamePath = S_Path+S_fileName 
    103114//              String basestr = ParseFilePath(3,ParseFilePath(5,fileNamePath,":",0,0),":",0,0) 
    104                 String baseStr = CleanupName(S_fileName,0) 
     115 
     116                String basestr 
     117                if (!cmpstr(outstr, "")) 
     118                        //Outstr = "", cmpstr returns 0 
     119                        baseStr = CleanupName(S_fileName,0) 
     120                else 
     121                        baseStr = outstr 
     122                endif 
     123         
    105124//              print "basestr :"+basestr 
    106125                String fileName =  ParseFilePath(0,ParseFilePath(5,filestr,":",0,0),":",1,0) 
     
    131150                        //String baseStr=w1[0,strlen(w1)-3] 
    132151                        if(DataFolderExists("root:"+baseStr)) 
     152                                if (!forceOverwrite) 
    133153                                        DoAlert 1,"The file "+S_filename+" has already been loaded. Do you want to load the new data file, overwriting the data in memory?" 
    134154                                        if(V_flag==2)   //user selected No, don't load the data 
     
    140160                                                return  //quits the macro 
    141161                                        endif 
    142                                         SetDataFolder $("root:"+baseStr) 
     162                                endif 
     163                                SetDataFolder $("root:"+baseStr) 
    143164                        else 
    144165                                NewDataFolder/S $("root:"+baseStr) 
     
    178199                        //String baseStr=w1[0,strlen(w1)-3] 
    179200                        if(DataFolderExists("root:"+baseStr)) 
     201                                if(!forceOverwrite) 
    180202                                        DoAlert 1,"The file "+S_filename+" has already been loaded. Do you want to load the new data file, overwriting the data in memory?" 
    181203                                        if(V_flag==2)   //user selected No, don't load the data 
     
    187209                                                return          //quits the macro 
    188210                                        endif 
    189                                         SetDataFolder $("root:"+baseStr) 
     211                                endif 
     212                                SetDataFolder $("root:"+baseStr) 
    190213                        else 
    191214                                NewDataFolder/S $("root:"+baseStr) 
     
    252275                        //String baseStr=w1[0,strlen(w1)-3] 
    253276                        if(DataFolderExists("root:"+baseStr)) 
     277                                if(!forceOverwrite) 
    254278                                        DoAlert 1,"The file "+S_filename+" has already been loaded. Do you want to load the new data file, overwriting the data in memory?" 
    255279                                        if(V_flag==2)   //user selected No, don't load the data 
     
    261285                                                return          //quits the macro 
    262286                                        endif 
    263                                         SetDataFolder $("root:"+baseStr) 
     287                                endif 
     288                                SetDataFolder $("root:"+baseStr) 
    264289                        else 
    265290                                NewDataFolder/S $("root:"+baseStr) 
     
    327352                        //String baseStr=w1[0,strlen(w1)-3] 
    328353                        if(DataFolderExists("root:"+baseStr)) 
     354                                if(!forceOverwrite) 
    329355                                        DoAlert 1,"The file "+S_filename+" has already been loaded. Do you want to load the new data file, overwriting the data in memory?" 
    330356                                        if(V_flag==2)   //user selected No, don't load the data 
     
    335361                                                return          //quits the macro 
    336362                                        endif 
    337                                         SetDataFolder $("root:"+baseStr) 
     363                                endif 
     364                                SetDataFolder $("root:"+baseStr) 
    338365                        else 
    339366                                NewDataFolder/S $("root:"+baseStr) 
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/NSORT.ipf

    r570 r625  
    6969End 
    7070 
    71  
    72 //loads datasets (3-column or 6-column) for use in NSORTing 
    73 //identical in function to normal file loading routine LoadQISData() 
    74 //except that this routine builds custom names to keep track of 
    75 //high-med-low q datasets (as defined by setNum input) 
    76 // 
     71//New loader that uses data folders etc... 
     72//AJJ Jan 2010 
    7773Function LoadDataForNSORT(fileStr,setNum) 
    7874        String fileStr          //full path:name to a valid file 
     
    8076         
    8177        Variable err=0 
    82          
    83         LoadWave/G/D/A/Q fileStr                // (/Q) option suppresses printing to history 
     78 
    8479        String nm0,nm1,nm2 
    85         String firstFileName = S_fileName 
    86         Variable pt=0,begPts,endPts 
    87  
     80        //String firstFileName = S_fileName 
     81        Variable pt=0,begPts,endPts,numCols 
     82         
    8883        NVAR gColumns1 = root:myGlobals:NSORT:gColumns1 
    8984        NVAR gColumns2 = root:myGlobals:NSORT:gColumns2 
     
    9590        NVAR begPts3 = root:myGlobals:NSORT:gPtsBeg3 
    9691        NVAR endPts3 = root:myGlobals:NSORT:gPtsEnd3 
    97          
    98         String typStr="",trimStr="" 
    99          
    100         do 
    101                 if(V_flag == 3)  //Three waves loaded    
    102                         // put the names of the three loaded waves into local names 
    103                         nm0 = StringFromList(0, S_waveNames ,";" ) 
    104                         nm1 = StringFromList(1, S_waveNames ,";" ) 
    105                         nm2 = StringFromList(2, S_waveNames ,";" ) 
    106          
    107                         //rename to give desired names - can't use rename if waves exist - it will generate an error 
    108                         if(setNum == 1) 
    109                                 gColumns1 = 3 
    110                                 typStr = "LowQSet" 
    111                                 trimStr = "TrimLowQSet" 
    112                                 begPts = begPts1 
    113                                 endPts = endPts1 
    114                         else 
    115                                 if(setNum == 2) 
    116                                         gColumns2 = 3 
    117                                         typStr = "MedQSet" 
    118                                         trimStr = "TrimMedQSet" 
    119                                         begPts = begPts2 
    120                                         endPts = endPts2 
    121                                 else 
    122                                         gColumns3 = 3 
    123                                         typStr="HighQSet" 
    124                                         trimStr = "TrimHighQSet" 
    125                                         begPts = begPts3 
    126                                         endPts = endPts3 
    127                                 Endif 
    128                         Endif 
    129                         Duplicate/O $nm0, $(typStr+"_q") 
    130                         Duplicate/O $nm1, $(typStr+"_i") 
    131                         Duplicate/O $nm2, $(typStr+"_s") 
    132                         KillWaves/Z $nm0,$nm1,$nm2 
    133                         //create the "trimmed" dataset too, start by duplicating the original sets 
    134                         Duplicate/O $(typStr+"_q"),$(trimStr+"_q") 
    135                         Duplicate/O $(typStr+"_i"),$(trimStr+"_i") 
    136                         Duplicate/O $(typStr+"_s"),$(trimStr+"_s") 
    137                         WaveStats/Q $(typStr+"_q")                      //get info about the original q-values read in 
    138                         pt = V_npnts-endPts 
    139                         DeletePoints pt,endPts,$(trimStr+"_q"),$(trimStr+"_i"),$(trimStr+"_s")  //delete end points first 
    140                         DeletePoints 0,begPts,$(trimStr+"_q"),$(trimStr+"_i"),$(trimStr+"_s")   //then delete points from beginning 
    141                  
    142                         Return err 
     92 
     93        String cmd 
     94        String typStr= "", trimStr="" 
     95         
     96        switch (setNum) 
     97                case 1: 
     98                        sprintf cmd , "A_LoadOneDDataToName(\"%s\",\"%s\",%d,%d)",fileStr,"LowQSet",0,1 
     99                        Execute cmd 
     100                        typStr = "LowQSet" 
     101                        trimStr = "TrimLowQSet" 
     102                        begPts = begPts1 
     103                        endPts = endPts1 
    143104                        break 
    144                 endif //End of what happens if 3 columns are loaded 
    145          
    146                 if(V_flag == 6)  //Six waves loaded 
    147                         String nm3,nm4,nm5 
    148                         // put the names of the three loaded waves into local names 
    149                         nm0 = StringFromList(0, S_waveNames ,";" ) 
    150                         nm1 = StringFromList(1, S_waveNames ,";" ) 
    151                         nm2 = StringFromList(2, S_waveNames ,";" ) 
    152                         nm3 = StringFromList(3, S_waveNames ,";" ) 
    153                         nm4 = StringFromList(4, S_waveNames ,";" ) 
    154                         nm5 = StringFromList(5, S_waveNames ,";" ) 
    155                  
    156                         if(setNum == 1) 
    157                                 gColumns1 = 6 
    158                                 typStr = "LowQSet" 
    159                                 trimStr = "TrimLowQSet" 
    160                                 begPts = begPts1 
    161                                 endPts = endPts1 
    162                         else 
    163                                 if(setNum == 2) 
    164                                         gColumns2 = 6 
    165                                         typStr = "MedQSet" 
    166                                         trimStr = "TrimMedQSet" 
    167                                         begPts = begPts2 
    168                                         endPts = endPts2 
    169                                 else 
    170                                         gColumns3 = 6 
    171                                         typStr="HighQSet" 
    172                                         trimStr = "TrimHighQSet" 
    173                                         begPts = begPts3 
    174                                         endPts = endPts3 
    175                                 Endif 
    176                         Endif 
    177                         Duplicate/O $nm0, $(typStr+"_q") 
    178                         Duplicate/O $nm1, $(typStr+"_i") 
    179                         Duplicate/O $nm2, $(typStr+"_s") 
    180                         Duplicate/O $nm3, $(typStr+"_sq") 
    181                         Duplicate/O $nm4, $(typStr+"_qb") 
    182                         Duplicate/O $nm5, $(typStr+"_fs") 
    183                         KillWaves/Z $nm0,$nm1,$nm2,$nm3,$nm4,$nm5 
    184                         //create the "trimmed" dataset too 
    185                         Duplicate/O $(typStr+"_q"),$(trimStr+"_q") 
    186                         Duplicate/O $(typStr+"_i"),$(trimStr+"_i") 
    187                         Duplicate/O $(typStr+"_s"),$(trimStr+"_s") 
    188                         Duplicate/O $(typStr+"_sq"),$(trimStr+"_sq") 
    189                         Duplicate/O $(typStr+"_qb"),$(trimStr+"_qb") 
    190                         Duplicate/O $(typStr+"_fs"),$(trimStr+"_fs") 
    191                         WaveStats/Q $(typStr+"_q")                      //get info about the original q-values read in 
    192                         pt = V_npnts-endPts 
    193                         DeletePoints pt,endPts,$(trimStr+"_q"),$(trimStr+"_i"),$(trimStr+"_s"),$(trimStr+"_sq"),$(trimStr+"_qb"),$(trimStr+"_fs")       //delete end points first 
    194                         DeletePoints 0,begPts,$(trimStr+"_q"),$(trimStr+"_i"),$(trimStr+"_s"),$(trimStr+"_sq"),$(trimStr+"_qb"),$(trimStr+"_fs")        //then delete points from beginning 
    195                                  
    196                         Return err 
     105                case 2: 
     106                        sprintf cmd , "A_LoadOneDDataToName(\"%s\",\"%s\",%d,%d)",fileStr,"MedQSet",0,1 
     107                        Execute cmd              
     108                        typStr = "MedQSet" 
     109                        trimStr = "TrimMedQSet" 
     110                        begPts = begPts2 
     111                        endPts = endPts2 
    197112                        break 
    198                 endif //End of Six waves loaded 
    199          
    200                 //Next stuff gets executed if not 3 or 6 (example, if 0 ) 
    201                 err=1 
    202                 return err 
    203         while(0) 
    204 End 
    205  
    206 //writes out the NSORTed file, includeing header information about how the file 
    207 //was genereated - from which files, and how it was normalized 
    208 //protocol info makes no sense here - go back to the original, separate files 
    209 //if you want to know that information 
    210 // 
    211 // this is the 3-column version  - there's a separate function for 6-column data 
    212 //will ALWAYS prompt for a filename 
    213 // 
    214 Function Write3ColNSORTedFile(q3,i3,sig3,firstFileName,secondFileName,thirdFileName,normTo,norm12,norm23) 
    215         Wave q3,i3,sig3 
     113                case 3: 
     114                        sprintf cmd , "A_LoadOneDDataToName(\"%s\",\"%s\",%d,%d)",fileStr,"HighQSet",0,1 
     115                        Execute cmd 
     116                        typStr = "HighQSet" 
     117                        trimStr = "TrimHighQSet" 
     118                        begPts = begPts3 
     119                        endPts = endPts3 
     120                        break 
     121        endswitch 
     122                 
     123        String typPrefix = "root:"+typStr+":"+typStr 
     124        String trimPrefix = "root:"+typStr+":"+trimStr 
     125         
     126        if (WaveExists($(typPrefix+"_res"))) 
     127                //6 col data loaded 
     128                print "6 col data loaded" 
     129                numCols = 6 
     130                Duplicate/O $(typPrefix+"_q") $(trimPrefix+"_q") 
     131                Duplicate/O $(typPrefix+"_i") $(trimPrefix+"_i") 
     132                Duplicate/O $(typPrefix+"_s") $(trimPrefix+"_s") 
     133                Duplicate/O $(typPrefix+"_res") $(trimPrefix+"_res") 
     134                //Trimmed data set 
     135                Duplicate/O $(typPrefix+"_q"),$(trimPrefix+"_q") 
     136                Duplicate/O $(typPrefix+"_i"),$(trimPrefix+"_i") 
     137                Duplicate/O $(typPrefix+"_s"),$(trimPrefix+"_s") 
     138                WaveStats/Q $(typPrefix+"_q")                   //get info about the original q-values read in 
     139                pt = V_npnts-endPts 
     140                DeletePoints pt,endPts,$(trimPrefix+"_q"),$(trimPrefix+"_i"),$(trimPrefix+"_s") //delete end points first 
     141                DeletePoints 0,begPts,$(trimPrefix+"_q"),$(trimPrefix+"_i"),$(trimPrefix+"_s")  //then delete points from beginning                      
     142        else 
     143                //Assume 
     144                //3 col data loaded 
     145                print "Assuming 3 col data loaded" 
     146                numcols = 3 
     147                Duplicate/O $(typPrefix+"_q") $(trimPrefix+"_q") 
     148                Duplicate/O $(typPrefix+"_i") $(trimPrefix+"_i") 
     149                Duplicate/O $(typPrefix+"_s") $(trimPrefix+"_s")                 
     150                //Trimmed data set 
     151                Duplicate/O $(typPrefix+"_q"),$(trimPrefix+"_q") 
     152                Duplicate/O $(typPrefix+"_i"),$(trimPrefix+"_i") 
     153                Duplicate/O $(typPrefix+"_s"),$(trimPrefix+"_s") 
     154                WaveStats/Q $(typPrefix+"_q")                   //get info about the original q-values read in 
     155                pt = V_npnts-endPts 
     156                DeletePoints pt,endPts,$(trimPrefix+"_q"),$(trimPrefix+"_i"),$(trimPrefix+"_s") //delete end points first 
     157                DeletePoints 0,begPts,$(trimPrefix+"_q"),$(trimPrefix+"_i"),$(trimPrefix+"_s")  //then delete points from beginning                                                      
     158        endif 
     159 
     160        switch (setNum) 
     161                case 1: 
     162                        gColumns1 = numCols 
     163                        break 
     164                case 2: 
     165                        gColumns2 = numCols 
     166                        break 
     167                case 3: 
     168                        gColumns3 = numCols 
     169                        break 
     170        endswitch 
     171         
     172End 
     173 
     174 
     175Function WriteNSORTedFile(q3,i3,sig3,firstFileName,secondFileName,thirdFileName,normTo,norm12,norm23,[res]) 
     176        Wave q3,i3,sig3,res 
    216177        String firstFileName,secondFileName,thirdFileName,normTo 
    217178        Variable norm12,norm23 
    218179 
    219         Variable err=0,refNum 
    220         String fullPath="" 
     180        Variable err=0,refNum,numCols 
     181        String fullPath="",formatStr="" 
    221182        //check each wave - else REALLY FATAL error when writing file 
    222183        If(!(WaveExists(q3))) 
     
    233194        Endif 
    234195         
     196        if(WaveExists(res)) 
     197                numCols = 6 
     198        else 
     199                numCols = 3 
     200        endif 
     201         
    235202        Variable dialog = 1 
    236203        if(dialog) 
     
    270237                Close refNum 
    271238        endif 
    272          
    273         String formatStr = "%15.4g %15.4g %15.4g\r\n" 
     239 
     240         
    274241        //actually open the file 
    275242        Open refNum as fullpath 
     
    284251        fprintf refNum, "normalized to   %s\r\n",normTo 
    285252        fprintf refNum, "multiplicative factor 1-2 = %12.8g\t multiplicative factor 2-3 = %12.8g\r\n",norm12,norm23 
    286         fprintf refnum, "The 3 columns are | Q (1/A) | I(Q) (1/cm) | std. dev. I(Q) (1/cm) |\r\n" 
    287         wfprintf refnum, formatStr, q3,i3,sig3 
     253 
     254        if (numCols == 3) 
     255                formatStr = "%15.4g %15.4g %15.4g\r\n" 
     256                fprintf refnum, "The 3 columns are | Q (1/A) | I(Q) (1/cm) | std. dev. I(Q) (1/cm) |\r\n" 
     257                wfprintf refnum, formatStr, q3,i3,sig3 
     258        elseif (numCols == 6) 
     259                Make/O/N=(dimsize(res,0)) sigq3 = res[p][0] 
     260                Make/O/N=(dimsize(res,0)) qbar3 = res[p][1] 
     261                Make/O/N=(dimsize(res,0)) fs3 = res[p][2] 
     262         
     263                formatStr = "%15.4g %15.4g %15.4g %15.4g %15.4g %15.4g\r\n"      
     264                fprintf refnum, "The 6 columns are | Q (1/A) | I(Q) (1/cm) | std. dev. I(Q) (1/cm) | sigmaQ | meanQ | ShadowFactor|\r\n" 
     265                wfprintf refnum, formatStr, q3,i3,sig3,sigq3,qbar3,fs3 
     266        endif 
    288267         
    289268        Close refnum 
     
    292271End 
    293272 
    294 //writes out the NSORTed file, includeing header information about how the file 
    295 //was generated - from which files, and how it was normalized 
    296 //protocol info makes no sense here - go back to the original, separate files 
    297 //if you want to know that information 
    298 // 
    299 // this is the 6-column version  - there's a separate function for 3-column data 
    300 //will ALWAYS prompt for a filename 
    301 // 
    302 Function Write6ColNSORTedFile(q3,i3,sig3,sq3,qb3,fs3,firstFileName,secondFileName,thirdFileName,normTo,norm12,norm23) 
    303         Wave q3,i3,sig3,sq3,qb3,fs3 
    304         String firstFileName,secondFileName,thirdFileName,normTo 
    305         Variable norm12,norm23 
    306  
    307         Variable err=0,refNum 
    308         String fullPath="" 
    309         //check each wave - else REALLY FATAL error when writing file    
    310         If(!(WaveExists(q3))) 
    311                 err = 1 
    312                 return err 
    313         Endif 
    314         If(!(WaveExists(i3))) 
    315                 err = 1 
    316                 return err 
    317         Endif 
    318         If(!(WaveExists(sig3))) 
    319                 err = 1 
    320                 return err 
    321         Endif 
    322         If(!(WaveExists(sq3))) 
    323                 err = 1 
    324                 return err 
    325         Endif 
    326         If(!(WaveExists(qb3))) 
    327                 err = 1 
    328                 return err 
    329         Endif 
    330         If(!(WaveExists(fs3))) 
    331                 err = 1 
    332                 return err 
    333         Endif 
    334          
    335         Variable dialog = 1 
    336         // 05SEP05 SRK -- added to automatically combine files from a table - see the end of NSORT.ipf for details 
    337         // - use the flag set in DoCombineFiles() to decide if the table entries should be used 
    338         //   root:myGlobals:CombineTable:useTable= (1) (0) 
    339         //if(exists("root:myGlobals:CombineTable:SaveName")) 
    340         NVAR/Z useTable = root:myGlobals:CombineTable:useTable 
    341         if(NVAR_Exists(useTable) && useTable==1) 
    342                 SVAR str=$"root:myGlobals:CombineTable:SaveNameStr"             //messy, but pass in as a global 
    343                 fullPath = str 
    344 //              String str2 = "Is the file name "+str+" correct?" 
    345 //              DoAlert 1,str2 
    346 //              if(V_flag==1) 
    347                         dialog=0        //bypass the dialog if the name is good 
    348 //              endif 
    349         endif 
    350          
    351         if(dialog) 
    352                 PathInfo/S catPathName 
    353                 fullPath = DoSaveFileDialog("Save data as")             //won't actually open the file 
    354                 If(cmpstr(fullPath,"")==0) 
    355                         //user cancel, don't write out a file 
    356                         Close/A 
    357                         Abort "no data file was written" 
    358                 Endif 
    359                 //Print "dialog fullpath = ",fullpath 
    360         Endif 
    361          
    362         // read in the header information from each of the combined files and put this information in the file header 
    363         String dum,hdr1="none\r\n",hdr2="none\r\n",hdr3="none\r\n" 
    364         PathInfo catPathName 
    365          
    366         // the first file exists, check anyways 
    367         if(cmpstr(firstFileName,"none") !=0) 
    368                 Open/R refNum as S_Path+firstFileName 
    369                 FReadLine refNum, dum 
    370                 FReadLine refNum, hdr1                  //just grab the second line 
    371                 Close refNum 
    372         endif 
    373         //second file 
    374         if(cmpstr(secondFileName,"none") !=0) 
    375                 Open/R refNum as S_Path+secondFileName 
    376                 FReadLine refNum, dum 
    377                 FReadLine refNum, hdr2                  //just grab the second line 
    378                 Close refNum 
    379         endif 
    380         // third file 
    381         if(cmpstr(thirdFileName,"none") !=0) 
    382                 Open/R refNum as S_Path+thirdFileName 
    383                 FReadLine refNum, dum 
    384                 FReadLine refNum, hdr3                  //just grab the second line 
    385                 Close refNum 
    386         endif 
    387          
    388          
    389         String formatStr = "%15.4g %15.4g %15.4g %15.4g %15.4g %15.4g\r\n" 
    390         //actually open the file 
    391         Open refNum as fullpath 
    392          
    393         fprintf refnum, "COMBINED FILE CREATED: %s \r\n",date() 
    394          
    395         fprintf refnum, "FIRST File %s",hdr1            //new, Mar 2008 
    396         fprintf refnum, "SECOND File %s",hdr2           //new, Mar 2008 
    397         fprintf refnum, "THIRD File %s",hdr3            //new, Mar 2008 
    398          
    399         fprintf refNum, "NSORT-ed   %s \t  +  %s\t  + %s\r\n",firstFileName, secondFileName,thirdFileName 
    400         fprintf refNum, "normalized to   %s\r\n",normTo 
    401         fprintf refNum, "multiplicative factor 1-2 = %12.8g\t multiplicative factor 2-3 = %12.8g\r\n",norm12,norm23 
    402         fprintf refnum, "The 6 columns are | Q (1/A) | I(Q) (1/cm) | std. dev. I(Q) (1/cm) | sigmaQ | meanQ | ShadowFactor|\r\n" 
    403         wfprintf refnum, formatStr, q3,i3,sig3,sq3,qb3,fs3 
    404          
    405         Close refnum 
    406          
    407         Return err 
    408 End 
     273 
     274 
     275 
    409276 
    410277//gets the scaling constant to make (best) overlap of the specified datasets 
     
    469336        //clean up the temporary waves in the root: folder 
    470337        SetDataFolder root: 
    471          
    472         KillWaves/Z LowQSet_q,LowQSet_i,LowQSet_s,LowQSet_sq,LowQSet_qb,LowQSet_fs 
    473         KillWaves/Z TrimLowQSet_q,TrimLowQSet_i,TrimLowQSet_s,TrimLowQSet_sq,TrimLowQSet_qb,TrimLowQSet_fs 
    474         KillWaves/Z MedQSet_q,MedQSet_i,MedQSet_s,MedQSet_sq,MedQSet_qb,MedQSet_fs 
    475         KillWaves/Z TrimMedQSet_q,TrimMedQSet_i,TrimMedQSet_s,TrimMedQSet_sq,TrimMedQSet_qb,TrimMedQSet_fs 
    476         KillWaves/Z HighQSet_q,HighQSet_i,HighQSet_s,HighQSet_sq,HighQSet_qb,HighQSet_fs 
    477         KillWaves/Z TrimHighQSet_q,TrimHighQSet_i,TrimHighQSet_s,TrimHighQSet_sq,TrimHighQSet_qb,TrimHighQSet_fs 
     338 
     339        KillDataFolder/Z LowQSet 
     340        KillDataFolder/Z MedQSet 
     341        KillDataFolder/Z HighQSet 
    478342 
    479343End 
     
    595459        //function assumes that the window "NSORT_Graph" already exists 
    596460        DoWindow/F NSORT_Graph 
     461        SetDataFolder root:HighQSet: 
    597462        AppendToGraph $"HighQSet_i" vs $"HighQSet_q" 
    598463        ModifyGraph log=1,mode=3,marker($"HighQSet_i")=8,msize=2,rgb($"HighQSet_i")=(0,0,65535),opaque($"HighQSet_i")=1 
     
    600465        AppendToGraph $"TrimHighQSet_i" vs $"TrimHighQSet_q" 
    601466        ModifyGraph mode($"TrimHighQSet_i")=3,marker($"TrimHighQSet_i")=19,msize=2,rgb($"TrimHighQSet_i")=(0,0,65535) 
     467        SetDataFolder root: 
    602468End 
    603469 
     
    608474        //function assumes that the window "NSORT_Graph" already exists 
    609475        DoWindow/F NSORT_Graph 
     476        SetDataFolder root:MedQSet: 
    610477        AppendToGraph $"MedQSet_i" vs $"MedQSet_q" 
    611478        ModifyGraph log=1,mode=3,marker($"MedQSet_i")=8,msize=2,rgb($"MedQSet_i")=(65535,0,0),opaque($"MedQSet_i")=1 
     
    613480        AppendToGraph $"TrimMedQSet_i" vs $"TrimMedQSet_q" 
    614481        ModifyGraph mode($"TrimMedQSet_i")=3,marker($"TrimMedQSet_i")=19,msize=2,rgb($"TrimMedQSet_i")=(65535,0,0) 
     482        SetDataFolder root: 
    615483End 
    616484 
     
    621489        //function assumes that the window "NSORT_Graph" already exists 
    622490        DoWindow/F NSORT_Graph 
     491        SetDataFolder root:LowQSet: 
    623492        AppendToGraph $"LowQSet_i" vs $"LowQSet_q" 
    624493        ModifyGraph log=1,mode=3,marker($"LowQSet_i")=8,msize=2,rgb($"LowQSet_i")=(2,39321,1),opaque($"LowQSet_i")=1 
     
    626495        AppendToGraph $"TrimLowQSet_i" vs $"TrimLowQSet_q" 
    627496        ModifyGraph mode($"TrimLowQSet_i")=3,marker($"TrimLowQSet_i")=19,msize=2,rgb($"TrimLowQSet_i")=(2,39321,1) 
     497        SetDataFolder root: 
    628498End 
    629499 
     
    728598         
    729599                //send just the trimmed (LowQ) set to be written out 
    730                 WAVE lowq = $"TrimLowQSet_q" 
    731                 WAVE lowi = $"TrimLowQSet_i" 
    732                 WAVE lows = $"TrimLowQSet_s" 
    733                 WAVE/Z lowsq = $"TrimLowQSet_sq"                //these may not exist 
    734                 WAVE/Z lowqb = $"TrimLowQSet_qb" 
    735                 WAVE/Z lowfs = $"TrimLowQSet_fs" 
     600                WAVE lowq = $"root:LowQSet:TrimLowQSet_q" 
     601                WAVE lowi = $"root:LowQSet:TrimLowQSet_i" 
     602                WAVE lows = $"root:LowQSet:TrimLowQSet_s" 
     603//              WAVE/Z lowsq = $"root:LowQSet:TrimLowQSet_sq"           //these may not exist 
     604//              WAVE/Z lowqb = $"root:LowQSet:TrimLowQSet_qb" 
     605//              WAVE/Z lowfs = $"root:LowQSet:TrimLowQSet_fs" 
     606                WAVE/Z lowres = $"root:LowQSet:TrimLowQSet_res" 
    736607                NVAR scaleFactor= root:myGlobals:NSORT:gScale1_2 
    737608                 
     
    747618                ControlInfo/W=NSORT_Panel popup_1 
    748619                if(isAThree) 
    749                         Write3ColNSORTedFile(lowq,lowi,lows,S_Value,"none","none",S_Value,scaleFactor,1) 
     620                        WriteNSORTedFile(lowq,lowi,lows,S_Value,"none","none",S_Value,scaleFactor,1) 
    750621                else 
    751                         Write6ColNSORTedFile(lowq,lowi,lows,lowsq,lowqb,lowfs,S_Value,"none","none",S_Value,scaleFactor,1) 
     622                        WriteNSORTedFile(lowq,lowi,lows,S_Value,"none","none",S_Value,scaleFactor,1,res=lowres) 
    752623                endif 
    753624                //  just get the new list and return - don't actually "pop" the menu, or the selected item will change 
     
    1077948                //order points in sets 1-2, indexing overlap region 
    1078949                //put result in temporary waves 
    1079                 WaveStats/Q $"TrimLowQSet_q" 
     950                WaveStats/Q $"root:LowQSet:TrimLowQSet_q" 
    1080951                n1 = V_npnts 
    1081                 WaveStats/Q $"TrimMedQSet_q" 
     952                WaveStats/Q $"root:LowQSet:TrimMedQSet_q" 
    1082953                n2 = V_npnts 
    1083954                n12 = n1+ n2 
    1084955                 
    1085956                Make/O/N=(n12) q12,i12,sig12 
    1086                 WAVE lowq = $"TrimLowQSet_q" 
    1087                 WAVE medq = $"TrimMedQSet_q" 
    1088                 WAVE lowi = $"TrimLowQSet_i" 
    1089                 WAVE medi =  $"TrimMedQSet_i" 
    1090                 WAVE lows = $"TrimLowQSet_s" 
    1091                 WAVE meds = $"TrimMedQSet_s" 
     957                WAVE lowq = $"root:LowQSet:TrimLowQSet_q" 
     958                WAVE medq = $"root:MedQSet:TrimMedQSet_q" 
     959                WAVE lowi = $"root:LowQSet:TrimLowQSet_i" 
     960                WAVE medi =  $"root:MedQSet:TrimMedQSet_i" 
     961                WAVE lows = $"root:LowQSet:TrimLowQSet_s" 
     962                WAVE meds = $"root:MedQSet:TrimMedQSet_s" 
    1092963                q12[0,n1-1] = lowq[p] 
    1093964                q12[n1,n1+n2-1]= medq[p-n1] 
     
    11601031                        ControlInfo/W=NSORT_Panel PreviewCheck 
    11611032                        if( V_Value==0 )                //if zero skip the preview and write out the file 
    1162                                 err=Write3ColNSORTedFile(q12,i12,sig12,name1,name2,name3,normToStr,norm12,norm23) 
     1033                                err=WriteNSORTedFile(q12,i12,sig12,name1,name2,name3,normToStr,norm12,norm23) 
    11631034                        endif 
    11641035                        //cleanup waves before exiting 
     
    11731044                WaveStats/Q q12 
    11741045                n12 = V_npnts 
    1175                 WaveStats/Q $"TrimHighQSet_q" 
     1046                WaveStats/Q $"root:HighQSet:TrimHighQSet_q" 
    11761047                n3 = V_npnts 
    11771048                n123 = n12+ n3 
    11781049                 
    11791050                Make/O/N=(n123) q123,i123,sig123 
    1180                 WAVE highq = $"TrimHighQSet_q" 
    1181                 WAVE highi = $"TrimHighQSet_i" 
    1182                 WAVE highs = $"TrimHighQSet_s" 
     1051                WAVE highq = $"root:HighQSet:TrimHighQSet_q" 
     1052                WAVE highi = $"root:HighQSet:TrimHighQSet_i" 
     1053                WAVE highs = $"root:HighQSet:TrimHighQSet_s" 
    11831054         
    11841055                q123[0,n12-1] = q12[p] 
     
    12451116                ControlInfo/W=NSORT_Panel PreviewCheck 
    12461117                if( V_Value==0 )                //if zero skip the preview and write out the file 
    1247                         err=Write3ColNSORTedFile(q123,i123,sig123,name1,name2,name3,normToStr,norm12,norm23) 
     1118                        err=WriteNSORTedFile(q123,i123,sig123,name1,name2,name3,normToStr,norm12,norm23) 
    12481119                endif 
    12491120                //cleanup waves before exiting 
     
    12581129                //order points in sets 1-2, indexing overlap region 
    12591130                //put result in temporary waves 
    1260                 WaveStats/Q $"TrimLowQSet_q" 
     1131                WaveStats/Q $"root:LowQSet:TrimLowQSet_q" 
    12611132                n1 = V_npnts 
    1262                 WaveStats/Q $"TrimMedQSet_q" 
     1133                WaveStats/Q $"root:MedQSet:TrimMedQSet_q" 
    12631134                n2 = V_npnts 
    12641135                n12 = n1+ n2 
    12651136                 
    12661137                Make/O/N=(n12) q12,i12,sig12,sq12,qb12,fs12 
    1267                 WAVE lowq = $"TrimLowQSet_q" 
    1268                 WAVE medq = $"TrimMedQSet_q" 
    1269                 WAVE lowi = $"TrimLowQSet_i" 
    1270                 WAVE medi =  $"TrimMedQSet_i" 
    1271                 WAVE lows = $"TrimLowQSet_s" 
    1272                 WAVE meds = $"TrimMedQSet_s" 
    1273                 WAVE lowsq = $"TrimLowQSet_sq" 
    1274                 WAVE medsq = $"TrimMedQSet_sq" 
    1275                 WAVE lowqb = $"TrimLowQSet_qb" 
    1276                 WAVE medqb =  $"TrimMedQSet_qb" 
    1277                 WAVE lowfs = $"TrimLowQSet_fs" 
    1278                 WAVE medfs = $"TrimMedQSet_fs" 
    1279          
     1138                Make/O/N=(n12,3) res12 
     1139                WAVE lowq = $"root:LowQSet:TrimLowQSet_q" 
     1140                WAVE medq = $"root:MedQSet:TrimMedQSet_q" 
     1141                WAVE lowi = $"root:LowQSet:TrimLowQSet_i" 
     1142                WAVE medi =  $"root:MedQSet:TrimMedQSet_i" 
     1143                WAVE lows = $"root:LowQSet:TrimLowQSet_s" 
     1144                WAVE meds = $"root:MedQSet:TrimMedQSet_s" 
     1145//              WAVE lowsq = $"root:LowQSet:TrimLowQSet_sq" 
     1146//              WAVE medsq = $"root:MedQSet:TrimMedQSet_sq" 
     1147//              WAVE lowqb = $"root:LowQSet:TrimLowQSet_qb" 
     1148//              WAVE medqb =  $"root:MedQSet:TrimMedQSet_qb" 
     1149//              WAVE lowfs = $"root:LowQSet:TrimLowQSet_fs" 
     1150//              WAVE medfs = $"root:MedQSet:TrimMedQSet_fs" 
     1151                WAVE lowres = $"root:LowQSet:TrimLowQSet_res" 
     1152                WAVE medres = $"root:MedQSet:TrimMedQSet_res" 
     1153                 
    12801154                q12[0,n1-1] = lowq[p] 
    12811155                q12[n1,n1+n2-1]= medq[p-n1] 
     
    12841158                sig12[0,n1-1] = lows[p] 
    12851159                sig12[n1,n1+n2-1]= meds[p-n1] 
    1286                 sq12[0,n1-1] = lowsq[p] 
    1287                 sq12[n1,n1+n2-1]= medsq[p-n1] 
    1288                 qb12[0,n1-1] = lowqb[p] 
    1289                 qb12[n1,n1+n2-1]= medqb[p-n1] 
    1290                 fs12[0,n1-1] = lowfs[p] 
    1291                 fs12[n1,n1+n2-1]= medfs[p-n1] 
     1160                sq12[0,n1-1] = lowres[p][0] 
     1161                sq12[n1,n1+n2-1]= medres[p-n1][0] 
     1162                qb12[0,n1-1] = lowres[p][1] 
     1163                qb12[n1,n1+n2-1]= medres[p-n1][1] 
     1164                fs12[0,n1-1] = lowres[p][2] 
     1165                fs12[n1,n1+n2-1]= medres[p-n1][2] 
     1166//              res12[0,n1-1][0]=lowres[p][0] 
     1167//              res12[n1,n1+n2-1][0]=medres[p-n1][0] 
     1168//              res12[0,n1-1][1]=lowres[p][1] 
     1169//              res12[n1,n1+n2-1][1]=medres[p-n1][1] 
     1170//              res12[0,n1-1][2]=lowres[p][2] 
     1171//              res12[n1,n1+n2-1][2]=medres[p-n1][2] 
     1172 
    12921173                 
    12931174                Sort q12, q12,i12,sig12,sq12,qb12,fs12 
     
    13341215                //Make the combined, scaled dataset by overwriting the old sets 
    13351216                Make/O/N=(n12) q12,i12,sig12,sq12,qb12,fs12 
     1217                Make/O/N=(n12,3) res12 
    13361218                q12[0,n1-1] = lowq[p] 
    13371219                q12[n1,n1+n2-1]= medq[p-n1] 
     
    13401222                sig12[0,n1-1] = lows[p] 
    13411223                sig12[n1,n1+n2-1]= meds[p-n1] 
    1342                 sq12[0,n1-1] = lowsq[p] 
    1343                 sq12[n1,n1+n2-1]= medsq[p-n1] 
    1344                 qb12[0,n1-1] = lowqb[p] 
    1345                 qb12[n1,n1+n2-1]= medqb[p-n1] 
    1346                 fs12[0,n1-1] = lowfs[p] 
    1347                 fs12[n1,n1+n2-1]= medfs[p-n1] 
     1224                sq12[0,n1-1] = lowres[p][0] 
     1225                sq12[n1,n1+n2-1]= medres[p-n1][0] 
     1226                qb12[0,n1-1] = lowres[p][1] 
     1227                qb12[n1,n1+n2-1]= medres[p-n1][1] 
     1228                fs12[0,n1-1] = lowres[p][2] 
     1229                fs12[n1,n1+n2-1]= medres[p-n1][2] 
     1230//              res12[0,n1-1][0]=lowres[p][0] 
     1231//              res12[n1,n1+n2-1][0]=medres[p-n1][0] 
     1232//              res12[0,n1-1][1]=lowres[p][1] 
     1233//              res12[n1,n1+n2-1][1]=medres[p-n1][1] 
     1234//              res12[0,n1-1][2]=lowres[p][2] 
     1235//              res12[n1,n1+n2-1][2]=medres[p-n1][2] 
     1236 
    13481237                 
    13491238                Sort q12, q12,i12,sig12,sq12,qb12,fs12 
     
    13581247                        if( V_Value==0 )                //if zero skip the preview and write out the file 
    13591248                                //If any of them have three columns write three column data 
    1360                                 err=Write6ColNSORTedFile(q12,i12,sig12,sq12,qb12,fs12,name1,name2,name3,normToStr,norm12,norm23) 
     1249                                err=WriteNSORTedFile(q12,i12,sig12,name1,name2,name3,normToStr,norm12,norm23) 
    13611250                        endif 
    13621251                        // always clean up waves before exiting 
     
    13711260                WaveStats/Q q12 
    13721261                n12 = V_npnts 
    1373                 WaveStats/Q $"TrimHighQSet_q" 
     1262                WaveStats/Q $"root:HighQSet:TrimHighQSet_q" 
    13741263                n3 = V_npnts 
    13751264                n123 = n12+ n3 
    13761265                 
    13771266                Make/O/N=(n123) q123,i123,sig123,sq123,qb123,fs123 
    1378                 WAVE highq = $"TrimHighQSet_q" 
    1379                 WAVE highi = $"TrimHighQSet_i" 
    1380                 WAVE highs = $"TrimHighQSet_s" 
    1381                 WAVE highsq = $"TrimHighQSet_sq" 
    1382                 WAVE highqb = $"TrimHighQSet_qb" 
    1383                 WAVE highfs = $"TrimHighQSet_fs" 
     1267                Make/O/N=(n123,3) res123 
     1268                WAVE highq = $"root:HighQSet:TrimHighQSet_q" 
     1269                WAVE highi = $"root:HighQSet:TrimHighQSet_i" 
     1270                WAVE highs = $"root:HighQSet:TrimHighQSet_s" 
     1271//              WAVE highsq = $"root:HighQSet:TrimHighQSet_sq" 
     1272//              WAVE highqb = $"root:HighQSet:TrimHighQSet_qb" 
     1273//              WAVE highfs = $"root:HighQSet:TrimHighQSet_fs" 
     1274                WAVE highres = $"root:HighQSet:TrimHighQSet_res" 
     1275         
    13841276         
    13851277                q123[0,n12-1] = q12[p] 
     
    13901282                sig123[n1,n12+n3-1]= highs[p-n12] 
    13911283                sq123[0,n12-1] = sq12[p] 
    1392                 sq123[n1,n12+n3-1]= highsq[p-n12] 
     1284                sq123[n1,n12+n3-1]= highres[p-n12][0] 
    13931285                qb123[0,n12-1] = qb12[p] 
    1394                 qb123[n1,n12+n3-1]= highqb[p-n12] 
     1286                qb123[n1,n12+n3-1]= highres[p-n12][1] 
    13951287                fs123[0,n12-1] = fs12[p] 
    1396                 fs123[n1,n12+n3-1]= highfs[p-n12] 
     1288                fs123[n1,n12+n3-1]= highres[p-n12][2] 
     1289//              res123[0,n12-1][0] = highres[p][0] 
     1290//              res123[n1,n12+n3-1][0] = highres[p-n12][0] 
     1291//              res123[0,n12-1][1] = highres[p][1] 
     1292//              res123[n1,n12+n3-1][1] = highres[p-n12][1] 
     1293//              res123[0,n12-1][2] = highres[p][2] 
     1294//              res123[n1,n12+n3-1][2] = highres[p-n12][2] 
     1295 
    13971296                 
    13981297                Sort q123, q123,i123,sig123,sq123,qb123,fs123 
     
    14361335                DoUpdate 
    14371336                 
    1438                 Make/O/N=(n123) q123,i123,sig123,sq123,qb123,fs123 
     1337                Make/O/N=(n123) q123,i123,sig123 
     1338                Make/O/N=(n123,3) res123 
    14391339                q123[0,n12-1] = q12[p] 
    14401340                q123[n12,n12+n3-1]= highq[p-n12] 
     
    14441344                sig123[n12,n12+n3-1]= highs[p-n12] 
    14451345                sq123[0,n12-1] = sq12[p] 
    1446                 sq123[n12,n12+n3-1]= highsq[p-n12] 
     1346                sq123[n12,n12+n3-1]= highres[p-n12][0] 
    14471347                qb123[0,n12-1] = qb12[p] 
    1448                 qb123[n12,n12+n3-1]= highqb[p-n12] 
     1348                qb123[n12,n12+n3-1]= highres[p-n12][1] 
    14491349                fs123[0,n12-1] = fs12[p] 
    1450                 fs123[n12,n12+n3-1]= highfs[p-n12] 
     1350                fs123[n12,n12+n3-1]= highres[p-n12][2] 
     1351//              res123[0,n12-1][0] = highres[p][0] 
     1352//              res123[n1,n12+n3-1][0] = highres[p-n12][0] 
     1353//              res123[0,n12-1][1] = highres[p][1] 
     1354//              res123[n1,n12+n3-1][1] = highres[p-n12][1] 
     1355//              res123[0,n12-1][2] = highres[p][2] 
     1356//              res123[n1,n12+n3-1][2] = highres[p-n12][2] 
    14511357                 
    14521358                Sort q123, q123,i123,sig123,sq123,qb123,fs123 
     
    14561362                ControlInfo/W=NSORT_Panel PreviewCheck 
    14571363                if( V_Value==0 )                //if zero skip the preview and write out the file 
    1458                         err=Write6ColNSORTedFile(q123,i123,sig123,sq123,qb123,fs123,name1,name2,name3,normToStr,norm12,norm23) 
     1364                        res123[][0] = sq123[p] 
     1365                        res123[][1] = qb123[p] 
     1366                        res123[][2] = fs123[p] 
     1367                        err=WriteNSORTedFile(q123,i123,sig123,name1,name2,name3,normToStr,norm12,norm23,res=res123) 
    14591368                endif 
    14601369                //cleanup waves before exiting 
    1461                 KillWaves/Z q12,i12,sig12,sq12,qb12,fs12,q123,i123,sig123,sq123,qb123,fs123 
     1370                KillWaves/Z q12,i12,sig12,q123,i123,sig123,sq123,qb123,fs123 //,res123 
    14621371                //combined dataset will already be displayed if the NSORT_Graph is open 
    14631372         
Note: See TracChangeset for help on using the changeset viewer.