1 #pragma rtGlobals=3 // Use modern global access method and strict wave access. 3 #pragma IgorVersion = 6.2 4 #pragma ModuleName = PearlAnglescanProcess 5 #include "pearl-vector-operations" 6 #include "pearl-polar-coordinates" 7 #include <New Polar Graphs> 118 variable snx = dimsize(strip, 0)
119 variable sny = dimsize(strip, 1)
121 variable sq1hi = max(qlo-1, 0)
122 variable sq2lo = min(qhi+1, sny - 1)
123 variable sq2hi = dimsize(strip, 1) - 1
127 variable dny = sny - (sq2lo - sq1hi + 1)
129 variable dq1hi = sq1hi
130 variable dq2lo = dq1hi + 1
131 variable dq2hi = dny - 1
132 variable q1ofs = sq1lo - dq1lo
133 variable q2ofs = sq2lo - dq2lo
135 duplicate /free strip, strip_copy
136 redimension /n=(dnx,dny) strip
137 strip[][dq1lo,dq1hi] = strip_copy[p][q + q1ofs]
138 strip[][dq2lo,dq2hi] = strip_copy[p][q + q2ofs]
140 duplicate /free theta, theta_copy
141 redimension /n=(dny) theta
142 theta[dq1lo,dq1hi] = theta_copy[p + q1ofs]
143 theta[dq2lo,dq2hi] = theta_copy[p + q2ofs]
145 duplicate /free tilt, tilt_copy
146 redimension /n=(dny) tilt
147 tilt[dq1lo,dq1hi] = tilt_copy[p + q1ofs]
148 tilt[dq2lo,dq2hi] = tilt_copy[p + q2ofs]
150 duplicate /free phi, phi_copy
151 redimension /n=(dny) phi
152 phi[dq1lo,dq1hi] = phi_copy[p + q1ofs]
153 phi[dq2lo,dq2hi] = phi_copy[p + q2ofs]
189 variable smooth_method
190 variable smooth_factor
193 if (ParamIsDefault(smooth_method))
196 if (ParamIsDefault(smooth_factor))
197 switch(smooth_method)
205 if (ParamIsDefault(check))
213 extract /free /indx raw_dist, clean_index, numtype(raw_dist) == 0
214 duplicate /free raw_dist, dist, dist_x
215 redimension /n=(numpnts(clean_index)) dist, dist_x
216 dist = raw_dist[clean_index[p]]
217 dist_x = pnt2x(raw_dist, clean_index[p])
218 variable div = mean(dist)
222 duplicate /o raw_dist, check_dist
223 check_dist = numtype(raw_dist) == 0 ? interp(x, dist_x, dist) : nan
227 switch(smooth_method)
229 Smooth /B /E=3 smooth_factor, dist
232 Smooth /E=3 smooth_factor, dist
235 make /n=1 /d /free fit_params
236 fit_scienta_ang_transm(raw_dist, fit_params)
237 duplicate /free raw_dist, dist, dist_x
239 dist = scienta_ang_transm(fit_params, x)
242 loess /smth=(smooth_factor) srcWave=dist, factors={dist_x}
247 duplicate /o raw_dist, check_smoo
248 check_smoo = interp(x, dist_x, dist)
253 strip /= interp(x, dist_x, dist)
287 variable theta_offset
291 if (ParamIsDefault(check))
294 if (ParamIsDefault(theta_offset))
297 if (ParamIsDefault(theta_range))
305 duplicate /free dist, dist_smoo
306 duplicate /free theta, theta_int
307 theta_int = theta - theta_offset
308 duplicate /free phi, phi_int
309 setscale /p x phi_int[0], phi_int[1] - phi_int[0], waveunits(phi, -1), dist, dist_smoo
311 extract /free /indx dist, red_idx, theta_int < theta_range
312 duplicate /free red_idx, red_dist, red_phi
313 red_dist = dist[red_idx]
314 red_phi = phi_int[red_idx]
316 variable wavg = mean(red_dist)
317 make /n=4 /d /free coef
318 coef[0] = {wavg, wavg/100, pi/180, 0}
319 CurveFit /q /h=
"0010" /g /w=2 sin, kwcWave=coef, red_dist /x=red_phi
320 dist_smoo = coef[0] + coef[1] * sin(coef[2] * phi_int[p] + coef[3])
324 strip = strip / dist_smoo[q] * coef[0]
329 duplicate /o dist, check_dist
330 duplicate /o dist_smoo, check_smoo
331 setscale /p x dimoffset(dist,0), dimdelta(dist,0), waveunits(dist,0), check_dist, check_smoo
369 variable theta_offset
370 variable smooth_method
371 variable smooth_factor
374 if (ParamIsDefault(check))
377 if (ParamIsDefault(theta_offset))
380 if (ParamIsDefault(smooth_method))
383 if (ParamIsDefault(smooth_factor))
391 duplicate /free dist, dist_smoo
392 duplicate /free theta, theta_int
393 theta_int = theta - theta_offset
394 setscale /p x theta_int[0], theta_int[1] - theta_int[0], waveunits(theta,-1), dist, dist_smoo
395 variable nx = dimsize(strip, 0)
398 switch(smooth_method)
400 Smooth /B /E=3 smooth_factor, dist_smoo
403 Smooth /E=3 smooth_factor, dist_smoo
406 loess /dest=dist_smoo /smth=(smooth_factor) srcWave=dist, factors={theta_int}
409 for (ix = 0; ix < nx; ix += 1)
411 if (smooth_factor > 1)
412 CurveFit /nthr=0 /q /w=2 poly smooth_factor+1, dist /x=theta_int /d=dist_smoo
414 CurveFit /nthr=0 /q /w=2 line, dist /x=theta_int /d=dist_smoo
416 strip[ix,ix][] /= dist_smoo[q]
424 strip /= dist_smoo[q]
429 duplicate /o dist, check_dist
430 duplicate /o dist_smoo, check_smoo
431 setscale /p x dimoffset(dist,0), dimdelta(dist,0), waveunits(dist,0), check_dist, check_smoo
468 variable theta_offset
469 variable smooth_method
470 variable smooth_factor
473 if (ParamIsDefault(check))
476 if (ParamIsDefault(theta_offset))
479 if (ParamIsDefault(smooth_method))
482 if (ParamIsDefault(smooth_factor))
490 duplicate /free dist, dist_smoo
491 duplicate /free theta, theta_int
492 theta_int = theta - theta_offset
493 setscale /p x theta_int[0], theta_int[1] - theta_int[0], waveunits(theta,-1), dist, dist_smoo
494 variable nx = dimsize(strip, 0)
497 switch(smooth_method)
499 loess /dest=dist_smoo /smth=(smooth_factor) srcWave=dist, factors={theta_int, phi}
502 abort
"smooth method not supported" 507 strip /= dist_smoo[q]
512 duplicate /o dist, check_dist
513 duplicate /o dist_smoo, check_smoo
514 setscale /p x dimoffset(dist,0), dimdelta(dist,0), waveunits(dist,0), check_dist, check_smoo
526 variable theta_offset
527 variable smooth_method
528 variable smooth_factor
531 if (ParamIsDefault(check))
534 if (ParamIsDefault(theta_offset))
537 if (ParamIsDefault(smooth_method))
540 if (ParamIsDefault(smooth_factor))
548 duplicate /free dist, dist_smoo
549 duplicate /free theta, theta_int
550 theta_int = theta - theta_offset
551 setscale /p x theta_int[0], theta_int[1] - theta_int[0], waveunits(theta,-1), dist, dist_smoo
554 duplicate /free theta_int, d1_theta, d2_theta
555 Differentiate /METH=2 theta_int /D=d1_theta
556 Differentiate /METH=2 d1_theta /D=d2_theta
557 d2_theta = abs(d2_theta)
559 FindLevels /edge=1 /p /q /d=w_levels d2_theta, 0.1
561 abort "unrecognized scanning scheme"
563 w_levels = ceil(w_levels)
564 InsertPoints 0, 1, w_levels
566 InsertPoints numpnts(w_levels), 1, w_levels
567 w_levels[numpnts(w_levels)-1] = numpnts(theta_int)
569 variable n_scans = numpnts(w_levels) - 1
572 for (i_scan = 0; i_scan < n_scans; i_scan += 1)
573 p1 = w_levels[i_scan]
574 p2 = w_levels[i_scan+1] - 1
575 duplicate /free /r=[p1, p2] dist, dist_piece, smooth_piece
576 duplicate /free /r=[p1, p2] theta_int, theta_piece
577 switch(smooth_method)
579 loess /dest=smooth_piece /smth=(smooth_factor) srcWave=dist_piece, factors={theta_piece}
582 abort
"smooth method not supported" 584 dist_smoo[p1, p2] = smooth_piece[p - p1]
589 strip /= dist_smoo[q]
594 duplicate /o dist, check_dist
595 duplicate /o dist_smoo, check_smoo
596 setscale /p x dimoffset(dist,0), dimdelta(dist,0), waveunits(dist,0), check_dist, check_smoo
616 variable theta_offset
617 variable smooth_method
618 variable smooth_factor
621 if (ParamIsDefault(check))
624 if (ParamIsDefault(theta_offset))
627 if (ParamIsDefault(smooth_method))
630 if (ParamIsDefault(smooth_factor))
634 variable nx = dimsize(strip, 0)
635 variable ny = dimsize(strip, 1)
637 duplicate /free strip, dist, alpha_int, theta_int
638 theta_int = theta[q] - theta_offset
639 alpha_int = dimoffset(strip, 0) + p * dimdelta(strip, 0)
640 redimension /n=(nx * ny) dist, alpha_int, theta_int
642 switch(smooth_method)
644 loess /dest=dist_smoo /smth=(smooth_factor) srcWave=dist, factors={alpha_int, theta_int}
645 redimension /n=(nx, ny) dist_smoo
648 Abort
"undefined smooth method" 660 duplicate /o dist_smoo, check_smoo
678 variable plo = round((xlo - dimoffset(strip, 0)) / dimdelta(strip, 0))
679 variable phi = round((xhi - dimoffset(strip, 0)) / dimdelta(strip, 0))
680 xlo = plo * dimdelta(strip, 0) + dimoffset(strip, 0)
681 xhi = phi * dimdelta(strip, 0) + dimoffset(strip, 0)
682 variable nx = phi - plo + 1
683 variable ny = dimsize(strip, 1)
685 duplicate /free strip, strip_copy
686 redimension /n=(nx,ny) strip
687 strip = strip_copy[p + plo][q]
688 setscale /i x xlo, xhi, waveunits(strip, 0), strip
713 extract /indx /free theta, idx, (theta >= theta_lo) && (theta <= theta_hi)
714 variable nx = dimsize(strip, 0)
715 variable ny = numpnts(idx)
717 theta[0, ny-1] = theta[idx]
718 tilt[0, ny-1] = tilt[idx]
719 phi[0, ny-1] = phi[idx]
720 redimension /n=(ny) theta, tilt, phi
722 duplicate /free strip, strip_copy
723 redimension /n=(nx,ny) strip
724 strip = strip_copy[p][idx[q]]
769 function
pizza_service(data, nickname, theta_offset, tilt_offset, phi_offset, [npolar, nograph, folding, xpdplot])
772 variable theta_offset
780 if (ParamIsDefault(npolar))
783 if (ParamIsDefault(nograph))
786 if (ParamIsDefault(folding))
789 if (ParamIsDefault(xpdplot))
794 dfref saveDF = GetDataFolderDFR()
795 dfref dataDF = GetWavesDataFolderDFR(data)
797 if (DataFolderExists(":attr"))
800 dfref attrDF = GetDataFolderDFR()
802 wave /sdfr=attrDF ManipulatorTheta
803 wave /sdfr=attrDF ManipulatorTilt
804 wave /sdfr=attrDF ManipulatorPhi
806 if ((dimsize(ManipulatorTheta, 0) != dimsize(data, 1)) || (dimsize(ManipulatorTilt, 0) != dimsize(data, 1)) || (dimsize(ManipulatorPhi, 0) != dimsize(data, 1)))
807 Abort "Warning: The dimension size of the manipulator waves does not match the Y dimension of the data wave!\rIf you restructured the data wave, please use
pizza_service_2 with properly scaled manipulator waves."
810 duplicate /free ManipulatorTheta, m_theta
811 duplicate /free ManipulatorTilt, m_tilt
812 duplicate /free ManipulatorPhi, m_phi
814 m_theta -= theta_offset
815 m_tilt -= tilt_offset
818 pizza_service_2(data, nickname, m_theta, m_tilt, m_phi, npolar=npolar, nograph=nograph, folding=folding, xpdplot=xpdplot)
862 function
pizza_service_2(data, nickname, m_theta, m_tilt, m_phi, [npolar, nograph, folding, xpdplot])
873 if (ParamIsDefault(npolar))
876 if (ParamIsDefault(nograph))
879 if (ParamIsDefault(folding))
882 if (ParamIsDefault(xpdplot))
886 if ((dimsize(m_theta, 0) != dimsize(data, 1)) || (dimsize(m_tilt, 0) != dimsize(data, 1)) || (dimsize(m_phi, 0) != dimsize(data, 1)))
887 Abort "Warning: The dimension size of the manipulator waves does not match the Y dimension of the data wave!"
890 string graphname = "graph_" + nickname
891 string outprefix = nickname
894 dfref saveDF = GetDataFolderDFR()
895 dfref dataDF = GetWavesDataFolderDFR(data)
903 newdatafolder /s/o $nickname
906 dfref destDF = GetDataFolderDFR()
910 variable /g pol_perf_secs
911 timerRefNum = startMSTimer
913 duplicate /free m_tilt, corr_tilt
914 duplicate /free m_phi, corr_phi
918 make /n=1/d/free d_polar, d_azi
924 for (ifold = 0; ifold < folding; ifold += 1)
925 d_azi = d_azi >= 360 ? d_azi - 360 : d_azi
927 d_azi += 360 / folding
931 if (strlen(outprefix))
932 string s_prefix = outprefix + "_"
933 string s_int = s_prefix + "i"
947 if (timerRefNum >= 0)
948 pol_perf_secs = stopMSTimer(timerRefNum) / 1e6
979 function
show_analyser_line(theta, tilt, phi, theta_offset, tilt_offset, phi_offset, [npolar, nograph, xpdplot])
983 variable theta_offset
990 string nickname = "analyser"
992 if (ParamIsDefault(npolar))
995 if (ParamIsDefault(nograph))
998 if (ParamIsDefault(xpdplot))
1001 string graphname = "graph_" + nickname
1002 string outprefix = nickname
1005 dfref saveDF = GetDataFolderDFR()
1006 dfref dataDF = saveDF
1009 outprefix = nickname
1011 setdatafolder dataDF
1012 newdatafolder /s/o $nickname
1015 dfref destDF = GetDataFolderDFR()
1017 make /n=1 /free m_theta
1018 make /n=1 /free m_tilt
1019 make /n=1 /free m_phi
1020 m_theta = theta - theta_offset
1021 m_tilt = tilt - tilt_offset
1023 m_phi = phi - phi_offset
1026 make /n=60 /free data
1027 setscale /i x -30, 30, data
1029 make /n=1/d/free d_polar, d_azi
1033 d_azi = d_azi >= 360 ? d_azi - 360 : d_azi
1041 setdatafolder saveDF
1050 wave theta, tilt, phi
1055 make /n=(dimsize(data, 0)) /d /free ana
1056 setscale /p x dimoffset(data, 0), dimdelta(data, 0), waveunits(data, 0), ana
1095 variable nn = numpnts(theta)
1096 variable na = numpnts(analyser)
1097 redimension /n=(na, nn) polar, azi
1104 make /n=(3,na) /d /free w_orig_polar, w_orig_cart, w_rot_cart, w_rot_polar
1105 w_orig_polar[0][] = radius
1106 w_orig_polar[1][] = analyser[q]
1107 w_orig_polar[2][] = 0
1113 for (ii = 0; ii < nn; ii += 1)
1119 w_rot_cart = w_orig_cart
1126 polar[][ii] = w_rot_polar[1][p]
1127 azi[][ii] = w_rot_polar[2][p]
1137 variable nn = dimsize(source, 1)
1138 make /n=(dimsize(source, 0))/d/free line
1139 for (ii = 0; ii < nn; ii += 1)
1140 line = source[p][ii]
1142 dest[][ii] = line[p] / v_max
1149 static function
calc_nth(Theta_st, Theta_in, th, Phi_ran, Phi_ref, Holomode)
1150 Variable Theta_st, Theta_in, th, Phi_ran, Phi_ref
1153 Variable deg2rad=0.01745329
1155 if ( cmpstr(Holomode, "Stereographic") == 0)
1156 The_step =trunc( Phi_ran*sin(th*deg2rad)*Phi_ref/Theta_st )
1158 The_step =trunc( Phi_ran*sin(th*pi/180)*Phi_ref/Theta_st )
1161 if (cmpstr(Holomode, "Parallel") == 0)
1162 The_step=trunc( Phi_ran*tan(th*deg2rad)*Phi_ref/Theta_st )
1164 if ( cmpstr(Holomode, "h") == 0)
1165 The_step=trunc( th/Theta_in*Phi_ran/Theta_st )
1178 static function
calc_phi_step(Theta_in, th, Theta_st, Phi_ran, Phi_ref, Holomode)
1179 Variable Theta_in, th, Theta_st, Phi_ran, Phi_ref
1183 Variable deg2rad=0.01745329
1185 if ( cmpstr(Holomode, "Stereographic") == 0 )
1186 if ((th < 0.5) || (trunc(Phi_ran*sin(th*deg2rad)*Phi_ref/Theta_st) == 0))
1189 Phi_st=Phi_ran/(trunc(Phi_ran*sin(th*deg2rad)*Phi_ref/Theta_st))
1196 if ( cmpstr(Holomode, "Parallel") == 0 )
1197 if((th < 0.5) || (trunc(Phi_ran*tan(th*deg2rad)*Phi_ref/Theta_st) == 0))
1200 Phi_st=Phi_ran/(trunc(Phi_ran*tan(th*deg2rad)*Phi_ref/Theta_st))
1204 if ( cmpstr(Holomode, "h") == 0 )
1205 if((th < 0.5) || (trunc(Phi_ran*sin(th*deg2rad)*Phi_ref/Theta_st) == 0))
1208 Phi_st=Phi_ran/trunc(th/Theta_in*Phi_ran/Theta_st)
1224 Variable th, Theta_st
1226 Variable deg2rad=0.01745329, dt_loc,The_step
1228 if ( (cmpstr(Holomode, "Stereographic")) ==0 )
1232 if ( (cmpstr(Holomode, "h")) ==0 )
1236 if ( cmpstr(Holomode, "Parallel") == 0 )
1238 dt_loc = Theta_st/cos(th*deg2rad)
1255 Variable Theta_in,Theta_ran,Theta_st
1256 Variable n_theta, aux, aux1,ii
1259 aux1= Theta_in - Theta_ran
1263 if(aux<=Theta_in-Theta_ran)
1264 aux=Theta_in-Theta_ran
1267 while((aux>aux1)%&(Theta_in-aux<=Theta_ran))
1296 if (ParamIsDefault(xpdplot))
1300 string HoloMode = "h"
1301 variable Theta_in = 90
1302 variable Theta_ran = 90
1303 variable Theta_st = 90 / (npol - 1)
1304 variable Phi_ran = 360
1305 variable Phi_ref = 1
1308 variable n_theta =
CalcN_Theta(HoloMode, Theta_in, Theta_ran, Theta_st)
1311 if (strlen(nickname))
1312 string s_prefix = nickname + "_"
1313 string s_int = s_prefix + "i"
1318 string s_polar = s_prefix + "pol"
1319 string s_azim = s_prefix + "az"
1321 string s_index = s_prefix + "index"
1322 string s_theta = s_prefix + "th"
1323 string s_dphi = s_prefix + "dphi"
1324 string s_nphis = s_prefix + "nphis"
1326 string s_HoloData = s_prefix + "data"
1327 string s_HoloInfo = s_prefix + "info"
1330 string s_tot = s_prefix + "tot"
1331 string s_weight = s_prefix + "wt"
1333 make /O/D/n=(n_theta) $s_index /wave=index
1334 make /O/D/n=(n_theta) $s_theta /wave=theta
1335 make /O/D/n=(n_theta) $s_dphi /wave=dphi
1336 make /O/D/n=(n_theta) $s_nphis /wave=nphis
1340 dphi[0] =
calc_phi_step(Theta_in, Theta_in, aux, Phi_ran, Phi_ref, HoloMode)
1342 nphis[0] =
calc_nth(aux, Theta_in, Theta_in, Phi_ran, Phi_ref, HoloMode)
1348 Theta[ii] = Theta[ii-1] - aux
1349 if(Theta[ii] <= Theta_in-Theta_ran)
1350 Theta[ii] = Theta_in-Theta_ran
1353 dphi[ii] =
calc_phi_step(Theta_in, Theta[ii], aux, Phi_ran, Phi_ref, HoloMode)
1354 nphis[ii] =
calc_nth(aux, Theta_in, Theta[ii], Phi_ran, Phi_ref, HoloMode)
1355 Index[ii] = Index[ii-1] + nphis[ii]
1359 if (Index[n_theta-1]==Index[n_theta-2])
1360 Index[n_theta-1]=Index[n_theta-2]+1
1364 variable NumPoints = sum(nphis, 0, numpnts(nphis))
1367 make /O/D/N=(NumPoints) $s_polar /wave=polar, $s_azim /wave=azim
1371 variable StartIndex = 0
1375 Polar[StartIndex, EndIndex-1]=Theta[ii]
1376 Azim[StartIndex, EndIndex-1]= mod(Phi_ran+(x-StartIndex)*dphi[ii]+Phi_in,Phi_ran)
1378 StartIndex = EndIndex
1381 duplicate /o azim, $s_int /wave=values
1382 duplicate /o azim, $s_tot /wave=totals
1383 duplicate /o azim, $s_weight /wave=weights
1390 string s_FileName = ""
1391 string s_Comment = "created by pearl-anglescan-process.ipf"
1392 string s_HoloMode = "Stereographic"
1393 variable /g gb_SpectraFile = 0
1395 Make/O/D/n=22 $s_HoloData /wave=HoloData
1398 HoloData[6] = NumPoints
1399 HoloData[7] = Theta_in
1400 HoloData[8] = Theta_ran
1401 HoloData[9] = Theta_st
1402 HoloData[11] = Phi_in
1403 HoloData[12] = Phi_ran
1404 HoloData[13] = Theta_st
1405 HoloData[15] = Phi_ref
1406 HoloData[16] = Phi_ran
1409 Make/O/T/n=22 $s_HoloInfo /wave=HoloInfo
1410 HoloInfo[0] = s_FileName
1411 HoloInfo[1] = s_Comment
1412 HoloInfo[10] = s_HoloMode
1416 if (WinType(NickName) == 5)
1417 Notebook $NickName selection={startOfFile, endOfFile}
1418 Notebook $NickName text=
"" 1420 NewNotebook /F=0 /K=1 /N=$NickName /W=(5,40,341,260)
1421 Notebook $NickName defaultTab=140
1422 Notebook $NickName statusWidth=300
1423 Notebook $NickName backRGB=(56797,56797,56797)
1424 Notebook $NickName pageMargins={80,80,80,80}
1425 Notebook $NickName fSize=10
1426 Notebook $NickName fStyle=0,textRGB=(65535,0,26214)
1427 Notebook $NickName textRGB=(65535,0,26214)
1429 Notebook $NickName text =
"File:\t" + s_FileName +
"\r" 1430 Notebook $NickName text =
"*** " + s_Comment +
" ***\r\r" 1431 Notebook $NickName text =
"Angle-Mode:\t" + s_HoloMode +
"\r" 1432 Notebook $NickName text =
"XPDplot Nickname:\t" + NickName +
"\r" 1446 string wname = nameofwave(w)
1452 string s_wave_df = GetWavesDataFolder(w, 1)
1453 dfref parent_df = $(s_wave_df + "::")
1454 nickname = GetDataFolder(0, parent_df)
1470 string wname = nameofwave(w)
1472 if (ItemsInList(wname, "_") >= 2)
1473 prefix = StringFromList(0, wname, "_")
1506 if (strlen(nickname))
1507 if (DataFolderExists(nickname))
1510 datadf = getdatafolderdfr()
1511 prefix = nickname + "_"
1512 intwave = prefix + "i"
1513 if (exists(intwave) != 1)
1518 datadf = getdatafolderdfr()
1540 string s_totals = s_prefix + "tot"
1541 string s_weights = s_prefix + "wt"
1543 wave /sdfr=datadf /z w_values = $s_int
1544 wave /sdfr=datadf /z w_totals = $s_totals
1545 wave /sdfr=datadf /z w_weights = $s_weights
1547 if (waveexists(w_totals))
1550 if (waveexists(w_weights))
1553 if (waveexists(w_values))
1580 string source_nickname
1582 string dest_nickname
1585 if (ParamIsDefault(xpdplot))
1589 dfref savedf = getdatafolderdfr()
1592 string s_prefix = ""
1593 string s_int = "values"
1594 dfref source_df =
find_hemi_data(source_nickname, s_prefix, s_int)
1595 string s_polar = s_prefix + "pol"
1596 string s_azim = s_prefix + "az"
1597 string s_theta = s_prefix + "th"
1598 string s_tot = s_prefix + "tot"
1599 string s_weight = s_prefix + "wt"
1600 string s_matrix = s_prefix + "matrix"
1602 wave /sdfr=source_df theta1 = $s_theta
1603 wave /sdfr=source_df polar1 = $s_polar
1604 wave /sdfr=source_df azim1 = $s_azim
1605 wave /sdfr=source_df tot1 = $s_tot
1606 wave /sdfr=source_df weight1 = $s_weight
1607 wave /sdfr=source_df values1 = $s_int
1608 wave /sdfr=source_df /z matrix1 = $s_matrix
1610 variable npol = numpnts(theta1)
1612 setdatafolder dest_folder
1617 s_polar = s_prefix + "pol"
1618 s_azim = s_prefix + "az"
1619 s_theta = s_prefix + "th"
1620 s_tot = s_prefix + "tot"
1621 s_weight = s_prefix + "wt"
1622 s_matrix = s_prefix + "matrix"
1624 wave /sdfr=dest_df theta2 = $s_theta
1625 wave /sdfr=dest_df polar2 = $s_polar
1626 wave /sdfr=dest_df azim2 = $s_azim
1627 wave /sdfr=dest_df tot2 = $s_tot
1628 wave /sdfr=dest_df weight2 = $s_weight
1629 wave /sdfr=dest_df values2 = $s_int
1634 if (waveexists(matrix1))
1635 setdatafolder dest_df
1636 duplicate /o matrix1, $s_matrix
1639 if (!(NumberByKey("
version", note(azim1), "=", "\r") >= 1.6))
1641 azim2 = azim2 >= 360 ? azim2 - 360 : azim2
1644 setdatafolder saveDF
1658 dfref savedf = getdatafolderdfr()
1660 string s_prefix = ""
1661 string s_int = "values"
1664 string s_polar = s_prefix + "pol"
1665 string s_azim = s_prefix + "az"
1666 string s_tot = s_prefix + "tot"
1667 string s_weight = s_prefix + "wt"
1669 wave /sdfr=df polar = $s_polar
1670 wave /sdfr=df azim = $s_azim
1671 wave /sdfr=df tot = $s_tot
1672 wave /sdfr=df weight = $s_weight
1673 wave /sdfr=df values = $s_int
1676 azim = azim < 0 ? azim + 360 : azim
1677 azim = azim >= 360 ? azim - 360 : azim
1679 duplicate /free polar, neg_polar
1681 sort {neg_polar, azim}, polar, azim, tot, weight, values
1683 setdatafolder saveDF
1706 dfref savedf = getdatafolderdfr()
1708 if (ParamIsDefault(projection))
1713 string s_prefix = ""
1714 string s_int = "values"
1717 string s_polar = s_prefix + "pol"
1718 string s_azim = s_prefix + "az"
1720 wave /sdfr=df /z values = $s_int
1721 wave /sdfr=df /z azim = $s_azim
1722 wave /sdfr=df /z polar = $s_polar
1725 string s_ster_rad = s_prefix + "ster_rad"
1726 duplicate /o polar, $s_ster_rad /wave=ster_rad
1729 string s_ster_x = s_prefix + "ster_x"
1730 string s_ster_y = s_prefix + "ster_y"
1731 duplicate /o azim, $s_ster_x /wave=ster_x, $s_ster_y /wave=ster_y
1732 ster_x = ster_rad * cos(azim * pi / 180)
1733 ster_y = ster_rad * sin(azim * pi / 180)
1735 setdatafolder savedf
1792 dfref savedf = getdatafolderdfr()
1794 if (ParamIsDefault(projection))
1797 if (ParamIsDefault(graphtype))
1800 if (ParamIsDefault(do_ticks))
1803 if (ParamIsDefault(do_grids))
1806 if (ParamIsDefault(graphname))
1807 if (strlen(nickname) > 0)
1808 graphname = nickname
1810 graphname = GetDataFolder(0)
1817 string s_prefix = ""
1818 string s_int = "values"
1821 string s_polar = s_prefix + "pol"
1822 string s_azim = s_prefix + "az"
1823 string s_matrix = s_prefix + "matrix"
1824 string s_ster_rad = s_prefix + "ster_rad"
1826 wave /sdfr=df /z values = $s_int
1827 wave /sdfr=df /z azim = $s_azim
1828 wave /sdfr=df /z polar = $s_polar
1829 wave /sdfr=df /z ster_rad = $s_ster_rad
1830 wave /sdfr=df /z matrix = $s_matrix
1833 variable azim_offset = 0
1834 if (!(NumberByKey("
version", note(azim), "=", "\r") >= 1.6))
1835 DoAlert /T="display hemi scan" 0, "your dataset doesn't include the version 1.6 flag. if it was created with an earlier version that might be okay. please check that the orientation is correct!"
1842 if (str2num(GetUserData(graphname, "", "graphtype")) == graphtype)
1847 killwindow $graphname
1855 s_trace = WMPolarAppendTrace(graphname, ster_rad, azim, 360)
1856 ModifyGraph /W=$graphname mode($s_trace)=2, lsize($s_trace)=2
1857 ModifyGraph /W=$graphname zColor($s_trace)={values,*,*,BlueGreenOrange,0}
1859 ColorScale /W=$graphname /C /N=text0 /E=2 /F=0 /B=1 /A=RB /X=0.00 /Y=0.00 trace=polarY0
1860 ColorScale /W=$graphname /C /N=text0 side=2, width=5, heightPct=40, frame=0.50, lblMargin=0
1861 ColorScale /W=$graphname /C /N=text0 nticks=2, minor=1, tickLen=4.00, tickThick=0.50
1863 SetWindow $graphname, userdata(projection)=num2str(projection)
1864 SetWindow $graphname, userdata(graphtype)=num2str(graphtype)
1870 s_trace = WMPolarAppendTrace(graphname, ster_rad, azim, 360)
1871 ModifyGraph /W=$graphname mode($s_trace)=0, lsize($s_trace)=0
1872 AppendImage /L=VertCrossing /B=HorizCrossing matrix
1874 ColorScale /W=$graphname /C /N=text0 /E=2 /F=0 /B=1 /A=RB /X=0.00 /Y=0.00 image=$s_matrix
1875 ColorScale /W=$graphname /C /N=text0 side=2, width=5, heightPct=40, frame=0.50, lblMargin=0
1876 ColorScale /W=$graphname /C /N=text0 nticks=2, minor=1, tickLen=4.00, tickThick=0.50
1878 SetWindow $graphname, userdata(projection)=num2str(projection)
1879 SetWindow $graphname, userdata(graphtype)=num2str(graphtype)
1884 setdatafolder savedf
1932 variable angle_offset
1935 dfref savedf = GetDataFolderDFR()
1937 if (ParamIsDefault(angle_offset))
1940 if (ParamIsDefault(do_ticks))
1944 if ((strlen(graphname) == 0) || (wintype(graphname) == 0))
1945 Display /k=1 /W=(10,45,360,345)
1946 DoWindow /C $graphname
1947 graphname = WMNewPolarGraph("", graphname)
1948 WMPolarGraphSetVar(graphname, "zeroAngleWhere", angle_offset)
1950 WMPolarGraphSetVar(graphname, "angleAxisThick", 0.5)
1951 WMPolarGraphSetStr(graphname, "doMajorAngleTicks", "manual")
1952 WMPolarGraphSetVar(graphname, "majorAngleInc", 30)
1953 WMPolarGraphSetVar(graphname, "minorAngleTicks", 2)
1954 WMPolarGraphSetStr(graphname, "angleTicksLocation", "Outside")
1955 WMPolarGraphSetVar(graphname, "doAngleTickLabelSubRange", 1)
1956 WMPolarGraphSetVar(graphname, "angleTickLabelRangeStart", 0)
1957 WMPolarGraphSetVar(graphname, "angleTickLabelRangeExtent", 90)
1958 WMPolarGraphSetStr(graphname, "angleTickLabelNotation", "%g°")
1960 WMPolarGraphSetVar(graphname, "doPolarGrids", 0)
1961 WMPolarGraphSetVar(graphname, "doRadiusTickLabels", 0)
1962 WMPolarGraphSetStr(graphname, "radiusAxesWhere", " Off")
1963 WMPolarGraphSetStr(graphname, "radiusTicksLocation", "Off")
1965 WMPolarGraphSetVar(graphname, "majorTickLength", 2)
1966 WMPolarGraphSetVar(graphname, "majorTickThick", 0.5)
1967 WMPolarGraphSetVar(graphname, "minorTickLength", 1)
1968 WMPolarGraphSetVar(graphname, "minorTickThick", 0.5)
1969 WMPolarGraphSetVar(graphname, "tickLabelOpaque", 0)
1970 WMPolarGraphSetVar(graphname, "tickLabelFontSize", 7)
1974 WMPolarGraphSetStr(graphname, "angleTicksLocation", "Outside")
1976 WMPolarGraphSetStr(graphname, "angleTicksLocation", "Off")
1979 WMPolarGraphSetVar(graphname, "doMinorAngleTicks", 1)
1981 WMPolarGraphSetVar(graphname, "doMinorAngleTicks", 0)
1984 DoWindow /T $graphname, graphname
1987 string graphdf = "root:packages:WMPolarGraphs:" + graphname
1988 setdatafolder graphdf
1990 variable /g csrA_theta
1991 variable /g csrA_phi
1992 variable /g csrB_theta
1993 variable /g csrB_phi
1997 tb = tb + "\
"A = (%.1f, %.1f)\"," 1998 tb = tb + graphdf +
":csrA_theta," 1999 tb = tb + graphdf +
":csrA_phi" 2001 TextBox /W=$graphname /A=LT /B=1 /E=2 /F=0 /N=tb_angles /X=1 /Y=1 /V=0 tb
2003 tb = tb +
"\"B = (%.1f, %.1f)\"," 2004 tb = tb + graphdf +
":csrB_theta," 2005 tb = tb + graphdf +
":csrB_phi" 2007 AppendText /W=$graphname /N=tb_angles tb
2012 DoWindow /F $graphname
2015 setdatafolder savedf
2048 if (ParamIsDefault(do_grids))
2052 dfref savedf = GetDataFolderDFR()
2054 string sproj = GetUserData(graphname, "", "projection")
2055 variable projection = str2num("0" + sproj)
2057 SetDrawLayer /W=$graphname ProgFront
2060 SetDrawEnv /W=$graphname xcoord=HorizCrossing, ycoord=VertCrossing
2061 SetDrawEnv /W=$graphname linethick= 0.5
2062 SetDrawEnv /W=$graphname dash=2
2063 SetDrawEnv /W=$graphname fillpat=0
2064 SetDrawEnv /W=$graphname fname="default", fsize=7
2065 SetDrawEnv /W=$graphname textxjust=1, textyjust=1
2067 SetDrawEnv /W=$graphname save
2070 DrawLine /W=$graphname 0, -2, 0, 2
2071 DrawLine /W=$graphname -2, 0, 2, 0
2077 DrawOval /W=$graphname -radi, radi, radi, -radi
2078 radi = calc_graph_radius(30, projection=projection)
2079 DrawOval /W=$graphname -radi, radi, radi, -radi
2080 radi = calc_graph_radius(60, projection=projection)
2081 DrawOval /W=$graphname -radi, radi, radi, -radi
2083 SetDrawEnv /W=$graphname textxjust= 1,textyjust= 2
2084 SetDrawEnv /W=$graphname save
2085 radi = calc_graph_radius(30, projection=projection)
2086 DrawText /W=$graphname radi, -0.1, "30°"
2087 radi = calc_graph_radius(60, projection=projection)
2088 DrawText /W=$graphname radi, -0.1, "60°"
2091 setdatafolder savedf
2121 variable theta_inner
2124 variable r_axis = calc_graph_radius(theta_axis)
2125 variable r_inner = calc_graph_radius(theta_inner)
2126 variable r_outer = calc_graph_radius(2 * theta_axis - theta_inner)
2129 SetDrawLayer UserFront
2130 DrawAction getgroup=$groupname, delete
2131 SetDrawEnv gstart, gname=$groupname
2132 variable xc, yc, xr, yr
2135 variable r_center = (r_outer + r_inner) / 2
2136 variable r_radius = (r_outer - r_inner) / 2
2137 xc = r_center * cos(phi * pi / 180)
2138 yc = r_center * sin(phi * pi / 180)
2141 SetDrawEnv xcoord=HorizCrossing, ycoord=VertCrossing
2142 SetDrawEnv dash=11, fillpat=0
2143 DrawOval xc - xr, yc - yr, xc + xr, yc + yr
2146 xc = r_axis * cos(phi * pi / 180)
2147 yc = r_axis * sin(phi * pi / 180)
2148 r_radius = calc_graph_radius(2)
2151 SetDrawEnv xcoord=HorizCrossing, ycoord=VertCrossing
2152 SetDrawEnv fillfgc=(0,0,0)
2153 DrawOval xc - xr, yc - yr, xc + xr, yc + yr
2180 function /s
display_scanlines(nickname, alpha_lo, alpha_hi, m_theta, m_tilt, m_phi, [folding, projection])
2190 if (ParamIsDefault(folding))
2193 if (ParamIsDefault(projection))
2198 dfref saveDF = GetDataFolderDFR()
2199 newdatafolder /s/o $nickname
2200 string graphname = "graph_" + nickname
2202 duplicate /free m_tilt, loc_m_tilt
2203 loc_m_tilt = -m_tilt
2205 make /n=1 /d /free d_polar, d_azi
2206 variable n_alpha = round(alpha_hi - alpha_lo) + 1
2207 make /n=(n_alpha) /d /free analyser
2208 setscale /i x alpha_lo, alpha_hi, "°", analyser
2212 duplicate /free d_polar, d_radius
2213 d_radius = calc_graph_radius(d_polar, projection=projection)
2217 SetWindow $graphname, userdata(projection)=num2str(projection)
2221 variable nang = numpnts(m_theta)
2225 for (ifold = 0; ifold < folding; ifold += 1)
2226 d_azi = d_azi >= 360 ? d_azi - 360 : d_azi
2227 for (iang = 0; iang < nang; iang += 1)
2228 sprintf s_rad, "rad_%d_%d", ifold, iang
2229 duplicate /o analyser, $s_rad
2231 w_rad = d_radius[p][iang]
2233 sprintf s_azi, "azi_%d_%d", ifold, iang
2234 duplicate /o analyser, $s_azi
2236 w_azi = d_azi[p][iang]
2238 if (numtype(sum(w_rad)) == 0)
2239 s_trace = WMPolarAppendTrace(graphname, w_rad, w_azi, 360)
2240 ModifyGraph /w=$graphname mode($s_trace)=0, lsize($s_trace)=0.5
2243 d_azi += 360 / folding
2248 setdatafolder saveDF
2295 threadsafe function calc_graph_radius(polar, [projection])
2299 if (ParamIsDefault(projection))
2312 radius = polar < 90 ?
kProjScaleGnom * tan(polar * pi / 180) : inf
2345 if (ParamIsDefault(projection))
2352 radius = sqrt(x^2 + y^2)
2399 if (ParamIsDefault(projection))
2402 if (ParamIsDefault(zeroAngle))
2408 azi = atan(y / x) * 180 / pi
2410 azi = atan(y / x) * 180 / pi + 180
2420 if (numtype(azi) != 0)
2441 dfref savedf = GetDataFolderDFR()
2443 string graphdf = "root:packages:WMPolarGraphs:" + graphname
2444 setdatafolder graphdf
2451 string sproj = GetUserData(graphname, "", "projection")
2452 variable projection = str2num("0" + sproj)
2455 variable x = hcsr(A, graphname)
2456 variable y = vcsr(A, graphname)
2458 csrA_phi =
calc_graph_azi(x, y, projection=projection, zeroAngle=zeroAngleWhere)
2460 x = hcsr(B, graphname)
2461 y = vcsr(B, graphname)
2463 csrB_phi =
calc_graph_azi(x, y, projection=projection, zeroAngle=zeroAngleWhere)
2465 setdatafolder savedf
2474 STRUCT WMWinHookStruct &s
2476 Variable hookResult = 0
2483 TextBox /W=$s.winname /N=tb_angles /C /V=1
2486 TextBox /W=$s.winname /N=tb_angles /C /V=0
2496 variable polar_angle
2500 if (ParamIsDefault(graphname))
2501 if (strlen(nickname) > 0)
2502 graphname = nickname
2504 graphname = GetDataFolder(0)
2508 string s_prefix = ""
2509 string s_int = "values"
2512 string s_polar = s_prefix + "pol"
2513 string s_azim = s_prefix + "az"
2514 wave /sdfr=df /z azim = $s_azim
2515 wave /sdfr=df /z polar = $s_polar
2517 FindLevel /P /Q polar, polar_angle
2519 variable polar_level = floor(v_levelx)
2520 FindLevel /P /Q /R=[polar_level] azim, azim_angle
2522 variable azim_level = round(v_levelx)
2523 string tracename = "polarY0"
2524 Cursor /W=$graphname /P $cursorname $traceName azim_level
2550 if (ParamIsDefault(weights))
2551 duplicate /free values, weights
2556 string s_prefix = ""
2557 string s_int = "values"
2560 string s_polar = s_prefix + "pol"
2561 string s_azim = s_prefix + "az"
2562 string s_theta = s_prefix + "th"
2564 wave /sdfr=df /z w_values = $s_int
2565 wave /sdfr=df /z w_azim = $s_azim
2566 wave /sdfr=df /z w_polar = $s_polar
2567 wave /sdfr=df /z w_theta = $s_theta
2568 if (!waveexists(w_values) || !waveexists(w_azim) || !waveexists(w_polar))
2569 abort "Missing hemispherical scan grid. Please call
make_hemi_grid() first."
2573 duplicate /free values, values_copy
2574 duplicate /free polar, polar_copy
2575 duplicate /free azi, azi_copy
2576 duplicate /free weights, weights_copy
2577 variable nn = dimsize(values, 0) * max(dimsize(values, 1), 1)
2578 redimension /n=(nn) values_copy, polar_copy, azi_copy, weights_copy
2579 sort /r polar_copy, polar_copy, azi_copy, values_copy, weights_copy
2582 variable pol_st = abs(w_theta[1] - w_theta[0])
2585 duplicate /free azi_copy, azi_slice
2586 duplicate /free values_copy, values_slice
2587 duplicate /free weights_copy, weights_slice
2588 for (pol = 90; pol >= 0; pol -= pol_st)
2589 pol1 = pol - pol_st / 2
2590 pol2 = pol + pol_st / 2
2591 extract /free /indx polar_copy, sel, (pol1 < polar_copy) && (polar_copy <= pol2)
2592 if (numpnts(sel) > 0)
2593 redimension /n=(numpnts(sel)) azi_slice, values_slice, weights_slice
2594 azi_slice = azi_copy[sel]
2595 values_slice = values_copy[sel]
2596 weights_slice = weights_copy[sel]
2597 hemi_add_aziscan(nickname, values_slice, pol, azi_slice, weights=weights_slice)
2618 if (ParamIsDefault(weights))
2619 duplicate /free values, weights
2624 string s_prefix = ""
2625 string s_int = "values"
2628 string s_totals = s_prefix + "tot"
2629 string s_weights = s_prefix + "wt"
2630 string s_polar = s_prefix + "pol"
2631 string s_azim = s_prefix + "az"
2632 string s_index = s_prefix + "index"
2633 string s_theta = s_prefix + "th"
2634 string s_dphi = s_prefix + "dphi"
2635 string s_nphis = s_prefix + "nphis"
2637 wave /sdfr=df w_polar = $s_polar
2638 wave /sdfr=df w_azim = $s_azim
2639 wave /sdfr=df w_values = $s_int
2640 wave /sdfr=df w_totals = $s_totals
2641 wave /sdfr=df w_weights = $s_weights
2642 wave /sdfr=df w_index = $s_index
2643 wave /sdfr=df w_theta = $s_theta
2644 wave /sdfr=df w_dphi = $s_dphi
2645 wave /sdfr=df w_nphis = $s_nphis
2650 variable ipol = BinarySearch(w_theta, polar)
2652 abort "assertion failed in
hemi_add_aziscan(): polar angle not found in grid."
2657 d1 = w_index[ipol - 1]
2661 d2 = w_index[ipol] - 1
2662 variable nd = d2 - d1 + 1
2663 variable dphi = w_dphi[ipol]
2668 azi = azi < 0 ? azi + 360 : azi
2669 azi = azi >= 360 - dphi/2 ? azi - 360 : azi
2670 duplicate /free values, sel_values
2671 duplicate /free weights, sel_weights
2675 variable v1, v2, w1, w2
2676 for (
id = 0;
id < nd;
id += 1)
2677 az1 = (
id - 0.5) * dphi
2678 az2 = (
id + 0.5) * dphi
2679 extract /free /indx azi, sel, (az1 <= azi) && (azi < az2)
2680 if (numpnts(sel) > 0)
2681 redimension /n=(numpnts(sel)) sel_values, sel_weights
2682 sel_values = values[sel]
2683 sel_weights = weights[sel]
2684 v1 = w_totals[d1 +
id]
2685 w1 = w_weights[d1 +
id]
2686 if ((numtype(v1) == 2) || (w1 <= 0))
2690 v2 = sum(sel_values)
2691 w2 = sum(sel_weights)
2692 w_totals[d1 +
id] = v1 + v2
2693 w_weights[d1 +
id] = w1 + w2
2696 w_values[d1, d1 + nd - 1] = w_totals[p] / w_weights[p]
2730 dfref savedf = GetDataFolderDFR()
2732 if (ParamIsDefault(projection))
2736 string s_prefix = ""
2737 string s_int = "values"
2741 string s_polar = s_prefix + "pol"
2742 string s_azim = s_prefix + "az"
2743 string s_matrix = s_prefix + "matrix"
2744 string s_ster_rad = s_prefix + "ster_rad"
2745 string s_ster_x = s_prefix + "ster_x"
2746 string s_ster_y = s_prefix + "ster_y"
2748 wave /sdfr=df /z values = $s_int
2749 wave /sdfr=df /z azim = $s_azim
2750 wave /sdfr=df /z polar = $s_polar
2751 wave /sdfr=df /z ster_rad = $s_ster_rad
2752 wave /sdfr=df /z ster_x = $s_ster_x
2753 wave /sdfr=df /z ster_y = $s_ster_y
2755 variable min_ster_x = wavemin(ster_x)
2756 variable max_ster_x = wavemax(ster_x)
2757 variable x0 = min_ster_x
2759 variable dx = (max_ster_x - min_ster_x) / (xn - 1)
2760 make /n=(numpnts(ster_x), 3) /free triplet
2761 triplet[][0] = ster_x[p]
2762 triplet[][1] = ster_y[p]
2763 triplet[][2] = values[p]
2767 make /n=(size, size) /d /o $(s_prefix + "matrix") /wave=matrix
2768 make /n=(size, size) /free mnorm
2769 ImageFromXYZ /as {ster_x, ster_y, values}, matrix, mnorm
2771 matrixfilter NanZapMedian, matrix
2772 matrixfilter gauss, matrix
2774 duplicate /free values, ster_finite
2775 ster_finite = (numtype(values) == 0) * (ster_x^2 + ster_y^2)
2776 variable ster_max = wavemax(ster_finite)
2777 matrix = (x^2 + y^2) <= ster_max ? matrix : nan
2779 setdatafolder savedf
2792 function quick_pizza_image(data, nickname, theta_offset, tilt_offset, phi_offset, [npolar, nograph, folding])
2797 variable theta_offset
2798 variable tilt_offset
2806 if (ParamIsDefault(npolar))
2809 if (ParamIsDefault(nograph))
2812 if (ParamIsDefault(folding))
2815 string graphname =
"graph_" + nickname
2816 string s_prefix =
"" 2819 dfref saveDF = GetDataFolderDFR()
2820 dfref dataDF = GetWavesDataFolderDFR(data)
2821 setdatafolder dataDF
2822 if (DataFolderExists(
":attr"))
2825 dfref attrDF = GetDataFolderDFR()
2826 setdatafolder dataDF
2827 newdatafolder /s/o $nickname
2828 dfref destDF = GetDataFolderDFR()
2831 variable timerRefNum
2832 variable /g xyz_perf_secs
2833 timerRefNum = startMSTimer
2835 wave /sdfr=attrDF ManipulatorTheta
2836 wave /sdfr=attrDF ManipulatorTilt
2837 wave /sdfr=attrDF ManipulatorPhi
2838 duplicate /free ManipulatorTheta, m_theta
2839 duplicate /free ManipulatorTilt, m_tilt
2840 duplicate /free ManipulatorPhi, m_phi
2841 m_theta -= theta_offset
2842 m_tilt -= tilt_offset
2847 make /n=1/d/free d_polar, d_azi
2850 d_azi = d_azi >= 360 ? d_azi - 360 : d_azi
2852 duplicate /free data, values
2853 variable nn = dimsize(values, 0) * max(dimsize(values, 1), 1)
2854 redimension /n=(nn) values, d_polar, d_azi
2855 duplicate /o d_polar, ster_rad, ster_x, ster_y
2857 variable projection = 1
2860 ster_rad = 2 * tan(d_polar / 2 * pi / 180)
2863 ster_rad = 2 * cos((180 - d_polar) / 2 * pi / 180)
2866 string s_ster_x = s_prefix + "ster_x"
2867 string s_ster_y = s_prefix + "ster_y"
2870 make /n=(nn, nn) /d /o matrix
2871 make /n=(nn, nn) /free mnorm
2872 setscale /i x -2, +2, matrix, mnorm
2873 setscale /i y -2, +2, matrix, mnorm
2878 for (ifold = 0; ifold < folding; ifold += 1)
2879 ster_x = ster_rad * cos(d_azi * pi / 180)
2880 ster_y = ster_rad * sin(d_azi * pi / 180)
2881 ImageFromXYZ {ster_x, ster_y, values}, matrix, mnorm
2882 d_azi = d_azi >= 180 ? d_azi + 360 / folding - 180 : d_azi + 360 / folding
2886 matrixfilter /n=5 NanZapMedian matrix
2887 matrixfilter /n=3 gauss matrix
2892 modifygraph width={Plan,1,bottom,left}
2895 if (timerRefNum >= 0)
2896 xyz_perf_secs = stopMSTimer(timerRefNum) / 1e6
2899 setdatafolder saveDF
2908 dfref savedf = getdatafolderdfr()
2911 string s_prefix = ""
2912 string s_int = "values"
2915 string s_polar = s_prefix + "pol"
2916 string s_azim = s_prefix + "az"
2917 string s_theta = s_prefix + "th"
2918 string s_tot = s_prefix + "tot"
2919 string s_weight = s_prefix + "wt"
2921 wave /sdfr=df theta1 = $s_theta
2922 wave /sdfr=df polar1 = $s_polar
2923 wave /sdfr=df azim1 = $s_azim
2924 wave /sdfr=df tot1 = $s_tot
2925 wave /sdfr=df weight1 = $s_weight
2926 wave /sdfr=df values1 = $s_int
2928 save /m="\r\n" /o /p=$pathname /t theta1, polar1, azim1, tot1, weight1, values1 as filename
2930 setdatafolder saveDF
2941 dfref savedf = getdatafolderdfr()
2950 setdatafolder saveDF
2985 function
import_tpi_scan(nickname, theta, phi, intensity, [folding, npolar, nograph, xpdplot])
2996 if (ParamIsDefault(npolar))
2999 if (ParamIsDefault(nograph))
3002 if (ParamIsDefault(folding))
3005 if (ParamIsDefault(xpdplot))
3012 duplicate /free phi, fold_phi
3013 for (ifold = 0; ifold < folding; ifold += 1)
3015 fold_phi = fold_phi >= 180 ? fold_phi + 360 / folding - fold_phi : fold_phi + 360 / folding
3038 string s_prefix = ""
3039 string s_int = "values"
3042 string s_totals = s_prefix + "tot"
3043 string s_weights = s_prefix + "wt"
3044 string s_polar = s_prefix + "pol"
3046 wave /sdfr=df w_polar = $s_polar
3047 wave /sdfr=df w_values = $s_int
3048 wave /sdfr=df w_totals = $s_totals
3049 wave /sdfr=df w_weights = $s_weights
3051 w_values = w_polar <= theta_max ? w_totals / w_weights : nan
3077 dfref savedf = getdatafolderdfr()
3078 string s_prefix = ""
3079 string s_int = "values"
3082 string s_totals = s_prefix + "tot"
3083 string s_weights = s_prefix + "wt"
3084 string s_polar = s_prefix + "pol"
3085 string s_azim = s_prefix + "az"
3086 string s_index = s_prefix + "index"
3087 string s_theta = s_prefix + "th"
3088 string s_dphi = s_prefix + "dphi"
3089 string s_nphis = s_prefix + "nphis"
3091 sprintf s_cut, "%s_azi%03u", s_int, round(azim)
3093 wave /sdfr=df w_polar = $s_polar
3094 wave /sdfr=df w_azim = $s_azim
3095 wave /sdfr=df w_values = $s_int
3096 wave /sdfr=df w_totals = $s_totals
3097 wave /sdfr=df w_weights = $s_weights
3098 wave /sdfr=df w_index = $s_index
3099 wave /sdfr=df w_theta = $s_theta
3100 wave /sdfr=df w_dphi = $s_dphi
3101 wave /sdfr=df w_nphis = $s_nphis
3103 variable npol = numpnts(w_theta)
3105 variable pol_st = abs(w_theta[1] - w_theta[0])
3111 make /n=(npol) /o $s_cut
3113 setscale /i x w_theta[0], w_theta[numpnts(w_theta)-1], "deg", w_cut
3114 make /n=1 /free azi_slice
3115 make /n=1 /free values_slice
3117 for (ipol = 0; ipol < npol; ipol += 1)
3119 pol1 = pol - pol_st / 2
3120 pol2 = pol + pol_st / 2
3121 extract /free /indx w_polar, sel, (pol1 < w_polar) && (w_polar <= pol2)
3124 redimension /n=(nsel+2) azi_slice, values_slice
3125 azi_slice[1, nsel] = w_azim[sel[p-1]]
3126 azi_slice[0] = azi_slice[nsel] - 360
3127 azi_slice[nsel+1] = azi_slice[1] + 360
3128 values_slice[1, nsel] = w_values[sel[p-1]]
3129 values_slice[0] = values_slice[nsel]
3130 values_slice[nsel+1] = values_slice[1]
3131 w_cut[ipol] = interp(azim, azi_slice, values_slice)
3137 setdatafolder savedf
3163 dfref savedf = getdatafolderdfr()
3164 string s_prefix = ""
3165 string s_int = "values"
3168 string s_totals = s_prefix + "tot"
3169 string s_weights = s_prefix + "wt"
3170 string s_polar = s_prefix + "pol"
3171 string s_azim = s_prefix + "az"
3172 string s_index = s_prefix + "index"
3173 string s_theta = s_prefix + "th"
3174 string s_dphi = s_prefix + "dphi"
3175 string s_nphis = s_prefix + "nphis"
3177 sprintf s_cut, "%s_pol%03u", s_int, round(pol)
3179 wave /sdfr=df w_polar = $s_polar
3180 wave /sdfr=df w_azim = $s_azim
3181 wave /sdfr=df w_values = $s_int
3182 wave /sdfr=df w_totals = $s_totals
3183 wave /sdfr=df w_weights = $s_weights
3184 wave /sdfr=df w_index = $s_index
3185 wave /sdfr=df w_theta = $s_theta
3186 wave /sdfr=df w_dphi = $s_dphi
3187 wave /sdfr=df w_nphis = $s_nphis
3189 variable pol_st = abs(w_theta[1] - w_theta[0])
3193 pol1 = pol - pol_st / 2
3194 pol2 = pol + pol_st / 2
3195 extract /free /indx w_polar, sel, (pol1 < w_polar) && (w_polar <= pol2)
3199 make /n=(nsel) /o $s_cut
3201 w_cut = w_values[sel]
3202 setscale /i x w_azim[sel[0]], w_azim[sel[nsel-1]], "°", w_cut
3203 setdatafolder savedf
3206 setdatafolder savedf
3209 setdatafolder savedf
3219 dfref save_df = GetDataFolderDFR()
3220 dfref dfr = NewFreeDataFolder()
3222 StatsQuantiles /inan /iw /q /z values
3223 wave index = w_quantilesindex
3224 variable imin = round(numpnts(index) * pcmin / 100)
3225 variable imax = round(numpnts(index) * (100 - pcmax) / 100)
3226 vmin = values[index[imin]]
3227 vmax = values[index[imax]]
3228 setdatafolder save_df
3253 if (ParamIsDefault(graphname))
3256 if (ParamIsDefault(colortable))
3260 dfref save_df = GetDataFolderDFR()
3272 string traces = TraceNameList(graphname, ";", 1+4)
3273 n = ItemsInList(traces, ";")
3274 for (i = 0; i < n; i += 1)
3275 objname = StringFromList(i, traces, ";")
3276 info = TraceInfo(graphname, objname, 0)
3277 if (strlen(info) > 0)
3278 info = StringByKey("RECREATION", info, ":", ";")
3279 info = StringByKey("zColor(x)", info, "=", ";")
3280 if (strlen(info) > 2)
3281 info = info[1,strlen(info)-2]
3282 wname = StringFromList(0, info, ",")
3284 ctab = StringFromList(3, info, ",")
3285 rev = str2num("0" + StringFromList(4, info, ","))
3286 if (strlen(colortable) > 0)
3290 ModifyGraph /w=$graphname zColor($objname)={w, vmin, vmax, $ctab, rev}
3295 string images = ImageNameList(graphname,
";")
3296 n = ItemsInList(images,
";")
3297 for (i = 0; i < n; i += 1)
3298 objname = StringFromList(i, images,
";")
3299 wave w = ImageNameToWaveRef(graphname, objname)
3300 info = ImageInfo(graphname, objname, 0)
3301 if (strlen(info) > 0)
3302 info = StringByKey(
"RECREATION", info,
":",
";")
3303 info = StringByKey(
"ctab", info,
"=",
";")
3304 if (strlen(info) > 2)
3305 info = info[1,strlen(info)-2]
3306 ctab = StringFromList(2, info,
",")
3307 rev = str2num(
"0" + StringFromList(3, info,
","))
3308 if (strlen(colortable) > 0)
3312 ModifyImage /w=$graphname $objname ctab={vmin, vmax, $ctab, rev}
3317 setdatafolder save_df
3334 String newname = NameofWave(inwave)+
"_k" 3335 Duplicate/O inwave, $newname
3336 Wave outwave = $newname
3337 Variable rows,columns,xdelta,xoffset,ydelta,yoffset,kmin,kmax,Emax
3339 rows = DimSize(inwave,0)
3340 columns = DimSize(inwave,1)
3341 xdelta = DimDelta(inwave,0)
3342 xoffset = DimOffset(inwave,0)
3343 ydelta = DimDelta(inwave,1)
3344 yoffset = DimOffset(inwave,1)
3345 Emax= xoffset + xdelta*(rows-1)
3346 kmin = 0.5123*sqrt(Emax)*sin(pi/180*(yoffset))
3347 kmax = 0.5123*sqrt(Emax)*sin(pi/180*(yoffset+(columns-1)*ydelta))
3348 SetScale/I y kmin,kmax,"Ang^-1", outwave
3350 outwave = interp2D(inwave, x, 180/pi*asin(y/ (0.5123*sqrt(x))))
3351 outwave = (NumType(outwave)==2) ? 0 : outwave
wave hemi_polar_cut(string nickname, variable azim)
extract a polar cut from a hemispherical scan.
variable trim_hemi_scan(string nickname, variable theta_max)
trim a hemispherical scan at grazing angle
string prepare_hemi_scan_display(string nickname, variable projection=defaultValue)
create waves for plotting a hemispherical angle scan.
variable pizza_service_2(wave data, string nickname, wave m_theta, wave m_tilt, wave m_phi, variable npolar=defaultValue, variable nograph=defaultValue, variable folding=defaultValue, variable xpdplot=defaultValue)
create a pizza plot from a measured (energy-integrated) data strip
@@ -161,7 +161,7 @@ $(document).ready(function(){initNavTree('pearl-anglescan-process_8ipf_source.ht
diff --git a/doc/html/pearl-anglescan-tracker_8ipf.html b/doc/html/pearl-anglescan-tracker_8ipf.html
index 51f1db1..7fa0887 100644
--- a/doc/html/pearl-anglescan-tracker_8ipf.html
+++ b/doc/html/pearl-anglescan-tracker_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -1637,7 +1637,7 @@ Variables
diff --git a/doc/html/pearl-anglescan-tracker_8ipf_source.html b/doc/html/pearl-anglescan-tracker_8ipf_source.html
index 73feca6..fb26591 100644
--- a/doc/html/pearl-anglescan-tracker_8ipf_source.html
+++ b/doc/html/pearl-anglescan-tracker_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -153,7 +153,7 @@ $(document).ready(function(){initNavTree('pearl-anglescan-tracker_8ipf_source.ht
diff --git a/doc/html/pearl-area-display_8ipf.html b/doc/html/pearl-area-display_8ipf.html
index d0db7c0..7e0a007 100644
--- a/doc/html/pearl-area-display_8ipf.html
+++ b/doc/html/pearl-area-display_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -1695,7 +1695,7 @@ Functions
diff --git a/doc/html/pearl-area-display_8ipf_source.html b/doc/html/pearl-area-display_8ipf_source.html
index 1434828..692424d 100644
--- a/doc/html/pearl-area-display_8ipf_source.html
+++ b/doc/html/pearl-area-display_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -120,7 +120,7 @@ $(document).ready(function(){initNavTree('pearl-area-display_8ipf_source.html','
diff --git a/doc/html/pearl-area-import_8ipf.html b/doc/html/pearl-area-import_8ipf.html
index b6bede5..cb6cbc2 100644
--- a/doc/html/pearl-area-import_8ipf.html
+++ b/doc/html/pearl-area-import_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -1448,7 +1448,7 @@ Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/doc/html/pearl-area-import_8ipf_source.html b/doc/html/pearl-area-import_8ipf_source.html
index 56398f6..e154ccd 100644
--- a/doc/html/pearl-area-import_8ipf_source.html
+++ b/doc/html/pearl-area-import_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -125,7 +125,7 @@ $(document).ready(function(){initNavTree('pearl-area-import_8ipf_source.html',''
diff --git a/doc/html/pearl-area-profiles_8ipf.html b/doc/html/pearl-area-profiles_8ipf.html
index 9140105..d1dac1d 100644
--- a/doc/html/pearl-area-profiles_8ipf.html
+++ b/doc/html/pearl-area-profiles_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -970,7 +970,7 @@ Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/doc/html/pearl-area-profiles_8ipf_source.html b/doc/html/pearl-area-profiles_8ipf_source.html
index 49832a6..11af8c1 100644
--- a/doc/html/pearl-area-profiles_8ipf_source.html
+++ b/doc/html/pearl-area-profiles_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -105,7 +105,7 @@ $(document).ready(function(){initNavTree('pearl-area-profiles_8ipf_source.html',
diff --git a/doc/html/pearl-arpes_8ipf.html b/doc/html/pearl-arpes_8ipf.html
index 9d2895b..5d1ef8e 100644
--- a/doc/html/pearl-arpes_8ipf.html
+++ b/doc/html/pearl-arpes_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -189,7 +189,7 @@ Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/doc/html/pearl-arpes_8ipf_source.html b/doc/html/pearl-arpes_8ipf_source.html
index 5979b73..3d7e759 100644
--- a/doc/html/pearl-arpes_8ipf_source.html
+++ b/doc/html/pearl-arpes_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -93,7 +93,7 @@ $(document).ready(function(){initNavTree('pearl-arpes_8ipf_source.html','');});
diff --git a/doc/html/pearl-compat_8ipf.html b/doc/html/pearl-compat_8ipf.html
index 3027adf..16034fa 100644
--- a/doc/html/pearl-compat_8ipf.html
+++ b/doc/html/pearl-compat_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -141,7 +141,7 @@ Functions
diff --git a/doc/html/pearl-compat_8ipf_source.html b/doc/html/pearl-compat_8ipf_source.html
index 674e0c6..2508edc 100644
--- a/doc/html/pearl-compat_8ipf_source.html
+++ b/doc/html/pearl-compat_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -92,7 +92,7 @@ $(document).ready(function(){initNavTree('pearl-compat_8ipf_source.html','');});
diff --git a/doc/html/pearl-data-explorer_8ipf.html b/doc/html/pearl-data-explorer_8ipf.html
index 1579749..c91517f 100644
--- a/doc/html/pearl-data-explorer_8ipf.html
+++ b/doc/html/pearl-data-explorer_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -2000,7 +2000,7 @@ Variables
diff --git a/doc/html/pearl-data-explorer_8ipf_source.html b/doc/html/pearl-data-explorer_8ipf_source.html
index 8b4833e..452ea17 100644
--- a/doc/html/pearl-data-explorer_8ipf_source.html
+++ b/doc/html/pearl-data-explorer_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -165,7 +165,7 @@ $(document).ready(function(){initNavTree('pearl-data-explorer_8ipf_source.html',
diff --git a/doc/html/pearl-elog_8ipf.html b/doc/html/pearl-elog_8ipf.html
index e68110b..7877fc8 100644
--- a/doc/html/pearl-elog_8ipf.html
+++ b/doc/html/pearl-elog_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -2379,7 +2379,7 @@ Variables
diff --git a/doc/html/pearl-elog_8ipf_source.html b/doc/html/pearl-elog_8ipf_source.html
index e2e4314..595137f 100644
--- a/doc/html/pearl-elog_8ipf_source.html
+++ b/doc/html/pearl-elog_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -153,7 +153,7 @@ $(document).ready(function(){initNavTree('pearl-elog_8ipf_source.html','');});
diff --git a/doc/html/pearl-fitfuncs_8ipf.html b/doc/html/pearl-fitfuncs_8ipf.html
index 51697a4..0e3fd44 100644
--- a/doc/html/pearl-fitfuncs_8ipf.html
+++ b/doc/html/pearl-fitfuncs_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -980,7 +980,7 @@ Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/doc/html/pearl-fitfuncs_8ipf_source.html b/doc/html/pearl-fitfuncs_8ipf_source.html
index b0d8d32..5e1916a 100644
--- a/doc/html/pearl-fitfuncs_8ipf_source.html
+++ b/doc/html/pearl-fitfuncs_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -113,7 +113,7 @@ $(document).ready(function(){initNavTree('pearl-fitfuncs_8ipf_source.html','');}
diff --git a/doc/html/pearl-gui-tools_8ipf.html b/doc/html/pearl-gui-tools_8ipf.html
index 6b3e180..7b1ba67 100644
--- a/doc/html/pearl-gui-tools_8ipf.html
+++ b/doc/html/pearl-gui-tools_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -197,7 +197,7 @@ Functions
diff --git a/doc/html/pearl-gui-tools_8ipf_source.html b/doc/html/pearl-gui-tools_8ipf_source.html
index 304e54e..e64b1ca 100644
--- a/doc/html/pearl-gui-tools_8ipf_source.html
+++ b/doc/html/pearl-gui-tools_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -94,7 +94,7 @@ $(document).ready(function(){initNavTree('pearl-gui-tools_8ipf_source.html','');
diff --git a/doc/html/pearl-matrix-import_8ipf.html b/doc/html/pearl-matrix-import_8ipf.html
index beaedee..42bf875 100644
--- a/doc/html/pearl-matrix-import_8ipf.html
+++ b/doc/html/pearl-matrix-import_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -1105,7 +1105,7 @@ result file names look like: default_2015Apr20-124353_STM-STM_AtomManipulation_0
diff --git a/doc/html/pearl-matrix-import_8ipf_source.html b/doc/html/pearl-matrix-import_8ipf_source.html
index e54dc8e..2025116 100644
--- a/doc/html/pearl-matrix-import_8ipf_source.html
+++ b/doc/html/pearl-matrix-import_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -112,7 +112,7 @@ $(document).ready(function(){initNavTree('pearl-matrix-import_8ipf_source.html',
diff --git a/doc/html/pearl-menu_8ipf.html b/doc/html/pearl-menu_8ipf.html
index 966e3e2..4afcf93 100644
--- a/doc/html/pearl-menu_8ipf.html
+++ b/doc/html/pearl-menu_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -426,7 +426,7 @@ Functions
diff --git a/doc/html/pearl-menu_8ipf_source.html b/doc/html/pearl-menu_8ipf_source.html
index 7492bfe..491133a 100644
--- a/doc/html/pearl-menu_8ipf_source.html
+++ b/doc/html/pearl-menu_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -113,7 +113,7 @@ $(document).ready(function(){initNavTree('pearl-menu_8ipf_source.html','');});
diff --git a/doc/html/pearl-otf-import_8ipf.html b/doc/html/pearl-otf-import_8ipf.html
index 06950c5..2624645 100644
--- a/doc/html/pearl-otf-import_8ipf.html
+++ b/doc/html/pearl-otf-import_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -464,7 +464,7 @@ Functions
diff --git a/doc/html/pearl-otf-import_8ipf_source.html b/doc/html/pearl-otf-import_8ipf_source.html
index 7bbe85f..ac78ca0 100644
--- a/doc/html/pearl-otf-import_8ipf_source.html
+++ b/doc/html/pearl-otf-import_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -102,7 +102,7 @@ $(document).ready(function(){initNavTree('pearl-otf-import_8ipf_source.html','')
diff --git a/doc/html/pearl-pmsco-import_8ipf.html b/doc/html/pearl-pmsco-import_8ipf.html
index 67d7b28..66b1682 100644
--- a/doc/html/pearl-pmsco-import_8ipf.html
+++ b/doc/html/pearl-pmsco-import_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -337,7 +337,7 @@ Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/doc/html/pearl-pmsco-import_8ipf_source.html b/doc/html/pearl-pmsco-import_8ipf_source.html
index d89c650..80eb518 100644
--- a/doc/html/pearl-pmsco-import_8ipf_source.html
+++ b/doc/html/pearl-pmsco-import_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -94,7 +94,7 @@ $(document).ready(function(){initNavTree('pearl-pmsco-import_8ipf_source.html','
diff --git a/doc/html/pearl-polar-coordinates_8ipf.html b/doc/html/pearl-polar-coordinates_8ipf.html
index 6109076..3c366c3 100644
--- a/doc/html/pearl-polar-coordinates_8ipf.html
+++ b/doc/html/pearl-polar-coordinates_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -320,7 +320,7 @@ Functions
diff --git a/doc/html/pearl-polar-coordinates_8ipf_source.html b/doc/html/pearl-polar-coordinates_8ipf_source.html
index 2f069da..4a80f72 100644
--- a/doc/html/pearl-polar-coordinates_8ipf_source.html
+++ b/doc/html/pearl-polar-coordinates_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -96,7 +96,7 @@ $(document).ready(function(){initNavTree('pearl-polar-coordinates_8ipf_source.ht
diff --git a/doc/html/pearl-pshell-import_8ipf.html b/doc/html/pearl-pshell-import_8ipf.html
index c3feca4..27d5ba5 100644
--- a/doc/html/pearl-pshell-import_8ipf.html
+++ b/doc/html/pearl-pshell-import_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -2230,7 +2230,7 @@ global string s_scanpaths in new data folder contains a list of scan groups insi
diff --git a/doc/html/pearl-pshell-import_8ipf_source.html b/doc/html/pearl-pshell-import_8ipf_source.html
index ad4159f..4f67627 100644
--- a/doc/html/pearl-pshell-import_8ipf_source.html
+++ b/doc/html/pearl-pshell-import_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -112,7 +112,7 @@ $(document).ready(function(){initNavTree('pearl-pshell-import_8ipf_source.html',
diff --git a/doc/html/pearl-scienta-countrate_8ipf.html b/doc/html/pearl-scienta-countrate_8ipf.html
index 49d8ae7..260edb9 100644
--- a/doc/html/pearl-scienta-countrate_8ipf.html
+++ b/doc/html/pearl-scienta-countrate_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -226,7 +226,7 @@ Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/doc/html/pearl-scienta-countrate_8ipf_source.html b/doc/html/pearl-scienta-countrate_8ipf_source.html
index 992f209..c16ae9b 100644
--- a/doc/html/pearl-scienta-countrate_8ipf_source.html
+++ b/doc/html/pearl-scienta-countrate_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -96,7 +96,7 @@ $(document).ready(function(){initNavTree('pearl-scienta-countrate_8ipf_source.ht
diff --git a/doc/html/pearl-scienta-preprocess_8ipf.html b/doc/html/pearl-scienta-preprocess_8ipf.html
index 7c64daf..724e608 100644
--- a/doc/html/pearl-scienta-preprocess_8ipf.html
+++ b/doc/html/pearl-scienta-preprocess_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -547,7 +547,7 @@ Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/doc/html/pearl-scienta-preprocess_8ipf_source.html b/doc/html/pearl-scienta-preprocess_8ipf_source.html
index ddc02af..8c915c1 100644
--- a/doc/html/pearl-scienta-preprocess_8ipf_source.html
+++ b/doc/html/pearl-scienta-preprocess_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -107,7 +107,7 @@ $(document).ready(function(){initNavTree('pearl-scienta-preprocess_8ipf_source.h
diff --git a/doc/html/pearl-tools_8ipf.html b/doc/html/pearl-tools_8ipf.html
index 66d0d4d..68022e8 100644
--- a/doc/html/pearl-tools_8ipf.html
+++ b/doc/html/pearl-tools_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -311,7 +311,7 @@ Functions
diff --git a/doc/html/pearl-tools_8ipf_source.html b/doc/html/pearl-tools_8ipf_source.html
index fb4365f..da3cecb 100644
--- a/doc/html/pearl-tools_8ipf_source.html
+++ b/doc/html/pearl-tools_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -100,7 +100,7 @@ $(document).ready(function(){initNavTree('pearl-tools_8ipf_source.html','');});
diff --git a/doc/html/pearl-vector-operations_8ipf.html b/doc/html/pearl-vector-operations_8ipf.html
index 9f219cb..f53afcd 100644
--- a/doc/html/pearl-vector-operations_8ipf.html
+++ b/doc/html/pearl-vector-operations_8ipf.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -510,7 +510,7 @@ Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/doc/html/pearl-vector-operations_8ipf_source.html b/doc/html/pearl-vector-operations_8ipf_source.html
index d56f4e4..9f92910 100644
--- a/doc/html/pearl-vector-operations_8ipf_source.html
+++ b/doc/html/pearl-vector-operations_8ipf_source.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -100,7 +100,7 @@ $(document).ready(function(){initNavTree('pearl-vector-operations_8ipf_source.ht
diff --git a/doc/html/struct_doniach_sunjic_struct.html b/doc/html/struct_doniach_sunjic_struct.html
index e6e4939..cbe169c 100644
--- a/doc/html/struct_doniach_sunjic_struct.html
+++ b/doc/html/struct_doniach_sunjic_struct.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -266,7 +266,7 @@ Data Fields
diff --git a/doc/html/structerror_code.html b/doc/html/structerror_code.html
index e64b6aa..5b320ae 100644
--- a/doc/html/structerror_code.html
+++ b/doc/html/structerror_code.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -306,7 +306,7 @@ Data Fields
diff --git a/doc/html/todo.html b/doc/html/todo.html
index 9abe27b..2b90bbd 100644
--- a/doc/html/todo.html
+++ b/doc/html/todo.html
@@ -29,7 +29,7 @@
PEARL Procedures
- rev-distro-2.1.0-1-gb7390cb-dirty
+ rev-distro-2.1.1-1-gf419e92-dirty
Igor procedures for the analysis of PEARL data
|
@@ -102,7 +102,7 @@ $(document).ready(function(){initNavTree('todo.html','');});
diff --git a/doc/latex/refman.pdf b/doc/latex/refman.pdf
index 411e78d..593f33f 100644
Binary files a/doc/latex/refman.pdf and b/doc/latex/refman.pdf differ