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

2387 lines
184 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: PRunSingleHisto 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('classPRunSingleHisto.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="classPRunSingleHisto-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">PRunSingleHisto Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Class for fitting single detector histograms (basic time-differential μSR).
<a href="#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="PRunSingleHisto_8h_source.html">PRunSingleHisto.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for PRunSingleHisto:</div>
<div class="dyncontent">
<div class="center"><img src="classPRunSingleHisto__inherit__graph.png" border="0" usemap="#aPRunSingleHisto_inherit__map" alt="Inheritance graph"/></div>
<map name="aPRunSingleHisto_inherit__map" id="aPRunSingleHisto_inherit__map">
<area shape="rect" title="Class for fitting single detector histograms (basic time&#45;differential μSR)." alt="" coords="5,81,127,109"/>
<area shape="rect" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types." alt="" coords="26,5,106,33"/>
<area shape="poly" title=" " alt="" coords="69,49,69,81,63,81,63,49"/>
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for PRunSingleHisto:</div>
<div class="dyncontent">
<div class="center"><img src="classPRunSingleHisto__coll__graph.png" border="0" usemap="#aPRunSingleHisto_coll__map" alt="Collaboration graph"/></div>
<map name="aPRunSingleHisto_coll__map" id="aPRunSingleHisto_coll__map">
<area shape="rect" title="Class for fitting single detector histograms (basic time&#45;differential μSR)." alt="" coords="936,165,1057,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:a7e036829d2ee4421da864bfcb2c7684d" id="r_a7e036829d2ee4421da864bfcb2c7684d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7e036829d2ee4421da864bfcb2c7684d">PRunSingleHisto</a> ()</td></tr>
<tr class="memdesc:a7e036829d2ee4421da864bfcb2c7684d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor creating an empty, invalid single histogram run object. <br /></td></tr>
<tr class="separator:a7e036829d2ee4421da864bfcb2c7684d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28f6a71b90e032c43fc56ba3a471d930" id="r_a28f6a71b90e032c43fc56ba3a471d930"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a28f6a71b90e032c43fc56ba3a471d930">PRunSingleHisto</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:a28f6a71b90e032c43fc56ba3a471d930"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main constructor initializing a single histogram run from MSR file and data. <br /></td></tr>
<tr class="separator:a28f6a71b90e032c43fc56ba3a471d930"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b112c8b00fbe14f23244ce822b03603" id="r_a4b112c8b00fbe14f23244ce822b03603"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a4b112c8b00fbe14f23244ce822b03603">~PRunSingleHisto</a> ()</td></tr>
<tr class="memdesc:a4b112c8b00fbe14f23244ce822b03603"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual destructor cleaning up allocated resources. <br /></td></tr>
<tr class="separator:a4b112c8b00fbe14f23244ce822b03603"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a114f2de78d118cadfd3a90dc28e1cf57" id="r_a114f2de78d118cadfd3a90dc28e1cf57"><td class="memItemLeft" align="right" valign="top">virtual Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a114f2de78d118cadfd3a90dc28e1cf57">CalcChiSquare</a> (const std::vector&lt; Double_t &gt; &amp;par)</td></tr>
<tr class="memdesc:a114f2de78d118cadfd3a90dc28e1cf57"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates χ² between histogram data and theory. <br /></td></tr>
<tr class="separator:a114f2de78d118cadfd3a90dc28e1cf57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2aa64a7b5b1b628c557c475efa6e0ba4" id="r_a2aa64a7b5b1b628c557c475efa6e0ba4"><td class="memItemLeft" align="right" valign="top">virtual Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2aa64a7b5b1b628c557c475efa6e0ba4">CalcChiSquareExpected</a> (const std::vector&lt; Double_t &gt; &amp;par)</td></tr>
<tr class="memdesc:a2aa64a7b5b1b628c557c475efa6e0ba4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates expected χ² based on theory predictions. <br /></td></tr>
<tr class="separator:a2aa64a7b5b1b628c557c475efa6e0ba4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5be2273a8f933fc8b4b3d398df302e14" id="r_a5be2273a8f933fc8b4b3d398df302e14"><td class="memItemLeft" align="right" valign="top">virtual Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5be2273a8f933fc8b4b3d398df302e14">CalcMaxLikelihood</a> (const std::vector&lt; Double_t &gt; &amp;par)</td></tr>
<tr class="memdesc:a5be2273a8f933fc8b4b3d398df302e14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates maximum likelihood for Poisson-distributed histogram counts. <br /></td></tr>
<tr class="separator:a5be2273a8f933fc8b4b3d398df302e14"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acee63e46149d3823ea699f917fa91e60" id="r_acee63e46149d3823ea699f917fa91e60"><td class="memItemLeft" align="right" valign="top">virtual Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acee63e46149d3823ea699f917fa91e60">CalcMaxLikelihoodExpected</a> (const std::vector&lt; Double_t &gt; &amp;par)</td></tr>
<tr class="memdesc:acee63e46149d3823ea699f917fa91e60"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates expected maximum likelihood. <br /></td></tr>
<tr class="separator:acee63e46149d3823ea699f917fa91e60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a684cbb35fa5e4a24681dd5b5ad3ad1f4" id="r_a684cbb35fa5e4a24681dd5b5ad3ad1f4"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a684cbb35fa5e4a24681dd5b5ad3ad1f4">CalcTheory</a> ()</td></tr>
<tr class="memdesc:a684cbb35fa5e4a24681dd5b5ad3ad1f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluates theory function at all data points or high-resolution grid. <br /></td></tr>
<tr class="separator:a684cbb35fa5e4a24681dd5b5ad3ad1f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a71b2648dc89bc990b2adbcb6c82168e5" id="r_a71b2648dc89bc990b2adbcb6c82168e5"><td class="memItemLeft" align="right" valign="top">virtual UInt_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a71b2648dc89bc990b2adbcb6c82168e5">GetNoOfFitBins</a> ()</td></tr>
<tr class="memdesc:a71b2648dc89bc990b2adbcb6c82168e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of bins included in the fit range. <br /></td></tr>
<tr class="separator:a71b2648dc89bc990b2adbcb6c82168e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80be353a51c1e9c200f557c872a7e46b" id="r_a80be353a51c1e9c200f557c872a7e46b"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a80be353a51c1e9c200f557c872a7e46b">SetFitRangeBin</a> (const TString fitRange)</td></tr>
<tr class="memdesc:a80be353a51c1e9c200f557c872a7e46b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets fit range using bin-offset specification (COMMANDS block syntax). <br /></td></tr>
<tr class="separator:a80be353a51c1e9c200f557c872a7e46b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95a25738b84e975d34d6ece2f07d42ad" id="r_a95a25738b84e975d34d6ece2f07d42ad"><td class="memItemLeft" align="right" valign="top">virtual Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a95a25738b84e975d34d6ece2f07d42ad">GetBackground</a> ()</td></tr>
<tr class="memdesc:a95a25738b84e975d34d6ece2f07d42ad"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the estimated background level. <br /></td></tr>
<tr class="separator:a95a25738b84e975d34d6ece2f07d42ad"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a62570fa4c6d86fac5796f1fe6912afe9" id="r_a62570fa4c6d86fac5796f1fe6912afe9"><td class="memItemLeft" align="right" valign="top">virtual Int_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a62570fa4c6d86fac5796f1fe6912afe9">GetStartTimeBin</a> ()</td></tr>
<tr class="memdesc:a62570fa4c6d86fac5796f1fe6912afe9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the first bin index in the fit range. <br /></td></tr>
<tr class="separator:a62570fa4c6d86fac5796f1fe6912afe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8186675fc3729c4dd086679de0acf700" id="r_a8186675fc3729c4dd086679de0acf700"><td class="memItemLeft" align="right" valign="top">virtual Int_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8186675fc3729c4dd086679de0acf700">GetEndTimeBin</a> ()</td></tr>
<tr class="memdesc:a8186675fc3729c4dd086679de0acf700"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the last bin index in the fit range (exclusive). <br /></td></tr>
<tr class="separator:a8186675fc3729c4dd086679de0acf700"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a693657dee12cae29299f150a009059" id="r_a6a693657dee12cae29299f150a009059"><td class="memItemLeft" align="right" valign="top">virtual Int_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6a693657dee12cae29299f150a009059">GetPacking</a> ()</td></tr>
<tr class="memdesc:a6a693657dee12cae29299f150a009059"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the bin packing factor. <br /></td></tr>
<tr class="separator:a6a693657dee12cae29299f150a009059"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b3225bdea736a38dca1b72873c5e45a" id="r_a7b3225bdea736a38dca1b72873c5e45a"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7b3225bdea736a38dca1b72873c5e45a">GetScaleN0AndBkg</a> ()</td></tr>
<tr class="memdesc:a7b3225bdea736a38dca1b72873c5e45a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the N₀/background scaling mode. <br /></td></tr>
<tr class="separator:a7b3225bdea736a38dca1b72873c5e45a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a194107943e61f591f132c2fc864a3792" id="r_a194107943e61f591f132c2fc864a3792"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a194107943e61f591f132c2fc864a3792">CalcNoOfFitBins</a> ()</td></tr>
<tr class="memdesc:a194107943e61f591f132c2fc864a3792"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates start/end bin indices from fit time range. <br /></td></tr>
<tr class="separator:a194107943e61f591f132c2fc864a3792"><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:ad4e3beb9d99143c8fd117438dbba7fff" id="r_ad4e3beb9d99143c8fd117438dbba7fff"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ad4e3beb9d99143c8fd117438dbba7fff">PrepareData</a> ()</td></tr>
<tr class="memdesc:ad4e3beb9d99143c8fd117438dbba7fff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main data preparation orchestrator. <br /></td></tr>
<tr class="separator:ad4e3beb9d99143c8fd117438dbba7fff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae5f41624e8c54b2f8eeb2313e3cfac8e" id="r_ae5f41624e8c54b2f8eeb2313e3cfac8e"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ae5f41624e8c54b2f8eeb2313e3cfac8e">PrepareFitData</a> (<a class="el" href="classPRawRunData.html">PRawRunData</a> *runData, const UInt_t histoNo)</td></tr>
<tr class="memdesc:ae5f41624e8c54b2f8eeb2313e3cfac8e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepares histogram data for fitting. <br /></td></tr>
<tr class="separator:ae5f41624e8c54b2f8eeb2313e3cfac8e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abdf5efcec3cc3da8904be1ecac33922c" id="r_abdf5efcec3cc3da8904be1ecac33922c"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#abdf5efcec3cc3da8904be1ecac33922c">PrepareRawViewData</a> (<a class="el" href="classPRawRunData.html">PRawRunData</a> *runData, const UInt_t histoNo)</td></tr>
<tr class="memdesc:abdf5efcec3cc3da8904be1ecac33922c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepares raw histogram data for viewing (minimal processing). <br /></td></tr>
<tr class="separator:abdf5efcec3cc3da8904be1ecac33922c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5b603055ea7f271497bc852e436a464f" id="r_a5b603055ea7f271497bc852e436a464f"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a5b603055ea7f271497bc852e436a464f">PrepareViewData</a> (<a class="el" href="classPRawRunData.html">PRawRunData</a> *runData, const UInt_t histoNo)</td></tr>
<tr class="memdesc:a5b603055ea7f271497bc852e436a464f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepares processed histogram data for viewing/plotting. <br /></td></tr>
<tr class="separator:a5b603055ea7f271497bc852e436a464f"><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:a92ee83617d6fe3f0451a360cfc93c892" id="r_a92ee83617d6fe3f0451a360cfc93c892"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a92ee83617d6fe3f0451a360cfc93c892">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:a92ee83617d6fe3f0451a360cfc93c892"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines and validates t0 values for histogram. <br /></td></tr>
<tr class="separator:a92ee83617d6fe3f0451a360cfc93c892"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c1dad5eddb29c1e6fc295ade612a29a" id="r_a8c1dad5eddb29c1e6fc295ade612a29a"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8c1dad5eddb29c1e6fc295ade612a29a">GetProperDataRange</a> ()</td></tr>
<tr class="memdesc:a8c1dad5eddb29c1e6fc295ade612a29a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines data range (region of valid histogram data). <br /></td></tr>
<tr class="separator:a8c1dad5eddb29c1e6fc295ade612a29a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f03b7b4d1faa25d8619d3060ec2d1b6" id="r_a7f03b7b4d1faa25d8619d3060ec2d1b6"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7f03b7b4d1faa25d8619d3060ec2d1b6">GetProperFitRange</a> (<a class="el" href="classPMsrGlobalBlock.html">PMsrGlobalBlock</a> *globalBlock)</td></tr>
<tr class="memdesc:a7f03b7b4d1faa25d8619d3060ec2d1b6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines fit range from MSR file settings. <br /></td></tr>
<tr class="separator:a7f03b7b4d1faa25d8619d3060ec2d1b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a741460485f8838de6a21c4797dec80e6" id="r_a741460485f8838de6a21c4797dec80e6"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a741460485f8838de6a21c4797dec80e6">EstimateN0</a> ()</td></tr>
<tr class="memdesc:a741460485f8838de6a21c4797dec80e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Estimates initial normalization N₀ from histogram data. <br /></td></tr>
<tr class="separator:a741460485f8838de6a21c4797dec80e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6167092dbec6d5144e603553d63a8110" id="r_a6167092dbec6d5144e603553d63a8110"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a6167092dbec6d5144e603553d63a8110">EstimateBkg</a> (UInt_t histoNo)</td></tr>
<tr class="memdesc:a6167092dbec6d5144e603553d63a8110"><td class="mdescLeft">&#160;</td><td class="mdescRight">Estimates background from pre-t0 bins. <br /></td></tr>
<tr class="separator:a6167092dbec6d5144e603553d63a8110"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2c5716a3db81fb1f8c253fdf759930b7" id="r_a2c5716a3db81fb1f8c253fdf759930b7"><td class="memItemLeft" align="right" valign="top">virtual Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2c5716a3db81fb1f8c253fdf759930b7">IsScaleN0AndBkg</a> ()</td></tr>
<tr class="memdesc:a2c5716a3db81fb1f8c253fdf759930b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines if N₀ and background should be scaled to 1/ns. <br /></td></tr>
<tr class="separator:a2c5716a3db81fb1f8c253fdf759930b7"><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:a8267ca69b0cf2a4e6934e927f227e74b" id="r_a8267ca69b0cf2a4e6934e927f227e74b"><td class="memItemLeft" align="right" valign="top">Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8267ca69b0cf2a4e6934e927f227e74b">fScaleN0AndBkg</a></td></tr>
<tr class="memdesc:a8267ca69b0cf2a4e6934e927f227e74b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Scaling mode: true = scale N₀ and B to 1/ns, false = leave as 1/bin (determined by <a class="el" href="#a2c5716a3db81fb1f8c253fdf759930b7" title="Determines if N₀ and background should be scaled to 1/ns.">IsScaleN0AndBkg()</a>) <br /></td></tr>
<tr class="separator:a8267ca69b0cf2a4e6934e927f227e74b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3263de8a471132410ce364542bd04a00" id="r_a3263de8a471132410ce364542bd04a00"><td class="memItemLeft" align="right" valign="top">UInt_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a3263de8a471132410ce364542bd04a00">fNoOfFitBins</a></td></tr>
<tr class="memdesc:a3263de8a471132410ce364542bd04a00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of bins within fit range (fStartTimeBin to fEndTimeBin) <br /></td></tr>
<tr class="separator:a3263de8a471132410ce364542bd04a00"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2df50725ab73222cad6c15698ba57cb9" id="r_a2df50725ab73222cad6c15698ba57cb9"><td class="memItemLeft" align="right" valign="top">Double_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a2df50725ab73222cad6c15698ba57cb9">fBackground</a></td></tr>
<tr class="memdesc:a2df50725ab73222cad6c15698ba57cb9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Background level in counts/bin (estimated from pre-t0 bins or fixed value from RUN block) <br /></td></tr>
<tr class="separator:a2df50725ab73222cad6c15698ba57cb9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2314ada7f993fd9fa07d365be4973e1" id="r_ab2314ada7f993fd9fa07d365be4973e1"><td class="memItemLeft" align="right" valign="top">Int_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#ab2314ada7f993fd9fa07d365be4973e1">fPacking</a></td></tr>
<tr class="memdesc:ab2314ada7f993fd9fa07d365be4973e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bin packing factor (REQUIRED: from RUN or GLOBAL block) <br /></td></tr>
<tr class="separator:ab2314ada7f993fd9fa07d365be4973e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab652fdbf5612f51b224bafb132968d7" id="r_aab652fdbf5612f51b224bafb132968d7"><td class="memItemLeft" align="right" valign="top">Bool_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aab652fdbf5612f51b224bafb132968d7">fTheoAsData</a></td></tr>
<tr class="memdesc:aab652fdbf5612f51b224bafb132968d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Theory mode: true = at data points, false = high-resolution grid for smooth Fourier transforms. <br /></td></tr>
<tr class="separator:aab652fdbf5612f51b224bafb132968d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aad79f1a5522f7b8dd02a931e1da46b72" id="r_aad79f1a5522f7b8dd02a931e1da46b72"><td class="memItemLeft" align="right" valign="top">Int_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aad79f1a5522f7b8dd02a931e1da46b72">fGoodBins</a> [2]</td></tr>
<tr class="memdesc:aad79f1a5522f7b8dd02a931e1da46b72"><td class="mdescLeft">&#160;</td><td class="mdescRight">Good bin markers for COMMANDS block: [0]=fgb (first good bin/t0), [1]=lgb (last good bin) <br /></td></tr>
<tr class="separator:aad79f1a5522f7b8dd02a931e1da46b72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af68e70c2788d8074b18e7e47f6546fbc" id="r_af68e70c2788d8074b18e7e47f6546fbc"><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="#af68e70c2788d8074b18e7e47f6546fbc">fForward</a></td></tr>
<tr class="memdesc:af68e70c2788d8074b18e7e47f6546fbc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Forward detector histogram (background-corrected, packed) <br /></td></tr>
<tr class="separator:af68e70c2788d8074b18e7e47f6546fbc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86de1420609e08e6fa277a6730ecb0a2" id="r_a86de1420609e08e6fa277a6730ecb0a2"><td class="memItemLeft" align="right" valign="top">Int_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a86de1420609e08e6fa277a6730ecb0a2">fStartTimeBin</a></td></tr>
<tr class="memdesc:a86de1420609e08e6fa277a6730ecb0a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">First bin index in fit range (inclusive, 0-based after packing) <br /></td></tr>
<tr class="separator:a86de1420609e08e6fa277a6730ecb0a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b36967f5d5df2e4085568ee3781e21e" id="r_a7b36967f5d5df2e4085568ee3781e21e"><td class="memItemLeft" align="right" valign="top">Int_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a7b36967f5d5df2e4085568ee3781e21e">fEndTimeBin</a></td></tr>
<tr class="memdesc:a7b36967f5d5df2e4085568ee3781e21e"><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:a7b36967f5d5df2e4085568ee3781e21e"><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 detector histograms (basic time-differential μSR). </p>
<p><a class="el" href="classPRunSingleHisto.html" title="Class for fitting single detector histograms (basic time-differential μSR).">PRunSingleHisto</a> implements the most fundamental μSR analysis: fitting a single positron detector histogram to extract relaxation parameters. This is the basis for all μSR measurements and is used when asymmetry analysis is not appropriate or desired.</p>
<h1><a class="anchor" id="singlehisto_physics"></a>
Physics and Applications</h1>
<p><b>Single histogram measurements are used for:</b></p><ul>
<li><b>Time-differential μSR:</b> Measure μ⁺ decay positron time spectrum</li>
<li><b>Detector calibration:</b> Characterize individual detector response</li>
<li><b>Transverse field (TF):</b> When forward/backward separation unnecessary</li>
<li><b>High statistics:</b> Use all positrons (no F-B discrimination)</li>
<li><b>Specialized geometries:</b> Non-standard detector arrangements</li>
<li><b>Method development:</b> Test fitting algorithms on single detector</li>
</ul>
<h1><a class="anchor" id="singlehisto_data"></a>
Data Structure and Analysis</h1>
<p><b>Histogram content:</b></p><ul>
<li>Raw counts vs. time from a single positron detector</li>
<li>Time-zero (t0): Muon arrival time marking start of decay</li>
<li>Background: Constant or estimated from pre-t0 bins</li>
<li>Signal: N(t) = N₀·exp(-t/τ_μ)·P(t) + B</li>
</ul>
<p>where:</p><ul>
<li>N₀ = initial count rate (normalization parameter)</li>
<li>τ_μ = 2.197 μs (muon lifetime)</li>
<li>P(t) = polarization function (contains physics: relaxation, oscillation, etc.)</li>
<li>B = background (random coincidences, accidentals)</li>
</ul>
<h1><a class="anchor" id="singlehisto_workflow"></a>
Analysis Workflow</h1>
<ol type="1">
<li><b>Load Histogram:</b> Read raw detector counts from data file</li>
<li><b>Determine t0:</b> Identify muon arrival time</li>
<li><b>Background Subtraction:</b><ul>
<li>Fixed: Subtract specified constant</li>
<li>Estimated: Calculate from pre-t0 bins, subtract with error propagation</li>
</ul>
</li>
<li><b>Bin Packing:</b> Rebin to improve statistics (optional)</li>
<li><b>Fit Range:</b> Select time window for parameter extraction</li>
<li><b>Theory Evaluation:</b> N_theory(t) = N₀·exp(-t/τ_μ)·P_theory(t) + B</li>
<li><b>Minimization:</b> χ² or maximum likelihood via MINUIT</li>
</ol>
<h1><a class="anchor" id="singlehisto_theory"></a>
Theory Function</h1>
<p>The fitted function is typically: </p><p class="formulaDsp">
<picture><source srcset="form_33_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ N(t) = N_0 e^{-t/\tau_\mu} P(t) + B \]" src="form_33.png"/></picture>
</p>
<p>Common polarization functions P(t):</p><ul>
<li><b>Static Gaussian:</b> P(t) = exp(-σ²t²/2)</li>
<li><b>Static Lorentzian:</b> P(t) = exp(-λt)</li>
<li><b>Dynamic relaxation:</b> P(t) = exp(-(λt)^β) (stretched exponential)</li>
<li><b>Oscillating:</b> P(t) = cos(ωt + φ) · exp(-λt)</li>
<li><b>Kubo-Toyabe:</b> Complex relaxation functions for spin systems</li>
</ul>
<h1><a class="anchor" id="singlehisto_parameters"></a>
Key Parameters</h1>
<p><b>Normalization (N₀):</b></p><ul>
<li>Can be fit parameter or fixed value</li>
<li>Can be derived from FUNCTIONS block</li>
<li>Automatically scaled to 1/ns or 1/bin (fScaleN0AndBkg)</li>
</ul>
<p><b>Background (B):</b></p><ul>
<li>Fixed: From "background" entry in RUN block</li>
<li>Estimated: Calculated from pre-t0 bin range</li>
<li>Units: counts/bin</li>
</ul>
<p><b>Packing:</b></p><ul>
<li>Number of consecutive bins to combine</li>
<li>REQUIRED parameter (RUN or GLOBAL block)</li>
<li>Higher packing → better statistics, worse time resolution</li>
</ul>
<h1><a class="anchor" id="singlehisto_msr"></a>
MSR File Example</h1>
<div class="fragment"><div class="line">RUN data/run2425 PSI MUE4 PSI MUSR-ROOT (name beamline)</div>
<div class="line"> fittype 0 (SingleHisto)</div>
<div class="line"> map 1 (forward histogram number)</div>
<div class="line"> forward 1</div>
<div class="line"> packing 50 (combine 50 bins → one packed bin)</div>
<div class="line"> background 50 150 (estimate from bins 50-150)</div>
<div class="line"> data 200 2000 (use bins 200-2000 for analysis)</div>
<div class="line"> t0 210.5 (muon arrival bin)</div>
<div class="line"> fit 0.1 10.0 (fit from 0.1 to 10.0 μs after t0)</div>
<div class="line"> </div>
<div class="line">THEORY</div>
<div class="line"> asymmetry 1</div>
<div class="line"> simpleGss 2 (Gaussian relaxation σ)</div>
<div class="line"> + 3 (constant background offset)</div>
</div><!-- fragment --><h1><a class="anchor" id="singlehisto_vs_asymmetry"></a>
Single Histo vs. Asymmetry</h1>
<table class="doxtable">
<tr>
<th>Feature</th><th>Single Histogram</th><th>Asymmetry </th></tr>
<tr>
<td>Detectors</td><td>One (forward)</td><td>Two (forward + backward) </td></tr>
<tr>
<td>Quantity fitted</td><td>N(t) counts</td><td>A(t) = (F-αB)/(F+αB) </td></tr>
<tr>
<td>Statistics</td><td>All positrons</td><td>F and B separately </td></tr>
<tr>
<td>Background</td><td>Additive B</td><td>Cancels in asymmetry </td></tr>
<tr>
<td>α parameter</td><td>N/A</td><td>Required (F/B asymmetry) </td></tr>
<tr>
<td>Use cases</td><td>TF, calibration</td><td>LF, ZF, weak TF </td></tr>
</table>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classPRunAsymmetry.html" title="Class for handling standard μSR asymmetry fits.">PRunAsymmetry</a> for forward-backward asymmetry analysis </dd>
<dd>
<a class="el" href="classPRunSingleHistoRRF.html" title="Class for fitting single histogram data in a Rotating Reference Frame (RRF).">PRunSingleHistoRRF</a> for rotating reference frame (high-TF) </dd>
<dd>
<a class="el" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types.">PRunBase</a> for base class interface and common functionality </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8h_source.html#l00143">143</a> of file <a class="el" href="PRunSingleHisto_8h_source.html">PRunSingleHisto.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a7e036829d2ee4421da864bfcb2c7684d" name="a7e036829d2ee4421da864bfcb2c7684d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7e036829d2ee4421da864bfcb2c7684d">&#9670;&#160;</a></span>PRunSingleHisto() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PRunSingleHisto::PRunSingleHisto </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 single histogram run object. </p>
<p>Default constructor for single histogram fitting class.</p>
<p>Initializes all member variables to default/invalid states:</p><ul>
<li>fScaleN0AndBkg = true (scale to 1/ns by default)</li>
<li>fNoOfFitBins = 0 (no bins to fit)</li>
<li>fBackground = 0 (no background)</li>
<li>fPacking = -1 (unspecified - will cause error if not set)</li>
<li>fTheoAsData = false (high-resolution theory grid)</li>
<li>Good bins markers = -1 (unset)</li>
<li>Fit range bins = -1 (unset)</li>
</ul>
<p>This constructor is needed for creating vectors of <a class="el" href="classPRunSingleHisto.html" title="Class for fitting single detector histograms (basic time-differential μSR).">PRunSingleHisto</a> objects. The resulting object cannot be used until properly initialized via the main constructor.</p>
<p>Initializes all member variables to safe default values:</p><ul>
<li>fScaleN0AndBkg = true (normalize N₀ and background to 1/ns)</li>
<li>fPacking = -1 (invalid until set from MSR file)</li>
<li>fBackground = 0 (will be estimated or set from MSR file)</li>
<li>fStartTimeBin / fEndTimeBin = -1 (calculated from fit range)</li>
<li>fGoodBins[0,1] = -1 (calculated from data range)</li>
</ul>
<dl class="section warning"><dt>Warning</dt><dd>This constructor creates an invalid object until initialized with MSR file data. Use the full constructor for normal operation. </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8cpp_source.html#l00065">65</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8h_source.html#l00370">fBackground</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00379">fEndTimeBin</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00374">fGoodBins</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00369">fNoOfFitBins</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00371">fPacking</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00368">fScaleN0AndBkg</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00378">fStartTimeBin</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00372">fTheoAsData</a>, and <a class="el" href="PRunBase_8cpp_source.html#l00054">PRunBase::PRunBase()</a>.</p>
</div>
</div>
<a id="a28f6a71b90e032c43fc56ba3a471d930" name="a28f6a71b90e032c43fc56ba3a471d930"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28f6a71b90e032c43fc56ba3a471d930">&#9670;&#160;</a></span>PRunSingleHisto() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PRunSingleHisto::PRunSingleHisto </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classPMsrHandler.html">PMsrHandler</a> *</td> <td class="paramname"><span class="paramname"><em>msrInfo</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classPRunDataHandler.html">PRunDataHandler</a> *</td> <td class="paramname"><span class="paramname"><em>rawData</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">UInt_t</td> <td class="paramname"><span class="paramname"><em>runNo</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="PMusr_8h.html#a3168a2cda2474c28fe329358530331ab">EPMusrHandleTag</a></td> <td class="paramname"><span class="paramname"><em>tag</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">Bool_t</td> <td class="paramname"><span class="paramname"><em>theoAsData</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Main constructor initializing a single histogram run from MSR file and data. </p>
<p>Main constructor for single histogram fitting and viewing.</p>
<p>Performs comprehensive initialization:</p>
<ol type="1">
<li><b>Base Class Initialization:</b><ul>
<li>Calls <a class="el" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types.">PRunBase</a> constructor</li>
<li>Initializes theory engine, parameter mappings, FUNCTIONS block</li>
</ul>
</li>
<li><b>N₀/Background Scaling:</b><ul>
<li>Calls <a class="el" href="#a2c5716a3db81fb1f8c253fdf759930b7" title="Determines if N₀ and background should be scaled to 1/ns.">IsScaleN0AndBkg()</a> to determine scaling mode</li>
<li>Sets fScaleN0AndBkg flag (true = scale to 1/ns, false = leave as 1/bin)</li>
</ul>
</li>
<li><b>Packing Validation (CRITICAL):</b><ul>
<li>Attempts to read packing from RUN block</li>
<li>Falls back to GLOBAL block if not in RUN</li>
<li>SEVERE ERROR if packing == -1 (mandatory parameter)</li>
<li>Marks run invalid and returns if packing not found</li>
</ul>
</li>
<li><b>Member Initialization:</b><ul>
<li>Good bin markers, fit range bins set to -1 (determined later)</li>
<li>Background initialized to 0 (set during PrepareData if specified)</li>
</ul>
</li>
<li><b>Data Preparation:</b><ul>
<li>Calls <a class="el" href="#ad4e3beb9d99143c8fd117438dbba7fff" title="Main data preparation orchestrator.">PrepareData()</a> to load and preprocess histogram</li>
<li>If <a class="el" href="#ad4e3beb9d99143c8fd117438dbba7fff" title="Main data preparation orchestrator.">PrepareData()</a> fails → marks run invalid</li>
</ul>
</li>
</ol>
<p>The object is marked as invalid (fValid=false) if:</p><ul>
<li>Packing parameter is missing from both RUN and GLOBAL blocks</li>
<li><a class="el" href="#ad4e3beb9d99143c8fd117438dbba7fff" title="Main data preparation orchestrator.">PrepareData()</a> fails (file not found, invalid t0, etc.)</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">msrInfo</td><td>Pointer to MSR file handler (must remain valid) </td></tr>
<tr><td class="paramname">rawData</td><td>Pointer to raw data handler for 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 mode: true = at data points, false = high-resolution</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. Packing is MANDATORY.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ad4e3beb9d99143c8fd117438dbba7fff" title="Main data preparation orchestrator.">PrepareData()</a> for data preprocessing details </dd>
<dd>
<a class="el" href="#a2c5716a3db81fb1f8c253fdf759930b7" title="Determines if N₀ and background should be scaled to 1/ns.">IsScaleN0AndBkg()</a> for scaling determination</dd></dl>
<p>Constructs a fully initialized single histogram run object by:</p><ol type="1">
<li>Extracting packing value from RUN block (or falling back to GLOBAL block)</li>
<li>Determining if N₀ and background should be scaled to 1/ns</li>
<li>Calling <a class="el" href="#ad4e3beb9d99143c8fd117438dbba7fff" title="Main data preparation orchestrator.">PrepareData()</a> to load and process histogram data</li>
<li>Setting up fit ranges and background estimation</li>
</ol>
<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 is 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>Packing MUST be specified either in the RUN block or GLOBAL block. If packing is not found, the constructor sets fValid=false and returns.</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.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ad4e3beb9d99143c8fd117438dbba7fff" title="Main data preparation orchestrator.">PrepareData()</a>, <a class="el" href="#a2c5716a3db81fb1f8c253fdf759930b7" title="Determines if N₀ and background should be scaled to 1/ns.">IsScaleN0AndBkg()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8cpp_source.html#l00108">108</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8h_source.html#l00370">fBackground</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00379">fEndTimeBin</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00374">fGoodBins</a>, <a class="el" href="PRunBase_8h_source.html#l00271">PRunBase::fMsrInfo</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00369">fNoOfFitBins</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00371">fPacking</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00368">fScaleN0AndBkg</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00378">fStartTimeBin</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00372">fTheoAsData</a>, <a class="el" href="PRunBase_8h_source.html#l00266">PRunBase::fValid</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l02412">IsScaleN0AndBkg()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01011">PrepareData()</a>, and <a class="el" href="PRunBase_8cpp_source.html#l00054">PRunBase::PRunBase()</a>.</p>
</div>
</div>
<a id="a4b112c8b00fbe14f23244ce822b03603" name="a4b112c8b00fbe14f23244ce822b03603"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4b112c8b00fbe14f23244ce822b03603">&#9670;&#160;</a></span>~PRunSingleHisto()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">PRunSingleHisto::~PRunSingleHisto </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 cleaning up allocated resources. </p>
<p>Destructor for single histogram fitting class.</p>
<p>Releases memory used by the forward histogram vector (fForward). Base class destructor handles cleanup of theory objects and other shared resources.</p>
<p>Cleans up dynamically allocated memory:</p><ul>
<li>Clears the forward histogram data vector</li>
<li>Base class destructor handles theory objects and other shared resources </li>
</ul>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8cpp_source.html#l00153">153</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8h_source.html#l00376">fForward</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a114f2de78d118cadfd3a90dc28e1cf57" name="a114f2de78d118cadfd3a90dc28e1cf57"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a114f2de78d118cadfd3a90dc28e1cf57">&#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 PRunSingleHisto::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 histogram data and theory. </p>
<p>Calculates χ² between data and theory (least-squares fit metric).</p>
<p>Computes chi-squared for single histogram fitting: </p><p class="formulaDsp">
<picture><source srcset="form_34_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ \chi^2 = \sum_{i} \frac{(N_i^{\rm data} - N_i^{\rm theory})^2}{\sigma_i^2} \]" src="form_34.png"/></picture>
</p>
<p>where N_theory(t) = N₀·exp(-t/τ_μ)·P(t) + B</p>
<p>Uses OpenMP parallelization when available. N₀ can be a fit parameter or derived from FUNCTIONS block.</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>χ² value (minimize during fitting)</dd></dl>
<p>Computes the standard chi-square goodness-of-fit statistic: </p><p class="formulaDsp">
<picture><source srcset="form_84_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[\chi^2 = \sum_{i=t_{\rm start}}^{t_{\rm end}} \frac{[N_i - N_{\rm theo}(t_i)]^2}{\sigma_i^2}
\]" src="form_84.png"/></picture>
</p>
<p>where the theory function is: </p><p class="formulaDsp">
<picture><source srcset="form_85_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[N_{\rm theo}(t) = N_0 e^{-t/\tau_\mu} [1 + P(t)] + B
\]" src="form_85.png"/></picture>
</p>
<p><b>Algorithm:</b></p><ol type="1">
<li>Extract N₀ from parameter vector or evaluate as a function</li>
<li>Extract muon lifetime τ (defaults to PMUON_LIFETIME if not fitted)</li>
<li>Extract background B (from fit parameter, fixed value, or estimated range)</li>
<li>Evaluate all user-defined functions in FUNCTIONS block</li>
<li>Pre-calculate theory at t=1.0 to initialize LF/user functions (thread-safe)</li>
<li>Loop over fit range bins [fStartTimeBin, fEndTimeBin) using OpenMP parallelization</li>
<li>Accumulate χ² with reduction across threads</li>
<li>Apply correction factor if fScaleN0AndBkg is true</li>
</ol>
<p><b>N₀ Parameter vs. Function Handling:</b></p><ul>
<li>If norm parameter number &lt; MSR_PARAM_FUN_OFFSET: N₀ is a fit parameter</li>
<li>If norm parameter number ≥ MSR_PARAM_FUN_OFFSET: N₀ is a user-defined function</li>
</ul>
<p><b>OpenMP Parallelization:</b></p><ul>
<li>Dynamic scheduling with chunk size = (N_bins / N_processors), minimum 10</li>
<li>Private variables per thread: i, time, diff</li>
<li>Reduction performed on chisq sum</li>
</ul>
<p><b>Scaling Correction:</b> If fScaleN0AndBkg is true, χ² is multiplied by: </p><p class="formulaDsp">
<picture><source srcset="form_86_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[\text{correction} = \text{packing} \times (t_{\rm res} \times 1000)
\]" src="form_86.png"/></picture>
</p>
<p> This accounts for the fact that data scales like pack×t_res, but errors scale like √(pack×t_res), ensuring correct χ² when normalizing to 1/ns.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">par</td><td>Parameter vector from MINUIT2 optimizer (1-based indexing in MSR file, but 0-based in this vector)</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Chi-square value for the current parameter set</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a2aa64a7b5b1b628c557c475efa6e0ba4" title="Calculates expected χ² based on theory predictions.">CalcChiSquareExpected()</a>, <a class="el" href="#a5be2273a8f933fc8b4b3d398df302e14" title="Calculates maximum likelihood for Poisson-distributed histogram counts.">CalcMaxLikelihood()</a>, <a class="el" href="classPTheory.html#ab0b6defce6fa75187ae306332fac3425" title="Evaluates the theory function at a given time point.">PTheory::Func()</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="PRunSingleHisto_8cpp_source.html#l00208">208</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8h_source.html#l00370">fBackground</a>, <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00379">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="PRunSingleHisto_8h_source.html#l00371">fPacking</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00368">fScaleN0AndBkg</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00378">fStartTimeBin</a>, <a class="el" href="PRunBase_8h_source.html#l00285">PRunBase::fTheory</a>, <a class="el" href="PRunBase_8h_source.html#l00276">PRunBase::fTimeResolution</a>, <a class="el" href="PMusr_8h_source.html#l00260">MSR_PARAM_FUN_OFFSET</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>
</div>
</div>
<a id="a2aa64a7b5b1b628c557c475efa6e0ba4" name="a2aa64a7b5b1b628c557c475efa6e0ba4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2aa64a7b5b1b628c557c475efa6e0ba4">&#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 PRunSingleHisto::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 χ² based on theory predictions. </p>
<p>Calculates expected χ² using theory as variance (alternative fit metric).</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 χ² (for statistical diagnostics)</dd></dl>
<p>Computes chi-square using the expected variance (theory value) instead of observed variance. This is sometimes called the "Neyman χ²" or "expected χ²": </p><p class="formulaDsp">
<picture><source srcset="form_87_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[\chi^2_{\rm exp} = \sum_{i=t_{\rm start}}^{t_{\rm end}} \frac{[N_i - N_{\rm theo}(t_i)]^2}{N_{\rm theo}(t_i)}
\]" src="form_87.png"/></picture>
</p>
<p><b>Difference from Standard χ²:</b></p><ul>
<li>Standard χ²: variance = σ²ᵢ (from observed data)</li>
<li>Expected χ²: variance = N_theo(tᵢ) (from theory prediction)</li>
</ul>
<p>This metric can be useful when:</p><ul>
<li>Theory predictions are more reliable than data errors</li>
<li>Data contains zero or very low counts (standard χ² undefined)</li>
<li>Testing model consistency against expected distribution</li>
</ul>
<p><b>Algorithm:</b></p><ol type="1">
<li>Extract N₀ from parameter vector or evaluate as a function</li>
<li>Extract muon lifetime τ (defaults to PMUON_LIFETIME if not fitted)</li>
<li>Extract background B (from fit parameter, fixed value, or estimated range)</li>
<li>Evaluate all user-defined functions in FUNCTIONS block</li>
<li>Pre-calculate theory at t=1.0 to initialize LF/user functions (thread-safe)</li>
<li>Loop over fit range bins [fStartTimeBin, fEndTimeBin) using OpenMP parallelization</li>
<li>Accumulate χ²_exp with reduction across threads</li>
<li>Apply correction factor if fScaleN0AndBkg is true</li>
</ol>
<p><b>OpenMP Parallelization:</b></p><ul>
<li>Dynamic scheduling with chunk size = (N_bins / N_processors), minimum 10</li>
<li>Private variables per thread: i, time, theo, diff</li>
<li>Reduction performed on chisq sum</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">par</td><td>Parameter vector from MINUIT2 optimizer</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Expected chi-square value for the current parameter set</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a114f2de78d118cadfd3a90dc28e1cf57" title="Calculates χ² between histogram data and theory.">CalcChiSquare()</a>, <a class="el" href="#a5be2273a8f933fc8b4b3d398df302e14" title="Calculates maximum likelihood for Poisson-distributed histogram counts.">CalcMaxLikelihood()</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="PRunSingleHisto_8cpp_source.html#l00323">323</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8h_source.html#l00370">fBackground</a>, <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00379">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="PRunSingleHisto_8h_source.html#l00371">fPacking</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00368">fScaleN0AndBkg</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00378">fStartTimeBin</a>, <a class="el" href="PRunBase_8h_source.html#l00285">PRunBase::fTheory</a>, <a class="el" href="PRunBase_8h_source.html#l00276">PRunBase::fTimeResolution</a>, <a class="el" href="PMusr_8h_source.html#l00260">MSR_PARAM_FUN_OFFSET</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>
</div>
</div>
<a id="a5be2273a8f933fc8b4b3d398df302e14" name="a5be2273a8f933fc8b4b3d398df302e14"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5be2273a8f933fc8b4b3d398df302e14">&#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 PRunSingleHisto::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 for Poisson-distributed histogram counts. </p>
<p>Calculates -2 log(maximum likelihood) for Poisson-distributed histogram data.</p>
<p>Computes -2ln(L) for low-count data (&lt; 10-20 counts/bin). Superior to χ² when Gaussian approximation invalid.</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>-2×ln(L) value</dd></dl>
<p>Computes the negative log-likelihood assuming Poisson statistics for each bin. This is the preferred fit metric for low-count data where Gaussian approximations break down. The likelihood function is: </p><p class="formulaDsp">
<picture><source srcset="form_88_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[-2\ln\mathcal{L} = 2 \sum_{i} \left[ N_{\rm theo}(t_i) - N_i + N_i \ln\frac{N_i}{N_{\rm theo}(t_i)} \right]
\]" src="form_88.png"/></picture>
</p>
<p>This is derived from the Poisson probability: </p><p class="formulaDsp">
<picture><source srcset="form_89_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[P(N_i | N_{\rm theo}) = \frac{N_{\rm theo}^{N_i} e^{-N_{\rm theo}}}{N_i!}
\]" src="form_89.png"/></picture>
</p>
<p>The factor of 2 makes -2ln(L) asymptotically distributed as χ² for large N, allowing use of standard error estimation from MINUIT.</p>
<p><b>Algorithm:</b></p><ol type="1">
<li>Extract N₀ from parameter vector or evaluate as a function</li>
<li>Extract muon lifetime τ (defaults to PMUON_LIFETIME if not fitted)</li>
<li>Extract background B (from fit parameter, fixed value, or estimated range)</li>
<li>Evaluate all user-defined functions in FUNCTIONS block</li>
<li>Pre-calculate theory at t=1.0 to initialize LF/user functions (thread-safe)</li>
<li>Calculate normalizer = packing × t_res × 1000 (if fScaleN0AndBkg is true)</li>
<li>Loop over fit range bins [fStartTimeBin, fEndTimeBin) using OpenMP parallelization</li>
<li>For each bin:<ul>
<li>Calculate theory N_theo(t)</li>
<li>If N_theo ≤ 0: skip bin with warning (negative theory is unphysical)</li>
<li>If N_data &gt; 10⁻⁹: add (theo - data) + data×ln(data/theo)</li>
<li>If N_data ≈ 0: add (theo - data) only (limit as data→0)</li>
</ul>
</li>
<li>Accumulate -2ln(L) with reduction across threads</li>
<li>Apply normalizer scaling</li>
</ol>
<p><b>Edge Cases:</b></p><ul>
<li><b>Zero data (Nᵢ = 0):</b> Uses limit: -2ln(L) → 2×N_theo</li>
<li><b>Negative theory:</b> Skips bin and prints warning (should not occur with valid parameters)</li>
<li><b>Data threshold:</b> Uses 10⁻⁹ to distinguish zero from non-zero data</li>
</ul>
<p><b>OpenMP Parallelization:</b></p><ul>
<li>Dynamic scheduling with chunk size = (N_bins / N_processors), minimum 10</li>
<li>Private variables per thread: i, time, theo, data</li>
<li>Reduction performed on mllh sum (note: reduction(-:mllh) for subtraction)</li>
</ul>
<p><b>When to Use Maximum Likelihood vs. χ²:</b></p><ul>
<li><b>Use likelihood:</b> Low count rates (&lt; 100 counts/bin), asymmetric errors</li>
<li><b>Use χ²:</b> High count rates (&gt; 100 counts/bin), Gaussian regime</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">par</td><td>Parameter vector from MINUIT2 optimizer</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>-2 × log(maximum likelihood) for the current parameter set</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a114f2de78d118cadfd3a90dc28e1cf57" title="Calculates χ² between histogram data and theory.">CalcChiSquare()</a>, <a class="el" href="#acee63e46149d3823ea699f917fa91e60" title="Calculates expected maximum likelihood.">CalcMaxLikelihoodExpected()</a> </dd>
<dd>
PDG Review of Particle Physics: Statistics section (<a href="http://pdg.lbl.gov">http://pdg.lbl.gov</a>) </dd></dl>
<p>Implements <a class="el" href="classPRunBase.html#a5d7a15b6962e3767860ef9b4c9208201">PRunBase</a>.</p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8cpp_source.html#l00455">455</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8h_source.html#l00370">fBackground</a>, <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00379">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="PRunSingleHisto_8h_source.html#l00371">fPacking</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00368">fScaleN0AndBkg</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00378">fStartTimeBin</a>, <a class="el" href="PRunBase_8h_source.html#l00285">PRunBase::fTheory</a>, <a class="el" href="PRunBase_8h_source.html#l00276">PRunBase::fTimeResolution</a>, <a class="el" href="PMusr_8h_source.html#l00260">MSR_PARAM_FUN_OFFSET</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>
</div>
</div>
<a id="acee63e46149d3823ea699f917fa91e60" name="acee63e46149d3823ea699f917fa91e60"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acee63e46149d3823ea699f917fa91e60">&#9670;&#160;</a></span>CalcMaxLikelihoodExpected()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Double_t PRunSingleHisto::CalcMaxLikelihoodExpected </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 maximum likelihood. </p>
<p>Calculates expected -2 log(maximum likelihood) using G-test formulation.</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 -2×ln(L)</dd></dl>
<p>Computes an alternative form of the Poisson likelihood using only the data×ln(data/theo) term. This is related to the G-test (likelihood ratio test) and represents the "expected" contribution to the likelihood: </p><p class="formulaDsp">
<picture><source srcset="form_90_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[-2\ln\mathcal{L}_{\rm exp} = 2 \sum_{i} N_i \ln\frac{N_i}{N_{\rm theo}(t_i)}
\]" src="form_90.png"/></picture>
</p>
<p><b>Difference from <a class="el" href="#a5be2273a8f933fc8b4b3d398df302e14" title="Calculates maximum likelihood for Poisson-distributed histogram counts.">CalcMaxLikelihood()</a>:</b></p><ul>
<li><b>Full likelihood:</b> includes (theo - data) + data×ln(data/theo)</li>
<li><b>Expected likelihood:</b> includes only data×ln(data/theo)</li>
</ul>
<p>The omitted (theo - data) term represents the "prior" expectation and is constant for a given theory. This formulation is sometimes used in:</p><ul>
<li>G-test for goodness-of-fit (likelihood ratio test)</li>
<li>Comparing relative likelihoods between models</li>
</ul>
<p><b>Algorithm:</b></p><ol type="1">
<li>Extract N₀, τ, and background B (same as CalcMaxLikelihood)</li>
<li>Evaluate all user-defined functions in FUNCTIONS block</li>
<li>Pre-calculate theory at t=1.0 to initialize LF/user functions (thread-safe)</li>
<li>Calculate normalizer = packing × t_res × 1000 (if fScaleN0AndBkg is true)</li>
<li>Loop over fit range bins using OpenMP parallelization</li>
<li>For each bin with N_data &gt; 10⁻⁹:<ul>
<li>Calculate theory N_theo(t)</li>
<li>Add data × ln(data/theo) to likelihood sum</li>
</ul>
</li>
<li>Skip bins with N_data ≈ 0 (zero contribution to expected likelihood)</li>
<li>Apply normalizer × 2.0 scaling</li>
</ol>
<dl class="section warning"><dt>Warning</dt><dd>The comment "is this correct?? needs to be checked. See G-test" in the code indicates this implementation may need verification.</dd></dl>
<p><b>OpenMP Parallelization:</b></p><ul>
<li>Dynamic scheduling with chunk size = (N_bins / N_processors), minimum 10</li>
<li>Private variables per thread: i, time, theo, data</li>
<li>Reduction performed on mllh sum</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">par</td><td>Parameter vector from MINUIT2 optimizer</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>-2 × log(expected likelihood) for the current parameter set</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a5be2273a8f933fc8b4b3d398df302e14" title="Calculates maximum likelihood for Poisson-distributed histogram counts.">CalcMaxLikelihood()</a>, G-test (likelihood ratio test) </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8cpp_source.html#l00590">590</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8h_source.html#l00370">fBackground</a>, <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00379">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="PRunSingleHisto_8h_source.html#l00371">fPacking</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00368">fScaleN0AndBkg</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00378">fStartTimeBin</a>, <a class="el" href="PRunBase_8h_source.html#l00285">PRunBase::fTheory</a>, <a class="el" href="PRunBase_8h_source.html#l00276">PRunBase::fTimeResolution</a>, <a class="el" href="PMusr_8h_source.html#l00260">MSR_PARAM_FUN_OFFSET</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>
</div>
</div>
<a id="a194107943e61f591f132c2fc864a3792" name="a194107943e61f591f132c2fc864a3792"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a194107943e61f591f132c2fc864a3792">&#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 PRunSingleHisto::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>Calculates the number of bins in the fit range and caches bin indices.</p>
<p>Converts fit range (μs) to bin indices, accounting for t0, time resolution, and packing. Updates fStartTimeBin, fEndTimeBin, fNoOfFitBins.</p>
<p>Converts the fit time range [fFitStartTime, fFitEndTime] to bin indices [fStartTimeBin, fEndTimeBin) and computes the total number of fit bins.</p>
<p><b>Algorithm:</b></p><ol type="1">
<li>Calculate start bin: <picture><source srcset="form_92_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ \lceil \frac{t_{\rm start} - t_{\rm data,0}}{\Delta t} \rceil $" src="form_92.png"/></picture></li>
<li>Clamp fStartTimeBin to [0, N_data)</li>
<li>Calculate end bin: <picture><source srcset="form_93_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ \lfloor \frac{t_{\rm end} - t_{\rm data,0}}{\Delta t} \rfloor + 1 $" src="form_93.png"/></picture></li>
<li>Clamp fEndTimeBin to [0, N_data]</li>
<li>Compute fNoOfFitBins = fEndTimeBin - fStartTimeBin (or 0 if invalid)</li>
</ol>
<p>where:</p><ul>
<li>t_data,0 = fData.GetDataTimeStart() (time of first data bin)</li>
<li>Δt = fData.GetDataTimeStep() (time bin width after packing)</li>
</ul>
<p><b>Edge Cases:</b></p><ul>
<li>If fStartTimeBin &lt; 0: clamped to 0</li>
<li>If fEndTimeBin &gt; N_data: clamped to N_data</li>
<li>If fEndTimeBin ≤ fStartTimeBin: fNoOfFitBins = 0 (invalid range)</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>This method is called automatically by <a class="el" href="#a71b2648dc89bc990b2adbcb6c82168e5" title="Returns the number of bins included in the fit range.">GetNoOfFitBins()</a> and by <a class="el" href="#ad4e3beb9d99143c8fd117438dbba7fff" title="Main data preparation orchestrator.">PrepareData()</a> after setting up the data arrays.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a71b2648dc89bc990b2adbcb6c82168e5" title="Returns the number of bins included in the fit range.">GetNoOfFitBins()</a>, <a class="el" href="#a80be353a51c1e9c200f557c872a7e46b" title="Sets fit range using bin-offset specification (COMMANDS block syntax).">SetFitRangeBin()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8cpp_source.html#l00951">951</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00379">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="PRunSingleHisto_8h_source.html#l00369">fNoOfFitBins</a>, and <a class="el" href="PRunSingleHisto_8h_source.html#l00378">fStartTimeBin</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHisto_8cpp_source.html#l00792">GetNoOfFitBins()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01199">PrepareFitData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01292">PrepareRawViewData()</a>, and <a class="el" href="PRunSingleHisto_8cpp_source.html#l01481">PrepareViewData()</a>.</p>
</div>
</div>
<a id="a684cbb35fa5e4a24681dd5b5ad3ad1f4" name="a684cbb35fa5e4a24681dd5b5ad3ad1f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a684cbb35fa5e4a24681dd5b5ad3ad1f4">&#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 PRunSingleHisto::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 or high-resolution grid. </p>
<p>Calculates theory curve N(t) for the current parameter values.</p>
<p>Calculates N_theory(t) = N₀·exp(-t/τ_μ)·P_theory(t) + B using THEORY block functions. Stores results in fData for χ² calculation.</p>
<p>Evaluates the single histogram theory function: </p><p class="formulaDsp">
<picture><source srcset="form_91_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[N(t) = N_0 e^{-t/\tau_\mu} [1 + P(t)] + B
\]" src="form_91.png"/></picture>
</p>
<p>for all time bins in the data set, storing results in fData.fTheory. This is used for:</p><ul>
<li>Displaying fitted theory curves in plots</li>
<li>Calculating residuals (data - theory)</li>
<li>Exporting theory predictions</li>
</ul>
<p><b>Algorithm:</b></p><ol type="1">
<li>Extract current parameter values from MSR parameter list</li>
<li>Determine N₀ (from parameter or function evaluation)</li>
<li>Determine muon lifetime τ (from parameter or default PMUON_LIFETIME)</li>
<li>Determine background B (from fit parameter, fixed value, or estimate)</li>
<li>Evaluate all user-defined functions in FUNCTIONS block</li>
<li>Loop over all data bins (not just fit range):<ul>
<li>Calculate time t for bin i</li>
<li>Evaluate P(t) = fTheory-&gt;Func(t, par, fFuncValues)</li>
<li>Calculate N(t) and append to theory vector</li>
</ul>
</li>
<li>Clean up temporary parameter vector</li>
</ol>
<p><b>Time Grid:</b></p><ul>
<li>Start time: fData.GetDataTimeStart()</li>
<li>Time step: fData.GetDataTimeStep()</li>
<li>Number of points: fData.GetValue()-&gt;size()</li>
</ul>
<dl class="section note"><dt>Note</dt><dd>Theory is calculated for the entire data range, not just the fit range, to enable full visualization of the model.</dd></dl>
<dl class="section see"><dt>See also</dt><dd>PRunDataHandler::AppendTheoryValue(), <a class="el" href="classPTheory.html#ab0b6defce6fa75187ae306332fac3425" title="Evaluates the theory function at a given time point.">PTheory::Func()</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="PRunSingleHisto_8cpp_source.html#l00714">714</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8h_source.html#l00370">fBackground</a>, <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>, <a class="el" href="PRunBase_8h_source.html#l00285">PRunBase::fTheory</a>, <a class="el" href="PMusr_8h_source.html#l00260">MSR_PARAM_FUN_OFFSET</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>
</div>
</div>
<a id="a6167092dbec6d5144e603553d63a8110" name="a6167092dbec6d5144e603553d63a8110"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6167092dbec6d5144e603553d63a8110">&#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 PRunSingleHisto::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 count rate from pre-t0 bins.</p>
<p>Calculates background average and error from specified bin range (typically before t0). Sets fBackground member.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">histoNo</td><td>Histogram index </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 average background rate from bins before the muon pulse arrives. For pulsed beam facilities (PSI, RAL, TRIUMF), adjusts the background interval to be a multiple of the beam period to avoid systematic biases from beam structure.</p>
<p><b>Algorithm:</b></p><ol type="1">
<li>Extract background range [start, end] from MSR file (in bins)</li>
<li>Validate start &lt; end (swap if necessary)</li>
<li>If pulsed beam (PSI/RAL/TRIUMF):<ul>
<li>Calculate interval duration in time: t_bkg = (end - start) × t_res × packing</li>
<li>Find number of complete beam cycles: N_cycles = floor(t_bkg / T_beam)</li>
<li>Adjust end bin to match N_cycles × T_beam exactly</li>
</ul>
</li>
<li>Validate start and end are within histogram bounds</li>
<li>Sum counts in [start, end]: Σ fForward[i]</li>
<li>Calculate average: fBackground = Σ counts / (end - start)</li>
</ol>
<p><b>Beam periods:</b></p><ul>
<li><b>PSI:</b> 19.75 ns (50.63 MHz cyclotron)</li>
<li><b>RAL (ISIS):</b> 320 ns (3.125 MHz target)</li>
<li><b>TRIUMF:</b> 43.0 ns (23.26 MHz cyclotron)</li>
<li><b>Other facilities:</b> No period correction applied</li>
</ul>
<p><b>Why adjust to beam period?</b> Pulsed beams have time-dependent backgrounds from:</p><ul>
<li>Flash (instantaneous background from beam pulse)</li>
<li>Prompt particles</li>
<li>Pion background</li>
</ul>
<p>Averaging over complete beam cycles ensures unbiased background estimates by including all phases of the pulsed structure.</p>
<p><b>Edge cases:</b></p><ul>
<li>If interval &lt; 1 beam period: uses original end bin (no correction)</li>
<li>If start ≥ histogram length: returns false with error</li>
<li>If end ≥ histogram length: returns false with 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 messages, currently not directly used)</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if background estimated successfully, false if bins out of bounds</dd></dl>
<dl class="section note"><dt>Note</dt><dd>The estimated background is stored in fBackground member variable and subtracted from data in <a class="el" href="#ae5f41624e8c54b2f8eeb2313e3cfac8e" title="Prepares histogram data for fitting.">PrepareFitData()</a> if not fitted.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ae5f41624e8c54b2f8eeb2313e3cfac8e" title="Prepares histogram data for fitting.">PrepareFitData()</a>, <a class="el" href="PMusr_8h.html#acbf6e0bace9638d4b7182c0ea78a76aa" title="PSI (Paul Scherrer Institute) accelerator cycle: 19.75 ns.">ACCEL_PERIOD_PSI</a>, <a class="el" href="PMusr_8h.html#af100c5520356cd7487587f0c9c2286df" title="RAL (Rutherford Appleton Lab) - pulsed beam.">ACCEL_PERIOD_RAL</a>, <a class="el" href="PMusr_8h.html#a289dd448598859518bc73c87233af6a1" title="TRIUMF accelerator cycle: 43.37 ns.">ACCEL_PERIOD_TRIUMF</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8cpp_source.html#l02296">2296</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.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="PRunSingleHisto_8h_source.html#l00370">fBackground</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00376">fForward</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00371">fPacking</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00368">fScaleN0AndBkg</a>, and <a class="el" href="PRunBase_8h_source.html#l00276">PRunBase::fTimeResolution</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHisto_8cpp_source.html#l01199">PrepareFitData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01292">PrepareRawViewData()</a>, and <a class="el" href="PRunSingleHisto_8cpp_source.html#l01481">PrepareViewData()</a>.</p>
</div>
</div>
<a id="a741460485f8838de6a21c4797dec80e6" name="a741460485f8838de6a21c4797dec80e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a741460485f8838de6a21c4797dec80e6">&#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">void PRunSingleHisto::EstimateN0 </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>Estimates initial normalization N₀ from histogram data. </p>
<p>Automatically estimates the normalization parameter N₀ from data.</p>
<p>Calculates N₀ estimate from histogram amplitude, used as starting value if N₀ is a fit parameter.</p>
<p>Provides an intelligent initial guess for N₀ to help MINUIT convergence. The estimate is based on the maximum count rate in the fit range, accounting for muon decay and background.</p>
<p><b>When estimation is performed:</b></p><ul>
<li>MSR file requests estimation (estimate_n0 flag in GLOBAL block)</li>
<li>Norm parameter is a fit parameter (not fixed, not a function)</li>
<li>Parameter step size ≠ 0 (i.e., not fixed)</li>
</ul>
<p><b>When estimation is skipped:</b></p><ul>
<li>Norm is a function (paramNo &gt; MSR_PARAM_FUN_OFFSET)</li>
<li>Norm parameter is fixed (step = 0)</li>
<li>Invalid parameter number</li>
</ul>
<p><b>Estimation algorithm:</b></p><ol type="1">
<li>Find maximum value in fit range: max_data = max(N(t) in fit range)</li>
<li>Find corresponding time t_max</li>
<li>Extract or estimate background B</li>
<li>Correct for exponential decay: N₀_est = (max_data - B) / exp(-t_max/τ_μ)</li>
<li>Adjust for scaling if fScaleN0AndBkg is true</li>
<li>Update parameter value and step size in MSR parameter list</li>
</ol>
<p><b>Background handling:</b></p><ul>
<li>If background is fitted: extract current background parameter value</li>
<li>If fixed background given: use fixed value</li>
<li>If background range given: use fBackground estimate</li>
<li>Otherwise: assume B = 0</li>
</ul>
<p><b>Scaling adjustment:</b> If fScaleN0AndBkg is true (normalizing to 1/ns), the estimate is divided by: </p><p class="formulaDsp">
<picture><source srcset="form_106_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[\text{scale factor} = \text{packing} \times (t_{\rm res} \times 1000)
\]" src="form_106.png"/></picture>
</p>
<dl class="section note"><dt>Note</dt><dd>This method modifies the MSR parameter list in place, updating both the parameter value and the step size (for MINUIT error estimation).</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a2c5716a3db81fb1f8c253fdf759930b7" title="Determines if N₀ and background should be scaled to 1/ns.">IsScaleN0AndBkg()</a>, <a class="el" href="#a6167092dbec6d5144e603553d63a8110" title="Estimates background from pre-t0 bins.">EstimateBkg()</a>, <a class="el" href="#ae5f41624e8c54b2f8eeb2313e3cfac8e" title="Prepares histogram data for fitting.">PrepareFitData()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8cpp_source.html#l02160">2160</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8h_source.html#l00376">fForward</a>, <a class="el" href="PRunBase_8h_source.html#l00271">PRunBase::fMsrInfo</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00371">fPacking</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00368">fScaleN0AndBkg</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>, and <a class="el" href="PMusr_8h_source.html#l00119">PMUON_LIFETIME</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHisto_8cpp_source.html#l01199">PrepareFitData()</a>.</p>
</div>
</div>
<a id="a95a25738b84e975d34d6ece2f07d42ad" name="a95a25738b84e975d34d6ece2f07d42ad"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a95a25738b84e975d34d6ece2f07d42ad">&#9670;&#160;</a></span>GetBackground()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual Double_t PRunSingleHisto::GetBackground </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 estimated background level. </p>
<dl class="section return"><dt>Returns</dt><dd>Background in counts/bin </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8h_source.html#l00286">286</a> of file <a class="el" href="PRunSingleHisto_8h_source.html">PRunSingleHisto.h</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8h_source.html#l00370">fBackground</a>.</p>
</div>
</div>
<a id="a8186675fc3729c4dd086679de0acf700" name="a8186675fc3729c4dd086679de0acf700"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8186675fc3729c4dd086679de0acf700">&#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 PRunSingleHisto::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="PRunSingleHisto_8h_source.html#l00298">298</a> of file <a class="el" href="PRunSingleHisto_8h_source.html">PRunSingleHisto.h</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8h_source.html#l00379">fEndTimeBin</a>.</p>
</div>
</div>
<a id="a71b2648dc89bc990b2adbcb6c82168e5" name="a71b2648dc89bc990b2adbcb6c82168e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a71b2648dc89bc990b2adbcb6c82168e5">&#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 PRunSingleHisto::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 fit range. </p>
<p>Returns the number of bins in the current fit range.</p>
<p>Used for degrees of freedom: ν = N_bins - N_params</p>
<dl class="section return"><dt>Returns</dt><dd>Number of bins in fit range</dd></dl>
<p>Calculates (if not already done) and returns the number of data bins that will be included in the χ² or likelihood calculation. This is determined by the fit range [fFitStartTime, fFitEndTime] and the data time grid.</p>
<p>The calculation is performed by <a class="el" href="#a194107943e61f591f132c2fc864a3792" title="Calculates start/end bin indices from fit time range.">CalcNoOfFitBins()</a>, which sets:</p><ul>
<li>fStartTimeBin: first bin index in fit range</li>
<li>fEndTimeBin: one past last bin index in fit range</li>
<li>fNoOfFitBins = fEndTimeBin - fStartTimeBin</li>
</ul>
<dl class="section return"><dt>Returns</dt><dd>Number of bins in the fit range (degrees of freedom = N_bins - N_params)</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a194107943e61f591f132c2fc864a3792" title="Calculates start/end bin indices from fit time range.">CalcNoOfFitBins()</a>, <a class="el" href="#a80be353a51c1e9c200f557c872a7e46b" title="Sets fit range using bin-offset specification (COMMANDS block syntax).">SetFitRangeBin()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8cpp_source.html#l00792">792</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8cpp_source.html#l00951">CalcNoOfFitBins()</a>, and <a class="el" href="PRunSingleHisto_8h_source.html#l00369">fNoOfFitBins</a>.</p>
</div>
</div>
<a id="a6a693657dee12cae29299f150a009059" name="a6a693657dee12cae29299f150a009059"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a693657dee12cae29299f150a009059">&#9670;&#160;</a></span>GetPacking()</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 PRunSingleHisto::GetPacking </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 bin packing factor. </p>
<dl class="section return"><dt>Returns</dt><dd>Number of raw bins combined into one packed bin </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8h_source.html#l00304">304</a> of file <a class="el" href="PRunSingleHisto_8h_source.html">PRunSingleHisto.h</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8h_source.html#l00371">fPacking</a>.</p>
</div>
</div>
<a id="a8c1dad5eddb29c1e6fc295ade612a29a" name="a8c1dad5eddb29c1e6fc295ade612a29a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c1dad5eddb29c1e6fc295ade612a29a">&#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 PRunSingleHisto::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 data range (region of valid histogram data). </p>
<p>Determines the data range (first good bin / last good bin).</p>
<p>Establishes start/end bins for analysis from RUN block "data" entry. Data range is typically wider than fit range.</p>
<dl class="section return"><dt>Returns</dt><dd>True if valid data range determined</dd></dl>
<p>Establishes which histogram bins contain valid muon decay data by finding the "first good bin" (fgb) and "last good bin" (lgb). This range excludes:</p><ul>
<li>Pre-t0 bins (before muon arrival)</li>
<li>Early bins affected by detector dead time or pileup</li>
<li>Late bins with insufficient statistics</li>
</ul>
<p><b>Priority hierarchy (highest to lowest):</b></p><ol type="1">
<li><b>RUN block:</b> Explicitly specified fgb/lgb in RUN block</li>
<li><b>GLOBAL block:</b> Default fgb/lgb from GLOBAL block</li>
<li><b>Auto-estimation:</b> Fallback estimates with warning</li>
</ol>
<p><b>Auto-estimation (if not specified):</b></p><ul>
<li><b>fgb:</b> t0 + 10 ns (to avoid dead time issues)</li>
<li><b>lgb:</b> End of histogram (all bins)</li>
</ul>
<p><b>Validation:</b></p><ol type="1">
<li>Check fgb &lt; lgb (swap if necessary)</li>
<li>Check 0 ≤ fgb &lt; histogram length</li>
<li>Check 0 ≤ lgb ≤ histogram length</li>
<li>If lgb &gt; histogram length: clamp to (length - 1) and print warning</li>
</ol>
<p><b>Storage:</b> Results are stored in:</p><ul>
<li>fGoodBins[0] = fgb (first good bin index)</li>
<li>fGoodBins[1] = lgb (last good bin index)</li>
</ul>
<p>These values are used by:</p><ul>
<li><a class="el" href="#ae5f41624e8c54b2f8eeb2313e3cfac8e" title="Prepares histogram data for fitting.">PrepareFitData()</a> to determine packing range</li>
<li><a class="el" href="#a7f03b7b4d1faa25d8619d3060ec2d1b6" title="Determines fit range from MSR file settings.">GetProperFitRange()</a> as fallback for fit range</li>
</ul>
<dl class="section return"><dt>Returns</dt><dd>true if data range is valid and within bounds, false if validation fails</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>Auto-estimated ranges may not be appropriate for all detectors. Explicit specification in MSR file is strongly recommended.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This method is called by <a class="el" href="#ad4e3beb9d99143c8fd117438dbba7fff" title="Main data preparation orchestrator.">PrepareData()</a> after histogram grouping but before packing and fit range determination.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ad4e3beb9d99143c8fd117438dbba7fff" title="Main data preparation orchestrator.">PrepareData()</a>, <a class="el" href="#a7f03b7b4d1faa25d8619d3060ec2d1b6" title="Determines fit range from MSR file settings.">GetProperFitRange()</a>, <a class="el" href="#aad79f1a5522f7b8dd02a931e1da46b72" title="Good bin markers for COMMANDS block: [0]=fgb (first good bin/t0), [1]=lgb (last good bin)">fGoodBins</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8cpp_source.html#l01948">1948</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8h_source.html#l00376">fForward</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00374">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="PRunSingleHisto_8cpp_source.html#l01011">PrepareData()</a>.</p>
</div>
</div>
<a id="a7f03b7b4d1faa25d8619d3060ec2d1b6" name="a7f03b7b4d1faa25d8619d3060ec2d1b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7f03b7b4d1faa25d8619d3060ec2d1b6">&#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 PRunSingleHisto::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 range from MSR file settings. </p>
<p>Determines the fit range (start and end times for χ² calculation).</p>
<p>Extracts fit time window from RUN or GLOBAL block "fit" entry. Format: time-based (μs) or bin-based (fgb+n0 lgb-n1).</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>Establishes the time window [t_start, t_end] over which the fit will be performed. The fit range can be specified in two ways:</p>
<p><b>Specification methods:</b></p><ol type="1">
<li><b>Time-based:</b> <code>fit &lt;start&gt; &lt;end&gt;</code> in microseconds<ul>
<li>Example: <code>fit 0.1 10.0</code> (fit from 0.1 to 10.0 μs after t0)</li>
</ul>
</li>
<li><b>Bin-based:</b> <code>fit fgb[+offset0] lgb[-offset1]</code> in bins<ul>
<li>Example: <code>fit fgb+10 lgb-20</code> (fit from 10 bins after fgb to 20 bins before lgb)</li>
</ul>
</li>
</ol>
<p><b>Priority hierarchy (highest to lowest):</b></p><ol type="1">
<li><b>RUN block time-based:</b> <code>fit &lt;start&gt; &lt;end&gt;</code> in RUN block</li>
<li><b>RUN block bin-based:</b> <code>fit fgb+n0 lgb-n1</code> in RUN block</li>
<li><b>GLOBAL block time-based:</b> <code>fit &lt;start&gt; &lt;end&gt;</code> in GLOBAL block</li>
<li><b>GLOBAL block bin-based:</b> <code>fit fgb+n0 lgb-n1</code> in GLOBAL block</li>
<li><b>Auto-fallback:</b> Use entire data range [fgb, lgb]</li>
</ol>
<p><b>Bin-based conversion to time:</b> When fit range is given in bins, it's converted to time: </p><p class="formulaDsp">
<picture><source srcset="form_102_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[t_{\rm start} = (\text{fgb} + n_0 - t_0) \times \Delta t
\]" src="form_102.png"/></picture>
</p>
<p class="formulaDsp">
<picture><source srcset="form_103_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[t_{\rm end} = (\text{lgb} - n_1 - t_0) \times \Delta t
\]" src="form_103.png"/></picture>
</p>
<p>where:</p><ul>
<li>fgb/lgb = first/last good bin from <a class="el" href="#a8c1dad5eddb29c1e6fc295ade612a29a" title="Determines data range (region of valid histogram data).">GetProperDataRange()</a></li>
<li>n₀/n₁ = offsets (can be positive or negative)</li>
<li>t₀ = time-zero bin</li>
<li>Δt = time resolution (fTimeResolution in μs)</li>
</ul>
<p><b>Storage and updates:</b></p><ul>
<li>fFitStartTime, fFitEndTime are set to the determined range</li>
<li>If bin-based, the converted time values are written back to the MSR data structure for log file reporting</li>
</ul>
<p><b>Fallback behavior:</b> If no fit range is specified anywhere, uses the entire data range: </p><p class="formulaDsp">
<picture><source srcset="form_104_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[t_{\rm start} = (\text{fgb} - t_0) \times \Delta t
\]" src="form_104.png"/></picture>
</p>
<p class="formulaDsp">
<picture><source srcset="form_105_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[t_{\rm end} = (\text{lgb} - t_0) \times \Delta t
\]" src="form_105.png"/></picture>
</p>
<p> and prints a warning to std::cerr.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">globalBlock</td><td>Pointer to GLOBAL block from MSR file</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>This method is called by <a class="el" href="#ad4e3beb9d99143c8fd117438dbba7fff" title="Main data preparation orchestrator.">PrepareData()</a> after <a class="el" href="#a8c1dad5eddb29c1e6fc295ade612a29a" title="Determines data range (region of valid histogram data).">GetProperDataRange()</a> has established fGoodBins[0] and fGoodBins[1].</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ad4e3beb9d99143c8fd117438dbba7fff" title="Main data preparation orchestrator.">PrepareData()</a>, <a class="el" href="#a8c1dad5eddb29c1e6fc295ade612a29a" title="Determines data range (region of valid histogram data).">GetProperDataRange()</a>, <a class="el" href="#a80be353a51c1e9c200f557c872a7e46b" title="Sets fit range using bin-offset specification (COMMANDS block syntax).">SetFitRangeBin()</a>, <a class="el" href="#a194107943e61f591f132c2fc864a3792" title="Calculates start/end bin indices from fit time range.">CalcNoOfFitBins()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8cpp_source.html#l02082">2082</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.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="PRunSingleHisto_8h_source.html#l00374">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="PRunSingleHisto_8cpp_source.html#l01011">PrepareData()</a>.</p>
</div>
</div>
<a id="a92ee83617d6fe3f0451a360cfc93c892" name="a92ee83617d6fe3f0451a360cfc93c892"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a92ee83617d6fe3f0451a360cfc93c892">&#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 PRunSingleHisto::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 histogram. </p>
<p>Determines time-zero (t0) values for all histograms using hierarchical fallback.</p>
<p>Extracts time-zero from RUN block, data file header, GLOBAL block, or automatic determination. Validates t0 is within histogram bounds.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">runData</td><td>Raw run data </td></tr>
<tr><td class="paramname">globalBlock</td><td>GLOBAL block settings </td></tr>
<tr><td class="paramname">histoNo</td><td>Vector of histogram indices </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if valid t0 found</dd></dl>
<p>Time-zero (t0) marks the muon arrival time in each detector histogram, the reference point from which decay time is measured. This method uses a priority system to find t0 values:</p>
<p><b>Priority hierarchy (highest to lowest):</b></p><ol type="1">
<li><b>RUN block t0:</b> Explicitly specified in the RUN block (highest priority)</li>
<li><b>GLOBAL block t0:</b> Default t0 for all runs in the GLOBAL block</li>
<li><b>Data file t0:</b> Stored in the raw data file (from previous analysis)</li>
<li><b>Estimated t0:</b> Automatic estimation (UNRELIABLE, prints warning)</li>
</ol>
<p><b>For ADDRUN support:</b> If multiple runs are added (fRunInfo-&gt;GetRunNameSize() &gt; 1), this method also determines t0 values for each added run (fAddT0s) using the same hierarchy. Proper t0 alignment is essential for correct ADDRUN operation.</p>
<p><b>Algorithm:</b></p><ol type="1">
<li>Resize fT0s vector to histogram count (number of grouped detectors)</li>
<li>Initialize all t0 values to -1.0 (sentinel for "not set")</li>
<li>Fill from RUN block (if specified)</li>
<li>Fill from GLOBAL block where still -1.0</li>
<li>Fill from data file where still -1.0</li>
<li>Fill from estimation where still -1.0 (prints <b>WARNING</b>)</li>
<li>Validate all t0 values are within histogram bounds</li>
<li>If ADDRUN present: repeat steps 2-6 for each added run</li>
</ol>
<p><b>Validation:</b> After fallback, checks that each t0 satisfies: </p><p class="formulaDsp">
<picture><source srcset="form_101_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[0 \leq t_0 \leq N_{\rm bins}
\]" src="form_101.png"/></picture>
</p>
<p> If validation fails, returns false with error message.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">runData</td><td>Pointer to raw run data handler for main run </td></tr>
<tr><td class="paramname">globalBlock</td><td>Pointer to GLOBAL block from MSR file </td></tr>
<tr><td class="paramname">histoNo</td><td>Vector of histogram indices (zero-based, after redGreen offset correction)</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if all t0 values found and validated, false if any t0 is out of bounds</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>Estimated t0 values (fallback option #4) are often UNRELIABLE, especially for low-energy muons (LEM). Manual specification in MSR file is strongly recommended. A warning is printed to std::cerr when estimation is used.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This method updates fT0s (main run) and fAddT0s (ADDRUN) member variables. It also updates the MSR file handler with found t0 values for persistence.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ad4e3beb9d99143c8fd117438dbba7fff" title="Main data preparation orchestrator.">PrepareData()</a>, <a class="el" href="classPRunBase.html#ad3be9a269b89805d9e1a5ffa1a8d6ec9" title="Time-zero bin values for all histograms in this run (forward, backward, etc.)">fT0s</a>, <a class="el" href="classPRunBase.html#ab5f96afcdca519f9a33a9fd9a3a6c67d" title="Time-zero bin values for additional runs to be added to main run.">fAddT0s</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8cpp_source.html#l01783">1783</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.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="PRunSingleHisto_8cpp_source.html#l01011">PrepareData()</a>.</p>
</div>
</div>
<a id="a7b3225bdea736a38dca1b72873c5e45a" name="a7b3225bdea736a38dca1b72873c5e45a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b3225bdea736a38dca1b72873c5e45a">&#9670;&#160;</a></span>GetScaleN0AndBkg()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual Bool_t PRunSingleHisto::GetScaleN0AndBkg </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 N₀/background scaling mode. </p>
<dl class="section return"><dt>Returns</dt><dd>true = scaled to 1/ns, false = left as 1/bin </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8h_source.html#l00310">310</a> of file <a class="el" href="PRunSingleHisto_8h_source.html">PRunSingleHisto.h</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8h_source.html#l00368">fScaleN0AndBkg</a>.</p>
</div>
</div>
<a id="a62570fa4c6d86fac5796f1fe6912afe9" name="a62570fa4c6d86fac5796f1fe6912afe9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a62570fa4c6d86fac5796f1fe6912afe9">&#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 PRunSingleHisto::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 packing) </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8h_source.html#l00292">292</a> of file <a class="el" href="PRunSingleHisto_8h_source.html">PRunSingleHisto.h</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8h_source.html#l00378">fStartTimeBin</a>.</p>
</div>
</div>
<a id="a2c5716a3db81fb1f8c253fdf759930b7" name="a2c5716a3db81fb1f8c253fdf759930b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2c5716a3db81fb1f8c253fdf759930b7">&#9670;&#160;</a></span>IsScaleN0AndBkg()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Bool_t PRunSingleHisto::IsScaleN0AndBkg </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 if N₀ and background should be scaled to 1/ns. </p>
<p>Determines if N₀ and background should be normalized to 1/ns.</p>
<p>Checks time resolution and fitting preferences to decide scaling mode. Returns true for standard time bins (scale to 1/ns), false otherwise.</p>
<dl class="section return"><dt>Returns</dt><dd>True if scaling should be applied</dd></dl>
<p>Checks whether N₀ and background parameters should be scaled to represent count rates per nanosecond (1/ns) rather than counts per packed bin.</p>
<p><b>Default behavior:</b> Scaling is ENABLED (true)</p>
<p>This makes fitted parameters physically meaningful and independent of packing:</p><ul>
<li>N₀ represents the initial muon decay rate at t=0 in counts/ns</li>
<li>Background B represents constant background rate in counts/ns</li>
</ul>
<p><b>To disable scaling:</b> Add to MSR file COMMAND block: </p><div class="fragment"><div class="line">SCALE_N0_BKG FALSE</div>
</div><!-- fragment --><p><b>When to disable scaling:</b></p><ul>
<li>When N₀ and B should represent total counts per packed bin</li>
<li>When comparing with older analysis that didn't use scaling</li>
<li>When packing is 1 (no difference between modes)</li>
</ul>
<p><b>Effect on fit parameters:</b></p><ul>
<li><b>Scaled (default):</b> N₀ and B independent of packing choice</li>
<li><b>Unscaled:</b> N₀ and B depend on packing value</li>
</ul>
<p><b>Implementation details:</b> Scaling is applied in:</p><ul>
<li><a class="el" href="#ae5f41624e8c54b2f8eeb2313e3cfac8e" title="Prepares histogram data for fitting.">PrepareFitData()</a>: Data is divided by (packing × t_res × 1000)</li>
<li><a class="el" href="#a114f2de78d118cadfd3a90dc28e1cf57" title="Calculates χ² between histogram data and theory.">CalcChiSquare()</a>: χ² is multiplied by (packing × t_res × 1000)</li>
<li><a class="el" href="#a5be2273a8f933fc8b4b3d398df302e14" title="Calculates maximum likelihood for Poisson-distributed histogram counts.">CalcMaxLikelihood()</a>: -2ln(L) is multiplied by normalizer</li>
<li><a class="el" href="#a6167092dbec6d5144e603553d63a8110" title="Estimates background from pre-t0 bins.">EstimateBkg()</a>: Background estimate is divided by (t_res × 1000)</li>
</ul>
<p>These operations cancel out mathematically but keep parameters in 1/ns units.</p>
<dl class="section return"><dt>Returns</dt><dd>true if N₀ and background should be scaled to 1/ns (default), false if they should represent counts per packed bin</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This method is called during construction to set fScaleN0AndBkg.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a114f2de78d118cadfd3a90dc28e1cf57" title="Calculates χ² between histogram data and theory.">CalcChiSquare()</a>, <a class="el" href="#a5be2273a8f933fc8b4b3d398df302e14" title="Calculates maximum likelihood for Poisson-distributed histogram counts.">CalcMaxLikelihood()</a>, <a class="el" href="#ae5f41624e8c54b2f8eeb2313e3cfac8e" title="Prepares histogram data for fitting.">PrepareFitData()</a>, <a class="el" href="#a6167092dbec6d5144e603553d63a8110" title="Estimates background from pre-t0 bins.">EstimateBkg()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8cpp_source.html#l02412">2412</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00271">PRunBase::fMsrInfo</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHisto_8cpp_source.html#l00108">PRunSingleHisto()</a>.</p>
</div>
</div>
<a id="ad4e3beb9d99143c8fd117438dbba7fff" name="ad4e3beb9d99143c8fd117438dbba7fff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad4e3beb9d99143c8fd117438dbba7fff">&#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 PRunSingleHisto::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. </p>
<p>Main data preprocessing pipeline for single histogram runs.</p>
<p>Coordinates histogram loading and preprocessing: determines operation mode, calls <a class="el" href="#ae5f41624e8c54b2f8eeb2313e3cfac8e" title="Prepares histogram data for fitting.">PrepareFitData()</a> or <a class="el" href="#a5b603055ea7f271497bc852e436a464f" title="Prepares processed histogram data for viewing/plotting.">PrepareViewData()</a>, validates success.</p>
<dl class="section return"><dt>Returns</dt><dd>True if data preparation succeeds, false on error</dd></dl>
<p>Orchestrates the complete data loading and preprocessing workflow:</p><ol type="1">
<li><b>Load raw data:</b> Fetch run from <a class="el" href="classPRunDataHandler.html" title="Raw data file reader and format converter for μSR data.">PRunDataHandler</a> using run name</li>
<li><b>Extract metadata:</b> Magnetic field, beam energy, temperature(s)</li>
<li><b>Validate histograms:</b> Check that forward histogram numbers exist in data file</li>
<li><b>Get time resolution:</b> Extract bin width (typically 0.1-10 ns)</li>
<li><b>Determine t0:</b> Call <a class="el" href="#a92ee83617d6fe3f0451a360cfc93c892" title="Determines and validates t0 values for histogram.">GetProperT0()</a> for muon arrival times</li>
<li><b>Load histogram data:</b> Copy forward histogram bins from raw data</li>
<li><b>Add runs (ADDRUN):</b> If multiple runs specified, add them with t0 alignment</li>
<li><b>Group histograms:</b> Sum multiple detectors within a group (with t0 alignment)</li>
<li><b>Get data range (fgb/lgb):</b> Call <a class="el" href="#a8c1dad5eddb29c1e6fc295ade612a29a" title="Determines data range (region of valid histogram data).">GetProperDataRange()</a> for good bin limits</li>
<li><b>Get fit range:</b> Call <a class="el" href="#a7f03b7b4d1faa25d8619d3060ec2d1b6" title="Determines fit range from MSR file settings.">GetProperFitRange()</a> for fit time window</li>
<li><b>Check lifetime correction:</b> Determine if exponential decay should be removed (for viewing)</li>
<li><b>Dispatch to preparation:</b><ul>
<li>kFit → <a class="el" href="#ae5f41624e8c54b2f8eeb2313e3cfac8e" title="Prepares histogram data for fitting.">PrepareFitData()</a>: packing, background subtraction</li>
<li>kView (no lifetime corr.) → <a class="el" href="#abdf5efcec3cc3da8904be1ecac33922c" title="Prepares raw histogram data for viewing (minimal processing).">PrepareRawViewData()</a>: packing, theory calculation</li>
<li>kView (with lifetime corr.) → <a class="el" href="#a5b603055ea7f271497bc852e436a464f" title="Prepares processed histogram data for viewing/plotting.">PrepareViewData()</a>: lifetime removal, theory</li>
</ul>
</li>
</ol>
<p><b>ADDRUN t0 Alignment:</b> When adding runs, histograms are aligned by their t0 values: </p><div class="fragment"><div class="line">forward[k][j] += addRunData[k]-&gt;at(j + addT0[k] - mainT0[k])</div>
</div><!-- fragment --><p> This ensures muon arrival times coincide across added runs.</p>
<p><b>Grouping t0 Alignment:</b> When grouping histograms, they are aligned to the first histogram's t0: </p><div class="fragment"><div class="line"><a class="code hl_variable" href="#af68e70c2788d8074b18e7e47f6546fbc">fForward</a>[j] += forward[i][j + t0[i] - t0[0]]</div>
<div class="ttc" id="aclassPRunSingleHisto_html_af68e70c2788d8074b18e7e47f6546fbc"><div class="ttname"><a href="#af68e70c2788d8074b18e7e47f6546fbc">PRunSingleHisto::fForward</a></div><div class="ttdeci">PDoubleVector fForward</div><div class="ttdoc">Forward detector histogram (background-corrected, packed)</div><div class="ttdef"><b>Definition</b> <a href="PRunSingleHisto_8h_source.html#l00376">PRunSingleHisto.h:376</a></div></div>
</div><!-- fragment --><dl class="section return"><dt>Returns</dt><dd>true if all preprocessing steps succeeded, false otherwise</dd></dl>
<dl class="section note"><dt>Note</dt><dd>If any step fails (missing data file, invalid histogram numbers, t0 errors), this method returns false and error messages are printed to std::cerr.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a92ee83617d6fe3f0451a360cfc93c892" title="Determines and validates t0 values for histogram.">GetProperT0()</a>, <a class="el" href="#a8c1dad5eddb29c1e6fc295ade612a29a" title="Determines data range (region of valid histogram data).">GetProperDataRange()</a>, <a class="el" href="#a7f03b7b4d1faa25d8619d3060ec2d1b6" title="Determines fit range from MSR file settings.">GetProperFitRange()</a>, <a class="el" href="#ae5f41624e8c54b2f8eeb2313e3cfac8e" title="Prepares histogram data for fitting.">PrepareFitData()</a>, <a class="el" href="#abdf5efcec3cc3da8904be1ecac33922c" title="Prepares raw histogram data for viewing (minimal processing).">PrepareRawViewData()</a>, <a class="el" href="#a5b603055ea7f271497bc852e436a464f" title="Prepares processed histogram data for viewing/plotting.">PrepareViewData()</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="PRunSingleHisto_8cpp_source.html#l01011">1011</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00279">PRunBase::fAddT0s</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00376">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="PRunSingleHisto_8cpp_source.html#l01948">GetProperDataRange()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l02082">GetProperFitRange()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01783">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="PRunSingleHisto_8cpp_source.html#l01199">PrepareFitData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01292">PrepareRawViewData()</a>, and <a class="el" href="PRunSingleHisto_8cpp_source.html#l01481">PrepareViewData()</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHisto_8cpp_source.html#l00108">PRunSingleHisto()</a>.</p>
</div>
</div>
<a id="ae5f41624e8c54b2f8eeb2313e3cfac8e" name="ae5f41624e8c54b2f8eeb2313e3cfac8e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae5f41624e8c54b2f8eeb2313e3cfac8e">&#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 PRunSingleHisto::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>Prepares histogram data for fitting. </p>
<p>Prepares histogram data for fitting (kFit mode).</p>
<p>Loads forward histogram, extracts metadata, determines t0, subtracts background, packs bins, propagates errors, sets up time grid and fit ranges.</p>
<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>Histogram index in data file </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True on success, false if preprocessing fails</dd></dl>
<p>Performs final data transformations after <a class="el" href="#ad4e3beb9d99143c8fd117438dbba7fff" title="Main data preparation orchestrator.">PrepareData()</a> has loaded and grouped the raw histogram data:</p><ol type="1">
<li><b>Estimate N₀ (optional):</b> If MSR file requests it, call <a class="el" href="#a741460485f8838de6a21c4797dec80e6" title="Estimates initial normalization N₀ from histogram data.">EstimateN0()</a></li>
<li><b>Handle background:</b><ul>
<li>If background is fitted: leave data unchanged</li>
<li>If fixed background given: subtract it from all bins</li>
<li>If background range given: call <a class="el" href="#a6167092dbec6d5144e603553d63a8110" title="Estimates background from pre-t0 bins.">EstimateBkg()</a> and subtract estimate</li>
<li>If nothing specified: auto-estimate from bins [0.1×t0, 0.6×t0] with warning</li>
</ul>
</li>
<li><b>Packing (rebinning):</b> Combine consecutive bins to improve statistics:<ul>
<li>If packing = 1: copy bins directly</li>
<li>If packing &gt; 1: sum every 'packing' bins into one</li>
</ul>
</li>
<li><b>Normalization:</b> If fScaleN0AndBkg is true, divide by (packing × t_res × 1000) to normalize counts to 1/ns</li>
<li><b>Error calculation:</b><ul>
<li>If N &gt; 0: σ = √N (Poisson statistics)</li>
<li>If N = 0: σ = 1/normalizer (avoid division by zero in χ²)</li>
</ul>
</li>
<li><b>Set time grid:</b><ul>
<li>Data start time: (fgb - 0.5 + pack/2 - t0) × t_res</li>
<li>Data time step: pack × t_res</li>
</ul>
</li>
<li><b>Calculate fit bins:</b> Call <a class="el" href="#a194107943e61f591f132c2fc864a3792" title="Calculates start/end bin indices from fit time range.">CalcNoOfFitBins()</a> to set fStartTimeBin, fEndTimeBin</li>
</ol>
<p><b>Packing Algorithm:</b> </p><div class="fragment"><div class="line"><span class="keywordflow">for</span> (i = fgb; i &lt; lgb; i++) {</div>
<div class="line"> value += forward[i];</div>
<div class="line"> <span class="keywordflow">if</span> ((i-fgb) % packing == 0 &amp;&amp; i != fgb) {</div>
<div class="line"> data.push_back(value / normalizer);</div>
<div class="line"> error.push_back(sqrt(value) / normalizer);</div>
<div class="line"> value = 0;</div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment --><p><b>Background Handling Priority:</b></p><ol type="1">
<li>Check if background is fitted (bkgFitParamNo ≠ -1) → leave data as-is</li>
<li>Check if fixed background given (bkgFix ≠ PMUSR_UNDEFINED) → subtract fixed value</li>
<li>Check if background range given (bkgRange[0] ≥ 0) → estimate and subtract</li>
<li>Fallback: auto-estimate from [0.1×t0, 0.6×t0] → print warning</li>
</ol>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">runData</td><td>Pointer to raw run data handler (for metadata access) </td></tr>
<tr><td class="paramname">histoNo</td><td>Forward histogram number (for background estimation)</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if preparation succeeded, false if <a class="el" href="#a6167092dbec6d5144e603553d63a8110" title="Estimates background from pre-t0 bins.">EstimateBkg()</a> failed</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This method populates fData (<a class="el" href="classPRunData.html">PRunData</a> object) with packed data ready for fitting.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ad4e3beb9d99143c8fd117438dbba7fff" title="Main data preparation orchestrator.">PrepareData()</a>, <a class="el" href="#a6167092dbec6d5144e603553d63a8110" title="Estimates background from pre-t0 bins.">EstimateBkg()</a>, <a class="el" href="#a741460485f8838de6a21c4797dec80e6" title="Estimates initial normalization N₀ from histogram data.">EstimateN0()</a>, <a class="el" href="#a194107943e61f591f132c2fc864a3792" title="Calculates start/end bin indices from fit time range.">CalcNoOfFitBins()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8cpp_source.html#l01199">1199</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8cpp_source.html#l00951">CalcNoOfFitBins()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l02296">EstimateBkg()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l02160">EstimateN0()</a>, <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00376">fForward</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00374">fGoodBins</a>, <a class="el" href="PRunBase_8h_source.html#l00271">PRunBase::fMsrInfo</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00371">fPacking</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00368">fScaleN0AndBkg</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>, and <a class="el" href="PMusr_8h_source.html#l00172">PMUSR_UNDEFINED</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHisto_8cpp_source.html#l01011">PrepareData()</a>.</p>
</div>
</div>
<a id="abdf5efcec3cc3da8904be1ecac33922c" name="abdf5efcec3cc3da8904be1ecac33922c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abdf5efcec3cc3da8904be1ecac33922c">&#9670;&#160;</a></span>PrepareRawViewData()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Bool_t PRunSingleHisto::PrepareRawViewData </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 raw histogram data for viewing (minimal processing). </p>
<p>Lighter-weight preprocessing for raw histogram visualization without background subtraction or full fitting infrastructure.</p>
<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>Histogram index </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True on success</dd></dl>
<p>Take the pre-processed data (i.e. grouping and addrun are preformed) and form the histogram for viewing without any life time correction. </p>
<p>The following steps are preformed:</p><ol type="1">
<li>check if view packing is whished.</li>
<li>check that 'first good data bin', 'last good data bin', and 't0' makes any sense</li>
<li>packing (i.e. rebinnig)</li>
<li>calculate theory</li>
</ol>
<p><b>return:</b></p><ul>
<li>true, if everything went smooth</li>
<li>false, otherwise.</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>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8cpp_source.html#l01292">1292</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8cpp_source.html#l00951">CalcNoOfFitBins()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l02296">EstimateBkg()</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00370">fBackground</a>, <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00376">fForward</a>, <a class="el" href="PRunBase_8h_source.html#l00284">PRunBase::fFuncValues</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00374">fGoodBins</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="PRunSingleHisto_8h_source.html#l00371">fPacking</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00368">fScaleN0AndBkg</a>, <a class="el" href="PRunBase_8h_source.html#l00278">PRunBase::fT0s</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00372">fTheoAsData</a>, <a class="el" href="PRunBase_8h_source.html#l00285">PRunBase::fTheory</a>, <a class="el" href="PRunBase_8h_source.html#l00276">PRunBase::fTimeResolution</a>, <a class="el" href="PMusr_8h_source.html#l00260">MSR_PARAM_FUN_OFFSET</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="PRunSingleHisto_8cpp_source.html#l01011">PrepareData()</a>.</p>
</div>
</div>
<a id="a5b603055ea7f271497bc852e436a464f" name="a5b603055ea7f271497bc852e436a464f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5b603055ea7f271497bc852e436a464f">&#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 PRunSingleHisto::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 processed histogram data for viewing/plotting. </p>
<p>Similar to <a class="el" href="#ae5f41624e8c54b2f8eeb2313e3cfac8e" title="Prepares histogram data for fitting.">PrepareFitData()</a> but optimized for visualization with potentially wider time range for context.</p>
<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>Histogram index </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True on success</dd></dl>
<p>Take the pre-processed data (i.e. grouping and addrun are preformed) and form the histogram for viewing with life time correction, i.e. the exponential decay is removed. </p>
<p>The following steps are preformed:</p><ol type="1">
<li>check if view packing is whished.</li>
<li>check that 'first good data bin', 'last good data bin', and 't0' makes any sense</li>
<li>transform data sets (see below).</li>
<li>calculate theory</li>
</ol>
<p>Muon life time corrected data: Starting from </p><p class="formulaDsp">
<picture><source srcset="form_94_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ N(t) = N_0 e^{-t/\tau} [ 1 + A(t) ] + \mathrm{Bkg} \]" src="form_94.png"/></picture>
</p>
<p> it follows that </p><p class="formulaDsp">
<picture><source srcset="form_95_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ A(t) = (-1) + e^{+t/\tau}\, \frac{N(t)-\mathrm{Bkg}}{N_0}. \]" src="form_95.png"/></picture>
</p>
<p> For the error estimate only the statistical error of <picture><source srcset="form_96_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ N(t) $" src="form_96.png"/></picture> is used, and hence </p><p class="formulaDsp">
<picture><source srcset="form_97_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ \Delta A(t) = \frac{e^{t/\tau}}{N_0}\,\sqrt{\frac{N(t)}{p}} \]" src="form_97.png"/></picture>
</p>
<p> where <picture><source srcset="form_98_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ p $" src="form_98.png"/></picture> is the packing, and <picture><source srcset="form_96_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ N(t) $" src="form_96.png"/></picture> are the packed data, i.e. </p><p class="formulaDsp">
<picture><source srcset="form_99_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\[ N(t_i) = \frac{1}{p}\, \sum_{j=i}^{i+p} n_j \]" src="form_99.png"/></picture>
</p>
<p> with <picture><source srcset="form_100_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaInl" alt="$ n_j $" src="form_100.png"/></picture> the raw histogram data bins.</p>
<p><b>return:</b></p><ul>
<li>true, if everything went smooth</li>
<li>false, otherwise</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>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8cpp_source.html#l01481">1481</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunSingleHisto_8cpp_source.html#l00951">CalcNoOfFitBins()</a>, <a class="el" href="PRunBase_8cpp_source.html#l00274">PRunBase::CalculateKaiserFilterCoeff()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l02296">EstimateBkg()</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00370">fBackground</a>, <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00376">fForward</a>, <a class="el" href="PRunBase_8h_source.html#l00284">PRunBase::fFuncValues</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00374">fGoodBins</a>, <a class="el" href="PRunBase_8cpp_source.html#l00340">PRunBase::FilterTheo()</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="PRunSingleHisto_8h_source.html#l00371">fPacking</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00368">fScaleN0AndBkg</a>, <a class="el" href="PRunBase_8h_source.html#l00278">PRunBase::fT0s</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00372">fTheoAsData</a>, <a class="el" href="PRunBase_8h_source.html#l00285">PRunBase::fTheory</a>, <a class="el" href="PRunBase_8h_source.html#l00276">PRunBase::fTimeResolution</a>, <a class="el" href="PMusr_8h_source.html#l00138">GAMMA_BAR_MUON</a>, <a class="el" href="PMusr_8h_source.html#l00260">MSR_PARAM_FUN_OFFSET</a>, <a class="el" href="PMusr_8h_source.html#l00119">PMUON_LIFETIME</a>, <a class="el" href="PMusr_8h_source.html#l00172">PMUSR_UNDEFINED</a>, <a class="el" href="PMusr_8h_source.html#l00339">RRF_UNIT_G</a>, <a class="el" href="PMusr_8h_source.html#l00333">RRF_UNIT_kHz</a>, <a class="el" href="PMusr_8h_source.html#l00337">RRF_UNIT_Mcs</a>, <a class="el" href="PMusr_8h_source.html#l00335">RRF_UNIT_MHz</a>, and <a class="el" href="PMusr_8h_source.html#l00341">RRF_UNIT_T</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHisto_8cpp_source.html#l01011">PrepareData()</a>.</p>
</div>
</div>
<a id="a80be353a51c1e9c200f557c872a7e46b" name="a80be353a51c1e9c200f557c872a7e46b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a80be353a51c1e9c200f557c872a7e46b">&#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 PRunSingleHisto::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 specification (COMMANDS block syntax). </p>
<p>Dynamically changes the fit range from COMMAND block instructions.</p>
<p>Format: "fit_range fgb+n0 lgb-n1"</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">fitRange</td><td>String with bin offsets from good bin markers</td></tr>
</table>
</dd>
</dl>
<p>Parses and applies a FIT_RANGE command to modify the fit range on the fly, typically used during interactive fitting sessions or systematic scans.</p>
<p><b>Syntax (in COMMAND block):</b> </p><div class="fragment"><div class="line">FIT_RANGE fgb[+n00] lgb[-n01] [fgb[+n10] lgb[-n11] ... fgb[+nN0] lgb[-nN1]]</div>
</div><!-- fragment --><p>where:</p><ul>
<li><b>fgb:</b> First good bin (start of fit range)</li>
<li><b>lgb:</b> Last good bin (end of fit range)</li>
<li><b>+nXY / -nXY:</b> Optional offsets to shift the range (+ extends, - contracts)</li>
<li><b>Multiple pairs:</b> If N+1 pairs given, they apply to each of N RUN blocks</li>
</ul>
<p><b>Two modes:</b></p><ol type="1">
<li><b>Single pair:</b> <code>FIT_RANGE fgb lgb</code> applies to all runs</li>
<li><b>Per-run pairs:</b> <code>FIT_RANGE fgb₀ lgb₀ fgb₁ lgb₁ ...</code> applies pair i to RUN block i</li>
</ol>
<p><b>Algorithm:</b></p><ol type="1">
<li>Tokenize the fitRange string by spaces/tabs</li>
<li>If 3 tokens (FIT_RANGE + 2 values): apply to this run</li>
<li>If &gt;3 tokens and odd number: extract pair for this run's index (fRunNo)</li>
<li>Parse offsets from + or - characters in fgb/lgb strings</li>
<li>Calculate new fFitStartTime and fFitEndTime:<ul>
<li>fFitStartTime = (fGoodBins[0] + offset - t0) × t_res</li>
<li>fFitEndTime = (fGoodBins[1] - offset - t0) × t_res</li>
</ul>
</li>
</ol>
<p><b>Example:</b> </p><div class="fragment"><div class="line">FIT_RANGE 100+10 500-20 # Fit from bin 110 to bin 480 (applying offsets)</div>
</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">fitRange</td><td>String from COMMAND block containing FIT_RANGE specification</td></tr>
</table>
</dd>
</dl>
<dl class="section note"><dt>Note</dt><dd>Errors in parsing (wrong number of tokens) are reported to std::cerr and the command is ignored.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a194107943e61f591f132c2fc864a3792" title="Calculates start/end bin indices from fit time range.">CalcNoOfFitBins()</a>, <a class="el" href="#a7f03b7b4d1faa25d8619d3060ec2d1b6" title="Determines fit range from MSR file settings.">GetProperFitRange()</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8cpp_source.html#l00845">845</a> of file <a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.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="PRunSingleHisto_8h_source.html#l00374">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="a2df50725ab73222cad6c15698ba57cb9" name="a2df50725ab73222cad6c15698ba57cb9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2df50725ab73222cad6c15698ba57cb9">&#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 PRunSingleHisto::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>Background level in counts/bin (estimated from pre-t0 bins or fixed value from RUN block) </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8h_source.html#l00370">370</a> of file <a class="el" href="PRunSingleHisto_8h_source.html">PRunSingleHisto.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHisto_8cpp_source.html#l00208">CalcChiSquare()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00323">CalcChiSquareExpected()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00455">CalcMaxLikelihood()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00590">CalcMaxLikelihoodExpected()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00714">CalcTheory()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l02296">EstimateBkg()</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00286">GetBackground()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01292">PrepareRawViewData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01481">PrepareViewData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00065">PRunSingleHisto()</a>, and <a class="el" href="PRunSingleHisto_8cpp_source.html#l00108">PRunSingleHisto()</a>.</p>
</div>
</div>
<a id="a7b36967f5d5df2e4085568ee3781e21e" name="a7b36967f5d5df2e4085568ee3781e21e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b36967f5d5df2e4085568ee3781e21e">&#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 PRunSingleHisto::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="PRunSingleHisto_8h_source.html#l00379">379</a> of file <a class="el" href="PRunSingleHisto_8h_source.html">PRunSingleHisto.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHisto_8cpp_source.html#l00208">CalcChiSquare()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00323">CalcChiSquareExpected()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00455">CalcMaxLikelihood()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00590">CalcMaxLikelihoodExpected()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00951">CalcNoOfFitBins()</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00298">GetEndTimeBin()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00065">PRunSingleHisto()</a>, and <a class="el" href="PRunSingleHisto_8cpp_source.html#l00108">PRunSingleHisto()</a>.</p>
</div>
</div>
<a id="af68e70c2788d8074b18e7e47f6546fbc" name="af68e70c2788d8074b18e7e47f6546fbc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af68e70c2788d8074b18e7e47f6546fbc">&#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> PRunSingleHisto::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 (background-corrected, packed) </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8h_source.html#l00376">376</a> of file <a class="el" href="PRunSingleHisto_8h_source.html">PRunSingleHisto.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHisto_8cpp_source.html#l02296">EstimateBkg()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l02160">EstimateN0()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01948">GetProperDataRange()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01011">PrepareData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01199">PrepareFitData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01292">PrepareRawViewData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01481">PrepareViewData()</a>, and <a class="el" href="PRunSingleHisto_8cpp_source.html#l00153">~PRunSingleHisto()</a>.</p>
</div>
</div>
<a id="aad79f1a5522f7b8dd02a931e1da46b72" name="aad79f1a5522f7b8dd02a931e1da46b72"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aad79f1a5522f7b8dd02a931e1da46b72">&#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 PRunSingleHisto::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 markers for COMMANDS block: [0]=fgb (first good bin/t0), [1]=lgb (last good bin) </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8h_source.html#l00374">374</a> of file <a class="el" href="PRunSingleHisto_8h_source.html">PRunSingleHisto.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHisto_8cpp_source.html#l01948">GetProperDataRange()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l02082">GetProperFitRange()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01199">PrepareFitData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01292">PrepareRawViewData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01481">PrepareViewData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00065">PRunSingleHisto()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00108">PRunSingleHisto()</a>, and <a class="el" href="PRunSingleHisto_8cpp_source.html#l00845">SetFitRangeBin()</a>.</p>
</div>
</div>
<a id="a3263de8a471132410ce364542bd04a00" name="a3263de8a471132410ce364542bd04a00"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3263de8a471132410ce364542bd04a00">&#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 PRunSingleHisto::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 bins within fit range (fStartTimeBin to fEndTimeBin) </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8h_source.html#l00369">369</a> of file <a class="el" href="PRunSingleHisto_8h_source.html">PRunSingleHisto.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHisto_8cpp_source.html#l00951">CalcNoOfFitBins()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00792">GetNoOfFitBins()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00065">PRunSingleHisto()</a>, and <a class="el" href="PRunSingleHisto_8cpp_source.html#l00108">PRunSingleHisto()</a>.</p>
</div>
</div>
<a id="ab2314ada7f993fd9fa07d365be4973e1" name="ab2314ada7f993fd9fa07d365be4973e1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab2314ada7f993fd9fa07d365be4973e1">&#9670;&#160;</a></span>fPacking</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Int_t PRunSingleHisto::fPacking</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Bin packing factor (REQUIRED: from RUN or GLOBAL block) </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8h_source.html#l00371">371</a> of file <a class="el" href="PRunSingleHisto_8h_source.html">PRunSingleHisto.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHisto_8cpp_source.html#l00208">CalcChiSquare()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00323">CalcChiSquareExpected()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00455">CalcMaxLikelihood()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00590">CalcMaxLikelihoodExpected()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l02296">EstimateBkg()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l02160">EstimateN0()</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00304">GetPacking()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01199">PrepareFitData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01292">PrepareRawViewData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01481">PrepareViewData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00065">PRunSingleHisto()</a>, and <a class="el" href="PRunSingleHisto_8cpp_source.html#l00108">PRunSingleHisto()</a>.</p>
</div>
</div>
<a id="a8267ca69b0cf2a4e6934e927f227e74b" name="a8267ca69b0cf2a4e6934e927f227e74b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8267ca69b0cf2a4e6934e927f227e74b">&#9670;&#160;</a></span>fScaleN0AndBkg</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">Bool_t PRunSingleHisto::fScaleN0AndBkg</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>Scaling mode: true = scale N₀ and B to 1/ns, false = leave as 1/bin (determined by <a class="el" href="#a2c5716a3db81fb1f8c253fdf759930b7" title="Determines if N₀ and background should be scaled to 1/ns.">IsScaleN0AndBkg()</a>) </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8h_source.html#l00368">368</a> of file <a class="el" href="PRunSingleHisto_8h_source.html">PRunSingleHisto.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHisto_8cpp_source.html#l00208">CalcChiSquare()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00323">CalcChiSquareExpected()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00455">CalcMaxLikelihood()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00590">CalcMaxLikelihoodExpected()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l02296">EstimateBkg()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l02160">EstimateN0()</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00310">GetScaleN0AndBkg()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01199">PrepareFitData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01292">PrepareRawViewData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01481">PrepareViewData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00065">PRunSingleHisto()</a>, and <a class="el" href="PRunSingleHisto_8cpp_source.html#l00108">PRunSingleHisto()</a>.</p>
</div>
</div>
<a id="a86de1420609e08e6fa277a6730ecb0a2" name="a86de1420609e08e6fa277a6730ecb0a2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86de1420609e08e6fa277a6730ecb0a2">&#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 PRunSingleHisto::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 after packing) </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8h_source.html#l00378">378</a> of file <a class="el" href="PRunSingleHisto_8h_source.html">PRunSingleHisto.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHisto_8cpp_source.html#l00208">CalcChiSquare()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00323">CalcChiSquareExpected()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00455">CalcMaxLikelihood()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00590">CalcMaxLikelihoodExpected()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00951">CalcNoOfFitBins()</a>, <a class="el" href="PRunSingleHisto_8h_source.html#l00292">GetStartTimeBin()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00065">PRunSingleHisto()</a>, and <a class="el" href="PRunSingleHisto_8cpp_source.html#l00108">PRunSingleHisto()</a>.</p>
</div>
</div>
<a id="aab652fdbf5612f51b224bafb132968d7" name="aab652fdbf5612f51b224bafb132968d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aab652fdbf5612f51b224bafb132968d7">&#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 PRunSingleHisto::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 mode: true = at data points, false = high-resolution grid for smooth Fourier transforms. </p>
<p class="definition">Definition at line <a class="el" href="PRunSingleHisto_8h_source.html#l00372">372</a> of file <a class="el" href="PRunSingleHisto_8h_source.html">PRunSingleHisto.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunSingleHisto_8cpp_source.html#l01292">PrepareRawViewData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l01481">PrepareViewData()</a>, <a class="el" href="PRunSingleHisto_8cpp_source.html#l00065">PRunSingleHisto()</a>, and <a class="el" href="PRunSingleHisto_8cpp_source.html#l00108">PRunSingleHisto()</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="PRunSingleHisto_8h_source.html">PRunSingleHisto.h</a></li>
<li>/workspace/LMU/musrfit/src/classes/<a class="el" href="PRunSingleHisto_8cpp_source.html">PRunSingleHisto.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="classPRunSingleHisto.html">PRunSingleHisto</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>