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

2373 lines
175 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: PRunSingleHistoRRF 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('classPRunSingleHistoRRF.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-methods">Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="classPRunSingleHistoRRF-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">PRunSingleHistoRRF Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Class for fitting single histogram data in a Rotating Reference Frame (RRF).
<a href="#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for PRunSingleHistoRRF:</div>
<div class="dyncontent">
<div class="center"><img src="classPRunSingleHistoRRF__inherit__graph.png" border="0" usemap="#aPRunSingleHistoRRF_inherit__map" alt="Inheritance graph"/></div>
<map name="aPRunSingleHistoRRF_inherit__map" id="aPRunSingleHistoRRF_inherit__map">
<area shape="rect" title="Class for fitting single histogram data in a Rotating Reference Frame (RRF)." alt="" coords="5,81,151,109"/>
<area shape="rect" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types." alt="" coords="38,5,118,33"/>
<area shape="poly" title=" " alt="" coords="81,49,81,81,75,81,75,49"/>
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for PRunSingleHistoRRF:</div>
<div class="dyncontent">
<div class="center"><img src="classPRunSingleHistoRRF__coll__graph.png" border="0" usemap="#aPRunSingleHistoRRF_coll__map" alt="Collaboration graph"/></div>
<map name="aPRunSingleHistoRRF_coll__map" id="aPRunSingleHistoRRF_coll__map">
<area shape="rect" title="Class for fitting single histogram data in a Rotating Reference Frame (RRF)." alt="" coords="936,165,1081,193"/>
<area shape="rect" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types." alt="" coords="806,165,887,193"/>
<area shape="poly" title=" " alt="" coords="902,176,935,176,935,182,902,182"/>
<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="430,100,591,118,687,134,783,154,810,162,808,167,782,159,686,139,590,124,429,105"/>
<area shape="rect" href="classPRunDataHandler.html" title="Raw data file reader and format converter for μSR data." alt="" coords="563,49,692,77"/>
<area shape="poly" title=" " alt="" coords="428,87,562,69,563,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="574,165,681,193"/>
<area shape="poly" title=" " alt="" coords="697,176,806,176,806,182,697,182"/>
<area shape="poly" title=" " alt="" coords="709,69,747,79,784,97,802,112,818,130,840,163,836,166,814,133,799,116,781,101,745,84,707,74"/>
<area shape="rect" href="structPAny2ManyInfo.html" title=" " alt="" coords="306,12,421,40"/>
<area shape="poly" title=" " alt="" coords="437,33,563,51,562,57,436,39"/>
<area shape="rect" href="classPRunData.html" title=" " alt="" coords="588,217,668,245"/>
<area shape="poly" title=" " alt="" coords="683,220,782,199,807,191,808,196,783,204,684,225"/>
<area shape="rect" href="structPMetaData.html" title=" " alt="" coords="584,269,671,297"/>
<area shape="poly" title=" " alt="" coords="686,271,734,257,781,237,810,215,832,192,836,195,813,219,784,241,736,262,688,276"/>
</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:a3b403bb5ab6f2330dea34b962bd67219" id="r_a3b403bb5ab6f2330dea34b962bd67219"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3b403bb5ab6f2330dea34b962bd67219">PRunSingleHistoRRF</a> ()</td></tr>
<tr class="memdesc:a3b403bb5ab6f2330dea34b962bd67219"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor creating an empty, invalid RRF single histogram run object. <br /></td></tr>
<tr class="separator:a3b403bb5ab6f2330dea34b962bd67219"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cd015da9ae3b35d81068377f04e610f" id="r_a0cd015da9ae3b35d81068377f04e610f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0cd015da9ae3b35d81068377f04e610f">PRunSingleHistoRRF</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:a0cd015da9ae3b35d81068377f04e610f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main constructor initializing RRF single histogram run from MSR file and data. <br /></td></tr>
<tr class="separator:a0cd015da9ae3b35d81068377f04e610f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60d1d3e1a165effd9c2a2b4ecd29382b" id="r_a60d1d3e1a165effd9c2a2b4ecd29382b"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a60d1d3e1a165effd9c2a2b4ecd29382b">~PRunSingleHistoRRF</a> ()</td></tr>
<tr class="memdesc:a60d1d3e1a165effd9c2a2b4ecd29382b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual destructor releasing allocated resources. <br /></td></tr>
<tr class="separator:a60d1d3e1a165effd9c2a2b4ecd29382b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20acaae4f31c28daa5a5b2046cb861ce" id="r_a20acaae4f31c28daa5a5b2046cb861ce"><td class="memItemLeft" align="right" valign="top">virtual Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a20acaae4f31c28daa5a5b2046cb861ce">CalcChiSquare</a> (const std::vector&lt; Double_t &gt; &amp;par)</td></tr>
<tr class="memdesc:a20acaae4f31c28daa5a5b2046cb861ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates χ² between RRF-transformed data and theory. <br /></td></tr>
<tr class="separator:a20acaae4f31c28daa5a5b2046cb861ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54445267cc4b9a56ddc1daafa506e0bf" id="r_a54445267cc4b9a56ddc1daafa506e0bf"><td class="memItemLeft" align="right" valign="top">virtual Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a54445267cc4b9a56ddc1daafa506e0bf">CalcChiSquareExpected</a> (const std::vector&lt; Double_t &gt; &amp;par)</td></tr>
<tr class="memdesc:a54445267cc4b9a56ddc1daafa506e0bf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates expected χ² using theory variance instead of data variance. <br /></td></tr>
<tr class="separator:a54445267cc4b9a56ddc1daafa506e0bf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2ee805b0b66aa9c034802d869c6712b" id="r_ad2ee805b0b66aa9c034802d869c6712b"><td class="memItemLeft" align="right" valign="top">virtual Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad2ee805b0b66aa9c034802d869c6712b">CalcMaxLikelihood</a> (const std::vector&lt; Double_t &gt; &amp;par)</td></tr>
<tr class="memdesc:ad2ee805b0b66aa9c034802d869c6712b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates maximum likelihood (not yet implemented for RRF). <br /></td></tr>
<tr class="separator:ad2ee805b0b66aa9c034802d869c6712b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af5efc7a53365a692d8fe4c0bb7938a2f" id="r_af5efc7a53365a692d8fe4c0bb7938a2f"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af5efc7a53365a692d8fe4c0bb7938a2f">CalcTheory</a> ()</td></tr>
<tr class="memdesc:af5efc7a53365a692d8fe4c0bb7938a2f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluates theory function at all data points for viewing/plotting. <br /></td></tr>
<tr class="separator:af5efc7a53365a692d8fe4c0bb7938a2f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec3aac4e64931206a360598fb3363a68" id="r_aec3aac4e64931206a360598fb3363a68"><td class="memItemLeft" align="right" valign="top">virtual UInt_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aec3aac4e64931206a360598fb3363a68">GetNoOfFitBins</a> ()</td></tr>
<tr class="memdesc:aec3aac4e64931206a360598fb3363a68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of bins included in the current fit range. <br /></td></tr>
<tr class="separator:aec3aac4e64931206a360598fb3363a68"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adaf4b75ab0ca72305da9e58d578c7314" id="r_adaf4b75ab0ca72305da9e58d578c7314"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#adaf4b75ab0ca72305da9e58d578c7314">SetFitRangeBin</a> (const TString fitRange)</td></tr>
<tr class="memdesc:adaf4b75ab0ca72305da9e58d578c7314"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets fit range using bin-offset syntax from COMMANDS block. <br /></td></tr>
<tr class="separator:adaf4b75ab0ca72305da9e58d578c7314"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3e05f197f3001addcca00d04131a2f57" id="r_a3e05f197f3001addcca00d04131a2f57"><td class="memItemLeft" align="right" valign="top">virtual Int_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3e05f197f3001addcca00d04131a2f57">GetStartTimeBin</a> ()</td></tr>
<tr class="memdesc:a3e05f197f3001addcca00d04131a2f57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the first bin index in the fit range. <br /></td></tr>
<tr class="separator:a3e05f197f3001addcca00d04131a2f57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2cdd91931dd4577890546a7113436665" id="r_a2cdd91931dd4577890546a7113436665"><td class="memItemLeft" align="right" valign="top">virtual Int_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2cdd91931dd4577890546a7113436665">GetEndTimeBin</a> ()</td></tr>
<tr class="memdesc:a2cdd91931dd4577890546a7113436665"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the last bin index in the fit range (exclusive). <br /></td></tr>
<tr class="separator:a2cdd91931dd4577890546a7113436665"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af702d4108e8383bed131f393e2a0dcf4" id="r_af702d4108e8383bed131f393e2a0dcf4"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#af702d4108e8383bed131f393e2a0dcf4">CalcNoOfFitBins</a> ()</td></tr>
<tr class="memdesc:af702d4108e8383bed131f393e2a0dcf4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates start/end bin indices from fit time range. <br /></td></tr>
<tr class="separator:af702d4108e8383bed131f393e2a0dcf4"><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:a64b5a3e7a52fd3e5cce6e02e67325391" id="r_a64b5a3e7a52fd3e5cce6e02e67325391"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a64b5a3e7a52fd3e5cce6e02e67325391">PrepareData</a> ()</td></tr>
<tr class="memdesc:a64b5a3e7a52fd3e5cce6e02e67325391"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main data preparation orchestrator for RRF single histogram analysis. <br /></td></tr>
<tr class="separator:a64b5a3e7a52fd3e5cce6e02e67325391"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3d7f8f12b68f67821a2891b9432bf8d2" id="r_a3d7f8f12b68f67821a2891b9432bf8d2"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3d7f8f12b68f67821a2891b9432bf8d2">PrepareFitData</a> (<a class="el" href="classPRawRunData.html">PRawRunData</a> *runData, const UInt_t histoNo)</td></tr>
<tr class="memdesc:a3d7f8f12b68f67821a2891b9432bf8d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Performs full RRF transformation for fitting. <br /></td></tr>
<tr class="separator:a3d7f8f12b68f67821a2891b9432bf8d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8d5ea8242073e34b0186a662e1f66869" id="r_a8d5ea8242073e34b0186a662e1f66869"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8d5ea8242073e34b0186a662e1f66869">PrepareViewData</a> (<a class="el" href="classPRawRunData.html">PRawRunData</a> *runData, const UInt_t histoNo)</td></tr>
<tr class="memdesc:a8d5ea8242073e34b0186a662e1f66869"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepares RRF data for viewing/plotting. <br /></td></tr>
<tr class="separator:a8d5ea8242073e34b0186a662e1f66869"><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-methods" name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:acf61e38a66398bcb2d37d890aa099da6" id="r_acf61e38a66398bcb2d37d890aa099da6"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acf61e38a66398bcb2d37d890aa099da6">GetProperT0</a> (<a class="el" href="classPRawRunData.html">PRawRunData</a> *runData, <a class="el" href="classPMsrGlobalBlock.html">PMsrGlobalBlock</a> *globalBlock, <a class="el" href="PMusr_8h.html#a01eec7e896afb5c4601dea91ee31477b">PUIntVector</a> &amp;histoNo)</td></tr>
<tr class="memdesc:acf61e38a66398bcb2d37d890aa099da6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines and validates t0 values for all histograms. <br /></td></tr>
<tr class="separator:acf61e38a66398bcb2d37d890aa099da6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2f3a3cbc00f42870a695a6012f4aaeb" id="r_ad2f3a3cbc00f42870a695a6012f4aaeb"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad2f3a3cbc00f42870a695a6012f4aaeb">GetProperDataRange</a> ()</td></tr>
<tr class="memdesc:ad2f3a3cbc00f42870a695a6012f4aaeb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines valid data range (first/last good bins). <br /></td></tr>
<tr class="separator:ad2f3a3cbc00f42870a695a6012f4aaeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8190e9405a89a9121ad67d3940c75f3d" id="r_a8190e9405a89a9121ad67d3940c75f3d"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8190e9405a89a9121ad67d3940c75f3d">GetProperFitRange</a> (<a class="el" href="classPMsrGlobalBlock.html">PMsrGlobalBlock</a> *globalBlock)</td></tr>
<tr class="memdesc:a8190e9405a89a9121ad67d3940c75f3d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines fit time range from MSR file settings. <br /></td></tr>
<tr class="separator:a8190e9405a89a9121ad67d3940c75f3d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a095182422c0b8903d4533d5df9eed9" id="r_a2a095182422c0b8903d4533d5df9eed9"><td class="memItemLeft" align="right" valign="top">virtual Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2a095182422c0b8903d4533d5df9eed9">GetMainFrequency</a> (<a class="el" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> &amp;data)</td></tr>
<tr class="memdesc:a2a095182422c0b8903d4533d5df9eed9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finds the dominant precession frequency in raw data. <br /></td></tr>
<tr class="separator:a2a095182422c0b8903d4533d5df9eed9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b473fe7da2670dd7381c729dea86244" id="r_a3b473fe7da2670dd7381c729dea86244"><td class="memItemLeft" align="right" valign="top">virtual Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3b473fe7da2670dd7381c729dea86244">EstimateN0</a> (Double_t &amp;errN0, Double_t freqMax)</td></tr>
<tr class="memdesc:a3b473fe7da2670dd7381c729dea86244"><td class="mdescLeft">&#160;</td><td class="mdescRight">Estimates initial normalization N₀ from lifetime-corrected data. <br /></td></tr>
<tr class="separator:a3b473fe7da2670dd7381c729dea86244"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9b73cc476c39a5781f577a86c870f4aa" id="r_a9b73cc476c39a5781f577a86c870f4aa"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a9b73cc476c39a5781f577a86c870f4aa">EstimateBkg</a> (UInt_t histoNo)</td></tr>
<tr class="memdesc:a9b73cc476c39a5781f577a86c870f4aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Estimates background from pre-t0 bins. <br /></td></tr>
<tr class="separator:a9b73cc476c39a5781f577a86c870f4aa"><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:ab5ace5bf93deb2df89c121063666f1c4" id="r_ab5ace5bf93deb2df89c121063666f1c4"><td class="memItemLeft" align="right" valign="top">Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab5ace5bf93deb2df89c121063666f1c4">fN0EstimateEndTime</a></td></tr>
<tr class="memdesc:ab5ace5bf93deb2df89c121063666f1c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">End time (μs) for N₀ estimation window. Rounded to integer number of oscillation cycles based on main frequency. <br /></td></tr>
<tr class="separator:ab5ace5bf93deb2df89c121063666f1c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abef0b34e96c5bf89d4c1037e0008c52f" id="r_abef0b34e96c5bf89d4c1037e0008c52f"><td class="memItemLeft" align="right" valign="top">UInt_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abef0b34e96c5bf89d4c1037e0008c52f">fNoOfFitBins</a></td></tr>
<tr class="memdesc:abef0b34e96c5bf89d4c1037e0008c52f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of RRF-packed bins within fit range [fStartTimeBin, fEndTimeBin) <br /></td></tr>
<tr class="separator:abef0b34e96c5bf89d4c1037e0008c52f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a490fb222bfbedda71a452d68ac085e8c" id="r_a490fb222bfbedda71a452d68ac085e8c"><td class="memItemLeft" align="right" valign="top">Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a490fb222bfbedda71a452d68ac085e8c">fBackground</a></td></tr>
<tr class="memdesc:a490fb222bfbedda71a452d68ac085e8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Estimated or fixed background level in counts/bin (before packing) <br /></td></tr>
<tr class="separator:a490fb222bfbedda71a452d68ac085e8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab715692e9f766a461a258d98707f1a94" id="r_ab715692e9f766a461a258d98707f1a94"><td class="memItemLeft" align="right" valign="top">Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab715692e9f766a461a258d98707f1a94">fBkgErr</a></td></tr>
<tr class="memdesc:ab715692e9f766a461a258d98707f1a94"><td class="mdescLeft">&#160;</td><td class="mdescRight">Statistical error on background estimate (std dev of background region) <br /></td></tr>
<tr class="separator:ab715692e9f766a461a258d98707f1a94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe8ac887807ed2b4223ba3f983bdfb2d" id="r_abe8ac887807ed2b4223ba3f983bdfb2d"><td class="memItemLeft" align="right" valign="top">Int_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abe8ac887807ed2b4223ba3f983bdfb2d">fRRFPacking</a></td></tr>
<tr class="memdesc:abe8ac887807ed2b4223ba3f983bdfb2d"><td class="mdescLeft">&#160;</td><td class="mdescRight">RRF packing factor from GLOBAL block (number of raw bins averaged together) <br /></td></tr>
<tr class="separator:abe8ac887807ed2b4223ba3f983bdfb2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8ac1684d7102a6e627df9679353b1bcf" id="r_a8ac1684d7102a6e627df9679353b1bcf"><td class="memItemLeft" align="right" valign="top">Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8ac1684d7102a6e627df9679353b1bcf">fTheoAsData</a></td></tr>
<tr class="memdesc:a8ac1684d7102a6e627df9679353b1bcf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Theory resolution mode: true = at data points only, false = 8× finer grid for smooth Fourier transforms. <br /></td></tr>
<tr class="separator:a8ac1684d7102a6e627df9679353b1bcf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaf4a70aaf75bab55356a75dc83869ad0" id="r_aaf4a70aaf75bab55356a75dc83869ad0"><td class="memItemLeft" align="right" valign="top">Int_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aaf4a70aaf75bab55356a75dc83869ad0">fGoodBins</a> [2]</td></tr>
<tr class="memdesc:aaf4a70aaf75bab55356a75dc83869ad0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Good bin range: [0] = first good bin (fgb), [1] = last good bin (lgb). Used for COMMANDS block fit range specification. <br /></td></tr>
<tr class="separator:aaf4a70aaf75bab55356a75dc83869ad0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7dc91a4d7f10a68d7fe7e075d5449c50" id="r_a7dc91a4d7f10a68d7fe7e075d5449c50"><td class="memItemLeft" align="right" valign="top">Int_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7dc91a4d7f10a68d7fe7e075d5449c50">fStartTimeBin</a></td></tr>
<tr class="memdesc:a7dc91a4d7f10a68d7fe7e075d5449c50"><td class="mdescLeft">&#160;</td><td class="mdescRight">First bin index in fit range (inclusive, 0-based in RRF-packed data) <br /></td></tr>
<tr class="separator:a7dc91a4d7f10a68d7fe7e075d5449c50"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1d52e0a5f50cfaa01fde2131fc5bdb8d" id="r_a1d52e0a5f50cfaa01fde2131fc5bdb8d"><td class="memItemLeft" align="right" valign="top">Int_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a1d52e0a5f50cfaa01fde2131fc5bdb8d">fEndTimeBin</a></td></tr>
<tr class="memdesc:a1d52e0a5f50cfaa01fde2131fc5bdb8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Last bin index in fit range (exclusive: loop as i &lt; fEndTimeBin) <br /></td></tr>
<tr class="separator:a1d52e0a5f50cfaa01fde2131fc5bdb8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e4d26779c4dc79cb6257b7a018c75b2" id="r_a0e4d26779c4dc79cb6257b7a018c75b2"><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="#a0e4d26779c4dc79cb6257b7a018c75b2">fForward</a></td></tr>
<tr class="memdesc:a0e4d26779c4dc79cb6257b7a018c75b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Forward detector histogram data (progressively transformed during preparation) <br /></td></tr>
<tr class="separator:a0e4d26779c4dc79cb6257b7a018c75b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9188ea8e610cc22798280636c8b53beb" id="r_a9188ea8e610cc22798280636c8b53beb"><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="#a9188ea8e610cc22798280636c8b53beb">fM</a></td></tr>
<tr class="memdesc:a9188ea8e610cc22798280636c8b53beb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Lifetime-corrected histogram: M(t) = [N(t) - B] × exp(+t/τ_μ). Used for N₀ estimation. <br /></td></tr>
<tr class="separator:a9188ea8e610cc22798280636c8b53beb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab779bff30645d1b67be3ce4254b656c2" id="r_ab779bff30645d1b67be3ce4254b656c2"><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="#ab779bff30645d1b67be3ce4254b656c2">fMerr</a></td></tr>
<tr class="memdesc:ab779bff30645d1b67be3ce4254b656c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Error on M(t): σ_M = exp(+t/τ_μ) × √(N(t) + σ_B²). Includes background error. <br /></td></tr>
<tr class="separator:ab779bff30645d1b67be3ce4254b656c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad831240ac6214d41dee3d20f303b2b49" id="r_ad831240ac6214d41dee3d20f303b2b49"><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="#ad831240ac6214d41dee3d20f303b2b49">fW</a></td></tr>
<tr class="memdesc:ad831240ac6214d41dee3d20f303b2b49"><td class="mdescLeft">&#160;</td><td class="mdescRight">Weights for N₀ estimation: W(t) = 1/σ_M². Used in weighted average. <br /></td></tr>
<tr class="separator:ad831240ac6214d41dee3d20f303b2b49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28cf424562a7f425cf832fe95ab42609" id="r_a28cf424562a7f425cf832fe95ab42609"><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="#a28cf424562a7f425cf832fe95ab42609">fAerr</a></td></tr>
<tr class="memdesc:a28cf424562a7f425cf832fe95ab42609"><td class="mdescLeft">&#160;</td><td class="mdescRight">Asymmetry errors before RRF packing. Used for packed error calculation. <br /></td></tr>
<tr class="separator:a28cf424562a7f425cf832fe95ab42609"><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 single histogram data in a Rotating Reference Frame (RRF). </p>
<p><a class="el" href="classPRunSingleHistoRRF.html" title="Class for fitting single histogram data in a Rotating Reference Frame (RRF).">PRunSingleHistoRRF</a> implements single histogram analysis with Rotating Reference Frame transformation. This technique is essential for high transverse field (TF) μSR measurements where the precession frequency is too high to resolve directly.</p>
<h1><a class="anchor" id="rrf_physics"></a>
Physics Background</h1>
<p><b>The Problem with High-Field μSR:</b></p><ul>
<li>At fields B &gt; ~0.5 T, muon precession frequency ω = γ_μ B exceeds ~70 MHz</li>
<li>Standard time-domain analysis struggles: requires sub-ns binning → low statistics</li>
<li>Frequency-domain (Fourier) analysis has limited resolution</li>
</ul>
<p><b>The RRF Solution:</b></p><ul>
<li>Transform to a reference frame rotating at frequency ω_RRF ≈ ω_signal</li>
<li>In rotating frame: effective frequency Δω = ω_signal - ω_RRF &lt;&lt; ω_signal</li>
<li>Low-frequency signal can be fit with standard time-domain techniques</li>
<li>Preserves full information: relaxation rates, frequency distributions</li>
</ul>
<h1><a class="anchor" id="rrf_transform"></a>
Mathematical Transformation</h1>
<p><b>Data processing steps:</b></p><ol type="1">
<li><b>Background subtraction:</b> N(t) → N(t) - B</li>
<li><b>Lifetime correction:</b> N(t) - B → [N(t) - B] × exp(+t/τ_μ) = M(t)</li>
<li><b>N₀ estimation:</b> Fit M(t) over initial time window to extract N₀</li>
<li><b>Asymmetry extraction:</b> A(t) = M(t)/N₀ - 1</li>
<li><b>RRF rotation:</b> A_RRF(t) = 2 × A(t) × cos(ω_RRF t + φ_RRF)</li>
<li><b>RRF packing:</b> Average over multiple bins to filter high-frequency components</li>
</ol>
<p>The factor of 2 in step 5 compensates for the loss of the counter-rotating component when the high-frequency part is suppressed by packing.</p>
<p><b>Theory function in RRF:</b> The polarization function P(t) transforms as: </p><p class="formulaDsp">
<picture><source srcset="form_35_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[P_{\rm RRF}(t) = 2 \cdot P(t) \cdot \cos(\omega_{\rm RRF} t + \phi_{\rm RRF})
\]" src="form_35.png"/></picture>
</p>
<p>For a simple oscillation P(t) = A·cos(ωt + φ)·exp(-λt), this becomes: </p><p class="formulaDsp">
<picture><source srcset="form_36_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[P_{\rm RRF}(t) = A \cdot [\cos((\omega - \omega_{\rm RRF})t + \phi - \phi_{\rm RRF}) + \text{high freq.}] \cdot e^{-\lambda t}
\]" src="form_36.png"/></picture>
</p>
<p>After RRF packing, only the low-frequency component Δω = ω - ω_RRF remains.</p>
<h1><a class="anchor" id="rrf_requirements"></a>
GLOBAL Block Requirements</h1>
<p>RRF analysis REQUIRES the following entries in the GLOBAL block:</p><ul>
<li><b>rrf_freq:</b> RRF rotation frequency (value + unit: MHz, Mc, T, G, kG)</li>
<li><b>rrf_phase:</b> RRF initial phase in degrees</li>
<li><b>rrf_packing:</b> Number of bins to average (filters high frequencies)</li>
</ul>
<h1><a class="anchor" id="rrf_msr"></a>
MSR File Example</h1>
<div class="fragment"><div class="line">GLOBAL</div>
<div class="line"> rrf_freq 13.554 T # RRF frequency equivalent to 13.554 Tesla</div>
<div class="line"> rrf_phase 45.0 # RRF phase in degrees</div>
<div class="line"> rrf_packing 25 # Average 25 bins to suppress high-freq component</div>
<div class="line"> data 200 60000 # Data range (fgb lgb)</div>
<div class="line"> fit 0.1 8.0 # Fit range in μs</div>
<div class="line"> </div>
<div class="line">RUN data/run2425 PSI MUE4 PSI MUSR-ROOT</div>
<div class="line"> fittype 8 (SingleHistoRRF)</div>
<div class="line"> map 1</div>
<div class="line"> forward 1</div>
<div class="line"> background 50 150</div>
<div class="line"> t0 210.5</div>
</div><!-- fragment --><h1><a class="anchor" id="rrf_workflow"></a>
Data Processing Workflow</h1>
<ol type="1">
<li><b><a class="el" href="#a64b5a3e7a52fd3e5cce6e02e67325391" title="Main data preparation orchestrator for RRF single histogram analysis.">PrepareData()</a>:</b> Load raw histogram, determine t0, group/add histograms</li>
<li><b><a class="el" href="#a3d7f8f12b68f67821a2891b9432bf8d2" title="Performs full RRF transformation for fitting.">PrepareFitData()</a>:</b><ul>
<li>Subtract background (estimated or fixed)</li>
<li>Apply lifetime correction: exp(+t/τ_μ)</li>
<li>Estimate N₀ using Fourier analysis to find main frequency</li>
<li>Extract asymmetry: A(t) = M(t)/N₀ - 1</li>
<li>Apply RRF rotation: A_RRF(t) = 2·A(t)·cos(ω_RRF t + φ_RRF)</li>
<li>Pack data (average over rrf_packing bins)</li>
<li>Calculate errors with proper propagation</li>
</ul>
</li>
</ol>
<h1><a class="anchor" id="rrf_errors"></a>
Error Propagation</h1>
<p>RRF asymmetry error (unpacked): </p><p class="formulaDsp">
<picture><source srcset="form_37_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[\sigma_{A}(t) = \frac{e^{t/\tau_\mu}}{N_0} \sqrt{N(t) + \left(\frac{N(t)-B}{N_0}\right)^2 \sigma_{N_0}^2}
\]" src="form_37.png"/></picture>
</p>
<p>After RRF packing (n bins): </p><p class="formulaDsp">
<picture><source srcset="form_38_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[\sigma_{A_{\rm RRF}}^{\rm packed} = \frac{\sqrt{2}}{n} \sqrt{\sum_{i=1}^{n} \sigma_{A}^2(t_i)}
\]" src="form_38.png"/></picture>
</p>
<p>The √2 factor accounts for the doubling in the RRF transformation.</p>
<h1><a class="anchor" id="rrf_applications"></a>
Applications</h1>
<p><b>High-TF μSR experiments:</b></p><ul>
<li>Knight shift measurements (NMR-like)</li>
<li>Vortex state studies in type-II superconductors</li>
<li>Diamagnetic/paramagnetic shift measurements</li>
<li>Internal field distributions in magnets</li>
</ul>
<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 (non-RRF) single histogram analysis </dd>
<dd>
<a class="el" href="classPRunAsymmetryRRF.html" title="Class for handling μSR asymmetry fits in the Rotating Reference Frame (RRF).">PRunAsymmetryRRF</a> for RRF asymmetry (forward-backward) analysis </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 </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00144">144</a> of file <a class="el" href="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a3b403bb5ab6f2330dea34b962bd67219" name="a3b403bb5ab6f2330dea34b962bd67219"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3b403bb5ab6f2330dea34b962bd67219">&#9670;&#160;</a></span>PRunSingleHistoRRF() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PRunSingleHistoRRF::PRunSingleHistoRRF </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 RRF single histogram run object. </p>
<p>Default constructor for RRF single histogram fitting class.</p>
<p>Initializes member variables to default/invalid states:</p><ul>
<li>fNoOfFitBins = 0</li>
<li>fBackground = 0</li>
<li>fBkgErr = 1.0 (default error estimate)</li>
<li>fRRFPacking = -1 (invalid, must be set from GLOBAL block)</li>
<li>fTheoAsData = false</li>
<li>fGoodBins[0,1] = -1 (unset)</li>
<li>fN0EstimateEndTime = 1.0 μs</li>
</ul>
<p>This constructor exists for container compatibility. The resulting object cannot be used until properly initialized.</p>
<p>Initializes all member variables to safe default values:</p><ul>
<li>fNoOfFitBins = 0 (no bins to fit)</li>
<li>fBackground = 0 (will be estimated or set from MSR file)</li>
<li>fBkgErr = 1.0 (default error estimate)</li>
<li>fRRFPacking = -1 (invalid until set from GLOBAL block)</li>
<li>fTheoAsData = false (high-resolution theory grid)</li>
<li>fGoodBins[0,1] = -1 (calculated from data range)</li>
<li>fN0EstimateEndTime = 1.0 μs (default N₀ estimation window)</li>
</ul>
<dl class="section warning"><dt>Warning</dt><dd>This constructor creates an invalid object that cannot be used until properly initialized with MSR file data. Use the full constructor for normal operation.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a0cd015da9ae3b35d81068377f04e610f" title="Main constructor initializing RRF single histogram run from MSR file and data.">PRunSingleHistoRRF(PMsrHandler*, PRunDataHandler*, UInt_t, EPMusrHandleTag, Bool_t)</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00073">73</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00417">fBackground</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00418">fBkgErr</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00422">fGoodBins</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00414">fN0EstimateEndTime</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00416">fNoOfFitBins</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00419">fRRFPacking</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00420">fTheoAsData</a>, and <a class="el" href="PRunBase_8cpp_source.html#l00054">PRunBase::PRunBase()</a>.</p>
</div>
</div>
<a id="a0cd015da9ae3b35d81068377f04e610f" name="a0cd015da9ae3b35d81068377f04e610f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0cd015da9ae3b35d81068377f04e610f">&#9670;&#160;</a></span>PRunSingleHistoRRF() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PRunSingleHistoRRF::PRunSingleHistoRRF </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 RRF single histogram run from MSR file and data. </p>
<p>Main constructor for RRF single histogram fitting and viewing.</p>
<p>Performs comprehensive validation and initialization:</p>
<ol type="1">
<li><b>GLOBAL Block Validation (MANDATORY):</b><ul>
<li>Checks GLOBAL block is present (required for RRF)</li>
<li>Validates RRF frequency is specified (rrf_freq)</li>
<li>Validates RRF packing is specified (rrf_packing)</li>
<li>Sets fValid=false and returns on any validation failure</li>
</ul>
</li>
<li><b>Member Initialization:</b><ul>
<li>Extracts fRRFPacking from GLOBAL block</li>
<li>Sets fN0EstimateEndTime = 1.0 μs</li>
<li>Initializes fGoodBins to -1 (determined in PrepareData)</li>
</ul>
</li>
<li><b>Data Preparation:</b><ul>
<li>Calls <a class="el" href="#a64b5a3e7a52fd3e5cce6e02e67325391" title="Main data preparation orchestrator for RRF single histogram analysis.">PrepareData()</a> to load histogram and perform RRF transformation</li>
<li>Sets fValid=false if data preparation fails</li>
</ul>
</li>
</ol>
<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 histogram loading </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 resolution: true = at data points, false = 8× finer grid</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. GLOBAL block with RRF parameters is MANDATORY for this fit type.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a64b5a3e7a52fd3e5cce6e02e67325391" title="Main data preparation orchestrator for RRF single histogram analysis.">PrepareData()</a> for RRF transformation details</dd></dl>
<p>Constructs a fully initialized RRF single histogram run object by:</p><ol type="1">
<li>Validating GLOBAL block presence (mandatory for RRF analysis)</li>
<li>Validating RRF frequency specification (rrf_freq in GLOBAL block)</li>
<li>Validating RRF packing specification (rrf_packing in GLOBAL block)</li>
<li>Calling <a class="el" href="#a64b5a3e7a52fd3e5cce6e02e67325391" title="Main data preparation orchestrator for RRF single histogram analysis.">PrepareData()</a> to load histogram and perform RRF transformation</li>
</ol>
<p><b>GLOBAL Block Requirements:</b> The RRF fit type requires the following entries in the GLOBAL block:</p><ul>
<li><code>rrf_freq:</code> Rotation frequency with unit (e.g., "13.554 T", "183.7 MHz")</li>
<li><code>rrf_packing:</code> Number of bins to average (integer)</li>
<li><code>rrf_phase:</code> (optional) Initial phase in degrees</li>
</ul>
<p><b>Error Handling:</b> If any validation fails, the constructor:</p><ul>
<li>Outputs detailed error message to stderr</li>
<li>Sets fValid = false</li>
<li>Returns immediately (<a class="el" href="#a64b5a3e7a52fd3e5cce6e02e67325391" title="Main data preparation orchestrator for RRF single histogram analysis.">PrepareData()</a> is not called)</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msrInfo</td><td>Pointer to MSR file handler (NOT owned, must outlive this object) </td></tr>
<tr><td class="paramname">rawData</td><td>Pointer to raw run data handler (NOT owned, must outlive this object) </td></tr>
<tr><td class="paramname">runNo</td><td>Zero-based index of the RUN block in the MSR file </td></tr>
<tr><td class="paramname">tag</td><td>Operation mode: kFit (fitting) or kView (viewing/plotting) </td></tr>
<tr><td class="paramname">theoAsData</td><td>If true, theory calculated only at data points (for viewing); if false, theory uses finer time grid (8× data resolution)</td></tr>
</table>
</dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>GLOBAL block with RRF parameters is MANDATORY for this fit type. Always check <a class="el" href="classPRunBase.html#a269787baf9a101ce181ef0b5a79b9e0d" title="Returns validity status of this run object.">IsValid()</a> after construction.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>After construction, check <a class="el" href="classPRunBase.html#a269787baf9a101ce181ef0b5a79b9e0d" title="Returns validity status of this run object.">IsValid()</a> to ensure initialization succeeded. Common failure modes:<ul>
<li>Missing GLOBAL block</li>
<li>Missing rrf_freq specification</li>
<li>Missing rrf_packing specification</li>
<li>Data file not found or histogram missing</li>
</ul>
</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a64b5a3e7a52fd3e5cce6e02e67325391" title="Main data preparation orchestrator for RRF single histogram analysis.">PrepareData()</a>, <a class="el" href="#a3d7f8f12b68f67821a2891b9432bf8d2" title="Performs full RRF transformation for fitting.">PrepareFitData()</a>, <a class="el" href="#a8d5ea8242073e34b0186a662e1f66869" title="Prepares RRF data for viewing/plotting.">PrepareViewData()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00132">132</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00422">fGoodBins</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00414">fN0EstimateEndTime</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00416">fNoOfFitBins</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00419">fRRFPacking</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00420">fTheoAsData</a>, <a class="el" href="PRunBase_8h_source.html#l00266">PRunBase::fValid</a>, <a class="el" href="PMsrHandler_8h_source.html#l00181">PMsrHandler::GetMsrGlobal()</a>, <a class="el" href="PMusr_8h_source.html#l01040">PMsrGlobalBlock::GetRRFPacking()</a>, <a class="el" href="PMusr_8cpp_source.html#l00887">PMsrGlobalBlock::GetRRFUnit()</a>, <a class="el" href="PStartupHandler_8cpp_source.html#l00091">if()</a>, <a class="el" href="PMusr_8h_source.html#l01035">PMsrGlobalBlock::IsPresent()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00706">PrepareData()</a>, and <a class="el" href="PRunBase_8cpp_source.html#l00054">PRunBase::PRunBase()</a>.</p>
</div>
</div>
<a id="a60d1d3e1a165effd9c2a2b4ecd29382b" name="a60d1d3e1a165effd9c2a2b4ecd29382b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60d1d3e1a165effd9c2a2b4ecd29382b">&#9670;&#160;</a></span>~PRunSingleHistoRRF()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">PRunSingleHistoRRF::~PRunSingleHistoRRF </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 releasing allocated resources. </p>
<p>Destructor for RRF single histogram fitting class.</p>
<p>Clears the forward histogram vector. Base class handles theory objects.</p>
<p>Cleans up dynamically allocated memory:</p><ul>
<li>Clears the forward histogram data vector (fForward)</li>
<li>Other vectors (fM, fMerr, fW, fAerr) are local to PrepareFitData and cleared automatically</li>
</ul>
<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 objects</li>
<li>Function value arrays</li>
<li>Other shared resources </li>
</ul>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00193">193</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00427">fForward</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a20acaae4f31c28daa5a5b2046cb861ce" name="a20acaae4f31c28daa5a5b2046cb861ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a20acaae4f31c28daa5a5b2046cb861ce">&#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 PRunSingleHistoRRF::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 RRF-transformed data and theory. </p>
<p>Calculates χ² between RRF-transformed data and theory (least-squares fit metric).</p>
<p>Computes chi-squared for RRF single histogram fitting: </p><p class="formulaDsp">
<picture><source srcset="form_39_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[\chi^2 = \sum_{i=t_{\rm start}}^{t_{\rm end}} \frac{[A_{\rm RRF}^{\rm data}(t_i) - A_{\rm RRF}^{\rm theory}(t_i)]^2}{\sigma_i^2}
\]" src="form_39.png"/></picture>
</p>
<p><b>Algorithm:</b></p><ol type="1">
<li>Evaluate user-defined FUNCTIONS with current parameters</li>
<li>Pre-evaluate theory at t=1.0 to initialize LF/user functions (thread-safety)</li>
<li>Loop over fit range with OpenMP parallelization</li>
<li>Sum squared differences weighted by inverse variance</li>
</ol>
<p><b>OpenMP Parallelization:</b></p><ul>
<li>Dynamic scheduling with chunk = max(10, N_bins / N_processors)</li>
<li>Reduction on chisq accumulator</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">par</td><td>Parameter vector from MINUIT minimizer </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>χ² value (sum over all bins in fit range)</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Unlike standard single histogram, no N₀/exp(-t/τ) factors needed since RRF transformation already produces dimensionless asymmetry.</dd></dl>
<p>Computes the standard chi-square goodness-of-fit statistic for RRF asymmetry: </p><p class="formulaDsp">
<picture><source srcset="form_39_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[\chi^2 = \sum_{i=t_{\rm start}}^{t_{\rm end}} \frac{[A_{\rm RRF}^{\rm data}(t_i) - A_{\rm RRF}^{\rm theory}(t_i)]^2}{\sigma_i^2}
\]" src="form_39.png"/></picture>
</p>
<p>Unlike standard single histogram fitting, no explicit N₀ or exponential decay factors appear since the RRF transformation already produces dimensionless asymmetry with properly propagated errors.</p>
<p><b>Algorithm:</b></p><ol type="1">
<li>Evaluate all user-defined functions from FUNCTIONS block</li>
<li>Pre-evaluate theory at t=1.0 to initialize any stateful functions (e.g., LF relaxation, user functions with internal state)</li>
<li>Loop over fit range bins [fStartTimeBin, fEndTimeBin)</li>
<li>For each bin: calculate time, evaluate theory, accumulate χ²</li>
</ol>
<p><b>OpenMP Parallelization:</b> When compiled with OpenMP (HAVE_GOMP defined):</p><ul>
<li>Dynamic scheduling with chunk size = max(10, N_bins / N_processors)</li>
<li>Private variables per thread: i, time, diff</li>
<li>Reduction performed on chisq accumulator</li>
<li>Thread-safe due to pre-evaluation of theory at t=1.0</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">par</td><td>Parameter vector from MINUIT minimizer, containing current estimates of all fit parameters</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>χ² value (sum over all bins in fit range). Minimize this value during fitting to find optimal parameters.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The theory function is evaluated in the RRF frame. The THEORY block should describe the low-frequency RRF signal, not the laboratory frame precession.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a54445267cc4b9a56ddc1daafa506e0bf" title="Calculates expected χ² using theory variance instead of data variance.">CalcChiSquareExpected()</a>, <a class="el" href="#ad2ee805b0b66aa9c034802d869c6712b" title="Calculates maximum likelihood (not yet implemented for RRF).">CalcMaxLikelihood()</a> </dd></dl>
<p>Implements <a class="el" href="classPRunBase.html#afb8ed1f6e8beb0530da96012ad3258d3">PRunBase</a>.</p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00239">239</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00425">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="PRunSingleHistoRRF_8h_source.html#l00424">fStartTimeBin</a>, and <a class="el" href="PRunBase_8h_source.html#l00285">PRunBase::fTheory</a>.</p>
</div>
</div>
<a id="a54445267cc4b9a56ddc1daafa506e0bf" name="a54445267cc4b9a56ddc1daafa506e0bf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a54445267cc4b9a56ddc1daafa506e0bf">&#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 PRunSingleHistoRRF::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 χ² using theory variance instead of data variance. </p>
<p>Computes expected chi-squared where the error estimate comes from the theory prediction rather than the data: </p><p class="formulaDsp">
<picture><source srcset="form_40_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[\chi^2_{\rm exp} = \sum_{i} \frac{[A_{\rm RRF}^{\rm data}(t_i) - A_{\rm RRF}^{\rm theory}(t_i)]^2}{A_{\rm RRF}^{\rm theory}(t_i)}
\]" src="form_40.png"/></picture>
</p>
<p>This is useful for diagnostic purposes to check fit quality.</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>Expected χ² value</dd></dl>
<p>Computes the expected chi-square where the error estimate in the denominator comes from the theory prediction rather than the data: </p><p class="formulaDsp">
<picture><source srcset="form_107_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[\chi^2_{\rm exp} = \sum_{i=t_{\rm start}}^{t_{\rm end}} \frac{[A_{\rm RRF}^{\rm data}(t_i) - A_{\rm RRF}^{\rm theory}(t_i)]^2}{A_{\rm RRF}^{\rm theory}(t_i)}
\]" src="form_107.png"/></picture>
</p>
<p>This metric is useful for:</p><ul>
<li>Diagnostic purposes to assess fit quality</li>
<li>Detecting systematic deviations from the model</li>
<li>Comparing with standard χ² to identify error estimation issues</li>
</ul>
<p><b>Algorithm:</b> Same as <a class="el" href="#a20acaae4f31c28daa5a5b2046cb861ce" title="Calculates χ² between RRF-transformed data and theory.">CalcChiSquare()</a> but uses theory value as variance estimate instead of measured error bars. OpenMP parallelization is applied when available.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">par</td><td>Parameter vector from MINUIT minimizer</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Expected χ² value. For a good fit, this should be approximately equal to the number of degrees of freedom (N_bins - N_params).</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>Theory values must be positive for valid variance estimate. Negative theory values can lead to incorrect χ² calculation.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a20acaae4f31c28daa5a5b2046cb861ce" title="Calculates χ² between RRF-transformed data and theory.">CalcChiSquare()</a> </dd></dl>
<p>Implements <a class="el" href="classPRunBase.html#a1a15d5f51a874149b0d60798f99449a6">PRunBase</a>.</p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00306">306</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00425">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="PRunSingleHistoRRF_8h_source.html#l00424">fStartTimeBin</a>, and <a class="el" href="PRunBase_8h_source.html#l00285">PRunBase::fTheory</a>.</p>
</div>
</div>
<a id="ad2ee805b0b66aa9c034802d869c6712b" name="ad2ee805b0b66aa9c034802d869c6712b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad2ee805b0b66aa9c034802d869c6712b">&#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 PRunSingleHistoRRF::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 yet implemented for RRF). </p>
<p>Calculates maximum likelihood for RRF data (NOT YET IMPLEMENTED).</p>
<p>Maximum likelihood estimation for RRF data is more complex due to the transformation from Poisson-distributed counts to RRF asymmetry. Currently 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>0.0 (not implemented)</dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000001">Todo</a></b></dt><dd>Implement proper ML for RRF data accounting for error propagation through the RRF transformation. </dd></dl>
<p>Maximum likelihood estimation for RRF single histogram data is more complex than for raw histograms due to the non-linear transformation from Poisson-distributed counts to RRF asymmetry.</p>
<p><b>Theoretical Background:</b> For raw histogram data, the likelihood is: </p><p class="formulaDsp">
<picture><source srcset="form_108_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[\mathcal{L} = \prod_i \frac{\mu_i^{n_i} e^{-\mu_i}}{n_i!}
\]" src="form_108.png"/></picture>
</p>
<p> where <picture><source srcset="form_109_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$\mu_i$" src="form_109.png"/></picture> is the expected count and <picture><source srcset="form_110_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$n_i$" src="form_110.png"/></picture> is the observed count.</p>
<p>For RRF-transformed data, the error propagation through the transformation must be properly accounted for in the likelihood function.</p>
<p><b>Current Implementation:</b> Returns 0.0 (not implemented). Use χ² minimization (CalcChiSquare) instead.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">par</td><td>Parameter vector from MINUIT minimizer (unused)</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0.0 (not implemented)</dd></dl>
<dl class="todo"><dt><b><a class="el" href="todo.html#_todo000006">Todo</a></b></dt><dd>Implement proper maximum likelihood for RRF data by:<ol type="1">
<li>Deriving the likelihood function for transformed asymmetry</li>
<li>Accounting for error propagation through RRF transformation</li>
<li>Including correlations introduced by packing</li>
</ol>
</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a20acaae4f31c28daa5a5b2046cb861ce" title="Calculates χ² between RRF-transformed data and theory.">CalcChiSquare()</a> for currently supported fit metric </dd></dl>
<p>Implements <a class="el" href="classPRunBase.html#a5d7a15b6962e3767860ef9b4c9208201">PRunBase</a>.</p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00378">378</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.cpp</a>.</p>
</div>
</div>
<a id="af702d4108e8383bed131f393e2a0dcf4" name="af702d4108e8383bed131f393e2a0dcf4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af702d4108e8383bed131f393e2a0dcf4">&#9670;&#160;</a></span>CalcNoOfFitBins()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void PRunSingleHistoRRF::CalcNoOfFitBins </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>Calculates start/end bin indices from fit time range. </p>
<p>Converts fit range times (μs) to RRF-packed bin indices:</p><ul>
<li>fStartTimeBin = ceil((fFitStartTime - dataTimeStart) / dataTimeStep)</li>
<li>fEndTimeBin = floor((fFitEndTime - dataTimeStart) / dataTimeStep) + 1</li>
</ul>
<p>Also updates fNoOfFitBins = fEndTimeBin - fStartTimeBin.</p>
<dl class="section note"><dt>Note</dt><dd>Time step accounts for RRF packing: dataTimeStep = rawTimeStep × fRRFPacking</dd></dl>
<p>Converts the fit range from time (μs) to RRF-packed bin indices. This method is called whenever the fit range may have changed.</p>
<p><b>Conversion Formulas:</b> </p><p class="formulaDsp">
<picture><source srcset="form_113_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[i_{\rm start} = \lceil \frac{t_{\rm start} - t_{\rm data,0}}{\Delta t_{\rm data}} \rceil
\]" src="form_113.png"/></picture>
</p>
<p class="formulaDsp">
<picture><source srcset="form_114_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[i_{\rm end} = \lfloor \frac{t_{\rm end} - t_{\rm data,0}}{\Delta t_{\rm data}} \rfloor + 1
\]" src="form_114.png"/></picture>
</p>
<p>where:</p><ul>
<li><picture><source srcset="form_115_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$t_{\rm data,0}$" src="form_115.png"/></picture> = fData.GetDataTimeStart() (first RRF-packed bin center)</li>
<li><picture><source srcset="form_116_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$\Delta t_{\rm data}$" src="form_116.png"/></picture> = fData.GetDataTimeStep() (RRF-packed bin width)</li>
</ul>
<p><b>Bounds Checking:</b></p><ul>
<li>fStartTimeBin clamped to [0, data size)</li>
<li>fEndTimeBin clamped to [0, data size]</li>
<li>fNoOfFitBins = 0 if fEndTimeBin &lt;= fStartTimeBin</li>
</ul>
<p><b>Side Effects:</b> Updates member variables:</p><ul>
<li>fStartTimeBin: First bin index in fit range (inclusive)</li>
<li>fEndTimeBin: Last bin index in fit range (exclusive)</li>
<li>fNoOfFitBins: Number of bins = fEndTimeBin - fStartTimeBin</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>Time step includes RRF packing: dataTimeStep = rawTimeRes × fRRFPacking</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#aec3aac4e64931206a360598fb3363a68" title="Returns the number of bins included in the current fit range.">GetNoOfFitBins()</a>, <a class="el" href="#adaf4b75ab0ca72305da9e58d578c7314" title="Sets fit range using bin-offset syntax from COMMANDS block.">SetFitRangeBin()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00641">641</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00425">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="PRunSingleHistoRRF_8h_source.html#l00416">fNoOfFitBins</a>, and <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00424">fStartTimeBin</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00472">GetNoOfFitBins()</a>, and <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00906">PrepareFitData()</a>.</p>
</div>
</div>
<a id="af5efc7a53365a692d8fe4c0bb7938a2f" name="af5efc7a53365a692d8fe4c0bb7938a2f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af5efc7a53365a692d8fe4c0bb7938a2f">&#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 PRunSingleHistoRRF::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 at all data points for viewing/plotting. </p>
<p>Calculates RRF theory values using current fit parameters stored in the MSR parameter list. The theory function P(t) is evaluated at each data time point and results are stored in fData for display.</p>
<dl class="section note"><dt>Note</dt><dd>Theory is evaluated directly in the RRF frame, not transformed. The THEORY block should specify the low-frequency RRF signal.</dd></dl>
<p>Calculates the theoretical RRF asymmetry using the current MSR parameter values and stores results in fData for display. This method is called after fitting to generate the theory curve overlay.</p>
<p><b>Algorithm:</b></p><ol type="1">
<li>Extract parameter values from MSR parameter list</li>
<li>Evaluate all user-defined functions from FUNCTIONS block</li>
<li>Loop over data points (size matches RRF-packed data)</li>
<li>Calculate time: t = dataTimeStart + i × dataTimeStep</li>
<li>Evaluate theory: P(t) = Func(t, par, funcValues)</li>
<li>Store results via fData.AppendTheoryValue()</li>
</ol>
<p><b>Theory Function:</b> The theory is evaluated directly in the RRF frame. The THEORY block should specify the low-frequency RRF signal (after transformation), not the laboratory-frame high-frequency precession.</p>
<p>Example THEORY block for RRF analysis: </p><div class="fragment"><div class="line">THEORY</div>
<div class="line"> asymmetry 1 (amplitude)</div>
<div class="line"> simpleGss 2 (Gaussian relaxation)</div>
<div class="line"> TFieldCos map1 fun1 (frequency shift, phase)</div>
</div><!-- fragment --><p>where the frequency in TFieldCos is the difference frequency (ω - ω_RRF).</p>
<dl class="section note"><dt>Note</dt><dd>Unlike <a class="el" href="#a20acaae4f31c28daa5a5b2046cb861ce" title="Calculates χ² between RRF-transformed data and theory.">CalcChiSquare()</a>, this method does not return a value. Results are stored internally in fData.fTheory vector.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a20acaae4f31c28daa5a5b2046cb861ce" title="Calculates χ² between RRF-transformed data and theory.">CalcChiSquare()</a>, <a class="el" href="#a8d5ea8242073e34b0186a662e1f66869" title="Prepares RRF data for viewing/plotting.">PrepareViewData()</a> </dd></dl>
<p>Implements <a class="el" href="classPRunBase.html#a0dde056d0acd7f0ac4dc12380e4063e7">PRunBase</a>.</p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00423">423</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.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="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, and <a class="el" href="PRunBase_8h_source.html#l00285">PRunBase::fTheory</a>.</p>
</div>
</div>
<a id="a9b73cc476c39a5781f577a86c870f4aa" name="a9b73cc476c39a5781f577a86c870f4aa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9b73cc476c39a5781f577a86c870f4aa">&#9670;&#160;</a></span>EstimateBkg()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Bool_t PRunSingleHistoRRF::EstimateBkg </td>
<td>(</td>
<td class="paramtype">UInt_t</td> <td class="paramname"><span class="paramname"><em>histoNo</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span><span class="mlabel virtual">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Estimates background from pre-t0 bins. </p>
<p>Estimates background level and error from pre-t0 histogram bins.</p>
<p>Calculates background level and error from specified background range:</p><ol type="1">
<li>Validates background range is within histogram bounds</li>
<li>Adjusts range to integer number of accelerator RF cycles (PSI/RAL/TRIUMF)</li>
<li>Computes mean and standard deviation</li>
<li>Stores in fBackground and fBkgErr</li>
</ol>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">histoNo</td><td>Histogram index (for error messages) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true on success, false if background range invalid</dd></dl>
<p>Calculates the background (random coincidences, accidentals) from a specified range of histogram bins, typically before t0. The background range is adjusted to span an integer number of accelerator RF cycles for proper averaging.</p>
<p><b>Accelerator RF Periods:</b></p><ul>
<li>PSI: ACCEL_PERIOD_PSI ns</li>
<li>RAL: ACCEL_PERIOD_RAL ns</li>
<li>TRIUMF: ACCEL_PERIOD_TRIUMF ns</li>
<li>Unknown: no RF adjustment</li>
</ul>
<p><b>Algorithm:</b></p><ol type="1">
<li>Get background range [start, end] from RUN block</li>
<li>Swap start/end if in wrong order (with message)</li>
<li>Determine accelerator RF period from institute name</li>
<li>Adjust end to span integer number of RF cycles</li>
<li>Validate range is within histogram bounds</li>
<li>Calculate mean background: <picture><source srcset="form_128_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ B = \frac{1}{n}\sum_{i={\rm start}}^{{\rm end}} N(i) $" src="form_128.png"/></picture></li>
<li>Calculate background error (standard deviation): <picture><source srcset="form_129_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ \sigma_B = \sqrt{\frac{1}{n-1}\sum_{i={\rm start}}^{{\rm end}} (N(i) - B)^2} $" src="form_129.png"/></picture></li>
<li>Store results in fBackground and fBkgErr</li>
<li>Update RUN block with estimated background value</li>
</ol>
<p><b>Output Information:</b> Prints diagnostic messages:</p><ul>
<li>Adjusted background range (if RF adjustment applied)</li>
<li>Background value and error: "fBackground = value (error)"</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">histoNo</td><td>Forward histogram number (for error message context)</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true on success, false on error:<ul>
<li>Background start out of histogram bounds</li>
<li>Background end out of histogram bounds</li>
</ul>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The RF cycle adjustment ensures proper averaging over the accelerator bunch structure, reducing systematic bias.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a3d7f8f12b68f67821a2891b9432bf8d2" title="Performs full RRF transformation for fitting.">PrepareFitData()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01718">1718</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.cpp</a>.</p>
<p class="reference">References <a class="el" href="PMusr_8h_source.html#l00149">ACCEL_PERIOD_PSI</a>, <a class="el" href="PMusr_8h_source.html#l00153">ACCEL_PERIOD_RAL</a>, <a class="el" href="PMusr_8h_source.html#l00151">ACCEL_PERIOD_TRIUMF</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00417">fBackground</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00418">fBkgErr</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00427">fForward</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, and <a class="el" href="PRunBase_8h_source.html#l00276">PRunBase::fTimeResolution</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00906">PrepareFitData()</a>.</p>
</div>
</div>
<a id="a3b473fe7da2670dd7381c729dea86244" name="a3b473fe7da2670dd7381c729dea86244"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3b473fe7da2670dd7381c729dea86244">&#9670;&#160;</a></span>EstimateN0()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Double_t PRunSingleHistoRRF::EstimateN0 </td>
<td>(</td>
<td class="paramtype">Double_t &amp;</td> <td class="paramname"><span class="paramname"><em>errN0</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Double_t</td> <td class="paramname"><span class="paramname"><em>freqMax</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span><span class="mlabel virtual">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Estimates initial normalization N₀ from lifetime-corrected data. </p>
<p>Estimates initial normalization N₀ from lifetime-corrected histogram data.</p>
<p>Calculates N₀ as weighted average of M(t) over initial time window: </p><p class="formulaDsp">
<picture><source srcset="form_41_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[N_0 = \frac{\sum_{i=0}^{n} M(t_i)}{n}
\]" src="form_41.png"/></picture>
</p>
<p>The window length is chosen to include an integer number of complete oscillation cycles (based on freqMax) within fN0EstimateEndTime.</p>
<p>Error estimate: </p><p class="formulaDsp">
<picture><source srcset="form_42_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[\sigma_{N_0} = \frac{\sqrt{\sum w_i^2 \sigma_{M_i}^2}}{\sum w_i}
\]" src="form_42.png"/></picture>
</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">errN0</td><td>[out] Estimated error on N₀ </td></tr>
<tr><td class="paramname">freqMax</td><td>Main precession frequency (MHz) for window calculation </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Estimated N₀ value</dd></dl>
<p>Calculates N₀ by averaging the lifetime-corrected signal M(t) over an initial time window. The window is chosen to span an integer number of complete precession cycles to minimize bias from oscillations.</p>
<p><b>N₀ Estimation Formula:</b> </p><p class="formulaDsp">
<picture><source srcset="form_125_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[N_0 = \frac{1}{n} \sum_{i=0}^{n-1} M(t_i)
\]" src="form_125.png"/></picture>
</p>
<p>where M(t) = [N(t) - B] × exp(+t/τ_μ) is the lifetime-corrected histogram stored in fM vector.</p>
<p><b>Window Determination:</b> The end bin is calculated to include an integer number of oscillation cycles: </p><p class="formulaDsp">
<picture><source srcset="form_126_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[n_{\rm end} = {\rm round}\left( \left\lceil \frac{T \cdot f_{\rm max}}{2\pi} \right\rceil \cdot \frac{2\pi}{f_{\rm max} \cdot \Delta t} \right)
\]" src="form_126.png"/></picture>
</p>
<p>where:</p><ul>
<li>T = fN0EstimateEndTime (default 1.0 μs)</li>
<li>f_max = main precession frequency from <a class="el" href="#a2a095182422c0b8903d4533d5df9eed9" title="Finds the dominant precession frequency in raw data.">GetMainFrequency()</a></li>
<li>Δt = fTimeResolution</li>
</ul>
<p><b>Error Estimation:</b> </p><p class="formulaDsp">
<picture><source srcset="form_127_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[\sigma_{N_0} = \frac{\sqrt{\sum_{i=0}^{n-1} w_i^2 \sigma_{M_i}^2}}{\sum_{i=0}^{n-1} w_i}
\]" src="form_127.png"/></picture>
</p>
<p>where w_i = 1/σ_M_i² are the weights stored in fW vector.</p>
<p><b>Output Information:</b> Prints diagnostic message: "N₀ = value (error)"</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">errN0</td><td>[out] Reference to store the estimated error on N₀ </td></tr>
<tr><td class="paramname">freqMax</td><td>Main precession frequency (MHz) from <a class="el" href="#a2a095182422c0b8903d4533d5df9eed9" title="Finds the dominant precession frequency in raw data.">GetMainFrequency()</a></td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Estimated N₀ value (counts × exp(+t/τ))</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The simple average (rather than weighted average) is used for N₀ itself, while the error uses the full weight information.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a2a095182422c0b8903d4533d5df9eed9" title="Finds the dominant precession frequency in raw data.">GetMainFrequency()</a>, <a class="el" href="#a3d7f8f12b68f67821a2891b9432bf8d2" title="Performs full RRF transformation for fitting.">PrepareFitData()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01645">1645</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00428">fM</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00429">fMerr</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00414">fN0EstimateEndTime</a>, <a class="el" href="PRunBase_8h_source.html#l00276">PRunBase::fTimeResolution</a>, and <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00430">fW</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00906">PrepareFitData()</a>.</p>
</div>
</div>
<a id="a2cdd91931dd4577890546a7113436665" name="a2cdd91931dd4577890546a7113436665"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2cdd91931dd4577890546a7113436665">&#9670;&#160;</a></span>GetEndTimeBin()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual Int_t PRunSingleHistoRRF::GetEndTimeBin </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 inline">inline</span><span class="mlabel virtual">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the last bin index in the fit range (exclusive). </p>
<dl class="section return"><dt>Returns</dt><dd>End bin index (loop condition: i &lt; fEndTimeBin) </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00312">312</a> of file <a class="el" href="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00425">fEndTimeBin</a>.</p>
</div>
</div>
<a id="a2a095182422c0b8903d4533d5df9eed9" name="a2a095182422c0b8903d4533d5df9eed9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2a095182422c0b8903d4533d5df9eed9">&#9670;&#160;</a></span>GetMainFrequency()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Double_t PRunSingleHistoRRF::GetMainFrequency </td>
<td>(</td>
<td class="paramtype"><a class="el" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> &amp;</td> <td class="paramname"><span class="paramname"><em>data</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span><span class="mlabel virtual">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Finds the dominant precession frequency in raw data. </p>
<p>Finds the dominant precession frequency in raw histogram data.</p>
<p>Performs Fourier transform on raw histogram data to identify the main muon precession frequency:</p><ol type="1">
<li>Creates TH1F from data in good bin range</li>
<li>Applies strong apodization (windowing)</li>
<li>Computes power spectrum</li>
<li>Searches for maximum above 10 MHz (ignores DC component)</li>
</ol>
<p>The frequency is used to:</p><ul>
<li>Determine optimal N₀ estimation window (integer cycles)</li>
<li>Calculate suggested "optimal packing" for user information</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>Raw histogram data vector </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Maximum frequency in MHz, or 0 if not found</dd></dl>
<p>Performs Fourier analysis on the raw histogram to identify the main muon spin precession frequency. This is essential for:</p><ul>
<li>Determining optimal N₀ estimation window (integer oscillation cycles)</li>
<li>Calculating suggested "optimal packing" for user information</li>
<li>Validating that the RRF frequency is appropriate</li>
</ul>
<p><b>Algorithm:</b></p><ol type="1">
<li>Create ROOT TH1F histogram from data in good bin range [fGoodBins[0], fGoodBins[1]]</li>
<li>Set histogram binning to match time structure</li>
<li>Apply Fourier transform using <a class="el" href="classPFourier.html">PFourier</a> class</li>
<li>Use strong apodization (windowing) to reduce spectral leakage</li>
<li>Search power spectrum for maximum above 10 MHz (ignores DC component)</li>
<li>Return frequency at maximum power</li>
</ol>
<p><b>Frequency Search Constraints:</b></p><ul>
<li>Ignores frequencies below 10 MHz (DC and low-frequency noise)</li>
<li>Searches for local maximum (rising then falling power)</li>
<li>Returns 0 if no clear maximum found</li>
</ul>
<p><b>Output Information:</b> The method prints diagnostic information:</p><ul>
<li>Detected maximum frequency (MHz)</li>
<li>Suggested optimal packing for ~5-8 points per cycle</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">data</td><td>Raw histogram data vector (counts per bin)</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Maximum frequency in MHz, or 0 if no maximum found above 10 MHz.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The frequency is used to determine the N₀ estimation window: window = ceil(fN0EstimateEndTime × freqMax / 2π) × (2π / freqMax) This ensures an integer number of complete oscillation cycles.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a3b473fe7da2670dd7381c729dea86244" title="Estimates initial normalization N₀ from lifetime-corrected data.">EstimateN0()</a>, <a class="el" href="#a3d7f8f12b68f67821a2891b9432bf8d2" title="Performs full RRF transformation for fitting.">PrepareFitData()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01554">1554</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.cpp</a>.</p>
<p class="reference">References <a class="el" href="PFourier_8h_source.html#l00059">F_APODIZATION_STRONG</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00422">fGoodBins</a>, <a class="el" href="PMusr_8h_source.html#l00276">FOURIER_UNIT_FREQ</a>, <a class="el" href="PRunBase_8h_source.html#l00278">PRunBase::fT0s</a>, and <a class="el" href="PRunBase_8h_source.html#l00276">PRunBase::fTimeResolution</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00906">PrepareFitData()</a>.</p>
</div>
</div>
<a id="aec3aac4e64931206a360598fb3363a68" name="aec3aac4e64931206a360598fb3363a68"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec3aac4e64931206a360598fb3363a68">&#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 PRunSingleHistoRRF::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 bins included in the current fit range. </p>
<p>Triggers <a class="el" href="#af702d4108e8383bed131f393e2a0dcf4" title="Calculates start/end bin indices from fit time range.">CalcNoOfFitBins()</a> to ensure bin count is current, then returns the cached value.</p>
<dl class="section return"><dt>Returns</dt><dd>Number of RRF-packed bins within [fFitStartTime, fFitEndTime]</dd></dl>
<p>Triggers <a class="el" href="#af702d4108e8383bed131f393e2a0dcf4" title="Calculates start/end bin indices from fit time range.">CalcNoOfFitBins()</a> to ensure the bin count is current based on the latest fit range settings, then returns the cached value.</p>
<p>The number of fit bins is needed for:</p><ul>
<li>Calculating degrees of freedom: ν = N_bins - N_params</li>
<li>Reduced χ²: χ²_red = χ² / ν</li>
<li>Statistical diagnostics and fit quality assessment</li>
</ul>
<dl class="section return"><dt>Returns</dt><dd>Number of RRF-packed bins within [fFitStartTime, fFitEndTime]. This accounts for RRF packing: fewer bins than raw data.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The fit range may be modified during fitting by COMMANDS block instructions. Always call this method to get the current count.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#af702d4108e8383bed131f393e2a0dcf4" title="Calculates start/end bin indices from fit time range.">CalcNoOfFitBins()</a>, <a class="el" href="#adaf4b75ab0ca72305da9e58d578c7314" title="Sets fit range using bin-offset syntax from COMMANDS block.">SetFitRangeBin()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00472">472</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00641">CalcNoOfFitBins()</a>, and <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00416">fNoOfFitBins</a>.</p>
</div>
</div>
<a id="ad2f3a3cbc00f42870a695a6012f4aaeb" name="ad2f3a3cbc00f42870a695a6012f4aaeb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad2f3a3cbc00f42870a695a6012f4aaeb">&#9670;&#160;</a></span>GetProperDataRange()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Bool_t PRunSingleHistoRRF::GetProperDataRange </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 private">private</span><span class="mlabel virtual">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Determines valid data range (first/last good bins). </p>
<p>Determines valid data range (first/last good bins) for analysis.</p>
<p>Establishes analysis boundaries in order of priority:</p><ol type="1">
<li>RUN block data range specification</li>
<li>GLOBAL block data range specification</li>
<li>Automatic estimation (t0 + 10ns offset to end of histogram)</li>
</ol>
<p>Validates that range is sensible (start &lt; end, within histogram bounds).</p>
<dl class="section return"><dt>Returns</dt><dd>true if valid data range determined, false on error</dd></dl>
<p>Establishes the boundaries of usable histogram data through a priority cascade. The data range defines which bins contain valid signal (after t0, before noise/overflow).</p>
<p><b>Data Range Search Priority:</b></p><ol type="1">
<li>RUN block: data range specified in MSR file RUN block</li>
<li>GLOBAL block: fallback data range from GLOBAL block</li>
<li>Automatic estimation: estimate from t0 (with warning)<ul>
<li>Start: t0 + 10 ns offset</li>
<li>End: histogram length</li>
</ul>
</li>
</ol>
<p><b>Validation:</b></p><ol type="1">
<li>Check start &lt; end (swap if reversed)</li>
<li>Check start ≥ 0 and start &lt; histogram size</li>
<li>Check end ≥ 0 (adjust if &gt; histogram size with warning)</li>
</ol>
<p><b>Result:</b> Sets fGoodBins[0] (first good bin) and fGoodBins[1] (last good bin). These are used for:</p><ul>
<li>RRF transformation range</li>
<li>Fit range specification in bins (fgb+n0 lgb-n1)</li>
<li>Data validity checking</li>
</ul>
<dl class="section return"><dt>Returns</dt><dd>true if valid data range determined, false on:<ul>
<li>Start bin out of bounds</li>
<li>End bin negative</li>
<li>Other range validation failures</li>
</ul>
</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The data range is typically wider than the fit range. Data range defines where valid data exists; fit range defines what is fitted.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a8190e9405a89a9121ad67d3940c75f3d" title="Determines fit time range from MSR file settings.">GetProperFitRange()</a>, <a class="el" href="#acf61e38a66398bcb2d37d890aa099da6" title="Determines and validates t0 values for all histograms.">GetProperT0()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01362">1362</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00427">fForward</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00422">fGoodBins</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="PRunBase_8h_source.html#l00278">PRunBase::fT0s</a>, and <a class="el" href="PRunBase_8h_source.html#l00276">PRunBase::fTimeResolution</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00706">PrepareData()</a>.</p>
</div>
</div>
<a id="a8190e9405a89a9121ad67d3940c75f3d" name="a8190e9405a89a9121ad67d3940c75f3d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8190e9405a89a9121ad67d3940c75f3d">&#9670;&#160;</a></span>GetProperFitRange()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void PRunSingleHistoRRF::GetProperFitRange </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classPMsrGlobalBlock.html">PMsrGlobalBlock</a> *</td> <td class="paramname"><span class="paramname"><em>globalBlock</em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span><span class="mlabel virtual">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Determines fit time range from MSR file settings. </p>
<p>Extracts fit range in order of priority:</p><ol type="1">
<li>RUN block fit range (time-based or bin-based)</li>
<li>GLOBAL block fit range (time-based or bin-based)</li>
<li>Default to data range (fgb to lgb) with warning</li>
</ol>
<p>Converts bin-based specifications to time using t0 and time resolution.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">globalBlock</td><td>GLOBAL block with default fit settings</td></tr>
</table>
</dd>
</dl>
<p>Extracts the fit range (time window for parameter extraction) through a priority cascade. Supports both time-based and bin-based specifications.</p>
<p><b>Fit Range Formats:</b></p><ul>
<li>Time-based: <code>fit</code> <code>0.1</code> <code>8.0</code> (in microseconds relative to t0)</li>
<li>Bin-based: <code>fit</code> <code>fgb+100</code> <code>lgb-500</code> (bins relative to good bins)</li>
</ul>
<p><b>Search Priority:</b></p><ol type="1">
<li>RUN block time-based fit range</li>
<li>RUN block bin-based fit range (converted to time)</li>
<li>GLOBAL block time-based fit range</li>
<li>GLOBAL block bin-based fit range (converted to time)</li>
<li>Default to data range (fgb to lgb) with warning</li>
</ol>
<p><b>Bin-to-Time Conversion:</b> </p><p class="formulaDsp">
<picture><source srcset="form_111_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[t_{\rm start} = ({\rm fgb} + n_0 - t_0) \times \Delta t
\]" src="form_111.png"/></picture>
</p>
<p class="formulaDsp">
<picture><source srcset="form_112_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[t_{\rm end} = ({\rm lgb} - n_1 - t_0) \times \Delta t
\]" src="form_112.png"/></picture>
</p>
<p>where Δt = fTimeResolution (raw, before RRF packing).</p>
<p><b>Result:</b> Sets fFitStartTime and fFitEndTime in microseconds relative to t0. These define the range used in χ² calculation.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">globalBlock</td><td>Pointer to GLOBAL block for fallback fit range settings</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>The converted time values are written back to the MSR data structures for log file output consistency.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>If no fit range is specified, the full data range is used with a warning message. This may not be appropriate for all analyses.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ad2f3a3cbc00f42870a695a6012f4aaeb" title="Determines valid data range (first/last good bins).">GetProperDataRange()</a>, <a class="el" href="#adaf4b75ab0ca72305da9e58d578c7314" title="Sets fit range using bin-offset syntax from COMMANDS block.">SetFitRangeBin()</a>, <a class="el" href="#af702d4108e8383bed131f393e2a0dcf4" title="Calculates start/end bin indices from fit time range.">CalcNoOfFitBins()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01481">1481</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.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="PRunSingleHistoRRF_8h_source.html#l00422">fGoodBins</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunBase_8h_source.html#l00278">PRunBase::fT0s</a>, <a class="el" href="PRunBase_8h_source.html#l00276">PRunBase::fTimeResolution</a>, <a class="el" href="PMusr_8cpp_source.html#l01104">PMsrGlobalBlock::GetFitRange()</a>, <a class="el" href="PMusr_8cpp_source.html#l01141">PMsrGlobalBlock::GetFitRangeOffset()</a>, <a class="el" href="PMusr_8h_source.html#l01048">PMsrGlobalBlock::IsFitRangeInBin()</a>, <a class="el" href="PMusr_8h_source.html#l00172">PMUSR_UNDEFINED</a>, and <a class="el" href="PMusr_8cpp_source.html#l01121">PMsrGlobalBlock::SetFitRange()</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00706">PrepareData()</a>.</p>
</div>
</div>
<a id="acf61e38a66398bcb2d37d890aa099da6" name="acf61e38a66398bcb2d37d890aa099da6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf61e38a66398bcb2d37d890aa099da6">&#9670;&#160;</a></span>GetProperT0()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Bool_t PRunSingleHistoRRF::GetProperT0 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classPRawRunData.html">PRawRunData</a> *</td> <td class="paramname"><span class="paramname"><em>runData</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classPMsrGlobalBlock.html">PMsrGlobalBlock</a> *</td> <td class="paramname"><span class="paramname"><em>globalBlock</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="PMusr_8h.html#a01eec7e896afb5c4601dea91ee31477b">PUIntVector</a> &amp;</td> <td class="paramname"><span class="paramname"><em>histoNo</em></span>&#160;)</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span><span class="mlabel virtual">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Determines and validates t0 values for all histograms. </p>
<p>Determines and validates t0 values for all histograms in the run.</p>
<p>Searches for t0 in order of priority:</p><ol type="1">
<li>RUN block t0 specification</li>
<li>GLOBAL block t0 specification</li>
<li>Data file header t0 values</li>
<li>Automatic estimation (with warning)</li>
</ol>
<p>Also handles addt0 for addrun histograms.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">runData</td><td>Raw run data for histogram access </td></tr>
<tr><td class="paramname">globalBlock</td><td>GLOBAL block with default t0 values </td></tr>
<tr><td class="paramname">histoNo</td><td>Vector of histogram indices to process </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if valid t0 found for all histograms, false on error</dd></dl>
<p>Searches for time-zero (t0) values through a priority cascade and performs validation. t0 marks the muon arrival time and is critical for proper timing alignment.</p>
<p><b>t0 Search Priority:</b></p><ol type="1">
<li>RUN block: t0 values specified in the MSR file RUN block</li>
<li>GLOBAL block: fallback t0 values from GLOBAL block</li>
<li>Data file: t0 values stored in the raw data file header</li>
<li>Automatic estimation: estimated from histogram shape (with warning)</li>
</ol>
<p><b>Algorithm:</b></p><ol type="1">
<li>Initialize fT0s vector with size = number of forward histograms (grouping)</li>
<li>Set all t0 values to -1.0 (unset marker)</li>
<li>Fill from RUN block if present</li>
<li>Fill remaining -1.0 values from GLOBAL block</li>
<li>Fill remaining -1.0 values from data file</li>
<li>Fill remaining -1.0 values from automatic estimation (with warning)</li>
<li>Validate all t0 values are within histogram bounds</li>
</ol>
<p><b>Addrun Handling:</b> When multiple runs are co-added (addrun), each additional run needs its own t0 value for proper time alignment:</p><ol type="1">
<li>Initialize fAddT0s[runIdx] for each addrun</li>
<li>Apply same priority cascade for each addrun</li>
<li>Validate addrun t0 values</li>
</ol>
<p><b>Validation:</b></p><ul>
<li>t0 must be ≥ 0</li>
<li>t0 must be &lt; histogram length</li>
<li>Error message and return false on validation failure</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">runData</td><td>Pointer to raw run data for histogram access and data file t0 </td></tr>
<tr><td class="paramname">globalBlock</td><td>Pointer to GLOBAL block for fallback t0 values </td></tr>
<tr><td class="paramname">histoNo</td><td>Vector of histogram indices (0-based) for forward grouping</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if valid t0 found for all histograms, false on:<ul>
<li>t0 out of histogram bounds</li>
<li>addrun data not accessible</li>
<li>addrun t0 validation failure</li>
</ul>
</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>Automatic t0 estimation is unreliable for LEM and other specialized setups. Always specify t0 explicitly for best results.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ad2f3a3cbc00f42870a695a6012f4aaeb" title="Determines valid data range (first/last good bins).">GetProperDataRange()</a>, <a class="el" href="#a64b5a3e7a52fd3e5cce6e02e67325391" title="Main data preparation orchestrator for RRF single histogram analysis.">PrepareData()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01205">1205</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00279">PRunBase::fAddT0s</a>, <a class="el" href="PRunBase_8h_source.html#l00273">PRunBase::fRawData</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunBase_8h_source.html#l00278">PRunBase::fT0s</a>, <a class="el" href="PMusr_8h_source.html#l00877">PRawRunData::GetDataBin()</a>, <a class="el" href="PMusr_8cpp_source.html#l00988">PMsrGlobalBlock::GetT0Bin()</a>, <a class="el" href="PMusr_8h_source.html#l00870">PRawRunData::GetT0Bin()</a>, <a class="el" href="PMusr_8h_source.html#l00871">PRawRunData::GetT0BinEstimated()</a>, and <a class="el" href="PMusr_8h_source.html#l01043">PMsrGlobalBlock::GetT0BinSize()</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00706">PrepareData()</a>.</p>
</div>
</div>
<a id="a3e05f197f3001addcca00d04131a2f57" name="a3e05f197f3001addcca00d04131a2f57"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3e05f197f3001addcca00d04131a2f57">&#9670;&#160;</a></span>GetStartTimeBin()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual Int_t PRunSingleHistoRRF::GetStartTimeBin </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 inline">inline</span><span class="mlabel virtual">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the first bin index in the fit range. </p>
<dl class="section return"><dt>Returns</dt><dd>Start bin index (0-based, after RRF packing) </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00306">306</a> of file <a class="el" href="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00424">fStartTimeBin</a>.</p>
</div>
</div>
<a id="a64b5a3e7a52fd3e5cce6e02e67325391" name="a64b5a3e7a52fd3e5cce6e02e67325391"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a64b5a3e7a52fd3e5cce6e02e67325391">&#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 PRunSingleHistoRRF::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 RRF single histogram analysis. </p>
<p>Coordinates loading and preprocessing of histogram data:</p><ol type="1">
<li>Validates GLOBAL block presence and RRF parameters</li>
<li>Retrieves raw run data from data handler</li>
<li>Extracts metadata (field, energy, temperature)</li>
<li>Collects histogram numbers from RUN block forward specification</li>
<li>Validates histograms exist in data file</li>
<li>Determines time resolution (ns → μs conversion)</li>
<li>Determines t0 values via <a class="el" href="#acf61e38a66398bcb2d37d890aa099da6" title="Determines and validates t0 values for all histograms.">GetProperT0()</a></li>
<li>Handles addrun (co-adding multiple runs)</li>
<li>Handles grouping (combining multiple detectors)</li>
<li>Determines data range via <a class="el" href="#ad2f3a3cbc00f42870a695a6012f4aaeb" title="Determines valid data range (first/last good bins).">GetProperDataRange()</a></li>
<li>Determines fit range via <a class="el" href="#a8190e9405a89a9121ad67d3940c75f3d" title="Determines fit time range from MSR file settings.">GetProperFitRange()</a></li>
<li>Calls <a class="el" href="#a3d7f8f12b68f67821a2891b9432bf8d2" title="Performs full RRF transformation for fitting.">PrepareFitData()</a> or <a class="el" href="#a8d5ea8242073e34b0186a662e1f66869" title="Prepares RRF data for viewing/plotting.">PrepareViewData()</a> based on tag</li>
</ol>
<dl class="section return"><dt>Returns</dt><dd>true if data preparation succeeds, false on any error</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a3d7f8f12b68f67821a2891b9432bf8d2" title="Performs full RRF transformation for fitting.">PrepareFitData()</a>, <a class="el" href="#a8d5ea8242073e34b0186a662e1f66869" title="Prepares RRF data for viewing/plotting.">PrepareViewData()</a></dd></dl>
<p>Coordinates the loading and preprocessing of histogram data before RRF transformation. This method handles all operations common to both fitting and viewing modes.</p>
<p><b>Processing Steps:</b></p><ol type="1">
<li>Validate object state (return false if already marked invalid)</li>
<li>Get GLOBAL block reference for settings</li>
<li>Load raw run data from data handler using run name from MSR file</li>
<li>Extract metadata from data file:<ul>
<li>Magnetic field (fMetaData.fField)</li>
<li>Beam energy (fMetaData.fEnergy)</li>
<li>Sample temperature(s) (fMetaData.fTemp)</li>
</ul>
</li>
<li>Collect histogram numbers from RUN block forward specification</li>
<li>Validate all specified histograms exist in data file</li>
<li>Determine time resolution: ns → μs conversion</li>
<li>Determine t0 values via <a class="el" href="#acf61e38a66398bcb2d37d890aa099da6" title="Determines and validates t0 values for all histograms.">GetProperT0()</a></li>
<li>Initialize forward histogram from first group</li>
<li>Handle addrun (co-add multiple runs with t0 alignment)</li>
<li>Handle grouping (combine multiple detectors with t0 alignment)</li>
<li>Determine data range via <a class="el" href="#ad2f3a3cbc00f42870a695a6012f4aaeb" title="Determines valid data range (first/last good bins).">GetProperDataRange()</a></li>
<li>Determine fit range via <a class="el" href="#a8190e9405a89a9121ad67d3940c75f3d" title="Determines fit time range from MSR file settings.">GetProperFitRange()</a></li>
<li>Dispatch to <a class="el" href="#a3d7f8f12b68f67821a2891b9432bf8d2" title="Performs full RRF transformation for fitting.">PrepareFitData()</a> or <a class="el" href="#a8d5ea8242073e34b0186a662e1f66869" title="Prepares RRF data for viewing/plotting.">PrepareViewData()</a> based on tag</li>
</ol>
<p><b>Run Addition (addrun):</b> When multiple runs are specified in the RUN block, histograms are co-added with t0 alignment: </p><div class="fragment"><div class="line"><a class="code hl_variable" href="#a0e4d26779c4dc79cb6257b7a018c75b2">fForward</a>[i] += addRunData[i + addT0 - mainT0]</div>
<div class="ttc" id="aclassPRunSingleHistoRRF_html_a0e4d26779c4dc79cb6257b7a018c75b2"><div class="ttname"><a href="#a0e4d26779c4dc79cb6257b7a018c75b2">PRunSingleHistoRRF::fForward</a></div><div class="ttdeci">PDoubleVector fForward</div><div class="ttdoc">Forward detector histogram data (progressively transformed during preparation)</div><div class="ttdef"><b>Definition</b> <a href="PRunSingleHistoRRF_8h_source.html#l00427">PRunSingleHistoRRF.h:427</a></div></div>
</div><!-- fragment --><p><b>Detector Grouping:</b> When multiple forward histograms are specified, they are summed with t0 alignment to form a single combined histogram.</p>
<dl class="section return"><dt>Returns</dt><dd>true if data preparation succeeds, false on any error:<ul>
<li>Run data not found</li>
<li>Histogram not present in data file</li>
<li>Invalid t0 determination</li>
<li>Data range validation failure</li>
<li>Fit/view data preparation failure</li>
</ul>
</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a3d7f8f12b68f67821a2891b9432bf8d2" title="Performs full RRF transformation for fitting.">PrepareFitData()</a>, <a class="el" href="#a8d5ea8242073e34b0186a662e1f66869" title="Prepares RRF data for viewing/plotting.">PrepareViewData()</a>, <a class="el" href="#acf61e38a66398bcb2d37d890aa099da6" title="Determines and validates t0 values for all histograms.">GetProperT0()</a>, <a class="el" href="#ad2f3a3cbc00f42870a695a6012f4aaeb" title="Determines valid data range (first/last good bins).">GetProperDataRange()</a> </dd></dl>
<p>Implements <a class="el" href="classPRunBase.html#a108aca748689e37a7e045a770677b517">PRunBase</a>.</p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00706">706</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00279">PRunBase::fAddT0s</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00427">fForward</a>, <a class="el" href="PRunBase_8h_source.html#l00268">PRunBase::fHandleTag</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#l00273">PRunBase::fRawData</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunBase_8h_source.html#l00278">PRunBase::fT0s</a>, <a class="el" href="PRunBase_8h_source.html#l00276">PRunBase::fTimeResolution</a>, <a class="el" href="PRunBase_8h_source.html#l00266">PRunBase::fValid</a>, <a class="el" href="PMusr_8h_source.html#l00877">PRawRunData::GetDataBin()</a>, <a class="el" href="PMusr_8h_source.html#l00864">PRawRunData::GetEnergy()</a>, <a class="el" href="PMusr_8h_source.html#l00859">PRawRunData::GetField()</a>, <a class="el" href="PMusr_8h_source.html#l00860">PRawRunData::GetNoOfTemperatures()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01362">GetProperDataRange()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01481">GetProperFitRange()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01205">GetProperT0()</a>, <a class="el" href="PMusr_8h_source.html#l00861">PRawRunData::GetTemperature()</a>, <a class="el" href="PMusr_8h_source.html#l00868">PRawRunData::GetTimeResolution()</a>, <a class="el" href="PMusr_8h_source.html#l00869">PRawRunData::IsPresent()</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="PRunSingleHistoRRF_8cpp_source.html#l00906">PrepareFitData()</a>, and <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01092">PrepareViewData()</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00132">PRunSingleHistoRRF()</a>.</p>
</div>
</div>
<a id="a3d7f8f12b68f67821a2891b9432bf8d2" name="a3d7f8f12b68f67821a2891b9432bf8d2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3d7f8f12b68f67821a2891b9432bf8d2">&#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 PRunSingleHistoRRF::PrepareFitData </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classPRawRunData.html">PRawRunData</a> *</td> <td class="paramname"><span class="paramname"><em>runData</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const UInt_t</td> <td class="paramname"><span class="paramname"><em>histoNo</em></span>&#160;)</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>Performs full RRF transformation for fitting. </p>
<p>Performs full RRF transformation on histogram data for fitting.</p>
<p>Transforms raw histogram to RRF asymmetry through these steps:</p>
<ol type="1">
<li><b>Frequency Analysis:</b><ul>
<li>Calls <a class="el" href="#a2a095182422c0b8903d4533d5df9eed9" title="Finds the dominant precession frequency in raw data.">GetMainFrequency()</a> to find dominant precession frequency</li>
<li>Used to determine optimal N₀ estimation window</li>
</ul>
</li>
<li><b>Background Handling:</b><ul>
<li>If background range given: estimate from data via <a class="el" href="#a9b73cc476c39a5781f577a86c870f4aa" title="Estimates background from pre-t0 bins.">EstimateBkg()</a></li>
<li>If fixed background given: use directly</li>
<li>Subtract background: N(t) → N(t) - B</li>
</ul>
</li>
<li><b>Lifetime Correction:</b><ul>
<li>Apply exp(+t/τ_μ) to remove exponential decay</li>
<li>Store as M(t) = [N(t) - B] × exp(+t/τ_μ)</li>
<li>Calculate M_err = exp(+t/τ_μ) × √(N(t) + σ_B²)</li>
</ul>
</li>
<li><b>N₀ Estimation:</b><ul>
<li>Call <a class="el" href="#a3b473fe7da2670dd7381c729dea86244" title="Estimates initial normalization N₀ from lifetime-corrected data.">EstimateN0()</a> to determine normalization</li>
<li>Uses weighted average over full oscillation cycles</li>
</ul>
</li>
<li><b>Asymmetry Extraction:</b><ul>
<li>A(t) = M(t)/N₀ - 1</li>
<li>A_err(t) = exp(+t/τ)/N₀ × √(N(t) + [(N(t)-B)/N₀]² × σ_N₀²)</li>
</ul>
</li>
<li><b>RRF Rotation:</b><ul>
<li>A_RRF(t) = 2 × A(t) × cos(ω_RRF × t + φ_RRF)</li>
<li>Factor 2 compensates for discarded counter-rotating component</li>
</ul>
</li>
<li><b>RRF Packing:</b><ul>
<li>Average over fRRFPacking consecutive bins</li>
<li>Error: σ_packed = √(2 × Σσ²) / n</li>
</ul>
</li>
<li><b>Time Grid Setup:</b><ul>
<li>Set data time start accounting for packing offset</li>
<li>Set data time step = raw_resolution × fRRFPacking</li>
</ul>
</li>
</ol>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">runData</td><td>Raw run data handler </td></tr>
<tr><td class="paramname">histoNo</td><td>Forward histogram number (0-based) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true on success, false on error</dd></dl>
<p>Takes the pre-processed histogram (grouping and addrun already applied) and transforms it into RRF asymmetry suitable for fitting. This is the core method implementing the RRF analysis technique.</p>
<p><b>Processing Steps:</b></p>
<p><b>1. Frequency Analysis:</b></p><ul>
<li>Calls <a class="el" href="#a2a095182422c0b8903d4533d5df9eed9" title="Finds the dominant precession frequency in raw data.">GetMainFrequency()</a> on raw data to find dominant precession frequency</li>
<li>Used to determine optimal N₀ estimation window (integer oscillation cycles)</li>
<li>Prints "optimal packing" suggestion for user reference</li>
</ul>
<p><b>2. Background Handling:</b></p><ul>
<li>If fixed background specified: use directly from RUN block</li>
<li>If background range given: estimate via <a class="el" href="#a9b73cc476c39a5781f577a86c870f4aa" title="Estimates background from pre-t0 bins.">EstimateBkg()</a></li>
<li>If neither: estimate range as [0.1×t0, 0.6×t0] with warning</li>
<li>Subtract background: N(t) → N(t) - B</li>
</ul>
<p><b>3. Lifetime Correction:</b> </p><p class="formulaDsp">
<picture><source srcset="form_117_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[M(t) = [N(t) - B] \cdot e^{+t/\tau_\mu}
\]" src="form_117.png"/></picture>
</p>
<ul>
<li>Removes exponential decay from signal</li>
<li>Error: <picture><source srcset="form_118_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$\sigma_M = e^{+t/\tau_\mu} \sqrt{N(t) + \sigma_B^2}$" src="form_118.png"/></picture></li>
<li>Weights: <picture><source srcset="form_119_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$w = 1/\sigma_M^2$" src="form_119.png"/></picture></li>
</ul>
<p><b>4. N₀ Estimation:</b></p><ul>
<li>Call <a class="el" href="#a3b473fe7da2670dd7381c729dea86244" title="Estimates initial normalization N₀ from lifetime-corrected data.">EstimateN0()</a> with frequency information</li>
<li>Uses average of M(t) over integer number of oscillation cycles</li>
<li>Returns N₀ and its error σ_N₀</li>
</ul>
<p><b>5. Asymmetry Extraction:</b> </p><p class="formulaDsp">
<picture><source srcset="form_120_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[A(t) = \frac{M(t)}{N_0} - 1
\]" src="form_120.png"/></picture>
</p>
<p> Error propagation: </p><p class="formulaDsp">
<picture><source srcset="form_121_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[\sigma_A(t) = \frac{e^{+t/\tau_\mu}}{N_0} \sqrt{N(t) + \left(\frac{N(t)-B}{N_0}\right)^2 \sigma_{N_0}^2}
\]" src="form_121.png"/></picture>
</p>
<p><b>6. RRF Rotation:</b> </p><p class="formulaDsp">
<picture><source srcset="form_122_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[A_{\rm RRF}(t) = 2 \cdot A(t) \cdot \cos(\omega_{\rm RRF} t + \phi_{\rm RRF})
\]" src="form_122.png"/></picture>
</p>
<ul>
<li>ω_RRF from GLOBAL block (rrf_freq converted to angular frequency)</li>
<li>φ_RRF from GLOBAL block (rrf_phase in radians)</li>
<li>Factor 2 compensates for discarded counter-rotating component</li>
</ul>
<p><b>7. RRF Packing:</b></p><ul>
<li>Average over fRRFPacking consecutive bins</li>
<li>Data: <picture><source srcset="form_123_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$A_{\rm packed} = \frac{1}{n}\sum_{i=1}^{n} A_{\rm RRF}(t_i)$" src="form_123.png"/></picture></li>
<li>Error: <picture><source srcset="form_124_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$\sigma_{\rm packed} = \frac{\sqrt{2}}{n}\sqrt{\sum_{i=1}^{n} \sigma_A^2(t_i)}$" src="form_124.png"/></picture></li>
<li>√2 factor accounts for doubling in RRF rotation</li>
</ul>
<p><b>8. Time Grid Setup:</b></p><ul>
<li>Data time start: accounts for packing offset (center of first packed bin)</li>
<li>Data time step: rawTimeResolution × fRRFPacking</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">runData</td><td>Raw run data handler (for background estimation) </td></tr>
<tr><td class="paramname">histoNo</td><td>Forward histogram number (0-based, for background error messages)</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true on success, false on error:<ul>
<li>Background estimation failure</li>
<li>Invalid bin ranges</li>
</ul>
</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a8d5ea8242073e34b0186a662e1f66869" title="Prepares RRF data for viewing/plotting.">PrepareViewData()</a>, <a class="el" href="#a2a095182422c0b8903d4533d5df9eed9" title="Finds the dominant precession frequency in raw data.">GetMainFrequency()</a>, <a class="el" href="#a3b473fe7da2670dd7381c729dea86244" title="Estimates initial normalization N₀ from lifetime-corrected data.">EstimateN0()</a>, <a class="el" href="#a9b73cc476c39a5781f577a86c870f4aa" title="Estimates background from pre-t0 bins.">EstimateBkg()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00906">906</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00641">CalcNoOfFitBins()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01718">EstimateBkg()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01645">EstimateN0()</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00431">fAerr</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00417">fBackground</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00418">fBkgErr</a>, <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00427">fForward</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00422">fGoodBins</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00428">fM</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00429">fMerr</a>, <a class="el" href="PRunBase_8h_source.html#l00271">PRunBase::fMsrInfo</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00419">fRRFPacking</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunBase_8h_source.html#l00278">PRunBase::fT0s</a>, <a class="el" href="PRunBase_8h_source.html#l00276">PRunBase::fTimeResolution</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00430">fW</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01554">GetMainFrequency()</a>, <a class="el" href="PMusr_8cpp_source.html#l00815">PMsrGlobalBlock::GetRRFFreq()</a>, <a class="el" href="PMusr_8h_source.html#l01039">PMsrGlobalBlock::GetRRFPhase()</a>, <a class="el" href="PMusr_8h_source.html#l00119">PMUON_LIFETIME</a>, and <a class="el" href="PMusr_8h_source.html#l00172">PMUSR_UNDEFINED</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00706">PrepareData()</a>, and <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01092">PrepareViewData()</a>.</p>
</div>
</div>
<a id="a8d5ea8242073e34b0186a662e1f66869" name="a8d5ea8242073e34b0186a662e1f66869"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8d5ea8242073e34b0186a662e1f66869">&#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 PRunSingleHistoRRF::PrepareViewData </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classPRawRunData.html">PRawRunData</a> *</td> <td class="paramname"><span class="paramname"><em>runData</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const UInt_t</td> <td class="paramname"><span class="paramname"><em>histoNo</em></span>&#160;)</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 RRF data for viewing/plotting. </p>
<p>Prepares RRF-transformed data for viewing/plotting.</p>
<p>Similar to <a class="el" href="#a3d7f8f12b68f67821a2891b9432bf8d2" title="Performs full RRF transformation for fitting.">PrepareFitData()</a> but additionally:</p><ul>
<li>Handles view packing (if specified and &gt; RRF packing)</li>
<li>Sets up theory calculation grid (8× finer than data if fTheoAsData=false)</li>
<li>Evaluates theory function for plotting overlay</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">runData</td><td>Raw run data handler </td></tr>
<tr><td class="paramname">histoNo</td><td>Forward histogram number </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true on success, false on error</dd></dl>
<dl class="section note"><dt>Note</dt><dd>View packing &lt; RRF packing is ignored with warning since RRF packing is already applied during data transformation.</dd></dl>
<p>Takes the pre-processed histogram and prepares both data and theory curves for display. This method is used when the operation mode is kView rather than kFit.</p>
<p><b>Processing Steps:</b></p>
<p><b>1. Data Preparation:</b></p><ul>
<li>Calls <a class="el" href="#a3d7f8f12b68f67821a2891b9432bf8d2" title="Performs full RRF transformation for fitting.">PrepareFitData()</a> to perform full RRF transformation</li>
<li>Data is ready for display after this step</li>
</ul>
<p><b>2. View Packing Check:</b></p><ul>
<li>Checks if additional view packing is specified in PLOT block</li>
<li>If viewPacking &gt; fRRFPacking: additional packing would be applied (TODO)</li>
<li>If viewPacking &lt; fRRFPacking: warning issued and view packing ignored (cannot unpack already-packed RRF data)</li>
</ul>
<p><b>3. Theory Grid Setup:</b> Determines theory evaluation resolution:</p><ul>
<li>If fTheoAsData = true: theory calculated only at data points</li>
<li>If fTheoAsData = false: theory calculated on 8× finer grid for smooth curves</li>
</ul>
<p>Time grid:</p><ul>
<li>Theory time start = data time start</li>
<li>Theory time step = data time step / factor (where factor = 1 or 8)</li>
</ul>
<p><b>4. Theory Evaluation:</b></p><ul>
<li>Extract parameter values from MSR parameter list</li>
<li>Evaluate all user-defined functions from FUNCTIONS block</li>
<li>Loop over theory grid points</li>
<li>Evaluate theory: P(t) = Func(t, par, funcValues)</li>
<li>Apply sanity check: |P(t)| &gt; 10 → set to 0 (dirty hack for edge cases)</li>
<li>Store results via fData.AppendTheoryValue()</li>
</ul>
<p><b>Theory Function:</b> The theory is evaluated directly in the RRF frame. The THEORY block should specify the low-frequency signal after RRF transformation, not the laboratory-frame high-frequency precession.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">runData</td><td>Raw run data handler (passed to PrepareFitData) </td></tr>
<tr><td class="paramname">histoNo</td><td>Forward histogram number (passed to PrepareFitData)</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true on success, false on error (typically from PrepareFitData)</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The 8× theory resolution provides smoother curves for visualization and better Fourier transforms without affecting fit performance.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a3d7f8f12b68f67821a2891b9432bf8d2" title="Performs full RRF transformation for fitting.">PrepareFitData()</a>, <a class="el" href="#af5efc7a53365a692d8fe4c0bb7938a2f" title="Evaluates theory function at all data points for viewing/plotting.">CalcTheory()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01092">1092</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00427">fForward</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="PRunSingleHistoRRF_8h_source.html#l00419">fRRFPacking</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00420">fTheoAsData</a>, <a class="el" href="PRunBase_8h_source.html#l00285">PRunBase::fTheory</a>, and <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00906">PrepareFitData()</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00706">PrepareData()</a>.</p>
</div>
</div>
<a id="adaf4b75ab0ca72305da9e58d578c7314" name="adaf4b75ab0ca72305da9e58d578c7314"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adaf4b75ab0ca72305da9e58d578c7314">&#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">void PRunSingleHistoRRF::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 virtual">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets fit range using bin-offset syntax from COMMANDS block. </p>
<p>Parses fit range specification in the format:</p><ul>
<li>"FIT_RANGE fgb+n0 lgb-n1" (single range for all runs)</li>
<li>"FIT_RANGE fgb+n00 lgb-n01 fgb+n10 lgb-n11 ..." (per-run ranges)</li>
</ul>
<p>where fgb = first good bin, lgb = last good bin, and nXY are offsets.</p>
<p>Converts bin specification to time using:</p><ul>
<li>fFitStartTime = (fgb + offset - t0) × time_resolution</li>
<li>fFitEndTime = (lgb - offset - t0) × time_resolution</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">fitRange</td><td>String containing FIT_RANGE specification</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>This is called when COMMANDS block modifies fit range during fitting.</dd></dl>
<p>Allows dynamic modification of the fit range during fitting, as specified in the COMMANDS block. This is used for systematic studies where the fit range needs to be varied.</p>
<p><b>Syntax:</b> </p><div class="fragment"><div class="line">FIT_RANGE fgb[+n0] lgb[-n1] # single range <span class="keywordflow">for</span> all runs</div>
<div class="line">FIT_RANGE fgb+n00 lgb-n01 fgb+n10 lgb-n11 ... # per-run ranges</div>
</div><!-- fragment --><p>where:</p><ul>
<li><code>fgb</code> = first good bin (symbolic, replaced by actual value)</li>
<li><code>lgb</code> = last good bin (symbolic, replaced by actual value)</li>
<li><code>+n0</code> = positive offset added to fgb</li>
<li><code>-n1</code> = positive offset subtracted from lgb</li>
</ul>
<p><b>Conversion to Time:</b> </p><p class="formulaDsp">
<picture><source srcset="form_111_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[t_{\rm start} = ({\rm fgb} + n_0 - t_0) \times \Delta t
\]" src="form_111.png"/></picture>
</p>
<p class="formulaDsp">
<picture><source srcset="form_112_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[t_{\rm end} = ({\rm lgb} - n_1 - t_0) \times \Delta t
\]" src="form_112.png"/></picture>
</p>
<p>where Δt is the raw time resolution (before RRF packing).</p>
<p><b>Multiple Run Handling:</b></p><ul>
<li>Single pair: Applied to all runs</li>
<li>Multiple pairs: Must match number of RUN blocks; each run uses its own range</li>
<li>Run selection: Uses (2 × runNo + 1) to index into token array</li>
</ul>
<p><b>Example:</b> </p><div class="fragment"><div class="line">COMMANDS</div>
<div class="line"> FIT_RANGE fgb+100 lgb-500 # start 100 bins after fgb, end 500 bins before lgb</div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">fitRange</td><td>String containing FIT_RANGE specification from COMMANDS block</td></tr>
</table>
</dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>Invalid syntax produces error message but does not throw exception. The previous fit range values are retained on error.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a8190e9405a89a9121ad67d3940c75f3d" title="Determines fit time range from MSR file settings.">GetProperFitRange()</a>, <a class="el" href="#af702d4108e8383bed131f393e2a0dcf4" title="Calculates start/end bin indices from fit time range.">CalcNoOfFitBins()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00529">529</a> of file <a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.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="PRunSingleHistoRRF_8h_source.html#l00422">fGoodBins</a>, <a class="el" href="PRunBase_8h_source.html#l00270">PRunBase::fRunNo</a>, <a class="el" href="PRunBase_8h_source.html#l00278">PRunBase::fT0s</a>, and <a class="el" href="PRunBase_8h_source.html#l00276">PRunBase::fTimeResolution</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a28cf424562a7f425cf832fe95ab42609" name="a28cf424562a7f425cf832fe95ab42609"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28cf424562a7f425cf832fe95ab42609">&#9670;&#160;</a></span>fAerr</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="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> PRunSingleHistoRRF::fAerr</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>Asymmetry errors before RRF packing. Used for packed error calculation. </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00431">431</a> of file <a class="el" href="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00906">PrepareFitData()</a>.</p>
</div>
</div>
<a id="a490fb222bfbedda71a452d68ac085e8c" name="a490fb222bfbedda71a452d68ac085e8c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a490fb222bfbedda71a452d68ac085e8c">&#9670;&#160;</a></span>fBackground</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Double_t PRunSingleHistoRRF::fBackground</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>Estimated or fixed background level in counts/bin (before packing) </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00417">417</a> of file <a class="el" href="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01718">EstimateBkg()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00906">PrepareFitData()</a>, and <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00073">PRunSingleHistoRRF()</a>.</p>
</div>
</div>
<a id="ab715692e9f766a461a258d98707f1a94" name="ab715692e9f766a461a258d98707f1a94"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab715692e9f766a461a258d98707f1a94">&#9670;&#160;</a></span>fBkgErr</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Double_t PRunSingleHistoRRF::fBkgErr</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>Statistical error on background estimate (std dev of background region) </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00418">418</a> of file <a class="el" href="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01718">EstimateBkg()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00906">PrepareFitData()</a>, and <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00073">PRunSingleHistoRRF()</a>.</p>
</div>
</div>
<a id="a1d52e0a5f50cfaa01fde2131fc5bdb8d" name="a1d52e0a5f50cfaa01fde2131fc5bdb8d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1d52e0a5f50cfaa01fde2131fc5bdb8d">&#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 PRunSingleHistoRRF::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>Last bin index in fit range (exclusive: loop as i &lt; fEndTimeBin) </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00425">425</a> of file <a class="el" href="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00239">CalcChiSquare()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00306">CalcChiSquareExpected()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00641">CalcNoOfFitBins()</a>, and <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00312">GetEndTimeBin()</a>.</p>
</div>
</div>
<a id="a0e4d26779c4dc79cb6257b7a018c75b2" name="a0e4d26779c4dc79cb6257b7a018c75b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0e4d26779c4dc79cb6257b7a018c75b2">&#9670;&#160;</a></span>fForward</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="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> PRunSingleHistoRRF::fForward</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>Forward detector histogram data (progressively transformed during preparation) </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00427">427</a> of file <a class="el" href="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01718">EstimateBkg()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01362">GetProperDataRange()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00706">PrepareData()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00906">PrepareFitData()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01092">PrepareViewData()</a>, and <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00193">~PRunSingleHistoRRF()</a>.</p>
</div>
</div>
<a id="aaf4a70aaf75bab55356a75dc83869ad0" name="aaf4a70aaf75bab55356a75dc83869ad0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf4a70aaf75bab55356a75dc83869ad0">&#9670;&#160;</a></span>fGoodBins</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Int_t PRunSingleHistoRRF::fGoodBins[2]</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>Good bin range: [0] = first good bin (fgb), [1] = last good bin (lgb). Used for COMMANDS block fit range specification. </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00422">422</a> of file <a class="el" href="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01554">GetMainFrequency()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01362">GetProperDataRange()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01481">GetProperFitRange()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00906">PrepareFitData()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00073">PRunSingleHistoRRF()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00132">PRunSingleHistoRRF()</a>, and <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00529">SetFitRangeBin()</a>.</p>
</div>
</div>
<a id="a9188ea8e610cc22798280636c8b53beb" name="a9188ea8e610cc22798280636c8b53beb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9188ea8e610cc22798280636c8b53beb">&#9670;&#160;</a></span>fM</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="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> PRunSingleHistoRRF::fM</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>Lifetime-corrected histogram: M(t) = [N(t) - B] × exp(+t/τ_μ). Used for N₀ estimation. </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00428">428</a> of file <a class="el" href="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01645">EstimateN0()</a>, and <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00906">PrepareFitData()</a>.</p>
</div>
</div>
<a id="ab779bff30645d1b67be3ce4254b656c2" name="ab779bff30645d1b67be3ce4254b656c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab779bff30645d1b67be3ce4254b656c2">&#9670;&#160;</a></span>fMerr</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="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> PRunSingleHistoRRF::fMerr</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>Error on M(t): σ_M = exp(+t/τ_μ) × √(N(t) + σ_B²). Includes background error. </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00429">429</a> of file <a class="el" href="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01645">EstimateN0()</a>, and <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00906">PrepareFitData()</a>.</p>
</div>
</div>
<a id="ab5ace5bf93deb2df89c121063666f1c4" name="ab5ace5bf93deb2df89c121063666f1c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab5ace5bf93deb2df89c121063666f1c4">&#9670;&#160;</a></span>fN0EstimateEndTime</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Double_t PRunSingleHistoRRF::fN0EstimateEndTime</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>End time (μs) for N₀ estimation window. Rounded to integer number of oscillation cycles based on main frequency. </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00414">414</a> of file <a class="el" href="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01645">EstimateN0()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00073">PRunSingleHistoRRF()</a>, and <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00132">PRunSingleHistoRRF()</a>.</p>
</div>
</div>
<a id="abef0b34e96c5bf89d4c1037e0008c52f" name="abef0b34e96c5bf89d4c1037e0008c52f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abef0b34e96c5bf89d4c1037e0008c52f">&#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 PRunSingleHistoRRF::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 RRF-packed bins within fit range [fStartTimeBin, fEndTimeBin) </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00416">416</a> of file <a class="el" href="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00641">CalcNoOfFitBins()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00472">GetNoOfFitBins()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00073">PRunSingleHistoRRF()</a>, and <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00132">PRunSingleHistoRRF()</a>.</p>
</div>
</div>
<a id="abe8ac887807ed2b4223ba3f983bdfb2d" name="abe8ac887807ed2b4223ba3f983bdfb2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe8ac887807ed2b4223ba3f983bdfb2d">&#9670;&#160;</a></span>fRRFPacking</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Int_t PRunSingleHistoRRF::fRRFPacking</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>RRF packing factor from GLOBAL block (number of raw bins averaged together) </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00419">419</a> of file <a class="el" href="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00906">PrepareFitData()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01092">PrepareViewData()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00073">PRunSingleHistoRRF()</a>, and <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00132">PRunSingleHistoRRF()</a>.</p>
</div>
</div>
<a id="a7dc91a4d7f10a68d7fe7e075d5449c50" name="a7dc91a4d7f10a68d7fe7e075d5449c50"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7dc91a4d7f10a68d7fe7e075d5449c50">&#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 PRunSingleHistoRRF::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>First bin index in fit range (inclusive, 0-based in RRF-packed data) </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00424">424</a> of file <a class="el" href="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00239">CalcChiSquare()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00306">CalcChiSquareExpected()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00641">CalcNoOfFitBins()</a>, and <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00306">GetStartTimeBin()</a>.</p>
</div>
</div>
<a id="a8ac1684d7102a6e627df9679353b1bcf" name="a8ac1684d7102a6e627df9679353b1bcf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8ac1684d7102a6e627df9679353b1bcf">&#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 PRunSingleHistoRRF::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 resolution mode: true = at data points only, false = 8× finer grid for smooth Fourier transforms. </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00420">420</a> of file <a class="el" href="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01092">PrepareViewData()</a>, <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00073">PRunSingleHistoRRF()</a>, and <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00132">PRunSingleHistoRRF()</a>.</p>
</div>
</div>
<a id="ad831240ac6214d41dee3d20f303b2b49" name="ad831240ac6214d41dee3d20f303b2b49"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad831240ac6214d41dee3d20f303b2b49">&#9670;&#160;</a></span>fW</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="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> PRunSingleHistoRRF::fW</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>Weights for N₀ estimation: W(t) = 1/σ_M². Used in weighted average. </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHistoRRF_8h_source.html#l00430">430</a> of file <a class="el" href="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l01645">EstimateN0()</a>, and <a class="el" href="PRunSingleHistoRRF_8cpp_source.html#l00906">PrepareFitData()</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="PRunSingleHistoRRF_8h_source.html">PRunSingleHistoRRF.h</a></li>
<li>/workspace/LMU/musrfit/src/classes/<a class="el" href="PRunSingleHistoRRF_8cpp_source.html">PRunSingleHistoRRF.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="classPRunSingleHistoRRF.html">PRunSingleHistoRRF</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>