171 lines
352 KiB
HTML
171 lines
352 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<meta name="generator" content="Doxygen 1.8.13"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>PEARL Procedures: pearl-anglescan-process.ipf Source File</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="resize.js"></script>
|
|
<script type="text/javascript" src="navtreedata.js"></script>
|
|
<script type="text/javascript" src="navtree.js"></script>
|
|
<script type="text/javascript">
|
|
$(document).ready(initResizable);
|
|
</script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
<td id="projectalign" style="padding-left: 0.5em;">
|
|
<div id="projectname">PEARL Procedures
|
|
 <span id="projectnumber">rev-distro-2.1.1-1-gf419e92-dirty</span>
|
|
</div>
|
|
<div id="projectbrief">Igor procedures for the analysis of PEARL data</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.13 -->
|
|
<script type="text/javascript">
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
</script>
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|
<script type="text/javascript" src="menu.js"></script>
|
|
<script type="text/javascript">
|
|
$(function() {
|
|
initMenu('',true,false,'search.php','Search');
|
|
$(document).ready(function() { init_search(); });
|
|
});
|
|
</script>
|
|
<div id="main-nav"></div>
|
|
</div><!-- top -->
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
<div id="nav-sync" class="sync"></div>
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
$(document).ready(function(){initNavTree('pearl-anglescan-process_8ipf_source.html','');});
|
|
</script>
|
|
<div id="doc-content">
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<div class="title">pearl-anglescan-process.ipf</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<a href="pearl-anglescan-process_8ipf.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#pragma rtGlobals=3 // Use modern global access method and strict wave access.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#pragma version = 1.8</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#pragma IgorVersion = 6.2</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#pragma ModuleName = PearlAnglescanProcess</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "pearl-vector-operations"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include "pearl-polar-coordinates"</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include <New Polar Graphs></span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// copyright (c) 2013-17 Paul Scherrer Institut</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">//</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// Licensed under the Apache License, Version 2.0 (the "License");</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">// you may not use this file except in compliance with the License.</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// You may obtain a copy of the License at</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// http:///www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">//</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// Please acknowledge the use of this code.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a13e0d37ae23f68cdc5da3d84cb4beed8"> 105</a></span> <span class="keyword">function</span> <a class="code" href="pearl-anglescan-process_8ipf.html#a13e0d37ae23f68cdc5da3d84cb4beed8">strip_delete_frames</a>(strip, qlo, qhi, theta, tilt, phi)</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  wave strip <span class="comment">// 2D data, X-axis = analyser angle, Y-axis = arbitrary manipulator scan</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  variable qlo</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  variable qhi</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  wave theta</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  wave tilt</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  wave phi</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">if</span> (qlo > qhi)</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> -1</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  endif</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="comment">// source indices</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  variable snx = dimsize(strip, 0)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  variable sny = dimsize(strip, 1)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  variable sq1lo = 0</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  variable sq1hi = max(qlo-1, 0)</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  variable sq2lo = min(qhi+1, sny - 1)</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  variable sq2hi = dimsize(strip, 1) - 1</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="comment">// dest indices</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  variable dnx = snx</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  variable dny = sny - (sq2lo - sq1hi + 1)</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  variable dq1lo = 0</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  variable dq1hi = sq1hi</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  variable dq2lo = dq1hi + 1</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  variable dq2hi = dny - 1</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  variable q1ofs = sq1lo - dq1lo</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  variable q2ofs = sq2lo - dq2lo</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  duplicate /free strip, strip_copy</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  redimension /n=(dnx,dny) strip</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  strip[][dq1lo,dq1hi] = strip_copy[p][q + q1ofs]</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  strip[][dq2lo,dq2hi] = strip_copy[p][q + q2ofs]</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  </div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  duplicate /free theta, theta_copy</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  redimension /n=(dny) theta</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  theta[dq1lo,dq1hi] = theta_copy[p + q1ofs]</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  theta[dq2lo,dq2hi] = theta_copy[p + q2ofs]</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  </div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  duplicate /free tilt, tilt_copy</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  redimension /n=(dny) tilt</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  tilt[dq1lo,dq1hi] = tilt_copy[p + q1ofs]</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  tilt[dq2lo,dq2hi] = tilt_copy[p + q2ofs]</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  duplicate /free phi, phi_copy</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  redimension /n=(dny) phi</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  phi[dq1lo,dq1hi] = phi_copy[p + q1ofs]</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  phi[dq2lo,dq2hi] = phi_copy[p + q2ofs]</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  </div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  return 0</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> end</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> </div><div class="line"><a name="l00187"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a48b7d774ed8d3f4329e9923e18e580e8"> 187</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#a48b7d774ed8d3f4329e9923e18e580e8">normalize_strip_x</a>(strip, [smooth_method, smooth_factor, check])</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  wave strip</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  variable smooth_method</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  variable smooth_factor</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  variable check</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  if (ParamIsDefault(smooth_method))</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  smooth_method = 4</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  endif</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  if (ParamIsDefault(smooth_factor))</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  switch(smooth_method)</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  case 4:</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  smooth_factor = 0.5</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  break</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  default:</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  smooth_factor = 2</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  endswitch</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  endif</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  if (ParamIsDefault(check))</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  check = 0</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  endif</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  </div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">// average over all scan positions</span></div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  wave raw_dist = <a class="code" href="pearl-area-profiles_8ipf.html#ab1a65cf82f6933db3dd7b564582e8ed1">ad_profile_x</a>(strip, -inf, inf, "")</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  </div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="comment">// remove nans</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  extract /free /indx raw_dist, clean_index, numtype(raw_dist) == 0</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  duplicate /free raw_dist, dist, dist_x</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  redimension /n=(numpnts(clean_index)) dist, dist_x</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  dist = raw_dist[clean_index[p]]</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  dist_x = pnt2x(raw_dist, clean_index[p])</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  variable div = mean(dist)</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  dist /= div</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  if (check)</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  duplicate /o raw_dist, check_dist</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  check_dist = numtype(raw_dist) == 0 ? interp(x, dist_x, dist) : nan</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  endif</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="comment">// smooth distribution function</span></div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  switch(smooth_method)</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  case 1:</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  Smooth /B /E=3 smooth_factor, dist</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  break</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  case 2:</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  Smooth /E=3 smooth_factor, dist</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  break</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  case 3:</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  make /n=1 /d /free fit_params</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  fit_scienta_ang_transm(raw_dist, fit_params)</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  duplicate /free raw_dist, dist, dist_x</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  dist_x = x</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  dist = scienta_ang_transm(fit_params, x)</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  break</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  case 4:</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  loess /smth=(smooth_factor) srcWave=dist, factors={dist_x}</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">break</span></div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  endswitch</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  </div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="keywordflow">if</span> (check)</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  duplicate /o raw_dist, check_smoo</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  check_smoo = interp(x, dist_x, dist)</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  endif</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span> </div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="comment">// divide</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="keywordflow">if</span> (check != 2)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  strip /= interp(x, dist_x, dist)</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  endif</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span> end</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#aaa734fddecdd75c7cabe20ba777b41b9"> 283</a></span> <span class="keyword">function</span> <a class="code" href="pearl-anglescan-process_8ipf.html#aaa734fddecdd75c7cabe20ba777b41b9">normalize_strip_phi</a>(strip, theta, phi, [theta_offset, theta_range, check])</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  wave strip</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  wave theta</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  wave phi</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  variable theta_offset</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  variable theta_range</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  variable check</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  </div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  <span class="keywordflow">if</span> (ParamIsDefault(check))</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  check = 0</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  endif</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordflow">if</span> (ParamIsDefault(theta_offset))</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  theta_offset = 0</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  endif</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordflow">if</span> (ParamIsDefault(theta_range))</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  theta_offset = 10</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  endif</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="comment">// average over analyser angles</span></div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  wave dist = <a class="code" href="pearl-area-profiles_8ipf.html#abb1eed32a982037ebab00f5c3ea95e62">ad_profile_y</a>(strip, -inf, inf, <span class="stringliteral">""</span>)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  </div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="comment">// smooth distribution function</span></div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  duplicate /free dist, dist_smoo</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  duplicate /free theta, theta_int</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  theta_int = theta - theta_offset</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  duplicate /free phi, phi_int</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  setscale /p x phi_int[0], phi_int[1] - phi_int[0], waveunits(phi, -1), dist, dist_smoo</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span> </div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  extract /free /indx dist, red_idx, theta_int < theta_range</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  duplicate /free red_idx, red_dist, red_phi</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  red_dist = dist[red_idx]</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  red_phi = phi_int[red_idx]</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  </div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  variable wavg = mean(red_dist)</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  make /n=4 /d /free coef</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  coef[0] = {wavg, wavg/100, pi/180, 0}</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  CurveFit /q /h=<span class="stringliteral">"0010"</span> /g /w=2 sin, kwcWave=coef, red_dist /x=red_phi</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  dist_smoo = coef[0] + coef[1] * sin(coef[2] * phi_int[p] + coef[3])</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  </div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="comment">// divide</span></div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="keywordflow">if</span> (check != 2)</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  strip = strip / dist_smoo[q] * coef[0]</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  endif</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  </div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="comment">// check</span></div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="keywordflow">if</span> (check)</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  duplicate /o dist, check_dist</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  duplicate /o dist_smoo, check_smoo</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  setscale /p x dimoffset(dist,0), dimdelta(dist,0), waveunits(dist,0), check_dist, check_smoo</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  endif</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span> end</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> </div><div class="line"><a name="l00366"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a9b56897bd92d926d65f4c67bef1d41bb"> 366</a></span> <span class="keyword">function</span> <a class="code" href="pearl-anglescan-process_8ipf.html#a9b56897bd92d926d65f4c67bef1d41bb">normalize_strip_theta</a>(strip, theta, [theta_offset, smooth_method, smooth_factor, check])</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  wave strip</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  wave theta</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  variable theta_offset</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  variable smooth_method</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  variable smooth_factor</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  variable check</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  </div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="keywordflow">if</span> (ParamIsDefault(check))</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  check = 0</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  endif</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">if</span> (ParamIsDefault(theta_offset))</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  theta_offset = 0</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  endif</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="keywordflow">if</span> (ParamIsDefault(smooth_method))</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  smooth_method = 4</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  endif</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keywordflow">if</span> (ParamIsDefault(smooth_factor))</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  smooth_factor = 0.5</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  endif</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="comment">// average over analyser angles</span></div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  wave dist = <a class="code" href="pearl-area-profiles_8ipf.html#abb1eed32a982037ebab00f5c3ea95e62">ad_profile_y</a>(strip, -inf, inf, <span class="stringliteral">""</span>)</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  </div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="comment">// smooth distribution function</span></div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  duplicate /free dist, dist_smoo</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  duplicate /free theta, theta_int</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  theta_int = theta - theta_offset</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  setscale /p x theta_int[0], theta_int[1] - theta_int[0], waveunits(theta,-1), dist, dist_smoo</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  variable nx = dimsize(strip, 0)</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  variable ix</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  </div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  switch(smooth_method)</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  case 1:</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  Smooth /B /E=3 smooth_factor, dist_smoo</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  break</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  case 2:</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  Smooth /E=3 smooth_factor, dist_smoo</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  break</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  case 4:</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  loess /dest=dist_smoo /smth=(smooth_factor) srcWave=dist, factors={theta_int}</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="keywordflow">break</span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="keywordflow">for</span> (ix = 0; ix < nx; ix += 1)</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  dist = strip[ix][p]</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="keywordflow">if</span> (smooth_factor > 1)</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  CurveFit /nthr=0 /q /w=2 poly smooth_factor+1, dist /x=theta_int /d=dist_smoo</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  CurveFit /nthr=0 /q /w=2 line, dist /x=theta_int /d=dist_smoo</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  endif</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  strip[ix,ix][] /= dist_smoo[q]</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  endfor</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  dist_smoo = 1</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordflow">break</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  endswitch</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  </div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="comment">// divide</span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>  <span class="keywordflow">if</span> (check != 2)</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  strip /= dist_smoo[q]</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>  endif</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  </div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="comment">// check</span></div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="keywordflow">if</span> (check)</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  duplicate /o dist, check_dist</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  duplicate /o dist_smoo, check_smoo</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  setscale /p x dimoffset(dist,0), dimdelta(dist,0), waveunits(dist,0), check_dist, check_smoo</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  endif</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span> end</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span> </div><div class="line"><a name="l00464"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#ad0a93367d2e9b66bb7b81697e87adfaf"> 464</a></span> <span class="keyword">function</span> <a class="code" href="pearl-anglescan-process_8ipf.html#ad0a93367d2e9b66bb7b81697e87adfaf">normalize_strip_thetaphi</a>(strip, theta, phi, [theta_offset, smooth_method, smooth_factor, check])</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  wave strip</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  wave theta</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  wave phi</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  variable theta_offset</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  variable smooth_method</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  variable smooth_factor</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  variable check</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  </div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="keywordflow">if</span> (ParamIsDefault(check))</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  check = 0</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  endif</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="keywordflow">if</span> (ParamIsDefault(theta_offset))</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  theta_offset = 0</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  endif</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="keywordflow">if</span> (ParamIsDefault(smooth_method))</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  smooth_method = 4</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  endif</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="keywordflow">if</span> (ParamIsDefault(smooth_factor))</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  smooth_factor = 0.5</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  endif</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span> </div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="comment">// average over analyser angles</span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  wave dist = <a class="code" href="pearl-area-profiles_8ipf.html#abb1eed32a982037ebab00f5c3ea95e62">ad_profile_y</a>(strip, -inf, inf, <span class="stringliteral">""</span>)</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  </div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="comment">// smooth distribution function</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  duplicate /free dist, dist_smoo</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  duplicate /free theta, theta_int</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  theta_int = theta - theta_offset</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  setscale /p x theta_int[0], theta_int[1] - theta_int[0], waveunits(theta,-1), dist, dist_smoo</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  variable nx = dimsize(strip, 0)</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  variable ix</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  </div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  switch(smooth_method)</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  case 4:</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  loess /dest=dist_smoo /smth=(smooth_factor) srcWave=dist, factors={theta_int, phi}</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="keywordflow">break</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  abort <span class="stringliteral">"smooth method not supported"</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  endswitch</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  </div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="comment">// divide</span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keywordflow">if</span> (check != 2)</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  strip /= dist_smoo[q]</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  endif</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  </div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="comment">// check</span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="keywordflow">if</span> (check)</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  duplicate /o dist, check_dist</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  duplicate /o dist_smoo, check_smoo</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  setscale /p x dimoffset(dist,0), dimdelta(dist,0), waveunits(dist,0), check_dist, check_smoo</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  endif</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span> end</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span> </div><div class="line"><a name="l00523"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a992920d621023e6b483ff51eee68b508"> 523</a></span> <span class="keyword">function</span> <a class="code" href="pearl-anglescan-process_8ipf.html#a992920d621023e6b483ff51eee68b508">normalize_strip_theta_scans</a>(strip, theta, [theta_offset, smooth_method, smooth_factor, check])</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  wave strip</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  wave theta</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  variable theta_offset</div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  variable smooth_method</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  variable smooth_factor</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  variable check</div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  </div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="keywordflow">if</span> (ParamIsDefault(check))</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  check = 0</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  endif</div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="keywordflow">if</span> (ParamIsDefault(theta_offset))</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  theta_offset = 0</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  endif</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="keywordflow">if</span> (ParamIsDefault(smooth_method))</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  smooth_method = 4</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  endif</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordflow">if</span> (ParamIsDefault(smooth_factor))</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  smooth_factor = 0.5</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  endif</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span> </div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  <span class="comment">// average over analyser angles</span></div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  wave dist = <a class="code" href="pearl-area-profiles_8ipf.html#abb1eed32a982037ebab00f5c3ea95e62">ad_profile_y</a>(strip, -inf, inf, <span class="stringliteral">""</span>)</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  </div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>  <span class="comment">// smooth distribution function</span></div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>  duplicate /free dist, dist_smoo</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>  duplicate /free theta, theta_int</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>  theta_int = theta - theta_offset</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>  setscale /p x theta_int[0], theta_int[1] - theta_int[0], waveunits(theta,-1), dist, dist_smoo</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span> </div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>  <span class="comment">// analyse scanning scheme</span></div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>  duplicate /free theta_int, d1_theta, d2_theta</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  Differentiate /METH=2 theta_int /D=d1_theta</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  Differentiate /METH=2 d1_theta /D=d2_theta</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>  d2_theta = abs(d2_theta)</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  make /free w_levels</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>  FindLevels /edge=1 /p /q /d=w_levels d2_theta, 0.1</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  if (v_flag != 1)</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  abort "unrecognized scanning scheme"</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  endif</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  w_levels = ceil(w_levels)</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  InsertPoints 0, 1, w_levels</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  w_levels[0] = 0</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  InsertPoints numpnts(w_levels), 1, w_levels</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  w_levels[numpnts(w_levels)-1] = numpnts(theta_int)</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  </div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  variable n_scans = numpnts(w_levels) - 1</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  variable i_scan</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  variable p1, p2</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  for (i_scan = 0; i_scan < n_scans; i_scan += 1)</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  p1 = w_levels[i_scan]</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  p2 = w_levels[i_scan+1] - 1</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  duplicate /free /r=[p1, p2] dist, dist_piece, smooth_piece</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  duplicate /free /r=[p1, p2] theta_int, theta_piece</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  switch(smooth_method)</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  case 4:</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  loess /dest=smooth_piece /smth=(smooth_factor) srcWave=dist_piece, factors={theta_piece}</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="keywordflow">break</span></div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  abort <span class="stringliteral">"smooth method not supported"</span></div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  endswitch</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  dist_smoo[p1, p2] = smooth_piece[p - p1]</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  endfor</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  </div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="comment">// divide</span></div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="keywordflow">if</span> (check != 2)</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  strip /= dist_smoo[q]</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  endif</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span> </div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  <span class="comment">// check</span></div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  <span class="keywordflow">if</span> (check)</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  duplicate /o dist, check_dist</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  duplicate /o dist_smoo, check_smoo</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  setscale /p x dimoffset(dist,0), dimdelta(dist,0), waveunits(dist,0), check_dist, check_smoo</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  endif</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span> end</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span> </div><div class="line"><a name="l00613"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#ac617c3b400488b656493af8ca08f1791"> 613</a></span> <span class="keyword">function</span> <a class="code" href="pearl-anglescan-process_8ipf.html#ac617c3b400488b656493af8ca08f1791">normalize_strip_2d</a>(strip, theta, [theta_offset, smooth_method, smooth_factor, check])</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  wave strip</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  wave theta</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  variable theta_offset</div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  variable smooth_method</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  variable smooth_factor</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  variable check</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  </div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  <span class="keywordflow">if</span> (ParamIsDefault(check))</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  check = 0</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  endif</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="keywordflow">if</span> (ParamIsDefault(theta_offset))</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  theta_offset = 0</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  endif</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="keywordflow">if</span> (ParamIsDefault(smooth_method))</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  smooth_method = 4</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  endif</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">if</span> (ParamIsDefault(smooth_factor))</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  smooth_factor = 0.5</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  endif</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span> </div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  variable nx = dimsize(strip, 0)</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  variable ny = dimsize(strip, 1)</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  </div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  duplicate /free strip, dist, alpha_int, theta_int</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  theta_int = theta[q] - theta_offset</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  alpha_int = dimoffset(strip, 0) + p * dimdelta(strip, 0)</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  redimension /n=(nx * ny) dist, alpha_int, theta_int</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  </div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  switch(smooth_method)</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  case 4:</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  loess /dest=dist_smoo /smth=(smooth_factor) srcWave=dist, factors={alpha_int, theta_int}</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  redimension /n=(nx, ny) dist_smoo</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  <span class="keywordflow">break</span></div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  Abort <span class="stringliteral">"undefined smooth method"</span></div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  <span class="keywordflow">break</span></div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  endswitch</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  </div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  <span class="comment">// divide</span></div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>  <span class="keywordflow">if</span> (check != 2)</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>  strip /= dist_smoo</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>  endif</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>  </div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="comment">// check</span></div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>  <span class="keywordflow">if</span> (check)</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="comment">//duplicate /o dist, check_dist</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  duplicate /o dist_smoo, check_smoo</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>  endif</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span> end</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span> </div><div class="line"><a name="l00673"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#ab65d25af7476ed18f7bf7359614a912b"> 673</a></span> <span class="keyword">function</span> <a class="code" href="pearl-anglescan-process_8ipf.html#ab65d25af7476ed18f7bf7359614a912b">crop_strip</a>(strip, xlo, xhi)</div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  wave strip</div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  variable xlo</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  variable xhi</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  </div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  variable plo = round((xlo - dimoffset(strip, 0)) / dimdelta(strip, 0))</div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  variable phi = round((xhi - dimoffset(strip, 0)) / dimdelta(strip, 0))</div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  xlo = plo * dimdelta(strip, 0) + dimoffset(strip, 0)</div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  xhi = phi * dimdelta(strip, 0) + dimoffset(strip, 0)</div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  variable nx = phi - plo + 1</div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  variable ny = dimsize(strip, 1)</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  </div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  duplicate /free strip, strip_copy</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  redimension /n=(nx,ny) strip</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  strip = strip_copy[p + plo][q]</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  setscale /i x xlo, xhi, waveunits(strip, 0), strip</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span> end</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span> </div><div class="line"><a name="l00705"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#aa79c0ff6073bd42e202b9fa3f8c00b9f"> 705</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#aa79c0ff6073bd42e202b9fa3f8c00b9f">crop_strip_theta</a>(strip, theta_lo, theta_hi, theta, tilt, phi)</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  wave strip</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  variable theta_lo</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  variable theta_hi</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  wave theta</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  wave tilt</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  wave phi</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>  </div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>  extract /indx /free theta, idx, (theta >= theta_lo) && (theta <= theta_hi)</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  variable nx = dimsize(strip, 0)</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  variable ny = numpnts(idx)</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>  </div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>  theta[0, ny-1] = theta[idx]</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>  tilt[0, ny-1] = tilt[idx]</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  phi[0, ny-1] = phi[idx]</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  redimension /n=(ny) theta, tilt, phi</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  </div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  duplicate /free strip, strip_copy</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>  redimension /n=(nx,ny) strip</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>  strip = strip_copy[p][idx[q]]</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span> end</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span> </div><div class="line"><a name="l00769"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#afed227ae79873fd32c96afbf606d1965"> 769</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#afed227ae79873fd32c96afbf606d1965">pizza_service</a>(data, nickname, theta_offset, tilt_offset, phi_offset, [npolar, nograph, folding, xpdplot])</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  wave data</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  <span class="keywordtype">string</span> nickname</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  variable theta_offset</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  variable tilt_offset</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  variable phi_offset</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  variable npolar</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  variable nograph</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  variable folding</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  variable xpdplot</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  </div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>  if (ParamIsDefault(npolar))</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>  npolar = 91</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>  endif</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>  if (ParamIsDefault(nograph))</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>  nograph = 0</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>  endif</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  if (ParamIsDefault(folding))</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  folding = 1</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  endif</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  if (ParamIsDefault(xpdplot))</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  xpdplot = 0</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  endif</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  </div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="comment">// sort out data folder structure</span></div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  dfref saveDF = GetDataFolderDFR()</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  dfref dataDF = GetWavesDataFolderDFR(data)</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  setdatafolder dataDF</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  if (DataFolderExists(":attr"))</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  setdatafolder :attr</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  endif</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  dfref attrDF = GetDataFolderDFR()</div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  </div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  wave /sdfr=attrDF ManipulatorTheta</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  wave /sdfr=attrDF ManipulatorTilt</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  wave /sdfr=attrDF ManipulatorPhi</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span> </div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  if ((dimsize(ManipulatorTheta, 0) != dimsize(data, 1)) || (dimsize(ManipulatorTilt, 0) != dimsize(data, 1)) || (dimsize(ManipulatorPhi, 0) != dimsize(data, 1)))</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  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 <a class="code" href="pearl-anglescan-process_8ipf.html#a229770447193d4fd12032b235aab4d28">pizza_service_2</a> with properly scaled manipulator waves."</div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  endif</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span> </div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  duplicate /free ManipulatorTheta, m_theta</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  duplicate /free ManipulatorTilt, m_tilt</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  duplicate /free ManipulatorPhi, m_phi</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span> </div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  m_theta -= theta_offset</div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  m_tilt -= tilt_offset</div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  m_phi -= phi_offset</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  </div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#a229770447193d4fd12032b235aab4d28">pizza_service_2</a>(data, nickname, m_theta, m_tilt, m_phi, npolar=npolar, nograph=nograph, folding=folding, xpdplot=xpdplot)</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  </div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  setdatafolder saveDF</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span> end</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span> </div><div class="line"><a name="l00862"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a229770447193d4fd12032b235aab4d28"> 862</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#a229770447193d4fd12032b235aab4d28">pizza_service_2</a>(data, nickname, m_theta, m_tilt, m_phi, [npolar, nograph, folding, xpdplot])</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  wave data</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="keywordtype">string</span> nickname</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  wave m_theta</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  wave m_tilt</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  wave m_phi</div><div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  variable npolar</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  variable nograph</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  variable folding</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  variable xpdplot</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  </div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  if (ParamIsDefault(npolar))</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  npolar = 91</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>  endif</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  if (ParamIsDefault(nograph))</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  nograph = 0</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  endif</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  if (ParamIsDefault(folding))</div><div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  folding = 1</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  endif</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  if (ParamIsDefault(xpdplot))</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  xpdplot = 0</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  endif</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  </div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  if ((dimsize(m_theta, 0) != dimsize(data, 1)) || (dimsize(m_tilt, 0) != dimsize(data, 1)) || (dimsize(m_phi, 0) != dimsize(data, 1)))</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>  Abort "Warning: The dimension size of the manipulator waves does not match the Y dimension of the data wave!"</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>  endif</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>  </div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  <span class="keywordtype">string</span> graphname = "graph_" + nickname</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="keywordtype">string</span> outprefix = nickname</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  </div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <span class="comment">// sort out data folder structure</span></div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  dfref saveDF = GetDataFolderDFR()</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  dfref dataDF = GetWavesDataFolderDFR(data)</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  setdatafolder dataDF</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span> </div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  if (xpdplot)</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  setdatafolder root:</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  outprefix = nickname</div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  else</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  setdatafolder dataDF</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  newdatafolder /s/o $nickname</div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  outprefix = ""</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  endif</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  dfref destDF = GetDataFolderDFR()</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  </div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  <span class="comment">// performance monitoring</span></div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  variable timerRefNum</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  variable /g pol_perf_secs</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>  timerRefNum = startMSTimer</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  </div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  duplicate /free m_tilt, corr_tilt</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  duplicate /free m_phi, corr_phi</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  corr_tilt = -m_tilt <span class="comment">// checked 140702</span></div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  corr_phi = m_phi <span class="comment">// checked 140702</span></div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  </div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  make /n=1/d/free d_polar, d_azi</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  </div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#a2b38c6c9b6e60593ba69d3773b6bc779">convert_angles_ttpd2polar</a>(m_theta, corr_tilt, corr_phi, data, d_polar, d_azi)</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  d_azi += 180 <span class="comment">// changed 151030 (v1.6)</span></div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#a902ac3a24e33f651e83ee03d31707da7">make_hemi_grid</a>(npolar, outprefix, xpdplot=xpdplot)</div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  variable ifold</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  for (ifold = 0; ifold < folding; ifold += 1)</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  d_azi = d_azi >= 360 ? d_azi - 360 : d_azi</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#a4952bc53e3d6d272d25b5e35e91696b5">hemi_add_anglescan</a>(outprefix, data, d_polar, d_azi)</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  d_azi += 360 / folding</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  endfor</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  </div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <span class="comment">// normalize folding</span></div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  if (strlen(outprefix))</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="keywordtype">string</span> s_prefix = outprefix + "_"</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <span class="keywordtype">string</span> s_int = s_prefix + "i"</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  else</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  s_prefix = ""</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  s_int = "values"</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  endif</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  if (folding > 1)</div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  wave values = $s_int</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  values /= folding</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  endif</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  </div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  if (!nograph)</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#ae57302acfc822c4817f2b7eef55efea2">display_hemi_scan</a>(outprefix, graphname = graphname)</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  endif</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  </div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  if (timerRefNum >= 0)</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  pol_perf_secs = stopMSTimer(timerRefNum) / 1e6</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  endif</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span> </div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  setdatafolder saveDF</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span> end</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span> </div><div class="line"><a name="l00979"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a01bac9e7d4ba743c3c34177a05070466"> 979</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#a01bac9e7d4ba743c3c34177a05070466">show_analyser_line</a>(theta, tilt, phi, theta_offset, tilt_offset, phi_offset, [npolar, nograph, xpdplot])</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>  variable theta</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>  variable tilt</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  variable phi</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  variable theta_offset</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>  variable tilt_offset</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>  variable phi_offset</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  variable npolar</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  variable nograph</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  variable xpdplot</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  </div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>  <span class="keywordtype">string</span> nickname = "analyser"</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span> </div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  if (ParamIsDefault(npolar))</div><div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  npolar = 91</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  endif</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  if (ParamIsDefault(nograph))</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  nograph = 0</div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  endif</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  if (ParamIsDefault(xpdplot))</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  xpdplot = 0</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  endif</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  <span class="keywordtype">string</span> graphname = "graph_" + nickname</div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  <span class="keywordtype">string</span> outprefix = nickname</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  </div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  <span class="comment">// sort out data folder structure</span></div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  dfref saveDF = GetDataFolderDFR()</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  dfref dataDF = saveDF</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>  if (xpdplot)</div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>  setdatafolder root:</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>  outprefix = nickname</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>  else</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>  setdatafolder dataDF</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>  newdatafolder /s/o $nickname</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>  outprefix = ""</div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>  endif</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>  dfref destDF = GetDataFolderDFR()</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>  </div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  make /n=1 /free m_theta</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  make /n=1 /free m_tilt</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>  make /n=1 /free m_phi</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>  m_theta = theta - theta_offset</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>  m_tilt = tilt - tilt_offset</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>  m_tilt *= -1 <span class="comment">// checked 140702</span></div><div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>  m_phi = phi - phi_offset</div><div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>  <span class="comment">//m_phi *= -1 // checked 140702</span></div><div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>  </div><div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  make /n=60 /free data</div><div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  setscale /i x -30, 30, data</div><div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>  data = x</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>  make /n=1/d/free d_polar, d_azi</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>  </div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#a3cc7eddf5c6b0658260cfb32dd2c026d">convert_angles_ttpa2polar</a>(m_theta, m_tilt, m_phi, data, d_polar, d_azi)</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  d_azi += 180 <span class="comment">// changed 151030 (v1.6)</span></div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  d_azi = d_azi >= 360 ? d_azi - 360 : d_azi</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#a902ac3a24e33f651e83ee03d31707da7">make_hemi_grid</a>(npolar, outprefix, xpdplot=xpdplot)</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#a4952bc53e3d6d272d25b5e35e91696b5">hemi_add_anglescan</a>(outprefix, data, d_polar, d_azi)</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  </div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  if (!nograph)</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#ae57302acfc822c4817f2b7eef55efea2">display_hemi_scan</a>(outprefix, graphname = graphname)</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  endif</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>  </div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  setdatafolder saveDF</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> end</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> </div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> </div><div class="line"><a name="l01049"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a2b38c6c9b6e60593ba69d3773b6bc779"> 1049</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#a2b38c6c9b6e60593ba69d3773b6bc779">convert_angles_ttpd2polar</a>(theta, tilt, phi, data, polar, azi)</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  wave theta, tilt, phi <span class="comment">// see convert_angles_ttpa2polar</span></div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  wave data <span class="comment">// in, 1D or 2D</span></div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  <span class="comment">// X-scale must be set to analyser angle scale</span></div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  wave polar, azi <span class="comment">// see convert_angles_ttpa2polar</span></div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  </div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  make /n=(dimsize(data, 0)) /d /free ana</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  setscale /p x dimoffset(data, 0), dimdelta(data, 0), waveunits(data, 0), ana</div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  ana = x</div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#a3cc7eddf5c6b0658260cfb32dd2c026d">convert_angles_ttpa2polar</a>(theta, tilt, phi, ana, polar, azi)</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> end</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> </div><div class="line"><a name="l01088"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a3cc7eddf5c6b0658260cfb32dd2c026d"> 1088</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#a3cc7eddf5c6b0658260cfb32dd2c026d">convert_angles_ttpa2polar</a>(theta, tilt, phi, analyser, polar, azi)</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  wave theta</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  wave tilt</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  wave phi</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  wave analyser</div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  wave polar, azi</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  </div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  variable nn = numpnts(theta)</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  variable na = numpnts(analyser)</div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  redimension /n=(na, nn) polar, azi</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> </div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  variable radius = 1 <span class="comment">// don't need to specify - everything is scalable</span></div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  </div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  <span class="comment">// step 1: calculate cartesian detection vectors at normal emission</span></div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <span class="comment">// this is simply a polar-cartesian mapping, independent of the manipulator</span></div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  <span class="comment">// phi=0 is in the polar rotation plane</span></div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  make /n=(3,na) /d /free w_orig_polar, w_orig_cart, w_rot_cart, w_rot_polar</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  w_orig_polar[0][] = radius</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  w_orig_polar[1][] = analyser[q]</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  w_orig_polar[2][] = 0</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  <a class="code" href="pearl-polar-coordinates_8ipf.html#a6a0ffb6b9160413d9694b1fd8e10c858">polar2cart_wave</a>(w_orig_polar, w_orig_cart)</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <span class="comment">// if the angle-dispersive axis was horizontal, we'd need to rotate the detector</span></div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  <span class="comment">//rotate_z_wave(w_orig_cart, 90)</span></div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> </div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  variable ii</div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  for (ii = 0; ii < nn; ii += 1)</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <span class="comment">// step 2: rotate the detection vectors according to the manipulator angles</span></div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  <span class="comment">// the order of rotations is important because we rotate about fixed axes</span></div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  <span class="comment">// y-axis = tilt rotation axis</span></div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  <span class="comment">// x-axis = polar rotation axis</span></div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  <span class="comment">// z-axis = normal emission = azimuthal rotation axis</span></div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  w_rot_cart = w_orig_cart</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  <a class="code" href="pearl-vector-operations_8ipf.html#adfd1d68e739694982fbd00b76568c1c0">rotate_y_wave</a>(w_rot_cart, -tilt[ii])</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  <a class="code" href="pearl-vector-operations_8ipf.html#ada80428496dc748b960bd9c65df7da8b">rotate_x_wave</a>(w_rot_cart, -theta[ii])</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  <a class="code" href="pearl-vector-operations_8ipf.html#a0030e927980581d57781ad391f2d872a">rotate_z_wave</a>(w_rot_cart, -phi[ii] - 90)</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  <span class="comment">// map the vectors back to the sample coordinate system</span></div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  <a class="code" href="pearl-polar-coordinates_8ipf.html#adfc1f0b3cddf672b0ccdb6a22b97ba9e">cart2polar_wave</a>(w_rot_cart, w_rot_polar)</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <span class="comment">// copy to output</span></div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  polar[][ii] = w_rot_polar[1][p]</div><div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  azi[][ii] = w_rot_polar[2][p]</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  endfor</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span> end</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span> </div><div class="line"><a name="l01131"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#aa54a550eccad2c8ccd82d2b4167f7a92"> 1131</a></span> static function <a class="code" href="pearl-anglescan-process_8ipf.html#aa54a550eccad2c8ccd82d2b4167f7a92">line_average</a>(source, dest)</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  <span class="comment">// is this function used?</span></div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  wave source</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  wave dest</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  </div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  variable ii</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  variable nn = dimsize(source, 1)</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  make /n=(dimsize(source, 0))/d/free line</div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  for (ii = 0; ii < nn; ii += 1)</div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  line = source[p][ii]</div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  wavestats /q line</div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  dest[][ii] = line[p] / v_max</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  endfor</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span> end</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span> </div><div class="line"><a name="l01149"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a9624070f3e938378631432430d47a389"> 1149</a></span> static function <a class="code" href="pearl-anglescan-process_8ipf.html#a9624070f3e938378631432430d47a389">calc_nth</a>(Theta_st, Theta_in, th, Phi_ran, Phi_ref, Holomode)</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  Variable Theta_st, Theta_in, th, Phi_ran, Phi_ref</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  String Holomode</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  Variable The_step</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  Variable deg2rad=0.01745329</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  </div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  if ( cmpstr(Holomode, "Stereographic") == 0)</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  The_step =trunc( Phi_ran*sin(th*deg2rad)*Phi_ref/Theta_st )</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  if(th==90)</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  The_step =trunc( Phi_ran*sin(th*pi/180)*Phi_ref/Theta_st )</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  endif</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>  else</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  if (cmpstr(Holomode, "Parallel") == 0)</div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  The_step=trunc( Phi_ran*tan(th*deg2rad)*Phi_ref/Theta_st )</div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  else</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  if ( cmpstr(Holomode, "h") == 0)</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  The_step=trunc( th/Theta_in*Phi_ran/Theta_st )</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  else</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>  <span class="comment">//altro</span></div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  endif</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  endif</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  endif</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  </div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  return(The_step)</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span> end</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> </div><div class="line"><a name="l01178"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a999a9cd7d00d3e1ec8e768228a664ad1"> 1178</a></span> static function <a class="code" href="pearl-anglescan-process_8ipf.html#a999a9cd7d00d3e1ec8e768228a664ad1">calc_phi_step</a>(Theta_in, th, Theta_st, Phi_ran, Phi_ref, Holomode)</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  Variable Theta_in, th, Theta_st, Phi_ran, Phi_ref</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  String Holomode</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  </div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  Variable Phi_st</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  Variable deg2rad=0.01745329</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span> </div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  if ( cmpstr(Holomode, "Stereographic") == 0 )</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  if ((th < 0.5) || (trunc(Phi_ran*sin(th*deg2rad)*Phi_ref/Theta_st) == 0))</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  Phi_st=0.0</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  else</div><div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  Phi_st=Phi_ran/(trunc(Phi_ran*sin(th*deg2rad)*Phi_ref/Theta_st))</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  endif</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  if(th==90)</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  Phi_st=2.0</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  endif</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  endif</div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span> </div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  if ( cmpstr(Holomode, "Parallel") == 0 )</div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  if((th < 0.5) || (trunc(Phi_ran*tan(th*deg2rad)*Phi_ref/Theta_st) == 0))</div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  Phi_st=0.0</div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  else</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  Phi_st=Phi_ran/(trunc(Phi_ran*tan(th*deg2rad)*Phi_ref/Theta_st))</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>  endif</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  endif</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span> </div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  if ( cmpstr(Holomode, "h") == 0 )</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  if((th < 0.5) || (trunc(Phi_ran*sin(th*deg2rad)*Phi_ref/Theta_st) == 0))</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  Phi_st=0.0</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  else</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  Phi_st=Phi_ran/trunc(th/Theta_in*Phi_ran/Theta_st)</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>  endif</div><div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  endif</div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  </div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  if (Phi_st==0)</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  Phi_st=360</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  endif</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  </div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  return(Phi_st)</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> end</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span> </div><div class="line"><a name="l01222"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a1fb6aa7870dfbf0ed92660b7aae579e0"> 1222</a></span> static function <a class="code" href="pearl-anglescan-process_8ipf.html#a1fb6aa7870dfbf0ed92660b7aae579e0">Calc_The_step</a>(th, Theta_st, Holomode)</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  String Holomode</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  Variable th, Theta_st</div><div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  </div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>  Variable deg2rad=0.01745329, dt_loc,The_step</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span> </div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>  if ( (cmpstr(Holomode, "Stereographic")) ==0 )</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>  The_step=Theta_st </div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>  endif</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>  </div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>  if ( (cmpstr(Holomode, "h")) ==0 )</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>  The_step=Theta_st </div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>  endif</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>  </div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>  if ( cmpstr(Holomode, "Parallel") == 0 )</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>  if(th < 89.5)</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>  dt_loc = Theta_st/cos(th*deg2rad)</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>  if(dt_loc > 10)</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>  dt_loc=10</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>  endif</div><div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>  The_step=dt_loc</div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>  else</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>  The_step=10</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>  endif</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>  endif</div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>  return(The_step)</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span> end</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span> </div><div class="line"><a name="l01253"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#ac0def1ded61f9cd758df0c99f4ff9470"> 1253</a></span> static function <a class="code" href="pearl-anglescan-process_8ipf.html#ac0def1ded61f9cd758df0c99f4ff9470">CalcN_Theta</a>(HoloMode,Theta_in,Theta_ran,Theta_st)</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>  String HoloMode</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>  Variable Theta_in,Theta_ran,Theta_st</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>  Variable n_theta, aux, aux1,ii</div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span> </div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>  aux = Theta_in</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>  aux1= Theta_in - Theta_ran</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>  ii = 0</div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>  do</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>  aux = aux - <a class="code" href="pearl-anglescan-process_8ipf.html#a1fb6aa7870dfbf0ed92660b7aae579e0">Calc_The_step</a>(aux, Theta_st, HoloMode)</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>  if(aux<=Theta_in-Theta_ran)</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>  aux=Theta_in-Theta_ran</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>  endif</div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>  ii = ii+1</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>  while((aux>aux1)%&(Theta_in-aux<=Theta_ran)) <span class="comment">//</span></div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>  n_theta=ii+1</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>  Return(n_theta)</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span> end</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span> </div><div class="line"><a name="l01291"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a902ac3a24e33f651e83ee03d31707da7"> 1291</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#a902ac3a24e33f651e83ee03d31707da7">make_hemi_grid</a>(npol, nickname, [xpdplot])</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>  variable npol</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>  <span class="keywordtype">string</span> nickname</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>  variable xpdplot</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>  </div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>  if (ParamIsDefault(xpdplot))</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>  xpdplot = 0</div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>  endif</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>  </div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>  <span class="keywordtype">string</span> HoloMode = "h"</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>  variable Theta_in = 90</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>  variable Theta_ran = 90</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>  variable Theta_st = 90 / (npol - 1)</div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>  variable Phi_ran = 360</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>  variable Phi_ref = 1</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>  variable Phi_in = 0</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>  </div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>  variable n_theta = <a class="code" href="pearl-anglescan-process_8ipf.html#ac0def1ded61f9cd758df0c99f4ff9470">CalcN_Theta</a>(HoloMode, Theta_in, Theta_ran, Theta_st)</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span> </div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>  <span class="comment">// wave names</span></div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>  if (strlen(nickname))</div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>  <span class="keywordtype">string</span> s_prefix = nickname + "_"</div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>  <span class="keywordtype">string</span> s_int = s_prefix + "i" <span class="comment">// Intensity wave (counts/sec)</span></div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>  else</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>  s_prefix = ""</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>  s_int = "values" <span class="comment">// "i" is not a valid wave name</span></div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>  endif</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>  <span class="keywordtype">string</span> s_polar = s_prefix + "pol" <span class="comment">// thetas for each int-point of the holo</span></div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>  <span class="keywordtype">string</span> s_azim = s_prefix + "az" <span class="comment">// phis for each int-point of the holo</span></div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span> </div><div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>  <span class="keywordtype">string</span> s_index = s_prefix + "index" <span class="comment">// starting index for each theta</span></div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>  <span class="keywordtype">string</span> s_theta = s_prefix + "th" <span class="comment">// theta values</span></div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>  <span class="keywordtype">string</span> s_dphi = s_prefix + "dphi" <span class="comment">// delta phis at each theta</span></div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>  <span class="keywordtype">string</span> s_nphis = s_prefix + "nphis" <span class="comment">// number of phis at each theta</span></div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span> </div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>  <span class="keywordtype">string</span> s_HoloData = s_prefix + "data" <span class="comment">// All holo exp.- parameter information</span></div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>  <span class="keywordtype">string</span> s_HoloInfo = s_prefix + "info"</div><div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>  </div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>  <span class="comment">// the following two waves are used by the pearl-anglescan procedures but not by XPDplot</span></div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>  <span class="keywordtype">string</span> s_tot = s_prefix + "tot" <span class="comment">// accumulated counts at each point</span></div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>  <span class="keywordtype">string</span> s_weight = s_prefix + "wt" <span class="comment">// total accumulation time at each point (arb. units)</span></div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span> </div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>  make /O/D/n=(n_theta) $s_index /wave=index</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>  make /O/D/n=(n_theta) $s_theta /wave=theta</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>  make /O/D/n=(n_theta) $s_dphi /wave=dphi</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>  make /O/D/n=(n_theta) $s_nphis /wave=nphis</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>  </div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>  <span class="comment">//---------- calculate phi-step-size for this theta:</span></div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>  variable aux = <a class="code" href="pearl-anglescan-process_8ipf.html#a1fb6aa7870dfbf0ed92660b7aae579e0">Calc_The_step</a>(Theta_in, Theta_st, HoloMode)</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>  dphi[0] = <a class="code" href="pearl-anglescan-process_8ipf.html#a999a9cd7d00d3e1ec8e768228a664ad1">calc_phi_step</a>(Theta_in, Theta_in, aux, Phi_ran, Phi_ref, HoloMode)</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>  Theta[0] = Theta_in</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>  nphis[0] = <a class="code" href="pearl-anglescan-process_8ipf.html#a9624070f3e938378631432430d47a389">calc_nth</a>(aux, Theta_in, Theta_in, Phi_ran, Phi_ref, HoloMode) </div><div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>  Index[0] = nphis[0]</div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>  </div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>  <span class="comment">//---------- calculate number of phis, phi-step, and starting-index for each theta:</span></div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>  variable ii = 1</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>  do</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>  Theta[ii] = Theta[ii-1] - aux</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>  if(Theta[ii] <= Theta_in-Theta_ran)</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>  Theta[ii] = Theta_in-Theta_ran</div><div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>  endif</div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>  aux = <a class="code" href="pearl-anglescan-process_8ipf.html#a1fb6aa7870dfbf0ed92660b7aae579e0">Calc_The_step</a>(Theta[ii], Theta_st, HoloMode)</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>  dphi[ii] = <a class="code" href="pearl-anglescan-process_8ipf.html#a999a9cd7d00d3e1ec8e768228a664ad1">calc_phi_step</a>(Theta_in, Theta[ii], aux, Phi_ran, Phi_ref, HoloMode)</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>  nphis[ii] = <a class="code" href="pearl-anglescan-process_8ipf.html#a9624070f3e938378631432430d47a389">calc_nth</a>(aux, Theta_in, Theta[ii], Phi_ran, Phi_ref, HoloMode)</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>  Index[ii] = Index[ii-1] + nphis[ii]</div><div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>  ii=ii+1</div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>  while(ii < n_theta)</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span> </div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>  if (Index[n_theta-1]==Index[n_theta-2])</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>  Index[n_theta-1]=Index[n_theta-2]+1</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>  nphis[n_theta-1]=1</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>  endif</div><div class="line"><a name="l01363"></a><span class="lineno"> 1363</span> </div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>  variable NumPoints = sum(nphis, 0, numpnts(nphis))</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>  </div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>  <span class="comment">//---------- calculate theta and phi for each data point:</span></div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>  make /O/D/N=(NumPoints) $s_polar /wave=polar, $s_azim /wave=azim</div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>  note azim, "<a class="code" href="pearl-anglescan-tracker_8ipf.html#a4c7a521b8f1a0769c09bfa4a1fca7dab">version</a>=1.6"</div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>  </div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>  ii = 0</div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>  variable StartIndex = 0</div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>  variable EndIndex</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>  do</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>  EndIndex=Index[ii]</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>  Polar[StartIndex, EndIndex-1]=Theta[ii]</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>  Azim[StartIndex, EndIndex-1]= mod(Phi_ran+(x-StartIndex)*dphi[ii]+Phi_in,Phi_ran)</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>  ii = ii + 1 </div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>  StartIndex = EndIndex </div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>  while(ii < n_theta)</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span> </div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>  duplicate /o azim, $s_int /wave=values</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>  duplicate /o azim, $s_tot /wave=totals</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>  duplicate /o azim, $s_weight /wave=weights</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>  values = nan</div><div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>  totals = 0</div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>  weights = 0</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span> </div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>  <span class="comment">// XPDplot metadata</span></div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>  if (xpdplot)</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>  <span class="keywordtype">string</span> s_FileName = ""</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>  <span class="keywordtype">string</span> s_Comment = "created by pearl-anglescan-process.ipf"</div><div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>  <span class="keywordtype">string</span> s_HoloMode = "Stereographic"</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>  variable /g gb_SpectraFile = 0</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>  </div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>  Make/O/D/n=22 $s_HoloData /wave=HoloData</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>  HoloData[0] = NaN <span class="comment">// v_StartKE</span></div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>  HoloData[1] = NaN <span class="comment">// v_StoppKE</span></div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>  HoloData[6] = NumPoints</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>  HoloData[7] = Theta_in</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>  HoloData[8] = Theta_ran</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>  HoloData[9] = Theta_st</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>  HoloData[11] = Phi_in</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>  HoloData[12] = Phi_ran</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>  HoloData[13] = Theta_st</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>  HoloData[15] = Phi_ref</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>  HoloData[16] = Phi_ran</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>  HoloData[17] = 0 <span class="comment">// v_HoloBit (stereographic)</span></div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span> </div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>  Make/O/T/n=22 $s_HoloInfo /wave=HoloInfo</div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>  HoloInfo[0] = s_FileName</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>  HoloInfo[1] = s_Comment</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>  HoloInfo[10] = s_HoloMode</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>  HoloInfo[11] = "" <span class="comment">// s_MeasuringMode</span></div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span> </div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>  <span class="comment">// notebook for XPDplot</span></div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>  if (WinType(NickName) == 5)</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>  Notebook $NickName selection={startOfFile, endOfFile} </div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>  Notebook $NickName text=<span class="stringliteral">""</span></div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>  NewNotebook /F=0 /K=1 /N=$NickName /W=(5,40,341,260)</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>  Notebook $NickName defaultTab=140</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>  Notebook $NickName statusWidth=300</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>  Notebook $NickName backRGB=(56797,56797,56797)</div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>  Notebook $NickName pageMargins={80,80,80,80}</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>  Notebook $NickName fSize=10</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>  Notebook $NickName fStyle=0,textRGB=(65535,0,26214) </div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>  Notebook $NickName textRGB=(65535,0,26214) </div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>  endif</div><div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>  Notebook $NickName text = <span class="stringliteral">"File:\t"</span> + s_FileName + <span class="stringliteral">"\r"</span></div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>  Notebook $NickName text = <span class="stringliteral">"*** "</span> + s_Comment + <span class="stringliteral">" ***\r\r"</span></div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>  Notebook $NickName text = <span class="stringliteral">"Angle-Mode:\t"</span> + s_HoloMode + <span class="stringliteral">"\r"</span></div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>  Notebook $NickName text = <span class="stringliteral">"XPDplot Nickname:\t"</span> + NickName + <span class="stringliteral">"\r"</span></div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>  endif</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span> end</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span> </div><div class="line"><a name="l01442"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a987811346894d8d81fc590b2f5ccec49"> 1442</a></span> <span class="keyword">function</span> /s <a class="code" href="pearl-anglescan-process_8ipf.html#a987811346894d8d81fc590b2f5ccec49">get_hemi_nickname</a>(w)</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>  wave w</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>  </div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>  <span class="keywordtype">string</span> prefix = <a class="code" href="pearl-anglescan-process_8ipf.html#a1442bc23122d52ba9c77e0f9baaad1da">get_hemi_prefix</a>(w)</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>  <span class="keywordtype">string</span> wname = nameofwave(w)</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>  <span class="keywordtype">string</span> nickname</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>  </div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>  <span class="keywordflow">if</span> (strlen(prefix))</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>  nickname = prefix</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>  <span class="keywordtype">string</span> s_wave_df = GetWavesDataFolder(w, 1)</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>  dfref parent_df = $(s_wave_df + "::")</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>  nickname = GetDataFolder(0, parent_df)</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>  endif</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>  </div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>  return nickname</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span> end</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> </div><div class="line"><a name="l01467"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a1442bc23122d52ba9c77e0f9baaad1da"> 1467</a></span> function /s <a class="code" href="pearl-anglescan-process_8ipf.html#a1442bc23122d52ba9c77e0f9baaad1da">get_hemi_prefix</a>(w)</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>  wave w</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span> </div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>  <span class="keywordtype">string</span> wname = nameofwave(w)</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>  <span class="keywordtype">string</span> prefix</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>  if (ItemsInList(wname, "_") >= 2)</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>  prefix = StringFromList(0, wname, "_")</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>  else</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>  prefix = ""</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>  endif</div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>  </div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>  return prefix</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span> end</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span> </div><div class="line"><a name="l01498"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#aa26c9ed4c4d703e07788d980edc2406d"> 1498</a></span> function /df <a class="code" href="pearl-anglescan-process_8ipf.html#aa26c9ed4c4d703e07788d980edc2406d">find_hemi_data</a>(nickname, prefix, intwave)</div><div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>  <span class="keywordtype">string</span> nickname</div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>  <span class="keywordtype">string</span> &prefix</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>  <span class="keywordtype">string</span> &intwave</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span> </div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>  dfref datadf</div><div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>  prefix = ""</div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>  intwave = "values"</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>  if (strlen(nickname))</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>  if (DataFolderExists(nickname))</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>  datadf = $nickname</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>  else</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>  datadf = getdatafolderdfr()</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>  prefix = nickname + "_"</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>  intwave = prefix + "i"</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>  if (exists(intwave) != 1)</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>  datadf = root:</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>  endif</div><div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>  endif</div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>  else</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>  datadf = getdatafolderdfr()</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>  prefix = ""</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>  intwave = "values"</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>  endif</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>  return datadf</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span> end</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span> </div><div class="line"><a name="l01532"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a3ec6935a5903d0974c93a2072d743013"> 1532</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#a3ec6935a5903d0974c93a2072d743013">clear_hemi_grid</a>(nickname)</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>  <span class="keywordtype">string</span> nickname</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span> </div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>  dfref datadf</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>  <span class="keywordtype">string</span> s_prefix</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>  <span class="keywordtype">string</span> s_int</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>  datadf = <a class="code" href="pearl-anglescan-process_8ipf.html#aa26c9ed4c4d703e07788d980edc2406d">find_hemi_data</a>(nickname, s_prefix, s_int)</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span> </div><div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>  <span class="keywordtype">string</span> s_totals = s_prefix + "tot"</div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>  <span class="keywordtype">string</span> s_weights = s_prefix + "wt"</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>  </div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>  wave /sdfr=datadf /z w_values = $s_int</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>  wave /sdfr=datadf /z w_totals = $s_totals</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>  wave /sdfr=datadf /z w_weights = $s_weights</div><div class="line"><a name="l01546"></a><span class="lineno"> 1546</span> </div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>  if (waveexists(w_totals))</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>  w_totals = 0</div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>  endif</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>  if (waveexists(w_weights))</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>  w_weights = 0</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>  endif</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>  if (waveexists(w_values))</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>  w_values = nan </div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>  endif</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span> end</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span> </div><div class="line"><a name="l01579"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#aa5b1e2ab1dd43a73b7157406b803887e"> 1579</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#aa5b1e2ab1dd43a73b7157406b803887e">duplicate_hemi_scan</a>(source_nickname, dest_folder, dest_nickname, [xpdplot])</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>  <span class="keywordtype">string</span> source_nickname</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>  dfref dest_folder</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>  <span class="keywordtype">string</span> dest_nickname</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>  variable xpdplot</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>  </div><div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>  if (ParamIsDefault(xpdplot))</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>  xpdplot = 0</div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>  endif</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>  </div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>  dfref savedf = getdatafolderdfr()</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span> </div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>  <span class="comment">// source data</span></div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>  <span class="keywordtype">string</span> s_prefix = ""</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>  <span class="keywordtype">string</span> s_int = "values"</div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>  dfref source_df = <a class="code" href="pearl-anglescan-process_8ipf.html#aa26c9ed4c4d703e07788d980edc2406d">find_hemi_data</a>(source_nickname, s_prefix, s_int)</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>  <span class="keywordtype">string</span> s_polar = s_prefix + "pol"</div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>  <span class="keywordtype">string</span> s_azim = s_prefix + "az"</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>  <span class="keywordtype">string</span> s_theta = s_prefix + "th"</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>  <span class="keywordtype">string</span> s_tot = s_prefix + "tot"</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>  <span class="keywordtype">string</span> s_weight = s_prefix + "wt"</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>  <span class="keywordtype">string</span> s_matrix = s_prefix + "matrix"</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span> </div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>  wave /sdfr=source_df theta1 = $s_theta</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>  wave /sdfr=source_df polar1 = $s_polar</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>  wave /sdfr=source_df azim1 = $s_azim</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>  wave /sdfr=source_df tot1 = $s_tot</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>  wave /sdfr=source_df weight1 = $s_weight</div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>  wave /sdfr=source_df values1 = $s_int</div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>  wave /sdfr=source_df /z matrix1 = $s_matrix</div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>  </div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>  variable npol = numpnts(theta1)</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>  </div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>  setdatafolder dest_folder</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#a902ac3a24e33f651e83ee03d31707da7">make_hemi_grid</a>(npol, dest_nickname, xpdplot=xpdplot)</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>  </div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>  <span class="comment">// dest data</span></div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>  dfref dest_df = <a class="code" href="pearl-anglescan-process_8ipf.html#aa26c9ed4c4d703e07788d980edc2406d">find_hemi_data</a>(dest_nickname, s_prefix, s_int)</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>  s_polar = s_prefix + "pol"</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>  s_azim = s_prefix + "az"</div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>  s_theta = s_prefix + "th"</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>  s_tot = s_prefix + "tot"</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>  s_weight = s_prefix + "wt"</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>  s_matrix = s_prefix + "matrix"</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span> </div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>  wave /sdfr=dest_df theta2 = $s_theta</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>  wave /sdfr=dest_df polar2 = $s_polar</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>  wave /sdfr=dest_df azim2 = $s_azim</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>  wave /sdfr=dest_df tot2 = $s_tot</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>  wave /sdfr=dest_df weight2 = $s_weight</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>  wave /sdfr=dest_df values2 = $s_int</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span> </div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>  tot2 = tot1</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>  weight2 = weight1</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>  values2 = values1</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>  if (waveexists(matrix1))</div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>  setdatafolder dest_df</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>  duplicate /o matrix1, $s_matrix</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>  endif</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>  </div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>  if (!(NumberByKey("<a class="code" href="pearl-anglescan-tracker_8ipf.html#a4c7a521b8f1a0769c09bfa4a1fca7dab">version</a>", note(azim1), "=", "\r") >= 1.6))</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>  azim2 += 180 <span class="comment">// changed 151030 (v1.6)</span></div><div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>  azim2 = azim2 >= 360 ? azim2 - 360 : azim2</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>  endif</div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>  </div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>  setdatafolder saveDF</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span> end</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span> </div><div class="line"><a name="l01654"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a5162488b366e217195d8f8bd7cdde0ce"> 1654</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#a5162488b366e217195d8f8bd7cdde0ce">rotate_hemi_scan</a>(nickname, angle)</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>  <span class="keywordtype">string</span> nickname</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>  variable angle</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>  </div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>  dfref savedf = getdatafolderdfr()</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span> </div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>  <span class="keywordtype">string</span> s_prefix = ""</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>  <span class="keywordtype">string</span> s_int = "values"</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>  dfref df = <a class="code" href="pearl-anglescan-process_8ipf.html#aa26c9ed4c4d703e07788d980edc2406d">find_hemi_data</a>(nickname, s_prefix, s_int)</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span> </div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>  <span class="keywordtype">string</span> s_polar = s_prefix + "pol"</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>  <span class="keywordtype">string</span> s_azim = s_prefix + "az"</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>  <span class="keywordtype">string</span> s_tot = s_prefix + "tot"</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>  <span class="keywordtype">string</span> s_weight = s_prefix + "wt"</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>  </div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>  wave /sdfr=df polar = $s_polar</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>  wave /sdfr=df azim = $s_azim</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>  wave /sdfr=df tot = $s_tot</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>  wave /sdfr=df weight = $s_weight</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>  wave /sdfr=df values = $s_int</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span> </div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>  azim += angle</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>  azim = azim < 0 ? azim + 360 : azim</div><div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>  azim = azim >= 360 ? azim - 360 : azim</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span> </div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>  duplicate /free polar, neg_polar</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>  neg_polar = -polar</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>  sort {neg_polar, azim}, polar, azim, tot, weight, values</div><div class="line"><a name="l01682"></a><span class="lineno"> 1682</span>  </div><div class="line"><a name="l01683"></a><span class="lineno"> 1683</span>  setdatafolder saveDF</div><div class="line"><a name="l01684"></a><span class="lineno"> 1684</span> end</div><div class="line"><a name="l01685"></a><span class="lineno"> 1685</span> </div><div class="line"><a name="l01702"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#ac15ebd5a19c558dde666ab36aeb9906f"> 1702</a></span> <span class="keyword">function</span> /s <a class="code" href="pearl-anglescan-process_8ipf.html#ac15ebd5a19c558dde666ab36aeb9906f">prepare_hemi_scan_display</a>(nickname, [projection])</div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>  <span class="keywordtype">string</span> nickname</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>  variable projection</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>  </div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>  dfref savedf = getdatafolderdfr()</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span> </div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>  if (ParamIsDefault(projection))</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>  projection = 1</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>  endif</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>  </div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>  <span class="comment">// hemi grid waves</span></div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>  <span class="keywordtype">string</span> s_prefix = ""</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>  <span class="keywordtype">string</span> s_int = "values"</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>  dfref df = <a class="code" href="pearl-anglescan-process_8ipf.html#aa26c9ed4c4d703e07788d980edc2406d">find_hemi_data</a>(nickname, s_prefix, s_int)</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span> </div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>  <span class="keywordtype">string</span> s_polar = s_prefix + "pol"</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>  <span class="keywordtype">string</span> s_azim = s_prefix + "az"</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>  </div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>  wave /sdfr=df /z values = $s_int</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>  wave /sdfr=df /z azim = $s_azim</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>  wave /sdfr=df /z polar = $s_polar</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span> </div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>  setdatafolder df</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>  <span class="keywordtype">string</span> s_ster_rad = s_prefix + "ster_rad"</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>  duplicate /o polar, $s_ster_rad /wave=ster_rad</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>  ster_rad = <a class="code" href="pearl-anglescan-process_8ipf.html#a75219b38ea58012abcffc848d536faa4">calc_graph_radius</a>(polar, projection=projection)</div><div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>  </div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>  <span class="keywordtype">string</span> s_ster_x = s_prefix + "ster_x"</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>  <span class="keywordtype">string</span> s_ster_y = s_prefix + "ster_y"</div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>  duplicate /o azim, $s_ster_x /wave=ster_x, $s_ster_y /wave=ster_y</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>  ster_x = ster_rad * cos(azim * pi / 180)</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>  ster_y = ster_rad * sin(azim * pi / 180)</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span> </div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>  setdatafolder savedf</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span> end</div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span> </div><div class="line"><a name="l01784"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#ae57302acfc822c4817f2b7eef55efea2"> 1784</a></span> function /s <a class="code" href="pearl-anglescan-process_8ipf.html#ae57302acfc822c4817f2b7eef55efea2">display_hemi_scan</a>(nickname, [projection, graphtype, do_ticks, do_grids, graphname])</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>  <span class="keywordtype">string</span> nickname</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>  variable projection</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>  variable graphtype</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>  variable do_ticks</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>  variable do_grids</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>  <span class="keywordtype">string</span> graphname</div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>  </div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>  dfref savedf = getdatafolderdfr()</div><div class="line"><a name="l01793"></a><span class="lineno"> 1793</span> </div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>  if (ParamIsDefault(projection))</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>  projection = 1</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>  endif</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>  if (ParamIsDefault(graphtype))</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>  graphtype = 1</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>  endif</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>  if (ParamIsDefault(do_ticks))</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>  do_ticks = 3</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>  endif</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>  if (ParamIsDefault(do_grids))</div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>  do_grids = 3</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>  endif</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>  if (ParamIsDefault(graphname))</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>  if (strlen(nickname) > 0)</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>  graphname = nickname</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>  else</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>  graphname = GetDataFolder(0)</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>  endif</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>  endif</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>  </div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#ac15ebd5a19c558dde666ab36aeb9906f">prepare_hemi_scan_display</a>(nickname, projection=projection)</div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>  </div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>  <span class="comment">// hemi grid waves</span></div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>  <span class="keywordtype">string</span> s_prefix = ""</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>  <span class="keywordtype">string</span> s_int = "values"</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>  dfref df = <a class="code" href="pearl-anglescan-process_8ipf.html#aa26c9ed4c4d703e07788d980edc2406d">find_hemi_data</a>(nickname, s_prefix, s_int)</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span> </div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>  <span class="keywordtype">string</span> s_polar = s_prefix + "pol"</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>  <span class="keywordtype">string</span> s_azim = s_prefix + "az"</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>  <span class="keywordtype">string</span> s_matrix = s_prefix + "matrix"</div><div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>  <span class="keywordtype">string</span> s_ster_rad = s_prefix + "ster_rad"</div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>  </div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>  wave /sdfr=df /z values = $s_int</div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>  wave /sdfr=df /z azim = $s_azim</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>  wave /sdfr=df /z polar = $s_polar</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>  wave /sdfr=df /z ster_rad = $s_ster_rad</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>  wave /sdfr=df /z matrix = $s_matrix</div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span> </div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>  setdatafolder df</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>  variable azim_offset = 0</div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>  if (!(NumberByKey("<a class="code" href="pearl-anglescan-tracker_8ipf.html#a4c7a521b8f1a0769c09bfa4a1fca7dab">version</a>", note(azim), "=", "\r") >= 1.6))</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>  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!"</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>  azim_offset = 180 <span class="comment">// changed 151030 (v1.6)</span></div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>  endif</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span> </div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>  <span class="keywordtype">string</span> s_trace</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>  DoWindow $graphname</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>  if (v_flag)</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>  if (str2num(GetUserData(graphname, "", "graphtype")) == graphtype)</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>  <span class="comment">// graph exists and will update automatically - do not recreate</span></div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>  graphtype = 0</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>  else</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>  <span class="comment">// graph exists - but needs recreating</span></div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>  killwindow $graphname</div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>  endif</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>  endif</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>  </div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>  switch(graphtype)</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>  case 1:</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>  graphname = <a class="code" href="pearl-anglescan-process_8ipf.html#a46fd99d35a43601c39af6096d4e4f770">display_polar_graph</a>(graphname, angle_offset=azim_offset, do_ticks=do_ticks)</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span> </div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>  s_trace = WMPolarAppendTrace(graphname, ster_rad, azim, 360)</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>  ModifyGraph /W=$graphname mode($s_trace)=2, lsize($s_trace)=2</div><div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>  ModifyGraph /W=$graphname zColor($s_trace)={values,*,*,BlueGreenOrange,0}</div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>  </div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>  ColorScale /W=$graphname /C /N=text0 /E=2 /F=0 /B=1 /A=RB /X=0.00 /Y=0.00 trace=polarY0</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>  ColorScale /W=$graphname /C /N=text0 side=2, width=5, heightPct=40, frame=0.50, lblMargin=0</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>  ColorScale /W=$graphname /C /N=text0 nticks=2, minor=1, tickLen=4.00, tickThick=0.50</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span> </div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>  SetWindow $graphname, userdata(projection)=num2str(projection)</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>  SetWindow $graphname, userdata(graphtype)=num2str(graphtype)</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#af00d9061e410ad033a9fd1f0ca561e0d">draw_hemi_axes</a>(graphname, do_grids=do_grids)</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>  <span class="keywordflow">break</span></div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>  <span class="keywordflow">case</span> 3:</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>  graphname = <a class="code" href="pearl-anglescan-process_8ipf.html#a46fd99d35a43601c39af6096d4e4f770">display_polar_graph</a>(graphname, angle_offset=azim_offset, do_ticks=do_ticks)</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span> </div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>  s_trace = WMPolarAppendTrace(graphname, ster_rad, azim, 360)</div><div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>  ModifyGraph /W=$graphname mode($s_trace)=0, lsize($s_trace)=0</div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>  AppendImage /L=VertCrossing /B=HorizCrossing matrix</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span> </div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>  ColorScale /W=$graphname /C /N=text0 /E=2 /F=0 /B=1 /A=RB /X=0.00 /Y=0.00 image=$s_matrix</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>  ColorScale /W=$graphname /C /N=text0 side=2, width=5, heightPct=40, frame=0.50, lblMargin=0</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>  ColorScale /W=$graphname /C /N=text0 nticks=2, minor=1, tickLen=4.00, tickThick=0.50</div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>  </div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>  SetWindow $graphname, userdata(projection)=num2str(projection)</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>  SetWindow $graphname, userdata(graphtype)=num2str(graphtype)</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#af00d9061e410ad033a9fd1f0ca561e0d">draw_hemi_axes</a>(graphname, do_grids=do_grids)</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>  <span class="keywordflow">break</span></div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>  endswitch</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>  </div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>  setdatafolder savedf</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>  <span class="keywordflow">return</span> graphname</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span> end</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span> </div><div class="line"><a name="l01929"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a46fd99d35a43601c39af6096d4e4f770"> 1929</a></span> <span class="keyword">static</span> <span class="keyword">function</span> /s <a class="code" href="pearl-anglescan-process_8ipf.html#a46fd99d35a43601c39af6096d4e4f770">display_polar_graph</a>(graphname, [angle_offset, do_ticks])</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>  </div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>  <span class="keywordtype">string</span> graphname</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>  variable angle_offset</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>  variable do_ticks</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>  </div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>  dfref savedf = GetDataFolderDFR()</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>  </div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>  if (ParamIsDefault(angle_offset))</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>  angle_offset = 0</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>  endif</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>  if (ParamIsDefault(do_ticks))</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>  do_ticks = 3</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>  endif</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>  </div><div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>  if ((strlen(graphname) == 0) || (wintype(graphname) == 0))</div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>  Display /k=1 /W=(10,45,360,345)</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>  DoWindow /C $graphname</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>  graphname = WMNewPolarGraph("", graphname)</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>  WMPolarGraphSetVar(graphname, "zeroAngleWhere", angle_offset)</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>  </div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>  WMPolarGraphSetVar(graphname, "angleAxisThick", 0.5)</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>  WMPolarGraphSetStr(graphname, "doMajorAngleTicks", "manual")</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>  WMPolarGraphSetVar(graphname, "majorAngleInc", 30) <span class="comment">// major ticks in 30 deg steps</span></div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>  WMPolarGraphSetVar(graphname, "minorAngleTicks", 2) <span class="comment">// minor ticks in 10 deg steps</span></div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>  WMPolarGraphSetStr(graphname, "angleTicksLocation", "Outside")</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>  WMPolarGraphSetVar(graphname, "doAngleTickLabelSubRange", 1)</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>  WMPolarGraphSetVar(graphname, "angleTickLabelRangeStart", 0)</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>  WMPolarGraphSetVar(graphname, "angleTickLabelRangeExtent", 90)</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>  WMPolarGraphSetStr(graphname, "angleTickLabelNotation", "%g°")</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>  </div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>  WMPolarGraphSetVar(graphname, "doPolarGrids", 0)</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>  WMPolarGraphSetVar(graphname, "doRadiusTickLabels", 0)</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>  WMPolarGraphSetStr(graphname, "radiusAxesWhere", " Off") <span class="comment">// note the leading spaces, cf. WMPolarAnglesForRadiusAxes</span></div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>  WMPolarGraphSetStr(graphname, "radiusTicksLocation", "Off")</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span> </div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>  WMPolarGraphSetVar(graphname, "majorTickLength", 2)</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>  WMPolarGraphSetVar(graphname, "majorTickThick", 0.5)</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>  WMPolarGraphSetVar(graphname, "minorTickLength", 1)</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>  WMPolarGraphSetVar(graphname, "minorTickThick", 0.5)</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>  WMPolarGraphSetVar(graphname, "tickLabelOpaque", 0)</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>  WMPolarGraphSetVar(graphname, "tickLabelFontSize", 7)</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span> </div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>  <span class="comment">// changes</span></div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>  if (do_ticks & 1)</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>  WMPolarGraphSetStr(graphname, "angleTicksLocation", "Outside")</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>  else</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>  WMPolarGraphSetStr(graphname, "angleTicksLocation", "Off")</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>  endif</div><div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>  if (do_ticks & 2)</div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>  WMPolarGraphSetVar(graphname, "doMinorAngleTicks", 1)</div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>  else</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>  WMPolarGraphSetVar(graphname, "doMinorAngleTicks", 0)</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>  endif</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>  </div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>  DoWindow /T $graphname, graphname</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span> </div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>  <span class="comment">// cursor info in angles</span></div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>  <span class="keywordtype">string</span> graphdf = "root:packages:WMPolarGraphs:" + graphname</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>  setdatafolder graphdf</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>  <span class="comment">// current theta, phi coordinates are stored in global variables in the package folder of the graph</span></div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>  variable /g csrA_theta</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>  variable /g csrA_phi</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>  variable /g csrB_theta</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>  variable /g csrB_phi</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>  <span class="comment">// the text box is hidden initially. it shows up and hides with the cursor info box.</span></div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>  <span class="keywordtype">string</span> tb </div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>  tb = "\\{<span class="stringliteral">"</span></div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span> <span class="stringliteral"> tb = tb + "</span>\<span class="stringliteral">"A = (%.1f, %.1f)\","</span></div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>  tb = tb + graphdf + <span class="stringliteral">":csrA_theta,"</span></div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>  tb = tb + graphdf + <span class="stringliteral">":csrA_phi"</span></div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>  tb = tb + <span class="stringliteral">"}"</span></div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>  TextBox /W=$graphname /A=LT /B=1 /E=2 /F=0 /N=tb_angles /X=1 /Y=1 /V=0 tb</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>  tb = <span class="stringliteral">"\\{"</span></div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>  tb = tb + <span class="stringliteral">"\"B = (%.1f, %.1f)\","</span></div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>  tb = tb + graphdf + <span class="stringliteral">":csrB_theta,"</span></div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>  tb = tb + graphdf + <span class="stringliteral">":csrB_phi"</span></div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>  tb = tb + <span class="stringliteral">"}"</span></div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>  AppendText /W=$graphname /N=tb_angles tb</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>  <span class="comment">// updates are triggered by a window hook</span></div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>  SetWindow $graphname, hook(<a class="code" href="pearl-anglescan-process_8ipf.html#ac4dbd1ece37b2cf22fa976a153977288">polar_graph_hook</a>)=<a class="code" href="namespace_pearl_anglescan_process.html">PearlAnglescanProcess</a>#<a class="code" href="pearl-anglescan-process_8ipf.html#ac4dbd1ece37b2cf22fa976a153977288">polar_graph_hook</a></div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>  <span class="comment">// graph window exists</span></div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>  DoWindow /F $graphname</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>  endif</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span> </div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>  setdatafolder savedf</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>  <span class="keywordflow">return</span> graphname</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span> end</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span> </div><div class="line"><a name="l02044"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#af00d9061e410ad033a9fd1f0ca561e0d"> 2044</a></span> <span class="keyword">static</span> <span class="keyword">function</span> /s <a class="code" href="pearl-anglescan-process_8ipf.html#af00d9061e410ad033a9fd1f0ca561e0d">draw_hemi_axes</a>(graphname, [do_grids])</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>  <span class="keywordtype">string</span> graphname</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>  variable do_grids</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>  </div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>  <span class="keywordflow">if</span> (ParamIsDefault(do_grids))</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>  do_grids = 3</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>  endif</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span> </div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>  dfref savedf = GetDataFolderDFR()</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span> </div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>  string sproj = GetUserData(graphname, "", "projection")</div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>  variable projection = str2num("0" + sproj)</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span> </div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>  SetDrawLayer /W=$graphname ProgFront</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span> </div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>  <span class="comment">// polar axis</span></div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>  SetDrawEnv /W=$graphname xcoord=HorizCrossing, ycoord=VertCrossing</div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>  SetDrawEnv /W=$graphname linethick= 0.5</div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>  SetDrawEnv /W=$graphname dash=2</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>  SetDrawEnv /W=$graphname fillpat=0</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>  SetDrawEnv /W=$graphname fname="default", fsize=7</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>  SetDrawEnv /W=$graphname textxjust=1, textyjust=1</div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>  <span class="comment">//SetDrawEnv /W=$graphname linefgc=(65535,65535,65535)</span></div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>  SetDrawEnv /W=$graphname save</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span> </div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>  if (do_grids & 1)</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>  DrawLine /W=$graphname 0, -2, 0, 2</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>  DrawLine /W=$graphname -2, 0, 2, 0</div><div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>  endif</div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span> </div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>  variable radi</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>  if (do_grids & 2)</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>  radi = <a class="code" href="pearl-anglescan-process_8ipf.html#a75219b38ea58012abcffc848d536faa4">calc_graph_radius</a>(0.5, projection=projection)</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>  DrawOval /W=$graphname -radi, radi, radi, -radi</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>  radi = calc_graph_radius(30, projection=projection)</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>  DrawOval /W=$graphname -radi, radi, radi, -radi</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>  radi = calc_graph_radius(60, projection=projection)</div><div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>  DrawOval /W=$graphname -radi, radi, radi, -radi</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span> </div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>  SetDrawEnv /W=$graphname textxjust= 1,textyjust= 2</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>  SetDrawEnv /W=$graphname save</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>  radi = calc_graph_radius(30, projection=projection)</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>  DrawText /W=$graphname radi, -0.1, "30°"</div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>  radi = calc_graph_radius(60, projection=projection)</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>  DrawText /W=$graphname radi, -0.1, "60°"</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>  endif</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>  </div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>  setdatafolder savedf</div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span> end</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span> </div><div class="line"><a name="l02116"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#afedad38a418cee5d1fb9e08aae2160a0"> 2116</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#afedad38a418cee5d1fb9e08aae2160a0">draw_diffraction_cone</a>(graphname, groupname, theta_axis, theta_inner, phi)</div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>  <span class="keywordtype">string</span> graphname</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>  <span class="keywordtype">string</span> groupname</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>  </div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>  variable theta_axis</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>  variable theta_inner</div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>  variable phi</div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>  </div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>  variable r_axis = calc_graph_radius(theta_axis)</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>  variable r_inner = calc_graph_radius(theta_inner)</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>  variable r_outer = calc_graph_radius(2 * theta_axis - theta_inner)</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>  </div><div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>  SetDrawEnv push</div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>  SetDrawLayer UserFront</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>  DrawAction getgroup=$groupname, delete</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>  SetDrawEnv gstart, gname=$groupname</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>  variable xc, yc, xr, yr</div><div class="line"><a name="l02133"></a><span class="lineno"> 2133</span> </div><div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>  <span class="comment">// cone periphery</span></div><div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>  variable r_center = (r_outer + r_inner) / 2</div><div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>  variable r_radius = (r_outer - r_inner) / 2</div><div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>  xc = r_center * cos(phi * pi / 180)</div><div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>  yc = r_center * sin(phi * pi / 180)</div><div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>  xr = r_radius</div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>  yr = r_radius</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>  SetDrawEnv xcoord=HorizCrossing, ycoord=VertCrossing</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>  SetDrawEnv dash=11, fillpat=0</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>  DrawOval xc - xr, yc - yr, xc + xr, yc + yr</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span> </div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>  <span class="comment">// cone axis </span></div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>  xc = r_axis * cos(phi * pi / 180)</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>  yc = r_axis * sin(phi * pi / 180)</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>  r_radius = calc_graph_radius(2)</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>  xr = r_radius</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>  yr = r_radius</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>  SetDrawEnv xcoord=HorizCrossing, ycoord=VertCrossing</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>  SetDrawEnv fillfgc=(0,0,0)</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>  DrawOval xc - xr, yc - yr, xc + xr, yc + yr</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>  </div><div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>  SetDrawEnv gstop</div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>  SetDrawEnv pop</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span> end</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span> </div><div class="line"><a name="l02180"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a1f4f74a8ae557c56e1e3aacd0b45f3f1"> 2180</a></span> function /s <a class="code" href="pearl-anglescan-process_8ipf.html#a1f4f74a8ae557c56e1e3aacd0b45f3f1">display_scanlines</a>(nickname, alpha_lo, alpha_hi, m_theta, m_tilt, m_phi, [folding, projection])</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>  <span class="keywordtype">string</span> nickname</div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>  variable alpha_lo</div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>  variable alpha_hi</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>  wave m_theta</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>  wave m_tilt</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>  wave m_phi</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>  variable folding</div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>  variable projection</div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>  </div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>  if (ParamIsDefault(folding))</div><div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>  folding = 1</div><div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>  endif</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>  if (ParamIsDefault(projection))</div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>  projection = 1</div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>  endif</div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>  </div><div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>  <span class="comment">// sort out data folder structure</span></div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>  dfref saveDF = GetDataFolderDFR()</div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>  newdatafolder /s/o $nickname</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>  <span class="keywordtype">string</span> graphname = "graph_" + nickname</div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>  </div><div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>  duplicate /free m_tilt, loc_m_tilt</div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>  loc_m_tilt = -m_tilt</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>  </div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>  make /n=1 /d /free d_polar, d_azi</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>  variable n_alpha = round(alpha_hi - alpha_lo) + 1</div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>  make /n=(n_alpha) /d /free analyser</div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>  setscale /i x alpha_lo, alpha_hi, "°", analyser</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>  analyser = x</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>  </div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#a3cc7eddf5c6b0658260cfb32dd2c026d">convert_angles_ttpa2polar</a>(m_theta, loc_m_tilt, m_phi, analyser, d_polar, d_azi)</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>  duplicate /free d_polar, d_radius</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>  d_radius = calc_graph_radius(d_polar, projection=projection)</div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>  d_azi += 180 <span class="comment">// changed 151030 (v1.6)</span></div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>  </div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>  graphname = <a class="code" href="pearl-anglescan-process_8ipf.html#a46fd99d35a43601c39af6096d4e4f770">display_polar_graph</a>(graphname)</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>  SetWindow $graphname, userdata(projection)=num2str(projection)</div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>  </div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>  variable ifold</div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>  variable iang</div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>  variable nang = numpnts(m_theta)</div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>  <span class="keywordtype">string</span> s_rad</div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>  <span class="keywordtype">string</span> s_azi</div><div class="line"><a name="l02224"></a><span class="lineno"> 2224</span>  <span class="keywordtype">string</span> s_trace</div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>  for (ifold = 0; ifold < folding; ifold += 1)</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>  d_azi = d_azi >= 360 ? d_azi - 360 : d_azi</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>  for (iang = 0; iang < nang; iang += 1)</div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>  sprintf s_rad, "rad_%d_%d", ifold, iang</div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>  duplicate /o analyser, $s_rad</div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>  wave w_rad = $s_rad</div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>  w_rad = d_radius[p][iang]</div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>  </div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>  sprintf s_azi, "azi_%d_%d", ifold, iang</div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>  duplicate /o analyser, $s_azi</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>  wave w_azi = $s_azi</div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>  w_azi = d_azi[p][iang]</div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>  </div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>  if (numtype(sum(w_rad)) == 0)</div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>  s_trace = WMPolarAppendTrace(graphname, w_rad, w_azi, 360)</div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>  ModifyGraph /w=$graphname mode($s_trace)=0, lsize($s_trace)=0.5</div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>  endif</div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>  endfor</div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>  d_azi += 360 / folding</div><div class="line"><a name="l02244"></a><span class="lineno"> 2244</span>  endfor</div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span> </div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#af00d9061e410ad033a9fd1f0ca561e0d">draw_hemi_axes</a>(graphname)</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span> </div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>  setdatafolder saveDF</div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>  return graphname</div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span> end</div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span> </div><div class="line"><a name="l02268"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#aae45cc49d67f79dcedc4420f82acea4c"> 2268</a></span> constant <a class="code" href="pearl-anglescan-process_8ipf.html#aae45cc49d67f79dcedc4420f82acea4c">kProjDist</a> = 0</div><div class="line"><a name="l02269"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#ac151c6f989d6a568fdef0acb791f84db"> 2269</a></span> constant <a class="code" href="pearl-anglescan-process_8ipf.html#ac151c6f989d6a568fdef0acb791f84db">kProjStereo</a> = 1</div><div class="line"><a name="l02270"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a207c56ac03cc18bf1bfde88dbfe2666f"> 2270</a></span> constant <a class="code" href="pearl-anglescan-process_8ipf.html#a207c56ac03cc18bf1bfde88dbfe2666f">kProjArea</a> = 2</div><div class="line"><a name="l02271"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a4a40c73c0e03545e0050ea370e9c57d3"> 2271</a></span> constant <a class="code" href="pearl-anglescan-process_8ipf.html#a4a40c73c0e03545e0050ea370e9c57d3">kProjGnom</a> = 3</div><div class="line"><a name="l02272"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a3b3bd11c35d5f850b34937ab6c45f659"> 2272</a></span> constant <a class="code" href="pearl-anglescan-process_8ipf.html#a3b3bd11c35d5f850b34937ab6c45f659">kProjOrtho</a> = 4</div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span> </div><div class="line"><a name="l02274"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a04e75675884236b6ed8244d7575d3a13"> 2274</a></span> static constant <a class="code" href="pearl-anglescan-process_8ipf.html#a04e75675884236b6ed8244d7575d3a13">kProjScaleDist</a> = 2</div><div class="line"><a name="l02275"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#aed66bda9701d8a69b2174fac974aa665"> 2275</a></span> static constant <a class="code" href="pearl-anglescan-process_8ipf.html#aed66bda9701d8a69b2174fac974aa665">kProjScaleStereo</a> = 2</div><div class="line"><a name="l02276"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#afa14187803f5b428a96c8234e04ab217"> 2276</a></span> static constant <a class="code" href="pearl-anglescan-process_8ipf.html#afa14187803f5b428a96c8234e04ab217">kProjScaleArea</a> = 2</div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span> <span class="comment">// scaled so that radius(gnom) = radius(stereo) for polar = 88</span></div><div class="line"><a name="l02278"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#ab6670abb621d01994c0b9974f58be843"> 2278</a></span> static constant <a class="code" href="pearl-anglescan-process_8ipf.html#ab6670abb621d01994c0b9974f58be843">kProjScaleGnom</a> = 0.06744519021</div><div class="line"><a name="l02279"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#aa5487fdee22e0da61a511c14239262f5"> 2279</a></span> static constant <a class="code" href="pearl-anglescan-process_8ipf.html#aa5487fdee22e0da61a511c14239262f5">kProjScaleOrtho</a> = 2</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span> </div><div class="line"><a name="l02295"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a75219b38ea58012abcffc848d536faa4"> 2295</a></span> threadsafe function calc_graph_radius(polar, [projection])</div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>  variable polar</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>  variable projection</div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>  </div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>  if (ParamIsDefault(projection))</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>  projection = 1</div><div class="line"><a name="l02301"></a><span class="lineno"> 2301</span>  endif</div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span> </div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>  variable radius</div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>  switch(projection)</div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>  case <a class="code" href="pearl-anglescan-process_8ipf.html#ac151c6f989d6a568fdef0acb791f84db">kProjStereo</a>: <span class="comment">// stereographic</span></div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>  radius = <a class="code" href="pearl-anglescan-process_8ipf.html#aed66bda9701d8a69b2174fac974aa665">kProjScaleStereo</a> * tan(polar / 2 * pi / 180)</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>  break</div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>  case <a class="code" href="pearl-anglescan-process_8ipf.html#a207c56ac03cc18bf1bfde88dbfe2666f">kProjArea</a>: <span class="comment">// equal area</span></div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>  radius = <a class="code" href="pearl-anglescan-process_8ipf.html#afa14187803f5b428a96c8234e04ab217">kProjScaleArea</a> * sin(polar / 2 * pi / 180)</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>  break</div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>  case <a class="code" href="pearl-anglescan-process_8ipf.html#a4a40c73c0e03545e0050ea370e9c57d3">kProjGnom</a>: <span class="comment">// gnomonic</span></div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>  radius = polar < 90 ? <a class="code" href="pearl-anglescan-process_8ipf.html#ab6670abb621d01994c0b9974f58be843">kProjScaleGnom</a> * tan(polar * pi / 180) : inf</div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>  break</div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>  case <a class="code" href="pearl-anglescan-process_8ipf.html#a3b3bd11c35d5f850b34937ab6c45f659">kProjOrtho</a>: <span class="comment">// orthographic</span></div><div class="line"><a name="l02315"></a><span class="lineno"> 2315</span>  radius = <a class="code" href="pearl-anglescan-process_8ipf.html#aa5487fdee22e0da61a511c14239262f5">kProjScaleOrtho</a> * sin(polar * pi / 180)</div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>  break</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>  default: <span class="comment">// equidistant</span></div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>  radius = <a class="code" href="pearl-anglescan-process_8ipf.html#a04e75675884236b6ed8244d7575d3a13">kProjScaleDist</a> * polar / 90</div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>  endswitch</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>  </div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>  return radius</div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span> end</div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span> </div><div class="line"><a name="l02340"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#ae2b036a06ffac8d2bb292a65401f8a9a"> 2340</a></span> threadsafe function <a class="code" href="pearl-anglescan-process_8ipf.html#ae2b036a06ffac8d2bb292a65401f8a9a">calc_graph_polar</a>(x, y, [projection])</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>  variable x</div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>  variable y</div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>  variable projection </div><div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>  </div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>  if (ParamIsDefault(projection))</div><div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>  projection = 1</div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>  endif</div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span> </div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>  variable radius</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>  variable polar</div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>  </div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>  radius = sqrt(x^2 + y^2)</div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>  switch(projection)</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>  case <a class="code" href="pearl-anglescan-process_8ipf.html#ac151c6f989d6a568fdef0acb791f84db">kProjStereo</a>: <span class="comment">// stereographic</span></div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>  polar = 2 * atan(radius / <a class="code" href="pearl-anglescan-process_8ipf.html#aed66bda9701d8a69b2174fac974aa665">kProjScaleStereo</a>) * 180 / pi</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>  break</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>  case <a class="code" href="pearl-anglescan-process_8ipf.html#a207c56ac03cc18bf1bfde88dbfe2666f">kProjArea</a>: <span class="comment">// equal area</span></div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>  polar = 2 * asin(radius / <a class="code" href="pearl-anglescan-process_8ipf.html#afa14187803f5b428a96c8234e04ab217">kProjScaleArea</a>) * 180 / pi</div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>  break</div><div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>  case <a class="code" href="pearl-anglescan-process_8ipf.html#a4a40c73c0e03545e0050ea370e9c57d3">kProjGnom</a>: <span class="comment">// gnomonic</span></div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>  polar = atan(radius / <a class="code" href="pearl-anglescan-process_8ipf.html#ab6670abb621d01994c0b9974f58be843">kProjScaleGnom</a>) * 180 / pi</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>  break</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>  case <a class="code" href="pearl-anglescan-process_8ipf.html#a3b3bd11c35d5f850b34937ab6c45f659">kProjOrtho</a>: <span class="comment">// orthographic</span></div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>  polar = asin(radius / <a class="code" href="pearl-anglescan-process_8ipf.html#aa5487fdee22e0da61a511c14239262f5">kProjScaleOrtho</a>) * 180 / pi</div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>  break</div><div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>  default: <span class="comment">// equidistant</span></div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>  polar = 90 * radius / <a class="code" href="pearl-anglescan-process_8ipf.html#a04e75675884236b6ed8244d7575d3a13">kProjScaleDist</a></div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>  endswitch</div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span> </div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>  return polar</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span> end</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span> </div><div class="line"><a name="l02393"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a4fc744e24e3e9c5efb17f14ab622bcae"> 2393</a></span> threadsafe function <a class="code" href="pearl-anglescan-process_8ipf.html#a4fc744e24e3e9c5efb17f14ab622bcae">calc_graph_azi</a>(x, y, [projection,zeroAngle])</div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>  variable x</div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>  variable y</div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>  variable projection </div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>  variable zeroAngle</div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>  </div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>  if (ParamIsDefault(projection))</div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>  projection = 1</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>  endif</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>  if (ParamIsDefault(zeroAngle))</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>  zeroAngle = 0</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>  endif</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span> </div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>  variable azi</div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>  if (x > 0)</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>  azi = atan(y / x) * 180 / pi</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>  else</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>  azi = atan(y / x) * 180 / pi + 180</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>  endif</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>  </div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>  azi += zeroAngle</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>  if (azi < 0)</div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>  azi += 360</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>  endif</div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>  if (azi >= 360)</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>  azi -= 360</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>  endif</div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>  if (numtype(azi) != 0)</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>  azi = 0</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>  endif</div><div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>  </div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>  return azi</div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span> end</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span> </div><div class="line"><a name="l02438"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a1baaa3ffd9495ed427b43cbfe6e1edf8"> 2438</a></span> static function <a class="code" href="pearl-anglescan-process_8ipf.html#a1baaa3ffd9495ed427b43cbfe6e1edf8">update_polar_info</a>(graphname)</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>  <span class="keywordtype">string</span> graphname</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>  </div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>  dfref savedf = GetDataFolderDFR()</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span> </div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>  <span class="keywordtype">string</span> graphdf = "root:packages:WMPolarGraphs:" + graphname</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>  setdatafolder graphdf</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>  </div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>  nvar csrA_theta</div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>  nvar csrA_phi</div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>  nvar csrB_theta</div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>  nvar csrB_phi</div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span> </div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>  <span class="keywordtype">string</span> sproj = GetUserData(graphname, "", "projection")</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>  variable projection = str2num("0" + sproj)</div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>  nvar zeroAngleWhere</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>  </div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>  variable x = hcsr(A, graphname)</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>  variable y = vcsr(A, graphname)</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>  csrA_theta = <a class="code" href="pearl-anglescan-process_8ipf.html#ae2b036a06ffac8d2bb292a65401f8a9a">calc_graph_polar</a>(x, y, projection=projection)</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>  csrA_phi = <a class="code" href="pearl-anglescan-process_8ipf.html#a4fc744e24e3e9c5efb17f14ab622bcae">calc_graph_azi</a>(x, y, projection=projection, zeroAngle=zeroAngleWhere)</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span> </div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>  x = hcsr(B, graphname)</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>  y = vcsr(B, graphname)</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>  csrB_theta = <a class="code" href="pearl-anglescan-process_8ipf.html#ae2b036a06ffac8d2bb292a65401f8a9a">calc_graph_polar</a>(x, y, projection=projection)</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>  csrB_phi = <a class="code" href="pearl-anglescan-process_8ipf.html#a4fc744e24e3e9c5efb17f14ab622bcae">calc_graph_azi</a>(x, y, projection=projection, zeroAngle=zeroAngleWhere)</div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>  </div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>  setdatafolder savedf</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span> end</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span> </div><div class="line"><a name="l02473"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#ac4dbd1ece37b2cf22fa976a153977288"> 2473</a></span> static function <a class="code" href="pearl-anglescan-process_8ipf.html#ac4dbd1ece37b2cf22fa976a153977288">polar_graph_hook</a>(s)</div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>  STRUCT WMWinHookStruct &s</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span> </div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>  Variable hookResult = 0</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span> </div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>  switch(s.eventCode)</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>  case 7: <span class="comment">// cursor moved</span></div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#a1baaa3ffd9495ed427b43cbfe6e1edf8">update_polar_info</a>(s.winname)</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>  break</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>  case 20: <span class="comment">// show info</span></div><div class="line"><a name="l02483"></a><span class="lineno"> 2483</span>  TextBox /W=$s.winname /N=tb_angles /C /V=1</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>  break</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>  case 21: <span class="comment">// hide info</span></div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>  TextBox /W=$s.winname /N=tb_angles /C /V=0</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>  break</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>  endswitch</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span> </div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>  return hookResult <span class="comment">// 0 if nothing done, else 1</span></div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span> end</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span> </div><div class="line"><a name="l02493"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a70b0e243bcbd549e2b1da74aab605629"> 2493</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#a70b0e243bcbd549e2b1da74aab605629">set_polar_graph_cursor</a>(nickname, cursorname, polar_angle, azim_angle, [graphname])</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>  <span class="keywordtype">string</span> nickname</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>  <span class="keywordtype">string</span> cursorname</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>  variable polar_angle</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>  variable azim_angle</div><div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>  <span class="keywordtype">string</span> graphname</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>  </div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>  if (ParamIsDefault(graphname))</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>  if (strlen(nickname) > 0)</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>  graphname = nickname</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>  else</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>  graphname = GetDataFolder(0)</div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>  endif</div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>  endif</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>  </div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>  <span class="keywordtype">string</span> s_prefix = ""</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>  <span class="keywordtype">string</span> s_int = "values"</div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>  dfref df = <a class="code" href="pearl-anglescan-process_8ipf.html#aa26c9ed4c4d703e07788d980edc2406d">find_hemi_data</a>(nickname, s_prefix, s_int)</div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span> </div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>  <span class="keywordtype">string</span> s_polar = s_prefix + "pol"</div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>  <span class="keywordtype">string</span> s_azim = s_prefix + "az"</div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>  wave /sdfr=df /z azim = $s_azim</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>  wave /sdfr=df /z polar = $s_polar</div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span> </div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>  FindLevel /P /Q polar, polar_angle</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>  if (v_flag == 0)</div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>  variable polar_level = floor(v_levelx)</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>  FindLevel /P /Q /R=[polar_level] azim, azim_angle</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>  if (v_flag == 0)</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>  variable azim_level = round(v_levelx)</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>  <span class="keywordtype">string</span> tracename = "polarY0"</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>  Cursor /W=$graphname /P $cursorname $traceName azim_level</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>  endif</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>  endif</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span> end</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span> </div><div class="line"><a name="l02538"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a4952bc53e3d6d272d25b5e35e91696b5"> 2538</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#a4952bc53e3d6d272d25b5e35e91696b5">hemi_add_anglescan</a>(nickname, values, polar, azi, [weights])</div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>  <span class="keywordtype">string</span> nickname <span class="comment">// name prefix of holo waves.</span></div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>  <span class="comment">// may be empty.</span></div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>  wave values <span class="comment">// intensity values</span></div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>  <span class="comment">// the wave can be one- or two-dimensional.</span></div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>  <span class="comment">// no specific order required, the function sorts the arrays internally</span></div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>  wave polar <span class="comment">// polar coordinates. allowed range 0 <= theta <= 90</span></div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>  <span class="comment">// dimensions corresponding to value.</span></div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>  wave azi <span class="comment">// azimuthal coordinates. allowed range -360 <= phi < +360</span></div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>  <span class="comment">// dimensions corresponding to value.</span></div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>  wave weights <span class="comment">// total accumulation time of each point of values. default = 1</span></div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span> </div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>  if (ParamIsDefault(weights))</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>  duplicate /free values, weights</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>  weights = 1</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>  endif</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>  </div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>  <span class="comment">// quick check whether hemi grid is existing</span></div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>  <span class="keywordtype">string</span> s_prefix = ""</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>  <span class="keywordtype">string</span> s_int = "values"</div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>  dfref df = <a class="code" href="pearl-anglescan-process_8ipf.html#aa26c9ed4c4d703e07788d980edc2406d">find_hemi_data</a>(nickname, s_prefix, s_int)</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span> </div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>  <span class="keywordtype">string</span> s_polar = s_prefix + "pol"</div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>  <span class="keywordtype">string</span> s_azim = s_prefix + "az"</div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>  <span class="keywordtype">string</span> s_theta = s_prefix + "th"</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span> </div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>  wave /sdfr=df /z w_values = $s_int</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>  wave /sdfr=df /z w_azim = $s_azim</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>  wave /sdfr=df /z w_polar = $s_polar</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>  wave /sdfr=df /z w_theta = $s_theta</div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>  if (!waveexists(w_values) || !waveexists(w_azim) || !waveexists(w_polar))</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>  abort "Missing hemispherical scan grid. Please call <a class="code" href="pearl-anglescan-process_8ipf.html#a902ac3a24e33f651e83ee03d31707da7">make_hemi_grid</a>() first."</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>  endif</div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>  </div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>  <span class="comment">// make internal copies, one-dimensional, ordered in theta</span></div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>  duplicate /free values, values_copy</div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>  duplicate /free polar, polar_copy</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>  duplicate /free azi, azi_copy</div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>  duplicate /free weights, weights_copy</div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>  variable nn = dimsize(values, 0) * max(dimsize(values, 1), 1)</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>  redimension /n=(nn) values_copy, polar_copy, azi_copy, weights_copy</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>  sort /r polar_copy, polar_copy, azi_copy, values_copy, weights_copy</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>  </div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>  variable pol</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>  variable pol_st = abs(w_theta[1] - w_theta[0])</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>  variable pol1, pol2</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>  </div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>  duplicate /free azi_copy, azi_slice</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>  duplicate /free values_copy, values_slice</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>  duplicate /free weights_copy, weights_slice</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>  for (pol = 90; pol >= 0; pol -= pol_st)</div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>  pol1 = pol - pol_st / 2</div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>  pol2 = pol + pol_st / 2</div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>  extract /free /indx polar_copy, sel, (pol1 < polar_copy) && (polar_copy <= pol2)</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>  if (numpnts(sel) > 0)</div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>  redimension /n=(numpnts(sel)) azi_slice, values_slice, weights_slice</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>  azi_slice = azi_copy[sel]</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>  values_slice = values_copy[sel]</div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>  weights_slice = weights_copy[sel]</div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#a4641c716180d737700c6df87f5f8974e">hemi_add_aziscan</a>(nickname, values_slice, pol, azi_slice, weights=weights_slice)</div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>  endif</div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>  endfor</div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span> end</div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span> </div><div class="line"><a name="l02608"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a4641c716180d737700c6df87f5f8974e"> 2608</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#a4641c716180d737700c6df87f5f8974e">hemi_add_aziscan</a>(nickname, values, polar, azi, [weights])</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>  <span class="keywordtype">string</span> nickname <span class="comment">// name prefix of holo waves.</span></div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>  <span class="comment">// may be empty.</span></div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>  wave values <span class="comment">// intensity values of the azimuthal scan at the positions given in the azi parameter</span></div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>  variable polar <span class="comment">// polar angle where to add the azi scan</span></div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>  wave azi <span class="comment">// angle positions of the azimuthal scan</span></div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>  <span class="comment">// acceptable range: >= -360 and < +360</span></div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>  <span class="comment">// no specific order required, the function sorts the array internally</span></div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>  wave weights <span class="comment">// total accumulation time of each point of values. default = 1</span></div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span> </div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>  if (ParamIsDefault(weights))</div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>  duplicate /free values, weights</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>  weights = 1</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>  endif</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>  </div><div class="line"><a name="l02623"></a><span class="lineno"> 2623</span>  <span class="comment">// hemi grid waves</span></div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>  <span class="keywordtype">string</span> s_prefix = ""</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>  <span class="keywordtype">string</span> s_int = "values"</div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>  dfref df = <a class="code" href="pearl-anglescan-process_8ipf.html#aa26c9ed4c4d703e07788d980edc2406d">find_hemi_data</a>(nickname, s_prefix, s_int)</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span> </div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>  <span class="keywordtype">string</span> s_totals = s_prefix + "tot"</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>  <span class="keywordtype">string</span> s_weights = s_prefix + "wt"</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>  <span class="keywordtype">string</span> s_polar = s_prefix + "pol"</div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>  <span class="keywordtype">string</span> s_azim = s_prefix + "az"</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>  <span class="keywordtype">string</span> s_index = s_prefix + "index"</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>  <span class="keywordtype">string</span> s_theta = s_prefix + "th"</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>  <span class="keywordtype">string</span> s_dphi = s_prefix + "dphi"</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>  <span class="keywordtype">string</span> s_nphis = s_prefix + "nphis"</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>  </div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>  wave /sdfr=df w_polar = $s_polar</div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>  wave /sdfr=df w_azim = $s_azim</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>  wave /sdfr=df w_values = $s_int</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>  wave /sdfr=df w_totals = $s_totals</div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>  wave /sdfr=df w_weights = $s_weights</div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>  wave /sdfr=df w_index = $s_index</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>  wave /sdfr=df w_theta = $s_theta</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>  wave /sdfr=df w_dphi = $s_dphi</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>  wave /sdfr=df w_nphis = $s_nphis</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>  </div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>  <span class="comment">// destination slice coordinates</span></div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>  <span class="comment">//polar = round(polar)</span></div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>  <span class="comment">//variable ipol = 90 - polar</span></div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>  variable ipol = BinarySearch(w_theta, polar)</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>  if (ipol < 0)</div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>  abort "assertion failed in <a class="code" href="pearl-anglescan-process_8ipf.html#a4641c716180d737700c6df87f5f8974e">hemi_add_aziscan</a>(): polar angle not found in grid."</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>  endif</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>  </div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>  variable d1, d2</div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>  if (ipol >= 1)</div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>  d1 = w_index[ipol - 1]</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>  else</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>  d1 = 0</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>  endif</div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>  d2 = w_index[ipol] - 1</div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>  variable nd = d2 - d1 + 1</div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>  variable dphi = w_dphi[ipol]</div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>  variable az1, az2</div><div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>  </div><div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>  <span class="comment">// source slice coordinates </span></div><div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>  <span class="comment">// order the slice from -dphi/2 to 360-dphi/2</span></div><div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>  azi = azi < 0 ? azi + 360 : azi</div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>  azi = azi >= 360 - dphi/2 ? azi - 360 : azi</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>  duplicate /free values, sel_values</div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>  duplicate /free weights, sel_weights</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>  </div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>  <span class="comment">// loop over destination</span></div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>  variable <span class="keywordtype">id</span></div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>  variable v1, v2, w1, w2</div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>  for (<span class="keywordtype">id</span> = 0; <span class="keywordtype">id</span> < nd; <span class="keywordtype">id</span> += 1)</div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>  az1 = (<span class="keywordtype">id</span> - 0.5) * dphi</div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>  az2 = (<span class="keywordtype">id</span> + 0.5) * dphi</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>  extract /free /indx azi, sel, (az1 <= azi) && (azi < az2)</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>  if (numpnts(sel) > 0)</div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>  redimension /n=(numpnts(sel)) sel_values, sel_weights</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>  sel_values = values[sel]</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>  sel_weights = weights[sel]</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>  v1 = w_totals[d1 + <span class="keywordtype">id</span>]</div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>  w1 = w_weights[d1 + <span class="keywordtype">id</span>]</div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>  if ((numtype(v1) == 2) || (w1 <= 0))</div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>  v1 = 0</div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>  w1 = 0</div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>  endif</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>  v2 = sum(sel_values)</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>  w2 = sum(sel_weights)</div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>  w_totals[d1 + <span class="keywordtype">id</span>] = v1 + v2</div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>  w_weights[d1 + <span class="keywordtype">id</span>] = w1 + w2</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>  endif</div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>  endfor</div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>  w_values[d1, d1 + nd - 1] = w_totals[p] / w_weights[p]</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span> end</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span> </div><div class="line"><a name="l02726"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#acca0130cccf2286863bbf5b7f91c5b3b"> 2726</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#acca0130cccf2286863bbf5b7f91c5b3b">interpolate_hemi_scan</a>(nickname, [projection])</div><div class="line"><a name="l02727"></a><span class="lineno"> 2727</span>  <span class="keywordtype">string</span> nickname</div><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>  variable projection</div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span> </div><div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>  dfref savedf = GetDataFolderDFR()</div><div class="line"><a name="l02731"></a><span class="lineno"> 2731</span> </div><div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>  if (ParamIsDefault(projection))</div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>  projection = 1</div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>  endif</div><div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>  </div><div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>  <span class="keywordtype">string</span> s_prefix = ""</div><div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>  <span class="keywordtype">string</span> s_int = "values"</div><div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>  dfref df = <a class="code" href="pearl-anglescan-process_8ipf.html#aa26c9ed4c4d703e07788d980edc2406d">find_hemi_data</a>(nickname, s_prefix, s_int)</div><div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#ac15ebd5a19c558dde666ab36aeb9906f">prepare_hemi_scan_display</a>(nickname, projection=projection)</div><div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>  </div><div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>  <span class="keywordtype">string</span> s_polar = s_prefix + "pol"</div><div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>  <span class="keywordtype">string</span> s_azim = s_prefix + "az"</div><div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>  <span class="keywordtype">string</span> s_matrix = s_prefix + "matrix"</div><div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>  <span class="keywordtype">string</span> s_ster_rad = s_prefix + "ster_rad"</div><div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>  <span class="keywordtype">string</span> s_ster_x = s_prefix + "ster_x"</div><div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>  <span class="keywordtype">string</span> s_ster_y = s_prefix + "ster_y"</div><div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>  </div><div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>  wave /sdfr=df /z values = $s_int</div><div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>  wave /sdfr=df /z azim = $s_azim</div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>  wave /sdfr=df /z polar = $s_polar</div><div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>  wave /sdfr=df /z ster_rad = $s_ster_rad</div><div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>  wave /sdfr=df /z ster_x = $s_ster_x</div><div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>  wave /sdfr=df /z ster_y = $s_ster_y</div><div class="line"><a name="l02754"></a><span class="lineno"> 2754</span> </div><div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>  variable min_ster_x = wavemin(ster_x)</div><div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>  variable max_ster_x = wavemax(ster_x)</div><div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>  variable x0 = min_ster_x</div><div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>  variable xn = 181</div><div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>  variable dx = (max_ster_x - min_ster_x) / (xn - 1)</div><div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>  make /n=(numpnts(ster_x), 3) /free triplet</div><div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>  triplet[][0] = ster_x[p]</div><div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>  triplet[][1] = ster_y[p]</div><div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>  triplet[][2] = values[p]</div><div class="line"><a name="l02764"></a><span class="lineno"> 2764</span> </div><div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>  variable size = 181</div><div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>  setdatafolder df</div><div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>  make /n=(size, size) /d /o $(s_prefix + "matrix") /wave=matrix</div><div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>  make /n=(size, size) /free mnorm</div><div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>  ImageFromXYZ /as {ster_x, ster_y, values}, matrix, mnorm</div><div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>  matrix /= mnorm</div><div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>  matrixfilter NanZapMedian, matrix</div><div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>  matrixfilter gauss, matrix</div><div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>  </div><div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>  duplicate /free values, ster_finite</div><div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>  ster_finite = (numtype(values) == 0) * (ster_x^2 + ster_y^2)</div><div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>  variable ster_max = wavemax(ster_finite)</div><div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>  matrix = (x^2 + y^2) <= ster_max ? matrix : nan</div><div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>  </div><div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>  setdatafolder savedf</div><div class="line"><a name="l02780"></a><span class="lineno"> 2780</span> end</div><div class="line"><a name="l02781"></a><span class="lineno"> 2781</span> </div><div class="line"><a name="l02792"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a0b9e2b025e1d55d2a064edccf6c1c3e3"> 2792</a></span> <span class="keyword">function</span> <a class="code" href="pearl-anglescan-process_8ipf.html#a0b9e2b025e1d55d2a064edccf6c1c3e3">quick_pizza_image</a>(data, nickname, theta_offset, tilt_offset, phi_offset, [npolar, nograph, folding])</div><div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>  wave data <span class="comment">// 2D intensity wave, see requirements above</span></div><div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>  <span class="keywordtype">string</span> nickname <span class="comment">// nick name for output data</span></div><div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>  <span class="comment">// in default mode, this will be the name of a child folder containing the output</span></div><div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>  <span class="comment">// in XPDplot mode, this will be a prefix of the generated data in the root folder</span></div><div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>  variable theta_offset <span class="comment">// manipulator theta angle corresponding to normal emission</span></div><div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>  variable tilt_offset <span class="comment">// manipulator tilt angle corresponding to normal emission</span></div><div class="line"><a name="l02799"></a><span class="lineno"> 2799</span>  variable phi_offset <span class="comment">// manipulator phi angle corresponding to phi_result = 0</span></div><div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>  variable npolar <span class="comment">// number of polar angles, determines polar and azimuthal step size</span></div><div class="line"><a name="l02801"></a><span class="lineno"> 2801</span>  <span class="comment">// default = 91 (1 degree steps)</span></div><div class="line"><a name="l02802"></a><span class="lineno"> 2802</span>  variable nograph <span class="comment">// 0 (default) = display a new polar graph</span></div><div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>  <span class="comment">// 1 = don't display a new graph (if a graph is existing from a previous call, it will update)</span></div><div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>  variable folding <span class="comment">// rotational averaging, default = 1</span></div><div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>  </div><div class="line"><a name="l02806"></a><span class="lineno"> 2806</span>  <span class="keywordflow">if</span> (ParamIsDefault(npolar))</div><div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>  npolar = 91</div><div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>  endif</div><div class="line"><a name="l02809"></a><span class="lineno"> 2809</span>  <span class="keywordflow">if</span> (ParamIsDefault(nograph))</div><div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>  nograph = 0</div><div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>  endif</div><div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>  <span class="keywordflow">if</span> (ParamIsDefault(folding))</div><div class="line"><a name="l02813"></a><span class="lineno"> 2813</span>  folding = 1</div><div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>  endif</div><div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>  <span class="keywordtype">string</span> graphname = <span class="stringliteral">"graph_"</span> + nickname</div><div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>  <span class="keywordtype">string</span> s_prefix = <span class="stringliteral">""</span></div><div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>  </div><div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>  <span class="comment">// sort out data folder structure</span></div><div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>  dfref saveDF = GetDataFolderDFR()</div><div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>  dfref dataDF = GetWavesDataFolderDFR(data)</div><div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>  setdatafolder dataDF</div><div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>  <span class="keywordflow">if</span> (DataFolderExists(<span class="stringliteral">":attr"</span>))</div><div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>  setdatafolder :attr</div><div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>  endif</div><div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>  dfref attrDF = GetDataFolderDFR()</div><div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>  setdatafolder dataDF</div><div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>  newdatafolder /s/o $nickname</div><div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>  dfref destDF = GetDataFolderDFR()</div><div class="line"><a name="l02829"></a><span class="lineno"> 2829</span>  </div><div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>  <span class="comment">// performance monitoring</span></div><div class="line"><a name="l02831"></a><span class="lineno"> 2831</span>  variable timerRefNum</div><div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>  variable /g xyz_perf_secs</div><div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>  timerRefNum = startMSTimer</div><div class="line"><a name="l02834"></a><span class="lineno"> 2834</span> </div><div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>  wave /sdfr=attrDF ManipulatorTheta</div><div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>  wave /sdfr=attrDF ManipulatorTilt</div><div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>  wave /sdfr=attrDF ManipulatorPhi</div><div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>  duplicate /free ManipulatorTheta, m_theta</div><div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>  duplicate /free ManipulatorTilt, m_tilt</div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>  duplicate /free ManipulatorPhi, m_phi</div><div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>  m_theta -= theta_offset</div><div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>  m_tilt -= tilt_offset</div><div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>  m_tilt *= -1 <span class="comment">// checked 140702</span></div><div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>  m_phi -= phi_offset</div><div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>  <span class="comment">//m_phi *= -1 // checked 140702</span></div><div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>  </div><div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>  make /n=1/d/free d_polar, d_azi</div><div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#a2b38c6c9b6e60593ba69d3773b6bc779">convert_angles_ttpd2polar</a>(m_theta, m_tilt, m_phi, data, d_polar, d_azi)</div><div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>  d_azi += 180 <span class="comment">// changed 151030 (v1.6)</span></div><div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>  d_azi = d_azi >= 360 ? d_azi - 360 : d_azi</div><div class="line"><a name="l02851"></a><span class="lineno"> 2851</span> </div><div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>  duplicate /free data, values</div><div class="line"><a name="l02853"></a><span class="lineno"> 2853</span>  variable nn = dimsize(values, 0) * max(dimsize(values, 1), 1)</div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>  redimension /n=(nn) values, d_polar, d_azi</div><div class="line"><a name="l02855"></a><span class="lineno"> 2855</span>  duplicate /o d_polar, ster_rad, ster_x, ster_y</div><div class="line"><a name="l02856"></a><span class="lineno"> 2856</span> </div><div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>  variable projection = 1</div><div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>  switch(projection)</div><div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>  case 1: <span class="comment">// stereographic</span></div><div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>  ster_rad = 2 * tan(d_polar / 2 * pi / 180)</div><div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>  break</div><div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>  case 2: <span class="comment">// azimuthal</span></div><div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>  ster_rad = 2 * cos((180 - d_polar) / 2 * pi / 180)</div><div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>  break</div><div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>  endswitch</div><div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>  <span class="keywordtype">string</span> s_ster_x = s_prefix + "ster_x"</div><div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>  <span class="keywordtype">string</span> s_ster_y = s_prefix + "ster_y"</div><div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>  </div><div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>  nn = 401</div><div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>  make /n=(nn, nn) /d /o matrix</div><div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>  make /n=(nn, nn) /free mnorm</div><div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>  setscale /i x -2, +2, matrix, mnorm</div><div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>  setscale /i y -2, +2, matrix, mnorm</div><div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>  matrix = 0</div><div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>  mnorm = 0</div><div class="line"><a name="l02876"></a><span class="lineno"> 2876</span>  </div><div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>  variable ifold</div><div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>  for (ifold = 0; ifold < folding; ifold += 1)</div><div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>  ster_x = ster_rad * cos(d_azi * pi / 180)</div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>  ster_y = ster_rad * sin(d_azi * pi / 180)</div><div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>  ImageFromXYZ {ster_x, ster_y, values}, matrix, mnorm</div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>  d_azi = d_azi >= 180 ? d_azi + 360 / folding - 180 : d_azi + 360 / folding</div><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>  endfor</div><div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>  </div><div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>  matrix /= mnorm</div><div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>  matrixfilter /n=5 NanZapMedian matrix</div><div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>  matrixfilter /n=3 gauss matrix</div><div class="line"><a name="l02888"></a><span class="lineno"> 2888</span> </div><div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>  <span class="keywordflow">if</span> (!nograph)</div><div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>  display /k=1</div><div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>  appendimage matrix</div><div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>  modifygraph width={Plan,1,bottom,left}</div><div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>  endif</div><div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>  </div><div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>  <span class="keywordflow">if</span> (timerRefNum >= 0)</div><div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>  xyz_perf_secs = stopMSTimer(timerRefNum) / 1e6</div><div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>  endif</div><div class="line"><a name="l02898"></a><span class="lineno"> 2898</span> </div><div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>  setdatafolder saveDF</div><div class="line"><a name="l02900"></a><span class="lineno"> 2900</span> end</div><div class="line"><a name="l02901"></a><span class="lineno"> 2901</span> </div><div class="line"><a name="l02903"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a48cbd596656bc6d849c53afb4c58b90d"> 2903</a></span> <span class="keyword">function</span> <a class="code" href="pearl-anglescan-process_8ipf.html#a48cbd596656bc6d849c53afb4c58b90d">save_hemi_scan</a>(nickname, pathname, filename)</div><div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>  <span class="keywordtype">string</span> nickname</div><div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>  <span class="keywordtype">string</span> pathname</div><div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>  <span class="keywordtype">string</span> filename</div><div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>  </div><div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>  dfref savedf = getdatafolderdfr()</div><div class="line"><a name="l02909"></a><span class="lineno"> 2909</span> </div><div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>  <span class="comment">// source data</span></div><div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>  string s_prefix = ""</div><div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>  <span class="keywordtype">string</span> s_int = "values"</div><div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>  dfref df = <a class="code" href="pearl-anglescan-process_8ipf.html#aa26c9ed4c4d703e07788d980edc2406d">find_hemi_data</a>(nickname, s_prefix, s_int)</div><div class="line"><a name="l02914"></a><span class="lineno"> 2914</span> </div><div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>  <span class="keywordtype">string</span> s_polar = s_prefix + "pol"</div><div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>  <span class="keywordtype">string</span> s_azim = s_prefix + "az"</div><div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>  <span class="keywordtype">string</span> s_theta = s_prefix + "th"</div><div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>  <span class="keywordtype">string</span> s_tot = s_prefix + "tot"</div><div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>  <span class="keywordtype">string</span> s_weight = s_prefix + "wt"</div><div class="line"><a name="l02920"></a><span class="lineno"> 2920</span> </div><div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>  wave /sdfr=df theta1 = $s_theta</div><div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>  wave /sdfr=df polar1 = $s_polar</div><div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>  wave /sdfr=df azim1 = $s_azim</div><div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>  wave /sdfr=df tot1 = $s_tot</div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>  wave /sdfr=df weight1 = $s_weight</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>  wave /sdfr=df values1 = $s_int</div><div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>  </div><div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>  save /m="\r\n" /o /p=$pathname /t theta1, polar1, azim1, tot1, weight1, values1 as filename</div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>  </div><div class="line"><a name="l02930"></a><span class="lineno"> 2930</span>  setdatafolder saveDF</div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span> end</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span> </div><div class="line"><a name="l02936"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a89f73edcd51a675f4c3933cd0242484e"> 2936</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#a89f73edcd51a675f4c3933cd0242484e">load_hemi_scan</a>(nickname, pathname, filename)</div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>  <span class="keywordtype">string</span> nickname</div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>  <span class="keywordtype">string</span> pathname</div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>  <span class="keywordtype">string</span> filename</div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>  </div><div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>  dfref savedf = getdatafolderdfr()</div><div class="line"><a name="l02942"></a><span class="lineno"> 2942</span> </div><div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>  <span class="comment">//loadwave /p=$pathname /t theta1, polar1, azim1, tot1, weight1, values1 as filename</span></div><div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>  <span class="comment">//LoadWave /t/p=pearl_explorer_filepath/q filename</span></div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>  <span class="comment">//svar waves = s_wavenames</span></div><div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>  <span class="comment">//if (v_flag > 0)</span></div><div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>  <span class="comment">// string /g pearl_explorer_import = "load_itx_file"</span></div><div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>  <span class="comment">//endif</span></div><div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>  </div><div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>  setdatafolder saveDF</div><div class="line"><a name="l02951"></a><span class="lineno"> 2951</span> end</div><div class="line"><a name="l02952"></a><span class="lineno"> 2952</span> </div><div class="line"><a name="l02985"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a5265fd61f86eb72dd877e4190bfb4adf"> 2985</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#a5265fd61f86eb72dd877e4190bfb4adf">import_tpi_scan</a>(nickname, theta, phi, intensity, [folding, npolar, nograph, xpdplot])</div><div class="line"><a name="l02986"></a><span class="lineno"> 2986</span>  <span class="keywordtype">string</span> nickname</div><div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>  wave theta</div><div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>  wave phi</div><div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>  wave intensity</div><div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>  </div><div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>  variable folding</div><div class="line"><a name="l02992"></a><span class="lineno"> 2992</span>  variable npolar</div><div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>  variable nograph</div><div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>  variable xpdplot</div><div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>  </div><div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>  if (ParamIsDefault(npolar))</div><div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>  npolar = 91</div><div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>  endif</div><div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>  if (ParamIsDefault(nograph))</div><div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>  nograph = 0</div><div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>  endif</div><div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>  if (ParamIsDefault(folding))</div><div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>  folding = 1</div><div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>  endif</div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>  if (ParamIsDefault(xpdplot))</div><div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>  xpdplot = 0</div><div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>  endif</div><div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>  </div><div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#a902ac3a24e33f651e83ee03d31707da7">make_hemi_grid</a>(npolar, nickname, xpdplot=xpdplot)</div><div class="line"><a name="l03010"></a><span class="lineno"> 3010</span> </div><div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>  variable ifold</div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>  duplicate /free phi, fold_phi</div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>  for (ifold = 0; ifold < folding; ifold += 1)</div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#a4952bc53e3d6d272d25b5e35e91696b5">hemi_add_anglescan</a>(nickname, intensity, theta, fold_phi)</div><div class="line"><a name="l03015"></a><span class="lineno"> 3015</span>  fold_phi = fold_phi >= 180 ? fold_phi + 360 / folding - fold_phi : fold_phi + 360 / folding</div><div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>  endfor</div><div class="line"><a name="l03017"></a><span class="lineno"> 3017</span> </div><div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>  if (nograph==0)</div><div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#ae57302acfc822c4817f2b7eef55efea2">display_hemi_scan</a>(nickname)</div><div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>  endif</div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</span> end</div><div class="line"><a name="l03022"></a><span class="lineno"> 3022</span> </div><div class="line"><a name="l03034"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a5dc0cc7db9d3d7a6b3fa3f1b04d84a5e"> 3034</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#a5dc0cc7db9d3d7a6b3fa3f1b04d84a5e">trim_hemi_scan</a>(nickname, theta_max)</div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>  <span class="keywordtype">string</span> nickname</div><div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>  variable theta_max</div><div class="line"><a name="l03037"></a><span class="lineno"> 3037</span> </div><div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>  <span class="keywordtype">string</span> s_prefix = ""</div><div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>  <span class="keywordtype">string</span> s_int = "values"</div><div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>  dfref df = <a class="code" href="pearl-anglescan-process_8ipf.html#aa26c9ed4c4d703e07788d980edc2406d">find_hemi_data</a>(nickname, s_prefix, s_int)</div><div class="line"><a name="l03041"></a><span class="lineno"> 3041</span> </div><div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>  <span class="keywordtype">string</span> s_totals = s_prefix + "tot"</div><div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>  <span class="keywordtype">string</span> s_weights = s_prefix + "wt"</div><div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>  <span class="keywordtype">string</span> s_polar = s_prefix + "pol"</div><div class="line"><a name="l03045"></a><span class="lineno"> 3045</span> </div><div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>  wave /sdfr=df w_polar = $s_polar</div><div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>  wave /sdfr=df w_values = $s_int</div><div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>  wave /sdfr=df w_totals = $s_totals</div><div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>  wave /sdfr=df w_weights = $s_weights</div><div class="line"><a name="l03050"></a><span class="lineno"> 3050</span> </div><div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>  w_values = w_polar <= theta_max ? w_totals / w_weights : nan</div><div class="line"><a name="l03052"></a><span class="lineno"> 3052</span> end</div><div class="line"><a name="l03053"></a><span class="lineno"> 3053</span> </div><div class="line"><a name="l03073"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#aa486e16909d01e2251eeb4d635b972b1"> 3073</a></span> function /wave <a class="code" href="pearl-anglescan-process_8ipf.html#aa486e16909d01e2251eeb4d635b972b1">hemi_polar_cut</a>(nickname, azim)</div><div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>  <span class="keywordtype">string</span> nickname</div><div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>  variable azim</div><div class="line"><a name="l03076"></a><span class="lineno"> 3076</span> </div><div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>  dfref savedf = getdatafolderdfr()</div><div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>  <span class="keywordtype">string</span> s_prefix = ""</div><div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>  <span class="keywordtype">string</span> s_int = "values"</div><div class="line"><a name="l03080"></a><span class="lineno"> 3080</span>  dfref df = <a class="code" href="pearl-anglescan-process_8ipf.html#aa26c9ed4c4d703e07788d980edc2406d">find_hemi_data</a>(nickname, s_prefix, s_int)</div><div class="line"><a name="l03081"></a><span class="lineno"> 3081</span> </div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>  <span class="keywordtype">string</span> s_totals = s_prefix + "tot"</div><div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>  <span class="keywordtype">string</span> s_weights = s_prefix + "wt"</div><div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>  <span class="keywordtype">string</span> s_polar = s_prefix + "pol"</div><div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>  <span class="keywordtype">string</span> s_azim = s_prefix + "az"</div><div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>  <span class="keywordtype">string</span> s_index = s_prefix + "index"</div><div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>  <span class="keywordtype">string</span> s_theta = s_prefix + "th"</div><div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>  <span class="keywordtype">string</span> s_dphi = s_prefix + "dphi"</div><div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>  <span class="keywordtype">string</span> s_nphis = s_prefix + "nphis"</div><div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>  <span class="keywordtype">string</span> s_cut</div><div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>  sprintf s_cut, "%s_azi%03u", s_int, round(azim)</div><div class="line"><a name="l03092"></a><span class="lineno"> 3092</span> </div><div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>  wave /sdfr=df w_polar = $s_polar</div><div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>  wave /sdfr=df w_azim = $s_azim</div><div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>  wave /sdfr=df w_values = $s_int</div><div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>  wave /sdfr=df w_totals = $s_totals</div><div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>  wave /sdfr=df w_weights = $s_weights</div><div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>  wave /sdfr=df w_index = $s_index</div><div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>  wave /sdfr=df w_theta = $s_theta</div><div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>  wave /sdfr=df w_dphi = $s_dphi</div><div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>  wave /sdfr=df w_nphis = $s_nphis</div><div class="line"><a name="l03102"></a><span class="lineno"> 3102</span> </div><div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>  variable npol = numpnts(w_theta)</div><div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>  variable ipol</div><div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>  variable pol_st = abs(w_theta[1] - w_theta[0])</div><div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>  variable pol</div><div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>  variable pol1, pol2</div><div class="line"><a name="l03108"></a><span class="lineno"> 3108</span>  variable nsel</div><div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>  </div><div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>  setdatafolder df</div><div class="line"><a name="l03111"></a><span class="lineno"> 3111</span>  make /n=(npol) /o $s_cut</div><div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>  wave w_cut = $s_cut</div><div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>  setscale /i x w_theta[0], w_theta[numpnts(w_theta)-1], "deg", w_cut</div><div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>  make /n=1 /free azi_slice</div><div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>  make /n=1 /free values_slice</div><div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>  </div><div class="line"><a name="l03117"></a><span class="lineno"> 3117</span>  for (ipol = 0; ipol < npol; ipol += 1)</div><div class="line"><a name="l03118"></a><span class="lineno"> 3118</span>  pol = w_theta[ipol]</div><div class="line"><a name="l03119"></a><span class="lineno"> 3119</span>  pol1 = pol - pol_st / 2</div><div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>  pol2 = pol + pol_st / 2</div><div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>  extract /free /indx w_polar, sel, (pol1 < w_polar) && (w_polar <= pol2)</div><div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>  nsel = numpnts(sel)</div><div class="line"><a name="l03123"></a><span class="lineno"> 3123</span>  if (nsel > 0)</div><div class="line"><a name="l03124"></a><span class="lineno"> 3124</span>  redimension /n=(nsel+2) azi_slice, values_slice</div><div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>  azi_slice[1, nsel] = w_azim[sel[p-1]]</div><div class="line"><a name="l03126"></a><span class="lineno"> 3126</span>  azi_slice[0] = azi_slice[nsel] - 360</div><div class="line"><a name="l03127"></a><span class="lineno"> 3127</span>  azi_slice[nsel+1] = azi_slice[1] + 360</div><div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>  values_slice[1, nsel] = w_values[sel[p-1]]</div><div class="line"><a name="l03129"></a><span class="lineno"> 3129</span>  values_slice[0] = values_slice[nsel]</div><div class="line"><a name="l03130"></a><span class="lineno"> 3130</span>  values_slice[nsel+1] = values_slice[1]</div><div class="line"><a name="l03131"></a><span class="lineno"> 3131</span>  w_cut[ipol] = interp(azim, azi_slice, values_slice)</div><div class="line"><a name="l03132"></a><span class="lineno"> 3132</span>  else</div><div class="line"><a name="l03133"></a><span class="lineno"> 3133</span>  w_cut[ipol] = nan</div><div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>  endif</div><div class="line"><a name="l03135"></a><span class="lineno"> 3135</span>  endfor</div><div class="line"><a name="l03136"></a><span class="lineno"> 3136</span>  </div><div class="line"><a name="l03137"></a><span class="lineno"> 3137</span>  setdatafolder savedf</div><div class="line"><a name="l03138"></a><span class="lineno"> 3138</span>  return w_cut</div><div class="line"><a name="l03139"></a><span class="lineno"> 3139</span> end</div><div class="line"><a name="l03140"></a><span class="lineno"> 3140</span> </div><div class="line"><a name="l03159"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#ab6ac1268de338040028dca8d0ddc967c"> 3159</a></span> function /wave <a class="code" href="pearl-anglescan-process_8ipf.html#ab6ac1268de338040028dca8d0ddc967c">hemi_azi_cut</a>(nickname, pol)</div><div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>  <span class="keywordtype">string</span> nickname</div><div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>  variable pol</div><div class="line"><a name="l03162"></a><span class="lineno"> 3162</span> </div><div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>  dfref savedf = getdatafolderdfr()</div><div class="line"><a name="l03164"></a><span class="lineno"> 3164</span>  <span class="keywordtype">string</span> s_prefix = ""</div><div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>  <span class="keywordtype">string</span> s_int = "values"</div><div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>  dfref df = <a class="code" href="pearl-anglescan-process_8ipf.html#aa26c9ed4c4d703e07788d980edc2406d">find_hemi_data</a>(nickname, s_prefix, s_int)</div><div class="line"><a name="l03167"></a><span class="lineno"> 3167</span> </div><div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>  <span class="keywordtype">string</span> s_totals = s_prefix + "tot"</div><div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>  <span class="keywordtype">string</span> s_weights = s_prefix + "wt"</div><div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>  <span class="keywordtype">string</span> s_polar = s_prefix + "pol"</div><div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>  <span class="keywordtype">string</span> s_azim = s_prefix + "az"</div><div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>  <span class="keywordtype">string</span> s_index = s_prefix + "index"</div><div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>  <span class="keywordtype">string</span> s_theta = s_prefix + "th"</div><div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>  <span class="keywordtype">string</span> s_dphi = s_prefix + "dphi"</div><div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>  <span class="keywordtype">string</span> s_nphis = s_prefix + "nphis"</div><div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>  <span class="keywordtype">string</span> s_cut</div><div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>  sprintf s_cut, "%s_pol%03u", s_int, round(pol)</div><div class="line"><a name="l03178"></a><span class="lineno"> 3178</span> </div><div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>  wave /sdfr=df w_polar = $s_polar</div><div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>  wave /sdfr=df w_azim = $s_azim</div><div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>  wave /sdfr=df w_values = $s_int</div><div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>  wave /sdfr=df w_totals = $s_totals</div><div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>  wave /sdfr=df w_weights = $s_weights</div><div class="line"><a name="l03184"></a><span class="lineno"> 3184</span>  wave /sdfr=df w_index = $s_index</div><div class="line"><a name="l03185"></a><span class="lineno"> 3185</span>  wave /sdfr=df w_theta = $s_theta</div><div class="line"><a name="l03186"></a><span class="lineno"> 3186</span>  wave /sdfr=df w_dphi = $s_dphi</div><div class="line"><a name="l03187"></a><span class="lineno"> 3187</span>  wave /sdfr=df w_nphis = $s_nphis</div><div class="line"><a name="l03188"></a><span class="lineno"> 3188</span> </div><div class="line"><a name="l03189"></a><span class="lineno"> 3189</span>  variable pol_st = abs(w_theta[1] - w_theta[0])</div><div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>  variable pol1, pol2</div><div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>  variable nsel</div><div class="line"><a name="l03192"></a><span class="lineno"> 3192</span> </div><div class="line"><a name="l03193"></a><span class="lineno"> 3193</span>  pol1 = pol - pol_st / 2</div><div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>  pol2 = pol + pol_st / 2</div><div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>  extract /free /indx w_polar, sel, (pol1 < w_polar) && (w_polar <= pol2)</div><div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>  nsel = numpnts(sel)</div><div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>  if (nsel > 0)</div><div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>  setdatafolder df</div><div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>  make /n=(nsel) /o $s_cut</div><div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>  wave w_cut = $s_cut</div><div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>  w_cut = w_values[sel]</div><div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>  setscale /i x w_azim[sel[0]], w_azim[sel[nsel-1]], "°", w_cut</div><div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>  setdatafolder savedf</div><div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>  return w_cut</div><div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>  else</div><div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>  setdatafolder savedf</div><div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>  return $""</div><div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>  endif</div><div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>  setdatafolder savedf</div><div class="line"><a name="l03210"></a><span class="lineno"> 3210</span> end</div><div class="line"><a name="l03211"></a><span class="lineno"> 3211</span> </div><div class="line"><a name="l03212"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a2e1ed05781f9eb4be5e77695ef049962"> 3212</a></span> static function <a class="code" href="pearl-anglescan-process_8ipf.html#a2e1ed05781f9eb4be5e77695ef049962">check_contrast</a>(values, pcmin, pcmax, vmin, vmax)</div><div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>  wave values</div><div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>  variable pcmin</div><div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>  variable pcmax</div><div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>  variable &vmin</div><div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>  variable &vmax</div><div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>  </div><div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>  dfref save_df = GetDataFolderDFR()</div><div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>  dfref dfr = NewFreeDataFolder()</div><div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>  setdatafolder dfr</div><div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>  StatsQuantiles /inan /iw /q /z values</div><div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>  wave index = w_quantilesindex</div><div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>  variable imin = round(numpnts(index) * pcmin / 100)</div><div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>  variable imax = round(numpnts(index) * (100 - pcmax) / 100)</div><div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>  vmin = values[index[imin]]</div><div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>  vmax = values[index[imax]]</div><div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>  setdatafolder save_df</div><div class="line"><a name="l03229"></a><span class="lineno"> 3229</span> end</div><div class="line"><a name="l03230"></a><span class="lineno"> 3230</span> </div><div class="line"><a name="l03247"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#a666dab03bb2e97ffef81cea450184d42"> 3247</a></span> function <a class="code" href="pearl-anglescan-process_8ipf.html#a666dab03bb2e97ffef81cea450184d42">set_contrast</a>(pcmin, pcmax, [graphname, colortable])</div><div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>  variable pcmin</div><div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>  variable pcmax</div><div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>  <span class="keywordtype">string</span> graphname</div><div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>  <span class="keywordtype">string</span> colortable</div><div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>  </div><div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>  if (ParamIsDefault(graphname))</div><div class="line"><a name="l03254"></a><span class="lineno"> 3254</span>  graphname = ""</div><div class="line"><a name="l03255"></a><span class="lineno"> 3255</span>  endif</div><div class="line"><a name="l03256"></a><span class="lineno"> 3256</span>  if (ParamIsDefault(colortable))</div><div class="line"><a name="l03257"></a><span class="lineno"> 3257</span>  colortable = ""</div><div class="line"><a name="l03258"></a><span class="lineno"> 3258</span>  endif</div><div class="line"><a name="l03259"></a><span class="lineno"> 3259</span>  </div><div class="line"><a name="l03260"></a><span class="lineno"> 3260</span>  dfref save_df = GetDataFolderDFR()</div><div class="line"><a name="l03261"></a><span class="lineno"> 3261</span>  </div><div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>  <span class="keywordtype">string</span> objname</div><div class="line"><a name="l03263"></a><span class="lineno"> 3263</span>  <span class="keywordtype">string</span> info</div><div class="line"><a name="l03264"></a><span class="lineno"> 3264</span>  <span class="keywordtype">string</span> wname</div><div class="line"><a name="l03265"></a><span class="lineno"> 3265</span>  <span class="keywordtype">string</span> ctab</div><div class="line"><a name="l03266"></a><span class="lineno"> 3266</span>  variable rev</div><div class="line"><a name="l03267"></a><span class="lineno"> 3267</span>  variable n</div><div class="line"><a name="l03268"></a><span class="lineno"> 3268</span>  variable i</div><div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>  variable vmin</div><div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>  variable vmax</div><div class="line"><a name="l03271"></a><span class="lineno"> 3271</span> </div><div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>  <span class="keywordtype">string</span> traces = TraceNameList(graphname, ";", 1+4)</div><div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>  n = ItemsInList(traces, ";")</div><div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>  for (i = 0; i < n; i += 1)</div><div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>  objname = StringFromList(i, traces, ";")</div><div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>  info = TraceInfo(graphname, objname, 0)</div><div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>  if (strlen(info) > 0)</div><div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>  info = StringByKey("RECREATION", info, ":", ";")</div><div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>  info = StringByKey("zColor(x)", info, "=", ";")</div><div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>  if (strlen(info) > 2)</div><div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>  info = info[1,strlen(info)-2]</div><div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>  wname = StringFromList(0, info, ",")</div><div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>  wave w = $wname</div><div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>  ctab = StringFromList(3, info, ",")</div><div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>  rev = str2num("0" + StringFromList(4, info, ","))</div><div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>  if (strlen(colortable) > 0)</div><div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>  ctab = colortable</div><div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>  endif</div><div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#a2e1ed05781f9eb4be5e77695ef049962">check_contrast</a>(w, pcmin, pcmax, vmin, vmax)</div><div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>  ModifyGraph /w=$graphname zColor($objname)={w, vmin, vmax, $ctab, rev}</div><div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>  endif</div><div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>  endif</div><div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>  endfor</div><div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>  </div><div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>  <span class="keywordtype">string</span> images = ImageNameList(graphname, <span class="stringliteral">";"</span>)</div><div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>  n = ItemsInList(images, <span class="stringliteral">";"</span>)</div><div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>  <span class="keywordflow">for</span> (i = 0; i < n; i += 1)</div><div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>  objname = StringFromList(i, images, <span class="stringliteral">";"</span>)</div><div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>  wave w = ImageNameToWaveRef(graphname, objname)</div><div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>  info = ImageInfo(graphname, objname, 0)</div><div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>  <span class="keywordflow">if</span> (strlen(info) > 0)</div><div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>  info = StringByKey(<span class="stringliteral">"RECREATION"</span>, info, <span class="stringliteral">":"</span>, <span class="stringliteral">";"</span>)</div><div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>  info = StringByKey(<span class="stringliteral">"ctab"</span>, info, <span class="stringliteral">"="</span>, <span class="stringliteral">";"</span>)</div><div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>  <span class="keywordflow">if</span> (strlen(info) > 2)</div><div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>  info = info[1,strlen(info)-2]</div><div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>  ctab = StringFromList(2, info, <span class="stringliteral">","</span>)</div><div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>  rev = str2num(<span class="stringliteral">"0"</span> + StringFromList(3, info, <span class="stringliteral">","</span>))</div><div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>  <span class="keywordflow">if</span> (strlen(colortable) > 0)</div><div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>  ctab = colortable</div><div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>  endif</div><div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>  <a class="code" href="pearl-anglescan-process_8ipf.html#a2e1ed05781f9eb4be5e77695ef049962">check_contrast</a>(w, pcmin, pcmax, vmin, vmax)</div><div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>  ModifyImage /w=$graphname $objname ctab={vmin, vmax, $ctab, rev}</div><div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>  endif</div><div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>  endif</div><div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>  endfor</div><div class="line"><a name="l03316"></a><span class="lineno"> 3316</span> </div><div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>  setdatafolder save_df</div><div class="line"><a name="l03318"></a><span class="lineno"> 3318</span> end</div><div class="line"><a name="l03319"></a><span class="lineno"> 3319</span> </div><div class="line"><a name="l03332"></a><span class="lineno"><a class="line" href="pearl-anglescan-process_8ipf.html#acf6fddb73624fe2d21429e38c4994088"> 3332</a></span> Function <a class="code" href="pearl-anglescan-process_8ipf.html#acf6fddb73624fe2d21429e38c4994088">AngleToK</a>(inwave)</div><div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>  Wave inwave</div><div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>  String newname = NameofWave(inwave)+<span class="stringliteral">"_k"</span></div><div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>  Duplicate/O inwave, $newname</div><div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>  Wave outwave = $newname</div><div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>  Variable rows,columns,xdelta,xoffset,ydelta,yoffset,kmin,kmax,Emax</div><div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>  <span class="comment">// inwave parameters</span></div><div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>  rows = DimSize(inwave,0)</div><div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>  columns = DimSize(inwave,1)</div><div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>  xdelta = DimDelta(inwave,0)</div><div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>  xoffset = DimOffset(inwave,0)</div><div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>  ydelta = DimDelta(inwave,1)</div><div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>  yoffset = DimOffset(inwave,1)</div><div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>  Emax= xoffset + xdelta*(rows-1)</div><div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>  kmin = 0.5123*sqrt(Emax)*sin(pi/180*(yoffset)) <span class="comment">// calculate the k boundaries</span></div><div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>  kmax = 0.5123*sqrt(Emax)*sin(pi/180*(yoffset+(columns-1)*ydelta))</div><div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>  SetScale/I y kmin,kmax,"Ang^-1", outwave</div><div class="line"><a name="l03349"></a><span class="lineno"> 3349</span>  <span class="comment">// scale the y axis</span></div><div class="line"><a name="l03350"></a><span class="lineno"> 3350</span>  outwave = interp2D(inwave, x, 180/pi*asin(y/ (0.5123*sqrt(x)))) <span class="comment">// recalculate to k</span></div><div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>  outwave = (NumType(outwave)==2) ? 0 : outwave <span class="comment">// replace NaNs (optional)</span></div><div class="line"><a name="l03352"></a><span class="lineno"> 3352</span> End</div><div class="ttc" id="pearl-anglescan-process_8ipf_html_aa486e16909d01e2251eeb4d635b972b1"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#aa486e16909d01e2251eeb4d635b972b1">hemi_polar_cut</a></div><div class="ttdeci">wave hemi_polar_cut(string nickname, variable azim)</div><div class="ttdoc">extract a polar cut from a hemispherical scan. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l03073">pearl-anglescan-process.ipf:3073</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a5dc0cc7db9d3d7a6b3fa3f1b04d84a5e"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a5dc0cc7db9d3d7a6b3fa3f1b04d84a5e">trim_hemi_scan</a></div><div class="ttdeci">variable trim_hemi_scan(string nickname, variable theta_max)</div><div class="ttdoc">trim a hemispherical scan at grazing angle </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l03034">pearl-anglescan-process.ipf:3034</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_ac15ebd5a19c558dde666ab36aeb9906f"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#ac15ebd5a19c558dde666ab36aeb9906f">prepare_hemi_scan_display</a></div><div class="ttdeci">string prepare_hemi_scan_display(string nickname, variable projection=defaultValue)</div><div class="ttdoc">create waves for plotting a hemispherical angle scan. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l01702">pearl-anglescan-process.ipf:1702</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a229770447193d4fd12032b235aab4d28"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a229770447193d4fd12032b235aab4d28">pizza_service_2</a></div><div class="ttdeci">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)</div><div class="ttdoc">create a pizza plot from a measured (energy-integrated) data strip </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l00862">pearl-anglescan-process.ipf:862</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_acf6fddb73624fe2d21429e38c4994088"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#acf6fddb73624fe2d21429e38c4994088">AngleToK</a></div><div class="ttdeci">variable AngleToK(wave inwave)</div><div class="ttdoc">k-space mapping of 2D angle-energy distribution (scienta image) </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l03332">pearl-anglescan-process.ipf:3332</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_aa5487fdee22e0da61a511c14239262f5"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#aa5487fdee22e0da61a511c14239262f5">kProjScaleOrtho</a></div><div class="ttdeci">static const variable kProjScaleOrtho</div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02279">pearl-anglescan-process.ipf:2279</a></div></div>
|
|
<div class="ttc" id="pearl-polar-coordinates_8ipf_html_a6a0ffb6b9160413d9694b1fd8e10c858"><div class="ttname"><a href="pearl-polar-coordinates_8ipf.html#a6a0ffb6b9160413d9694b1fd8e10c858">polar2cart_wave</a></div><div class="ttdeci">variable polar2cart_wave(wave in, wave out)</div><div class="ttdef"><b>Definition:</b> <a href="pearl-polar-coordinates_8ipf_source.html#l00058">pearl-polar-coordinates.ipf:58</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a9b56897bd92d926d65f4c67bef1d41bb"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a9b56897bd92d926d65f4c67bef1d41bb">normalize_strip_theta</a></div><div class="ttdeci">variable normalize_strip_theta(wave strip, wave theta, variable theta_offset=defaultValue, variable smooth_method=defaultValue, variable smooth_factor=defaultValue, variable check=defaultValue)</div><div class="ttdoc">divide the strip by the average polar distribution. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l00366">pearl-anglescan-process.ipf:366</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_ac617c3b400488b656493af8ca08f1791"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#ac617c3b400488b656493af8ca08f1791">normalize_strip_2d</a></div><div class="ttdeci">variable normalize_strip_2d(wave strip, wave theta, variable theta_offset=defaultValue, variable smooth_method=defaultValue, variable smooth_factor=defaultValue, variable check=defaultValue)</div><div class="ttdoc">divide the strip by a two-dimensional normalization function. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l00613">pearl-anglescan-process.ipf:613</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_ab65d25af7476ed18f7bf7359614a912b"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#ab65d25af7476ed18f7bf7359614a912b">crop_strip</a></div><div class="ttdeci">variable crop_strip(wave strip, variable xlo, variable xhi)</div><div class="ttdoc">crop a strip at the sides. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l00673">pearl-anglescan-process.ipf:673</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a4a40c73c0e03545e0050ea370e9c57d3"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a4a40c73c0e03545e0050ea370e9c57d3">kProjGnom</a></div><div class="ttdeci">const variable kProjGnom</div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02271">pearl-anglescan-process.ipf:2271</a></div></div>
|
|
<div class="ttc" id="pearl-area-profiles_8ipf_html_abb1eed32a982037ebab00f5c3ea95e62"><div class="ttname"><a href="pearl-area-profiles_8ipf.html#abb1eed32a982037ebab00f5c3ea95e62">ad_profile_y</a></div><div class="ttdeci">threadsafe wave ad_profile_y(wave dataset, variable p1, variable p2, string destname, variable noavg=defaultValue)</div><div class="ttdoc">1D cut through 2D dataset along Y dimension, new destination wave. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-area-profiles_8ipf_source.html#l00542">pearl-area-profiles.ipf:542</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a902ac3a24e33f651e83ee03d31707da7"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a902ac3a24e33f651e83ee03d31707da7">make_hemi_grid</a></div><div class="ttdeci">variable make_hemi_grid(variable npol, string nickname, variable xpdplot=defaultValue)</div><div class="ttdoc">create a hemispherical, constant solid angle grid </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l01291">pearl-anglescan-process.ipf:1291</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a4952bc53e3d6d272d25b5e35e91696b5"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a4952bc53e3d6d272d25b5e35e91696b5">hemi_add_anglescan</a></div><div class="ttdeci">variable hemi_add_anglescan(string nickname, wave values, wave polar, wave azi, wave weights=defaultValue)</div><div class="ttdoc">add an arbitrary angle scan to a hemispherical scan grid. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02538">pearl-anglescan-process.ipf:2538</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a987811346894d8d81fc590b2f5ccec49"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a987811346894d8d81fc590b2f5ccec49">get_hemi_nickname</a></div><div class="ttdeci">string get_hemi_nickname(wave w)</div><div class="ttdoc">finds the nick name given any hemi wave </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l01442">pearl-anglescan-process.ipf:1442</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a1442bc23122d52ba9c77e0f9baaad1da"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a1442bc23122d52ba9c77e0f9baaad1da">get_hemi_prefix</a></div><div class="ttdeci">string get_hemi_prefix(wave w)</div><div class="ttdoc">finds the prefix given any hemi wave </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l01467">pearl-anglescan-process.ipf:1467</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_ae57302acfc822c4817f2b7eef55efea2"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#ae57302acfc822c4817f2b7eef55efea2">display_hemi_scan</a></div><div class="ttdeci">string display_hemi_scan(string nickname, variable projection=defaultValue, variable graphtype=defaultValue, variable do_ticks=defaultValue, variable do_grids=defaultValue, string graphname=defaultValue)</div><div class="ttdoc">display a plot of a hemispherical angle scan. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l01784">pearl-anglescan-process.ipf:1784</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_ac0def1ded61f9cd758df0c99f4ff9470"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#ac0def1ded61f9cd758df0c99f4ff9470">CalcN_Theta</a></div><div class="ttdeci">static variable CalcN_Theta(string HoloMode, variable Theta_in, variable Theta_ran, variable Theta_st)</div><div class="ttdoc">calculate the number of thetas for a pattern </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l01253">pearl-anglescan-process.ipf:1253</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_aa26c9ed4c4d703e07788d980edc2406d"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#aa26c9ed4c4d703e07788d980edc2406d">find_hemi_data</a></div><div class="ttdeci">dfr find_hemi_data(string nickname, string *prefix, string *intwave)</div><div class="ttdoc">finds the folder, prefix and name of holo waves given their nick name </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l01498">pearl-anglescan-process.ipf:1498</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a2b38c6c9b6e60593ba69d3773b6bc779"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a2b38c6c9b6e60593ba69d3773b6bc779">convert_angles_ttpd2polar</a></div><div class="ttdeci">variable convert_angles_ttpd2polar(wave theta, wave tilt, wave phi, wave data, wave polar, wave azi)</div><div class="ttdoc">convert angles from TTPA (theta-tilt-phi-analyser) scheme to polar coordinates. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l01049">pearl-anglescan-process.ipf:1049</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a3ec6935a5903d0974c93a2072d743013"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a3ec6935a5903d0974c93a2072d743013">clear_hemi_grid</a></div><div class="ttdeci">variable clear_hemi_grid(string nickname)</div><div class="ttdoc">clear a hemispherical scan grid </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l01532">pearl-anglescan-process.ipf:1532</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a04e75675884236b6ed8244d7575d3a13"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a04e75675884236b6ed8244d7575d3a13">kProjScaleDist</a></div><div class="ttdeci">static const variable kProjScaleDist</div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02274">pearl-anglescan-process.ipf:2274</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_ae2b036a06ffac8d2bb292a65401f8a9a"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#ae2b036a06ffac8d2bb292a65401f8a9a">calc_graph_polar</a></div><div class="ttdeci">threadsafe variable calc_graph_polar(variable x, variable y, variable projection=defaultValue)</div><div class="ttdoc">calculate polar angle from Cartesian coordinate </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02340">pearl-anglescan-process.ipf:2340</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a2e1ed05781f9eb4be5e77695ef049962"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a2e1ed05781f9eb4be5e77695ef049962">check_contrast</a></div><div class="ttdeci">static variable check_contrast(wave values, variable pcmin, variable pcmax, variable *vmin, variable *vmax)</div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l03212">pearl-anglescan-process.ipf:3212</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a1fb6aa7870dfbf0ed92660b7aae579e0"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a1fb6aa7870dfbf0ed92660b7aae579e0">Calc_The_step</a></div><div class="ttdeci">static variable Calc_The_step(variable th, variable Theta_st, string Holomode)</div><div class="ttdoc">calculate delta-theta for a given theta </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l01222">pearl-anglescan-process.ipf:1222</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a207c56ac03cc18bf1bfde88dbfe2666f"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a207c56ac03cc18bf1bfde88dbfe2666f">kProjArea</a></div><div class="ttdeci">const variable kProjArea</div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02270">pearl-anglescan-process.ipf:2270</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_aa54a550eccad2c8ccd82d2b4167f7a92"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#aa54a550eccad2c8ccd82d2b4167f7a92">line_average</a></div><div class="ttdeci">static variable line_average(wave source, wave dest)</div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l01131">pearl-anglescan-process.ipf:1131</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a75219b38ea58012abcffc848d536faa4"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a75219b38ea58012abcffc848d536faa4">calc_graph_radius</a></div><div class="ttdeci">threadsafe variable calc_graph_radius(variable polar, variable projection=defaultValue)</div><div class="ttdoc">calculate the projected polar angle </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02295">pearl-anglescan-process.ipf:2295</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_afed227ae79873fd32c96afbf606d1965"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#afed227ae79873fd32c96afbf606d1965">pizza_service</a></div><div class="ttdeci">variable pizza_service(wave data, string nickname, variable theta_offset, variable tilt_offset, variable phi_offset, variable npolar=defaultValue, variable nograph=defaultValue, variable folding=defaultValue, variable xpdplot=defaultValue)</div><div class="ttdoc">create a pizza plot from a measured (energy-integrated) data strip </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l00769">pearl-anglescan-process.ipf:769</a></div></div>
|
|
<div class="ttc" id="pearl-vector-operations_8ipf_html_ada80428496dc748b960bd9c65df7da8b"><div class="ttname"><a href="pearl-vector-operations_8ipf.html#ada80428496dc748b960bd9c65df7da8b">rotate_x_wave</a></div><div class="ttdeci">variable rotate_x_wave(wave inout, variable angle)</div><div class="ttdoc">rotate a wave of 3-vectors about the x axis. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-vector-operations_8ipf_source.html#l00175">pearl-vector-operations.ipf:175</a></div></div>
|
|
<div class="ttc" id="pearl-polar-coordinates_8ipf_html_adfc1f0b3cddf672b0ccdb6a22b97ba9e"><div class="ttname"><a href="pearl-polar-coordinates_8ipf.html#adfc1f0b3cddf672b0ccdb6a22b97ba9e">cart2polar_wave</a></div><div class="ttdeci">variable cart2polar_wave(wave in, wave out)</div><div class="ttdef"><b>Definition:</b> <a href="pearl-polar-coordinates_8ipf_source.html#l00036">pearl-polar-coordinates.ipf:36</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_aa79c0ff6073bd42e202b9fa3f8c00b9f"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#aa79c0ff6073bd42e202b9fa3f8c00b9f">crop_strip_theta</a></div><div class="ttdeci">variable crop_strip_theta(wave strip, variable theta_lo, variable theta_hi, wave theta, wave tilt, wave phi)</div><div class="ttdoc">crop a strip in theta. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l00705">pearl-anglescan-process.ipf:705</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-tracker_8ipf_html_a4c7a521b8f1a0769c09bfa4a1fca7dab"><div class="ttname"><a href="pearl-anglescan-tracker_8ipf.html#a4c7a521b8f1a0769c09bfa4a1fca7dab">version</a></div><div class="ttdeci">version</div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-tracker_8ipf_source.html#l00005">pearl-anglescan-tracker.ipf:5</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a1f4f74a8ae557c56e1e3aacd0b45f3f1"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a1f4f74a8ae557c56e1e3aacd0b45f3f1">display_scanlines</a></div><div class="ttdeci">string display_scanlines(string nickname, variable alpha_lo, variable alpha_hi, wave m_theta, wave m_tilt, wave m_phi, variable folding=defaultValue, variable projection=defaultValue)</div><div class="ttdoc">display a polar graph with lines indicating the angles covered by an angle scan. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02180">pearl-anglescan-process.ipf:2180</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_ab6ac1268de338040028dca8d0ddc967c"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#ab6ac1268de338040028dca8d0ddc967c">hemi_azi_cut</a></div><div class="ttdeci">wave hemi_azi_cut(string nickname, variable pol)</div><div class="ttdoc">extract an azimuthal cut from a hemispherical scan </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l03159">pearl-anglescan-process.ipf:3159</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_afedad38a418cee5d1fb9e08aae2160a0"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#afedad38a418cee5d1fb9e08aae2160a0">draw_diffraction_cone</a></div><div class="ttdeci">variable draw_diffraction_cone(string graphname, string groupname, variable theta_axis, variable theta_inner, variable phi)</div><div class="ttdoc">draw the circle of a diffraction cone in a stereographic polar graph. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02116">pearl-anglescan-process.ipf:2116</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_acca0130cccf2286863bbf5b7f91c5b3b"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#acca0130cccf2286863bbf5b7f91c5b3b">interpolate_hemi_scan</a></div><div class="ttdeci">variable interpolate_hemi_scan(string nickname, variable projection=defaultValue)</div><div class="ttdoc">interpolate a hemispherical scan onto a rectangular grid </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02726">pearl-anglescan-process.ipf:2726</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a992920d621023e6b483ff51eee68b508"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a992920d621023e6b483ff51eee68b508">normalize_strip_theta_scans</a></div><div class="ttdeci">variable normalize_strip_theta_scans(wave strip, wave theta, variable theta_offset=defaultValue, variable smooth_method=defaultValue, variable smooth_factor=defaultValue, variable check=defaultValue)</div><div class="ttdoc">divide the strip piecewise by a smooth polar distribution. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l00523">pearl-anglescan-process.ipf:523</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a4641c716180d737700c6df87f5f8974e"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a4641c716180d737700c6df87f5f8974e">hemi_add_aziscan</a></div><div class="ttdeci">variable hemi_add_aziscan(string nickname, wave values, variable polar, wave azi, wave weights=defaultValue)</div><div class="ttdoc">add an azimuthal scan to a hemispherical scan grid. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02608">pearl-anglescan-process.ipf:2608</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_ab6670abb621d01994c0b9974f58be843"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#ab6670abb621d01994c0b9974f58be843">kProjScaleGnom</a></div><div class="ttdeci">static const variable kProjScaleGnom</div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02278">pearl-anglescan-process.ipf:2278</a></div></div>
|
|
<div class="ttc" id="pearl-vector-operations_8ipf_html_adfd1d68e739694982fbd00b76568c1c0"><div class="ttname"><a href="pearl-vector-operations_8ipf.html#adfd1d68e739694982fbd00b76568c1c0">rotate_y_wave</a></div><div class="ttdeci">variable rotate_y_wave(wave inout, variable angle)</div><div class="ttdoc">rotates a wave of 3-vectors about the y axis </div><div class="ttdef"><b>Definition:</b> <a href="pearl-vector-operations_8ipf_source.html#l00203">pearl-vector-operations.ipf:203</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a5162488b366e217195d8f8bd7cdde0ce"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a5162488b366e217195d8f8bd7cdde0ce">rotate_hemi_scan</a></div><div class="ttdeci">variable rotate_hemi_scan(string nickname, variable angle)</div><div class="ttdoc">azimuthally rotate a hemispherical scan dataset. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l01654">pearl-anglescan-process.ipf:1654</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_aed66bda9701d8a69b2174fac974aa665"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#aed66bda9701d8a69b2174fac974aa665">kProjScaleStereo</a></div><div class="ttdeci">static const variable kProjScaleStereo</div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02275">pearl-anglescan-process.ipf:2275</a></div></div>
|
|
<div class="ttc" id="namespace_pearl_anglescan_process_html"><div class="ttname"><a href="namespace_pearl_anglescan_process.html">PearlAnglescanProcess</a></div><div class="ttdoc">processing and holographic mapping of angle scanned XPD data. </div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a46fd99d35a43601c39af6096d4e4f770"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a46fd99d35a43601c39af6096d4e4f770">display_polar_graph</a></div><div class="ttdeci">static string display_polar_graph(string graphname, variable angle_offset=defaultValue, variable do_ticks=defaultValue)</div><div class="ttdoc">displays an empty polar graph </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l01929">pearl-anglescan-process.ipf:1929</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a3b3bd11c35d5f850b34937ab6c45f659"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a3b3bd11c35d5f850b34937ab6c45f659">kProjOrtho</a></div><div class="ttdeci">const variable kProjOrtho</div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02272">pearl-anglescan-process.ipf:2272</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a48cbd596656bc6d849c53afb4c58b90d"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a48cbd596656bc6d849c53afb4c58b90d">save_hemi_scan</a></div><div class="ttdeci">variable save_hemi_scan(string nickname, string pathname, string filename)</div><div class="ttdoc">save a hemispherical scan to an Igor text file </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02903">pearl-anglescan-process.ipf:2903</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_aaa734fddecdd75c7cabe20ba777b41b9"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#aaa734fddecdd75c7cabe20ba777b41b9">normalize_strip_phi</a></div><div class="ttdeci">variable normalize_strip_phi(wave strip, wave theta, wave phi, variable theta_offset=defaultValue, variable theta_range=defaultValue, variable check=defaultValue)</div><div class="ttdoc">divide the strip by a sine function in phi (wobble correction). </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l00283">pearl-anglescan-process.ipf:283</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_ad0a93367d2e9b66bb7b81697e87adfaf"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#ad0a93367d2e9b66bb7b81697e87adfaf">normalize_strip_thetaphi</a></div><div class="ttdeci">variable normalize_strip_thetaphi(wave strip, wave theta, wave phi, variable theta_offset=defaultValue, variable smooth_method=defaultValue, variable smooth_factor=defaultValue, variable check=defaultValue)</div><div class="ttdoc">divide the strip by a smooth polar-azimuthal distribution. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l00464">pearl-anglescan-process.ipf:464</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_ac151c6f989d6a568fdef0acb791f84db"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#ac151c6f989d6a568fdef0acb791f84db">kProjStereo</a></div><div class="ttdeci">const variable kProjStereo</div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02269">pearl-anglescan-process.ipf:2269</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a0b9e2b025e1d55d2a064edccf6c1c3e3"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a0b9e2b025e1d55d2a064edccf6c1c3e3">quick_pizza_image</a></div><div class="ttdeci">variable quick_pizza_image(wave data, string nickname, variable theta_offset, variable tilt_offset, variable phi_offset, variable npolar=defaultValue, variable nograph=defaultValue, variable folding=defaultValue)</div><div class="ttdoc">map angle scan data onto a rectangular grid in stereographic projection </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02792">pearl-anglescan-process.ipf:2792</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_ac4dbd1ece37b2cf22fa976a153977288"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#ac4dbd1ece37b2cf22fa976a153977288">polar_graph_hook</a></div><div class="ttdeci">static variable polar_graph_hook(WMWinHookStruct *s)</div><div class="ttdoc">polar graph window hook </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02473">pearl-anglescan-process.ipf:2473</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_aae45cc49d67f79dcedc4420f82acea4c"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#aae45cc49d67f79dcedc4420f82acea4c">kProjDist</a></div><div class="ttdeci">const variable kProjDist</div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02268">pearl-anglescan-process.ipf:2268</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a4fc744e24e3e9c5efb17f14ab622bcae"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a4fc744e24e3e9c5efb17f14ab622bcae">calc_graph_azi</a></div><div class="ttdeci">threadsafe variable calc_graph_azi(variable x, variable y, variable projection=defaultValue, variable zeroAngle=defaultValue)</div><div class="ttdoc">calculate azimuthal angle from Cartesian coordinate </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02393">pearl-anglescan-process.ipf:2393</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a666dab03bb2e97ffef81cea450184d42"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a666dab03bb2e97ffef81cea450184d42">set_contrast</a></div><div class="ttdeci">variable set_contrast(variable pcmin, variable pcmax, string graphname=defaultValue, string colortable=defaultValue)</div><div class="ttdoc">set the pseudocolor contrast by percentile. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l03247">pearl-anglescan-process.ipf:3247</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a13e0d37ae23f68cdc5da3d84cb4beed8"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a13e0d37ae23f68cdc5da3d84cb4beed8">strip_delete_frames</a></div><div class="ttdeci">variable strip_delete_frames(wave strip, variable qlo, variable qhi, wave theta, wave tilt, wave phi)</div><div class="ttdoc">delete a contiguous range of frames from a strip. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l00105">pearl-anglescan-process.ipf:105</a></div></div>
|
|
<div class="ttc" id="pearl-vector-operations_8ipf_html_a0030e927980581d57781ad391f2d872a"><div class="ttname"><a href="pearl-vector-operations_8ipf.html#a0030e927980581d57781ad391f2d872a">rotate_z_wave</a></div><div class="ttdeci">variable rotate_z_wave(wave inout, variable angle)</div><div class="ttdoc">rotates a wave of 3-vectors about the z axis </div><div class="ttdef"><b>Definition:</b> <a href="pearl-vector-operations_8ipf_source.html#l00231">pearl-vector-operations.ipf:231</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a9624070f3e938378631432430d47a389"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a9624070f3e938378631432430d47a389">calc_nth</a></div><div class="ttdeci">static variable calc_nth(variable Theta_st, variable Theta_in, variable th, variable Phi_ran, variable Phi_ref, string Holomode)</div><div class="ttdoc">calculate the number of phis for a given theta </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l01149">pearl-anglescan-process.ipf:1149</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_afa14187803f5b428a96c8234e04ab217"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#afa14187803f5b428a96c8234e04ab217">kProjScaleArea</a></div><div class="ttdeci">static const variable kProjScaleArea</div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02276">pearl-anglescan-process.ipf:2276</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a01bac9e7d4ba743c3c34177a05070466"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a01bac9e7d4ba743c3c34177a05070466">show_analyser_line</a></div><div class="ttdeci">variable show_analyser_line(variable theta, variable tilt, variable phi, variable theta_offset, variable tilt_offset, variable phi_offset, variable npolar=defaultValue, variable nograph=defaultValue, variable xpdplot=defaultValue)</div><div class="ttdoc">calculate and display the line seen by the analyser for a specific emission angle ...</div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l00979">pearl-anglescan-process.ipf:979</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a3cc7eddf5c6b0658260cfb32dd2c026d"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a3cc7eddf5c6b0658260cfb32dd2c026d">convert_angles_ttpa2polar</a></div><div class="ttdeci">variable convert_angles_ttpa2polar(wave theta, wave tilt, wave phi, wave analyser, wave polar, wave azi)</div><div class="ttdoc">convert angles from TTPA (theta-tilt-phi-analyser) scheme to polar coordinates. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l01088">pearl-anglescan-process.ipf:1088</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_af00d9061e410ad033a9fd1f0ca561e0d"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#af00d9061e410ad033a9fd1f0ca561e0d">draw_hemi_axes</a></div><div class="ttdeci">static string draw_hemi_axes(string graphname, variable do_grids=defaultValue)</div><div class="ttdoc">draw polar and azimuthal grids in an existing polar graph. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02044">pearl-anglescan-process.ipf:2044</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_aa5b1e2ab1dd43a73b7157406b803887e"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#aa5b1e2ab1dd43a73b7157406b803887e">duplicate_hemi_scan</a></div><div class="ttdeci">variable duplicate_hemi_scan(string source_nickname, dfref dest_folder, string dest_nickname, variable xpdplot=defaultValue)</div><div class="ttdoc">duplicate a hemispherical scan dataset. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l01579">pearl-anglescan-process.ipf:1579</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a70b0e243bcbd549e2b1da74aab605629"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a70b0e243bcbd549e2b1da74aab605629">set_polar_graph_cursor</a></div><div class="ttdeci">variable set_polar_graph_cursor(string nickname, string cursorname, variable polar_angle, variable azim_angle, string graphname=defaultValue)</div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02493">pearl-anglescan-process.ipf:2493</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a1baaa3ffd9495ed427b43cbfe6e1edf8"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a1baaa3ffd9495ed427b43cbfe6e1edf8">update_polar_info</a></div><div class="ttdeci">static variable update_polar_info(string graphname)</div><div class="ttdoc">update the angles info based on cursors A and B of a given polar graph window </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02438">pearl-anglescan-process.ipf:2438</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a5265fd61f86eb72dd877e4190bfb4adf"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a5265fd61f86eb72dd877e4190bfb4adf">import_tpi_scan</a></div><div class="ttdeci">variable import_tpi_scan(string nickname, wave theta, wave phi, wave intensity, variable folding=defaultValue, variable npolar=defaultValue, variable nograph=defaultValue, variable xpdplot=defaultValue)</div><div class="ttdoc">import a hemispherical scan from theta-phi-intensity waves and display it </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02985">pearl-anglescan-process.ipf:2985</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a89f73edcd51a675f4c3933cd0242484e"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a89f73edcd51a675f4c3933cd0242484e">load_hemi_scan</a></div><div class="ttdeci">variable load_hemi_scan(string nickname, string pathname, string filename)</div><div class="ttdoc">load a hemispherical scan from an Igor text file </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l02936">pearl-anglescan-process.ipf:2936</a></div></div>
|
|
<div class="ttc" id="pearl-area-profiles_8ipf_html_ab1a65cf82f6933db3dd7b564582e8ed1"><div class="ttname"><a href="pearl-area-profiles_8ipf.html#ab1a65cf82f6933db3dd7b564582e8ed1">ad_profile_x</a></div><div class="ttdeci">threadsafe wave ad_profile_x(wave dataset, variable q1, variable q2, string destname, variable noavg=defaultValue)</div><div class="ttdoc">1D cut through 2D dataset along X dimension, new destination wave. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-area-profiles_8ipf_source.html#l00480">pearl-area-profiles.ipf:480</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a999a9cd7d00d3e1ec8e768228a664ad1"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a999a9cd7d00d3e1ec8e768228a664ad1">calc_phi_step</a></div><div class="ttdeci">static variable calc_phi_step(variable Theta_in, variable th, variable Theta_st, variable Phi_ran, variable Phi_ref, string Holomode)</div><div class="ttdoc">calculate delta-phi for a given theta </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l01178">pearl-anglescan-process.ipf:1178</a></div></div>
|
|
<div class="ttc" id="pearl-anglescan-process_8ipf_html_a48b7d774ed8d3f4329e9923e18e580e8"><div class="ttname"><a href="pearl-anglescan-process_8ipf.html#a48b7d774ed8d3f4329e9923e18e580e8">normalize_strip_x</a></div><div class="ttdeci">variable normalize_strip_x(wave strip, variable smooth_method=defaultValue, variable smooth_factor=defaultValue, variable check=defaultValue)</div><div class="ttdoc">divide the strip by the average X distribution. </div><div class="ttdef"><b>Definition:</b> <a href="pearl-anglescan-process_8ipf_source.html#l00187">pearl-anglescan-process.ipf:187</a></div></div>
|
|
</div><!-- fragment --></div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="dir_fe5dc42579d4b99403482a3a637d9f7d.html">pearl</a></li><li class="navelem"><a class="el" href="pearl-anglescan-process_8ipf.html">pearl-anglescan-process.ipf</a></li>
|
|
<li class="footer">Generated on Tue Jun 16 2020 14:32:36 for PEARL Procedures by
|
|
<a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|