Ignore:
Timestamp:
Oct 2, 2012 3:51:06 PM (10 years ago)
Author:
srkline
Message:

Changes to the polarization reduction, tickets#355, #356, #362,

--saving of the panel states is now something that can be done from a menu item. (there is too much clutter on the panels to add more buttons, unless there is a great outcry).
--"?" has ben added to table columns that require input - coloring of individual columns can't be done with the matrices in the table.
-- the background is now polarization-independent
--the flow of the protocol execution now forces are-load and re--polarization correction every time for SAM, EMP, BGD (trivial) so that the correct files are in the correct locations, every time.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sans/Dev/trunk/NCNR_User_Procedures/Reduction/Polarization/Pol_FlipperPanel.ipf

    r863 r864  
    933933 
    934934//////////////////////////////////////////// 
     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 
     949Function 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) 
     969end 
     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// 
     977Function 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) 
     998End 
     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// 
     1006Function 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) 
     1024End 
     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// 
     1032Function 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) 
     1063End 
     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// 
     1071Function 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) 
     1102End 
     1103 
     1104// root:Packages:NIST:Polarization:Cells: 
     1105// save the state of the pink panel, as CellParamSaveState.itx 
     1106Function 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) 
     1151End 
     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... 
     1154Function 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) 
     1164End 
     1165 
     1166 
     1167// saves the parameters for the cell decay table 
     1168// 
     1169//      fname = "CellDecayPanelSaveState.itx" 
     1170// 
     1171// 
     1172Function 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) 
     1248End 
     1249 
     1250// restores the waves for the cell decay table 
     1251// 
     1252//      fname = "CellDecayPanelSaveState.itx" 
     1253// 
     1254// 
     1255Function 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) 
     1267End 
     1268 
     1269 
     1270 
     1271//////// 
     1272// 
     1273// save the state of the Flipper panel 
     1274// 
     1275//      fname = "FlipperPanelSaveState.itx" 
     1276// 
     1277Function 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) 
     1369end 
     1370 
     1371 
     1372 
     1373// restores the state of the Flipper panel 
     1374// 
     1375//      fname = "FlipperPanelSaveState.itx" 
     1376// 
     1377// 
     1378Function 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) 
     1390End 
Note: See TracChangeset for help on using the changeset viewer.