Changeset 990 for sans/Dev/trunk/NCNR_User_Procedures/Reduction
- Timestamp:
- Apr 14, 2016 10:20:13 AM (7 years ago)
- Location:
- sans/Dev/trunk/NCNR_User_Procedures/Reduction
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/EventModeProcessing.ipf
r989 r990 931 931 String abortStr 932 932 933 PathInfo catPathName933 PathInfo/S catPathName 934 934 if(V_flag==0) 935 935 DoAlert 0,"Please 'Pick Path' to the data from the Main (yellow) Panel." … … 2463 2463 2464 2464 // load in the waves, saved as Igor text to preserve the data type 2465 PathInfo/S catPathName //should set the next dialog to the proper path... 2465 2466 LoadWave/T/O/P=catPathName 2466 2467 filePathStr = S_fileName -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_HDF5_Read.ipf
r989 r990 257 257 End 258 258 259 // file write time (what is this??260 // TODO - figure out if this is supposed to be an integer or text (ISO)261 Function V_getFileWriteTime(fname)262 String fname263 264 String path = "entry:file_time"265 return(V_getRealValueFromHDF5(fname,path))266 End259 //// file write time (what is this?? 260 //// TODO - figure out if this is supposed to be an integer or text (ISO) 261 //Function V_getFileWriteTime(fname) 262 // String fname 263 // 264 // String path = "entry:file_time" 265 // return(V_getRealValueFromHDF5(fname,path)) 266 //End 267 267 268 268 // TODO - should be the file name as saved on disk, currently it's not … … 485 485 return(V_getRealValueFromHDF5(fname,path)) 486 486 end 487 488 487 489 488 … … 506 505 507 506 // table of the attenuation factor error 508 Function V_getAttenIndex_error_table(fname,outW) 509 String fname 510 Wave outW 507 Function/WAVE V_getAttenIndex_error_table(fname) 508 String fname 511 509 512 510 String path = "entry:instrument:attenuator:index_error_table" 513 511 WAVE w = V_getRealWaveFromHDF5(fname,path) 514 515 outW = w 516 return(0) 512 513 return w 517 514 end 518 515 519 516 // table of the attenuation factor 520 Function V_getAttenIndex_table(fname,outW) 521 String fname 522 Wave outW 517 Function/WAVE V_getAttenIndex_table(fname) 518 String fname 523 519 524 520 String path = "entry:instrument:attenuator:index_table" 525 521 WAVE w = V_getRealWaveFromHDF5(fname,path) 526 522 527 outW =w528 return(0) 529 end 523 return w 524 end 525 530 526 // 531 527 //// status "in or out" … … 538 534 //End 539 535 536 // this is equivalent to "status" - if anything is dropped in the beam 540 537 Function V_getAtten_number(fname) 541 538 String fname … … 608 605 end 609 606 610 Function/S V_getChopper status(fname)607 Function/S V_getChopperStatus(fname) 611 608 String fname 612 609 … … 616 613 End 617 614 618 Function/S V_getChopper type(fname)615 Function/S V_getChopperType(fname) 619 616 String fname 620 617 … … 802 799 End 803 800 804 Function V_getVSTable(fname,outW) 805 String fname 806 Wave outW 807 808 String path = "entry:instrument:beam:monochromator:velocity_selector:table" 801 Function/WAVE V_getVSTable_parameters(fname) 802 String fname 803 804 String path = "entry:instrument:beam:monochromator:velocity_selector:table_parameters" 809 805 WAVE w = V_getRealWaveFromHDF5(fname,path) 810 806 811 outW =w812 return(0) 813 end 814 815 Function V_getVSTable_parameters(fname) 816 String fname 817 818 String path = "entry:instrument:beam:monochromator:velocity_selector:table_parameters" 819 return(V_getRealValueFromHDF5(fname,path)) 820 end 821 807 return w 808 end 809 810 //Function V_getVSTable(fname) 811 // String fname 812 // 813 // String path = "entry:instrument:beam:monochromator:velocity_selector:table" 814 // return(V_getRealValueFromHDF5(fname,path)) 815 //end 816 817 // TODO: this may not exist for VSANS??? 822 818 Function V_getVS_tilt(fname) 823 819 String fname … … 912 908 End 913 909 914 Function V_getPolAnaCell_parameters(fname,outW) 915 String fname 916 Wave outW 910 Function/WAVE V_getPolAnaCell_parameters(fname) 911 String fname 917 912 918 913 String path = "entry:instrument:beam:polarizer_analyzer:cell_parameters" 919 914 WAVE w = V_getRealWaveFromHDF5(fname,path) 920 915 921 outW = w 922 return(0) 916 return w 923 917 End 924 918 … … 1029 1023 End 1030 1024 1031 //beam_stop (data folder) 1032 Function/S V_getBeamStopDescription(fname) 1033 String fname 1034 1035 String path = "entry:instrument:beam_stop:description" 1036 Variable num=60 1037 return(V_getStringFromHDF5(fname,path,num)) 1038 End 1039 1040 Function V_getBeamStopDist_to_det(fname) 1041 String fname 1042 1043 String path = "entry:instrument:beam_stop:distance_to_detector" 1044 return(V_getRealValueFromHDF5(fname,path)) 1045 End 1046 1047 Function V_getBeamStop_x_pos(fname) 1048 String fname 1049 1050 String path = "entry:instrument:beam_stop:x_pos" 1051 return(V_getRealValueFromHDF5(fname,path)) 1052 End 1053 1054 Function V_getBeamStop_y_pos(fname) 1055 String fname 1056 1057 String path = "entry:instrument:beam_stop:y_pos" 1058 return(V_getRealValueFromHDF5(fname,path)) 1059 End 1025 //beam_stop C2 (data folder) 1026 Function/S V_getBeamStopC2Description(fname) 1027 String fname 1028 1029 String path = "entry:instrument:beam_stop_C2:description" 1030 Variable num=60 1031 return(V_getStringFromHDF5(fname,path,num)) 1032 End 1033 1034 Function V_getBeamStopC2Dist_to_det(fname) 1035 String fname 1036 1037 String path = "entry:instrument:beam_stop_C2:distance_to_detector" 1038 return(V_getRealValueFromHDF5(fname,path)) 1039 End 1040 1041 //TODO -- not sure what this really means 1042 Function V_getBeamStopC2num_beamstops(fname) 1043 String fname 1044 1045 String path = "entry:instrument:beam_stop_C2:num_beamstops" 1046 return(V_getRealValueFromHDF5(fname,path)) 1047 End 1048 1049 Function V_getBeamStopC2_x_pos(fname) 1050 String fname 1051 1052 String path = "entry:instrument:beam_stop_C2:x_pos" 1053 return(V_getRealValueFromHDF5(fname,path)) 1054 End 1055 1056 Function V_getBeamStopC2_y_pos(fname) 1057 String fname 1058 1059 String path = "entry:instrument:beam_stop_C2:y_pos" 1060 return(V_getRealValueFromHDF5(fname,path)) 1061 End 1062 1063 // beam stop shape parameters 1064 Function V_getBeamStopC2_height(fname) 1065 String fname 1066 1067 String path = "entry:instrument:beam_stop_C2:shape:height" 1068 return(V_getRealValueFromHDF5(fname,path)) 1069 End 1070 1071 Function V_getBeamStopC2_width(fname) 1072 String fname 1073 1074 String path = "entry:instrument:beam_stop_C2:shape:width" 1075 return(V_getRealValueFromHDF5(fname,path)) 1076 End 1077 1078 // == diameter if shape = CIRCLE 1079 Function V_getBeamStopC2_size(fname) 1080 String fname 1081 1082 String path = "entry:instrument:beam_stop_C2:shape:size" 1083 return(V_getRealValueFromHDF5(fname,path)) 1084 End 1085 1086 Function/S V_getBeamStopC2_shape(fname) 1087 String fname 1088 1089 Variable num=60 1090 String path = "entry:instrument:beam_stop_C2:shape:shape" 1091 return(V_getStringFromHDF5(fname,path,num)) 1092 End 1093 1094 1095 //beam_stop C3 (data folder) 1096 Function/S V_getBeamStopC3Description(fname) 1097 String fname 1098 1099 String path = "entry:instrument:beam_stop_C3:description" 1100 Variable num=60 1101 return(V_getStringFromHDF5(fname,path,num)) 1102 End 1103 1104 Function V_getBeamStopC3Dist_to_det(fname) 1105 String fname 1106 1107 String path = "entry:instrument:beam_stop_C3:distance_to_detector" 1108 return(V_getRealValueFromHDF5(fname,path)) 1109 End 1110 1111 //TODO -- not sure what this really means 1112 Function V_getBeamStopC3num_beamstops(fname) 1113 String fname 1114 1115 String path = "entry:instrument:beam_stop_C3:num_beamstops" 1116 return(V_getRealValueFromHDF5(fname,path)) 1117 End 1118 1119 Function V_getBeamStopC3_x_pos(fname) 1120 String fname 1121 1122 String path = "entry:instrument:beam_stop_C3:x_pos" 1123 return(V_getRealValueFromHDF5(fname,path)) 1124 End 1125 1126 Function V_getBeamStopC3_y_pos(fname) 1127 String fname 1128 1129 String path = "entry:instrument:beam_stop_C3:y_pos" 1130 return(V_getRealValueFromHDF5(fname,path)) 1131 End 1132 1133 // beam stop shape parameters 1134 Function V_getBeamStopC3_height(fname) 1135 String fname 1136 1137 String path = "entry:instrument:beam_stop_C3:shape:height" 1138 return(V_getRealValueFromHDF5(fname,path)) 1139 End 1140 1141 Function V_getBeamStopC3_width(fname) 1142 String fname 1143 1144 String path = "entry:instrument:beam_stop_C3:shape:width" 1145 return(V_getRealValueFromHDF5(fname,path)) 1146 End 1147 1148 // == diameter if shape = CIRCLE 1149 Function V_getBeamStopC3_size(fname) 1150 String fname 1151 1152 String path = "entry:instrument:beam_stop_C3:shape:size" 1153 return(V_getRealValueFromHDF5(fname,path)) 1154 End 1155 1156 Function/S V_getBeamStopC3_shape(fname) 1157 String fname 1158 1159 Variable num=60 1160 String path = "entry:instrument:beam_stop_C3:shape:shape" 1161 return(V_getStringFromHDF5(fname,path,num)) 1162 End 1163 1164 1165 1060 1166 1061 1167 //// INSTRUMENT/COLLIMATOR 1062 1168 //collimator (data folder) 1063 Function V_getNumberOfGuides(fname) 1064 String fname 1065 1169 1170 // this is now defined as text, due to selections from GUI 1171 Function/S V_getNumberOfGuides(fname) 1172 String fname 1173 1174 Variable num=60 1066 1175 String path = "entry:instrument:collimator:number_guides" 1067 return(V_get RealValueFromHDF5(fname,path))1176 return(V_getStringFromHDF5(fname,path,num)) 1068 1177 End 1069 1178 … … 1129 1238 End 1130 1239 1131 // TODO -- write and X and Y version of this.Pixels are not square1240 // Pixels are not square 1132 1241 // so the FHWM will be different in each direction. May need to return 1133 1242 // "dummy" value for "B" detector if pixels there are square … … 1137 1246 String path = "entry:instrument:detector_"+detStr+":pixel_fwhm_x" 1138 1247 1139 // TODO -- different behavior for "B" 1140 if(cmpstr(detStr,"B") == 0) 1141 return(V_getRealValueFromHDF5(fname,path)) 1142 else 1143 return(V_getRealValueFromHDF5(fname,path)) 1144 endif 1145 End 1146 1147 // TODO -- write and X and Y version of this. Pixels are not square 1248 return(V_getRealValueFromHDF5(fname,path)) 1249 End 1250 1251 // Pixels are not square 1148 1252 // so the FHWM will be different in each direction. May need to return 1149 1253 // "dummy" value for "B" detector if pixels there are square … … 1153 1257 String path = "entry:instrument:detector_"+detStr+":pixel_fwhm_y" 1154 1258 1155 // TODO -- different behavior for "B" 1156 if(cmpstr(detStr,"B") == 0) 1157 return(V_getRealValueFromHDF5(fname,path)) 1158 else 1159 return(V_getRealValueFromHDF5(fname,path)) 1160 endif 1259 return(V_getRealValueFromHDF5(fname,path)) 1161 1260 End 1162 1261 … … 1175 1274 End 1176 1275 1177 // only defined for the "B" detector, and only to satisfy NXsas1178 Function V_getDet_azimuthalAngle(fname,detStr)1179 String fname,detStr1180 1181 if(cmpstr(detStr,"B") == 0)1182 String path = "entry:instrument:detector_"+detStr+":azimuthal_angle"1183 return(V_getRealValueFromHDF5(fname,path))1184 else1185 return(0)1186 endif1187 End1276 //// only defined for the "B" detector, and only to satisfy NXsas 1277 //Function V_getDet_azimuthalAngle(fname,detStr) 1278 // String fname,detStr 1279 // 1280 // if(cmpstr(detStr,"B") == 0) 1281 // String path = "entry:instrument:detector_"+detStr+":azimuthal_angle" 1282 // return(V_getRealValueFromHDF5(fname,path)) 1283 // else 1284 // return(0) 1285 // endif 1286 //End 1188 1287 1189 1288 Function V_getDet_beam_center_x(fname,detStr) … … 1207 1306 // does it need to be? 1208 1307 // these lookups will fail if they have not been generated locally! 1209 1210 1308 Function V_getDet_beam_center_x_mm(fname,detStr) 1211 1309 String fname,detStr … … 1220 1318 // does it need to be? 1221 1319 // these lookups will fail if they have not been generated locally! 1222 1223 1320 Function V_getDet_beam_center_y_mm(fname,detStr) 1224 1321 String fname,detStr … … 1230 1327 1231 1328 1232 // TODO -- write this function to return a WAVE with the data1233 // either as a wave reference, or as an input parameter1234 1329 Function/WAVE V_getDetectorDataW(fname,detStr) 1235 1330 String fname,detStr … … 1241 1336 End 1242 1337 1243 // TODO -- write this function to return a WAVE with the data 1244 // either as a wave reference, or as an input parameter 1338 // 1339 // TODO -- this does not exist in the raw data, but does in the processed data 1340 // !!! how to handle this?? Binning routines need the error wave 1341 // 1245 1342 Function/WAVE V_getDetectorDataErrW(fname,detStr) 1246 1343 String fname,detStr … … 1260 1357 1261 1358 String path = "entry:instrument:detector_"+detStr+":dead_time" 1262 WAVE w = V_getRealWaveFromHDF5(fname,path)1263 1264 return w1265 End1266 1267 1268 Function/S V_getDetDescription(fname,detStr)1269 String fname,detStr1270 1271 String path = "entry:instrument:detector_"+detStr+":description"1272 Variable num=601273 return(V_getStringFromHDF5(fname,path,num))1274 End1275 1276 Function V_getDet_distance(fname,detStr)1277 String fname,detStr1278 1279 String path = "entry:instrument:detector_"+detStr+":distance"1280 return(V_getRealValueFromHDF5(fname,path))1281 End1282 1283 // only defined for the "B" detector, and only to satisfy NXsas1284 Function V_getDet_equatorial_angle(fname,detStr)1285 String fname,detStr1286 1287 1359 if(cmpstr(detStr,"B") == 0) 1288 String path = "entry:instrument:detector_"+detStr+":equatorial_angle" 1360 return $"" 1361 else 1362 WAVE w = V_getRealWaveFromHDF5(fname,path) 1363 return w 1364 endif 1365 End 1366 1367 // for "B" only 1368 Function V_getDetector_deadtime_B(fname,detStr) 1369 String fname,detStr 1370 1371 String path = "entry:instrument:detector_"+detStr+":dead_time" 1372 if(cmpstr(detStr,"B") == 0) 1289 1373 return(V_getRealValueFromHDF5(fname,path)) 1290 else 1374 else 1291 1375 return(0) 1292 1376 endif 1293 1377 End 1294 1378 1379 Function/S V_getDetDescription(fname,detStr) 1380 String fname,detStr 1381 1382 String path = "entry:instrument:detector_"+detStr+":description" 1383 Variable num=60 1384 return(V_getStringFromHDF5(fname,path,num)) 1385 End 1386 1387 Function V_getDet_distance(fname,detStr) 1388 String fname,detStr 1389 1390 String path = "entry:instrument:detector_"+detStr+":distance" 1391 return(V_getRealValueFromHDF5(fname,path)) 1392 End 1393 1394 //// only defined for the "B" detector, and only to satisfy NXsas 1395 //Function V_getDet_equatorial_angle(fname,detStr) 1396 // String fname,detStr 1397 // 1398 // if(cmpstr(detStr,"B") == 0) 1399 // String path = "entry:instrument:detector_"+detStr+":equatorial_angle" 1400 // return(V_getRealValueFromHDF5(fname,path)) 1401 // else 1402 // return(0) 1403 // endif 1404 //End 1405 1295 1406 Function/S V_getDetEventFileName(fname,detStr) 1296 1407 String fname,detStr … … 1315 1426 End 1316 1427 1317 Function V_getDet_VerticalOffset(fname,detStr)1318 String fname,detStr1319 1320 String path = "entry:instrument:detector_"+detStr+":vertical_offset"1321 return(V_getRealValueFromHDF5(fname,path))1322 End1323 1324 1325 // only defined for the "B" detector, and only to satisfy NXsas1326 Function V_getDet_polar_angle(fname,detStr)1327 String fname,detStr1328 1329 if(cmpstr(detStr,"B") == 0)1330 String path = "entry:instrument:detector_"+detStr+":polar_angle"1331 return(V_getRealValueFromHDF5(fname,path))1332 else1333 return(0)1334 endif1335 End1336 1337 // only defined for the "B" detector, and only to satisfy NXsas1338 Function V_getDet_rotational_angle(fname,detStr)1339 String fname,detStr1340 1341 if(cmpstr(detStr,"B") == 0)1342 String path = "entry:instrument:detector_"+detStr+":rotational_angle"1343 return(V_getRealValueFromHDF5(fname,path))1344 else1345 return(0)1346 endif1347 End1428 //Function V_getDet_VerticalOffset(fname,detStr) 1429 // String fname,detStr 1430 // 1431 // String path = "entry:instrument:detector_"+detStr+":vertical_offset" 1432 // return(V_getRealValueFromHDF5(fname,path)) 1433 //End 1434 1435 1436 //// only defined for the "B" detector, and only to satisfy NXsas 1437 //Function V_getDet_polar_angle(fname,detStr) 1438 // String fname,detStr 1439 // 1440 // if(cmpstr(detStr,"B") == 0) 1441 // String path = "entry:instrument:detector_"+detStr+":polar_angle" 1442 // return(V_getRealValueFromHDF5(fname,path)) 1443 // else 1444 // return(0) 1445 // endif 1446 //End 1447 1448 //// only defined for the "B" detector, and only to satisfy NXsas 1449 //Function V_getDet_rotational_angle(fname,detStr) 1450 // String fname,detStr 1451 // 1452 // if(cmpstr(detStr,"B") == 0) 1453 // String path = "entry:instrument:detector_"+detStr+":rotational_angle" 1454 // return(V_getRealValueFromHDF5(fname,path)) 1455 // else 1456 // return(0) 1457 // endif 1458 //End 1348 1459 1349 1460 Function/S V_getDetSettings(fname,detStr) … … 1355 1466 End 1356 1467 1357 // really has no meaning at all1358 Function V_getDet_size(fname,detStr)1359 String fname,detStr1360 1361 String path = "entry:instrument:detector_"+detStr+":size"1362 return(V_getRealValueFromHDF5(fname,path))1363 End1468 //// really has no meaning at all 1469 //Function V_getDet_size(fname,detStr) 1470 // String fname,detStr 1471 // 1472 // String path = "entry:instrument:detector_"+detStr+":size" 1473 // return(V_getRealValueFromHDF5(fname,path)) 1474 //End 1364 1475 1365 1476 Function/S V_getDetType(fname,detStr) … … 1424 1535 End 1425 1536 1426 // TODO -- be clear on how this is defined.1427 Function V_getDet_tubeIndex(fname,detStr)1428 String fname,detStr1429 1430 String path = "entry:instrument:detector_"+detStr+":tube_index"1431 if(cmpstr(detStr,"B") == 0)1432 return(0)1433 else1434 return(V_getRealValueFromHDF5(fname,path))1435 endif1436 End1537 //// TODO -- be clear on how this is defined. 1538 //Function V_getDet_tubeIndex(fname,detStr) 1539 // String fname,detStr 1540 // 1541 // String path = "entry:instrument:detector_"+detStr+":tube_index" 1542 // if(cmpstr(detStr,"B") == 0) 1543 // return(0) 1544 // else 1545 // return(V_getRealValueFromHDF5(fname,path)) 1546 // endif 1547 //End 1437 1548 1438 1549 Function/S V_getDet_tubeOrientation(fname,detStr) … … 1542 1653 1543 1654 1544 /////// sample_aperture (data folder) 1545 1655 1656 1657 /////// sample_aperture (1) (data folder) 1546 1658 Function/S V_getSampleAp_Description(fname) 1547 1659 String fname … … 1558 1670 return(V_getRealValueFromHDF5(fname,path)) 1559 1671 End 1672 1560 1673 // shape (data folder) 1561 1562 1674 Function/S V_getSampleAp_shape(fname) 1563 1675 String fname … … 1568 1680 End 1569 1681 1570 // TODO -- this needs to return a WAVE, since the shape may be circle, or rectangle 1571 // and will need to return more than a single dimension 1572 // TODO -- be careful of the UNITS 1573 Function V_getSampleAp_size(fname,outW) 1574 String fname 1575 Wave outW 1682 // this returns TEXT, due to GUI input, == to diameter if CIRCLE 1683 Function/S V_getSampleAp_size(fname) 1684 String fname 1576 1685 1577 1686 String path = "entry:instrument:sample_aperture:shape:size" 1578 WAVE w = V_getRealWaveFromHDF5(fname,path) 1579 1580 outW = w 1581 return(0) 1582 End 1687 Variable num=60 1688 return(V_getStringFromHDF5(fname,path,num)) 1689 End 1690 1691 Function V_getSampleAp_height(fname) 1692 String fname 1693 1694 String path = "entry:instrument:sample_aperture:shape:height" 1695 return(V_getRealValueFromHDF5(fname,path)) 1696 End 1697 1698 Function V_getSampleAp_width(fname) 1699 String fname 1700 1701 String path = "entry:instrument:sample_aperture:shape:width" 1702 return(V_getRealValueFromHDF5(fname,path)) 1703 End 1704 1705 1583 1706 1584 1707 /////// sample_aperture_2 (data folder) … … 1598 1721 return(V_getRealValueFromHDF5(fname,path)) 1599 1722 End 1723 1600 1724 // shape (data folder) 1601 1602 1725 Function/S V_getSampleAp2_shape(fname) 1603 1726 String fname … … 1608 1731 End 1609 1732 1610 // TODO -- this needs to return a WAVE, since the shape may be circle, or rectangle 1611 // and will need to return more than a single dimension 1612 // TODO -- be careful of the UNITS 1613 Function V_getSampleAp2_size(fname,outW) 1614 String fname 1615 Wave outW 1733 // this returns REAL, DIFFERENT than SampleAp1 1734 Function V_getSampleAp2_size(fname) 1735 String fname 1616 1736 1617 1737 String path = "entry:instrument:sample_aperture_2:shape:size" 1618 WAVE w = V_getRealWaveFromHDF5(fname,path) 1619 1620 outW = w 1621 return(0) 1622 End 1623 1738 return(V_getRealValueFromHDF5(fname,path)) 1739 End 1740 1741 Function V_getSampleAp2_height(fname) 1742 String fname 1743 1744 String path = "entry:instrument:sample_aperture_2:shape:height" 1745 return(V_getRealValueFromHDF5(fname,path)) 1746 End 1747 1748 Function V_getSampleAp2_width(fname) 1749 String fname 1750 1751 String path = "entry:instrument:sample_aperture_2:shape:width" 1752 return(V_getRealValueFromHDF5(fname,path)) 1753 End 1754 1755 1624 1756 ////// sample_table (data folder) 1625 1757 // location = "CHAMBER" or HUBER … … 1694 1826 return(V_getRealValueFromHDF5(fname,path)) 1695 1827 End 1828 1696 1829 // shape (data folder) 1697 1698 1830 Function/S V_getSourceAp_shape(fname) 1699 1831 String fname … … 1704 1836 End 1705 1837 1706 // TODO -- this needs to return a WAVE, since the shape may be circle, or rectangle 1707 // and will need to return more than a single dimension 1708 // TODO -- be careful of the UNITS 1709 Function V_getSourceAp_size(fname,outW) 1710 String fname 1711 Wave outW 1838 // this returns TEXT, due to GUI input, == to diameter if CIRCLE 1839 Function/S V_getSourceAp_size(fname) 1840 String fname 1712 1841 1713 1842 String path = "entry:instrument:source_aperture:shape:size" 1714 WAVE w = V_getRealWaveFromHDF5(fname,path) 1715 1716 outW = w 1717 return(0) 1718 End 1719 1720 1843 Variable num=60 1844 return(V_getStringFromHDF5(fname,path,num)) 1845 End 1846 1847 Function V_getSourceAp_height(fname) 1848 String fname 1849 1850 String path = "entry:instrument:source_aperture:shape:height" 1851 return(V_getRealValueFromHDF5(fname,path)) 1852 End 1853 1854 Function V_getSourceAp_width(fname) 1855 String fname 1856 1857 String path = "entry:instrument:source_aperture:shape:width" 1858 return(V_getRealValueFromHDF5(fname,path)) 1859 End 1721 1860 1722 1861 … … 1725 1864 //////// SAMPLE 1726 1865 1727 //Sample position in changer 1728 // TODO -- in the NexusWriter, this ends up as a STRING -- which is wrong. it needs to be FP 1729 Function V_getSamplePosition(fname) 1866 //Sample position in changer (returned as TEXT) 1867 Function/S V_getSamplePosition(fname) 1730 1868 String fname 1731 1869 1732 1870 String path = "entry:sample:changer_position" 1733 return(V_getRealValueFromHDF5(fname,path)) 1871 Variable num=60 1872 return(V_getStringFromHDF5(fname,path,num)) 1734 1873 end 1735 1874 1736 1875 // sample label 1737 // TODO: value of num is currently not used1738 1876 Function/S V_getSampleDescription(fname) 1739 1877 String fname … … 1743 1881 return(V_getStringFromHDF5(fname,path,num)) 1744 1882 End 1883 1884 // for a z-stage?? 1885 Function V_getSampleElevation(fname) 1886 String fname 1887 1888 String path = "entry:sample:elevation" 1889 return(V_getRealValueFromHDF5(fname,path)) 1890 end 1745 1891 1746 1892 //no meaning to this... … … 1785 1931 1786 1932 String path = "entry:sample:thickness" 1933 return(V_getRealValueFromHDF5(fname,path)) 1934 end 1935 1936 Function V_getSampleTranslation(fname) 1937 String fname 1938 1939 String path = "entry:sample:translation" 1787 1940 return(V_getRealValueFromHDF5(fname,path)) 1788 1941 end … … 1864 2017 End 1865 2018 1866 // TODO -- 1867 Function V_getLog_avgValue(fname,logStr) 1868 String fname,logStr 1869 1870 String path = "entry:sample:"+logstr+":value_log:average_value" 1871 return(V_getRealValueFromHDF5(fname,path)) 1872 end 1873 1874 // TODO -- this needs to be a WAVE reference 1875 // TODO -- verify that the field is really read in as "time0" 1876 Function V_getLog_time(fname,logStr,outW) 1877 String fname,logStr 1878 Wave outW 1879 1880 String path = "entry:sample:"+logstr+":value_log:time0" 1881 WAVE w = V_getRealWaveFromHDF5(fname,path) 1882 1883 outW = w 1884 return(0) 1885 end 1886 1887 1888 // TODO -- this needs to be a WAVE reference 1889 Function V_getLog_Value(fname,logStr,outW) 1890 String fname,logStr 1891 Wave outW 1892 1893 String path = "entry:sample:"+logstr+":value_log:value" 1894 WAVE w = V_getRealWaveFromHDF5(fname,path) 1895 1896 outW = w 1897 return(0) 1898 end 2019 // TODO -- thes currently do not exist... 2020 // 2021 //// TODO -- 2022 //Function V_getLog_avgValue(fname,logStr) 2023 // String fname,logStr 2024 // 2025 // String path = "entry:sample:"+logstr+":value_log:average_value" 2026 // return(V_getRealValueFromHDF5(fname,path)) 2027 //end 2028 // 2029 //// TODO -- this needs to be a WAVE reference 2030 //// TODO -- verify that the field is really read in as "time0" 2031 //Function V_getLog_time(fname,logStr,outW) 2032 // String fname,logStr 2033 // Wave outW 2034 // 2035 // String path = "entry:sample:"+logstr+":value_log:time0" 2036 // WAVE w = V_getRealWaveFromHDF5(fname,path) 2037 // 2038 // outW = w 2039 // return(0) 2040 //end 2041 // 2042 // 2043 //// TODO -- this needs to be a WAVE reference 2044 //Function V_getLog_Value(fname,logStr,outW) 2045 // String fname,logStr 2046 // Wave outW 2047 // 2048 // String path = "entry:sample:"+logstr+":value_log:value" 2049 // WAVE w = V_getRealWaveFromHDF5(fname,path) 2050 // 2051 // outW = w 2052 // return(0) 2053 //end 1899 2054 1900 2055 … … 1910 2065 1911 2066 // TODO -- needs to be a WAVE 1912 Function V_getAbsolute_Scaling(fname,outW) 1913 String fname 1914 Wave outW 2067 Function/WAVE V_getAbsolute_Scaling(fname) 2068 String fname 1915 2069 1916 2070 String path = "entry:reduction:absolute_scaling" 1917 2071 WAVE w = V_getRealWaveFromHDF5(fname,path) 1918 1919 outW = w 1920 return(0) 2072 2073 return w 1921 2074 end 1922 2075 1923 2076 // TODO -- needs to be a WAVE 1924 Function V_getBoxCoordinates(fname,outW) 1925 String fname 1926 Wave outW 2077 Function/WAVE V_getBoxCoordinates(fname) 2078 String fname 1927 2079 1928 2080 String path = "entry:reduction:box_coordinates" 1929 2081 WAVE w = V_getRealWaveFromHDF5(fname,path) 1930 2082 1931 outW = w 1932 return(0) 2083 return w 1933 2084 end 1934 2085 … … 2000 2151 End 2001 2152 2153 Function/S V_getEmptyFileName(fname) 2154 String fname 2155 2156 String path = "entry:reduction:empty_file_name" 2157 Variable num=60 2158 return(V_getStringFromHDF5(fname,path,num)) 2159 End 2160 2161 Function/S V_getMaskFileName(fname) 2162 String fname 2163 2164 String path = "entry:reduction:mask_file_name" 2165 Variable num=60 2166 return(V_getStringFromHDF5(fname,path,num)) 2167 End 2168 2002 2169 2003 2170 //whole detector trasmission … … 2029 2196 2030 2197 2031 // TODO -- needs to be a WAVE 2032 Function V_getPolSANS_cellParams(fname,outW) 2033 String fname 2034 Wave outW 2198 Function/WAVE V_getPolSANS_cellParams(fname) 2199 String fname 2035 2200 2036 2201 String path = "entry:reduction:pol_sans:cell_parameters" 2037 2202 WAVE w = V_getRealWaveFromHDF5(fname,path) 2038 2203 2039 outW = w 2040 return(0) 2204 return w 2041 2205 end 2042 2206 … … 2062 2226 // thumbnail (data folder) 2063 2227 2064 //data (wave) "binary" 2065 // TODO -- this will need to be completely replaced with a function that can 2066 // read the binary image data. should be possible, but I don't know the details on either end... 2067 Function/S V_getDataImage(fname,detStr) 2068 String fname,detStr 2069 2070 String path = "entry:data_"+detStr+":thumbnail:data" 2071 Variable num=60 2072 return(V_getStringFromHDF5(fname,path,num)) 2073 End 2074 2075 Function/S V_getDataImageDescription(fname,detStr) 2076 String fname,detStr 2077 2078 String path = "entry:data_"+detStr+":thumbnail:description" 2079 Variable num=60 2080 return(V_getStringFromHDF5(fname,path,num)) 2081 End 2082 2083 Function/S V_getDataImageType(fname,detStr) 2084 String fname,detStr 2085 2086 String path = "entry:data_"+detStr+":thumbnail:type" 2087 Variable num=60 2088 return(V_getStringFromHDF5(fname,path,num)) 2089 End 2090 2091 2092 2093 2094 2095 2096 2228 ////data (wave) "binary" 2229 //// TODO -- this will need to be completely replaced with a function that can 2230 //// read the binary image data. should be possible, but I don't know the details on either end... 2231 //Function/S V_getDataImage(fname,detStr) 2232 // String fname,detStr 2233 // 2234 // String path = "entry:data_"+detStr+":thumbnail:data" 2235 // Variable num=60 2236 // return(V_getStringFromHDF5(fname,path,num)) 2237 //End 2238 // 2239 //Function/S V_getDataImageDescription(fname,detStr) 2240 // String fname,detStr 2241 // 2242 // String path = "entry:data_"+detStr+":thumbnail:description" 2243 // Variable num=60 2244 // return(V_getStringFromHDF5(fname,path,num)) 2245 //End 2246 // 2247 //Function/S V_getDataImageType(fname,detStr) 2248 // String fname,detStr 2249 // 2250 // String path = "entry:data_"+detStr+":thumbnail:type" 2251 // Variable num=60 2252 // return(V_getStringFromHDF5(fname,path,num)) 2253 //End 2254 // 2255 // 2256 2257 -
sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_HDF5_Write.ipf
r983 r990 165 165 //////// TOP LEVEL 166 166 167 // nexus version used for definitions168 Function V_writeNeXus_version(fname,str)169 String fname,str170 171 // String path = "entry:NeXus_version"172 173 Make/O/T/N=1 tmpTW174 String groupName = "/entry" //175 String varName = "NeXus_version"176 tmpTW[0] = str //177 178 variable err179 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW)180 if(err)181 Print "HDF write err = ",err182 endif183 184 // now be sure to kill the data folder to force a re-read of the data next time this file is read in185 // err = V_KillNamedDataFolder(fname)186 // if(err)187 // Print "DataFolder kill err = ",err188 // endif189 190 return(err)191 End167 //// nexus version used for definitions 168 //Function V_writeNeXus_version(fname,str) 169 // String fname,str 170 // 171 //// String path = "entry:NeXus_version" 172 // 173 // Make/O/T/N=1 tmpTW 174 // String groupName = "/entry" // 175 // String varName = "NeXus_version" 176 // tmpTW[0] = str // 177 // 178 // variable err 179 // err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 180 // if(err) 181 // Print "HDF write err = ",err 182 // endif 183 // 184 // // now be sure to kill the data folder to force a re-read of the data next time this file is read in 185 //// err = V_KillNamedDataFolder(fname) 186 //// if(err) 187 //// Print "DataFolder kill err = ",err 188 //// endif 189 // 190 // return(err) 191 //End 192 192 193 193 // TODO -- not mine, added somewhere by Nexus writer? … … 401 401 return(err) 402 402 End 403 404 // file write time (what is this??) 405 // TODO - figure out if this is supposed to be an integer or text (ISO) 406 Function V_writeFileWriteTime(fname,val) 407 String fname 408 Variable val 409 410 String path = "entry:file_time" 411 412 Make/O/D/N=1 wTmpWrite 413 // Make/O/R/N=1 wTmpWrite 414 String groupName = "/entry" 415 String varName = "file_time" 416 wTmpWrite[0] = val 417 418 variable err 419 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 420 if(err) 421 Print "HDF write err = ",err 422 endif 423 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 424 // err = V_KillNamedDataFolder(fname) 425 // if(err) 426 // Print "DataFolder kill err = ",err 427 // endif 428 return(err) 429 End 403 404 405 // file name 406 Function V_writeFile_name(fname,str) 407 String fname,str 408 409 // String path = "entry:file_name" 410 411 Make/O/T/N=1 tmpTW 412 String groupName = "/entry" // 413 String varName = "file_name" 414 tmpTW[0] = str // 415 416 variable err 417 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 418 if(err) 419 Print "HDF write err = ",err 420 endif 421 422 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 423 // err = V_KillNamedDataFolder(fname) 424 // if(err) 425 // Print "DataFolder kill err = ",err 426 // endif 427 428 return(err) 429 End 430 431 432 //// file write time (what is this??) 433 //// TODO - figure out if this is supposed to be an integer or text (ISO) 434 //Function V_writeFileWriteTime(fname,val) 435 // String fname 436 // Variable val 437 // 438 // String path = "entry:file_time" 439 // 440 // Make/O/D/N=1 wTmpWrite 441 //// Make/O/R/N=1 wTmpWrite 442 // String groupName = "/entry" 443 // String varName = "file_time" 444 // wTmpWrite[0] = val 445 // 446 // variable err 447 // err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 448 // if(err) 449 // Print "HDF write err = ",err 450 // endif 451 // // now be sure to kill the data folder to force a re-read of the data next time this file is read in 452 //// err = V_KillNamedDataFolder(fname) 453 //// if(err) 454 //// Print "DataFolder kill err = ",err 455 //// endif 456 // return(err) 457 //End 430 458 431 459 // … … 729 757 end 730 758 731 759 // integer value 732 760 Function V_writeIntegral(fname,val) 733 761 String fname … … 736 764 // String path = "entry:control:integral" 737 765 738 Make/O/ D/N=1 wTmpWrite766 Make/O/I/N=1 wTmpWrite 739 767 // Make/O/R/N=1 wTmpWrite 740 768 String groupName = "/entry/control" … … 782 810 783 811 //monitor count 812 // integer value 784 813 Function V_writeMonitorCount(fname,val) 785 814 String fname … … 788 817 // String path = "entry:control:monitor_counts" 789 818 790 Make/O/ D/N=1 wTmpWrite819 Make/O/I/N=1 wTmpWrite 791 820 // Make/O/R/N=1 wTmpWrite 792 821 String groupName = "/entry/control" … … 807 836 end 808 837 838 //integer value 809 839 Function V_writeMonitor_preset(fname,val) 810 840 String fname … … 813 843 // String path = "entry:control:monitor_preset" 814 844 815 Make/O/ D/N=1 wTmpWrite845 Make/O/I/N=1 wTmpWrite 816 846 // Make/O/R/N=1 wTmpWrite 817 847 String groupName = "/entry/control" … … 832 862 end 833 863 834 Function V_writePreset(fname,val) 835 String fname 836 Variable val 864 Function V_writePreset(fname,str) 865 String fname,str 837 866 838 867 // String path = "entry:control:preset" 839 840 Make/O/D/N=1 wTmpWrite 841 // Make/O/R/N=1 wTmpWrite 868 869 Make/O/T/N=1 tmpTW 842 870 String groupName = "/entry/control" 843 871 String varName = "preset" 844 wTmpWrite[0] = val845 846 variable err 847 err = V_Write WaveToHDF(fname, groupName, varName, wTmpWrite)872 tmpTW[0] = str // 873 874 variable err 875 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 848 876 if(err) 849 877 Print "HDF write err = ",err … … 941 969 942 970 ////// INSTRUMENT/ATTENUATOR 943 // TODO 944 // attenuator number -- for VSANS I think I want this to be some "binary" representation 945 // of 4 plates in/out - so this may be an integer-> binary, or a text string (4 char) 946 Function V_writeAtten_number(fname,val) 947 String fname 948 Variable val 949 950 // String path = "entry:instrument:attenuator:atten_number" 951 952 Make/O/D/N=1 wTmpWrite 953 // Make/O/R/N=1 wTmpWrite 954 String groupName = "/entry/instrument/attenuator" 955 String varName = "atten_number" 956 wTmpWrite[0] = val 957 958 variable err 959 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 960 if(err) 961 Print "HDF write err = ",err 962 endif 963 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 964 // err = V_KillNamedDataFolder(fname) 965 // if(err) 966 // Print "DataFolder kill err = ",err 967 // endif 968 return(err) 969 end 971 // TODO - verify the format of how these are written out to the file 972 // 973 //Function V_writeAtten_number(fname,val) 974 // String fname 975 // Variable val 976 // 977 //// String path = "entry:instrument:attenuator:atten_number" 978 // 979 // Make/O/D/N=1 wTmpWrite 980 //// Make/O/R/N=1 wTmpWrite 981 // String groupName = "/entry/instrument/attenuator" 982 // String varName = "atten_number" 983 // wTmpWrite[0] = val 984 // 985 // variable err 986 // err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 987 // if(err) 988 // Print "HDF write err = ",err 989 // endif 990 // // now be sure to kill the data folder to force a re-read of the data next time this file is read in 991 //// err = V_KillNamedDataFolder(fname) 992 //// if(err) 993 //// Print "DataFolder kill err = ",err 994 //// endif 995 // return(err) 996 //end 970 997 971 998 … … 1024 1051 end 1025 1052 1053 // desired thickness of attenuation 1054 Function V_writeAttenuator_desiredThick(fname,val) 1055 String fname 1056 Variable val 1057 1058 // String path = "entry:instrument:attenuator:attenuator_transmission_error" 1059 1060 Make/O/D/N=1 wTmpWrite 1061 // Make/O/R/N=1 wTmpWrite 1062 String groupName = "/entry/instrument/attenuator" 1063 String varName = "desired_thickness" 1064 wTmpWrite[0] = val 1065 1066 variable err 1067 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 1068 if(err) 1069 Print "HDF write err = ",err 1070 endif 1071 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 1072 // err = V_KillNamedDataFolder(fname) 1073 // if(err) 1074 // Print "DataFolder kill err = ",err 1075 // endif 1076 return(err) 1077 end 1078 1026 1079 1027 1080 // distance from the attenuator to the sample (units??) … … 1051 1104 end 1052 1105 1053 1054 // attenuator index, to use in the lookup table of transmission values 1055 Function V_writeAttenIndex(fname,val) 1056 String fname 1057 Variable val 1058 1059 // String path = "entry:instrument:attenuator:index" 1060 1061 Make/O/D/N=1 wTmpWrite 1062 // Make/O/R/N=1 wTmpWrite 1106 // table of the attenuation factor error 1107 Function V_writeAttenIndex_table_err(fname,inW) 1108 String fname 1109 Wave inW 1110 1111 // String path = "entry:instrument:attenuator:index_table" 1112 1113 Duplicate/O inW wTmpWrite 1114 // then use redimension as needed to cast the wave to write to the specified type 1115 // see WaveType for the proper codes 1116 // Redimension/T=() wTmpWrite 1117 // -- May also need to check the dimension(s) before writing (don't trust the input) 1063 1118 String groupName = "/entry/instrument/attenuator" 1064 String varName = "index" 1065 wTmpWrite[0] = val 1066 1067 variable err 1068 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 1069 if(err) 1070 Print "HDF write err = ",err 1071 endif 1072 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 1073 // err = V_KillNamedDataFolder(fname) 1074 // if(err) 1075 // Print "DataFolder kill err = ",err 1076 // endif 1077 return(err) 1078 end 1079 1119 String varName = "index_error_table" 1120 1121 variable err 1122 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 1123 if(err) 1124 Print "HDF write err = ",err 1125 endif 1126 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 1127 // err = V_KillNamedDataFolder(fname) 1128 // if(err) 1129 // Print "DataFolder kill err = ",err 1130 // endif 1131 return(err) 1132 end 1080 1133 1081 1134 // table of the attenuation factor … … 1108 1161 1109 1162 1110 // status "in or out" 1111 Function V_writeAttenStatus(fname,str) 1112 String fname,str 1113 1114 // String path = "entry:instrument:attenuator:status" 1115 1116 Make/O/T/N=1 tmpTW 1117 String groupName = "/entry/instrument/attenuator" // 1118 String varName = "status" 1119 tmpTW[0] = str // 1120 1121 variable err 1122 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 1123 if(err) 1124 Print "HDF write err = ",err 1125 endif 1126 1127 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 1128 // err = V_KillNamedDataFolder(fname) 1129 // if(err) 1130 // Print "DataFolder kill err = ",err 1131 // endif 1132 1133 return(err) 1134 End 1163 //// status "in or out" 1164 //Function V_writeAttenStatus(fname,str) 1165 // String fname,str 1166 // 1167 //// String path = "entry:instrument:attenuator:status" 1168 // 1169 // Make/O/T/N=1 tmpTW 1170 // String groupName = "/entry/instrument/attenuator" // 1171 // String varName = "status" 1172 // tmpTW[0] = str // 1173 // 1174 // variable err 1175 // err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 1176 // if(err) 1177 // Print "HDF write err = ",err 1178 // endif 1179 // 1180 // // now be sure to kill the data folder to force a re-read of the data next time this file is read in 1181 //// err = V_KillNamedDataFolder(fname) 1182 //// if(err) 1183 //// Print "DataFolder kill err = ",err 1184 //// endif 1185 // 1186 // return(err) 1187 //End 1188 1189 // number of attenuators actually dropped in 1190 // an integer value 1191 Function V_writeAtten_num_dropped(fname,val) 1192 String fname 1193 Variable val 1194 1195 // String path = "entry:instrument:attenuator:thickness" 1196 1197 Make/O/I/N=1 wTmpWrite 1198 // Make/O/R/N=1 wTmpWrite 1199 String groupName = "/entry/instrument/attenuator" 1200 String varName = "num_atten_dropped" 1201 wTmpWrite[0] = val 1202 1203 variable err 1204 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 1205 if(err) 1206 Print "HDF write err = ",err 1207 endif 1208 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 1209 // err = V_KillNamedDataFolder(fname) 1210 // if(err) 1211 // Print "DataFolder kill err = ",err 1212 // endif 1213 return(err) 1214 end 1135 1215 1136 1216 // thickness of the attenuator (PMMA) - units?? … … 1315 1395 end 1316 1396 1397 // integer value 1317 1398 Function V_writeChopperSlits(fname,val) 1318 1399 String fname … … 1321 1402 // String path = "entry:instrument:beam:chopper:slits" 1322 1403 1323 Make/O/ D/N=1 wTmpWrite1404 Make/O/I/N=1 wTmpWrite 1324 1405 // Make/O/R/N=1 wTmpWrite 1325 1406 String groupName = "/entry/instrument/beam/chopper" … … 1593 1674 end 1594 1675 1676 1677 1678 1679 1680 1595 1681 // instrument/beam/monochromator/crystal (data folder) 1596 1682 Function V_writeCrystalEnergy(fname,val) … … 1995 2081 End 1996 2082 1997 Function V_writeVSTable (fname,inW)2083 Function V_writeVSTable_parameters(fname,inW) 1998 2084 String fname 1999 2085 Wave inW … … 2007 2093 // -- May also need to check the dimension(s) before writing (don't trust the input) 2008 2094 String groupName = "/entry/instrument/beam/monochromator/velocity_selector" 2009 String varName = "table"2010 2011 variable err2012 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite)2013 if(err)2014 Print "HDF write err = ",err2015 endif2016 // now be sure to kill the data folder to force a re-read of the data next time this file is read in2017 // err = V_KillNamedDataFolder(fname)2018 // if(err)2019 // Print "DataFolder kill err = ",err2020 // endif2021 return(err)2022 end2023 2024 // TODO -- this is not the correct data type??? what does this mean??2025 Function V_writeVSTable_parameters(fname,val)2026 String fname2027 Variable val2028 2029 String path = "entry:instrument:beam:monochromator:velocity_selector:table_parameters"2030 2031 Make/O/D/N=1 wTmpWrite2032 // Make/O/R/N=1 wTmpWrite2033 String groupName = "/entry/instrument/beam/monochromator/velocity_selector"2034 2095 String varName = "table_parameters" 2035 wTmpWrite[0] = val 2036 2037 variable err2038 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite)2039 if(err)2040 Print "HDF write err = ",err2041 endif2042 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 2043 // err = V_KillNamedDataFolder(fname)2044 // if(err)2045 // Print "DataFolder kill err = ",err2046 // endif 2047 return(err) 2048 end 2049 2096 2097 variable err 2098 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 2099 if(err) 2100 Print "HDF write err = ",err 2101 endif 2102 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 2103 // err = V_KillNamedDataFolder(fname) 2104 // if(err) 2105 // Print "DataFolder kill err = ",err 2106 // endif 2107 return(err) 2108 end 2109 2110 // TODO -- this may not exist for VSANS 2050 2111 Function V_writeVS_tilt(fname,val) 2051 2112 String fname … … 2301 2362 2302 2363 // instrument/beam/polarizer_analyzer (data folder) 2364 // integer value 2303 2365 Function V_writePolAnaCell_index(fname,val) 2304 2366 String fname … … 2307 2369 // String path = "entry:instrument:beam:polarizer_analyzer:cell_index" 2308 2370 2309 Make/O/ D/N=1 wTmpWrite2371 Make/O/I/N=1 wTmpWrite 2310 2372 // Make/O/R/N=1 wTmpWrite 2311 2373 String groupName = "/entry/instrument/beam/polarizer_analyzer" … … 2478 2540 End 2479 2541 2542 2543 2544 2480 2545 2481 2546 /////// INSTRUMENT/BEAM MONITORS 2482 2547 2483 2548 //beam_monitor_low (data folder) 2549 // integer value 2484 2550 Function V_writeBeamMonLowData(fname,val) 2485 2551 String fname … … 2488 2554 // String path = "entry:instrument:beam_monitor_low:data" 2489 2555 2490 Make/O/ D/N=1 wTmpWrite2556 Make/O/I/N=1 wTmpWrite 2491 2557 // Make/O/R/N=1 wTmpWrite 2492 2558 String groupName = "/entry/instrument/beam_monitor_low" … … 2608 2674 2609 2675 //beam_monitor_norm (data folder) 2676 // integer value 2610 2677 Function V_writeBeamMonNormData(fname,val) 2611 2678 String fname … … 2614 2681 // String path = "entry:instrument:beam_monitor_norm:data" 2615 2682 2616 Make/O/ D/N=1 wTmpWrite2683 Make/O/I/N=1 wTmpWrite 2617 2684 // Make/O/R/N=1 wTmpWrite 2618 2685 String groupName = "/entry/instrument/beam_monitor_norm" … … 2733 2800 End 2734 2801 2735 //beam_stop (data folder) 2736 Function V_writeBeamStopDescription(fname,str) 2802 2803 //beam_stop C2 (data folder) 2804 Function V_writeBeamStopC2Description(fname,str) 2737 2805 String fname,str 2738 2806 … … 2740 2808 2741 2809 Make/O/T/N=1 tmpTW 2742 String groupName = "/entry/instrument/beam_stop " //2810 String groupName = "/entry/instrument/beam_stop_C2" // 2743 2811 String varName = "description" 2744 2812 tmpTW[0] = str // … … 2759 2827 End 2760 2828 2761 Function V_writeBeamStop Dist_to_det(fname,val)2829 Function V_writeBeamStopC2Dist_to_det(fname,val) 2762 2830 String fname 2763 2831 Variable val … … 2767 2835 Make/O/D/N=1 wTmpWrite 2768 2836 // Make/O/R/N=1 wTmpWrite 2769 String groupName = "/entry/instrument/beam_stop "2837 String groupName = "/entry/instrument/beam_stop_C2" 2770 2838 String varName = "distance_to_detector" 2771 2839 wTmpWrite[0] = val … … 2784 2852 End 2785 2853 2786 Function V_writeBeamStop_x_pos(fname,val) 2854 // is this the index of which size beam stop is in position? 2855 // integer value 2856 Function V_writeBeamStopC2num_stop(fname,val) 2857 String fname 2858 Variable val 2859 2860 // String path = "entry:instrument:beam_stop:distance_to_detector" 2861 2862 Make/O/I/N=1 wTmpWrite 2863 // Make/O/R/N=1 wTmpWrite 2864 String groupName = "/entry/instrument/beam_stop_C2" 2865 String varName = "num_beamstops" 2866 wTmpWrite[0] = val 2867 2868 variable err 2869 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 2870 if(err) 2871 Print "HDF write err = ",err 2872 endif 2873 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 2874 // err = V_KillNamedDataFolder(fname) 2875 // if(err) 2876 // Print "DataFolder kill err = ",err 2877 // endif 2878 return(err) 2879 End 2880 2881 Function V_writeBeamStopC2_x_pos(fname,val) 2787 2882 String fname 2788 2883 Variable val … … 2792 2887 Make/O/D/N=1 wTmpWrite 2793 2888 // Make/O/R/N=1 wTmpWrite 2794 String groupName = "/entry/instrument/beam_stop "2889 String groupName = "/entry/instrument/beam_stop_C2" 2795 2890 String varName = "x_pos" 2796 2891 wTmpWrite[0] = val … … 2809 2904 End 2810 2905 2811 Function V_writeBeamStop _y_pos(fname,val)2906 Function V_writeBeamStopC2_y_pos(fname,val) 2812 2907 String fname 2813 2908 Variable val … … 2817 2912 Make/O/D/N=1 wTmpWrite 2818 2913 // Make/O/R/N=1 wTmpWrite 2819 String groupName = "/entry/instrument/beam_stop "2914 String groupName = "/entry/instrument/beam_stop_C2" 2820 2915 String varName = "y_pos" 2821 2916 wTmpWrite[0] = val … … 2834 2929 End 2835 2930 2931 2932 // beam stop C2 (shape) 2933 Function V_writeBeamStopC2_height(fname,val) 2934 String fname 2935 Variable val 2936 2937 // String path = "entry:instrument:beam_stop:y0" 2938 2939 Make/O/D/N=1 wTmpWrite 2940 // Make/O/R/N=1 wTmpWrite 2941 String groupName = "/entry/instrument/beam_stop_C2/shape" 2942 String varName = "height" 2943 wTmpWrite[0] = val 2944 2945 variable err 2946 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 2947 if(err) 2948 Print "HDF write err = ",err 2949 endif 2950 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 2951 // err = V_KillNamedDataFolder(fname) 2952 // if(err) 2953 // Print "DataFolder kill err = ",err 2954 // endif 2955 return(err) 2956 End 2957 2958 Function V_writeBeamStopC2_shape(fname,str) 2959 String fname,str 2960 2961 // String path = "entry:instrument:beam_stop:description" 2962 2963 Make/O/T/N=1 tmpTW 2964 String groupName = "/entry/instrument/beam_stop_C2/shape" // 2965 String varName = "shape" 2966 tmpTW[0] = str // 2967 2968 variable err 2969 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 2970 if(err) 2971 Print "HDF write err = ",err 2972 endif 2973 2974 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 2975 // err = V_KillNamedDataFolder(fname) 2976 // if(err) 2977 // Print "DataFolder kill err = ",err 2978 // endif 2979 2980 return(err) 2981 End 2982 2983 // this is diameter if shape=CIRCLE 2984 Function V_writeBeamStopC2_size(fname,val) 2985 String fname 2986 Variable val 2987 2988 // String path = "entry:instrument:beam_stop:y0" 2989 2990 Make/O/D/N=1 wTmpWrite 2991 // Make/O/R/N=1 wTmpWrite 2992 String groupName = "/entry/instrument/beam_stop_C2/shape" 2993 String varName = "size" 2994 wTmpWrite[0] = val 2995 2996 variable err 2997 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 2998 if(err) 2999 Print "HDF write err = ",err 3000 endif 3001 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3002 // err = V_KillNamedDataFolder(fname) 3003 // if(err) 3004 // Print "DataFolder kill err = ",err 3005 // endif 3006 return(err) 3007 End 3008 3009 Function V_writeBeamStopC2_width(fname,val) 3010 String fname 3011 Variable val 3012 3013 // String path = "entry:instrument:beam_stop:y0" 3014 3015 Make/O/D/N=1 wTmpWrite 3016 // Make/O/R/N=1 wTmpWrite 3017 String groupName = "/entry/instrument/beam_stop_C2/shape" 3018 String varName = "width" 3019 wTmpWrite[0] = val 3020 3021 variable err 3022 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3023 if(err) 3024 Print "HDF write err = ",err 3025 endif 3026 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3027 // err = V_KillNamedDataFolder(fname) 3028 // if(err) 3029 // Print "DataFolder kill err = ",err 3030 // endif 3031 return(err) 3032 End 3033 3034 // beam stop C3 (data folder) 3035 Function V_writeBeamStopC3Description(fname,str) 3036 String fname,str 3037 3038 // String path = "entry:instrument:beam_stop:description" 3039 3040 Make/O/T/N=1 tmpTW 3041 String groupName = "/entry/instrument/beam_stop_C3" // 3042 String varName = "description" 3043 tmpTW[0] = str // 3044 3045 variable err 3046 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 3047 if(err) 3048 Print "HDF write err = ",err 3049 endif 3050 3051 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3052 // err = V_KillNamedDataFolder(fname) 3053 // if(err) 3054 // Print "DataFolder kill err = ",err 3055 // endif 3056 3057 return(err) 3058 End 3059 3060 Function V_writeBeamStopC3Dist_to_det(fname,val) 3061 String fname 3062 Variable val 3063 3064 // String path = "entry:instrument:beam_stop:distance_to_detector" 3065 3066 Make/O/D/N=1 wTmpWrite 3067 // Make/O/R/N=1 wTmpWrite 3068 String groupName = "/entry/instrument/beam_stop_C3" 3069 String varName = "distance_to_detector" 3070 wTmpWrite[0] = val 3071 3072 variable err 3073 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3074 if(err) 3075 Print "HDF write err = ",err 3076 endif 3077 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3078 // err = V_KillNamedDataFolder(fname) 3079 // if(err) 3080 // Print "DataFolder kill err = ",err 3081 // endif 3082 return(err) 3083 End 3084 3085 // integer value 3086 Function V_writeBeamStopC3num_stop(fname,val) 3087 String fname 3088 Variable val 3089 3090 // String path = "entry:instrument:beam_stop:distance_to_detector" 3091 3092 Make/O/I/N=1 wTmpWrite 3093 // Make/O/R/N=1 wTmpWrite 3094 String groupName = "/entry/instrument/beam_stop_C3" 3095 String varName = "num_beamstops" 3096 wTmpWrite[0] = val 3097 3098 variable err 3099 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3100 if(err) 3101 Print "HDF write err = ",err 3102 endif 3103 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3104 // err = V_KillNamedDataFolder(fname) 3105 // if(err) 3106 // Print "DataFolder kill err = ",err 3107 // endif 3108 return(err) 3109 End 3110 3111 Function V_writeBeamStopC3_x_pos(fname,val) 3112 String fname 3113 Variable val 3114 3115 // String path = "entry:instrument:beam_stop:x0" 3116 3117 Make/O/D/N=1 wTmpWrite 3118 // Make/O/R/N=1 wTmpWrite 3119 String groupName = "/entry/instrument/beam_stop_C3" 3120 String varName = "x_pos" 3121 wTmpWrite[0] = val 3122 3123 variable err 3124 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3125 if(err) 3126 Print "HDF write err = ",err 3127 endif 3128 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3129 // err = V_KillNamedDataFolder(fname) 3130 // if(err) 3131 // Print "DataFolder kill err = ",err 3132 // endif 3133 return(err) 3134 End 3135 3136 Function V_writeBeamStopC3_y_pos(fname,val) 3137 String fname 3138 Variable val 3139 3140 // String path = "entry:instrument:beam_stop:y0" 3141 3142 Make/O/D/N=1 wTmpWrite 3143 // Make/O/R/N=1 wTmpWrite 3144 String groupName = "/entry/instrument/beam_stop_C3" 3145 String varName = "y_pos" 3146 wTmpWrite[0] = val 3147 3148 variable err 3149 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3150 if(err) 3151 Print "HDF write err = ",err 3152 endif 3153 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3154 // err = V_KillNamedDataFolder(fname) 3155 // if(err) 3156 // Print "DataFolder kill err = ",err 3157 // endif 3158 return(err) 3159 End 3160 3161 3162 // beam stop C3 (shape) 3163 Function V_writeBeamStopC3_height(fname,val) 3164 String fname 3165 Variable val 3166 3167 // String path = "entry:instrument:beam_stop:y0" 3168 3169 Make/O/D/N=1 wTmpWrite 3170 // Make/O/R/N=1 wTmpWrite 3171 String groupName = "/entry/instrument/beam_stop_C3/shape" 3172 String varName = "height" 3173 wTmpWrite[0] = val 3174 3175 variable err 3176 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3177 if(err) 3178 Print "HDF write err = ",err 3179 endif 3180 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3181 // err = V_KillNamedDataFolder(fname) 3182 // if(err) 3183 // Print "DataFolder kill err = ",err 3184 // endif 3185 return(err) 3186 End 3187 3188 Function V_writeBeamStopC3_shape(fname,str) 3189 String fname,str 3190 3191 // String path = "entry:instrument:beam_stop:description" 3192 3193 Make/O/T/N=1 tmpTW 3194 String groupName = "/entry/instrument/beam_stop_C3/shape" // 3195 String varName = "shape" 3196 tmpTW[0] = str // 3197 3198 variable err 3199 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 3200 if(err) 3201 Print "HDF write err = ",err 3202 endif 3203 3204 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3205 // err = V_KillNamedDataFolder(fname) 3206 // if(err) 3207 // Print "DataFolder kill err = ",err 3208 // endif 3209 3210 return(err) 3211 End 3212 3213 // this is diameter if shape=CIRCLE 3214 Function V_writeBeamStopC3_size(fname,val) 3215 String fname 3216 Variable val 3217 3218 // String path = "entry:instrument:beam_stop:y0" 3219 3220 Make/O/D/N=1 wTmpWrite 3221 // Make/O/R/N=1 wTmpWrite 3222 String groupName = "/entry/instrument/beam_stop_C3/shape" 3223 String varName = "size" 3224 wTmpWrite[0] = val 3225 3226 variable err 3227 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3228 if(err) 3229 Print "HDF write err = ",err 3230 endif 3231 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3232 // err = V_KillNamedDataFolder(fname) 3233 // if(err) 3234 // Print "DataFolder kill err = ",err 3235 // endif 3236 return(err) 3237 End 3238 3239 Function V_writeBeamStopC3_width(fname,val) 3240 String fname 3241 Variable val 3242 3243 // String path = "entry:instrument:beam_stop:y0" 3244 3245 Make/O/D/N=1 wTmpWrite 3246 // Make/O/R/N=1 wTmpWrite 3247 String groupName = "/entry/instrument/beam_stop_C3/shape" 3248 String varName = "width" 3249 wTmpWrite[0] = val 3250 3251 variable err 3252 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3253 if(err) 3254 Print "HDF write err = ",err 3255 endif 3256 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3257 // err = V_KillNamedDataFolder(fname) 3258 // if(err) 3259 // Print "DataFolder kill err = ",err 3260 // endif 3261 return(err) 3262 End 3263 3264 3265 2836 3266 //// INSTRUMENT/COLLIMATOR 2837 //collimator (data folder) 2838 Function V_writeNumberOfGuides(fname,val) 2839 String fname 2840 Variable val 2841 3267 //collimator (data folder) -- this is a TEXT field 3268 Function V_writeNumberOfGuides(fname,str) 3269 String fname,str 3270 2842 3271 // String path = "entry:instrument:collimator:number_guides" 2843 2844 Make/O/D/N=1 wTmpWrite 2845 // Make/O/R/N=1 wTmpWrite 3272 3273 Make/O/T/N=1 tmpTW 2846 3274 String groupName = "/entry/instrument/collimator" 2847 3275 String varName = "number_guides" 2848 wTmpWrite[0] = val 2849 2850 variable err 2851 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 2852 if(err) 2853 Print "HDF write err = ",err 2854 endif 2855 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 2856 // err = V_KillNamedDataFolder(fname) 2857 // if(err) 2858 // Print "DataFolder kill err = ",err 2859 // endif 2860 return(err) 2861 End 3276 tmpTW[0] = str // 3277 3278 variable err 3279 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 3280 if(err) 3281 Print "HDF write err = ",err 3282 endif 3283 3284 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3285 // err = V_KillNamedDataFolder(fname) 3286 // if(err) 3287 // Print "DataFolder kill err = ",err 3288 // endif 3289 3290 return(err) 3291 End 3292 2862 3293 2863 3294 // geometry (data folder) … … 2941 3372 2942 3373 // converging_slits (not used) 3374 3375 3376 2943 3377 2944 3378 … … 3070 3504 End 3071 3505 3072 3506 // integer value 3073 3507 Function V_writeDet_pixel_num_x(fname,detStr,val) 3074 3508 String fname,detStr … … 3077 3511 // String path = "entry:instrument:detector_"+detStr+":pixel_nnum_x" 3078 3512 3079 Make/O/ D/N=1 wTmpWrite3513 Make/O/I/N=1 wTmpWrite 3080 3514 // Make/O/R/N=1 wTmpWrite 3081 3515 String groupName = "/entry/instrument/detector_"+detStr … … 3096 3530 End 3097 3531 3532 // integer value 3098 3533 Function V_writeDet_pixel_num_y(fname,detStr,val) 3099 3534 String fname,detStr … … 3102 3537 // String path = "entry:instrument:detector_"+detStr+":pixel_num_y" 3103 3538 3104 Make/O/ D/N=1 wTmpWrite3539 Make/O/I/N=1 wTmpWrite 3105 3540 // Make/O/R/N=1 wTmpWrite 3106 3541 String groupName = "/entry/instrument/detector_"+detStr … … 3121 3556 End 3122 3557 3123 // only defined for the "B" detector, and only to satisfy NXsas 3124 Function V_writeDet_azimuthalAngle(fname,detStr,val) 3558 //// only defined for the "B" detector, and only to satisfy NXsas 3559 //Function V_writeDet_azimuthalAngle(fname,detStr,val) 3560 // String fname,detStr 3561 // Variable val 3562 // 3563 // if(cmpstr(detStr,"B") == 0) 3564 //// String path = "entry:instrument:detector_"+detStr+":azimuthal_angle" 3565 // 3566 // Make/O/D/N=1 wTmpWrite 3567 // // Make/O/R/N=1 wTmpWrite 3568 // String groupName = "/entry/instrument/detector_"+detStr 3569 // String varName = "azimuthal_angle" 3570 // wTmpWrite[0] = val 3571 // 3572 // variable err 3573 // err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3574 // if(err) 3575 // Print "HDF write err = ",err 3576 // endif 3577 // // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3578 //// err = V_KillNamedDataFolder(fname) 3579 //// if(err) 3580 //// Print "DataFolder kill err = ",err 3581 //// endif 3582 // return(err) 3583 // else 3584 // return(0) 3585 // endif 3586 //End 3587 3588 Function V_writeDet_beam_center_x(fname,detStr,val) 3125 3589 String fname,detStr 3126 3590 Variable val 3127 3591 3592 // String path = "entry:instrument:detector_"+detStr+":beam_center_x" 3593 3594 Make/O/D/N=1 wTmpWrite 3595 // Make/O/R/N=1 wTmpWrite 3596 String groupName = "/entry/instrument/detector_"+detStr 3597 String varName = "beam_center_x" 3598 wTmpWrite[0] = val 3599 3600 variable err 3601 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3602 if(err) 3603 Print "HDF write err = ",err 3604 endif 3605 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3606 // err = V_KillNamedDataFolder(fname) 3607 // if(err) 3608 // Print "DataFolder kill err = ",err 3609 // endif 3610 return(err) 3611 End 3612 3613 // fname is a local WORK folder 3614 Function V_putDet_beam_center_x(fname,detStr,val) 3615 String fname,detStr 3616 Variable val 3617 3618 //root:Packages:NIST:VSANS:RAW:entry:entry:instrument:detector_FB:beam_center_x 3619 String path = "root:Packages:NIST:VSANS:"+fname+":entry:" 3620 path += "entry:instrument:detector_"+detStr+":beam_center_x" 3621 3622 Wave/Z w = $path 3623 if(waveExists(w) == 0) 3624 return(1) 3625 else 3626 w[0] = val 3627 return(0) 3628 endif 3629 3630 End 3631 3632 Function V_writeDet_beam_center_y(fname,detStr,val) 3633 String fname,detStr 3634 Variable val 3635 3636 // String path = "entry:instrument:detector_"+detStr+":beam_center_y" 3637 3638 Make/O/D/N=1 wTmpWrite 3639 // Make/O/R/N=1 wTmpWrite 3640 String groupName = "/entry/instrument/detector_"+detStr 3641 String varName = "beam_center_y" 3642 wTmpWrite[0] = val 3643 3644 variable err 3645 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3646 if(err) 3647 Print "HDF write err = ",err 3648 endif 3649 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3650 // err = V_KillNamedDataFolder(fname) 3651 // if(err) 3652 // Print "DataFolder kill err = ",err 3653 // endif 3654 return(err) 3655 End 3656 3657 3658 // fname is a local WORK folder 3659 Function V_putDet_beam_center_y(fname,detStr,val) 3660 String fname,detStr 3661 Variable val 3662 3663 //root:Packages:NIST:VSANS:RAW:entry:entry:instrument:detector_FB:beam_center_y 3664 String path = "root:Packages:NIST:VSANS:"+fname+":entry:" 3665 path += "entry:instrument:detector_"+detStr+":beam_center_y" 3666 3667 Wave/Z w = $path 3668 if(waveExists(w) == 0) 3669 return(1) 3670 else 3671 w[0] = val 3672 return(0) 3673 endif 3674 3675 End 3676 3677 3678 // TODO -- write this function to return a WAVE with the data 3679 // either as a wave reference, or as an input parameter 3680 Function V_writeDetectorData(fname,detStr,inW) 3681 String fname,detStr 3682 Wave inW 3683 3684 // String path = "entry:instrument:detector_"+detStr+":data" 3685 3686 Duplicate/O inW wTmpWrite 3687 // then use redimension as needed to cast the wave to write to the specified type 3688 // see WaveType for the proper codes 3689 // Redimension/T=() wTmpWrite 3690 // -- May also need to check the dimension(s) before writing (don't trust the input) 3691 String groupName = "/entry/instrument/detector_"+detStr 3692 String varName = "data" 3693 3694 variable err 3695 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3696 if(err) 3697 Print "HDF write err = ",err 3698 endif 3699 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3700 // err = V_KillNamedDataFolder(fname) 3701 // if(err) 3702 // Print "DataFolder kill err = ",err 3703 // endif 3704 return(err) 3705 End 3706 3707 3708 3709 ///////////////////////// 3710 3711 3712 // TODO -- write this function to return a WAVE with the data 3713 // either as a wave reference, or as an input parameter 3714 // ALSO -- the "B" deadtime will be a single value (probably) 3715 // but the tube banks will be 1D arrays of values, one per tube 3716 Function V_writeDetector_deadtime(fname,detStr,inW) 3717 String fname,detStr 3718 Wave inW 3719 3720 // String path = "entry:instrument:detector_"+detStr+":dead_time" 3128 3721 if(cmpstr(detStr,"B") == 0) 3129 // String path = "entry:instrument:detector_"+detStr+":azimuthal_angle" 3722 DoAlert 0,"Bad call to V_writeDetector_deadtime" 3723 return(0) 3724 else 3725 3726 Duplicate/O inW wTmpWrite 3727 // then use redimension as needed to cast the wave to write to the specified type 3728 // see WaveType for the proper codes 3729 // Redimension/T=() wTmpWrite 3730 // -- May also need to check the dimension(s) before writing (don't trust the input) 3731 String groupName = "/entry/instrument/detector_"+detStr 3732 String varName = "dead_time" 3733 3734 variable err 3735 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3736 if(err) 3737 Print "HDF write err = ",err 3738 endif 3739 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3740 // err = V_KillNamedDataFolder(fname) 3741 // if(err) 3742 // Print "DataFolder kill err = ",err 3743 // endif 3744 return(err) 3745 endif 3746 End 3747 3748 // dead time, a single value, only for detB 3749 Function V_writeDetector_deadtime_B(fname,detStr,val) 3750 String fname,detStr 3751 variable val 3752 3753 // String path = "entry:instrument:detector_"+detStr+":dead_time" 3754 if(cmpstr(detStr,"B") == 0) 3130 3755 3131 3756 Make/O/D/N=1 wTmpWrite 3132 3757 // Make/O/R/N=1 wTmpWrite 3133 3758 String groupName = "/entry/instrument/detector_"+detStr 3134 String varName = "azimuthal_angle" 3759 String varName = "dead_time" 3760 wTmpWrite[0] = val 3761 3762 variable err 3763 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3764 if(err) 3765 Print "HDF write err = ",err 3766 endif 3767 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3768 // err = V_KillNamedDataFolder(fname) 3769 // if(err) 3770 // Print "DataFolder kill err = ",err 3771 // endif 3772 3773 return(err) 3774 else 3775 DoAlert 0,"Bad call to V_writeDetector_deadtime_B" 3776 return(0) 3777 endif 3778 End 3779 3780 Function V_writeDetDescription(fname,detStr,str) 3781 String fname,detStr,str 3782 3783 // String path = "entry:instrument:detector_"+detStr+":description" 3784 3785 Make/O/T/N=1 tmpTW 3786 String groupName = "/entry/instrument/detector_"+detStr // 3787 String varName = "description" 3788 tmpTW[0] = str // 3789 3790 variable err 3791 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 3792 if(err) 3793 Print "HDF write err = ",err 3794 endif 3795 3796 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3797 // err = V_KillNamedDataFolder(fname) 3798 // if(err) 3799 // Print "DataFolder kill err = ",err 3800 // endif 3801 3802 return(err) 3803 End 3804 3805 Function V_writeDet_distance(fname,detStr,val) 3806 String fname,detStr 3807 variable val 3808 3809 // String path = "entry:instrument:detector_"+detStr+":distance" 3810 3811 Make/O/D/N=1 wTmpWrite 3812 // Make/O/R/N=1 wTmpWrite 3813 String groupName = "/entry/instrument/detector_"+detStr 3814 String varName = "distance" 3815 wTmpWrite[0] = val 3816 3817 variable err 3818 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3819 if(err) 3820 Print "HDF write err = ",err 3821 endif 3822 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3823 // err = V_KillNamedDataFolder(fname) 3824 // if(err) 3825 // Print "DataFolder kill err = ",err 3826 // endif 3827 return(err) 3828 End 3829 3830 //// only defined for the "B" detector, and only to satisfy NXsas 3831 //Function V_writeDet_equatorial_angle(fname,detStr,val) 3832 // String fname,detStr 3833 // variable val 3834 // 3835 // if(cmpstr(detStr,"B") == 0) 3836 //// String path = "entry:instrument:detector_"+detStr+":equatorial_angle" 3837 // 3838 // Make/O/D/N=1 wTmpWrite 3839 // // Make/O/R/N=1 wTmpWrite 3840 // String groupName = "/entry/instrument/detector_"+detStr 3841 // String varName = "equatorial_angle" 3842 // wTmpWrite[0] = val 3843 // 3844 // variable err 3845 // err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3846 // if(err) 3847 // Print "HDF write err = ",err 3848 // endif 3849 // // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3850 //// err = V_KillNamedDataFolder(fname) 3851 //// if(err) 3852 //// Print "DataFolder kill err = ",err 3853 //// endif 3854 // return(err) 3855 // else 3856 // return(0) 3857 // endif 3858 //End 3859 3860 Function V_writeDetEventFileName(fname,detStr,str) 3861 String fname,detStr,str 3862 3863 // String path = "entry:instrument:detector_"+detStr+":event_file_name" 3864 3865 Make/O/T/N=1 tmpTW 3866 String groupName = "/entry/instrument/detector_"+detStr // 3867 String varName = "event_file_name" 3868 tmpTW[0] = str // 3869 3870 variable err 3871 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 3872 if(err) 3873 Print "HDF write err = ",err 3874 endif 3875 3876 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3877 // err = V_KillNamedDataFolder(fname) 3878 // if(err) 3879 // Print "DataFolder kill err = ",err 3880 // endif 3881 3882 return(err) 3883 End 3884 3885 Function V_writeDet_IntegratedCount(fname,detStr,val) 3886 String fname,detStr 3887 Variable val 3888 3889 // String path = "entry:instrument:detector_"+detStr+":integrated_count" 3890 3891 Make/O/D/N=1 wTmpWrite 3892 // Make/O/R/N=1 wTmpWrite 3893 String groupName = "/entry/instrument/detector_"+detStr 3894 String varName = "integrated_count" 3895 wTmpWrite[0] = val 3896 3897 variable err 3898 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3899 if(err) 3900 Print "HDF write err = ",err 3901 endif 3902 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3903 // err = V_KillNamedDataFolder(fname) 3904 // if(err) 3905 // Print "DataFolder kill err = ",err 3906 // endif 3907 return(err) 3908 End 3909 3910 Function V_writeDet_LateralOffset(fname,detStr,val) 3911 String fname,detStr 3912 Variable val 3913 3914 // String path = "entry:instrument:detector_"+detStr+":lateral_offset" 3915 3916 Make/O/D/N=1 wTmpWrite 3917 // Make/O/R/N=1 wTmpWrite 3918 String groupName = "/entry/instrument/detector_"+detStr 3919 String varName = "lateral_offset" 3920 wTmpWrite[0] = val 3921 3922 variable err 3923 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3924 if(err) 3925 Print "HDF write err = ",err 3926 endif 3927 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3928 // err = V_KillNamedDataFolder(fname) 3929 // if(err) 3930 // Print "DataFolder kill err = ",err 3931 // endif 3932 return(err) 3933 End 3934 3935 //Function V_writeDet_VerticalOffset(fname,detStr,val) 3936 // String fname,detStr 3937 // Variable val 3938 // 3939 //// String path = "entry:instrument:detector_"+detStr+":vertical_offset" 3940 // 3941 // Make/O/D/N=1 wTmpWrite 3942 //// Make/O/R/N=1 wTmpWrite 3943 // String groupName = "/entry/instrument/detector_"+detStr 3944 // String varName = "vertical_offset" 3945 // wTmpWrite[0] = val 3946 // 3947 // variable err 3948 // err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3949 // if(err) 3950 // Print "HDF write err = ",err 3951 // endif 3952 // // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3953 //// err = V_KillNamedDataFolder(fname) 3954 //// if(err) 3955 //// Print "DataFolder kill err = ",err 3956 //// endif 3957 // return(err) 3958 //End 3959 3960 //// only defined for the "B" detector, and only to satisfy NXsas 3961 //Function V_writeDet_polar_angle(fname,detStr,val) 3962 // String fname,detStr 3963 // Variable val 3964 // 3965 // if(cmpstr(detStr,"B") == 0) 3966 //// String path = "entry:instrument:detector_"+detStr+":polar_angle" 3967 // 3968 // Make/O/D/N=1 wTmpWrite 3969 // // Make/O/R/N=1 wTmpWrite 3970 // String groupName = "/entry/instrument/detector_"+detStr 3971 // String varName = "polar_angle" 3972 // wTmpWrite[0] = val 3973 // 3974 // variable err 3975 // err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3976 // if(err) 3977 // Print "HDF write err = ",err 3978 // endif 3979 // // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3980 //// err = V_KillNamedDataFolder(fname) 3981 //// if(err) 3982 //// Print "DataFolder kill err = ",err 3983 //// endif 3984 // return(err) 3985 // else 3986 // return(0) 3987 // endif 3988 //End 3989 3990 //// only defined for the "B" detector, and only to satisfy NXsas 3991 //Function V_writeDet_rotational_angle(fname,detStr,val) 3992 // String fname,detStr 3993 // Variable val 3994 // 3995 // if(cmpstr(detStr,"B") == 0) 3996 //// String path = "entry:instrument:detector_"+detStr+":rotational_angle" 3997 // 3998 // Make/O/D/N=1 wTmpWrite 3999 // // Make/O/R/N=1 wTmpWrite 4000 // String groupName = "/entry/instrument/detector_"+detStr 4001 // String varName = "rotational_angle" 4002 // wTmpWrite[0] = val 4003 // 4004 // variable err 4005 // err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 4006 // if(err) 4007 // Print "HDF write err = ",err 4008 // endif 4009 // // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4010 //// err = V_KillNamedDataFolder(fname) 4011 //// if(err) 4012 //// Print "DataFolder kill err = ",err 4013 //// endif 4014 // return(err) 4015 // else 4016 // return(0) 4017 // endif 4018 //End 4019 4020 Function V_writeDetSettings(fname,detStr,str) 4021 String fname,detStr,str 4022 4023 // String path = "entry:instrument:detector_"+detStr+":settings" 4024 4025 Make/O/T/N=1 tmpTW 4026 String groupName = "/entry/instrument/detector_"+detStr // 4027 String varName = "settings" 4028 tmpTW[0] = str // 4029 4030 variable err 4031 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 4032 if(err) 4033 Print "HDF write err = ",err 4034 endif 4035 4036 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4037 // err = V_KillNamedDataFolder(fname) 4038 // if(err) 4039 // Print "DataFolder kill err = ",err 4040 // endif 4041 4042 return(err) 4043 End 4044 4045 //// really has no meaning at all 4046 //Function V_writeDet_size(fname,detStr,val) 4047 // String fname,detStr 4048 // Variable val 4049 // 4050 //// String path = "entry:instrument:detector_"+detStr+":size" 4051 // 4052 // Make/O/D/N=1 wTmpWrite 4053 //// Make/O/R/N=1 wTmpWrite 4054 // String groupName = "/entry/instrument/detector_"+detStr 4055 // String varName = "size" 4056 // wTmpWrite[0] = val 4057 // 4058 // variable err 4059 // err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 4060 // if(err) 4061 // Print "HDF write err = ",err 4062 // endif 4063 // // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4064 //// err = V_KillNamedDataFolder(fname) 4065 //// if(err) 4066 //// Print "DataFolder kill err = ",err 4067 //// endif 4068 // return(err) 4069 //End 4070 4071 Function V_writeDetType(fname,detStr,str) 4072 String fname,detStr,str 4073 4074 // String path = "entry:instrument:detector_"+detStr+":type" 4075 4076 Make/O/T/N=1 tmpTW 4077 String groupName = "/entry/instrument/detector_"+detStr // 4078 String varName = "type" 4079 tmpTW[0] = str // 4080 4081 variable err 4082 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 4083 if(err) 4084 Print "HDF write err = ",err 4085 endif 4086 4087 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4088 // err = V_KillNamedDataFolder(fname) 4089 // if(err) 4090 // Print "DataFolder kill err = ",err 4091 // endif 4092 4093 return(err) 4094 End 4095 4096 Function V_writeDet_x_pixel_size(fname,detStr,val) 4097 String fname,detStr 4098 Variable val 4099 4100 // String path = "entry:instrument:detector_"+detStr+":x_pixel_size" 4101 4102 Make/O/D/N=1 wTmpWrite 4103 // Make/O/R/N=1 wTmpWrite 4104 String groupName = "/entry/instrument/detector_"+detStr 4105 String varName = "x_pixel_size" 4106 wTmpWrite[0] = val 4107 4108 variable err 4109 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 4110 if(err) 4111 Print "HDF write err = ",err 4112 endif 4113 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4114 // err = V_KillNamedDataFolder(fname) 4115 // if(err) 4116 // Print "DataFolder kill err = ",err 4117 // endif 4118 return(err) 4119 End 4120 4121 Function V_writeDet_y_pixel_size(fname,detStr,val) 4122 String fname,detStr 4123 Variable val 4124 4125 // String path = "entry:instrument:detector_"+detStr+":y_pixel_size" 4126 4127 Make/O/D/N=1 wTmpWrite 4128 // Make/O/R/N=1 wTmpWrite 4129 String groupName = "/entry/instrument/detector_"+detStr 4130 String varName = "y_pixel_size" 4131 wTmpWrite[0] = val 4132 4133 variable err 4134 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 4135 if(err) 4136 Print "HDF write err = ",err 4137 endif 4138 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4139 // err = V_KillNamedDataFolder(fname) 4140 // if(err) 4141 // Print "DataFolder kill err = ",err 4142 // endif 4143 return(err) 4144 End 4145 4146 ///////// detector_FB (data folder) + ALL other PANEL DETECTORS 4147 4148 // integer value 4149 Function V_writeDet_numberOfTubes(fname,detStr,val) 4150 String fname,detStr 4151 Variable val 4152 4153 // String path = "entry:instrument:detector_"+detStr+":number_of_tubes" 4154 if(cmpstr(detStr,"B") == 0) 4155 return(0) 4156 else 4157 4158 Make/O/I/N=1 wTmpWrite 4159 // Make/O/R/N=1 wTmpWrite 4160 String groupName = "/entry/instrument/detector_"+detStr 4161 String varName = "number_of_tubes" 3135 4162 wTmpWrite[0] = val 3136 4163 … … 3146 4173 // endif 3147 4174 return(err) 4175 endif 4176 End 4177 4178 // TODO -- be clear on how this is defined. Separation as defined from what point? Units? 4179 Function V_writeDetPanelSeparation(fname,detStr,val) 4180 String fname,detStr 4181 Variable val 4182 4183 // String path = "entry:instrument:detector_"+detStr+":separation" 4184 if(cmpstr(detStr,"B") == 0) 4185 return(0) 3148 4186 else 3149 return(0)3150 endif3151 End3152 3153 Function V_writeDet_beam_center_x(fname,detStr,val)3154 String fname,detStr3155 Variable val3156 3157 // String path = "entry:instrument:detector_"+detStr+":beam_center_x"3158 3159 Make/O/D/N=1 wTmpWrite3160 // Make/O/R/N=1 wTmpWrite3161 String groupName = "/entry/instrument/detector_"+detStr3162 String varName = "beam_center_x"3163 wTmpWrite[0] = val3164 3165 variable err3166 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite)3167 if(err)3168 Print "HDF write err = ",err3169 endif3170 // now be sure to kill the data folder to force a re-read of the data next time this file is read in3171 // err = V_KillNamedDataFolder(fname)3172 // if(err)3173 // Print "DataFolder kill err = ",err3174 // endif3175 return(err)3176 End3177 3178 // fname is a local WORK folder3179 Function V_putDet_beam_center_x(fname,detStr,val)3180 String fname,detStr3181 Variable val3182 3183 //root:Packages:NIST:VSANS:RAW:entry:entry:instrument:detector_FB:beam_center_x3184 String path = "root:Packages:NIST:VSANS:"+fname+":entry:"3185 path += "entry:instrument:detector_"+detStr+":beam_center_x"3186 3187 Wave/Z w = $path3188 if(waveExists(w) == 0)3189 return(1)3190 else3191 w[0] = val3192 return(0)3193 endif3194 3195 End3196 3197 Function V_writeDet_beam_center_y(fname,detStr,val)3198 String fname,detStr3199 Variable val3200 3201 // String path = "entry:instrument:detector_"+detStr+":beam_center_y"3202 3203 Make/O/D/N=1 wTmpWrite3204 // Make/O/R/N=1 wTmpWrite3205 String groupName = "/entry/instrument/detector_"+detStr3206 String varName = "beam_center_y"3207 wTmpWrite[0] = val3208 3209 variable err3210 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite)3211 if(err)3212 Print "HDF write err = ",err3213 endif3214 // now be sure to kill the data folder to force a re-read of the data next time this file is read in3215 // err = V_KillNamedDataFolder(fname)3216 // if(err)3217 // Print "DataFolder kill err = ",err3218 // endif3219 return(err)3220 End3221 3222 3223 // fname is a local WORK folder3224 Function V_putDet_beam_center_y(fname,detStr,val)3225 String fname,detStr3226 Variable val3227 3228 //root:Packages:NIST:VSANS:RAW:entry:entry:instrument:detector_FB:beam_center_y3229 String path = "root:Packages:NIST:VSANS:"+fname+":entry:"3230 path += "entry:instrument:detector_"+detStr+":beam_center_y"3231 3232 Wave/Z w = $path3233 if(waveExists(w) == 0)3234 return(1)3235 else3236 w[0] = val3237 return(0)3238 endif3239 3240 End3241 3242 3243 // TODO -- write this function to return a WAVE with the data3244 // either as a wave reference, or as an input parameter3245 Function V_writeDetectorData(fname,detStr,inW)3246 String fname,detStr3247 Wave inW3248 3249 // String path = "entry:instrument:detector_"+detStr+":data"3250 3251 Duplicate/O inW wTmpWrite3252 // then use redimension as needed to cast the wave to write to the specified type3253 // see WaveType for the proper codes3254 // Redimension/T=() wTmpWrite3255 // -- May also need to check the dimension(s) before writing (don't trust the input)3256 String groupName = "/entry/instrument/detector_"+detStr3257 String varName = "data"3258 3259 variable err3260 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite)3261 if(err)3262 Print "HDF write err = ",err3263 endif3264 // now be sure to kill the data folder to force a re-read of the data next time this file is read in3265 // err = V_KillNamedDataFolder(fname)3266 // if(err)3267 // Print "DataFolder kill err = ",err3268 // endif3269 return(err)3270 End3271 3272 3273 // TODO -- write this function to return a WAVE with the data3274 // either as a wave reference, or as an input parameter3275 // ALSO -- the "B" deadtime will be a single value (probably)3276 // but the tube banks will be 1D arrays of values, one per tube3277 Function V_writeDetector_deadtime(fname,detStr,inW)3278 String fname,detStr3279 Wave inW3280 3281 // String path = "entry:instrument:detector_"+detStr+":dead_time"3282 3283 Duplicate/O inW wTmpWrite3284 // then use redimension as needed to cast the wave to write to the specified type3285 // see WaveType for the proper codes3286 // Redimension/T=() wTmpWrite3287 // -- May also need to check the dimension(s) before writing (don't trust the input)3288 String groupName = "/entry/instrument/detector_"+detStr3289 String varName = "dead_time"3290 3291 variable err3292 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite)3293 if(err)3294 Print "HDF write err = ",err3295 endif3296 // now be sure to kill the data folder to force a re-read of the data next time this file is read in3297 // err = V_KillNamedDataFolder(fname)3298 // if(err)3299 // Print "DataFolder kill err = ",err3300 // endif3301 return(err)3302 End3303 3304 3305 Function V_writeDetDescription(fname,detStr,str)3306 String fname,detStr,str3307 3308 // String path = "entry:instrument:detector_"+detStr+":description"3309 3310 Make/O/T/N=1 tmpTW3311 String groupName = "/entry/instrument/detector_"+detStr //3312 String varName = "description"3313 tmpTW[0] = str //3314 3315 variable err3316 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW)3317 if(err)3318 Print "HDF write err = ",err3319 endif3320 3321 // now be sure to kill the data folder to force a re-read of the data next time this file is read in3322 // err = V_KillNamedDataFolder(fname)3323 // if(err)3324 // Print "DataFolder kill err = ",err3325 // endif3326 3327 return(err)3328 End3329 3330 Function V_writeDet_distance(fname,detStr,val)3331 String fname,detStr3332 variable val3333 3334 // String path = "entry:instrument:detector_"+detStr+":distance"3335 3336 Make/O/D/N=1 wTmpWrite3337 // Make/O/R/N=1 wTmpWrite3338 String groupName = "/entry/instrument/detector_"+detStr3339 String varName = "distance"3340 wTmpWrite[0] = val3341 3342 variable err3343 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite)3344 if(err)3345 Print "HDF write err = ",err3346 endif3347 // now be sure to kill the data folder to force a re-read of the data next time this file is read in3348 // err = V_KillNamedDataFolder(fname)3349 // if(err)3350 // Print "DataFolder kill err = ",err3351 // endif3352 return(err)3353 End3354 3355 // only defined for the "B" detector, and only to satisfy NXsas3356 Function V_writeDet_equatorial_angle(fname,detStr,val)3357 String fname,detStr3358 variable val3359 3360 if(cmpstr(detStr,"B") == 0)3361 // String path = "entry:instrument:detector_"+detStr+":equatorial_angle"3362 4187 3363 4188 Make/O/D/N=1 wTmpWrite 3364 4189 // Make/O/R/N=1 wTmpWrite 3365 4190 String groupName = "/entry/instrument/detector_"+detStr 3366 String varName = " equatorial_angle"4191 String varName = "separation" 3367 4192 wTmpWrite[0] = val 3368 4193 … … 3378 4203 // endif 3379 4204 return(err) 4205 endif 4206 End 4207 4208 // TODO -- write this function to return a WAVE with the data 4209 // either as a wave reference, or as an input parameter 4210 Function V_writeDetTube_spatialCalib(fname,detStr,inW) 4211 String fname,detStr 4212 Wave inW 4213 4214 // String path = "entry:instrument:detector_"+detStr+":spatial_calibration" 4215 4216 if(cmpstr(detStr,"B") == 0) 4217 return(0) 3380 4218 else 3381 return(0) 3382 endif 3383 End 3384 3385 Function V_writeDetEventFileName(fname,detStr,str) 3386 String fname,detStr,str 3387 3388 // String path = "entry:instrument:detector_"+detStr+":event_file_name" 3389 3390 Make/O/T/N=1 tmpTW 3391 String groupName = "/entry/instrument/detector_"+detStr // 3392 String varName = "event_file_name" 3393 tmpTW[0] = str // 3394 3395 variable err 3396 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 3397 if(err) 3398 Print "HDF write err = ",err 3399 endif 3400 3401 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3402 // err = V_KillNamedDataFolder(fname) 3403 // if(err) 3404 // Print "DataFolder kill err = ",err 3405 // endif 3406 3407 return(err) 3408 End 3409 3410 Function V_writeDet_IntegratedCount(fname,detStr,val) 3411 String fname,detStr 3412 Variable val 3413 3414 // String path = "entry:instrument:detector_"+detStr+":integrated_count" 3415 3416 Make/O/D/N=1 wTmpWrite 3417 // Make/O/R/N=1 wTmpWrite 3418 String groupName = "/entry/instrument/detector_"+detStr 3419 String varName = "integrated_count" 3420 wTmpWrite[0] = val 3421 3422 variable err 3423 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3424 if(err) 3425 Print "HDF write err = ",err 3426 endif 3427 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3428 // err = V_KillNamedDataFolder(fname) 3429 // if(err) 3430 // Print "DataFolder kill err = ",err 3431 // endif 3432 return(err) 3433 End 3434 3435 Function V_writeDet_LateralOffset(fname,detStr,val) 3436 String fname,detStr 3437 Variable val 3438 3439 // String path = "entry:instrument:detector_"+detStr+":lateral_offset" 3440 3441 Make/O/D/N=1 wTmpWrite 3442 // Make/O/R/N=1 wTmpWrite 3443 String groupName = "/entry/instrument/detector_"+detStr 3444 String varName = "lateral_offset" 3445 wTmpWrite[0] = val 3446 3447 variable err 3448 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3449 if(err) 3450 Print "HDF write err = ",err 3451 endif 3452 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3453 // err = V_KillNamedDataFolder(fname) 3454 // if(err) 3455 // Print "DataFolder kill err = ",err 3456 // endif 3457 return(err) 3458 End 3459 3460 Function V_writeDet_VerticalOffset(fname,detStr,val) 3461 String fname,detStr 3462 Variable val 3463 3464 // String path = "entry:instrument:detector_"+detStr+":vertical_offset" 3465 3466 Make/O/D/N=1 wTmpWrite 3467 // Make/O/R/N=1 wTmpWrite 3468 String groupName = "/entry/instrument/detector_"+detStr 3469 String varName = "vertical_offset" 3470 wTmpWrite[0] = val 3471 3472 variable err 3473 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 3474 if(err) 3475 Print "HDF write err = ",err 3476 endif 3477 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 3478 // err = V_KillNamedDataFolder(fname) 3479 // if(err) 3480 // Print "DataFolder kill err = ",err 3481 // endif 3482 return(err) 3483 End 3484 3485 // only defined for the "B" detector, and only to satisfy NXsas 3486 Function V_writeDet_polar_angle(fname,detStr,val) 3487 String fname,detStr 3488 Variable val 3489 3490 if(cmpstr(detStr,"B") == 0) 3491 // String path = "entry:instrument:detector_"+detStr+":polar_angle" 3492 3493 Make/O/D/N=1 wTmpWrite 3494 // Make/O/R/N=1 wTmpWrite 4219 Duplicate/O inW wTmpWrite 4220 // then use redimension as needed to cast the wave to write to the specified type 4221 // see WaveType for the proper codes 4222 // Redimension/T=() wTmpWrite 4223 // -- May also need to check the dimension(s) before writing (don't trust the input) 3495 4224 String groupName = "/entry/instrument/detector_"+detStr 3496 String varName = "polar_angle" 3497 wTmpWrite[0] = val 4225 String varName = "spatial_calibration" 3498 4226 3499 4227 variable err … … 3508 4236 // endif 3509 4237 return(err) 4238 endif 4239 End 4240 4241 //// TODO -- be clear on how this is defined. 4242 //Function V_writeDet_tubeIndex(fname,detStr,val) 4243 // String fname,detStr 4244 // Variable val 4245 // 4246 //// String path = "entry:instrument:detector_"+detStr+":tube_index" 4247 // if(cmpstr(detStr,"B") == 0) 4248 // return(0) 4249 // else 4250 // 4251 // Make/O/D/N=1 wTmpWrite 4252 // // Make/O/R/N=1 wTmpWrite 4253 // String groupName = "/entry/instrument/detector_"+detStr 4254 // String varName = "tube_index" 4255 // wTmpWrite[0] = val 4256 // 4257 // variable err 4258 // err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 4259 // if(err) 4260 // Print "HDF write err = ",err 4261 // endif 4262 // // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4263 //// err = V_KillNamedDataFolder(fname) 4264 //// if(err) 4265 //// Print "DataFolder kill err = ",err 4266 //// endif 4267 // return(err) 4268 // endif 4269 //End 4270 4271 Function V_writeDet_tubeOrientation(fname,detStr,str) 4272 String fname,detStr,str 4273 4274 // String path = "entry:instrument:detector_"+detStr+":tube_orientation" 4275 4276 if(cmpstr(detStr,"B") == 0) 4277 return(0) 3510 4278 else 4279 Make/O/T/N=1 tmpTW 4280 String groupName = "/entry/instrument/detector_"+detStr // 4281 String varName = "tube_orientation" 4282 tmpTW[0] = str // 4283 4284 variable err 4285 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 4286 if(err) 4287 Print "HDF write err = ",err 4288 endif 4289 4290 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4291 // err = V_KillNamedDataFolder(fname) 4292 // if(err) 4293 // Print "DataFolder kill err = ",err 4294 // endif 4295 4296 return(err) 4297 4298 endif 4299 End 4300 4301 // TODO -- be clear on how this is defined. Units? 4302 Function V_writeDet_tubeWidth(fname,detStr,val) 4303 String fname,detStr 4304 Variable val 4305 4306 // String path = "entry:instrument:detector_"+detStr+":tube_width" 4307 if(cmpstr(detStr,"B") == 0) 3511 4308 return(0) 3512 endif 3513 End 3514 3515 // only defined for the "B" detector, and only to satisfy NXsas 3516 Function V_writeDet_rotational_angle(fname,detStr,val) 3517 String fname,detStr 3518 Variable val 3519 3520 if(cmpstr(detStr,"B") == 0) 3521 // String path = "entry:instrument:detector_"+detStr+":rotational_angle" 4309 else 3522 4310 3523 4311 Make/O/D/N=1 wTmpWrite 3524 4312 // Make/O/R/N=1 wTmpWrite 3525 4313 String groupName = "/entry/instrument/detector_"+detStr 3526 String varName = " rotational_angle"4314 String varName = "tube_width" 3527 4315 wTmpWrite[0] = val 3528 4316 … … 3538 4326 // endif 3539 4327 return(err) 3540 else3541 return(0)3542 endif3543 End3544 3545 Function V_writeDetSettings(fname,detStr,str)3546 String fname,detStr,str3547 3548 // String path = "entry:instrument:detector_"+detStr+":settings"3549 3550 Make/O/T/N=1 tmpTW3551 String groupName = "/entry/instrument/detector_"+detStr //3552 String varName = "settings"3553 tmpTW[0] = str //3554 3555 variable err3556 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW)3557 if(err)3558 Print "HDF write err = ",err3559 endif3560 3561 // now be sure to kill the data folder to force a re-read of the data next time this file is read in3562 // err = V_KillNamedDataFolder(fname)3563 // if(err)3564 // Print "DataFolder kill err = ",err3565 // endif3566 3567 return(err)3568 End3569 3570 // really has no meaning at all3571 Function V_writeDet_size(fname,detStr,val)3572 String fname,detStr3573 Variable val3574 3575 // String path = "entry:instrument:detector_"+detStr+":size"3576 3577 Make/O/D/N=1 wTmpWrite3578 // Make/O/R/N=1 wTmpWrite3579 String groupName = "/entry/instrument/detector_"+detStr3580 String varName = "size"3581 wTmpWrite[0] = val3582 3583 variable err3584 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite)3585 if(err)3586 Print "HDF write err = ",err3587 endif3588 // now be sure to kill the data folder to force a re-read of the data next time this file is read in3589 // err = V_KillNamedDataFolder(fname)3590 // if(err)3591 // Print "DataFolder kill err = ",err3592 // endif3593 return(err)3594 End3595 3596 Function V_writeDetType(fname,detStr,str)3597 String fname,detStr,str3598 3599 // String path = "entry:instrument:detector_"+detStr+":type"3600 3601 Make/O/T/N=1 tmpTW3602 String groupName = "/entry/instrument/detector_"+detStr //3603 String varName = "type"3604 tmpTW[0] = str //3605 3606 variable err3607 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW)3608 if(err)3609 Print "HDF write err = ",err3610 endif3611 3612 // now be sure to kill the data folder to force a re-read of the data next time this file is read in3613 // err = V_KillNamedDataFolder(fname)3614 // if(err)3615 // Print "DataFolder kill err = ",err3616 // endif3617 3618 return(err)3619 End3620 3621 Function V_writeDet_x_pixel_size(fname,detStr,val)3622 String fname,detStr3623 Variable val3624 3625 // String path = "entry:instrument:detector_"+detStr+":x_pixel_size"3626 3627 Make/O/D/N=1 wTmpWrite3628 // Make/O/R/N=1 wTmpWrite3629 String groupName = "/entry/instrument/detector_"+detStr3630 String varName = "x_pixel_size"3631 wTmpWrite[0] = val3632 3633 variable err3634 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite)3635 if(err)3636 Print "HDF write err = ",err3637 endif3638 // now be sure to kill the data folder to force a re-read of the data next time this file is read in3639 // err = V_KillNamedDataFolder(fname)3640 // if(err)3641 // Print "DataFolder kill err = ",err3642 // endif3643 return(err)3644 End3645 3646 Function V_writeDet_y_pixel_size(fname,detStr,val)3647 String fname,detStr3648 Variable val3649 3650 // String path = "entry:instrument:detector_"+detStr+":y_pixel_size"3651 3652 Make/O/D/N=1 wTmpWrite3653 // Make/O/R/N=1 wTmpWrite3654 String groupName = "/entry/instrument/detector_"+detStr3655 String varName = "y_pixel_size"3656 wTmpWrite[0] = val3657 3658 variable err3659 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite)3660 if(err)3661 Print "HDF write err = ",err3662 endif3663 // now be sure to kill the data folder to force a re-read of the data next time this file is read in3664 // err = V_KillNamedDataFolder(fname)3665 // if(err)3666 // Print "DataFolder kill err = ",err3667 // endif3668 return(err)3669 End3670 3671 ///////// detector_FB (data folder) + ALL other PANEL DETECTORS3672 3673 Function V_writeDet_numberOfTubes(fname,detStr,val)3674 String fname,detStr3675 Variable val3676 3677 // String path = "entry:instrument:detector_"+detStr+":number_of_tubes"3678 if(cmpstr(detStr,"B") == 0)3679 return(0)3680 else3681 3682 Make/O/D/N=1 wTmpWrite3683 // Make/O/R/N=1 wTmpWrite3684 String groupName = "/entry/instrument/detector_"+detStr3685 String varName = "number_of_tubes"3686 wTmpWrite[0] = val3687 3688 variable err3689 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite)3690 if(err)3691 Print "HDF write err = ",err3692 endif3693 // now be sure to kill the data folder to force a re-read of the data next time this file is read in3694 // err = V_KillNamedDataFolder(fname)3695 // if(err)3696 // Print "DataFolder kill err = ",err3697 // endif3698 return(err)3699 endif3700 End3701 3702 // TODO -- be clear on how this is defined. Separation as defined from what point? Units?3703 Function V_writeDetPanelSeparation(fname,detStr,val)3704 String fname,detStr3705 Variable val3706 3707 // String path = "entry:instrument:detector_"+detStr+":separation"3708 if(cmpstr(detStr,"B") == 0)3709 return(0)3710 else3711 3712 Make/O/D/N=1 wTmpWrite3713 // Make/O/R/N=1 wTmpWrite3714 String groupName = "/entry/instrument/detector_"+detStr3715 String varName = "separation"3716 wTmpWrite[0] = val3717 3718 variable err3719 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite)3720 if(err)3721 Print "HDF write err = ",err3722 endif3723 // now be sure to kill the data folder to force a re-read of the data next time this file is read in3724 // err = V_KillNamedDataFolder(fname)3725 // if(err)3726 // Print "DataFolder kill err = ",err3727 // endif3728 return(err)3729 endif3730 End3731 3732 // TODO -- write this function to return a WAVE with the data3733 // either as a wave reference, or as an input parameter3734 Function V_writeDetTube_spatialCalib(fname,detStr,inW)3735 String fname,detStr3736 Wave inW3737 3738 // String path = "entry:instrument:detector_"+detStr+":spatial_calibration"3739 3740 if(cmpstr(detStr,"B") == 0)3741 return(0)3742 else3743 Duplicate/O inW wTmpWrite3744 // then use redimension as needed to cast the wave to write to the specified type3745 // see WaveType for the proper codes3746 // Redimension/T=() wTmpWrite3747 // -- May also need to check the dimension(s) before writing (don't trust the input)3748 String groupName = "/entry/instrument/detector_"+detStr3749 String varName = "spatial_calibration"3750 3751 variable err3752 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite)3753 if(err)3754 Print "HDF write err = ",err3755 endif3756 // now be sure to kill the data folder to force a re-read of the data next time this file is read in3757 // err = V_KillNamedDataFolder(fname)3758 // if(err)3759 // Print "DataFolder kill err = ",err3760 // endif3761 return(err)3762 endif3763 End3764 3765 // TODO -- be clear on how this is defined.3766 Function V_writeDet_tubeIndex(fname,detStr,val)3767 String fname,detStr3768 Variable val3769 3770 // String path = "entry:instrument:detector_"+detStr+":tube_index"3771 if(cmpstr(detStr,"B") == 0)3772 return(0)3773 else3774 3775 Make/O/D/N=1 wTmpWrite3776 // Make/O/R/N=1 wTmpWrite3777 String groupName = "/entry/instrument/detector_"+detStr3778 String varName = "tube_index"3779 wTmpWrite[0] = val3780 3781 variable err3782 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite)3783 if(err)3784 Print "HDF write err = ",err3785 endif3786 // now be sure to kill the data folder to force a re-read of the data next time this file is read in3787 // err = V_KillNamedDataFolder(fname)3788 // if(err)3789 // Print "DataFolder kill err = ",err3790 // endif3791 return(err)3792 endif3793 End3794 3795 Function V_writeDet_tubeOrientation(fname,detStr,str)3796 String fname,detStr,str3797 3798 // String path = "entry:instrument:detector_"+detStr+":tube_orientation"3799 3800 if(cmpstr(detStr,"B") == 0)3801 return(0)3802 else3803 Make/O/T/N=1 tmpTW3804 String groupName = "/entry/instrument/detector_"+detStr //3805 String varName = "tube_orientation"3806 tmpTW[0] = str //3807 3808 variable err3809 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW)3810 if(err)3811 Print "HDF write err = ",err3812 endif3813 3814 // now be sure to kill the data folder to force a re-read of the data next time this file is read in3815 // err = V_KillNamedDataFolder(fname)3816 // if(err)3817 // Print "DataFolder kill err = ",err3818 // endif3819 3820 return(err)3821 3822 endif3823 End3824 3825 // TODO -- be clear on how this is defined. Units?3826 Function V_writeDet_tubeWidth(fname,detStr,val)3827 String fname,detStr3828 Variable val3829 3830 // String path = "entry:instrument:detector_"+detStr+":tube_width"3831 if(cmpstr(detStr,"B") == 0)3832 return(0)3833 else3834 3835 Make/O/D/N=1 wTmpWrite3836 // Make/O/R/N=1 wTmpWrite3837 String groupName = "/entry/instrument/detector_"+detStr3838 String varName = "tube_width"3839 wTmpWrite[0] = val3840 3841 variable err3842 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite)3843 if(err)3844 Print "HDF write err = ",err3845 endif3846 // now be sure to kill the data folder to force a re-read of the data next time this file is read in3847 // err = V_KillNamedDataFolder(fname)3848 // if(err)3849 // Print "DataFolder kill err = ",err3850 // endif3851 return(err)3852 4328 endif 3853 4329 End … … 3983 4459 End 3984 4460 4461 // integer value 3985 4462 Function V_writeNumber_of_Lenses(fname,val) 3986 4463 String fname … … 3989 4466 // String path = "entry:instrument:lenses:number_of_lenses" 3990 4467 3991 Make/O/ D/N=1 wTmpWrite4468 Make/O/I/N=1 wTmpWrite 3992 4469 // Make/O/R/N=1 wTmpWrite 3993 4470 String groupName = "/entry/instrument/lenses" … … 4008 4485 End 4009 4486 4487 // integer value 4010 4488 Function V_writeNumber_of_prisms(fname,val) 4011 4489 String fname … … 4014 4492 // String path = "entry:instrument:lenses:number_of_prisms" 4015 4493 4016 Make/O/ D/N=1 wTmpWrite4494 Make/O/I/N=1 wTmpWrite 4017 4495 // Make/O/R/N=1 wTmpWrite 4018 4496 String groupName = "/entry/instrument/lenses" … … 4161 4639 return(err) 4162 4640 End 4641 4163 4642 // shape (data folder) 4164 4643 … … 4188 4667 End 4189 4668 4190 // TODO -- this needs to return a WAVE, since the shape may be circle, or rectangle 4191 // and will need to return more than a single dimension 4192 // TODO -- be careful of the UNITS 4193 Function V_writeSampleAp_size(fname,inW) 4194 String fname 4195 Wave inW 4196 4197 // String path = "entry:instrument:sample_aperture:shape:size" 4198 4199 Duplicate/O inW wTmpWrite 4200 // then use redimension as needed to cast the wave to write to the specified type 4201 // see WaveType for the proper codes 4202 // Redimension/T=() wTmpWrite 4203 // -- May also need to check the dimension(s) before writing (don't trust the input) 4204 String groupName = "/entry/instrument/sample_aperture/shape" 4669 Function V_writeSampleAp_height(fname,val) 4670 String fname 4671 Variable val 4672 4673 // String path = "entry:instrument:sample_aperture:distance" 4674 4675 Make/O/D/N=1 wTmpWrite 4676 // Make/O/R/N=1 wTmpWrite 4677 String groupName = "/entry/instrument/sample_aperture/shape" 4678 String varName = "height" 4679 wTmpWrite[0] = val 4680 4681 variable err 4682 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 4683 if(err) 4684 Print "HDF write err = ",err 4685 endif 4686 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4687 // err = V_KillNamedDataFolder(fname) 4688 // if(err) 4689 // Print "DataFolder kill err = ",err 4690 // endif 4691 return(err) 4692 End 4693 4694 Function V_writeSampleAp_size(fname,str) 4695 String fname,str 4696 4697 // String path = "entry:instrument:sample_aperture:shape:shape" 4698 4699 Make/O/T/N=1 tmpTW 4700 String groupName = "/entry/instrument/sample_aperture/shape" 4205 4701 String varName = "size" 4206 4207 variable err 4208 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 4209 if(err) 4210 Print "HDF write err = ",err 4211 endif 4212 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4213 // err = V_KillNamedDataFolder(fname) 4214 // if(err) 4215 // Print "DataFolder kill err = ",err 4216 // endif 4217 return(err) 4218 End 4219 4702 tmpTW[0] = str // 4703 4704 variable err 4705 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 4706 if(err) 4707 Print "HDF write err = ",err 4708 endif 4709 4710 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4711 // err = V_KillNamedDataFolder(fname) 4712 // if(err) 4713 // Print "DataFolder kill err = ",err 4714 // endif 4715 4716 return(err) 4717 End 4718 4719 Function V_writeSampleAp_width(fname,val) 4720 String fname 4721 Variable val 4722 4723 // String path = "entry:instrument:sample_aperture:distance" 4724 4725 Make/O/D/N=1 wTmpWrite 4726 // Make/O/R/N=1 wTmpWrite 4727 String groupName = "/entry/instrument/sample_aperture/shape" 4728 String varName = "width" 4729 wTmpWrite[0] = val 4730 4731 variable err 4732 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 4733 if(err) 4734 Print "HDF write err = ",err 4735 endif 4736 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4737 // err = V_KillNamedDataFolder(fname) 4738 // if(err) 4739 // Print "DataFolder kill err = ",err 4740 // endif 4741 return(err) 4742 End 4220 4743 4221 4744 /////// sample_aperture_2 (data folder) … … 4270 4793 return(err) 4271 4794 End 4795 4796 4272 4797 // shape (data folder) 4273 4798 … … 4297 4822 End 4298 4823 4299 // TODO -- this needs to return a WAVE, since the shape may be circle, or rectangle 4300 // and will need to return more than a single dimension 4301 // TODO -- be careful of the UNITS 4302 Function V_writeSampleAp2_size(fname,inW) 4303 String fname 4304 Wave inW 4305 4306 // String path = "entry:instrument:sample_aperture_2:shape:size" 4307 4308 Duplicate/O inW wTmpWrite 4309 // then use redimension as needed to cast the wave to write to the specified type 4310 // see WaveType for the proper codes 4311 // Redimension/T=() wTmpWrite 4312 // -- May also need to check the dimension(s) before writing (don't trust the input) 4313 String groupName = "/entry/instrument/sample_aperture_2/shape" 4824 Function V_writeSampleAp2_height(fname,val) 4825 String fname 4826 Variable val 4827 4828 // String path = "entry:instrument:sample_aperture:distance" 4829 4830 Make/O/D/N=1 wTmpWrite 4831 // Make/O/R/N=1 wTmpWrite 4832 String groupName = "/entry/instrument/sample_aperture_2/shape" 4833 String varName = "height" 4834 wTmpWrite[0] = val 4835 4836 variable err 4837 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 4838 if(err) 4839 Print "HDF write err = ",err 4840 endif 4841 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4842 // err = V_KillNamedDataFolder(fname) 4843 // if(err) 4844 // Print "DataFolder kill err = ",err 4845 // endif 4846 return(err) 4847 End 4848 4849 Function V_writeSampleAp2_size(fname,val) 4850 String fname 4851 Variable val 4852 4853 // String path = "entry:instrument:sample_aperture:distance" 4854 4855 Make/O/D/N=1 wTmpWrite 4856 // Make/O/R/N=1 wTmpWrite 4857 String groupName = "/entry/instrument/sample_aperture_2/shape" 4314 4858 String varName = "size" 4315 4316 variable err 4317 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 4318 if(err) 4319 Print "HDF write err = ",err 4320 endif 4321 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4322 // err = V_KillNamedDataFolder(fname) 4323 // if(err) 4324 // Print "DataFolder kill err = ",err 4325 // endif 4326 return(err) 4327 End 4859 wTmpWrite[0] = val 4860 4861 variable err 4862 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 4863 if(err) 4864 Print "HDF write err = ",err 4865 endif 4866 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4867 // err = V_KillNamedDataFolder(fname) 4868 // if(err) 4869 // Print "DataFolder kill err = ",err 4870 // endif 4871 return(err) 4872 End 4873 4874 Function V_writeSampleAp2_width(fname,val) 4875 String fname 4876 Variable val 4877 4878 // String path = "entry:instrument:sample_aperture:distance" 4879 4880 Make/O/D/N=1 wTmpWrite 4881 // Make/O/R/N=1 wTmpWrite 4882 String groupName = "/entry/instrument/sample_aperture_2/shape" 4883 String varName = "width" 4884 wTmpWrite[0] = val 4885 4886 variable err 4887 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 4888 if(err) 4889 Print "HDF write err = ",err 4890 endif 4891 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4892 // err = V_KillNamedDataFolder(fname) 4893 // if(err) 4894 // Print "DataFolder kill err = ",err 4895 // endif 4896 return(err) 4897 End 4328 4898 4329 4899 … … 4566 5136 End 4567 5137 4568 // TODO -- this needs to return a WAVE, since the shape may be circle, or rectangle 4569 // and will need to return more than a single dimension 4570 // TODO -- be careful of the UNITS 4571 Function V_writeSourceAp_size(fname,inW) 4572 String fname 4573 Wave inW 4574 4575 // String path = "entry:instrument:source_aperture:shape:size" 4576 4577 Duplicate/O inW wTmpWrite 4578 // then use redimension as needed to cast the wave to write to the specified type 4579 // see WaveType for the proper codes 4580 // Redimension/T=() wTmpWrite 4581 // -- May also need to check the dimension(s) before writing (don't trust the input) 4582 String groupName = "/entry/instrument/source_aperture/shape" 5138 Function V_writeSourceAp_size(fname,str) 5139 String fname,str 5140 5141 // String path = "entry:instrument:source_aperture:shape:shape" 5142 5143 Make/O/T/N=1 tmpTW 5144 String groupName = "/entry/instrument/source_aperture/shape" 4583 5145 String varName = "size" 4584 4585 variable err 4586 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 4587 if(err) 4588 Print "HDF write err = ",err 4589 endif 4590 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4591 // err = V_KillNamedDataFolder(fname) 4592 // if(err) 4593 // Print "DataFolder kill err = ",err 4594 // endif 4595 return(err) 4596 End 4597 4598 5146 tmpTW[0] = str // 5147 5148 variable err 5149 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 5150 if(err) 5151 Print "HDF write err = ",err 5152 endif 5153 5154 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 5155 // err = V_KillNamedDataFolder(fname) 5156 // if(err) 5157 // Print "DataFolder kill err = ",err 5158 // endif 5159 5160 return(err) 5161 End 5162 5163 Function V_writeSourceAp_height(fname,val) 5164 String fname 5165 Variable val 5166 5167 // String path = "entry:instrument:sample_aperture:distance" 5168 5169 Make/O/D/N=1 wTmpWrite 5170 // Make/O/R/N=1 wTmpWrite 5171 String groupName = "/entry/instrument/source_aperture/shape" 5172 String varName = "height" 5173 wTmpWrite[0] = val 5174 5175 variable err 5176 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 5177 if(err) 5178 Print "HDF write err = ",err 5179 endif 5180 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 5181 // err = V_KillNamedDataFolder(fname) 5182 // if(err) 5183 // Print "DataFolder kill err = ",err 5184 // endif 5185 return(err) 5186 End 5187 5188 Function V_writeSourceAp_width(fname,val) 5189 String fname 5190 Variable val 5191 5192 // String path = "entry:instrument:sample_aperture:distance" 5193 5194 Make/O/D/N=1 wTmpWrite 5195 // Make/O/R/N=1 wTmpWrite 5196 String groupName = "/entry/instrument/source_aperture/shape" 5197 String varName = "width" 5198 wTmpWrite[0] = val 5199 5200 variable err 5201 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 5202 if(err) 5203 Print "HDF write err = ",err 5204 endif 5205 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 5206 // err = V_KillNamedDataFolder(fname) 5207 // if(err) 5208 // Print "DataFolder kill err = ",err 5209 // endif 5210 return(err) 5211 End 4599 5212 4600 5213 … … 4604 5217 4605 5218 //Sample position in changer 4606 // TODO -- in the NexusWriter, this ends up as a STRING -- which is wrong. it needs to be FP 4607 Function V_writeSamplePosition(fname,val) 4608 String fname 4609 Variable val 4610 5219 Function V_writeSamplePosition(fname,str) 5220 String fname,str 5221 4611 5222 // String path = "entry:sample:changer_position" 4612 4613 Make/O/D/N=1 wTmpWrite 4614 // Make/O/R/N=1 wTmpWrite 5223 5224 Make/O/T/N=1 tmpTW 4615 5225 String groupName = "/entry/sample" 4616 5226 String varName = "changer_position" 4617 wTmpWrite[0] = val 4618 4619 variable err 4620 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 4621 if(err) 4622 Print "HDF write err = ",err 4623 endif 4624 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 4625 // err = V_KillNamedDataFolder(fname) 4626 // if(err) 4627 // Print "DataFolder kill err = ",err 4628 // endif 4629 return(err) 4630 end 5227 tmpTW[0] = str // 5228 5229 variable err 5230 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 5231 if(err) 5232 Print "HDF write err = ",err 5233 endif 5234 5235 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 5236 // err = V_KillNamedDataFolder(fname) 5237 // if(err) 5238 // Print "DataFolder kill err = ",err 5239 // endif 5240 5241 return(err) 5242 End 5243 4631 5244 4632 5245 // sample label … … 4657 5270 End 4658 5271 5272 // for a z-stage?? 5273 Function V_writeSample_elevation(fname,val) 5274 String fname 5275 Variable val 5276 5277 // String path = "entry:sample:elevation" 5278 5279 Make/O/D/N=1 wTmpWrite 5280 // Make/O/R/N=1 wTmpWrite 5281 String groupName = "/entry/sample" 5282 String varName = "elevation" 5283 wTmpWrite[0] = val 5284 5285 variable err 5286 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 5287 if(err) 5288 Print "HDF write err = ",err 5289 endif 5290 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 5291 // err = V_KillNamedDataFolder(fname) 5292 // if(err) 5293 // Print "DataFolder kill err = ",err 5294 // endif 5295 return(err) 5296 end 5297 4659 5298 //no meaning to this... 4660 5299 Function V_writeSample_equatorial_ang(fname,val) … … 4685 5324 // TODO -- do I need to make sure that this is an integer? 4686 5325 // group ID !!! very important for matching up files 5326 // integer value 4687 5327 Function V_writeSample_GroupID(fname,val) 4688 5328 String fname … … 4691 5331 // String path = "entry:sample:group_id" 4692 5332 4693 Make/O/ D/N=1 wTmpWrite5333 Make/O/I/N=1 wTmpWrite 4694 5334 // Make/O/R/N=1 wTmpWrite 4695 5335 String groupName = "/entry/sample" … … 4776 5416 String groupName = "/entry/sample" 4777 5417 String varName = "thickness" 5418 wTmpWrite[0] = val 5419 5420 variable err 5421 err = V_WriteWaveToHDF(fname, groupName, varName, wTmpWrite) 5422 if(err) 5423 Print "HDF write err = ",err 5424 endif 5425 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 5426 // err = V_KillNamedDataFolder(fname) 5427 // if(err) 5428 // Print "DataFolder kill err = ",err 5429 // endif 5430 return(err) 5431 end 5432 5433 //Sample Translation 5434 Function V_writeSampleTranslation(fname,val) 5435 String fname 5436 Variable val 5437 5438 // String path = "entry:sample:translation" 5439 5440 Make/O/D/N=1 wTmpWrite 5441 // Make/O/R/N=1 wTmpWrite 5442 String groupName = "/entry/sample" 5443 String varName = "translation" 4778 5444 wTmpWrite[0] = val 4779 5445 … … 5339 6005 End 5340 6006 6007 Function V_writeEmptyFileName(fname,str) 6008 String fname,str 6009 6010 // String path = "entry:reduction:empty_beam_file_name" 6011 6012 Make/O/T/N=1 tmpTW 6013 String groupName = "/entry/reduction" 6014 String varName = "empty_file_name" 6015 tmpTW[0] = str // 6016 6017 variable err 6018 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 6019 if(err) 6020 Print "HDF write err = ",err 6021 endif 6022 6023 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 6024 // err = V_KillNamedDataFolder(fname) 6025 // if(err) 6026 // Print "DataFolder kill err = ",err 6027 // endif 6028 6029 return(err) 6030 End 6031 6032 Function V_writeMaskFileName(fname,str) 6033 String fname,str 6034 6035 // String path = "entry:reduction:empty_beam_file_name" 6036 6037 Make/O/T/N=1 tmpTW 6038 String groupName = "/entry/reduction" 6039 String varName = "mask_file_name" 6040 tmpTW[0] = str // 6041 6042 variable err 6043 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 6044 if(err) 6045 Print "HDF write err = ",err 6046 endif 6047 6048 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 6049 // err = V_KillNamedDataFolder(fname) 6050 // if(err) 6051 // Print "DataFolder kill err = ",err 6052 // endif 6053 6054 return(err) 6055 End 6056 6057 Function V_writeBackgroundFileName(fname,str) 6058 String fname,str 6059 6060 // String path = "entry:reduction:empty_beam_file_name" 6061 6062 Make/O/T/N=1 tmpTW 6063 String groupName = "/entry/reduction" 6064 String varName = "background_file_name" 6065 tmpTW[0] = str // 6066 6067 variable err 6068 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 6069 if(err) 6070 Print "HDF write err = ",err 6071 endif 6072 6073 // now be sure to kill the data folder to force a re-read of the data next time this file is read in 6074 // err = V_KillNamedDataFolder(fname) 6075 // if(err) 6076 // Print "DataFolder kill err = ",err 6077 // endif 6078 6079 return(err) 6080 End 5341 6081 5342 6082 //whole detector transmission … … 5488 6228 // thumbnail (data folder) 5489 6229 5490 // data (wave) "binary"5491 // TODO -- this will need to be completely replaced with a function that can5492 // read the binary image data. should be possible, but I don't know the details on either end...5493 Function V_writeDataImage(fname,detStr,str)5494 String fname,detStr,str5495 5496 // String path = "entry:data_"+detStr+":thumbnail:data"5497 5498 Make/O/T/N=1 tmpTW5499 String groupName = "/entry/data_"+detStr+"/thumbnail"5500 String varName = "data"5501 tmpTW[0] = str //5502 5503 variable err5504 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW)5505 if(err)5506 Print "HDF write err = ",err5507 endif5508 5509 // now be sure to kill the data folder to force a re-read of the data next time this file is read in5510 // err = V_KillNamedDataFolder(fname)5511 // if(err)5512 // Print "DataFolder kill err = ",err5513 // endif5514 5515 return(err)5516 End5517 5518 Function V_writeDataImageDescription(fname,detStr,str)5519 String fname,detStr,str5520 5521 // String path = "entry:data_"+detStr+":thumbnail:description"5522 5523 Make/O/T/N=1 tmpTW5524 String groupName = "/entry/data_"+detStr+"/thumbnail"5525 String varName = "description"5526 tmpTW[0] = str //5527 5528 variable err5529 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW)5530 if(err)5531 Print "HDF write err = ",err5532 endif5533 5534 // now be sure to kill the data folder to force a re-read of the data next time this file is read in5535 // err = V_KillNamedDataFolder(fname)5536 // if(err)5537 // Print "DataFolder kill err = ",err5538 // endif5539 5540 return(err)5541 End5542 5543 Function V_writeDataImageType(fname,detStr,str)5544 String fname,detStr,str5545 5546 // String path = "entry:data_"+detStr+":thumbnail:type"5547 5548 Make/O/T/N=1 tmpTW5549 String groupName = "/entry/data_"+detStr+"/thumbnail"5550 String varName = "type"5551 tmpTW[0] = str //5552 5553 variable err5554 err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW)5555 if(err)5556 Print "HDF write err = ",err5557 endif5558 5559 // now be sure to kill the data folder to force a re-read of the data next time this file is read in5560 // err = V_KillNamedDataFolder(fname)5561 // if(err)5562 // Print "DataFolder kill err = ",err5563 // endif5564 5565 return(err)5566 End5567 6230 ////data (wave) "binary" 6231 //// TODO -- this will need to be completely replaced with a function that can 6232 //// read the binary image data. should be possible, but I don't know the details on either end... 6233 //Function V_writeDataImage(fname,detStr,str) 6234 // String fname,detStr,str 6235 // 6236 //// String path = "entry:data_"+detStr+":thumbnail:data" 6237 // 6238 // Make/O/T/N=1 tmpTW 6239 // String groupName = "/entry/data_"+detStr+"/thumbnail" 6240 // String varName = "data" 6241 // tmpTW[0] = str // 6242 // 6243 // variable err 6244 // err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 6245 // if(err) 6246 // Print "HDF write err = ",err 6247 // endif 6248 // 6249 // // now be sure to kill the data folder to force a re-read of the data next time this file is read in 6250 //// err = V_KillNamedDataFolder(fname) 6251 //// if(err) 6252 //// Print "DataFolder kill err = ",err 6253 //// endif 6254 // 6255 // return(err) 6256 //End 6257 // 6258 //Function V_writeDataImageDescription(fname,detStr,str) 6259 // String fname,detStr,str 6260 // 6261 //// String path = "entry:data_"+detStr+":thumbnail:description" 6262 // 6263 // Make/O/T/N=1 tmpTW 6264 // String groupName = "/entry/data_"+detStr+"/thumbnail" 6265 // String varName = "description" 6266 // tmpTW[0] = str // 6267 // 6268 // variable err 6269 // err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 6270 // if(err) 6271 // Print "HDF write err = ",err 6272 // endif 6273 // 6274 // // now be sure to kill the data folder to force a re-read of the data next time this file is read in 6275 //// err = V_KillNamedDataFolder(fname) 6276 //// if(err) 6277 //// Print "DataFolder kill err = ",err 6278 //// endif 6279 // 6280 // return(err) 6281 //End 6282 // 6283 //Function V_writeDataImageType(fname,detStr,str) 6284 // String fname,detStr,str 6285 // 6286 //// String path = "entry:data_"+detStr+":thumbnail:type" 6287 // 6288 // Make/O/T/N=1 tmpTW 6289 // String groupName = "/entry/data_"+detStr+"/thumbnail" 6290 // String varName = "type" 6291 // tmpTW[0] = str // 6292 // 6293 // variable err 6294 // err = V_WriteTextWaveToHDF(fname, groupName, varName, tmpTW) 6295 // if(err) 6296 // Print "HDF write err = ",err 6297 // endif 6298 // 6299 // // now be sure to kill the data folder to force a re-read of the data next time this file is read in 6300 //// err = V_KillNamedDataFolder(fname) 6301 //// if(err) 6302 //// Print "DataFolder kill err = ",err 6303 //// endif 6304 // 6305 // return(err) 6306 //End 6307 //
Note: See TracChangeset
for help on using the changeset viewer.