Ignore:
Timestamp:
Mar 29, 2007 5:07:06 PM (16 years ago)
Author:
srkline
Message:

many changes to PatchFiles?.ipf to get the reads and writes separated
and put into NCNR_DataReadWrite.ipf

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sans/SANSReduction/branches/kline_29MAR07/Put in User Procedures/SANS_Reduction_v5.00/NCNR_DataReadWrite.ipf

    r70 r71  
    907907End 
    908908 
     909//rewrite a text field back to the header 
     910// fname is the full path:name 
     911// str is the CORRECT length - it will all be written - pad before sending 
     912// start is the start byte 
     913Function RewriteTextToHeader(fname,str,start) 
     914        String fname,str 
     915        Variable start 
     916         
     917        Variable refnum 
     918        Open/A/T="????TEXT" refnum as fname      //Open for writing! Move to EOF before closing! 
     919        FSetPos refnum,start 
     920        FBinWrite/F=0 refnum, str      //native object format (character) 
     921        //move to the end of the file before closing 
     922        FStatus refnum 
     923        FSetPos refnum,V_logEOF 
     924        //Print "Wrote end of header to " + num2str(V_filePOS) 
     925        Close refnum 
     926                 
     927        return(0) 
     928end 
     929 
     930//rewrite an integer field back to the header 
     931// fname is the full path:name 
     932// val is the integer value 
     933// start is the start byte 
     934Function RewriteIntegerToHeader(fname,val,start) 
     935        String fname 
     936        Variable val,start 
     937         
     938        Variable refnum 
     939        Open/A/T="????TEXT" refnum as fname      //Open for writing! Move to EOF before closing! 
     940        FSetPos refnum,31 
     941        FBinWrite/B=3/F=3 refnum, val      //write a 4-byte integer 
     942        //move to the end of the file before closing 
     943        FStatus refnum 
     944        FSetPos refnum,V_logEOF 
     945        //Print "Wrote end of header to " + num2str(V_filePOS) 
     946        Close refnum 
     947                 
     948        return(0) 
     949end 
     950 
    909951// read specific bits of information from the header 
    910952// each of these operations MUST take care of open/close on their own 
     
    951993End 
    952994 
     995//monitor count is at byte 39 
     996Function getMonitorCount(fname) 
     997        String fname 
     998         
     999        return(getRealValueFromHeader(fname,39)) 
     1000end 
     1001 
     1002//saved monitor count is at byte 43 
     1003Function getSavMon(fname) 
     1004        String fname 
     1005         
     1006        return(getRealValueFromHeader(fname,43)) 
     1007end 
     1008 
     1009//detector count is at byte 47 
     1010Function getDetCount(fname) 
     1011        String fname 
     1012         
     1013        return(getRealValueFromHeader(fname,47)) 
     1014end 
     1015 
     1016//Attenuator number is at byte 51 
     1017Function getAttenNumber(fname) 
     1018        String fname 
     1019         
     1020        return(getRealValueFromHeader(fname,51)) 
     1021end 
     1022 
     1023//transmission is at byte 158 
     1024Function getSampleTrans(fname) 
     1025        String fname 
     1026         
     1027        return(getRealValueFromHeader(fname,158)) 
     1028end 
     1029 
     1030//SampleThickness is at byte 162 
     1031Function getSampleThickness(fname) 
     1032        String fname 
     1033         
     1034        return(getRealValueFromHeader(fname,162)) 
     1035end 
     1036 
     1037//temperature is at byte 186 
     1038Function getTemperature(fname) 
     1039        String fname 
     1040         
     1041        return(getRealValueFromHeader(fname,186)) 
     1042end 
     1043 
     1044//field strength is at byte 190 
     1045Function getFieldStrength(fname) 
     1046        String fname 
     1047         
     1048        return(getRealValueFromHeader(fname,190)) 
     1049end 
     1050 
     1051//beamstop xPos is at byte 252 
     1052Function getBSXPos(fname) 
     1053        String fname 
     1054         
     1055        return(getRealValueFromHeader(fname,252)) 
     1056end 
     1057 
     1058//beamstop Y pos is at byte 256 
     1059Function getBSYPos(fname) 
     1060        String fname 
     1061         
     1062        return(getRealValueFromHeader(fname,256)) 
     1063end 
     1064 
    9531065//SDD is at byte 260 
    9541066Function getSDD(fname) 
     
    9571069        return(getRealValueFromHeader(fname,260)) 
    9581070end 
     1071 
     1072//detector offset is at byte 264 
     1073Function getDetectorOffset(fname) 
     1074        String fname 
     1075         
     1076        return(getRealValueFromHeader(fname,264)) 
     1077end 
     1078 
     1079//Beamstop diameter is at byte 272 
     1080Function getBSDiameter(fname) 
     1081        String fname 
     1082         
     1083        return(getRealValueFromHeader(fname,272)) 
     1084end 
     1085 
     1086//source aperture diameter is at byte 280 
     1087Function getSourceApertureDiam(fname) 
     1088        String fname 
     1089         
     1090        return(getRealValueFromHeader(fname,280)) 
     1091end 
     1092 
     1093//sample aperture diameter is at byte 284 
     1094Function getSampleApertureDiam(fname) 
     1095        String fname 
     1096         
     1097        return(getRealValueFromHeader(fname,284)) 
     1098end 
     1099 
     1100//source AP to Sample AP distance is at byte 288 
     1101Function getSourceToSampleDist(fname) 
     1102        String fname 
     1103         
     1104        return(getRealValueFromHeader(fname,288)) 
     1105end 
     1106 
     1107//wavelength is at byte 292 
     1108Function getWavelength(fname) 
     1109        String fname 
     1110         
     1111        return(getRealValueFromHeader(fname,292)) 
     1112end 
     1113 
     1114//wavelength spread is at byte 296 
     1115Function getWavelengthSpread(fname) 
     1116        String fname 
     1117         
     1118        return(getRealValueFromHeader(fname,296)) 
     1119end 
     1120 
     1121//transmission detector count is at byte 388 
     1122Function getTransDetectorCounts(fname) 
     1123        String fname 
     1124         
     1125        return(getRealValueFromHeader(fname,388)) 
     1126end 
     1127 
     1128 
     1129 
     1130Function getIntegerFromHeader(fname,start) 
     1131        String fname                            //full path:name 
     1132        Variable start          //starting byte 
     1133         
     1134        Variable refnum,val 
     1135        Open/R refNum as fname 
     1136        FSetPos refNum,start 
     1137        FBinRead/B=3/F=3 refnum,val 
     1138        Close refnum 
     1139         
     1140        return(val) 
     1141End 
     1142 
     1143//total count time is at byte 31         
     1144Function getCountTime(fname) 
     1145        String fname 
     1146        return(getIntegerFromHeader(fname,31)) 
     1147end 
     1148 
     1149 
    9591150//reads the wavelength from a reduced data file (not very reliable) 
    9601151// - does not work with NSORTed files 
Note: See TracChangeset for help on using the changeset viewer.