Files
musrfit/doc/technical/html/classPRunNonMusr.html
Gitea Actions 8a8eac55b7 Deploy site
2025-12-27 12:57:44 +00:00

1419 lines
103 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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: PRunNonMusr 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">&#160;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&amp;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&amp;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&amp;dn=expat.txt MIT */
$(function(){initNavTree('classPRunNonMusr.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classPRunNonMusr-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">PRunNonMusr Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Class for fitting general x-y data sets (non-μSR time series).
<a href="#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="PRunNonMusr_8h_source.html">PRunNonMusr.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for PRunNonMusr:</div>
<div class="dyncontent">
<div class="center"><img src="classPRunNonMusr__inherit__graph.png" border="0" usemap="#aPRunNonMusr_inherit__map" alt="Inheritance graph"/></div>
<map name="aPRunNonMusr_inherit__map" id="aPRunNonMusr_inherit__map">
<area shape="rect" title="Class for fitting general x&#45;y data sets (non&#45;μSR time series)." alt="" coords="5,81,113,109"/>
<area shape="rect" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types." alt="" coords="19,5,99,33"/>
<area shape="poly" title=" " alt="" coords="62,49,62,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 PRunNonMusr:</div>
<div class="dyncontent">
<div class="center"><img src="classPRunNonMusr__coll__graph.png" border="0" usemap="#aPRunNonMusr_coll__map" alt="Collaboration graph"/></div>
<map name="aPRunNonMusr_coll__map" id="aPRunNonMusr_coll__map">
<area shape="rect" title="Class for fitting general x&#45;y data sets (non&#45;μSR time series)." alt="" coords="1100,269,1207,297"/>
<area shape="rect" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types." alt="" coords="875,192,955,220"/>
<area shape="poly" title=" " alt="" coords="971,221,1109,266,1107,271,969,226"/>
<area shape="rect" href="classPMsrHandler.html" title="MSR file parser and manager for the musrfit framework." alt="" coords="313,84,414,112"/>
<area shape="poly" title=" " alt="" coords="429,98,512,104,616,116,728,136,839,165,892,189,890,194,837,170,727,141,615,122,512,110,429,103"/>
<area shape="rect" href="classPRunDataHandler.html" title="Raw data file reader and format converter for μSR data." alt="" coords="578,49,708,77"/>
<area shape="poly" title=" " alt="" coords="428,87,578,68,579,74,429,92"/>
<area shape="rect" href="structPStartupOptions.html" title=" " alt="" coords="21,5,142,33"/>
<area shape="poly" title=" " alt="" coords="158,27,219,39,283,57,337,81,335,86,281,62,218,44,157,32"/>
<area shape="rect" href="classPMsrGlobalBlock.html" title=" " alt="" coords="19,57,144,85"/>
<area shape="poly" title=" " alt="" coords="160,76,313,90,312,96,159,81"/>
<area shape="rect" href="structPMsrFourierStructure.html" title=" " alt="" coords="7,109,156,137"/>
<area shape="poly" title=" " alt="" coords="171,122,281,115,312,109,313,114,282,120,171,127"/>
<area shape="rect" href="structPMsrStatisticStructure.html" title=" " alt="" coords="5,161,158,189"/>
<area shape="poly" title=" " alt="" coords="173,167,227,159,281,144,314,128,342,110,345,115,316,133,283,149,228,164,174,173"/>
<area shape="rect" href="classPMsrRunBlock.html" title=" " alt="" coords="590,165,697,193"/>
<area shape="poly" title=" " alt="" coords="712,183,875,199,874,205,711,188"/>
<area shape="poly" title=" " alt="" coords="724,62,783,72,812,83,840,97,865,118,885,144,910,190,905,193,880,146,861,122,837,101,810,88,781,78,723,67"/>
<area shape="rect" href="structPAny2ManyInfo.html" title=" " alt="" coords="306,12,421,40"/>
<area shape="poly" title=" " alt="" coords="437,33,578,52,578,57,436,38"/>
<area shape="rect" href="classPRunData.html" title=" " alt="" coords="603,217,683,245"/>
<area shape="poly" title=" " alt="" coords="699,230,766,229,838,223,874,215,875,220,839,228,766,234,699,236"/>
<area shape="rect" href="structPMetaData.html" title=" " alt="" coords="600,269,687,297"/>
<area shape="poly" title=" " alt="" coords="702,279,768,271,837,252,869,236,895,218,898,222,871,241,839,257,769,276,703,284"/>
<area shape="rect" href="classPRawRunData.html" title=" " alt="" coords="862,321,968,349"/>
<area shape="poly" title=" " alt="" coords="982,318,1099,292,1100,297,983,323"/>
<area shape="rect" href="classPNonMusrRawRunData.html" title=" " alt="" coords="563,321,723,349"/>
<area shape="poly" title=" " alt="" coords="739,332,862,332,862,338,739,338"/>
<area shape="rect" href="classPRawRunDataVector.html" title=" " alt="" coords="571,373,715,401"/>
<area shape="poly" title=" " alt="" coords="730,374,838,355,868,347,869,352,839,360,731,379"/>
</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:a572cab5a3df38155aacf96b1ec682748" id="r_a572cab5a3df38155aacf96b1ec682748"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a572cab5a3df38155aacf96b1ec682748">PRunNonMusr</a> ()</td></tr>
<tr class="memdesc:a572cab5a3df38155aacf96b1ec682748"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor creating an empty, invalid non-μSR run object. <br /></td></tr>
<tr class="separator:a572cab5a3df38155aacf96b1ec682748"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab22b9935426c534d81354cc9b6188eb5" id="r_ab22b9935426c534d81354cc9b6188eb5"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab22b9935426c534d81354cc9b6188eb5">PRunNonMusr</a> (<a class="el" href="classPMsrHandler.html">PMsrHandler</a> *msrInfo, <a class="el" href="classPRunDataHandler.html">PRunDataHandler</a> *rawData, UInt_t runNo, <a class="el" href="PMusr_8h.html#a3168a2cda2474c28fe329358530331ab">EPMusrHandleTag</a> tag, Bool_t theoAsData)</td></tr>
<tr class="memdesc:ab22b9935426c534d81354cc9b6188eb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main constructor initializing a non-μSR run from MSR file and data. <br /></td></tr>
<tr class="separator:ab22b9935426c534d81354cc9b6188eb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a316d03dff2da6960dceb5547e51f1b6c" id="r_a316d03dff2da6960dceb5547e51f1b6c"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a316d03dff2da6960dceb5547e51f1b6c">~PRunNonMusr</a> ()</td></tr>
<tr class="memdesc:a316d03dff2da6960dceb5547e51f1b6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual destructor (no cleanup needed for this class). <br /></td></tr>
<tr class="separator:a316d03dff2da6960dceb5547e51f1b6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96e6f1a97aa59ec212b7d968cf3ab7ce" id="r_a96e6f1a97aa59ec212b7d968cf3ab7ce"><td class="memItemLeft" align="right" valign="top">virtual Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a96e6f1a97aa59ec212b7d968cf3ab7ce">CalcChiSquare</a> (const std::vector&lt; Double_t &gt; &amp;par)</td></tr>
<tr class="memdesc:a96e6f1a97aa59ec212b7d968cf3ab7ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates χ² between non-μSR data and theory. <br /></td></tr>
<tr class="separator:a96e6f1a97aa59ec212b7d968cf3ab7ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a70dba55e9a1bd168ceb632246034faf8" id="r_a70dba55e9a1bd168ceb632246034faf8"><td class="memItemLeft" align="right" valign="top">virtual Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a70dba55e9a1bd168ceb632246034faf8">CalcChiSquareExpected</a> (const std::vector&lt; Double_t &gt; &amp;par)</td></tr>
<tr class="memdesc:a70dba55e9a1bd168ceb632246034faf8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates expected χ² (NOT IMPLEMENTED for non-μSR). <br /></td></tr>
<tr class="separator:a70dba55e9a1bd168ceb632246034faf8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad165c1dbf84a0bfe727397b580bbbac6" id="r_ad165c1dbf84a0bfe727397b580bbbac6"><td class="memItemLeft" align="right" valign="top">virtual Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad165c1dbf84a0bfe727397b580bbbac6">CalcMaxLikelihood</a> (const std::vector&lt; Double_t &gt; &amp;par)</td></tr>
<tr class="memdesc:ad165c1dbf84a0bfe727397b580bbbac6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates maximum likelihood (NOT IMPLEMENTED for non-μSR). <br /></td></tr>
<tr class="separator:ad165c1dbf84a0bfe727397b580bbbac6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3676fa9e46a168a9c1195d410da6e3a" id="r_aa3676fa9e46a168a9c1195d410da6e3a"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa3676fa9e46a168a9c1195d410da6e3a">CalcTheory</a> ()</td></tr>
<tr class="memdesc:aa3676fa9e46a168a9c1195d410da6e3a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluates theory function (empty implementation for non-μSR). <br /></td></tr>
<tr class="separator:aa3676fa9e46a168a9c1195d410da6e3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a369aea4106aed7e34f3641758f974fb1" id="r_a369aea4106aed7e34f3641758f974fb1"><td class="memItemLeft" align="right" valign="top">virtual UInt_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a369aea4106aed7e34f3641758f974fb1">GetNoOfFitBins</a> ()</td></tr>
<tr class="memdesc:a369aea4106aed7e34f3641758f974fb1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of x-y points within the fit range. <br /></td></tr>
<tr class="separator:a369aea4106aed7e34f3641758f974fb1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f4dd0c479e81de92c3e1f6db9755126" id="r_a7f4dd0c479e81de92c3e1f6db9755126"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7f4dd0c479e81de92c3e1f6db9755126">SetFitRangeBin</a> (const TString fitRange)</td></tr>
<tr class="memdesc:a7f4dd0c479e81de92c3e1f6db9755126"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets fit range in bin units (NOT SUPPORTED for non-μSR). <br /></td></tr>
<tr class="separator:a7f4dd0c479e81de92c3e1f6db9755126"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbead53f0cd23629b4ebbb32eeb95f8f" id="r_abbead53f0cd23629b4ebbb32eeb95f8f"><td class="memItemLeft" align="right" valign="top">virtual UInt_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abbead53f0cd23629b4ebbb32eeb95f8f">GetXIndex</a> ()</td></tr>
<tr class="memdesc:abbead53f0cd23629b4ebbb32eeb95f8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the x-axis column index from MSR file specification. <br /></td></tr>
<tr class="separator:abbead53f0cd23629b4ebbb32eeb95f8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adecf789d1b829fa706cc646fc07d9fce" id="r_adecf789d1b829fa706cc646fc07d9fce"><td class="memItemLeft" align="right" valign="top">virtual UInt_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adecf789d1b829fa706cc646fc07d9fce">GetYIndex</a> ()</td></tr>
<tr class="memdesc:adecf789d1b829fa706cc646fc07d9fce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the y-axis column index from MSR file specification. <br /></td></tr>
<tr class="separator:adecf789d1b829fa706cc646fc07d9fce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classPRunBase"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classPRunBase')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classPRunBase.html">PRunBase</a></td></tr>
<tr class="memitem:ae5fc9bd22de779aff2bbbcbf14b90d42 inherit pub_methods_classPRunBase" id="r_ae5fc9bd22de779aff2bbbcbf14b90d42"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#ae5fc9bd22de779aff2bbbcbf14b90d42">PRunBase</a> ()</td></tr>
<tr class="memdesc:ae5fc9bd22de779aff2bbbcbf14b90d42 inherit pub_methods_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. <br /></td></tr>
<tr class="separator:ae5fc9bd22de779aff2bbbcbf14b90d42 inherit pub_methods_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f9caf361812bebe3f63146878e28b18 inherit pub_methods_classPRunBase" id="r_a3f9caf361812bebe3f63146878e28b18"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#a3f9caf361812bebe3f63146878e28b18">PRunBase</a> (<a class="el" href="classPMsrHandler.html">PMsrHandler</a> *msrInfo, <a class="el" href="classPRunDataHandler.html">PRunDataHandler</a> *rawData, UInt_t runNo, <a class="el" href="PMusr_8h.html#a3168a2cda2474c28fe329358530331ab">EPMusrHandleTag</a> tag)</td></tr>
<tr class="memdesc:a3f9caf361812bebe3f63146878e28b18 inherit pub_methods_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor initializing run from MSR file and raw data. <br /></td></tr>
<tr class="separator:a3f9caf361812bebe3f63146878e28b18 inherit pub_methods_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1048c017a4891ed5ca092377f73fa83a inherit pub_methods_classPRunBase" id="r_a1048c017a4891ed5ca092377f73fa83a"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#a1048c017a4891ed5ca092377f73fa83a">~PRunBase</a> ()</td></tr>
<tr class="memdesc:a1048c017a4891ed5ca092377f73fa83a inherit pub_methods_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual destructor. <br /></td></tr>
<tr class="separator:a1048c017a4891ed5ca092377f73fa83a inherit pub_methods_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59cbd8ad7cb144c99c1dccefa4e200ff inherit pub_methods_classPRunBase" id="r_a59cbd8ad7cb144c99c1dccefa4e200ff"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#a59cbd8ad7cb144c99c1dccefa4e200ff">SetFitRange</a> (<a class="el" href="PMusr_8h.html#a93e3841e16074fd3c7648d8fc7b742f4">PDoublePairVector</a> fitRange)</td></tr>
<tr class="memdesc:a59cbd8ad7cb144c99c1dccefa4e200ff inherit pub_methods_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the fit time range for this run. <br /></td></tr>
<tr class="separator:a59cbd8ad7cb144c99c1dccefa4e200ff inherit pub_methods_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac452c100e88628bad5a6017ae08b5bcb inherit pub_methods_classPRunBase" id="r_ac452c100e88628bad5a6017ae08b5bcb"><td class="memItemLeft" align="right" valign="top">virtual UInt_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#ac452c100e88628bad5a6017ae08b5bcb">GetRunNo</a> ()</td></tr>
<tr class="memdesc:ac452c100e88628bad5a6017ae08b5bcb inherit pub_methods_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the run number (0-based index in MSR file). <br /></td></tr>
<tr class="separator:ac452c100e88628bad5a6017ae08b5bcb inherit pub_methods_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3e949dbc18ee0596270d059f5d6a2c1 inherit pub_methods_classPRunBase" id="r_ae3e949dbc18ee0596270d059f5d6a2c1"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classPRunData.html">PRunData</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#ae3e949dbc18ee0596270d059f5d6a2c1">GetData</a> ()</td></tr>
<tr class="memdesc:ae3e949dbc18ee0596270d059f5d6a2c1 inherit pub_methods_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns pointer to processed data container. <br /></td></tr>
<tr class="separator:ae3e949dbc18ee0596270d059f5d6a2c1 inherit pub_methods_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b2209bc7e4adf26ad448b78d726c366 inherit pub_methods_classPRunBase" id="r_a0b2209bc7e4adf26ad448b78d726c366"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#a0b2209bc7e4adf26ad448b78d726c366">CleanUp</a> ()</td></tr>
<tr class="memdesc:a0b2209bc7e4adf26ad448b78d726c366 inherit pub_methods_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cleans up internal data structures. <br /></td></tr>
<tr class="separator:a0b2209bc7e4adf26ad448b78d726c366 inherit pub_methods_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a269787baf9a101ce181ef0b5a79b9e0d inherit pub_methods_classPRunBase" id="r_a269787baf9a101ce181ef0b5a79b9e0d"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#a269787baf9a101ce181ef0b5a79b9e0d">IsValid</a> ()</td></tr>
<tr class="memdesc:a269787baf9a101ce181ef0b5a79b9e0d inherit pub_methods_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns validity status of this run object. <br /></td></tr>
<tr class="separator:a269787baf9a101ce181ef0b5a79b9e0d inherit pub_methods_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a401b4504aa3c0623193543a64b3e691f" id="r_a401b4504aa3c0623193543a64b3e691f"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a401b4504aa3c0623193543a64b3e691f">PrepareData</a> ()</td></tr>
<tr class="memdesc:a401b4504aa3c0623193543a64b3e691f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main data preparation orchestrator for non-μSR data. <br /></td></tr>
<tr class="separator:a401b4504aa3c0623193543a64b3e691f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af11f8911d67bcc572f27480fd695caa0" id="r_af11f8911d67bcc572f27480fd695caa0"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af11f8911d67bcc572f27480fd695caa0">PrepareFitData</a> ()</td></tr>
<tr class="memdesc:af11f8911d67bcc572f27480fd695caa0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepares x-y data for fitting. <br /></td></tr>
<tr class="separator:af11f8911d67bcc572f27480fd695caa0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5e94fcde88bf20fe1f29041b4fea3ea" id="r_aa5e94fcde88bf20fe1f29041b4fea3ea"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa5e94fcde88bf20fe1f29041b4fea3ea">PrepareViewData</a> ()</td></tr>
<tr class="memdesc:aa5e94fcde88bf20fe1f29041b4fea3ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepares x-y data for viewing/plotting. <br /></td></tr>
<tr class="separator:aa5e94fcde88bf20fe1f29041b4fea3ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classPRunBase"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classPRunBase')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classPRunBase.html">PRunBase</a></td></tr>
<tr class="memitem:ac035dac111f8726a36bafe86b2181054 inherit pro_methods_classPRunBase" id="r_ac035dac111f8726a36bafe86b2181054"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#ac035dac111f8726a36bafe86b2181054">CalculateKaiserFilterCoeff</a> (Double_t wc, Double_t A, Double_t dw)</td></tr>
<tr class="memdesc:ac035dac111f8726a36bafe86b2181054 inherit pro_methods_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates Kaiser window FIR filter coefficients for RRF smoothing. <br /></td></tr>
<tr class="separator:ac035dac111f8726a36bafe86b2181054 inherit pro_methods_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af75ae97c44331887fa56ee247d8e92ac inherit pro_methods_classPRunBase" id="r_af75ae97c44331887fa56ee247d8e92ac"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#af75ae97c44331887fa56ee247d8e92ac">FilterTheo</a> ()</td></tr>
<tr class="memdesc:af75ae97c44331887fa56ee247d8e92ac inherit pro_methods_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Applies Kaiser FIR filter to theory values for RRF fits. <br /></td></tr>
<tr class="separator:af75ae97c44331887fa56ee247d8e92ac inherit pro_methods_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a3ff9297ed19914ea7e343ff066013a79" id="r_a3ff9297ed19914ea7e343ff066013a79"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classPRawRunData.html">PRawRunData</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3ff9297ed19914ea7e343ff066013a79">fRawRunData</a></td></tr>
<tr class="memdesc:a3ff9297ed19914ea7e343ff066013a79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to raw run data handler (not owned). <br /></td></tr>
<tr class="separator:a3ff9297ed19914ea7e343ff066013a79"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeece3f2ab402eee083fb993e3bd0ecfb" id="r_aeece3f2ab402eee083fb993e3bd0ecfb"><td class="memItemLeft" align="right" valign="top">UInt_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aeece3f2ab402eee083fb993e3bd0ecfb">fNoOfFitBins</a></td></tr>
<tr class="memdesc:aeece3f2ab402eee083fb993e3bd0ecfb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of x-y points within fit range (fFitStartTime ≤ x ≤ fFitEndTime) <br /></td></tr>
<tr class="separator:aeece3f2ab402eee083fb993e3bd0ecfb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d8ff4636a25d53cc64e9242029be0f1" id="r_a4d8ff4636a25d53cc64e9242029be0f1"><td class="memItemLeft" align="right" valign="top">Int_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4d8ff4636a25d53cc64e9242029be0f1">fPacking</a></td></tr>
<tr class="memdesc:a4d8ff4636a25d53cc64e9242029be0f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Data point averaging/grouping factor. <br /></td></tr>
<tr class="separator:a4d8ff4636a25d53cc64e9242029be0f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46a407a67df2ce621fb782f7e40d20f8" id="r_a46a407a67df2ce621fb782f7e40d20f8"><td class="memItemLeft" align="right" valign="top">Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a46a407a67df2ce621fb782f7e40d20f8">fTheoAsData</a></td></tr>
<tr class="memdesc:a46a407a67df2ce621fb782f7e40d20f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Theory calculation mode flag. <br /></td></tr>
<tr class="separator:a46a407a67df2ce621fb782f7e40d20f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e97fab2b7f1533858426c7d5280a8d2" id="r_a2e97fab2b7f1533858426c7d5280a8d2"><td class="memItemLeft" align="right" valign="top">Int_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2e97fab2b7f1533858426c7d5280a8d2">fStartTimeBin</a></td></tr>
<tr class="memdesc:a2e97fab2b7f1533858426c7d5280a8d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Index of first data point in fit range. <br /></td></tr>
<tr class="separator:a2e97fab2b7f1533858426c7d5280a8d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b9812c7a91d00e9886ea524673dd247" id="r_a8b9812c7a91d00e9886ea524673dd247"><td class="memItemLeft" align="right" valign="top">Int_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8b9812c7a91d00e9886ea524673dd247">fEndTimeBin</a></td></tr>
<tr class="memdesc:a8b9812c7a91d00e9886ea524673dd247"><td class="mdescLeft">&#160;</td><td class="mdescRight">Index of last data point in fit range (inclusive). <br /></td></tr>
<tr class="separator:a8b9812c7a91d00e9886ea524673dd247"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_attribs_classPRunBase"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_attribs_classPRunBase')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classPRunBase.html">PRunBase</a></td></tr>
<tr class="memitem:a12aa647fe8c42bff6712a1b065d40e9d inherit pro_attribs_classPRunBase" id="r_a12aa647fe8c42bff6712a1b065d40e9d"><td class="memItemLeft" align="right" valign="top">Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#a12aa647fe8c42bff6712a1b065d40e9d">fValid</a></td></tr>
<tr class="memdesc:a12aa647fe8c42bff6712a1b065d40e9d inherit pro_attribs_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Flag indicating if run object initialized successfully; false if any error occurred. <br /></td></tr>
<tr class="separator:a12aa647fe8c42bff6712a1b065d40e9d inherit pro_attribs_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6465ea668810646cd74b40a4e25ca42 inherit pro_attribs_classPRunBase" id="r_ab6465ea668810646cd74b40a4e25ca42"><td class="memItemLeft" align="right" valign="top"><a class="el" href="PMusr_8h.html#a3168a2cda2474c28fe329358530331ab">EPMusrHandleTag</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#ab6465ea668810646cd74b40a4e25ca42">fHandleTag</a></td></tr>
<tr class="memdesc:ab6465ea668810646cd74b40a4e25ca42 inherit pro_attribs_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Operation mode: kFit (fitting), kView (display only), kEmpty (uninitialized) <br /></td></tr>
<tr class="separator:ab6465ea668810646cd74b40a4e25ca42 inherit pro_attribs_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeccaae88c9db0804981e1bd3f81fc57a inherit pro_attribs_classPRunBase" id="r_aeccaae88c9db0804981e1bd3f81fc57a"><td class="memItemLeft" align="right" valign="top">Int_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#aeccaae88c9db0804981e1bd3f81fc57a">fRunNo</a></td></tr>
<tr class="memdesc:aeccaae88c9db0804981e1bd3f81fc57a inherit pro_attribs_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Run number (0-based index in MSR file RUN blocks) <br /></td></tr>
<tr class="separator:aeccaae88c9db0804981e1bd3f81fc57a inherit pro_attribs_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6deb4b8c63d7754ab2222659e2920631 inherit pro_attribs_classPRunBase" id="r_a6deb4b8c63d7754ab2222659e2920631"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classPMsrHandler.html">PMsrHandler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#a6deb4b8c63d7754ab2222659e2920631">fMsrInfo</a></td></tr>
<tr class="memdesc:a6deb4b8c63d7754ab2222659e2920631 inherit pro_attribs_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to MSR file handler (owned externally, not deleted here) <br /></td></tr>
<tr class="separator:a6deb4b8c63d7754ab2222659e2920631 inherit pro_attribs_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1a2a02da26466564461e7a34267387f inherit pro_attribs_classPRunBase" id="r_af1a2a02da26466564461e7a34267387f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classPMsrRunBlock.html">PMsrRunBlock</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#af1a2a02da26466564461e7a34267387f">fRunInfo</a></td></tr>
<tr class="memdesc:af1a2a02da26466564461e7a34267387f inherit pro_attribs_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to this run's RUN block settings within fMsrInfo. <br /></td></tr>
<tr class="separator:af1a2a02da26466564461e7a34267387f inherit pro_attribs_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8852c15177607e0d4383fc2e69e8ef7 inherit pro_attribs_classPRunBase" id="r_ac8852c15177607e0d4383fc2e69e8ef7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classPRunDataHandler.html">PRunDataHandler</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#ac8852c15177607e0d4383fc2e69e8ef7">fRawData</a></td></tr>
<tr class="memdesc:ac8852c15177607e0d4383fc2e69e8ef7 inherit pro_attribs_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to raw data handler (owned externally, not deleted here) <br /></td></tr>
<tr class="separator:ac8852c15177607e0d4383fc2e69e8ef7 inherit pro_attribs_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac2cb35c79fbebe631fdb565946417eed inherit pro_attribs_classPRunBase" id="r_ac2cb35c79fbebe631fdb565946417eed"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classPRunData.html">PRunData</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#ac2cb35c79fbebe631fdb565946417eed">fData</a></td></tr>
<tr class="memdesc:ac2cb35c79fbebe631fdb565946417eed inherit pro_attribs_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Processed data container: background-corrected, packed, with theory values. <br /></td></tr>
<tr class="separator:ac2cb35c79fbebe631fdb565946417eed inherit pro_attribs_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ec9b72abc7a54f1e0f4c12d45bb0357 inherit pro_attribs_classPRunBase" id="r_a0ec9b72abc7a54f1e0f4c12d45bb0357"><td class="memItemLeft" align="right" valign="top">Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#a0ec9b72abc7a54f1e0f4c12d45bb0357">fTimeResolution</a></td></tr>
<tr class="memdesc:a0ec9b72abc7a54f1e0f4c12d45bb0357 inherit pro_attribs_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Time resolution of raw histogram data in microseconds (μs), e.g., 0.01953125 μs for PSI GPS. <br /></td></tr>
<tr class="separator:a0ec9b72abc7a54f1e0f4c12d45bb0357 inherit pro_attribs_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8752e8f10acb6a675a22f45881faa044 inherit pro_attribs_classPRunBase" id="r_a8752e8f10acb6a675a22f45881faa044"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structPMetaData.html">PMetaData</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#a8752e8f10acb6a675a22f45881faa044">fMetaData</a></td></tr>
<tr class="memdesc:a8752e8f10acb6a675a22f45881faa044 inherit pro_attribs_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Experimental metadata extracted from data file header (magnetic field, temperature, beam energy) <br /></td></tr>
<tr class="separator:a8752e8f10acb6a675a22f45881faa044 inherit pro_attribs_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad3be9a269b89805d9e1a5ffa1a8d6ec9 inherit pro_attribs_classPRunBase" id="r_ad3be9a269b89805d9e1a5ffa1a8d6ec9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#ad3be9a269b89805d9e1a5ffa1a8d6ec9">fT0s</a></td></tr>
<tr class="memdesc:ad3be9a269b89805d9e1a5ffa1a8d6ec9 inherit pro_attribs_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Time-zero bin values for all histograms in this run (forward, backward, etc.) <br /></td></tr>
<tr class="separator:ad3be9a269b89805d9e1a5ffa1a8d6ec9 inherit pro_attribs_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab5f96afcdca519f9a33a9fd9a3a6c67d inherit pro_attribs_classPRunBase" id="r_ab5f96afcdca519f9a33a9fd9a3a6c67d"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#ab5f96afcdca519f9a33a9fd9a3a6c67d">fAddT0s</a></td></tr>
<tr class="memdesc:ab5f96afcdca519f9a33a9fd9a3a6c67d inherit pro_attribs_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Time-zero bin values for additional runs to be added to main run. <br /></td></tr>
<tr class="separator:ab5f96afcdca519f9a33a9fd9a3a6c67d inherit pro_attribs_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4a626805d2fbd201472f0487474bb40 inherit pro_attribs_classPRunBase" id="r_af4a626805d2fbd201472f0487474bb40"><td class="memItemLeft" align="right" valign="top">Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#af4a626805d2fbd201472f0487474bb40">fFitStartTime</a></td></tr>
<tr class="memdesc:af4a626805d2fbd201472f0487474bb40 inherit pro_attribs_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fit range start time in microseconds (μs) relative to t0. <br /></td></tr>
<tr class="separator:af4a626805d2fbd201472f0487474bb40 inherit pro_attribs_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4736fa656bba18cc5b61a1273ac839d4 inherit pro_attribs_classPRunBase" id="r_a4736fa656bba18cc5b61a1273ac839d4"><td class="memItemLeft" align="right" valign="top">Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#a4736fa656bba18cc5b61a1273ac839d4">fFitEndTime</a></td></tr>
<tr class="memdesc:a4736fa656bba18cc5b61a1273ac839d4 inherit pro_attribs_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Fit range end time in microseconds (μs) relative to t0. <br /></td></tr>
<tr class="separator:a4736fa656bba18cc5b61a1273ac839d4 inherit pro_attribs_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4756c8b6e7d3764587f57bc62f48f719 inherit pro_attribs_classPRunBase" id="r_a4756c8b6e7d3764587f57bc62f48f719"><td class="memItemLeft" align="right" valign="top"><a class="el" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#a4756c8b6e7d3764587f57bc62f48f719">fFuncValues</a></td></tr>
<tr class="memdesc:a4756c8b6e7d3764587f57bc62f48f719 inherit pro_attribs_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cached values of user-defined functions from FUNCTIONS block, evaluated at current parameters. <br /></td></tr>
<tr class="separator:a4756c8b6e7d3764587f57bc62f48f719 inherit pro_attribs_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96aeb9099bceb6456c90d5b03d2dc3ec inherit pro_attribs_classPRunBase" id="r_a96aeb9099bceb6456c90d5b03d2dc3ec"><td class="memItemLeft" align="right" valign="top">std::unique_ptr&lt; <a class="el" href="classPTheory.html">PTheory</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#a96aeb9099bceb6456c90d5b03d2dc3ec">fTheory</a></td></tr>
<tr class="memdesc:a96aeb9099bceb6456c90d5b03d2dc3ec inherit pro_attribs_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Theory function evaluator (smart pointer, automatically deleted) <br /></td></tr>
<tr class="separator:a96aeb9099bceb6456c90d5b03d2dc3ec inherit pro_attribs_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51b5de438b62d959ef02c23daadbb860 inherit pro_attribs_classPRunBase" id="r_a51b5de438b62d959ef02c23daadbb860"><td class="memItemLeft" align="right" valign="top"><a class="el" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPRunBase.html#a51b5de438b62d959ef02c23daadbb860">fKaiserFilter</a></td></tr>
<tr class="memdesc:a51b5de438b62d959ef02c23daadbb860 inherit pro_attribs_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Kaiser window FIR filter coefficients for smoothing RRF theory curves. <br /></td></tr>
<tr class="separator:a51b5de438b62d959ef02c23daadbb860 inherit pro_attribs_classPRunBase"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Class for fitting general x-y data sets (non-μSR time series). </p>
<p><a class="el" href="classPRunNonMusr.html" title="Class for fitting general x-y data sets (non-μSR time series).">PRunNonMusr</a> extends the musrfit framework to handle arbitrary x-y data that doesn't originate from μSR experiments. This allows users to leverage musrfit's powerful fitting engine, theory functions, and MINUIT interface for general curve fitting tasks.</p>
<h1><a class="anchor" id="nonmusr_purpose"></a>
Purpose and Use Cases</h1>
<p>This fit type is designed for:</p><ul>
<li><b>General time-series data:</b> Any x vs. y measurements</li>
<li><b>Non-μSR physics:</b> Other experimental data (e.g., optical, electrical, thermal)</li>
<li><b>Reusing μSR theory functions:</b> Apply exponentials, oscillations, relaxations to non-μSR data</li>
<li><b>Custom data analysis:</b> Fit arbitrary functional forms to experimental data</li>
<li><b>Method validation:</b> Test fitting procedures on simulated or benchmark data</li>
</ul>
<h1><a class="anchor" id="nonmusr_data"></a>
Data Structure</h1>
<p>Unlike μSR fits, non-μSR data is provided as simple x-y pairs:</p><ul>
<li><b>x-axis:</b> Independent variable (time, temperature, field, voltage, etc.)</li>
<li><b>y-axis:</b> Dependent variable (signal, counts, current, etc.)</li>
<li><b>Errors:</b> Optional error bars on y-values</li>
<li><b>No histograms:</b> Data is already processed, not raw detector counts</li>
<li><b>No t0:</b> No time-zero concept (not time-differential μSR)</li>
<li><b>No asymmetry:</b> Direct fitting of y vs. x</li>
</ul>
<h1><a class="anchor" id="nonmusr_input"></a>
Data Input Formats</h1>
<p>Non-μSR data can be loaded from:</p><ul>
<li><b>ASCII files:</b> Space/tab-separated columns (x, y, err)</li>
<li><b>DB files:</b> Database format with metadata</li>
<li><b>MuSonRoot files:</b> Special ROOT structure for non-μSR data</li>
</ul>
<p>ASCII format example: </p><div class="fragment"><div class="line"><span class="preprocessor"># x-axis y-axis error</span></div>
<div class="line">0.0 100.5 3.2</div>
<div class="line">0.1 95.3 3.1</div>
<div class="line">0.2 90.8 3.0</div>
<div class="line">...</div>
</div><!-- fragment --><h1><a class="anchor" id="nonmusr_msr"></a>
MSR File Configuration</h1>
<p>Example MSR file RUN block for non-μSR data: </p><div class="fragment"><div class="line">RUN data/mydata.dat DB PSI MUSR-ROOT (name beamline)</div>
<div class="line"> fittype 12 (NonMusr)</div>
<div class="line"> map 1 2 (x-index, y-index in data columns)</div>
<div class="line"> xy-data 0 1 (column 0 = x, column 1 = y)</div>
<div class="line"> packing 1 (usually 1 <span class="keywordflow">for</span> pre-processed data)</div>
<div class="line"> fit 0.0 10.0 (fit range in x-axis units)</div>
</div><!-- fragment --><h1><a class="anchor" id="nonmusr_theory"></a>
Theory Functions</h1>
<p>All standard musrfit theory functions can be used:</p><ul>
<li><b>Exponentials:</b> decay, growth, stretched exponentials</li>
<li><b>Oscillations:</b> cosine, sine, damped oscillations</li>
<li><b>Relaxations:</b> static/dynamic Gaussian/Lorentzian Kubo-Toyabe</li>
<li><b>Polynomials:</b> backgrounds, baselines</li>
<li><b>User functions:</b> Custom C++ functions</li>
</ul>
<p>Theory is evaluated at the x-values from the data file.</p>
<h1><a class="anchor" id="nonmusr_differences"></a>
Key Differences from μSR Fits</h1>
<table class="doxtable">
<tr>
<th>Feature</th><th>μSR Fits</th><th>Non-μSR Fits </th></tr>
<tr>
<td>Data type</td><td>Raw histograms</td><td>Processed x-y pairs </td></tr>
<tr>
<td>Time zero (t0)</td><td>Required</td><td>Not applicable </td></tr>
<tr>
<td>Background</td><td>Estimated/subtracted</td><td>Included in y-data </td></tr>
<tr>
<td>Asymmetry</td><td>Calculated</td><td>Not applicable </td></tr>
<tr>
<td>Packing</td><td>Rebin histograms</td><td>Average x-y points </td></tr>
<tr>
<td>Fit range</td><td>Time (μs)</td><td>x-axis units (arbitrary) </td></tr>
<tr>
<td>ADDRUN</td><td>Supported</td><td>NOT supported </td></tr>
</table>
<h1><a class="anchor" id="nonmusr_limitations"></a>
Limitations</h1>
<ul>
<li><b>No ADDRUN:</b> Cannot combine multiple non-μSR data sets</li>
<li><b>No maximum likelihood:</b> Only χ² fitting supported (not implemented for non-μSR)</li>
<li><b>No expected χ²:</b> Not implemented (unclear definition for general data)</li>
<li><b>Simple error handling:</b> Assumes independent Gaussian errors</li>
</ul>
<h1><a class="anchor" id="nonmusr_workflow"></a>
Analysis Workflow</h1>
<ol type="1">
<li><b>Prepare Data:</b> Format as x-y(-error) columns in ASCII/DB file</li>
<li><b>Create MSR File:</b> Specify file, fit type (12), xy-data indices, fit range</li>
<li><b>Define Theory:</b> Use standard THEORY block functions</li>
<li><b>Run Fit:</b> musrfit performs χ² minimization via MINUIT</li>
<li><b>Analyze Results:</b> Standard parameter extraction, error analysis, plotting</li>
</ol>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classPRunSingleHisto.html" title="Class for fitting single detector histograms (basic time-differential μSR).">PRunSingleHisto</a> for standard μSR single histogram fits </dd>
<dd>
<a class="el" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types.">PRunBase</a> for base class interface and common functionality </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8h_source.html#l00132">132</a> of file <a class="el" href="PRunNonMusr_8h_source.html">PRunNonMusr.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a572cab5a3df38155aacf96b1ec682748" name="a572cab5a3df38155aacf96b1ec682748"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a572cab5a3df38155aacf96b1ec682748">&#9670;&#160;</a></span>PRunNonMusr() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PRunNonMusr::PRunNonMusr </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 creating an empty, invalid non-μSR run object. </p>
<p>Initializes all member variables to default values:</p><ul>
<li>Bin counts set to 0</li>
<li>Packing set to 1 (no packing for x-y data)</li>
<li>Handle tag set to kEmpty</li>
<li>Raw data pointer set to nullptr</li>
</ul>
<p>This constructor is needed for creating vectors of <a class="el" href="classPRunNonMusr.html" title="Class for fitting general x-y data sets (non-μSR time series).">PRunNonMusr</a> objects. The resulting object cannot be used until properly initialized via the main constructor.</p>
<p>Initializes all member variables to default/safe values:</p><ul>
<li>fNoOfFitBins = 0 (no bins to fit)</li>
<li>fPacking = 1 (no data averaging)</li>
<li>fStartTimeBin = 0 (first data point)</li>
<li>fEndTimeBin = 0 (no range)</li>
<li>fHandleTag = kEmpty (uninitialized)</li>
<li>fRawRunData = nullptr (no data loaded)</li>
</ul>
<p>This constructor is needed for creating vectors of <a class="el" href="classPRunNonMusr.html" title="Class for fitting general x-y data sets (non-μSR time series).">PRunNonMusr</a> objects. The resulting object cannot be used until properly initialized via the main constructor.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ab22b9935426c534d81354cc9b6188eb5" title="Main constructor initializing a non-μSR run from MSR file and data.">PRunNonMusr(PMsrHandler*, PRunDataHandler*, UInt_t, EPMusrHandleTag, Bool_t)</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8cpp_source.html#l00054">54</a> of file <a class="el" href="PRunNonMusr_8cpp_source.html">PRunNonMusr.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunNonMusr_8h_source.html#l00476">fEndTimeBin</a>, <a class="el" href="PRunBase_8h_source.html#l00268">PRunBase::fHandleTag</a>, <a class="el" href="PRunNonMusr_8h_source.html#l00425">fNoOfFitBins</a>, <a class="el" href="PRunNonMusr_8h_source.html#l00446">fPacking</a>, <a class="el" href="PRunNonMusr_8h_source.html#l00423">fRawRunData</a>, <a class="el" href="PRunNonMusr_8h_source.html#l00466">fStartTimeBin</a>, <a class="el" href="PMusr_8h_source.html#l00414">kEmpty</a>, and <a class="el" href="PRunBase_8cpp_source.html#l00054">PRunBase::PRunBase()</a>.</p>
</div>
</div>
<a id="ab22b9935426c534d81354cc9b6188eb5" name="ab22b9935426c534d81354cc9b6188eb5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab22b9935426c534d81354cc9b6188eb5">&#9670;&#160;</a></span>PRunNonMusr() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PRunNonMusr::PRunNonMusr </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classPMsrHandler.html">PMsrHandler</a> *</td> <td class="paramname"><span class="paramname"><em>msrInfo</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classPRunDataHandler.html">PRunDataHandler</a> *</td> <td class="paramname"><span class="paramname"><em>rawData</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">UInt_t</td> <td class="paramname"><span class="paramname"><em>runNo</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="PMusr_8h.html#a3168a2cda2474c28fe329358530331ab">EPMusrHandleTag</a></td> <td class="paramname"><span class="paramname"><em>tag</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Bool_t</td> <td class="paramname"><span class="paramname"><em>theoAsData</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Main constructor initializing a non-μSR run from MSR file and data. </p>
<p>Main constructor initializing a non-μSR run from MSR file and x-y data.</p>
<p>Performs initialization for general x-y data fitting:</p>
<ol type="1">
<li><b>Base Class Initialization:</b><ul>
<li>Calls <a class="el" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types.">PRunBase</a> constructor with MSR/data handlers</li>
<li>Initializes theory engine</li>
</ul>
</li>
<li><b>Raw Data Loading:</b><ul>
<li>Retrieves raw data using run name from MSR file</li>
<li>Validates data was successfully loaded</li>
<li>Marks run invalid if data cannot be loaded</li>
</ul>
</li>
<li><b>Data Preparation:</b><ul>
<li>Calls <a class="el" href="#a401b4504aa3c0623193543a64b3e691f" title="Main data preparation orchestrator for non-μSR data.">PrepareData()</a> to process x-y data</li>
<li>Extracts x-y columns based on map/xy-data specification</li>
<li>Applies packing if specified</li>
<li>Sets up fit range in x-axis units</li>
</ul>
</li>
</ol>
<p>The object is marked as invalid (fValid=false) if:</p><ul>
<li>Raw data file cannot be loaded</li>
<li><a class="el" href="#a401b4504aa3c0623193543a64b3e691f" title="Main data preparation orchestrator for non-μSR data.">PrepareData()</a> fails (invalid column indices, missing data, etc.)</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msrInfo</td><td>Pointer to MSR file handler (must remain valid) </td></tr>
<tr><td class="paramname">rawData</td><td>Pointer to raw data handler for loading data files </td></tr>
<tr><td class="paramname">runNo</td><td>Run number (0-based index in MSR file RUN blocks) </td></tr>
<tr><td class="paramname">tag</td><td>Operation mode: kFit (fitting), kView (display/plotting) </td></tr>
<tr><td class="paramname">theoAsData</td><td>Theory mode: true = at data points, false = high-resolution</td></tr>
</table>
</dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>Check <a class="el" href="classPRunBase.html#a269787baf9a101ce181ef0b5a79b9e0d" title="Returns validity status of this run object.">IsValid()</a> after construction before using for fitting</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a401b4504aa3c0623193543a64b3e691f" title="Main data preparation orchestrator for non-μSR data.">PrepareData()</a> for data processing details</dd></dl>
<p>Performs comprehensive initialization for general curve fitting:</p>
<ol type="1">
<li><b>Base Class Initialization:</b><ul>
<li>Calls <a class="el" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types.">PRunBase</a> constructor with MSR/data handlers</li>
<li>Initializes theory engine and parameter mappings</li>
<li>Sets up FUNCTIONS block evaluation</li>
</ul>
</li>
<li><b>Raw Data Loading:</b><ul>
<li>Retrieves raw x-y data using run name from MSR file</li>
<li>Calls fRawData-&gt;GetRunData(*runName)</li>
<li>Validates data was successfully loaded</li>
<li>If loading fails → marks run invalid, prints error</li>
</ul>
</li>
<li><b>Data Preparation:</b><ul>
<li>Calls <a class="el" href="#a401b4504aa3c0623193543a64b3e691f" title="Main data preparation orchestrator for non-μSR data.">PrepareData()</a> to process x-y data</li>
<li>Extracts x-y columns based on MSR file specification</li>
<li>Applies packing to average data points</li>
<li>Sets up fit range boundaries</li>
<li>If preparation fails → marks run invalid</li>
</ul>
</li>
</ol>
<p>The object is marked as invalid (fValid=false) if:</p><ul>
<li>Raw data file cannot be loaded (file not found, wrong format, etc.)</li>
<li><a class="el" href="#a401b4504aa3c0623193543a64b3e691f" title="Main data preparation orchestrator for non-μSR data.">PrepareData()</a> fails (invalid column indices, missing packing, etc.)</li>
</ul>
<p>Key features for non-μSR:</p><ul>
<li>No histogram processing (data is already x-y pairs)</li>
<li>No time-zero determination (not time-differential)</li>
<li>No background subtraction (included in y-data)</li>
<li>No asymmetry calculation (direct y vs. x fitting)</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msrInfo</td><td>Pointer to MSR file handler (must remain valid for object lifetime) </td></tr>
<tr><td class="paramname">rawData</td><td>Pointer to raw data handler for loading data files </td></tr>
<tr><td class="paramname">runNo</td><td>Run number (0-based index in MSR file RUN blocks) </td></tr>
<tr><td class="paramname">tag</td><td>Operation mode: kFit (fitting), kView (display/plotting) </td></tr>
<tr><td class="paramname">theoAsData</td><td>Theory mode: true = at data x-values, false = high-resolution (minimal effect for non-μSR)</td></tr>
</table>
</dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>Always check <a class="el" href="classPRunBase.html#a269787baf9a101ce181ef0b5a79b9e0d" title="Returns validity status of this run object.">IsValid()</a> after construction before using for fitting</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a401b4504aa3c0623193543a64b3e691f" title="Main data preparation orchestrator for non-μSR data.">PrepareData()</a> for data processing details </dd>
<dd>
<a class="el" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types.">PRunBase</a> constructor for base class initialization </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8cpp_source.html#l00113">113</a> of file <a class="el" href="PRunNonMusr_8cpp_source.html">PRunNonMusr.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00273">PRunBase::fRawData</a>, <a class="el" href="PRunNonMusr_8h_source.html#l00423">fRawRunData</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunNonMusr_8h_source.html#l00458">fTheoAsData</a>, <a class="el" href="PRunBase_8h_source.html#l00266">PRunBase::fValid</a>, <a class="el" href="PStartupHandler_8cpp_source.html#l00091">if()</a>, <a class="el" href="PRunNonMusr_8cpp_source.html#l00353">PrepareData()</a>, and <a class="el" href="PRunBase_8cpp_source.html#l00054">PRunBase::PRunBase()</a>.</p>
</div>
</div>
<a id="a316d03dff2da6960dceb5547e51f1b6c" name="a316d03dff2da6960dceb5547e51f1b6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a316d03dff2da6960dceb5547e51f1b6c">&#9670;&#160;</a></span>~PRunNonMusr()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">PRunNonMusr::~PRunNonMusr </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></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>Virtual destructor (no cleanup needed for this class). </p>
<p>Destructor (no cleanup needed for non-μSR).</p>
<p>Raw data pointer (fRawRunData) is not owned by this class and is not deleted. Base class destructor handles cleanup of theory objects and other shared resources.</p>
<p>The fRawRunData pointer is not owned by this class and is not deleted here. It is managed by the <a class="el" href="classPRunDataHandler.html" title="Raw data file reader and format converter for μSR data.">PRunDataHandler</a> and will be cleaned up externally.</p>
<p>Base class destructor (<a class="el" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types.">PRunBase</a>) handles cleanup of:</p><ul>
<li>Theory engine objects</li>
<li>Parameter mapping structures</li>
<li>Function value caches </li>
</ul>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8cpp_source.html#l00143">143</a> of file <a class="el" href="PRunNonMusr_8cpp_source.html">PRunNonMusr.cpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a96e6f1a97aa59ec212b7d968cf3ab7ce" name="a96e6f1a97aa59ec212b7d968cf3ab7ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a96e6f1a97aa59ec212b7d968cf3ab7ce">&#9670;&#160;</a></span>CalcChiSquare()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Double_t PRunNonMusr::CalcChiSquare </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; Double_t &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>par</em></span></td><td>)</td>
<td></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>Calculates χ² between non-μSR data and theory. </p>
<p>Calculates χ² between non-μSR x-y data and theory.</p>
<p>Computes the chi-squared statistic for x-y data: </p><p class="formulaDsp">
<picture><source srcset="form_32_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ \chi^2 = \sum_{i={\rm start}}^{\rm end} \frac{(y_i^{\rm data} - y_i^{\rm theory})^2}{\sigma_i^2} \]" src="form_32.png"/></picture>
</p>
<p>where:</p><ul>
<li>y_i^data is the measured y-value at x_i</li>
<li>y_i^theory is the theory function evaluated at x_i</li>
<li>σ_i is the error on y_i (from data file or assumed)</li>
<li>Sum runs over all points within fit range (fFitStartTime ≤ x ≤ fFitEndTime)</li>
</ul>
<p>Algorithm:</p><ol type="1">
<li>Evaluate FUNCTIONS block for user-defined functions</li>
<li>Loop over data points from fStartTimeBin to fEndTimeBin</li>
<li>For each point:<ul>
<li>Get x-value from fData.GetX()</li>
<li>Evaluate theory at that x-value: fTheory-&gt;Func(x, par, fFuncValues)</li>
<li>Compute weighted squared difference</li>
</ul>
</li>
<li>Sum contributions to get total χ²</li>
</ol>
<p>Unlike μSR fits, this operates on x-y data directly (not histograms). The x-axis can represent any independent variable (time, temperature, field, etc.), not just time in microseconds.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">par</td><td>Parameter vector from MINUIT with current parameter values </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Chi-squared value (sum of weighted squared residuals)</dd></dl>
<dl class="section note"><dt>Note</dt><dd>No OpenMP parallelization in this implementation (typically smaller data sets)</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ad165c1dbf84a0bfe727397b580bbbac6" title="Calculates maximum likelihood (NOT IMPLEMENTED for non-μSR).">CalcMaxLikelihood()</a> - NOT IMPLEMENTED for non-μSR</dd></dl>
<p>Computes the chi-squared statistic for general x-y data: </p><p class="formulaDsp">
<picture><source srcset="form_83_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ \chi^2 = \sum_{i={\rm start}}^{\rm end} \frac{(y_i - f(x_i))^2}{\sigma_i^2} \]" src="form_83.png"/></picture>
</p>
<p>where:</p><ul>
<li>x_i is the independent variable (arbitrary units)</li>
<li>y_i is the measured dependent variable</li>
<li>f(x_i) is the theory function evaluated at x_i</li>
<li>σ_i is the error on y_i (from data file)</li>
</ul>
<p>Algorithm:</p><ol type="1">
<li><b>Evaluate FUNCTIONS block:</b><ul>
<li>Loop over user-defined functions</li>
<li>Compute function values using current parameters</li>
<li>Store in fFuncValues for use by theory</li>
</ul>
</li>
<li><b>Calculate χ² sum:</b><ul>
<li>Loop from fStartTimeBin to fEndTimeBin (inclusive)</li>
<li>For each data point i: a. Get x-value: x = fData.GetX()-&gt;at(i) b. Evaluate theory at x: theo = fTheory-&gt;Func(x, par, fFuncValues) c. Get data and error: y = fData.GetValue()-&gt;at(i), σ = fData.GetError()-&gt;at(i) d. Compute contribution: Δχ² = (y - theo)² / σ²</li>
<li>Sum all contributions</li>
</ul>
</li>
</ol>
<p>Key differences from μSR fits:</p><ul>
<li>x-axis is arbitrary (not necessarily time in μs)</li>
<li>Theory evaluated on-demand (not pre-calculated on grid)</li>
<li>Loop end is INCLUSIVE (i &lt;= fEndTimeBin)</li>
<li>No OpenMP parallelization (simpler, smaller data sets)</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">par</td><td>Parameter vector from MINUIT with current parameter values </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Chi-squared value (minimize during fitting)</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ad165c1dbf84a0bfe727397b580bbbac6" title="Calculates maximum likelihood (NOT IMPLEMENTED for non-μSR).">CalcMaxLikelihood()</a> - NOT IMPLEMENTED for non-μSR </dd>
<dd>
<a class="el" href="#a401b4504aa3c0623193543a64b3e691f" title="Main data preparation orchestrator for non-μSR data.">PrepareData()</a> for x-y data loading and fit range setup </dd></dl>
<p>Implements <a class="el" href="classPRunBase.html#afb8ed1f6e8beb0530da96012ad3258d3">PRunBase</a>.</p>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8cpp_source.html#l00189">189</a> of file <a class="el" href="PRunNonMusr_8cpp_source.html">PRunNonMusr.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunNonMusr_8h_source.html#l00476">fEndTimeBin</a>, <a class="el" href="PRunBase_8h_source.html#l00284">PRunBase::fFuncValues</a>, <a class="el" href="PRunBase_8h_source.html#l00277">PRunBase::fMetaData</a>, <a class="el" href="PRunBase_8h_source.html#l00271">PRunBase::fMsrInfo</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunNonMusr_8h_source.html#l00466">fStartTimeBin</a>, and <a class="el" href="PRunBase_8h_source.html#l00285">PRunBase::fTheory</a>.</p>
</div>
</div>
<a id="a70dba55e9a1bd168ceb632246034faf8" name="a70dba55e9a1bd168ceb632246034faf8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a70dba55e9a1bd168ceb632246034faf8">&#9670;&#160;</a></span>CalcChiSquareExpected()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Double_t PRunNonMusr::CalcChiSquareExpected </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; Double_t &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>par</em></span></td><td>)</td>
<td></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>Calculates expected χ² (NOT IMPLEMENTED for non-μSR). </p>
<p>This method is not implemented for general x-y data because the concept of "expected χ²" depends on the underlying statistical distribution, which is not well-defined for arbitrary non-μSR data (unlike Poisson-distributed histogram counts in μSR).</p>
<p>Calling this method prints a warning message and returns 0.0.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">par</td><td>Parameter vector from MINUIT </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Always returns 0.0</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Implementation would require assumptions about data statistics</dd></dl>
<p>This method is not implemented because the concept of "expected χ²" requires knowledge of the underlying statistical distribution of the data, which is not well-defined for general x-y data.</p>
<p>For μSR histogram data, the expected χ² can be calculated based on Poisson statistics. For arbitrary non-μSR data, the appropriate statistical model depends on the data source:</p><ul>
<li>Counting experiments → Poisson</li>
<li>Averaged measurements → Gaussian</li>
<li>Other experiments → problem-specific distributions</li>
</ul>
<p>Without knowing the data's statistical nature, a meaningful implementation cannot be provided.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">par</td><td>Parameter vector from MINUIT (unused) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Always returns 0.0</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Prints "not implemented yet" message to stdout </dd></dl>
<p>Implements <a class="el" href="classPRunBase.html#a1a15d5f51a874149b0d60798f99449a6">PRunBase</a>.</p>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8cpp_source.html#l00235">235</a> of file <a class="el" href="PRunNonMusr_8cpp_source.html">PRunNonMusr.cpp</a>.</p>
</div>
</div>
<a id="ad165c1dbf84a0bfe727397b580bbbac6" name="ad165c1dbf84a0bfe727397b580bbbac6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad165c1dbf84a0bfe727397b580bbbac6">&#9670;&#160;</a></span>CalcMaxLikelihood()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Double_t PRunNonMusr::CalcMaxLikelihood </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; Double_t &gt; &amp;</td> <td class="paramname"><span class="paramname"><em>par</em></span></td><td>)</td>
<td></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>Calculates maximum likelihood (NOT IMPLEMENTED for non-μSR). </p>
<p>Maximum likelihood fitting is not implemented for general x-y data because:</p><ul>
<li>The appropriate likelihood function depends on the data's statistical distribution</li>
<li>Unlike μSR histograms (Poisson), non-μSR data can have various error models</li>
<li>Gaussian errors → equivalent to χ² (no advantage)</li>
<li>Other distributions require user-specified likelihood functions</li>
</ul>
<p>Calling this method prints a warning message and returns 1.0.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">par</td><td>Parameter vector from MINUIT </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Always returns 1.0</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Only χ² fitting is supported for non-μSR data</dd></dl>
<p>Maximum likelihood fitting is not implemented for general x-y data because:</p>
<ol type="1">
<li><b>Distribution-dependent:</b> The likelihood function depends on the underlying statistical distribution of the data points, which varies:<ul>
<li>Poisson: For counting experiments (like μSR histograms)</li>
<li>Gaussian: For averaged measurements with known errors</li>
<li>Other: Problem-specific distributions (binomial, exponential, etc.)</li>
</ul>
</li>
<li><b>Gaussian case equivalence:</b> If errors are Gaussian, maximum likelihood is mathematically equivalent to χ² minimization (already implemented).</li>
<li><b>Implementation complexity:</b> Supporting arbitrary likelihood functions would require users to specify the distribution, adding complexity without clear benefit for most non-μSR applications.</li>
</ol>
<p>For general x-y data with Gaussian errors, use χ² fitting via <a class="el" href="#a96e6f1a97aa59ec212b7d968cf3ab7ce" title="Calculates χ² between non-μSR data and theory.">CalcChiSquare()</a>. For non-Gaussian statistics, users should implement custom fitting outside musrfit.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">par</td><td>Parameter vector from MINUIT (unused) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Always returns 1.0</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Prints "not implemented yet" message to stdout</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a96e6f1a97aa59ec212b7d968cf3ab7ce" title="Calculates χ² between non-μSR data and theory.">CalcChiSquare()</a> for standard least-squares fitting (recommended for non-μSR) </dd></dl>
<p>Implements <a class="el" href="classPRunBase.html#a5d7a15b6962e3767860ef9b4c9208201">PRunBase</a>.</p>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8cpp_source.html#l00273">273</a> of file <a class="el" href="PRunNonMusr_8cpp_source.html">PRunNonMusr.cpp</a>.</p>
</div>
</div>
<a id="aa3676fa9e46a168a9c1195d410da6e3a" name="aa3676fa9e46a168a9c1195d410da6e3a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa3676fa9e46a168a9c1195d410da6e3a">&#9670;&#160;</a></span>CalcTheory()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void PRunNonMusr::CalcTheory </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></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 theory function (empty implementation for non-μSR). </p>
<p>For non-μSR data, theory calculation is performed directly in <a class="el" href="#a96e6f1a97aa59ec212b7d968cf3ab7ce" title="Calculates χ² between non-μSR data and theory.">CalcChiSquare()</a> rather than pre-calculating and storing theory values. This is because:</p><ul>
<li>Theory is evaluated at arbitrary x-values (from data file)</li>
<li>No high-resolution grid needed (data already defines x-points)</li>
<li>Simpler to evaluate on-demand during χ² calculation</li>
</ul>
<p>This method exists to satisfy the <a class="el" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types.">PRunBase</a> interface but does nothing.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a96e6f1a97aa59ec212b7d968cf3ab7ce" title="Calculates χ² between non-μSR data and theory.">CalcChiSquare()</a> for on-demand theory evaluation</dd></dl>
<p>For non-μSR data, theory calculation is performed on-demand within <a class="el" href="#a96e6f1a97aa59ec212b7d968cf3ab7ce" title="Calculates χ² between non-μSR data and theory.">CalcChiSquare()</a> rather than pre-calculating and storing theory values.</p>
<p>This design choice is made because:</p><ul>
<li>Theory is evaluated at arbitrary x-values from the data file</li>
<li>No need for high-resolution theory grid (data defines x-points)</li>
<li>Simpler and more efficient to evaluate during χ² loop</li>
<li>Avoids storing redundant theory array</li>
</ul>
<p>This empty method exists solely to satisfy the <a class="el" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types.">PRunBase</a> interface requirement.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a96e6f1a97aa59ec212b7d968cf3ab7ce" title="Calculates χ² between non-μSR data and theory.">CalcChiSquare()</a> for on-demand theory evaluation at each data point </dd></dl>
<p>Implements <a class="el" href="classPRunBase.html#a0dde056d0acd7f0ac4dc12380e4063e7">PRunBase</a>.</p>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8cpp_source.html#l00299">299</a> of file <a class="el" href="PRunNonMusr_8cpp_source.html">PRunNonMusr.cpp</a>.</p>
</div>
</div>
<a id="a369aea4106aed7e34f3641758f974fb1" name="a369aea4106aed7e34f3641758f974fb1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a369aea4106aed7e34f3641758f974fb1">&#9670;&#160;</a></span>GetNoOfFitBins()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">UInt_t PRunNonMusr::GetNoOfFitBins </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></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>Returns the number of x-y points within the fit range. </p>
<p>Calculates and returns the number of x-y points within the fit range.</p>
<p>Counts data points where fFitStartTime ≤ x ≤ fFitEndTime. This count is used for:</p><ul>
<li>Degrees of freedom: ν = N_points - N_params</li>
<li>Reduced χ²: χ²_red = χ² / ν</li>
<li>Statistical quality assessment</li>
</ul>
<p>The method loops through all x-values in fData.GetX() and counts those within the specified fit range.</p>
<dl class="section return"><dt>Returns</dt><dd>Number of data points within fit range</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a369aea4106aed7e34f3641758f974fb1" title="Returns the number of x-y points within the fit range.">GetNoOfFitBins()</a> implementation for counting algorithm</dd></dl>
<p>Counts data points where fFitStartTime ≤ x ≤ fFitEndTime (both inclusive). This count is essential for:</p><ul>
<li>Degrees of freedom: ν = N_points - N_params</li>
<li>Reduced χ²: χ²_red = χ² / ν</li>
<li>Statistical quality assessment: χ²/ν ≈ 1 indicates good fit</li>
</ul>
<p>Algorithm:</p><ol type="1">
<li>Reset counter: fNoOfFitBins = 0</li>
<li>Loop through all x-values in fData.GetX()</li>
<li>For each x-value:<ul>
<li>If fFitStartTime ≤ x ≤ fFitEndTime → increment counter</li>
</ul>
</li>
<li>Return final count</li>
</ol>
<p>The fit range (fFitStartTime, fFitEndTime) is specified in the MSR file RUN or GLOBAL block "fit" entry, in the same units as the x-axis data.</p>
<dl class="section return"><dt>Returns</dt><dd>Number of data points within fit range</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This method recalculates the count each time it's called (not cached), allowing for dynamic fit range changes. </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8cpp_source.html#l00330">330</a> of file <a class="el" href="PRunNonMusr_8cpp_source.html">PRunNonMusr.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunBase_8h_source.html#l00282">PRunBase::fFitEndTime</a>, <a class="el" href="PRunBase_8h_source.html#l00281">PRunBase::fFitStartTime</a>, and <a class="el" href="PRunNonMusr_8h_source.html#l00425">fNoOfFitBins</a>.</p>
</div>
</div>
<a id="abbead53f0cd23629b4ebbb32eeb95f8f" name="abbead53f0cd23629b4ebbb32eeb95f8f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abbead53f0cd23629b4ebbb32eeb95f8f">&#9670;&#160;</a></span>GetXIndex()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">UInt_t PRunNonMusr::GetXIndex </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></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>Returns the x-axis column index from MSR file specification. </p>
<p>Extracts the x-data column index from:</p><ul>
<li>"xy-data" entry in RUN block (preferred)</li>
<li>"map" entry first value (fallback)</li>
<li>Default: 0 (first column)</li>
</ul>
<p>The index specifies which column in the data file contains the independent variable (x-axis values).</p>
<dl class="section return"><dt>Returns</dt><dd>Column index for x-axis data (0-based)</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#adecf789d1b829fa706cc646fc07d9fce" title="Returns the y-axis column index from MSR file specification.">GetYIndex()</a> for y-axis column</dd></dl>
<p>Returns the x-axis data index.</p>
<p><b>return:</b></p><ul>
<li>x-index </li>
</ul>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8cpp_source.html#l00640">640</a> of file <a class="el" href="PRunNonMusr_8cpp_source.html">PRunNonMusr.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunNonMusr_8h_source.html#l00423">fRawRunData</a>, and <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunNonMusr_8cpp_source.html#l00402">PrepareFitData()</a>, and <a class="el" href="PRunNonMusr_8cpp_source.html#l00465">PrepareViewData()</a>.</p>
</div>
</div>
<a id="adecf789d1b829fa706cc646fc07d9fce" name="adecf789d1b829fa706cc646fc07d9fce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adecf789d1b829fa706cc646fc07d9fce">&#9670;&#160;</a></span>GetYIndex()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">UInt_t PRunNonMusr::GetYIndex </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></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>Returns the y-axis column index from MSR file specification. </p>
<p>Extracts the y-data column index from:</p><ul>
<li>"xy-data" entry in RUN block (preferred)</li>
<li>"map" entry second value (fallback)</li>
<li>Default: 1 (second column)</li>
</ul>
<p>The index specifies which column in the data file contains the dependent variable (y-axis values to be fitted).</p>
<dl class="section return"><dt>Returns</dt><dd>Column index for y-axis data (0-based)</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#abbead53f0cd23629b4ebbb32eeb95f8f" title="Returns the x-axis column index from MSR file specification.">GetXIndex()</a> for x-axis column</dd></dl>
<p>Returns the y-axis data index.</p>
<p><b>return:</b></p><ul>
<li>y-index </li>
</ul>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8cpp_source.html#l00681">681</a> of file <a class="el" href="PRunNonMusr_8cpp_source.html">PRunNonMusr.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunNonMusr_8h_source.html#l00423">fRawRunData</a>, and <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunNonMusr_8cpp_source.html#l00402">PrepareFitData()</a>, and <a class="el" href="PRunNonMusr_8cpp_source.html#l00465">PrepareViewData()</a>.</p>
</div>
</div>
<a id="a401b4504aa3c0623193543a64b3e691f" name="a401b4504aa3c0623193543a64b3e691f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a401b4504aa3c0623193543a64b3e691f">&#9670;&#160;</a></span>PrepareData()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Bool_t PRunNonMusr::PrepareData </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel protected">protected</span><span class="mlabel virtual">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Main data preparation orchestrator for non-μSR data. </p>
<p>Coordinates the data loading and preprocessing pipeline:</p><ol type="1">
<li>Checks for ADDRUN (warns if present - not supported for non-μSR)</li>
<li>Retrieves packing parameter from RUN or GLOBAL block</li>
<li>Retrieves fit range from RUN or GLOBAL block</li>
<li>Dispatches to <a class="el" href="#af11f8911d67bcc572f27480fd695caa0" title="Prepares x-y data for fitting.">PrepareFitData()</a> or <a class="el" href="#aa5e94fcde88bf20fe1f29041b4fea3ea" title="Prepares x-y data for viewing/plotting.">PrepareViewData()</a> based on tag</li>
</ol>
<p>Key validation:</p><ul>
<li>ADDRUN presence → warning (ignored)</li>
<li>Missing packing → error (required)</li>
<li>Missing fit range → acceptable (will use all data)</li>
</ul>
<dl class="section return"><dt>Returns</dt><dd>True if data preparation succeeds, false on error</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#af11f8911d67bcc572f27480fd695caa0" title="Prepares x-y data for fitting.">PrepareFitData()</a> for fitting mode processing </dd>
<dd>
<a class="el" href="#aa5e94fcde88bf20fe1f29041b4fea3ea" title="Prepares x-y data for viewing/plotting.">PrepareViewData()</a> for viewing mode processing</dd></dl>
<p>Prepare data for fitting or viewing.</p>
<p><b>return:</b></p><ul>
<li>true if everthing went smooth</li>
<li>false, otherwise. </li>
</ul>
<p>Implements <a class="el" href="classPRunBase.html#a108aca748689e37a7e045a770677b517">PRunBase</a>.</p>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8cpp_source.html#l00353">353</a> of file <a class="el" href="PRunNonMusr_8cpp_source.html">PRunNonMusr.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00282">PRunBase::fFitEndTime</a>, <a class="el" href="PRunBase_8h_source.html#l00281">PRunBase::fFitStartTime</a>, <a class="el" href="PRunBase_8h_source.html#l00268">PRunBase::fHandleTag</a>, <a class="el" href="PRunBase_8h_source.html#l00271">PRunBase::fMsrInfo</a>, <a class="el" href="PRunNonMusr_8h_source.html#l00446">fPacking</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunBase_8h_source.html#l00266">PRunBase::fValid</a>, <a class="el" href="PMusr_8h_source.html#l00415">kFit</a>, <a class="el" href="PMusr_8h_source.html#l00416">kView</a>, <a class="el" href="PMusr_8h_source.html#l00172">PMUSR_UNDEFINED</a>, <a class="el" href="PRunNonMusr_8cpp_source.html#l00402">PrepareFitData()</a>, and <a class="el" href="PRunNonMusr_8cpp_source.html#l00465">PrepareViewData()</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunNonMusr_8cpp_source.html#l00113">PRunNonMusr()</a>.</p>
</div>
</div>
<a id="af11f8911d67bcc572f27480fd695caa0" name="af11f8911d67bcc572f27480fd695caa0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af11f8911d67bcc572f27480fd695caa0">&#9670;&#160;</a></span>PrepareFitData()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Bool_t PRunNonMusr::PrepareFitData </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel protected">protected</span><span class="mlabel virtual">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Prepares x-y data for fitting. </p>
<p>Performs data processing for curve fitting:</p><ol type="1">
<li>Determines x-y column indices via <a class="el" href="#abbead53f0cd23629b4ebbb32eeb95f8f" title="Returns the x-axis column index from MSR file specification.">GetXIndex()</a> and <a class="el" href="#adecf789d1b829fa706cc646fc07d9fce" title="Returns the y-axis column index from MSR file specification.">GetYIndex()</a></li>
<li>Loads x-y(-error) data from file</li>
<li>Applies packing if specified:<ul>
<li>packing = 1: Use data as-is (no averaging)</li>
<li>packing &gt; 1: Average consecutive points in groups of packing</li>
</ul>
</li>
<li>Packing algorithm for x-values: midpoint of packed range</li>
<li>Packing algorithm for y-values: sum of packed points</li>
<li>Packing algorithm for errors: sqrt(sum of squared errors)</li>
<li>Counts bins within fit range (fFitStartTime ≤ x ≤ fFitEndTime)</li>
<li>Determines fStartTimeBin and fEndTimeBin indices</li>
</ol>
<p>Packing example (packing=3):</p><ul>
<li>Raw: x=[0, 1, 2, 3, 4, 5], y=[10, 12, 11, 15, 14, 13]</li>
<li>Packed: x=[1, 4], y=[33, 42] (midpoint, sum)</li>
</ul>
<dl class="section return"><dt>Returns</dt><dd>True on success, false if data loading fails</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#aa5e94fcde88bf20fe1f29041b4fea3ea" title="Prepares x-y data for viewing/plotting.">PrepareViewData()</a> for viewing mode (may differ in processing)</dd></dl>
<p>Prepare data for fitting.</p>
<p><b>return:</b></p><ul>
<li>true if everthing went smooth</li>
<li>false, otherwise. </li>
</ul>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8cpp_source.html#l00402">402</a> of file <a class="el" href="PRunNonMusr_8cpp_source.html">PRunNonMusr.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunNonMusr_8h_source.html#l00476">fEndTimeBin</a>, <a class="el" href="PRunBase_8h_source.html#l00282">PRunBase::fFitEndTime</a>, <a class="el" href="PRunBase_8h_source.html#l00281">PRunBase::fFitStartTime</a>, <a class="el" href="PRunNonMusr_8h_source.html#l00425">fNoOfFitBins</a>, <a class="el" href="PRunNonMusr_8h_source.html#l00446">fPacking</a>, <a class="el" href="PRunNonMusr_8h_source.html#l00423">fRawRunData</a>, <a class="el" href="PRunNonMusr_8h_source.html#l00466">fStartTimeBin</a>, <a class="el" href="PRunNonMusr_8cpp_source.html#l00640">GetXIndex()</a>, and <a class="el" href="PRunNonMusr_8cpp_source.html#l00681">GetYIndex()</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunNonMusr_8cpp_source.html#l00353">PrepareData()</a>.</p>
</div>
</div>
<a id="aa5e94fcde88bf20fe1f29041b4fea3ea" name="aa5e94fcde88bf20fe1f29041b4fea3ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa5e94fcde88bf20fe1f29041b4fea3ea">&#9670;&#160;</a></span>PrepareViewData()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Bool_t PRunNonMusr::PrepareViewData </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel protected">protected</span><span class="mlabel virtual">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Prepares x-y data for viewing/plotting. </p>
<p>Similar to <a class="el" href="#af11f8911d67bcc572f27480fd695caa0" title="Prepares x-y data for fitting.">PrepareFitData()</a> but optimized for visualization:</p><ul>
<li>May use different packing for display</li>
<li>May extend beyond fit range for context</li>
<li>Less stringent validation</li>
</ul>
<p>The exact implementation mirrors <a class="el" href="#af11f8911d67bcc572f27480fd695caa0" title="Prepares x-y data for fitting.">PrepareFitData()</a> for non-μSR, but the separation allows future customization for viewing.</p>
<dl class="section return"><dt>Returns</dt><dd>True on success, false if data loading fails</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#af11f8911d67bcc572f27480fd695caa0" title="Prepares x-y data for fitting.">PrepareFitData()</a> for fitting mode processing</dd></dl>
<p>Prepare data for viewing.</p>
<p><b>return:</b></p><ul>
<li>true if everthing went smooth</li>
<li>false, otherwise. </li>
</ul>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8cpp_source.html#l00465">465</a> of file <a class="el" href="PRunNonMusr_8cpp_source.html">PRunNonMusr.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunBase_8h_source.html#l00284">PRunBase::fFuncValues</a>, <a class="el" href="PRunBase_8h_source.html#l00277">PRunBase::fMetaData</a>, <a class="el" href="PRunBase_8h_source.html#l00271">PRunBase::fMsrInfo</a>, <a class="el" href="PRunNonMusr_8h_source.html#l00425">fNoOfFitBins</a>, <a class="el" href="PRunNonMusr_8h_source.html#l00446">fPacking</a>, <a class="el" href="PRunNonMusr_8h_source.html#l00423">fRawRunData</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunNonMusr_8h_source.html#l00458">fTheoAsData</a>, <a class="el" href="PRunBase_8h_source.html#l00285">PRunBase::fTheory</a>, <a class="el" href="PMusr_8h_source.html#l01285">PMsrPlotStructure::fTmax</a>, <a class="el" href="PMusr_8h_source.html#l01284">PMsrPlotStructure::fTmin</a>, <a class="el" href="PMusr_8h_source.html#l01279">PMsrPlotStructure::fUseFitRanges</a>, <a class="el" href="PRunNonMusr_8cpp_source.html#l00640">GetXIndex()</a>, and <a class="el" href="PRunNonMusr_8cpp_source.html#l00681">GetYIndex()</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunNonMusr_8cpp_source.html#l00353">PrepareData()</a>.</p>
</div>
</div>
<a id="a7f4dd0c479e81de92c3e1f6db9755126" name="a7f4dd0c479e81de92c3e1f6db9755126"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7f4dd0c479e81de92c3e1f6db9755126">&#9670;&#160;</a></span>SetFitRangeBin()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void PRunNonMusr::SetFitRangeBin </td>
<td>(</td>
<td class="paramtype">const TString</td> <td class="paramname"><span class="paramname"><em>fitRange</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel virtual">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets fit range in bin units (NOT SUPPORTED for non-μSR). </p>
<p>This method is not meaningful for non-μSR data because:</p><ul>
<li>Fit range is specified in x-axis units (not bins)</li>
<li>No "first good bin" or "last good bin" concept (no t0)</li>
<li>x-values can be non-uniform (arbitrary spacing)</li>
</ul>
<p>This empty implementation exists to satisfy the <a class="el" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types.">PRunBase</a> interface. Use <a class="el" href="classPRunBase.html#a59cbd8ad7cb144c99c1dccefa4e200ff" title="Sets the fit time range for this run.">SetFitRange(PDoublePairVector)</a> in the base class instead.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">fitRange</td><td>Fit range string (ignored)</td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classPRunBase.html#a59cbd8ad7cb144c99c1dccefa4e200ff" title="Sets the fit time range for this run.">PRunBase::SetFitRange()</a> for proper fit range specification </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8h_source.html#l00310">310</a> of file <a class="el" href="PRunNonMusr_8h_source.html">PRunNonMusr.h</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a8b9812c7a91d00e9886ea524673dd247" name="a8b9812c7a91d00e9886ea524673dd247"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8b9812c7a91d00e9886ea524673dd247">&#9670;&#160;</a></span>fEndTimeBin</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Int_t PRunNonMusr::fEndTimeBin</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Index of last data point in fit range (inclusive). </p>
<p>Points to the last x-y pair where x ≤ fFitEndTime. Used as loop end in <a class="el" href="#a96e6f1a97aa59ec212b7d968cf3ab7ce" title="Calculates χ² between non-μSR data and theory.">CalcChiSquare()</a> (inclusive: i &lt;= fEndTimeBin).</p>
<dl class="section note"><dt>Note</dt><dd>Unlike μSR fits, this is INCLUSIVE (≤), not exclusive (&lt;) </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8h_source.html#l00476">476</a> of file <a class="el" href="PRunNonMusr_8h_source.html">PRunNonMusr.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunNonMusr_8cpp_source.html#l00189">CalcChiSquare()</a>, <a class="el" href="PRunNonMusr_8cpp_source.html#l00402">PrepareFitData()</a>, and <a class="el" href="PRunNonMusr_8cpp_source.html#l00054">PRunNonMusr()</a>.</p>
</div>
</div>
<a id="aeece3f2ab402eee083fb993e3bd0ecfb" name="aeece3f2ab402eee083fb993e3bd0ecfb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aeece3f2ab402eee083fb993e3bd0ecfb">&#9670;&#160;</a></span>fNoOfFitBins</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">UInt_t PRunNonMusr::fNoOfFitBins</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Number of x-y points within fit range (fFitStartTime ≤ x ≤ fFitEndTime) </p>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8h_source.html#l00425">425</a> of file <a class="el" href="PRunNonMusr_8h_source.html">PRunNonMusr.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunNonMusr_8cpp_source.html#l00330">GetNoOfFitBins()</a>, <a class="el" href="PRunNonMusr_8cpp_source.html#l00402">PrepareFitData()</a>, <a class="el" href="PRunNonMusr_8cpp_source.html#l00465">PrepareViewData()</a>, and <a class="el" href="PRunNonMusr_8cpp_source.html#l00054">PRunNonMusr()</a>.</p>
</div>
</div>
<a id="a4d8ff4636a25d53cc64e9242029be0f1" name="a4d8ff4636a25d53cc64e9242029be0f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4d8ff4636a25d53cc64e9242029be0f1">&#9670;&#160;</a></span>fPacking</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Int_t PRunNonMusr::fPacking</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Data point averaging/grouping factor. </p>
<p>Number of consecutive raw data points to average together:</p><ul>
<li>1: No packing (use all points as-is)</li>
<li>&gt; 1: Average groups of packing points</li>
</ul>
<p>Packing reduces the number of data points, improving:</p><ul>
<li>Signal-to-noise ratio (averaging reduces noise)</li>
<li>Fit speed (fewer points to evaluate)</li>
</ul>
<p>But decreases:</p><ul>
<li>Resolution (fewer x-values)</li>
</ul>
<p>Source priority:</p><ol type="1">
<li>RUN block "packing" entry</li>
<li>GLOBAL block "packing" entry</li>
<li>ERROR if neither specified </li>
</ol>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8h_source.html#l00446">446</a> of file <a class="el" href="PRunNonMusr_8h_source.html">PRunNonMusr.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunNonMusr_8cpp_source.html#l00353">PrepareData()</a>, <a class="el" href="PRunNonMusr_8cpp_source.html#l00402">PrepareFitData()</a>, <a class="el" href="PRunNonMusr_8cpp_source.html#l00465">PrepareViewData()</a>, and <a class="el" href="PRunNonMusr_8cpp_source.html#l00054">PRunNonMusr()</a>.</p>
</div>
</div>
<a id="a3ff9297ed19914ea7e343ff066013a79" name="a3ff9297ed19914ea7e343ff066013a79"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ff9297ed19914ea7e343ff066013a79">&#9670;&#160;</a></span>fRawRunData</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classPRawRunData.html">PRawRunData</a>* PRunNonMusr::fRawRunData</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Pointer to raw run data handler (not owned). </p>
<p>Provides access to loaded x-y data from file. Retrieved via fRawData-&gt;GetRunData(*runName) during construction.</p>
<p>Contains the fDataNonMusr structure with:</p><ul>
<li><a class="el" href="classPRunBase.html#ae3e949dbc18ee0596270d059f5d6a2c1" title="Returns pointer to processed data container.">GetData()</a>: Vector of vectors for data columns (x, y, etc.)</li>
<li>GetErrData(): Vector of vectors for error columns</li>
</ul>
<dl class="section warning"><dt>Warning</dt><dd>Not owned by this class - do not delete </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8h_source.html#l00423">423</a> of file <a class="el" href="PRunNonMusr_8h_source.html">PRunNonMusr.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunNonMusr_8cpp_source.html#l00640">GetXIndex()</a>, <a class="el" href="PRunNonMusr_8cpp_source.html#l00681">GetYIndex()</a>, <a class="el" href="PRunNonMusr_8cpp_source.html#l00402">PrepareFitData()</a>, <a class="el" href="PRunNonMusr_8cpp_source.html#l00465">PrepareViewData()</a>, <a class="el" href="PRunNonMusr_8cpp_source.html#l00054">PRunNonMusr()</a>, and <a class="el" href="PRunNonMusr_8cpp_source.html#l00113">PRunNonMusr()</a>.</p>
</div>
</div>
<a id="a2e97fab2b7f1533858426c7d5280a8d2" name="a2e97fab2b7f1533858426c7d5280a8d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2e97fab2b7f1533858426c7d5280a8d2">&#9670;&#160;</a></span>fStartTimeBin</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Int_t PRunNonMusr::fStartTimeBin</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Index of first data point in fit range. </p>
<p>Points to the first x-y pair where x ≥ fFitStartTime. Used as loop start in <a class="el" href="#a96e6f1a97aa59ec212b7d968cf3ab7ce" title="Calculates χ² between non-μSR data and theory.">CalcChiSquare()</a>. </p>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8h_source.html#l00466">466</a> of file <a class="el" href="PRunNonMusr_8h_source.html">PRunNonMusr.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunNonMusr_8cpp_source.html#l00189">CalcChiSquare()</a>, <a class="el" href="PRunNonMusr_8cpp_source.html#l00402">PrepareFitData()</a>, and <a class="el" href="PRunNonMusr_8cpp_source.html#l00054">PRunNonMusr()</a>.</p>
</div>
</div>
<a id="a46a407a67df2ce621fb782f7e40d20f8" name="a46a407a67df2ce621fb782f7e40d20f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46a407a67df2ce621fb782f7e40d20f8">&#9670;&#160;</a></span>fTheoAsData</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Bool_t PRunNonMusr::fTheoAsData</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Theory calculation mode flag. </p>
<p>Controls theory grid resolution (currently not used for non-μSR):</p><ul>
<li>true: Theory at data x-values only (efficient)</li>
<li>false: Theory on high-resolution grid (smooth plotting)</li>
</ul>
<p>For non-μSR, theory is always evaluated at data x-values during <a class="el" href="#a96e6f1a97aa59ec212b7d968cf3ab7ce" title="Calculates χ² between non-μSR data and theory.">CalcChiSquare()</a>, so this flag has minimal effect. </p>
<p class="definition">Definition at line <a class="el" href="PRunNonMusr_8h_source.html#l00458">458</a> of file <a class="el" href="PRunNonMusr_8h_source.html">PRunNonMusr.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunNonMusr_8cpp_source.html#l00465">PrepareViewData()</a>, and <a class="el" href="PRunNonMusr_8cpp_source.html#l00113">PRunNonMusr()</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="PRunNonMusr_8h_source.html">PRunNonMusr.h</a></li>
<li>/workspace/LMU/musrfit/src/classes/<a class="el" href="PRunNonMusr_8cpp_source.html">PRunNonMusr.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="classPRunNonMusr.html">PRunNonMusr</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>