Ignore:
Timestamp:
Apr 6, 2007 4:20:53 PM (15 years ago)
Author:
srkline
Message:

Final set of first pass changes to reduction code. Next is to throuroughly test before heading to the second pass of non-obvious function calls and documentation of the "required" stubs for a particular file type.

File:
1 edited

Legend:

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

    r72 r75  
    187187        intw[17] = integer 
    188188         
    189         //1 text field 
     189        //1 text field - the file association for transmission are the first 4 bytes 
    190190        FSetPos refNum,404 
    191191        FReadLine/N=42 refNum,textstr 
     
    571571        intw[17] = integer 
    572572         
    573         //1 text field 
     573        //1 text field - the file association for transmission are the first 4 bytes 
    574574        FSetPos refNum,404 
    575575        FReadLine/N=42 refNum,textstr 
     
    10091009//this procedure takes care of all file open/close pairs needed 
    10101010// 
    1011 Function ReWriteReal(path,value,start) 
     1011Function WriteVAXReal(path,value,start) 
    10121012        String path 
    10131013        Variable value,start 
     
    10541054        //Print "Wrote end of header to " + num2str(V_filePOS) 
    10551055         
    1056         Close refnum                            //at this point, it is as the VAX would have written it.  
     1056        Close refnum            //at this point, it is as the VAX would have written it.  
    10571057         
    10581058        Return(0) 
    10591059End 
     1060 
     1061//sample transmission is a real value at byte 158 
     1062Function WriteTransmissionToHeader(fname,trans) 
     1063        String fname 
     1064        Variable trans 
     1065         
     1066        WriteVAXReal(fname,trans,158)           //transmission start byte is 158 
     1067        return(0) 
     1068End 
     1069 
     1070//whole transmission is a real value at byte 392 
     1071Function WriteWholeTransToHeader(fname,trans) 
     1072        String fname 
     1073        Variable trans 
     1074         
     1075        WriteVAXReal(fname,trans,392)           //transmission start byte is 392 
     1076        return(0) 
     1077End 
     1078 
     1079//box sum counts is a real value at byte 494 
     1080Function WriteBoxCountsToHeader(fname,counts) 
     1081        String fname 
     1082        Variable counts 
     1083         
     1084        WriteVAXReal(fname,counts,494)          // start byte is 494 
     1085        return(0) 
     1086End 
     1087 
     1088//beam stop X-pos is at byte 368 
     1089Function WriteBSXPosToHeader(fname,xpos) 
     1090        String fname 
     1091        Variable xpos 
     1092         
     1093        WriteVAXReal(fname,xpos,368) 
     1094        return(0) 
     1095End 
     1096 
     1097//sample thickness is at byte 162 
     1098Function WriteThicknessToHeader(fname,num) 
     1099        String fname 
     1100        Variable num 
     1101         
     1102        WriteVAXReal(fname,num,162) 
     1103        return(0) 
     1104End 
     1105 
     1106//beam center X pixel location is at byte 252 
     1107Function WriteBeamCenterXToHeader(fname,num) 
     1108        String fname 
     1109        Variable num 
     1110         
     1111        WriteVAXReal(fname,num,252) 
     1112        return(0) 
     1113End 
     1114 
     1115//beam center Y pixel location is at byte 256 
     1116Function WriteBeamCenterYToHeader(fname,num) 
     1117        String fname 
     1118        Variable num 
     1119         
     1120        WriteVAXReal(fname,num,256) 
     1121        return(0) 
     1122End 
     1123 
     1124//attenuator number (not its transmission) is at byte 51 
     1125Function WriteAttenNumberToHeader(fname,num) 
     1126        String fname 
     1127        Variable num 
     1128         
     1129        WriteVAXReal(fname,num,51) 
     1130        return(0) 
     1131End 
     1132 
     1133//monitor count is at byte 39 
     1134Function WriteMonitorCountToHeader(fname,num) 
     1135        String fname 
     1136        Variable num 
     1137         
     1138        WriteVAXReal(fname,num,39) 
     1139        return(0) 
     1140End 
     1141 
     1142//total detector count is at byte 47 
     1143Function WriteDetectorCountToHeader(fname,num) 
     1144        String fname 
     1145        Variable num 
     1146         
     1147        WriteVAXReal(fname,num,47) 
     1148        return(0) 
     1149End 
     1150 
     1151//transmission detector count is at byte 388 
     1152Function WriteTransDetCountToHeader(fname,num) 
     1153        String fname 
     1154        Variable num 
     1155         
     1156        WriteVAXReal(fname,num,388) 
     1157        return(0) 
     1158End 
     1159 
     1160//wavelength is at byte 292 
     1161Function WriteWavelengthToHeader(fname,num) 
     1162        String fname 
     1163        Variable num 
     1164         
     1165        WriteVAXReal(fname,num,292) 
     1166        return(0) 
     1167End 
     1168 
     1169//wavelength spread is at byte 296 
     1170Function WriteWavelengthDistrToHeader(fname,num) 
     1171        String fname 
     1172        Variable num 
     1173         
     1174        WriteVAXReal(fname,num,296) 
     1175        return(0) 
     1176End 
     1177 
     1178//temperature is at byte 186 
     1179Function WriteTemperatureToHeader(fname,num) 
     1180        String fname 
     1181        Variable num 
     1182         
     1183        WriteVAXReal(fname,num,186) 
     1184        return(0) 
     1185End 
     1186 
     1187//magnetic field is at byte 190 
     1188Function WriteMagnFieldToHeader(fname,num) 
     1189        String fname 
     1190        Variable num 
     1191         
     1192        WriteVAXReal(fname,num,190) 
     1193        return(0) 
     1194End 
     1195 
     1196//Source Aperture diameter is at byte 280 
     1197Function WriteSourceApDiamToHeader(fname,num) 
     1198        String fname 
     1199        Variable num 
     1200         
     1201        WriteVAXReal(fname,num,280) 
     1202        return(0) 
     1203End 
     1204 
     1205//Sample Aperture diameter is at byte 284 
     1206Function WriteSampleApDiamToHeader(fname,num) 
     1207        String fname 
     1208        Variable num 
     1209         
     1210        WriteVAXReal(fname,num,284) 
     1211        return(0) 
     1212End 
     1213 
     1214//Source to sample distance is at byte 288 
     1215Function WriteSrcToSamDistToHeader(fname,num) 
     1216        String fname 
     1217        Variable num 
     1218         
     1219        WriteVAXReal(fname,num,288) 
     1220        return(0) 
     1221End 
     1222 
     1223//detector offset is at byte 264 
     1224Function WriteDetectorOffsetToHeader(fname,num) 
     1225        String fname 
     1226        Variable num 
     1227         
     1228        WriteVAXReal(fname,num,264) 
     1229        return(0) 
     1230End 
     1231 
     1232//beam stop diameter is at byte 272 
     1233Function WriteBeamStopDiamToHeader(fname,num) 
     1234        String fname 
     1235        Variable num 
     1236         
     1237        WriteVAXReal(fname,num,272) 
     1238        return(0) 
     1239End 
     1240 
     1241//detector offset is at byte 260 
     1242Function WriteSDDToHeader(fname,num) 
     1243        String fname 
     1244        Variable num 
     1245         
     1246        WriteVAXReal(fname,num,260) 
     1247        return(0) 
     1248End 
     1249 
    10601250 
    10611251//rewrite a text field back to the header 
     
    10801270end 
    10811271 
     1272Function WriteSamLabelToHeader(fname,str) 
     1273        String fname,str 
     1274         
     1275        RewriteTextToHeader(fname,str,98) 
     1276        return(0) 
     1277End 
     1278 
    10821279//rewrite an integer field back to the header 
    10831280// fname is the full path:name 
     
    11011298end 
    11021299 
     1300Function WriteCountTimeToHeader(fname,num) 
     1301        String fname 
     1302        Variable num 
     1303         
     1304        RewriteIntegerToHeader(fname,num,31) 
     1305        return(0) 
     1306End 
     1307 
    11031308// read specific bits of information from the header 
    11041309// each of these operations MUST take care of open/close on their own 
     
    11171322        return(str) 
    11181323End 
     1324 
    11191325// file suffix (4 characters @ byte 19) 
    11201326Function/S getSuffix(fname) 
     
    11221328         
    11231329        return(getStringFromHeader(fname,19,4)) 
     1330End 
     1331 
     1332// associated file suffix (for transmission) (4 characters @ byte 404) 
     1333Function/S getAssociatedFileSuffix(fname) 
     1334        String fname 
     1335         
     1336        return(getStringFromHeader(fname,404,4)) 
    11241337End 
    11251338 
     
    11871400end 
    11881401 
     1402//box counts are stored at byte 494 
     1403Function getBoxCounts(fname) 
     1404        String fname 
     1405         
     1406        return(getRealValueFromHeader(fname,494)) 
     1407end 
     1408 
     1409//whole detector trasmission is at byte 392 
     1410Function getSampleTransWholeDetector(fname) 
     1411        String fname 
     1412         
     1413        return(getRealValueFromHeader(fname,392)) 
     1414end 
     1415 
    11891416//SampleThickness is at byte 162 
    11901417Function getSampleThickness(fname) 
     
    12291456end 
    12301457 
    1231 //SDD is at byte 260 
     1458//sample to detector distance is at byte 260 
    12321459Function getSDD(fname) 
    12331460        String fname 
     
    13401567/////   TRANSMISSION RELATED FUNCTIONS    //////// 
    13411568//box coordinate are returned by reference 
    1342 Function GetXYBoxFromFile(filename,x1,x2,y1,y2) 
     1569Function getXYBoxFromFile(filename,x1,x2,y1,y2) 
    13431570        String filename 
    13441571        Variable &x1,&x2,&y1,&y2 
     
    13781605        return(0) 
    13791606End 
     1607 
     1608//associated file suffix is the first 4 characters of a text field starting 
     1609// at byte 404 
     1610Function WriteAssocFileSuffixToHeader(fname,suffix) 
     1611        String fname,suffix 
     1612         
     1613        Variable refnum 
     1614         
     1615        Open/A/T="????TEXT" refnum as fname 
     1616        FSetPos refnum,404 
     1617        FBinWrite refnum, suffix 
     1618        FStatus refnum 
     1619        FSetPos refnum,V_logEOF 
     1620        Close refnum 
     1621         
     1622        return(0) 
     1623end 
Note: See TracChangeset for help on using the changeset viewer.