- Timestamp:
- Oct 2, 2012 3:51:06 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sans/Dev/trunk/NCNR_User_Procedures/Reduction/Polarization/Pol_FlipperPanel.ipf
r863 r864 933 933 934 934 //////////////////////////////////////////// 935 936 937 938 /////////////////////// 939 // 940 // 941 // Utilities to write out waves as Igor Text 942 // 943 // 944 // -- TODO 945 // -- add flags for SetScale, Note, DimLabels, text? (or a separate function) 946 // x- add a function for 2D waves. wfprintf is not 2D aware... 947 948 949 Function testWriteITX() 950 951 Variable refnum 952 String fname="a_test.itx" 953 // WAVE w=root:testMat 954 // WAVE/T w=root:testText 955 WAVE/T w=root:Packages:NIST:Polarization:ListWave_0_UU 956 957 958 Open/P=home refnum as fname // creates a new file, or overwrites the existing file 959 960 fprintf refNum,"IGOR\r" 961 962 // Write1DWaveToITX(w,refnum) 963 // Write2DWaveToITX(w,refnum) 964 // Write1DTextWaveToITX(w,refnum) 965 Write2DTextWaveToITX(w,refnum) 966 Close refnum 967 968 return(0) 969 end 970 971 // writes out a 1D wave as Igor Text 972 // 973 // the wave and a valid refNum to an open file are passed 974 // 975 // the file is NOT closed when exiting 976 // 977 Function Write1DWaveToITX(w,refnum) 978 Wave w 979 Variable refNum 980 981 String tmpStr,waveStr 982 waveStr=NameOfWave(w) 983 984 fprintf refNum,"WAVES/D\t%s\r",waveStr 985 986 fprintf refNum,"BEGIN\r" 987 988 wfprintf refnum, "\t%g\r",w 989 990 fprintf refNum,"END\r" 991 992 fprintf refnum,"X SetScale/P x 0,1,\"\", %s; SetScale y 0,0,\"\", %s\r",waveStr,waveStr 993 994 // X SetScale/P x 0,1,"", fyy; SetScale y 0,0,"", fyy 995 996 997 return(0) 998 End 999 1000 // writes out a 1D TEXT wave as Igor Text 1001 // 1002 // the wave and a valid refNum to an open file are passed 1003 // 1004 // the file is NOT closed when exiting 1005 // 1006 Function Write1DTextWaveToITX(w,refnum) 1007 Wave/T w 1008 Variable refNum 1009 1010 String tmpStr,waveStr 1011 waveStr=NameOfWave(w) 1012 1013 fprintf refNum,"WAVES/T\t%s\r",waveStr 1014 1015 fprintf refNum,"BEGIN\r" 1016 1017 wfprintf refnum, "\t\"%s\"\r",w 1018 1019 fprintf refNum,"END\r" 1020 1021 fprintf refnum,"X SetScale/P x 0,1,\"\", %s; SetScale y 0,0,\"\", %s\r",waveStr,waveStr 1022 1023 return(0) 1024 End 1025 1026 // writes out a 2D TEXT wave as Igor Text 1027 // 1028 // the wave and a valid refNum to an open file are passed 1029 // 1030 // the file is NOT closed when exiting 1031 // 1032 Function Write2DTextWaveToITX(w,refnum) 1033 Wave/T w 1034 Variable refNum 1035 1036 String tmpStr,waveStr 1037 Variable row,col,ii,jj,tmp 1038 1039 row=DimSize(w, 0 ) 1040 col=DimSize(w, 1 ) 1041 waveStr=NameOfWave(w) 1042 1043 fprintf refNum,"WAVES/T/N=(%d,%d)\t%s\r",row,col,waveStr 1044 fprintf refNum,"BEGIN\r" 1045 1046 for(ii=0;ii<row;ii+=1) 1047 for(jj=0;jj<col;jj+=1) 1048 fprintf refnum, "\t\"%s\"",w[ii][jj] 1049 endfor 1050 fprintf refnum, "\r" 1051 endfor 1052 1053 1054 fprintf refNum,"END\r" 1055 1056 fprintf refnum,"X SetScale/P x 0,1,\"\", %s; SetScale/P y 0,1,\"\", %s; SetScale d 0,0,\"\", %s\r",waveStr,waveStr,waveStr 1057 1058 // X SetScale/P x 0,1,"", testMat; SetScale/P y 0,1,"", testMat; SetScale d 0,0,"", testMat 1059 1060 1061 1062 return(0) 1063 End 1064 1065 // writes out a 2D wave as Igor Text 1066 // 1067 // the wave and a valid refNum to an open file are passed 1068 // 1069 // the file is NOT closed when exiting 1070 // 1071 Function Write2DWaveToITX(w,refnum) 1072 Wave w 1073 Variable refNum 1074 1075 String tmpStr,waveStr 1076 Variable row,col,ii,jj,tmp 1077 1078 row=DimSize(w, 0 ) 1079 col=DimSize(w, 1 ) 1080 waveStr=NameOfWave(w) 1081 1082 fprintf refNum,"WAVES/D/N=(%d,%d)\t%s\r",row,col,waveStr 1083 fprintf refNum,"BEGIN\r" 1084 1085 for(ii=0;ii<row;ii+=1) 1086 for(jj=0;jj<col;jj+=1) 1087 fprintf refnum, "\t%g",w[ii][jj] 1088 endfor 1089 fprintf refnum, "\r" 1090 endfor 1091 1092 1093 fprintf refNum,"END\r" 1094 1095 fprintf refnum,"X SetScale/P x 0,1,\"\", %s; SetScale/P y 0,1,\"\", %s; SetScale d 0,0,\"\", %s\r",waveStr,waveStr,waveStr 1096 1097 // X SetScale/P x 0,1,"", testMat; SetScale/P y 0,1,"", testMat; SetScale d 0,0,"", testMat 1098 1099 1100 1101 return(0) 1102 End 1103 1104 // root:Packages:NIST:Polarization:Cells: 1105 // save the state of the pink panel, as CellParamSaveState.itx 1106 Function SaveCellParameterTable() 1107 1108 SetDataFolder root:Packages:NIST:Polarization:Cells: 1109 1110 // the waves are: 1111 // CellName (T) 1112 // lambda 1113 // Te, err_Te 1114 // mu, err_mu 1115 1116 Variable refnum 1117 String fname="CellParamSaveState.itx" 1118 // WAVE w=root:testMat 1119 WAVE/T cellName=root:Packages:NIST:Polarization:Cells:CellName 1120 WAVE lambda=root:Packages:NIST:Polarization:Cells:lambda 1121 WAVE Te=root:Packages:NIST:Polarization:Cells:Te 1122 WAVE err_Te=root:Packages:NIST:Polarization:Cells:err_Te 1123 WAVE mu=root:Packages:NIST:Polarization:Cells:mu 1124 WAVE err_mu=root:Packages:NIST:Polarization:Cells:err_mu 1125 1126 Open/P=home refnum as fname // creates a new file, or overwrites the existing file 1127 fprintf refNum,"IGOR\r" 1128 1129 Write1DTextWaveToITX(cellName,refnum) 1130 fprintf refNum,"\r" 1131 1132 Write1DWaveToITX(lambda,refnum) 1133 fprintf refNum,"\r" 1134 1135 Write1DWaveToITX(Te,refnum) 1136 fprintf refNum,"\r" 1137 1138 Write1DWaveToITX(err_Te,refnum) 1139 fprintf refNum,"\r" 1140 1141 Write1DWaveToITX(mu,refnum) 1142 fprintf refNum,"\r" 1143 1144 Write1DWaveToITX(err_mu,refnum) 1145 1146 Close refnum 1147 1148 SetDataFolder root: 1149 1150 return(0) 1151 End 1152 1153 //could use /P=home, but the whole point is that this is for users without Igor licenses, that can't save... so "home" won't exist... 1154 Function RestoreCellParameterTable() 1155 1156 SetDataFolder root:Packages:NIST:Polarization:Cells: 1157 String fname="CellParamSaveState.itx" 1158 1159 // LoadWave/P=home/O/T fname 1160 LoadWave/O/T fname 1161 1162 SetDataFolder root: 1163 return(0) 1164 End 1165 1166 1167 // saves the parameters for the cell decay table 1168 // 1169 // fname = "CellDecayPanelSaveState.itx" 1170 // 1171 // 1172 Function SaveCellDecayTable() 1173 1174 SetDataFolder root:Packages:NIST:Polarization:Cells: 1175 1176 String listStr,item,fname,noteStr,wStr 1177 Variable num,ii,refnum 1178 1179 fname = "CellDecayPanelSaveState.itx" 1180 1181 // get a list of the Decay waves 1182 listStr=WaveList("Decay_*",";","") 1183 num=ItemsInList(listStr,";") 1184 // print listStr 1185 1186 Open/P=home refnum as fname // creates a new file, or overwrites the existing file 1187 fprintf refNum,"IGOR\r" 1188 1189 // Save each of the decay waves, then be sure to add the DimLabels and Wave Note 1190 for(ii=0;ii<num;ii+=1) 1191 item = StringFromList(ii, listStr,";") 1192 Wave w = $item 1193 wStr=NameOfWave(w) 1194 noteStr = note(w) 1195 1196 Write2DWaveToITX(w,refnum) 1197 1198 // fprintf refNum,"X SetScale/P x 0,1,\"\", %s; SetScale/P y 0,1,\"\", %s; SetScale d 0,0,\"\", %s\r",wStr,wStr,wStr 1199 fprintf refNum,"X SetDimLabel 1, 0, 'Trans_He_In?', %s\r",wStr 1200 fprintf refNum,"X SetDimLabel 1, 1, 'Trans_He_Out?', %s\r",wStr 1201 fprintf refNum,"X SetDimLabel 1, 2, 'Blocked?', %s\r",wStr 1202 fprintf refNum,"X SetDimLabel 1, 3, mu_star, %s\r",wStr 1203 fprintf refNum,"X SetDimLabel 1, 4, Effective_Pol, %s\r",wStr 1204 fprintf refNum,"X SetDimLabel 1, 5, Atomic_Pol, %s\r",wStr 1205 fprintf refNum,"X SetDimLabel 1, 6, T_Major, %s\r",wStr 1206 fprintf refNum,"X SetDimLabel 1, 7, 'Include?', %s\r",wStr 1207 fprintf refNum,"X SetDimLabel 1, 8, elapsed_hr, %s\r",wStr 1208 fprintf refNum,"X Note %s, \"%s\"\r",wStr,noteStr 1209 1210 fprintf refNum,"\r" //space between waves 1211 endfor 1212 1213 // get a list of the DecayCalc_ waves 1214 listStr=WaveList("DecayCalc_*",";","") 1215 num=ItemsInList(listStr,";") 1216 1217 // Save each of the DecayCalc waves, and add all of the proper dim labels 1218 for(ii=0;ii<num;ii+=1) 1219 item = StringFromList(ii, listStr,";") 1220 Wave w = $item 1221 wStr=NameOfWave(w) 1222 1223 Write2DWaveToITX(w,refnum) 1224 1225 // fprintf refNum,"X SetScale/P x 0,1,\"\", %s; SetScale/P y 0,1,\"\", %s; SetScale d 0,0,\"\", %s\r",wStr,wStr,wStr 1226 fprintf refNum,"X SetDimLabel 1, 0, CR_Trans_He_In, %s\r",wStr 1227 fprintf refNum,"X SetDimLabel 1, 1, err_CR_Trans_He_In, %s\r",wStr 1228 fprintf refNum,"X SetDimLabel 1, 2, CR_Trans_He_Out, %s\r",wStr 1229 fprintf refNum,"X SetDimLabel 1, 3, err_CR_Trans_He_Out, %s\r",wStr 1230 fprintf refNum,"X SetDimLabel 1, 4, CR_Blocked, %s\r",wStr 1231 fprintf refNum,"X SetDimLabel 1, 5, err_CR_Blocked, %s\r",wStr 1232 fprintf refNum,"X SetDimLabel 1, 6, muPo, %s\r",wStr 1233 fprintf refNum,"X SetDimLabel 1, 7, err_muPo, %s\r",wStr 1234 fprintf refNum,"X SetDimLabel 1, 8, Po, %s\r",wStr 1235 fprintf refNum,"X SetDimLabel 1, 9, err_Po, %s\r",wStr 1236 fprintf refNum,"X SetDimLabel 1, 10, Tmaj, %s\r",wStr 1237 fprintf refNum,"X SetDimLabel 1, 11, err_Tmaj, %s\r",wStr 1238 fprintf refNum,"X SetDimLabel 1, 12, gamm, %s\r",wStr 1239 fprintf refNum,"X SetDimLabel 1, 13, err_gamm, %s\r",wStr 1240 1241 fprintf refNum,"\r" 1242 endfor 1243 1244 Close refnum 1245 1246 SetDataFolder root: 1247 return(0) 1248 End 1249 1250 // restores the waves for the cell decay table 1251 // 1252 // fname = "CellDecayPanelSaveState.itx" 1253 // 1254 // 1255 Function RestoreCellDecayTable() 1256 1257 SetDataFolder root:Packages:NIST:Polarization:Cells: 1258 1259 String listStr,item,fname,noteStr,wStr 1260 Variable num,ii,refnum 1261 1262 fname = "CellDecayPanelSaveState.itx" 1263 LoadWave/O/T fname 1264 1265 SetDataFolder root: 1266 return(0) 1267 End 1268 1269 1270 1271 //////// 1272 // 1273 // save the state of the Flipper panel 1274 // 1275 // fname = "FlipperPanelSaveState.itx" 1276 // 1277 Function SaveFlipperTable() 1278 1279 SetDataFolder root:Packages:NIST:Polarization:Cells: 1280 1281 String listStr,item,fname,noteStr,wStr 1282 Variable num,ii,refnum 1283 1284 fname = "FlipperPanelSaveState.itx" 1285 1286 // get a list of the "Condition" waves 1287 listStr=WaveList("Cond_*",";","") 1288 num=ItemsInList(listStr,";") 1289 // print listStr 1290 1291 Open/P=home refnum as fname // creates a new file, or overwrites the existing file 1292 fprintf refNum,"IGOR\r" 1293 1294 // Save each of the cond waves, then be sure to add the DimLabels and Wave Note 1295 for(ii=0;ii<num;ii+=1) 1296 item = StringFromList(ii, listStr,";") 1297 Wave w = $item 1298 wStr=NameOfWave(w) 1299 noteStr = note(w) 1300 1301 Write2DWaveToITX(w,refnum) 1302 1303 // fprintf refNum,"X SetScale/P x 0,1,\"\", %s; SetScale/P y 0,1,\"\", %s; SetScale d 0,0,\"\", %s\r",wStr,wStr,wStr 1304 fprintf refNum,"X SetDimLabel 1, 0, 'UU_Trans?', %s\r",wStr 1305 fprintf refNum,"X SetDimLabel 1, 1, 'DU_Trans?', %s\r",wStr 1306 fprintf refNum,"X SetDimLabel 1, 2, 'DD_Trans?', %s\r",wStr 1307 fprintf refNum,"X SetDimLabel 1, 3, 'UD_Trans?', %s\r",wStr 1308 fprintf refNum,"X SetDimLabel 1, 4, 'Blocked?', %s\r",wStr 1309 fprintf refNum,"X SetDimLabel 1, 5, Pol_SM_FL, %s\r",wStr 1310 fprintf refNum,"X SetDimLabel 1, 6, Pol_SM, %s\r",wStr 1311 fprintf refNum,"X SetDimLabel 1, 7, 'Include?', %s\r",wStr 1312 fprintf refNum,"X Note %s, \"%s\"\r",wStr,noteStr 1313 1314 fprintf refNum,"\r" //space between waves 1315 endfor 1316 1317 // get a list of the CondCalc_ waves (2d, with dimlabels) 1318 listStr=WaveList("CondCalc_*",";","") 1319 num=ItemsInList(listStr,";") 1320 1321 // Save each of the DecayCalc waves, and add all of the proper dim labels 1322 for(ii=0;ii<num;ii+=1) 1323 item = StringFromList(ii, listStr,";") 1324 Wave w = $item 1325 wStr=NameOfWave(w) 1326 1327 Write2DWaveToITX(w,refnum) 1328 1329 // fprintf refNum,"X SetScale/P x 0,1,\"\", %s; SetScale/P y 0,1,\"\", %s; SetScale d 0,0,\"\", %s\r",wStr,wStr,wStr 1330 fprintf refNum,"X SetDimLabel 1, 0, CR_UU, %s\r",wStr 1331 fprintf refNum,"X SetDimLabel 1, 1, err_CR_UU, %s\r",wStr 1332 fprintf refNum,"X SetDimLabel 1, 2, CR_DU, %s\r",wStr 1333 fprintf refNum,"X SetDimLabel 1, 3, err_CR_DU, %s\r",wStr 1334 fprintf refNum,"X SetDimLabel 1, 4, CR_DD, %s\r",wStr 1335 fprintf refNum,"X SetDimLabel 1, 5, err_CR_DD, %s\r",wStr 1336 fprintf refNum,"X SetDimLabel 1, 6, CR_UD, %s\r",wStr 1337 fprintf refNum,"X SetDimLabel 1, 7, err_CR_UD, %s\r",wStr 1338 fprintf refNum,"X SetDimLabel 1, 8, CR_Blocked, %s\r",wStr 1339 fprintf refNum,"X SetDimLabel 1, 9, err_CR_Blocked, %s\r",wStr 1340 fprintf refNum,"X SetDimLabel 1, 10, P_sm_f, %s\r",wStr 1341 fprintf refNum,"X SetDimLabel 1, 11, err_P_sm_f, %s\r",wStr 1342 fprintf refNum,"X SetDimLabel 1, 12, P_sm, %s\r",wStr 1343 fprintf refNum,"X SetDimLabel 1, 13, err_P_sm, %s\r",wStr 1344 1345 fprintf refNum,"\r" 1346 endfor 1347 1348 // get a list of the CondCell_ waves (these are text, 1d) 1349 listStr=WaveList("CondCell_*",";","") 1350 num=ItemsInList(listStr,";") 1351 1352 // Save each of the DecayCalc waves, and add all of the proper dim labels 1353 for(ii=0;ii<num;ii+=1) 1354 item = StringFromList(ii, listStr,";") 1355 Wave w = $item 1356 wStr=NameOfWave(w) 1357 1358 Write1DTextWaveToITX(w,refnum) 1359 1360 // fprintf refnum,"X SetScale/P x 0,1,\"\", wStr; SetScale y 0,0,\"\", %s\r",wStr 1361 1362 fprintf refNum,"\r" 1363 endfor 1364 1365 Close refnum 1366 1367 SetDataFolder root: 1368 return(0) 1369 end 1370 1371 1372 1373 // restores the state of the Flipper panel 1374 // 1375 // fname = "FlipperPanelSaveState.itx" 1376 // 1377 // 1378 Function RestoreFlipperTable() 1379 1380 SetDataFolder root:Packages:NIST:Polarization:Cells: 1381 1382 String listStr,item,fname,noteStr,wStr 1383 Variable num,ii,refnum 1384 1385 fname = "FlipperPanelSaveState.itx" 1386 LoadWave/O/T fname 1387 1388 SetDataFolder root: 1389 return(0) 1390 End
Note: See TracChangeset
for help on using the changeset viewer.