Changeset 403


Ignore:
Timestamp:
Sep 12, 2008 4:43:46 PM (14 years ago)
Author:
ajj
Message:

Adding reading of canSASXML data to Analysis package.

Notes:

  • Names datafolders from title of dataset to cope with multiple datasets per file, but there is no checking for collisions other than to pop up the "this has been loaded before" dialog.
  • I've put them in a "Common" folder as we should be moving to common data file handling.
Location:
sans/Dev/trunk
Files:
3 added
3 edited

Legend:

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

    r398 r403  
    6565        Variable doPlot 
    6666         
    67         Variable rr,gg,bb 
     67        Variable rr,gg,bb,refnum 
    6868        String w0,w1,w2,n0,n1,n2 
    6969        String w3,w4,w5,n3,n4,n5                        //3 extra waves to load 
    7070        SetDataFolder root:             //build sub-folders for each data set under root 
    7171        Variable dQv = root:Packages:NIST:USANS_dQv 
    72          
    73         //Load the waves, using default waveX names 
    74         //if no path or file is specified for LoadWave, the default Mac open dialog will appear 
    75         LoadWave/G/D/A/Q fileStr 
    76         String fileName = S_fileName 
    77         Variable numCols = V_flag 
    78          
    79         if(numCols==3)          //simple 3-column data with no resolution information 
    80                  
    81                 // put the names of the three loaded waves into local names 
    82                 n0 = StringFromList(0, S_waveNames ,";" ) 
    83                 n1 = StringFromList(1, S_waveNames ,";" ) 
    84                 n2 = StringFromList(2, S_waveNames ,";" ) 
    85                  
    86                 //remove the semicolon AND period from files from the VAX 
    87                 w0 = CleanupName((S_fileName + "_q"),0) 
    88                 w1 = CleanupName((S_fileName + "_i"),0) 
    89                 w2 = CleanupName((S_fileName + "_s"),0) 
    90                  
    91                 String baseStr=w1[0,strlen(w1)-3] 
    92                 if(DataFolderExists("root:"+baseStr)) 
    93                                 DoAlert 1,"The file "+S_filename+" has already been loaded. Do you want to load the new data file, overwriting the data in memory?" 
    94                                 if(V_flag==2)   //user selected No, don't load the data 
    95                                         SetDataFolder root: 
    96                                         KillWaves $n0,$n1,$n2           // kill the default waveX that were loaded 
    97                                         //if(DataFolderExists("root:Packages:NIST")) 
    98                                         //      String/G root:Packages:NIST:gLastFileName = filename 
    99                                         //endif 
    100                                         return          //quits the macro 
     72                 
     73        if (cmpStr(fileStr,"") == 0) 
     74                //No filename given, open dialog 
     75                Open/D/R  refnum 
     76                if (cmpstr(S_filename,"") == 0) 
     77                        return 
     78                else 
     79                        fileStr = S_filename 
     80                endif 
     81        endif 
     82 
     83        if (isXML(fileStr) == 1) 
     84                LoadNISTXMLData(fileStr,doPlot) 
     85        else             
     86                //Load the waves, using default waveX names 
     87                //if no path or file is specified for LoadWave, the default Mac open dialog will appear 
     88                LoadWave/G/D/A/Q fileStr 
     89                //String fileName = S_fileName 
     90                String basestr = ParseFilePath(3,ParseFilePath(5,S_Path,":",0,0),":",0,0) 
     91                String fileName =  ParseFilePath(0,ParseFilePath(5,filestr,":",0,0),":",1,0) 
     92                Variable numCols = V_flag 
     93                 
     94                if(numCols==3)          //simple 3-column data with no resolution information 
     95                         
     96                        // put the names of the three loaded waves into local names 
     97                        n0 = StringFromList(0, S_waveNames ,";" ) 
     98                        n1 = StringFromList(1, S_waveNames ,";" ) 
     99                        n2 = StringFromList(2, S_waveNames ,";" ) 
     100                         
     101                        //remove the semicolon AND period from files from the VAX 
     102                        w0 = CleanupName((basestr + "_q"),0) 
     103                        w1 = CleanupName((basestr + "_i"),0) 
     104                        w2 = CleanupName((basestr + "_s"),0) 
     105                         
     106                        //String baseStr=w1[0,strlen(w1)-3] 
     107                        if(DataFolderExists("root:"+baseStr)) 
     108                                        DoAlert 1,"The file "+S_filename+" has already been loaded. Do you want to load the new data file, overwriting the data in memory?" 
     109                                        if(V_flag==2)   //user selected No, don't load the data 
     110                                                SetDataFolder root: 
     111                                                KillWaves $n0,$n1,$n2           // kill the default waveX that were loaded 
     112                                                //if(DataFolderExists("root:Packages:NIST")) 
     113                                                //      String/G root:Packages:NIST:gLastFileName = filename 
     114                                                //endif 
     115                                                return  //quits the macro 
     116                                        endif 
     117                                        SetDataFolder $("root:"+baseStr) 
     118                        else 
     119                                NewDataFolder/S $("root:"+baseStr) 
     120                        endif 
     121                         
     122                        ////overwrite the existing data, if it exists 
     123                        Duplicate/O $("root:"+n0), $w0 
     124                        Duplicate/O $("root:"+n1), $w1 
     125                        Duplicate/O $("root:"+n2), $w2 
     126         
     127                        // no resolution matrix to make 
     128         
     129                        SetScale d,0,0,"1/A",$w0 
     130                        SetScale d,0,0,"1/cm",$w1 
     131                         
     132                endif           //3-col data 
     133                 
     134                if(numCols == 6)                //6-column SANS or USANS data that has resolution information 
     135                         
     136                        // put the names of the (default named) loaded waves into local names 
     137                        n0 = StringFromList(0, S_waveNames ,";" ) 
     138                        n1 = StringFromList(1, S_waveNames ,";" ) 
     139                        n2 = StringFromList(2, S_waveNames ,";" ) 
     140                        n3 = StringFromList(3, S_waveNames ,";" ) 
     141                        n4 = StringFromList(4, S_waveNames ,";" ) 
     142                        n5 = StringFromList(5, S_waveNames ,";" ) 
     143                         
     144                        //remove the semicolon AND period from files from the VAX 
     145                        w0 = CleanupName((basestr + "_q"),0) 
     146                        w1 = CleanupName((basestr + "_i"),0) 
     147                        w2 = CleanupName((basestr + "_s"),0) 
     148                        w3 = CleanupName((basestr + "sq"),0) 
     149                        w4 = CleanupName((basestr + "qb"),0) 
     150                        w5 = CleanupName((basestr + "fs"),0) 
     151                         
     152                        //String baseStr=w1[0,strlen(w1)-3] 
     153                        if(DataFolderExists("root:"+baseStr)) 
     154                                        DoAlert 1,"The file "+S_filename+" has already been loaded. Do you want to load the new data file, overwriting the data in memory?" 
     155                                        if(V_flag==2)   //user selected No, don't load the data 
     156                                                SetDataFolder root: 
     157                                                KillWaves $n0,$n1,$n2,$n3,$n4,$n5               // kill the default waveX that were loaded 
     158                                                if(DataFolderExists("root:Packages:NIST")) 
     159                                                        String/G root:Packages:NIST:gLastFileName = filename 
     160                                                endif           //set the last file loaded to the one NOT loaded 
     161                                                return          //quits the macro 
     162                                        endif 
     163                                        SetDataFolder $("root:"+baseStr) 
     164                        else 
     165                                NewDataFolder/S $("root:"+baseStr) 
     166                        endif 
     167         
     168        ////overwrite the existing data, if it exists 
     169                        Duplicate/O $("root:"+n0), $w0 
     170                        Duplicate/O $("root:"+n1), $w1 
     171                        Duplicate/O $("root:"+n2), $w2 
     172                        Duplicate/O $("root:"+n3), $w3 
     173                        Duplicate/O $("root:"+n4), $w4 
     174                        Duplicate/O $("root:"+n5), $w5 
     175         
     176                        // need to switch based on SANS/USANS 
     177                        if (isSANSResolution($w3[0]))           //checks to see if the first point of the wave is <0] 
     178                                // make a resolution matrix for SANS data 
     179                                Variable np=numpnts($w0) 
     180                                Make/D/O/N=(np,4) $(baseStr+"_res") 
     181                                 
     182                                $(baseStr+"_res")[][0] = $w3[p]         //sigQ 
     183                                $(baseStr+"_res")[][1] = $w4[p]         //qBar 
     184                                $(baseStr+"_res")[][2] = $w5[p]         //fShad 
     185                                $(baseStr+"_res")[][3] = $w0[p]         //Qvalues 
     186                        else 
     187                                //the data is USANS data 
     188                                // marix calculation here, but for now, just copy the waves 
     189                                //$(baseStr+"_res")[][0] = $w3[p]               //sigQ 
     190                                //$(baseStr+"_res")[][1] = $w4[p]               //qBar 
     191                                //$(baseStr+"_res")[][2] = $w5[p]               //fShad 
     192                                //$(baseStr+"_res")[][3] = $w0[p]               //Qvalues 
     193                                dQv = -$w3[0] 
     194                                 
     195                                USANS_CalcWeights(baseStr,dQv) 
     196                                 
     197                        endif 
     198                        Killwaves/Z $w3,$w4,$w5                 //get rid of the resolution waves that are in the matrix 
     199         
     200                        SetScale d,0,0,"1/A",$w0 
     201                        SetScale d,0,0,"1/cm",$w1 
     202                 
     203                endif   //6-col data 
     204         
     205                // Load ORNL data from Heller program 
     206                if(numCols == 4)                //4-column SANS or USANS data that has resolution information 
     207                         
     208                        // put the names of the (default named) loaded waves into local names 
     209                        n0 = StringFromList(0, S_waveNames ,";" ) 
     210                        n1 = StringFromList(1, S_waveNames ,";" ) 
     211                        n2 = StringFromList(2, S_waveNames ,";" ) 
     212                        n3 = StringFromList(3, S_waveNames ,";" ) 
     213                         
     214                        //remove the semicolon AND period from files from the VAX 
     215                        w0 = CleanupName((basestr + "_q"),0) 
     216                        w1 = CleanupName((basestr + "_i"),0) 
     217                        w2 = CleanupName((basestr + "_s"),0) 
     218                        w3 = CleanupName((basestr + "sq"),0) 
     219                        w4 = CleanupName((basestr + "qb"),0) 
     220                        w5 = CleanupName((basestr + "fs"),0) 
     221         
     222                         
     223                        //String baseStr=w1[0,strlen(w1)-3] 
     224                        if(DataFolderExists("root:"+baseStr)) 
     225                                        DoAlert 1,"The file "+S_filename+" has already been loaded. Do you want to load the new data file, overwriting the data in memory?" 
     226                                        if(V_flag==2)   //user selected No, don't load the data 
     227                                                SetDataFolder root: 
     228                                                KillWaves $n0,$n1,$n2,$n3               // kill the default waveX that were loaded 
     229                                                if(DataFolderExists("root:Packages:NIST")) 
     230                                                        String/G root:Packages:NIST:gLastFileName = filename 
     231                                                endif           //set the last file loaded to the one NOT loaded 
     232                                                return          //quits the macro 
     233                                        endif 
     234                                        SetDataFolder $("root:"+baseStr) 
     235                        else 
     236                                NewDataFolder/S $("root:"+baseStr) 
     237                        endif 
     238         
     239        ////overwrite the existing data, if it exists 
     240                        Duplicate/O $("root:"+n0), $w0 
     241                        Duplicate/O $("root:"+n1), $w1 
     242                        Duplicate/O $("root:"+n2), $w2 
     243                        Duplicate/O $("root:"+n3), $w3 
     244                        Duplicate/O $("root:"+n0), $w4 // Set qb wave to nominal measured Q values 
     245                        Duplicate/O $("root:"+n0), $w5 // Make wave of appropriate length 
     246                        $w5 = 1                                           //  Set all shadowfactor to 1 
     247         
     248                        // need to switch based on SANS/USANS 
     249                        if (isSANSResolution($w3[0]))           //checks to see if the first point of the wave is <0] 
     250                                // make a resolution matrix for SANS data 
     251                                Variable np=numpnts($w0) 
     252                                Make/D/O/N=(np,4) $(baseStr+"_res") 
     253                                 
     254                                $(baseStr+"_res")[][0] = $w3[p]         //sigQ 
     255                                $(baseStr+"_res")[][1] = $w4[p]         //qBar 
     256                                $(baseStr+"_res")[][2] = $w5[p]         //fShad 
     257                                $(baseStr+"_res")[][3] = $w0[p]         //Qvalues 
     258                        else 
     259                                //the data is USANS data 
     260                                // marix calculation here, but for now, just copy the waves 
     261                                //$(baseStr+"_res")[][0] = $w3[p]               //sigQ 
     262                                //$(baseStr+"_res")[][1] = $w4[p]               //qBar 
     263                                //$(baseStr+"_res")[][2] = $w5[p]               //fShad 
     264                                //$(baseStr+"_res")[][3] = $w0[p]               //Qvalues 
     265                                dQv = -$w3[0] 
     266                                 
     267                                USANS_CalcWeights(baseStr,dQv) 
     268                                 
     269                        endif 
     270                        Killwaves/Z $w3,$w4,$w5                 //get rid of the resolution waves that are in the matrix 
     271         
     272                        SetScale d,0,0,"1/A",$w0 
     273                        SetScale d,0,0,"1/cm",$w1 
     274                 
     275                endif   //4-col data 
     276         
     277         
     278                if(numCols==5)          //this is the "old-style" VAX desmeared data format 
     279                         
     280                        // put the names of the three loaded waves into local names 
     281                        n0 = StringFromList(0, S_waveNames ,";" ) 
     282                        n1 = StringFromList(1, S_waveNames ,";" ) 
     283                        n2 = StringFromList(2, S_waveNames ,";" ) 
     284                        n3 = StringFromList(3, S_waveNames ,";" ) 
     285                        n4 = StringFromList(4, S_waveNames ,";" ) 
     286                         
     287                         
     288                        //remove the semicolon AND period from files from the VAX 
     289                        w0 = CleanupName((basestr+"_q"),0) 
     290                        w1 = CleanupName((basestr+"_i"),0) 
     291                        w2 = CleanupName((basestr+"_s"),0) 
     292                        w3 = CleanupName((basestr+"_ism"),0) 
     293                        w4 = CleanupName((basestr+"_fit_ism"),0) 
     294                         
     295                        //String baseStr=w1[0,strlen(w1)-3] 
     296                        if(DataFolderExists("root:"+baseStr)) 
     297                                        DoAlert 1,"The file "+S_filename+" has already been loaded. Do you want to load the new data file, overwriting the data in memory?" 
     298                                        if(V_flag==2)   //user selected No, don't load the data 
     299                                                KillWaves $n0,$n1,$n2,$n3,$n4,$n5               // kill the default waveX that were loaded 
     300                                                //if(DataFolderExists("root:Packages:NIST")) 
     301                                                //      String/G root:Packages:NIST:gLastFileName = filename 
     302                                                //endif         //set the last file loaded to the one NOT loaded 
     303                                                return          //quits the macro 
     304                                        endif 
     305                                        SetDataFolder $("root:"+baseStr) 
     306                        else 
     307                                NewDataFolder/S $("root:"+baseStr) 
     308                        endif 
     309                         
     310                        ////overwrite the existing data, if it exists    
     311                        Duplicate/O $("root:"+n0), $w0 
     312                        Duplicate/O $("root:"+n1), $w1 
     313                        Duplicate/O $("root:"+n2), $w2 
     314                        Duplicate/O $("root:"+n3), $w3 
     315                        Duplicate/O $("root:"+n4), $w4 
     316                         
     317                        // no resolution matrix 
     318                endif           //5-col data 
     319 
     320                ////// 
     321                if(DataFolderExists("root:Packages:NIST")) 
     322                        String/G root:Packages:NIST:gLastFileName = filename 
     323                endif 
     324         
     325                 
     326                //plot if desired 
     327                if(doPlot) 
     328                        // assign colors randomly 
     329                        rr = abs(trunc(enoise(65535))) 
     330                        gg = abs(trunc(enoise(65535))) 
     331                        bb = abs(trunc(enoise(65535))) 
     332                         
     333                        // if target window is a graph, and user wants to append, do so 
     334                   DoWindow/B Plot_Manager 
     335                        if(WinType("") == 1) 
     336                                DoAlert 1,"Do you want to append this data to the current graph?" 
     337                                if(V_Flag == 1) 
     338                                        AppendToGraph $w1 vs $w0 
     339                                        ModifyGraph mode($w1)=3,marker($w1)=19,msize($w1)=2,rgb($w1) =(rr,gg,bb),tickUnit=1 
     340                                        ErrorBars $w1 Y,wave=($w2,$w2) 
     341                                        ModifyGraph tickUnit(left)=1 
     342                                else 
     343                                //new graph 
     344                                        Display $w1 vs $w0 
     345                                        ModifyGraph log=1,mode($w1)=3,marker($w1)=19,msize($w1)=2,rgb($w1)=(rr,gg,bb),tickUnit=1 
     346                                        ModifyGraph grid=1,mirror=2,standoff=0 
     347                                        ErrorBars $w1 Y,wave=($w2,$w2) 
     348                                        ModifyGraph tickUnit(left)=1 
     349                                        Legend 
    101350                                endif 
    102                                 SetDataFolder $("root:"+baseStr) 
    103                 else 
    104                         NewDataFolder/S $("root:"+baseStr) 
    105                 endif 
    106                  
    107                 ////overwrite the existing data, if it exists 
    108                 Duplicate/O $("root:"+n0), $w0 
    109                 Duplicate/O $("root:"+n1), $w1 
    110                 Duplicate/O $("root:"+n2), $w2 
    111  
    112                 // no resolution matrix to make 
    113  
    114                 SetScale d,0,0,"1/A",$w0 
    115                 SetScale d,0,0,"1/cm",$w1 
    116                  
    117         endif           //3-col data 
    118          
    119         if(numCols == 6)                //6-column SANS or USANS data that has resolution information 
    120                  
    121                 // put the names of the (default named) loaded waves into local names 
    122                 n0 = StringFromList(0, S_waveNames ,";" ) 
    123                 n1 = StringFromList(1, S_waveNames ,";" ) 
    124                 n2 = StringFromList(2, S_waveNames ,";" ) 
    125                 n3 = StringFromList(3, S_waveNames ,";" ) 
    126                 n4 = StringFromList(4, S_waveNames ,";" ) 
    127                 n5 = StringFromList(5, S_waveNames ,";" ) 
    128                  
    129                 //remove the semicolon AND period from files from the VAX 
    130                 w0 = CleanupName((S_fileName + "_q"),0) 
    131                 w1 = CleanupName((S_fileName + "_i"),0) 
    132                 w2 = CleanupName((S_fileName + "_s"),0) 
    133                 w3 = CleanupName((S_fileName + "sq"),0) 
    134                 w4 = CleanupName((S_fileName + "qb"),0) 
    135                 w5 = CleanupName((S_fileName + "fs"),0) 
    136                  
    137                 String baseStr=w1[0,strlen(w1)-3] 
    138                 if(DataFolderExists("root:"+baseStr)) 
    139                                 DoAlert 1,"The file "+S_filename+" has already been loaded. Do you want to load the new data file, overwriting the data in memory?" 
    140                                 if(V_flag==2)   //user selected No, don't load the data 
    141                                         SetDataFolder root: 
    142                                         KillWaves $n0,$n1,$n2,$n3,$n4,$n5               // kill the default waveX that were loaded 
    143                                         if(DataFolderExists("root:Packages:NIST")) 
    144                                                 String/G root:Packages:NIST:gLastFileName = filename 
    145                                         endif           //set the last file loaded to the one NOT loaded 
    146                                         return          //quits the macro 
    147                                 endif 
    148                                 SetDataFolder $("root:"+baseStr) 
    149                                 Print "Old Data Folder" 
    150                                 Print GetDataFolder(1) 
    151                 else 
    152                         NewDataFolder/S $("root:"+baseStr) 
    153                         Print "New Data Folder" 
    154                         Print GetDataFolder(1) 
    155                 endif 
    156  
    157 ////overwrite the existing data, if it exists 
    158                 Duplicate/O $("root:"+n0), $w0 
    159                 Duplicate/O $("root:"+n1), $w1 
    160                 Duplicate/O $("root:"+n2), $w2 
    161                 Duplicate/O $("root:"+n3), $w3 
    162                 Duplicate/O $("root:"+n4), $w4 
    163                 Duplicate/O $("root:"+n5), $w5 
    164  
    165                 // need to switch based on SANS/USANS 
    166                 if (isSANSResolution($w3[0]))           //checks to see if the first point of the wave is <0] 
    167                         // make a resolution matrix for SANS data 
    168                         Variable np=numpnts($w0) 
    169                         Make/D/O/N=(np,4) $(baseStr+"_res") 
    170                          
    171                         $(baseStr+"_res")[][0] = $w3[p]         //sigQ 
    172                         $(baseStr+"_res")[][1] = $w4[p]         //qBar 
    173                         $(baseStr+"_res")[][2] = $w5[p]         //fShad 
    174                         $(baseStr+"_res")[][3] = $w0[p]         //Qvalues 
    175                 else 
    176                         //the data is USANS data 
    177                         // marix calculation here, but for now, just copy the waves 
    178                         //$(baseStr+"_res")[][0] = $w3[p]               //sigQ 
    179                         //$(baseStr+"_res")[][1] = $w4[p]               //qBar 
    180                         //$(baseStr+"_res")[][2] = $w5[p]               //fShad 
    181                         //$(baseStr+"_res")[][3] = $w0[p]               //Qvalues 
    182                         dQv = -$w3[0] 
    183                          
    184                         USANS_CalcWeights(baseStr,dQv) 
    185                          
    186                 endif 
    187                 Killwaves/Z $w3,$w4,$w5                 //get rid of the resolution waves that are in the matrix 
    188  
    189                 SetScale d,0,0,"1/A",$w0 
    190                 SetScale d,0,0,"1/cm",$w1 
    191          
    192         endif   //6-col data 
    193  
    194         // Load ORNL data from Heller program 
    195         if(numCols == 4)                //4-column SANS or USANS data that has resolution information 
    196                  
    197                 // put the names of the (default named) loaded waves into local names 
    198                 n0 = StringFromList(0, S_waveNames ,";" ) 
    199                 n1 = StringFromList(1, S_waveNames ,";" ) 
    200                 n2 = StringFromList(2, S_waveNames ,";" ) 
    201                 n3 = StringFromList(3, S_waveNames ,";" ) 
    202                  
    203                 //remove the semicolon AND period from files from the VAX 
    204                 w0 = CleanupName((S_fileName + "_q"),0) 
    205                 w1 = CleanupName((S_fileName + "_i"),0) 
    206                 w2 = CleanupName((S_fileName + "_s"),0) 
    207                 w3 = CleanupName((S_fileName + "sq"),0) 
    208                 w4 = CleanupName((S_fileName + "qb"),0) 
    209                 w5 = CleanupName((S_fileName + "fs"),0) 
    210  
    211                  
    212                 String baseStr=w1[0,strlen(w1)-3] 
    213                 if(DataFolderExists("root:"+baseStr)) 
    214                                 DoAlert 1,"The file "+S_filename+" has already been loaded. Do you want to load the new data file, overwriting the data in memory?" 
    215                                 if(V_flag==2)   //user selected No, don't load the data 
    216                                         SetDataFolder root: 
    217                                         KillWaves $n0,$n1,$n2,$n3               // kill the default waveX that were loaded 
    218                                         if(DataFolderExists("root:Packages:NIST")) 
    219                                                 String/G root:Packages:NIST:gLastFileName = filename 
    220                                         endif           //set the last file loaded to the one NOT loaded 
    221                                         return          //quits the macro 
    222                                 endif 
    223                                 SetDataFolder $("root:"+baseStr) 
    224                 else 
    225                         NewDataFolder/S $("root:"+baseStr) 
    226                 endif 
    227  
    228 ////overwrite the existing data, if it exists 
    229                 Duplicate/O $("root:"+n0), $w0 
    230                 Duplicate/O $("root:"+n1), $w1 
    231                 Duplicate/O $("root:"+n2), $w2 
    232                 Duplicate/O $("root:"+n3), $w3 
    233                 Duplicate/O $("root:"+n0), $w4 // Set qb wave to nominal measured Q values 
    234                 Duplicate/O $("root:"+n0), $w5 // Make wave of appropriate length 
    235                 $w5 = 1                                           //  Set all shadowfactor to 1 
    236  
    237                 // need to switch based on SANS/USANS 
    238                 if (isSANSResolution($w3[0]))           //checks to see if the first point of the wave is <0] 
    239                         // make a resolution matrix for SANS data 
    240                         Variable np=numpnts($w0) 
    241                         Make/D/O/N=(np,4) $(baseStr+"_res") 
    242                          
    243                         $(baseStr+"_res")[][0] = $w3[p]         //sigQ 
    244                         $(baseStr+"_res")[][1] = $w4[p]         //qBar 
    245                         $(baseStr+"_res")[][2] = $w5[p]         //fShad 
    246                         $(baseStr+"_res")[][3] = $w0[p]         //Qvalues 
    247                 else 
    248                         //the data is USANS data 
    249                         // marix calculation here, but for now, just copy the waves 
    250                         //$(baseStr+"_res")[][0] = $w3[p]               //sigQ 
    251                         //$(baseStr+"_res")[][1] = $w4[p]               //qBar 
    252                         //$(baseStr+"_res")[][2] = $w5[p]               //fShad 
    253                         //$(baseStr+"_res")[][3] = $w0[p]               //Qvalues 
    254                         dQv = -$w3[0] 
    255                          
    256                         USANS_CalcWeights(baseStr,dQv) 
    257                          
    258                 endif 
    259                 Killwaves/Z $w3,$w4,$w5                 //get rid of the resolution waves that are in the matrix 
    260  
    261                 SetScale d,0,0,"1/A",$w0 
    262                 SetScale d,0,0,"1/cm",$w1 
    263          
    264         endif   //4-col data 
    265  
    266  
    267         if(numCols==5)          //this is the "old-style" VAX desmeared data format 
    268                  
    269                 // put the names of the three loaded waves into local names 
    270                 n0 = StringFromList(0, S_waveNames ,";" ) 
    271                 n1 = StringFromList(1, S_waveNames ,";" ) 
    272                 n2 = StringFromList(2, S_waveNames ,";" ) 
    273                 n3 = StringFromList(3, S_waveNames ,";" ) 
    274                 n4 = StringFromList(4, S_waveNames ,";" ) 
    275                  
    276                  
    277                 //remove the semicolon AND period from files from the VAX 
    278                 w0 = CleanupName((S_fileName+"_q"),0) 
    279                 w1 = CleanupName((S_fileName+"_i"),0) 
    280                 w2 = CleanupName((S_fileName+"_s"),0) 
    281                 w3 = CleanupName((S_fileName+"_ism"),0) 
    282                 w4 = CleanupName((S_fileName+"_fit_ism"),0) 
    283                  
    284                 String baseStr=w1[0,strlen(w1)-3] 
    285                 if(DataFolderExists("root:"+baseStr)) 
    286                                 DoAlert 1,"The file "+S_filename+" has already been loaded. Do you want to load the new data file, overwriting the data in memory?" 
    287                                 if(V_flag==2)   //user selected No, don't load the data 
    288                                         KillWaves $n0,$n1,$n2,$n3,$n4,$n5               // kill the default waveX that were loaded 
    289                                         //if(DataFolderExists("root:Packages:NIST")) 
    290                                         //      String/G root:Packages:NIST:gLastFileName = filename 
    291                                         //endif         //set the last file loaded to the one NOT loaded 
    292                                         return          //quits the macro 
    293                                 endif 
    294                                 SetDataFolder $("root:"+baseStr) 
    295                 else 
    296                         NewDataFolder/S $("root:"+baseStr) 
    297                 endif 
    298                  
    299                 ////overwrite the existing data, if it exists    
    300                 Duplicate/O $("root:"+n0), $w0 
    301                 Duplicate/O $("root:"+n1), $w1 
    302                 Duplicate/O $("root:"+n2), $w2 
    303                 Duplicate/O $("root:"+n3), $w3 
    304                 Duplicate/O $("root:"+n4), $w4 
    305                  
    306                 // no resolution matrix 
    307         endif           //5-col data 
    308          
    309         ////// 
    310         if(DataFolderExists("root:Packages:NIST")) 
    311                 String/G root:Packages:NIST:gLastFileName = filename 
    312         endif 
    313          
    314         //plot if desired 
    315         if(doPlot) 
    316                 // assign colors randomly 
    317                 rr = abs(trunc(enoise(65535))) 
    318                 gg = abs(trunc(enoise(65535))) 
    319                 bb = abs(trunc(enoise(65535))) 
    320                  
    321                 // if target window is a graph, and user wants to append, do so 
    322            DoWindow/B Plot_Manager 
    323                 if(WinType("") == 1) 
    324                         DoAlert 1,"Do you want to append this data to the current graph?" 
    325                         if(V_Flag == 1) 
    326                                 AppendToGraph $w1 vs $w0 
    327                                 ModifyGraph mode($w1)=3,marker($w1)=19,msize($w1)=2,rgb($w1) =(rr,gg,bb),tickUnit=1 
    328                                 ErrorBars $w1 Y,wave=($w2,$w2) 
    329                                 ModifyGraph tickUnit(left)=1 
    330351                        else 
    331                         //new graph 
     352                        // graph window was not target, make new one 
    332353                                Display $w1 vs $w0 
    333354                                ModifyGraph log=1,mode($w1)=3,marker($w1)=19,msize($w1)=2,rgb($w1)=(rr,gg,bb),tickUnit=1 
     
    337358                                Legend 
    338359                        endif 
    339                 else 
    340                 // graph window was not target, make new one 
    341                         Display $w1 vs $w0 
    342                         ModifyGraph log=1,mode($w1)=3,marker($w1)=19,msize($w1)=2,rgb($w1)=(rr,gg,bb),tickUnit=1 
    343                         ModifyGraph grid=1,mirror=2,standoff=0 
    344                         ErrorBars $w1 Y,wave=($w2,$w2) 
    345                         ModifyGraph tickUnit(left)=1 
    346                         Legend 
    347360                endif 
     361                         
     362                //go back to the root folder and clean up before leaving 
     363                SetDataFolder root: 
     364                KillWaves/Z $n0,$n1,$n2,$n3,$n4,$n5 
     365                 
    348366        endif 
    349                  
    350         //go back to the root folder and clean up before leaving 
    351         SetDataFolder root: 
    352         KillWaves/Z $n0,$n1,$n2,$n3,$n4,$n5 
    353367End 
    354368 
  • sans/Dev/trunk/NCNR_User_Procedures/SANS/Analysis/Models/SA_includes_v400.ipf

    r400 r403  
    1313//utility procedures 
    1414#include "GaussUtils_v40"                               version>=4.00 
     15#include "NIST_XML_V40"                                 //added September 2008 
    1516#include "PlotUtilsMacro_v40"                   version>=4.00 
    1617#include "PlotManager_v40"                              version>=4.00 
     
    2324 
    2425#include "CheckVersionFTP"                              //added June 2008 
     26 
    2527 
    2628 
Note: See TracChangeset for help on using the changeset viewer.