Changeset 537


Ignore:
Timestamp:
Jul 22, 2009 10:03:54 AM (13 years ago)
Author:
srkline
Message:

July 22 version of Jae-Hie's changes to the HFIR reader

File:
1 edited

Legend:

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

    r527 r537  
    99//                     specific calls 
    1010// 
    11 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    12 //                                 HFIR SANS version for SPICE raw data format: 
    13 //                          NIST CNR Igor Pro Data Reduction Package 
    14 //                                                      Coded by J H J Cho 
     11/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     12//                                      NIST CNR Igor Pro Data Reduction Package 
     13//                                 HFIR SANS version for SPICE raw data format:  
     14// 
    1515//                                              University of Tennessee / NIST 
    1616//                                                         DANSE/SANS 
    17 //                                                              Jun. 2009 
    18 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     17//                                                              Jun. 2009: JHC 
     18/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    1919// 
    2020// - RAW data files are read into the RAW folder - integer data from the detector 
     
    3535        String msgStr 
    3636 
    37         String filename="" 
     37        String filename = "" 
    3838 
    3939        //each routine is responsible for checking the current (displayed) data folder 
     
    146146                XmlCloseFile(refNum,0) 
    147147                //errorMsg = "XMLutils needs an upgrade:  http://www.igorexchange.com/project/XMLutils" 
     148         
    148149                SetDataFolder root: 
    149150                RETURN(-3)                                              // XOPutils needs an upgrade 
     
    166167                        // Expect the required hfir XML header (will fail if "schemalocation" is not found) 
    167168                        if ( CmpStr(  LowerStr(M_listAttr[i][1]),  LowerStr("SPICE_version") ) == 0 ) 
    168                                 thisLocation = TrimWS(M_listAttr[i][2]) 
     169                                thisLocation = HFIR_TrimWS(M_listAttr[i][2]) 
    169170                                if ( StringMatch(thisLocation, nsList[item] + "*") ) 
    170171                                        ns = nsList[item]                        
     
    220221        tempheadhfir = "" 
    221222       ReadHFIRSansRaw(refNum,curFolder,tempheadhfir)  
    222  
     223        
     224       i=0 
     225       do        
     226        //Take the file name from "actual file name", not from the header: (JC found some cases that those are different.) 
     227        //This DOLOOP can be removed where the problem is solved.... 
     228        textw[0]=stringfromlist(i,filename,":")  
     229        if (stringmatch(textw[0],"*.xml")>0)                     
     230                break 
     231        endif 
     232        i +=1 
     233       while (1) 
     234         
    223235        //return the data folder to root 
    224236        SetDataFolder root: 
     
    315327        tempheadhfir = "" 
    316328       ReadHFIRSansRaw(refNum,cur_folder,tempheadhfir)  
    317  
     329       Variable i=0 
     330       do        
     331        //Take the file name from "actual file name", not from the header: (JC found some cases that those are different.) 
     332        textw[0]=stringfromlist(i,fname,":")  
     333        if (stringmatch(textw[0],"*.xml")>0)                     
     334                break 
     335        endif 
     336        i +=1 
     337       while (1) 
    318338 
    319339        //divide the FP data by 4 if read from a PC (not since GBLoadWave update) 
     
    493513         
    494514        String str = "" 
    495         Variable refNum 
     515        Variable refNum,i 
    496516         
    497517        //actually open the file 
     
    508528 
    509529        //ORNL HFIR SANS strings meta DATA 
    510        str=ReadSFromHHead(refNum,wantedterm)  
     530        if (stringmatch("filename",wantedterm)>0) 
     531                i=0 
     532        do       
     533                //Get the file name from "actual file name", not from the header: (JC found some cases that those are different.) 
     534                //This DOLOOP can be removed when the problem is solved.... 
     535                str=stringfromlist(i,fname,":")  
     536                if (stringmatch(str,"*.xml")>0 && stringmatch(stringfromlist(i+1,fname,":"),"")>0)                       
     537                        break 
     538                endif 
     539                i +=1 
     540        while (1) 
     541        else 
     542                str=ReadSFromHHead(refNum,wantedterm)  //Get it from the header. 
     543       endif 
    511544         
    512545        //return the data folder to root 
     
    518551 
    519552// file suffix (NCNR data file name specific) 
    520 // return null string 
    521 // file suffix (4 characters @ byte 19) 
     553 
     554// file suffix (13 characters @ byte 19) 
    522555Function/S getSuffix(fname) 
    523556        String fname 
    524557         
    525         return(getStringFromHeader(fname,"suffix")) 
     558        return(getStringFromHeader(fname,"suffix"))             //!!!!!!!!!!!!!!!!!!!!!!!!! 
    526559End 
    527560 
    528561// associated file suffix (for transmission) 
    529 // NCNR Transmission calculation specific 
    530 // return null string 
     562 
    531563Function/S getAssociatedFileSuffix(fname) 
    532564        String fname 
    533565         
    534         return(getStringFromHeader(fname,"suffix")) 
     566        return(getStringFromHeader(fname,"suffix"))             //!!!!!!!!!!!!!!!!!!!!!!!!! 
    535567End 
    536568 
     
    589621        String fname 
    590622         
    591         return(getRealValueFromHeader(fname,"monitor","")) 
     623        return(getRealValueFromHeader(fname,"monitor",""))  //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!?? 
    592624end 
    593625 
     
    603635        String fname 
    604636         
    605         return(getRealValueFromHeader(fname,"attenuator_number","")) 
     637        return(getRealValueFromHeader(fname,"attenuation","percent")) //in unit od percents 
    606638end 
    607639 
     
    609641Function getSampleTrans(fname) 
    610642        String fname 
    611         return(getRealValueFromHeader(fname,"Transmission_for_Scan","")) 
     643        return(getRealValueFromHeader(fname,"Transmission_for_Sample","")) 
    612644end 
    613645 
     
    616648        String fname 
    617649         
    618         return(getRealValueFromHeader(fname,"",""))                     //ToDo: define this... 
     650        return(getRealValueFromHeader(fname,"Box_Counts",""))            
    619651end 
    620652 
     
    623655        String fname 
    624656         
    625         return(getRealValueFromHeader(fname,"detector","")) //Need to check!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Counters/detector???????????? 
     657        return(getRealValueFromHeader(fname,"detector","")) //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
    626658end 
    627659 
     
    728760        String fname 
    729761         
    730         return(getRealValueFromHeader(fname,"",""))  //"detector"// (Unused, return 0) 
     762        return(getRealValueFromHeader(fname,"",""))  // (Unused, return 0)  
    731763end 
    732764 
     
    743775         
    744776        return(getRealValueFromHeader(fname,"y_mm_per_pixel","mm")) 
     777end 
     778 
     779//total count time is at byte 31         
     780Function getCountTime(fname) 
     781        String fname 
     782        Variable mtime 
     783         
     784        mtime = getRealValueFromHeader(fname,"time","") 
     785        if (mtime == 0) 
     786                mtime = 1               //get rid of a singular for calculating a rate. 
     787        endif  
     788        return(mtime) 
    745789end 
    746790 
     
    775819        return(0) 
    776820End 
    777  
    778 //total count time is at byte 31         
    779 Function getCountTime(fname) 
    780         String fname 
    781         Variable mtime 
    782          
    783         mtime = getRealValueFromHeader(fname,"time","") 
    784         if (mtime == 0) 
    785                 mtime = 1               //get rid of a singular for calculating a rate. 
    786         endif  
    787         return(mtime) 
    788 end 
    789821 
    790822 
     
    825857// if not using the NCNR Transmission module, this function default to  
    826858// returning 0000, and no changes needed 
    827 Function getXYBoxFromFile(filename,x1,x2,y1,y2) 
    828         String filename 
     859Function getXYBoxFromFile(fname,x1,x2,y1,y2) 
     860        String fname 
    829861        Variable &x1,&x2,&y1,&y2 
    830862         
    831863        Variable refnum 
    832         String tmpFile = FindValidFilename(filename) 
     864        String tmpFile = FindValidFilename(fname) 
    833865        // tmpFile is only a parital path 
    834  
     866         
    835867        // return your bounding box coordinates or default values of 0 
    836         x1=0 
    837         y1=0 
    838         x2=0 
    839         y2=0 
     868        x1=getRealValueFromHeader(fname,"XYBox_x1","") 
     869        x2=getRealValueFromHeader(fname,"XYBox_x2","") 
     870        y1=getRealValueFromHeader(fname,"XYBox_y1","") 
     871        y2=getRealValueFromHeader(fname,"XYBox_y2","") 
     872         
     873        if (x1 == -1 || x2 == -1 || y1 == -1 || y2 == -1) 
     874                x1 = 0 
     875                x2 = 0 
     876                y1 = 0 
     877                y2 = 0 
     878        endif 
    840879         
    841880        return(0) 
     
    847886// 
    848887// if not using the NCNR Transmission module, this function is null 
    849 Function WriteXYBoxToHeader(filename,x1,x2,y1,y2) 
    850         String filename 
     888Function WriteXYBoxToHeader(fname,x1,x2,y1,y2) 
     889        String fname 
    851890        Variable x1,x2,y1,y2 
    852891         
    853892        // your code to write bounding box to the header, or nothing 
     893        String x1str = "", x2str = "", y1str = "", y2str = "" 
     894        sprintf x1str, "%d", x1 
     895        sprintf x2str, "%d", x2 
     896        sprintf y1str, "%d", y1 
     897        sprintf y2str, "%d", y2 
     898 
     899        WriteHFIRHead(fname,x1str,"XYBox_x1" ,"")        
     900        WriteHFIRHead(fname,x2str,"XYBox_x2" ,"")  
     901        WriteHFIRHead(fname,y1str,"XYBox_y1" ,"")  
     902        WriteHFIRHead(fname,y2str,"XYBox_y2" ,"")  
    854903         
    855904        return(0) 
     
    859908// (suffix of the data file) 
    860909// 
    861 // if not using the NCNR Transmission module, this function is null 
    862910Function WriteAssocFileSuffixToHeader(fname,suffix) 
    863911        String fname,suffix 
    864912                 
    865         // your code to write bounding box to the header, or nothing 
    866          
     913         
     914        WriteHFIRHead(fname,suffix,"suffix" ,"text")  
    867915        return(0) 
    868916end 
     
    870918 
    871919//// ================================================================== 
    872 // 
    873 //Function/T   TrimWS(strg) 
    874 //    // TrimWhiteSpace (code from Jon Tischler) 
    875 //    String strg 
    876 //    return TrimWSL(TrimWSR(strg)) 
    877 //End 
    878 // 
    879 //// ================================================================== 
    880 // 
    881 //Function/T   TrimWSL(strg) 
    882 //    // TrimWhiteSpaceLeft (code from Jon Tischler) 
    883 //    String strg 
    884 //    Variable i, N=strlen(strg) 
    885 //    for (i=0;char2num(strg[i])<=32 && i<N;i+=1)    // find first non-white space 
    886 //    endfor 
    887 //    return strg[i,Inf] 
    888 //End 
    889 // 
    890 //// ================================================================== 
    891 // 
    892 //Function/T   TrimWSR(strg) 
    893 //    // TrimWhiteSpaceRight (code from Jon Tischler) 
    894 //    String strg 
    895 //    Variable i 
    896 //    for (i=strlen(strg)-1; char2num(strg[i])<=32 && i>=0; i-=1)    // find last non-white space 
    897 //    endfor 
    898 //    return strg[0,i] 
    899 //End 
    900 // 
     920//Keep these functions in case NIST changes: We need these... 
     921// TrimWhiteSpace (code from Jon Tischler) 
     922Function/T   HFIR_TrimWS(strg) 
     923    
     924   String strg 
     925   return HFIR_TrimWSL(HFIR_TrimWSR(strg)) 
     926End 
     927 
     928Function/T   HFIR_TrimWSL(strg) 
     929    String strg 
     930    Variable i, N=strlen(strg) 
     931    for (i=0;char2num(strg[i])<=32 && i<N;i+=1)    // find first non-white space 
     932    endfor 
     933    return strg[i,Inf] 
     934End 
     935 
     936Function/T   HFIR_TrimWSR(strg) 
     937    String strg 
     938    Variable i 
     939    for (i=strlen(strg)-1; char2num(strg[i])<=32 && i>=0; i-=1)    // find last non-white space 
     940   endfor 
     941    return strg[0,i] 
     942End 
    901943//// ================================================================== 
    902944 
     
    921963                        // Expect the required hfir XML header (will fail if "schemalocation" is not found) 
    922964                        if ( CmpStr(  LowerStr(M_listAttr[i][1]),  LowerStr(pname) ) == 0 ) 
    923                                 thisLocation = TrimWS(M_listAttr[i][2]) 
     965                                thisLocation = HFIR_TrimWS(M_listAttr[i][2]) 
    924966                                if ( StringMatch(thisLocation, nsList[item] + "*") ) 
    925967                                        ns = nsList[item] 
     
    9661008         textw[2]=curFolder 
    9671009         textw[3]="" 
    968          textw[4]="C"   ///??? 
     1010         textw[4]="C"                                ///??? 
    9691011         textw[7]="C"                        // temperature unit C 
    9701012         textw[10]="xml"                        //HFIR SANS RAW data file extension 
     1013         realw[4]  = 1                          //Default for transmission for sample 
    9711014         realw[12]=0.00                       //following 6 values are for non-linear spatial corrections to a detector (RC timing) 
    9721015         realw[15]=0.00                        // 10 and 13 are the X and Y pixel dimensions,,(11,12 and 13,14 are set to values for a linear response, as from a new Ordela detector) 
    973          realw[11]=10000.00                          //nonlinear spatial pix(x) 
     1016         realw[11]=10000.00                          //nonlinear spatial pix(x) //Do not change unless knowing what you are doing... 
    9741017         realw[14]=10000.00                          //nonlinear spatial pix(y) 
    9751018         // detector physical width (right now assumes square...) (in cm) 
     
    10561099                                endfor                   
    10571100                                textw[9] = val                          //ToDo: Define 
    1058                         elseif  (stringmatch(tempheadhfir,"Transmission_for_Scan")>0) 
     1101                        elseif  (stringmatch(tempheadhfir,"Transmission_for_Sample")>0) 
    10591102                                if (value <= 0) 
    10601103                                        value = 1               //HFIR default = -1 while NIST package not working if it is <=0: Set default =1. <=NOT good!!! 
    10611104                                endif 
    10621105                                realw[4] = unit_convert(value,unitstr,"") 
    1063                         elseif  (stringmatch(tempheadhfir,"attenuator_number")>0) 
    1064                                 realw[3] = unit_convert(value,unitstr,"") 
     1106                        elseif  (stringmatch(tempheadhfir,"attenuation")>0) 
     1107                                realw[3] = unit_convert(value,unitstr,"percent") 
    10651108                        elseif  (stringmatch(tempheadhfir,"tsample")>0)  
    10661109                                realw[8] = unit_convert(value,unitstr,"C") 
     
    10751118                        elseif  (stringmatch(tempheadhfir,"y_mm_per_pixel")>0) 
    10761119                                realw[13] =  unit_convert(value,unitstr,"mm") 
     1120                                Variable/G root:myGlobals:PixelResDefault = unit_convert(realw[13],"mm","cm") //back to cm unit for this default value??!! 
     1121                                SetDataFolder curPath 
    10771122                        elseif  (stringmatch(tempheadhfir,"beam_center_x_pixel")>0) 
    10781123                                realw[16] = unit_convert(value,unitstr,"") 
     
    10941139                        elseif  (stringmatch(tempheadhfir,"source_distance")>0) 
    10951140                                if (strlen(unitstr)==0)  
    1096                                         unitstr = "mm" //Give mm unit when no unit is provided from file. ///This needs to be corrected soon!!!! 
     1141                                        unitstr = "mm" //Give mm unit since no unit is provided from the file. ///This needs to be corrected soon!!!! 
    10971142                                endif 
    10981143                                realw[25] =value*length_unit_convert(unitstr,"m") //Unit's Not provided from the file but it is in mm. 
     
    11751220      Variable vresult=-1  // (wantedterm=="", return -1) 
    11761221        Variable ind=0,i=0, value = 0 
    1177  
     1222        String  ntype = "" 
     1223        String savedDataFolder = GetDataFolder(1) 
     1224        //Default for transmission rate (between 0 to 1): HFIR not provide this as a Float number???? ==>make one 
     1225        if (stringmatch(wantedterm,"Transmission_for_Sample")>0) 
     1226                vresult=1                
     1227        endif 
     1228         
    11781229        XMLelemlist(refNum) 
    11791230        WAVE/T W_ElementList 
     
    12011252                                endif 
    12021253                        endfor 
    1203                                                  
     1254                        ntype ="s"              //TEXT   
     1255                        for (i = 0; i < DimSize( M_listAttr,0); i+=1)    
     1256                                if (stringmatch(M_listAttr[i][1],"type")>0) 
     1257                                        if   (stringmatch(M_listAttr[i][2], "INT*")>0) 
     1258                                                ntype = "i"             //INT32 
     1259                                                break 
     1260                                        elseif (stringmatch(M_listAttr[i][2], "FLOAT*")>0) 
     1261                                                ntype ="f"              //FLOAT32 
     1262                                                break 
     1263                                        endif    
     1264                                endif 
     1265                        endfor   
     1266                        if (strlen(ntype) == 0) 
     1267                                ntype = "s"                     //for no "type" attr. 
     1268                        endif            
     1269                        String ustr ="%f"                               //default: float 
     1270                        if (stringmatch(ntype,"i") > 0) //for integer    
     1271                                ustr = "%d" 
     1272                        endif    
     1273                                         
    12041274                        //Special case starts!!!  
    12051275                        //No unit found in hfir ("mm") but needs to convert to meters. 
     
    12091279                        endif 
    12101280                        //Special case ends!!! 
    1211                         sscanf val, "%f", value 
    1212                         if (stringmatch(wantedterm,"Transmission_for_Scan")>0) 
    1213                                 value = 1                       //HFIR default =-1 :Reset default because NIST pac never works this with <=0..!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
    1214                         endif 
     1281                        sscanf val, ustr, value 
    12151282                         
    12161283                        vresult = unit_convert(value,unitstr,NCunit) 
     1284                        //Set PixResDefault from y_mm_per_pixel (not x_mm_per_pixel!!!!!!!!) 
     1285                        if (stringmatch(wantedterm,"y_mm_per_pixel")>0) 
     1286                                Variable/G root:myGlobals:PixelResDefault = unit_convert(vresult,"mm","cm") //back to cm unit for this default value??!! 
     1287                                SetDataFolder savedDataFolder           //In case... 
     1288                        endif 
    12171289                        break 
    12181290                 endif 
     
    12381310                result = "" 
    12391311                return (result) 
    1240       elseif (stringmatch(wantedterm,"suffix")>0)     //file suffix (4 characters @ byte 19)    // associated file suffix (for transmission) (4 characters @ byte 404) 
    1241                 result=""                          // null for non NCNR files 
    1242                 return (result)  
    12431312        endif 
    12441313 
    12451314        XMLlistAttr(refNum,"/SPICErack","") 
    12461315        WAVE/T M_listAttr 
    1247                  
    1248         if (stringmatch("filename=",wantedterm)>0 ||  stringmatch("start_time",wantedterm)>0) 
     1316        if (stringmatch("filename",wantedterm)>0 ||  stringmatch("start_time",wantedterm)>0) 
    12491317                for (i = 0; i<DimSize(M_listAttr,0);i+=1) 
    1250                          if ( Strsearch(M_listAttr[i][1],wantedterm,0) !=-1  )   //find file name 
    1251                                 result=M_listAttr[i][2]     //filename 
     1318                         if ( Strsearch(M_listAttr[i][1],wantedterm,0) !=-1  )   
     1319                                result=M_listAttr[i][2]     
    12521320                                gotterm ="y"  
    12531321                                break 
    1254                         elseif (Strsearch(M_listAttr[i][1],wantedterm,0) !=-1 )  
    1255                         result=M_listAttr[i][2]                 //Date and Time 
    1256                         gotterm ="y"  
    1257                                 break  
    12581322                        endif 
    12591323                endfor     
     
    12861350        endif 
    12871351         
    1288         //make sure not to have a left-over content (only for text; numbers are set to -1 later as a default if not found) 
     1352         
    12891353        if (stringmatch(gotterm,"n")>0 )  
    12901354                result = "" 
     1355        endif 
     1356        //HFIR header does not have "suffix" tag but one can get the info from file name before user writes the tag into the header. 
     1357        if (stringmatch("suffix",wantedterm)>0 && stringmatch("",result)>0)                      
     1358                for (i = 0; i<DimSize(M_listAttr,0);i+=1) 
     1359                         if ( Strsearch(M_listAttr[i][1],"filename",0) !=-1  )   
     1360                                result=StringFromList(2,StringFromList(0,M_listAttr[i][2],"."), "_")+"_"+StringFromList(3,StringFromList(0,M_listAttr[i][2],"."), "_") 
     1361                                break 
     1362                        endif 
     1363                endfor    
     1364        //make sure not to have a left-over content (only for text; numbers are set to -1 later as a default if not found) 
     1365         else 
    12911366        endif 
    12921367         
     
    13231398        //actually open the file 
    13241399        refNum = XmlOpenFile(filename)   
     1400 
    13251401        if (refNum < 0) 
    1326                 print "\r  ==> Failed: Not a standard xml file format... Please check the file if it is properly written..." 
    1327                 return 0                                //Not a xml file. Do nothing... 
    1328         endif 
    1329          
    1330         if ( refNum < 0 ) 
    13311402                switch(refNum)                                   
    13321403                        case -1: 
    1333                                 errorMsg = filename + ":  Failed to parse xml..." 
     1404                                errorMsg =  "  ==>  Not a standard xml file format; Please check if the file is not broken..." 
    13341405                        break 
    13351406                        case -2: 
    1336                                 errorMsg = filename + ":  Not found or cannot be opened..." 
     1407                                errorMsg = "  ==>  Please check if the file name is same as that written in the header..." 
    13371408                        break 
    13381409                endswitch 
    13391410                print errorMsg 
    1340                 return(0)                                               // could not find file 
     1411                XMLclosefile(refNum, 0) 
     1412                return -1                               //Not a xml file. Do nothing... 
    13411413        endif 
    13421414         
     
    13581430                                 
    13591431                        //Special case starts!!!  
    1360                         //No unit founds in hfir ("mm") file but needs to convert to meters. Let's give it. 
     1432                        //No unit founds in hfir ("mm") file but needs to convert to meters. Let's give it one. 
    13611433                        if (stringmatch(wantedterm,"source_distance")>0&& strlen(unitstr) ==0) 
    13621434                                unitstr = "mm"           
     
    13901462                                valstr =value 
    13911463                        else 
    1392                                 sscanf  value, "%f", vals 
    1393                                 vresult = unit_convert(vals,NCunit,unitstr)     //Unit correction...(back to HFIR units) 
    1394                                 sprintf valstr, "%f", vresult 
     1464                                String ustr ="%f"                               //default: float 
     1465                                if (stringmatch(ntype,"i") > 0) //for integer    
     1466                                        ustr = "%d" 
     1467                                endif                    
     1468                                sscanf  value,ustr, vals 
     1469                                vresult = unit_convert(vals,NCunit,unitstr)     //Unit correction...(back to the HFIR unit) 
     1470                                sprintf valstr,ustr, vresult 
    13951471                                //valstr = vresult 
    13961472                        endif 
     
    14011477       endfor 
    14021478 
    1403         if (strlen(nstr)>0)      //to write a new  attribut name and value. 
     1479        if (strlen(nstr)>0)                             //to write a new  attribut name and value which is not found in the raw file. 
    14041480                 XMLaddNode(refNum,nstr,"",wantedterm,value,1) 
    14051481                 nstr += "/" + wantedterm 
     
    14091485                 else 
    14101486                        XMLsetAttr(refNum,nstr,"","units",NCunit)       //use NIST units. 
    1411                         ntype = "FLOAT32"       //Let's set the any number as float fo now...    
     1487                        ntype = "FLOAT32"                                               //Let's set the any number as float for now...   
    14121488                        sscanf  value, "%f", vals 
    14131489                        vresult = vals           
    14141490                 endif 
    1415                  print "*** Important Note:*** \r     *** No parameter named",wantedterm, "was found, so it was added to the end of your data file." 
     1491                 print "*** Important note:*** \r     *** No parameter named",wantedterm, "was found, so it was added to the end of your data file." 
    14161492                 XMLsetAttr(refNum,nstr,"","type",ntype)         
    14171493        endif 
    14181494 
    1419         KillWaves/Z W_ElementList,M_xmlContent,M_listXPath,M_listAttr   //clean up 
     1495        KillWaves/Z W_ElementList,M_xmlContent,M_listXPath,M_listAttr                   //clean up 
    14201496        if      (strlen(wantedterm)==0 && vresult == -1) 
    14211497                XMLclosefile(refNum, 0) 
    14221498                print "Failed writing",wantedterm, "on", filename, "..." 
    14231499        else 
    1424                 XMLclosefile(refNum, 1)         //save and close the file. 
     1500                XMLclosefile(refNum, 1)                                         //save and close the file. 
    14251501                print "Finished writing",wantedterm,"=",value,"[",NCunit,"]  on", filename, "..." 
    14261502        endif 
     
    14701546        sprintf transstr, "%f", trans 
    14711547 
    1472          WriteHFIRHead(fname,transstr,"Transmission_for_Scan" ,"")               
     1548         WriteHFIRHead(fname,transstr,"Transmission_for_Sample" ,"")             
    14731549        return(0) 
    14741550End 
     
    14821558        sprintf transstr, "%f", trans 
    14831559 
    1484         WriteHFIRHead(fname,transstr,"detector" ,"")                     
     1560        WriteHFIRHead(fname,transstr,"detector" ,"")    //???????????????????????????????????????????????????????? 
    14851561        return(0) 
    14861562End 
     
    14941570 
    14951571        String countsstr = "" 
    1496         sprintf countsstr, "%f", counts 
    1497  
    1498         WriteHFIRHead(fname,countsstr,"" ,"")    
     1572        sprintf countsstr, "%d", counts 
     1573 
     1574        WriteHFIRHead(fname,countsstr,"Box_Counts" ,"")          
    14991575        return(0) 
    15001576End 
     
    15491625End 
    15501626 
    1551 //attenuator number (not its transmission) is at byte 51 
     1627//Attenuation (percent) 0 for no attanuation (not its transmission)  
    15521628Function WriteAttenNumberToHeader(fname,num) 
    15531629        String fname 
     
    15571633        sprintf numstr, "%f", num 
    15581634 
    1559         WriteHFIRHead(fname,numstr,"attenuator_number","")      // HFIR has attenuation % instead of this. thus user has to use patch unless somebody change the format!!!! 
     1635        WriteHFIRHead(fname,numstr,"attenuation","percent")     // HFIR has attenuation % instead of this. thus user has to use patch unless somebody change the format!!!! 
    15601636        return(0) 
    15611637End 
     
    17491825                str = str[0,59] 
    17501826        endif 
    1751         WriteHFIRHead(fname,str, "Scan_Title","text") //Users tend to put the sample descrpt here. But it could be "Sample_Name"... 
     1827        WriteHFIRHead(fname,str, "Scan_Title","text") //Users tend to put the sample descrpt here instead of "Sample_Name"... 
    17521828        return(0) 
    17531829End 
Note: See TracChangeset for help on using the changeset viewer.