Ignore:
Timestamp:
Apr 14, 2016 10:20:13 AM (7 years ago)
Author:
srkline
Message:

few fixes to event mode for SANS

major changes to VSANS basic R/W routines to keep up-to-date with the latest data file definition. Still needs to be tested for correct paths, entries, etc.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/VSANS/V_HDF5_Read.ipf

    r989 r990  
    257257End 
    258258                 
    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 fname 
    263          
    264         String path = "entry:file_time"  
    265         return(V_getRealValueFromHDF5(fname,path)) 
    266 End 
     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 fname 
     263//       
     264//      String path = "entry:file_time"  
     265//      return(V_getRealValueFromHDF5(fname,path)) 
     266//End 
    267267 
    268268// TODO - should be the file name as saved on disk, currently it's not 
     
    485485        return(V_getRealValueFromHDF5(fname,path)) 
    486486end 
    487  
    488487 
    489488 
     
    506505 
    507506// table of the attenuation factor error 
    508 Function V_getAttenIndex_error_table(fname,outW) 
    509         String fname 
    510         Wave outW 
     507Function/WAVE V_getAttenIndex_error_table(fname) 
     508        String fname 
    511509         
    512510        String path = "entry:instrument:attenuator:index_error_table" 
    513511        WAVE w = V_getRealWaveFromHDF5(fname,path) 
    514  
    515         outW = w 
    516         return(0) 
     512         
     513        return w 
    517514end 
    518515 
    519516// table of the attenuation factor 
    520 Function V_getAttenIndex_table(fname,outW) 
    521         String fname 
    522         Wave outW 
     517Function/WAVE V_getAttenIndex_table(fname) 
     518        String fname 
    523519         
    524520        String path = "entry:instrument:attenuator:index_table" 
    525521        WAVE w = V_getRealWaveFromHDF5(fname,path) 
    526522 
    527         outW = w 
    528         return(0) 
    529 end 
     523        return w 
     524end 
     525 
    530526// 
    531527//// status "in or out" 
     
    538534//End 
    539535 
     536// this is equivalent to "status" - if anything is dropped in the beam 
    540537Function V_getAtten_number(fname) 
    541538        String fname 
     
    608605end 
    609606 
    610 Function/S V_getChopperstatus(fname) 
     607Function/S V_getChopperStatus(fname) 
    611608        String fname 
    612609 
     
    616613End 
    617614 
    618 Function/S V_getChoppertype(fname) 
     615Function/S V_getChopperType(fname) 
    619616        String fname 
    620617 
     
    802799End 
    803800 
    804 Function V_getVSTable(fname,outW) 
    805         String fname 
    806         Wave outW 
    807          
    808         String path = "entry:instrument:beam:monochromator:velocity_selector:table"      
     801Function/WAVE V_getVSTable_parameters(fname) 
     802        String fname 
     803         
     804        String path = "entry:instrument:beam:monochromator:velocity_selector:table_parameters"   
    809805        WAVE w = V_getRealWaveFromHDF5(fname,path) 
    810806 
    811         outW = w 
    812         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 
     808end 
     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??? 
    822818Function V_getVS_tilt(fname) 
    823819        String fname 
     
    912908End 
    913909 
    914 Function V_getPolAnaCell_parameters(fname,outW) 
    915         String fname 
    916         Wave outW 
     910Function/WAVE V_getPolAnaCell_parameters(fname) 
     911        String fname 
    917912 
    918913        String path = "entry:instrument:beam:polarizer_analyzer:cell_parameters" 
    919914        WAVE w = V_getRealWaveFromHDF5(fname,path) 
    920915 
    921         outW = w 
    922         return(0) 
     916        return w 
    923917End 
    924918 
     
    10291023End 
    10301024 
    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) 
     1026Function/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)) 
     1032End 
     1033 
     1034Function 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)) 
     1039End 
     1040 
     1041//TODO -- not sure what this really means 
     1042Function V_getBeamStopC2num_beamstops(fname) 
     1043        String fname 
     1044 
     1045        String path = "entry:instrument:beam_stop_C2:num_beamstops" 
     1046        return(V_getRealValueFromHDF5(fname,path)) 
     1047End 
     1048 
     1049Function 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)) 
     1054End 
     1055 
     1056Function 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)) 
     1061End 
     1062 
     1063// beam stop shape parameters 
     1064Function V_getBeamStopC2_height(fname) 
     1065        String fname 
     1066 
     1067        String path = "entry:instrument:beam_stop_C2:shape:height" 
     1068        return(V_getRealValueFromHDF5(fname,path)) 
     1069End 
     1070 
     1071Function V_getBeamStopC2_width(fname) 
     1072        String fname 
     1073 
     1074        String path = "entry:instrument:beam_stop_C2:shape:width" 
     1075        return(V_getRealValueFromHDF5(fname,path)) 
     1076End 
     1077 
     1078// == diameter if shape = CIRCLE 
     1079Function V_getBeamStopC2_size(fname) 
     1080        String fname 
     1081 
     1082        String path = "entry:instrument:beam_stop_C2:shape:size" 
     1083        return(V_getRealValueFromHDF5(fname,path)) 
     1084End 
     1085 
     1086Function/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)) 
     1092End 
     1093 
     1094 
     1095//beam_stop C3 (data folder) 
     1096Function/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)) 
     1102End 
     1103 
     1104Function 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)) 
     1109End 
     1110 
     1111//TODO -- not sure what this really means 
     1112Function V_getBeamStopC3num_beamstops(fname) 
     1113        String fname 
     1114 
     1115        String path = "entry:instrument:beam_stop_C3:num_beamstops" 
     1116        return(V_getRealValueFromHDF5(fname,path)) 
     1117End 
     1118 
     1119Function 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)) 
     1124End 
     1125 
     1126Function 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)) 
     1131End 
     1132 
     1133// beam stop shape parameters 
     1134Function V_getBeamStopC3_height(fname) 
     1135        String fname 
     1136 
     1137        String path = "entry:instrument:beam_stop_C3:shape:height" 
     1138        return(V_getRealValueFromHDF5(fname,path)) 
     1139End 
     1140 
     1141Function V_getBeamStopC3_width(fname) 
     1142        String fname 
     1143 
     1144        String path = "entry:instrument:beam_stop_C3:shape:width" 
     1145        return(V_getRealValueFromHDF5(fname,path)) 
     1146End 
     1147 
     1148// == diameter if shape = CIRCLE 
     1149Function V_getBeamStopC3_size(fname) 
     1150        String fname 
     1151 
     1152        String path = "entry:instrument:beam_stop_C3:shape:size" 
     1153        return(V_getRealValueFromHDF5(fname,path)) 
     1154End 
     1155 
     1156Function/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)) 
     1162End 
     1163 
     1164 
     1165 
    10601166 
    10611167//// INSTRUMENT/COLLIMATOR 
    10621168//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 
     1171Function/S V_getNumberOfGuides(fname) 
     1172        String fname 
     1173 
     1174        Variable num=60 
    10661175        String path = "entry:instrument:collimator:number_guides" 
    1067         return(V_getRealValueFromHDF5(fname,path)) 
     1176        return(V_getStringFromHDF5(fname,path,num)) 
    10681177End 
    10691178 
     
    11291238End 
    11301239 
    1131 // TODO -- write and X and Y version of this. Pixels are not square 
     1240// Pixels are not square 
    11321241// so the FHWM will be different in each direction. May need to return 
    11331242// "dummy" value for "B" detector if pixels there are square 
     
    11371246        String path = "entry:instrument:detector_"+detStr+":pixel_fwhm_x" 
    11381247 
    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)) 
     1249End 
     1250 
     1251// Pixels are not square 
    11481252// so the FHWM will be different in each direction. May need to return 
    11491253// "dummy" value for "B" detector if pixels there are square 
     
    11531257        String path = "entry:instrument:detector_"+detStr+":pixel_fwhm_y" 
    11541258 
    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)) 
    11611260End 
    11621261 
     
    11751274End 
    11761275 
    1177 // only defined for the "B" detector, and only to satisfy NXsas 
    1178 Function V_getDet_azimuthalAngle(fname,detStr) 
    1179         String fname,detStr 
    1180  
    1181         if(cmpstr(detStr,"B") == 0) 
    1182                 String path = "entry:instrument:detector_"+detStr+":azimuthal_angle" 
    1183                 return(V_getRealValueFromHDF5(fname,path)) 
    1184         else 
    1185                 return(0) 
    1186         endif 
    1187 End 
     1276//// 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 
    11881287 
    11891288Function V_getDet_beam_center_x(fname,detStr) 
     
    12071306//  does it need to be? 
    12081307// these lookups will fail if they have not been generated locally! 
    1209  
    12101308Function V_getDet_beam_center_x_mm(fname,detStr) 
    12111309        String fname,detStr 
     
    12201318//  does it need to be? 
    12211319// these lookups will fail if they have not been generated locally! 
    1222  
    12231320Function V_getDet_beam_center_y_mm(fname,detStr) 
    12241321        String fname,detStr 
     
    12301327 
    12311328 
    1232 // TODO -- write this function to return a WAVE with the data 
    1233 // either as a wave reference, or as an input parameter 
    12341329Function/WAVE V_getDetectorDataW(fname,detStr) 
    12351330        String fname,detStr 
     
    12411336End 
    12421337 
    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// 
    12451342Function/WAVE V_getDetectorDataErrW(fname,detStr) 
    12461343        String fname,detStr 
     
    12601357 
    12611358        String path = "entry:instrument:detector_"+detStr+":dead_time" 
    1262         WAVE w = V_getRealWaveFromHDF5(fname,path) 
    1263  
    1264         return w 
    1265 End 
    1266  
    1267  
    1268 Function/S V_getDetDescription(fname,detStr) 
    1269         String fname,detStr 
    1270  
    1271         String path = "entry:instrument:detector_"+detStr+":description" 
    1272         Variable num=60 
    1273         return(V_getStringFromHDF5(fname,path,num)) 
    1274 End 
    1275  
    1276 Function V_getDet_distance(fname,detStr) 
    1277         String fname,detStr 
    1278  
    1279         String path = "entry:instrument:detector_"+detStr+":distance" 
    1280         return(V_getRealValueFromHDF5(fname,path)) 
    1281 End 
    1282  
    1283 // only defined for the "B" detector, and only to satisfy NXsas 
    1284 Function V_getDet_equatorial_angle(fname,detStr) 
    1285         String fname,detStr 
    1286  
    12871359        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 
     1365End 
     1366 
     1367// for "B" only 
     1368Function 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) 
    12891373                return(V_getRealValueFromHDF5(fname,path)) 
    1290         else 
     1374        else     
    12911375                return(0) 
    12921376        endif 
    12931377End 
    12941378 
     1379Function/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)) 
     1385End 
     1386 
     1387Function V_getDet_distance(fname,detStr) 
     1388        String fname,detStr 
     1389 
     1390        String path = "entry:instrument:detector_"+detStr+":distance" 
     1391        return(V_getRealValueFromHDF5(fname,path)) 
     1392End 
     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 
    12951406Function/S V_getDetEventFileName(fname,detStr) 
    12961407        String fname,detStr 
     
    13151426End 
    13161427 
    1317 Function V_getDet_VerticalOffset(fname,detStr) 
    1318         String fname,detStr 
    1319  
    1320         String path = "entry:instrument:detector_"+detStr+":vertical_offset" 
    1321         return(V_getRealValueFromHDF5(fname,path)) 
    1322 End 
    1323  
    1324  
    1325 // only defined for the "B" detector, and only to satisfy NXsas 
    1326 Function V_getDet_polar_angle(fname,detStr) 
    1327         String fname,detStr 
    1328  
    1329         if(cmpstr(detStr,"B") == 0) 
    1330                 String path = "entry:instrument:detector_"+detStr+":polar_angle" 
    1331                 return(V_getRealValueFromHDF5(fname,path)) 
    1332         else 
    1333                 return(0) 
    1334         endif 
    1335 End 
    1336  
    1337 // only defined for the "B" detector, and only to satisfy NXsas 
    1338 Function V_getDet_rotational_angle(fname,detStr) 
    1339         String fname,detStr 
    1340  
    1341         if(cmpstr(detStr,"B") == 0) 
    1342                 String path = "entry:instrument:detector_"+detStr+":rotational_angle" 
    1343                 return(V_getRealValueFromHDF5(fname,path)) 
    1344         else 
    1345                 return(0) 
    1346         endif 
    1347 End 
     1428//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 
    13481459 
    13491460Function/S V_getDetSettings(fname,detStr) 
     
    13551466End 
    13561467 
    1357 // really has no meaning at all  
    1358 Function V_getDet_size(fname,detStr) 
    1359         String fname,detStr 
    1360  
    1361         String path = "entry:instrument:detector_"+detStr+":size" 
    1362         return(V_getRealValueFromHDF5(fname,path)) 
    1363 End 
     1468//// 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 
    13641475 
    13651476Function/S V_getDetType(fname,detStr) 
     
    14241535End 
    14251536 
    1426 // TODO -- be clear on how this is defined. 
    1427 Function V_getDet_tubeIndex(fname,detStr) 
    1428         String fname,detStr 
    1429  
    1430         String path = "entry:instrument:detector_"+detStr+":tube_index" 
    1431         if(cmpstr(detStr,"B") == 0) 
    1432                 return(0) 
    1433         else 
    1434                 return(V_getRealValueFromHDF5(fname,path)) 
    1435         endif 
    1436 End 
     1537//// 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 
    14371548 
    14381549Function/S V_getDet_tubeOrientation(fname,detStr) 
     
    15421653         
    15431654 
    1544 ///////  sample_aperture (data folder) 
    1545  
     1655 
     1656 
     1657///////  sample_aperture (1) (data folder) 
    15461658Function/S V_getSampleAp_Description(fname) 
    15471659        String fname 
     
    15581670        return(V_getRealValueFromHDF5(fname,path)) 
    15591671End 
     1672 
    15601673//      shape (data folder) 
    1561  
    15621674Function/S V_getSampleAp_shape(fname) 
    15631675        String fname 
     
    15681680End 
    15691681 
    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 
     1683Function/S V_getSampleAp_size(fname) 
     1684        String fname 
    15761685 
    15771686        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)) 
     1689End 
     1690 
     1691Function V_getSampleAp_height(fname) 
     1692        String fname 
     1693 
     1694        String path = "entry:instrument:sample_aperture:shape:height" 
     1695        return(V_getRealValueFromHDF5(fname,path)) 
     1696End 
     1697 
     1698Function V_getSampleAp_width(fname) 
     1699        String fname 
     1700 
     1701        String path = "entry:instrument:sample_aperture:shape:width" 
     1702        return(V_getRealValueFromHDF5(fname,path)) 
     1703End 
     1704 
     1705 
    15831706 
    15841707///////  sample_aperture_2 (data folder) 
     
    15981721        return(V_getRealValueFromHDF5(fname,path)) 
    15991722End 
     1723 
    16001724//      shape (data folder) 
    1601  
    16021725Function/S V_getSampleAp2_shape(fname) 
    16031726        String fname 
     
    16081731End 
    16091732 
    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 
     1734Function V_getSampleAp2_size(fname) 
     1735        String fname 
    16161736 
    16171737        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)) 
     1739End 
     1740 
     1741Function V_getSampleAp2_height(fname) 
     1742        String fname 
     1743 
     1744        String path = "entry:instrument:sample_aperture_2:shape:height" 
     1745        return(V_getRealValueFromHDF5(fname,path)) 
     1746End 
     1747 
     1748Function V_getSampleAp2_width(fname) 
     1749        String fname 
     1750 
     1751        String path = "entry:instrument:sample_aperture_2:shape:width" 
     1752        return(V_getRealValueFromHDF5(fname,path)) 
     1753End 
     1754 
     1755         
    16241756//////  sample_table (data folder) 
    16251757// location  = "CHAMBER" or HUBER 
     
    16941826        return(V_getRealValueFromHDF5(fname,path)) 
    16951827End 
     1828 
    16961829//      shape (data folder) 
    1697  
    16981830Function/S V_getSourceAp_shape(fname) 
    16991831        String fname 
     
    17041836End 
    17051837 
    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 
     1839Function/S V_getSourceAp_size(fname) 
     1840        String fname 
    17121841 
    17131842        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)) 
     1845End 
     1846 
     1847Function V_getSourceAp_height(fname) 
     1848        String fname 
     1849 
     1850        String path = "entry:instrument:source_aperture:shape:height" 
     1851        return(V_getRealValueFromHDF5(fname,path)) 
     1852End 
     1853 
     1854Function V_getSourceAp_width(fname) 
     1855        String fname 
     1856 
     1857        String path = "entry:instrument:source_aperture:shape:width" 
     1858        return(V_getRealValueFromHDF5(fname,path)) 
     1859End 
    17211860 
    17221861 
     
    17251864//////// SAMPLE 
    17261865 
    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) 
     1867Function/S V_getSamplePosition(fname) 
    17301868        String fname 
    17311869         
    17321870        String path = "entry:sample:changer_position"    
    1733         return(V_getRealValueFromHDF5(fname,path)) 
     1871        Variable num=60 
     1872        return(V_getStringFromHDF5(fname,path,num)) 
    17341873end 
    17351874 
    17361875// sample label  
    1737 // TODO: value of num is currently not used 
    17381876Function/S V_getSampleDescription(fname) 
    17391877        String fname 
     
    17431881        return(V_getStringFromHDF5(fname,path,num)) 
    17441882End 
     1883 
     1884// for a z-stage?? 
     1885Function V_getSampleElevation(fname) 
     1886        String fname 
     1887         
     1888        String path = "entry:sample:elevation"   
     1889        return(V_getRealValueFromHDF5(fname,path)) 
     1890end 
    17451891 
    17461892//no meaning to this... 
     
    17851931         
    17861932        String path = "entry:sample:thickness"   
     1933        return(V_getRealValueFromHDF5(fname,path)) 
     1934end 
     1935 
     1936Function V_getSampleTranslation(fname) 
     1937        String fname 
     1938         
     1939        String path = "entry:sample:translation"         
    17871940        return(V_getRealValueFromHDF5(fname,path)) 
    17881941end 
     
    18642017End 
    18652018 
    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 
    18992054 
    19002055 
     
    19102065 
    19112066// TODO -- needs to be a WAVE 
    1912 Function V_getAbsolute_Scaling(fname,outW) 
    1913         String fname 
    1914         Wave outW 
     2067Function/WAVE V_getAbsolute_Scaling(fname) 
     2068        String fname 
    19152069         
    19162070        String path = "entry:reduction:absolute_scaling"         
    19172071        WAVE w = V_getRealWaveFromHDF5(fname,path) 
    1918  
    1919         outW = w 
    1920         return(0) 
     2072         
     2073        return w 
    19212074end 
    19222075 
    19232076// TODO -- needs to be a WAVE 
    1924 Function V_getBoxCoordinates(fname,outW) 
    1925         String fname 
    1926         Wave outW 
     2077Function/WAVE V_getBoxCoordinates(fname) 
     2078        String fname 
    19272079         
    19282080        String path = "entry:reduction:box_coordinates"  
    19292081        WAVE w = V_getRealWaveFromHDF5(fname,path) 
    19302082 
    1931         outW = w 
    1932         return(0) 
     2083        return w 
    19332084end 
    19342085 
     
    20002151End 
    20012152 
     2153Function/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)) 
     2159End 
     2160 
     2161Function/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)) 
     2167End 
     2168 
    20022169 
    20032170//whole detector trasmission 
     
    20292196 
    20302197 
    2031 // TODO -- needs to be a WAVE 
    2032 Function V_getPolSANS_cellParams(fname,outW) 
    2033         String fname 
    2034         Wave outW 
     2198Function/WAVE V_getPolSANS_cellParams(fname) 
     2199        String fname 
    20352200         
    20362201        String path = "entry:reduction:pol_sans:cell_parameters"         
    20372202        WAVE w = V_getRealWaveFromHDF5(fname,path) 
    20382203 
    2039         outW = w 
    2040         return(0) 
     2204        return w 
    20412205end 
    20422206 
     
    20622226//                      thumbnail (data folder) 
    20632227 
    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 
Note: See TracChangeset for help on using the changeset viewer.