328 lines
22 KiB
HTML
328 lines
22 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
|
<meta name="generator" content="Doxygen 1.13.2"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>musrfit: PUserFcn Class Reference</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>
|
|
<script type="text/javascript" src="clipboard.js"></script>
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="navtreedata.js"></script>
|
|
<script type="text/javascript" src="navtree.js"></script>
|
|
<script type="text/javascript" src="resize.js"></script>
|
|
<script type="text/javascript" src="cookie.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 id="projectrow">
|
|
<td id="projectalign">
|
|
<div id="projectname">musrfit<span id="projectnumber"> 1.9.9</span>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.13.2 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function() { codefold.init(0); });
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|
<script type="text/javascript" src="menu.js"></script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function() {
|
|
initMenu('',false,false,'search.php','Search',true);
|
|
});
|
|
/* @license-end */
|
|
</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">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function(){initNavTree('classPUserFcn.html',''); initResizable(true); });
|
|
/* @license-end */
|
|
</script>
|
|
<div id="doc-content">
|
|
<div class="header">
|
|
<div class="summary">
|
|
<a href="#pub-methods">Public Member Functions</a> |
|
|
<a href="classPUserFcn-members.html">List of all members</a> </div>
|
|
<div class="headertitle"><div class="title">PUserFcn Class Reference</div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p>Example user function implementing a third-order polynomial.
|
|
<a href="#details">More...</a></p>
|
|
|
|
<p><code>#include <<a class="el" href="PUserFcn_8h_source.html">PUserFcn.h</a>></code></p>
|
|
<div class="dynheader">
|
|
Inheritance diagram for PUserFcn:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="classPUserFcn__inherit__graph.png" border="0" usemap="#aPUserFcn_inherit__map" alt="Inheritance graph"/></div>
|
|
<map name="aPUserFcn_inherit__map" id="aPUserFcn_inherit__map">
|
|
<area shape="rect" title="Example user function implementing a third-order polynomial." alt="" coords="19,157,98,184"/>
|
|
<area shape="rect" href="classPUserFcnBase.html" title="Abstract base class for user-defined theory functions in musrfit." alt="" coords="5,81,112,109"/>
|
|
<area shape="poly" title=" " alt="" coords="61,124,61,156,56,156,56,124"/>
|
|
<area shape="rect" title=" " alt="" coords="24,5,93,33"/>
|
|
<area shape="poly" title=" " alt="" coords="61,49,61,81,56,81,56,49"/>
|
|
</map>
|
|
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
|
<div class="dynheader">
|
|
Collaboration diagram for PUserFcn:</div>
|
|
<div class="dyncontent">
|
|
<div class="center"><img src="classPUserFcn__coll__graph.png" border="0" usemap="#aPUserFcn_coll__map" alt="Collaboration graph"/></div>
|
|
<map name="aPUserFcn_coll__map" id="aPUserFcn_coll__map">
|
|
<area shape="rect" title="Example user function implementing a third-order polynomial." alt="" coords="19,157,98,184"/>
|
|
<area shape="rect" href="classPUserFcnBase.html" title="Abstract base class for user-defined theory functions in musrfit." alt="" coords="5,81,112,109"/>
|
|
<area shape="poly" title=" " alt="" coords="61,124,61,156,56,156,56,124"/>
|
|
<area shape="rect" title=" " alt="" coords="24,5,93,33"/>
|
|
<area shape="poly" title=" " alt="" coords="61,49,61,81,56,81,56,49"/>
|
|
</map>
|
|
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
|
|
<table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
|
Public Member Functions</h2></td></tr>
|
|
<tr class="memitem:a190ab0946ef746367f0483ccfd3007e2" id="r_a190ab0946ef746367f0483ccfd3007e2"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a190ab0946ef746367f0483ccfd3007e2">PUserFcn</a> ()</td></tr>
|
|
<tr class="memdesc:a190ab0946ef746367f0483ccfd3007e2"><td class="mdescLeft"> </td><td class="mdescRight">Default constructor. <br /></td></tr>
|
|
<tr class="separator:a190ab0946ef746367f0483ccfd3007e2"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:accf0b478e7424a032c63b2741da2b72c" id="r_accf0b478e7424a032c63b2741da2b72c"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="#accf0b478e7424a032c63b2741da2b72c">~PUserFcn</a> ()</td></tr>
|
|
<tr class="memdesc:accf0b478e7424a032c63b2741da2b72c"><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <br /></td></tr>
|
|
<tr class="separator:accf0b478e7424a032c63b2741da2b72c"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a7f9e951bb3f7f2ba2d196aeb3ebfe8bc" id="r_a7f9e951bb3f7f2ba2d196aeb3ebfe8bc"><td class="memItemLeft" align="right" valign="top">Double_t </td><td class="memItemRight" valign="bottom"><a class="el" href="#a7f9e951bb3f7f2ba2d196aeb3ebfe8bc">operator()</a> (Double_t t, const std::vector< Double_t > &param) const</td></tr>
|
|
<tr class="memdesc:a7f9e951bb3f7f2ba2d196aeb3ebfe8bc"><td class="mdescLeft"> </td><td class="mdescRight">Evaluates the third-order polynomial at time t. <br /></td></tr>
|
|
<tr class="separator:a7f9e951bb3f7f2ba2d196aeb3ebfe8bc"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="inherit_header pub_methods_classPUserFcnBase"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classPUserFcnBase')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classPUserFcnBase.html">PUserFcnBase</a></td></tr>
|
|
<tr class="memitem:a683bbaba8ed0507b3a302294e00f07ec inherit pub_methods_classPUserFcnBase" id="r_a683bbaba8ed0507b3a302294e00f07ec"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classPUserFcnBase.html#a683bbaba8ed0507b3a302294e00f07ec">PUserFcnBase</a> ()</td></tr>
|
|
<tr class="memdesc:a683bbaba8ed0507b3a302294e00f07ec inherit pub_methods_classPUserFcnBase"><td class="mdescLeft"> </td><td class="mdescRight">Default constructor. <br /></td></tr>
|
|
<tr class="separator:a683bbaba8ed0507b3a302294e00f07ec inherit pub_methods_classPUserFcnBase"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a050de32799f0994ec6282154a9b053ee inherit pub_methods_classPUserFcnBase" id="r_a050de32799f0994ec6282154a9b053ee"><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classPUserFcnBase.html#a050de32799f0994ec6282154a9b053ee">~PUserFcnBase</a> ()</td></tr>
|
|
<tr class="memdesc:a050de32799f0994ec6282154a9b053ee inherit pub_methods_classPUserFcnBase"><td class="mdescLeft"> </td><td class="mdescRight">Virtual destructor. <br /></td></tr>
|
|
<tr class="separator:a050de32799f0994ec6282154a9b053ee inherit pub_methods_classPUserFcnBase"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a06dda4e4cc923a56cfadafa1bb43a8cc inherit pub_methods_classPUserFcnBase" id="r_a06dda4e4cc923a56cfadafa1bb43a8cc"><td class="memItemLeft" align="right" valign="top">virtual Bool_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classPUserFcnBase.html#a06dda4e4cc923a56cfadafa1bb43a8cc">NeedGlobalPart</a> () const</td></tr>
|
|
<tr class="separator:a06dda4e4cc923a56cfadafa1bb43a8cc inherit pub_methods_classPUserFcnBase"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:abae008b6b6799ded0825ac6befb2283b inherit pub_methods_classPUserFcnBase" id="r_abae008b6b6799ded0825ac6befb2283b"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classPUserFcnBase.html#abae008b6b6799ded0825ac6befb2283b">SetGlobalPart</a> (std::vector< void * > &globalPart, UInt_t idx)</td></tr>
|
|
<tr class="separator:abae008b6b6799ded0825ac6befb2283b inherit pub_methods_classPUserFcnBase"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:a47d9ca334bc6c15193c7e0c0143e2bc6 inherit pub_methods_classPUserFcnBase" id="r_a47d9ca334bc6c15193c7e0c0143e2bc6"><td class="memItemLeft" align="right" valign="top">virtual Bool_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classPUserFcnBase.html#a47d9ca334bc6c15193c7e0c0143e2bc6">GlobalPartIsValid</a> () const</td></tr>
|
|
<tr class="separator:a47d9ca334bc6c15193c7e0c0143e2bc6 inherit pub_methods_classPUserFcnBase"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
<div class="textblock"><p>Example user function implementing a third-order polynomial. </p>
|
|
<p><a class="el" href="classPUserFcn.html" title="Example user function implementing a third-order polynomial.">PUserFcn</a> demonstrates how to create custom theory functions by deriving from <a class="el" href="classPUserFcnBase.html" title="Abstract base class for user-defined theory functions in musrfit.">PUserFcnBase</a>. This example implements a cubic polynomial:</p>
|
|
<p class="formulaDsp">
|
|
<picture><source srcset="form_43_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ P(t) = a_0 + a_1 t + a_2 t^2 + a_3 t^3 \]" src="form_43.png"/></picture>
|
|
</p>
|
|
<p>where <picture><source srcset="form_44_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$a_0, a_1, a_2, a_3$" src="form_44.png"/></picture> are the polynomial coefficients passed as fit parameters.</p>
|
|
<h1><a class="anchor" id="puserfcn_usage"></a>
|
|
Usage in MSR File</h1>
|
|
<p>To use this function in your analysis:</p>
|
|
<div class="fragment"><div class="line">FITPARAMETER</div>
|
|
<div class="line"><span class="preprocessor"># No Name Value Step Pos_Error Boundaries</span></div>
|
|
<div class="line"> 1 a0 1.0 0.1 none</div>
|
|
<div class="line"> 2 a1 0.01 0.001 none</div>
|
|
<div class="line"> 3 a2 0.001 0.0001 none</div>
|
|
<div class="line"> 4 a3 0.0001 0.00001 none</div>
|
|
<div class="line"> </div>
|
|
<div class="line">THEORY</div>
|
|
<div class="line">userFcn libPUserFcn.so <a class="code hl_function" href="#a190ab0946ef746367f0483ccfd3007e2">PUserFcn</a> 1 2 3 4 (a0, a1, a2, a3)</div>
|
|
<div class="ttc" id="aclassPUserFcn_html_a190ab0946ef746367f0483ccfd3007e2"><div class="ttname"><a href="#a190ab0946ef746367f0483ccfd3007e2">PUserFcn::PUserFcn</a></div><div class="ttdeci">PUserFcn()</div><div class="ttdoc">Default constructor.</div></div>
|
|
</div><!-- fragment --><h1><a class="anchor" id="puserfcn_applications"></a>
|
|
Applications</h1>
|
|
<p>Polynomial backgrounds are useful for:</p><ul>
|
|
<li>Modeling baseline drifts in long-time measurements</li>
|
|
<li>Phenomenological fits to slowly varying relaxation</li>
|
|
<li>Testing the user function infrastructure</li>
|
|
</ul>
|
|
<h1><a class="anchor" id="puserfcn_template"></a>
|
|
As a Template</h1>
|
|
<p>This class serves as a minimal working example for creating custom user functions. To create your own:</p>
|
|
<ol type="1">
|
|
<li>Copy <a class="el" href="PUserFcn_8h.html">PUserFcn.h</a> and <a class="el" href="PUserFcn_8cpp.html">PUserFcn.cpp</a></li>
|
|
<li>Rename the class and update the ClassDef/ClassImp macros</li>
|
|
<li>Implement your physics in the operator() method</li>
|
|
<li>Create a LinkDef.h and build as a shared library</li>
|
|
</ol>
|
|
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classPUserFcnBase.html" title="Abstract base class for user-defined theory functions in musrfit.">PUserFcnBase</a> for the abstract interface and detailed implementation guide </dd>
|
|
<dd>
|
|
<a class="el" href="classPTheory.html" title="Theory function evaluator and expression tree manager.">PTheory</a> for how user functions are loaded and evaluated </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PUserFcn_8h_source.html#l00085">85</a> of file <a class="el" href="PUserFcn_8h_source.html">PUserFcn.h</a>.</p>
|
|
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
|
|
<a id="a190ab0946ef746367f0483ccfd3007e2" name="a190ab0946ef746367f0483ccfd3007e2"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a190ab0946ef746367f0483ccfd3007e2">◆ </a></span>PUserFcn()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">PUserFcn::PUserFcn </td>
|
|
<td>(</td>
|
|
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Default constructor. </p>
|
|
|
|
<p class="reference">References <a class="el" href="#a190ab0946ef746367f0483ccfd3007e2">PUserFcn()</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="#a190ab0946ef746367f0483ccfd3007e2">PUserFcn()</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="accf0b478e7424a032c63b2741da2b72c" name="accf0b478e7424a032c63b2741da2b72c"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#accf0b478e7424a032c63b2741da2b72c">◆ </a></span>~PUserFcn()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">PUserFcn::~PUserFcn </td>
|
|
<td>(</td>
|
|
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Destructor. </p>
|
|
<p>Destructor for <a class="el" href="classPUserFcn.html" title="Example user function implementing a third-order polynomial.">PUserFcn</a>.</p>
|
|
<p>Cleans up any resources allocated by the polynomial function. Since this implementation has no dynamically allocated resources, the destructor is empty.</p>
|
|
<dl class="section note"><dt>Note</dt><dd>User functions with allocated resources (lookup tables, buffers, external library handles) must clean them up here to prevent memory leaks. If using the global part interface, ensure proper coordination with gGlobalUserFcn cleanup. </dd></dl>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PUserFcn_8cpp_source.html#l00065">65</a> of file <a class="el" href="PUserFcn_8cpp_source.html">PUserFcn.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Member Function Documentation</h2>
|
|
<a id="a7f9e951bb3f7f2ba2d196aeb3ebfe8bc" name="a7f9e951bb3f7f2ba2d196aeb3ebfe8bc"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a7f9e951bb3f7f2ba2d196aeb3ebfe8bc">◆ </a></span>operator()()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">Double_t PUserFcn::operator() </td>
|
|
<td>(</td>
|
|
<td class="paramtype">Double_t</td> <td class="paramname"><span class="paramname"><em>t</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">const std::vector< Double_t > &</td> <td class="paramname"><span class="paramname"><em>param</em></span> ) const</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel virtual">virtual</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Evaluates the third-order polynomial at time t. </p>
|
|
<p>Evaluates the third-order polynomial at the given time.</p>
|
|
<p>Computes: </p><p class="formulaDsp">
|
|
<picture><source srcset="form_45_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ P(t) = \texttt{param[0]} + \texttt{param[1]} \cdot t
|
|
+ \texttt{param[2]} \cdot t^2 + \texttt{param[3]} \cdot t^3 \]" src="form_45.png"/></picture>
|
|
</p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">t</td><td>Time value (typically in microseconds) </td></tr>
|
|
<tr><td class="paramname">param</td><td>Vector of polynomial coefficients:<ul>
|
|
<li>param[0]: constant term <picture><source srcset="form_46_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$a_0$" src="form_46.png"/></picture></li>
|
|
<li>param[1]: linear coefficient <picture><source srcset="form_47_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$a_1$" src="form_47.png"/></picture> (per μs)</li>
|
|
<li>param[2]: quadratic coefficient <picture><source srcset="form_48_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$a_2$" src="form_48.png"/></picture> (per μs²)</li>
|
|
<li>param[3]: cubic coefficient <picture><source srcset="form_49_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$a_3$" src="form_49.png"/></picture> (per μs³)</li>
|
|
</ul>
|
|
</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>The polynomial value at time t</dd></dl>
|
|
<p>Computes a cubic polynomial of the form:</p>
|
|
<p class="formulaDsp">
|
|
<picture><source srcset="form_188_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ P(t) = c_0 + c_1 t + c_2 t^2 + c_3 t^3 = \sum_{k=0}^{3} c_k t^k \]" src="form_188.png"/></picture>
|
|
</p>
|
|
<p>where the coefficients <picture><source srcset="form_189_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$c_k$" src="form_189.png"/></picture> are provided in the parameter vector.</p>
|
|
<h1><a class="anchor" id="puserfcn_op_example"></a>
|
|
Example MSR Configuration</h1>
|
|
<div class="fragment"><div class="line">FITPARAMETER</div>
|
|
<div class="line"><span class="preprocessor"># No Name Value Step Pos_Error Boundaries</span></div>
|
|
<div class="line"> 1 c0 0.95 0.01 none</div>
|
|
<div class="line"> 2 c1 -0.001 0.0001 none</div>
|
|
<div class="line"> 3 c2 0.00001 0.000001 none</div>
|
|
<div class="line"> 4 c3 0.0 0.0000001 none 0 none (fixed to zero <span class="keywordflow">for</span> quadratic)</div>
|
|
<div class="line"> </div>
|
|
<div class="line">THEORY</div>
|
|
<div class="line">userFcn libPUserFcn.so <a class="code hl_function" href="#a190ab0946ef746367f0483ccfd3007e2">PUserFcn</a> 1 2 3 4</div>
|
|
</div><!-- fragment --><h1><a class="anchor" id="puserfcn_op_notes"></a>
|
|
Implementation Notes</h1>
|
|
<ul>
|
|
<li>Uses direct polynomial evaluation (Horner's method could improve numerical stability for high-precision applications)</li>
|
|
<li>Asserts exactly 4 parameters to catch MSR file configuration errors</li>
|
|
<li>No special handling for negative time values</li>
|
|
</ul>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">t</td><td>Independent variable (time in μs for μSR, or general x-axis value for non-μSR fits) </td></tr>
|
|
<tr><td class="paramname">param</td><td>Vector containing exactly 4 polynomial coefficients:<ul>
|
|
<li>param[0]: <picture><source srcset="form_190_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$c_0$" src="form_190.png"/></picture> - constant term (dimensionless)</li>
|
|
<li>param[1]: <picture><source srcset="form_191_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$c_1$" src="form_191.png"/></picture> - linear coefficient (μs⁻¹)</li>
|
|
<li>param[2]: <picture><source srcset="form_192_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$c_2$" src="form_192.png"/></picture> - quadratic coefficient (μs⁻²)</li>
|
|
<li>param[3]: <picture><source srcset="form_193_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$c_3$" src="form_193.png"/></picture> - cubic coefficient (μs⁻³)</li>
|
|
</ul>
|
|
</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>The polynomial value <picture><source srcset="form_194_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$P(t)$" src="form_194.png"/></picture> at the specified time</dd></dl>
|
|
<dl class="section pre"><dt>Precondition</dt><dd>param.size() == 4 (enforced by assertion)</dd></dl>
|
|
<dl class="section see"><dt>See also</dt><dd>PUserFcnBase::operator() for the virtual interface specification </dd></dl>
|
|
|
|
<p>Implements <a class="el" href="classPUserFcnBase.html#aa0cab47bd997cfc376856ea35879ff6f">PUserFcnBase</a>.</p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="PUserFcn_8cpp_source.html#l00114">114</a> of file <a class="el" href="PUserFcn_8cpp_source.html">PUserFcn.cpp</a>.</p>
|
|
|
|
</div>
|
|
</div>
|
|
<hr/>The documentation for this class was generated from the following files:<ul>
|
|
<li>/workspace/LMU/musrfit/src/include/<a class="el" href="PUserFcn_8h_source.html">PUserFcn.h</a></li>
|
|
<li>/workspace/LMU/musrfit/src/classes/<a class="el" href="PUserFcn_8cpp_source.html">PUserFcn.cpp</a></li>
|
|
</ul>
|
|
</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="classPUserFcn.html">PUserFcn</a></li>
|
|
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|