Files
musrfit/doc/technical/html/classPRunMuMinus.html
2026-10-29 15:47:56 +00:00

1676 lines
119 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.17.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>musrfit: PRunMuMinus Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="codefolding.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="cookie.js"></script>
<script type="module">
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
const theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'default';
mermaid.initialize({ startOnLoad: true, theme: theme });
</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.12.1</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.17.0 -->
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', codefold.init);
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', () => {
initMenu('',true);
});
</script>
<div id="main-nav-mobile">
</div><!-- main-nav-mobile -->
<div id="main-nav">
<ul class="sm sm-dox" id="main-menu">
<li id="searchBoxPos2" style="float:right">
</li>
</ul>
</div><!-- main-nav -->
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded',() => { initNavTree('classPRunMuMinus.html','','classPRunMuMinus-members'); });
</script>
<div id="container">
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">PRunMuMinus Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Class for handling negative muon (μ⁻) histogram fits.
<a href="#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="PRunMuMinus_8h_source.html">PRunMuMinus.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for PRunMuMinus:</div>
<div class="dyncontent">
<div class="center"><img src="classPRunMuMinus__inherit__graph.png" border="0" usemap="#aPRunMuMinus_inherit__map" loading="lazy" alt="Inheritance graph"/></div>
<map name="aPRunMuMinus_inherit__map" id="aPRunMuMinus_inherit__map">
<area shape="rect" title="Class for handling negative muon (μ⁻) histogram fits." alt="" coords="5,81,111,109"/>
<area shape="rect" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types." alt="" coords="18,5,98,33"/>
<area shape="poly" title=" " alt="" coords="61,49,61,81,55,81,55,49"/>
</map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for PRunMuMinus:</div>
<div class="dyncontent">
<div class="center"><img src="classPRunMuMinus__coll__graph.png" border="0" usemap="#aPRunMuMinus_coll__map" loading="lazy" alt="Collaboration graph"/></div>
<map name="aPRunMuMinus_coll__map" id="aPRunMuMinus_coll__map">
<area shape="rect" title="Class for handling negative muon (μ⁻) histogram fits." alt="" coords="951,172,1056,199"/>
<area shape="rect" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types." alt="" coords="821,172,902,199"/>
<area shape="poly" title=" " alt="" coords="917,183,950,183,950,188,917,188"/>
<area shape="rect" href="classPMsrHandler.html" title="MSR file parser and manager for the musrfit framework." alt="" coords="318,90,418,118"/>
<area shape="poly" title=" " alt="" coords="434,103,601,116,700,131,798,154,835,168,833,173,797,159,699,136,600,121,434,108"/>
<area shape="rect" href="classPRunDataHandler.html" title="Raw data file reader and format converter for μSR data." alt="" coords="573,50,702,78"/>
<area shape="poly" title=" " alt="" coords="434,94,549,78,572,74,573,80,549,84,434,99"/>
<area shape="rect" href="structPStartupOptions.html" title=" " alt="" coords="21,6,142,34"/>
<area shape="poly" title=" " alt="" coords="158,24,222,35,288,54,321,70,349,87,346,92,318,74,286,59,221,40,157,29"/>
<area shape="rect" href="classPMsrGlobalBlock.html" title=" " alt="" coords="19,62,144,90"/>
<area shape="poly" title=" " alt="" coords="160,81,318,97,317,102,159,86"/>
<area shape="rect" href="structPMsrFourierStructure.html" title=" " alt="" coords="7,118,156,146"/>
<area shape="poly" title=" " alt="" coords="171,132,228,130,286,124,322,116,323,121,287,129,229,135,171,137"/>
<area shape="rect" href="structPMsrStatisticStructure.html" title=" " alt="" coords="5,174,158,202"/>
<area shape="poly" title=" " alt="" coords="173,185,230,177,286,161,323,140,351,116,355,120,326,144,288,166,231,182,174,190"/>
<area shape="rect" href="classPMsrRunBlock.html" title=" " alt="" coords="584,174,691,202"/>
<area shape="poly" title=" " alt="" coords="707,185,821,183,821,189,707,190"/>
<area shape="poly" title=" " alt="" coords="718,73,760,86,799,106,832,137,855,170,850,173,828,141,796,110,758,91,717,78"/>
<area shape="rect" href="structPAny2ManyInfo.html" title=" " alt="" coords="311,13,426,41"/>
<area shape="poly" title=" " alt="" coords="442,34,573,52,572,58,441,39"/>
<area shape="rect" href="classPRunData.html" title=" " alt="" coords="598,228,678,255"/>
<area shape="poly" title=" " alt="" coords="693,235,744,227,796,215,835,197,838,202,798,220,745,233,694,240"/>
<area shape="rect" href="structPMetaData.html" title=" " alt="" coords="594,284,681,311"/>
<area shape="poly" title=" " alt="" coords="696,291,747,281,796,260,813,247,828,230,850,198,855,201,833,234,817,250,799,265,748,286,697,296"/>
</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 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a2817c764bb5659503e69a0bcdbe1f010" id="r_a2817c764bb5659503e69a0bcdbe1f010"><td class="memItemLeft">&#160;</td><td class="memItemRight"><a class="el" href="#a2817c764bb5659503e69a0bcdbe1f010">PRunMuMinus</a> ()</td></tr>
<tr class="memdesc:a2817c764bb5659503e69a0bcdbe1f010"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor creating an empty, invalid μ⁻ run object. <br /></td></tr>
<tr class="memitem:aa68ee9895818eced472ddc5bbe9c52d6" id="r_aa68ee9895818eced472ddc5bbe9c52d6"><td class="memItemLeft">&#160;</td><td class="memItemRight"><a class="el" href="#aa68ee9895818eced472ddc5bbe9c52d6">PRunMuMinus</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:aa68ee9895818eced472ddc5bbe9c52d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main constructor initializing a μ⁻ run from MSR file and raw data. <br /></td></tr>
<tr class="memitem:a07263c85cb90840ff1dbd66a423b0dd7" id="r_a07263c85cb90840ff1dbd66a423b0dd7"><td class="memItemLeft">virtual&#160;</td><td class="memItemRight"><a class="el" href="#a07263c85cb90840ff1dbd66a423b0dd7">~PRunMuMinus</a> ()</td></tr>
<tr class="memdesc:a07263c85cb90840ff1dbd66a423b0dd7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual destructor cleaning up allocated resources. <br /></td></tr>
<tr class="memitem:abe0df325a415b34082e7604d3d99ce32" id="r_abe0df325a415b34082e7604d3d99ce32"><td class="memItemLeft">virtual Double_t&#160;</td><td class="memItemRight"><a class="el" href="#abe0df325a415b34082e7604d3d99ce32">CalcChiSquare</a> (const std::vector&lt; Double_t &gt; &amp;par)</td></tr>
<tr class="memdesc:abe0df325a415b34082e7604d3d99ce32"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates χ² between μ⁻ data and theory (least-squares fit metric). <br /></td></tr>
<tr class="memitem:a64e3216f832ddb5c0b219c7795ea4d66" id="r_a64e3216f832ddb5c0b219c7795ea4d66"><td class="memItemLeft">virtual Double_t&#160;</td><td class="memItemRight"><a class="el" href="#a64e3216f832ddb5c0b219c7795ea4d66">CalcChiSquareExpected</a> (const std::vector&lt; Double_t &gt; &amp;par)</td></tr>
<tr class="memdesc:a64e3216f832ddb5c0b219c7795ea4d66"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates expected χ² based on theory predictions (statistical diagnostic). <br /></td></tr>
<tr class="memitem:ae20a804fc578c31788171f710f865210" id="r_ae20a804fc578c31788171f710f865210"><td class="memItemLeft">virtual Double_t&#160;</td><td class="memItemRight"><a class="el" href="#ae20a804fc578c31788171f710f865210">CalcMaxLikelihood</a> (const std::vector&lt; Double_t &gt; &amp;par)</td></tr>
<tr class="memdesc:ae20a804fc578c31788171f710f865210"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates negative log-likelihood for Poisson statistics (low-count fit metric). <br /></td></tr>
<tr class="memitem:a7941f4ab9ecf135916427b862a4f0796" id="r_a7941f4ab9ecf135916427b862a4f0796"><td class="memItemLeft">virtual void&#160;</td><td class="memItemRight"><a class="el" href="#a7941f4ab9ecf135916427b862a4f0796">CalcTheory</a> ()</td></tr>
<tr class="memdesc:a7941f4ab9ecf135916427b862a4f0796"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluates theory function at all data points (or high-resolution grid). <br /></td></tr>
<tr class="memitem:a76be61552695c0c8bc1dc4680397e11d" id="r_a76be61552695c0c8bc1dc4680397e11d"><td class="memItemLeft">virtual UInt_t&#160;</td><td class="memItemRight"><a class="el" href="#a76be61552695c0c8bc1dc4680397e11d">GetNoOfFitBins</a> ()</td></tr>
<tr class="memdesc:a76be61552695c0c8bc1dc4680397e11d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the number of bins included in the fit range. <br /></td></tr>
<tr class="memitem:a6d60a6ee87cd46de7e9a5798ceb1970d" id="r_a6d60a6ee87cd46de7e9a5798ceb1970d"><td class="memItemLeft">virtual void&#160;</td><td class="memItemRight"><a class="el" href="#a6d60a6ee87cd46de7e9a5798ceb1970d">SetFitRangeBin</a> (const TString fitRange)</td></tr>
<tr class="memdesc:a6d60a6ee87cd46de7e9a5798ceb1970d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets fit range using bin-offset specification (COMMANDS block syntax). <br /></td></tr>
<tr class="memitem:a06a7d84b23c70fa19beeacbb72591419" id="r_a06a7d84b23c70fa19beeacbb72591419"><td class="memItemLeft">virtual Int_t&#160;</td><td class="memItemRight"><a class="el" href="#a06a7d84b23c70fa19beeacbb72591419">GetStartTimeBin</a> ()</td></tr>
<tr class="memdesc:a06a7d84b23c70fa19beeacbb72591419"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the first bin index in the fit range. <br /></td></tr>
<tr class="memitem:abe411be92e5fe6dc6e0646f781c61893" id="r_abe411be92e5fe6dc6e0646f781c61893"><td class="memItemLeft">virtual Int_t&#160;</td><td class="memItemRight"><a class="el" href="#abe411be92e5fe6dc6e0646f781c61893">GetEndTimeBin</a> ()</td></tr>
<tr class="memdesc:abe411be92e5fe6dc6e0646f781c61893"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the last bin index in the fit range (exclusive). <br /></td></tr>
<tr class="memitem:a3ce94ec1a181fcbc622747a64652b479" id="r_a3ce94ec1a181fcbc622747a64652b479"><td class="memItemLeft">virtual Int_t&#160;</td><td class="memItemRight"><a class="el" href="#a3ce94ec1a181fcbc622747a64652b479">GetPacking</a> ()</td></tr>
<tr class="memdesc:a3ce94ec1a181fcbc622747a64652b479"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the bin packing factor. <br /></td></tr>
<tr class="memitem:ad7a4e5bf6faa30254e8abf42ea6ff76d" id="r_ad7a4e5bf6faa30254e8abf42ea6ff76d"><td class="memItemLeft">virtual void&#160;</td><td class="memItemRight"><a class="el" href="#ad7a4e5bf6faa30254e8abf42ea6ff76d">CalcNoOfFitBins</a> ()</td></tr>
<tr class="memdesc:ad7a4e5bf6faa30254e8abf42ea6ff76d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculates start/end bin indices from fit time range. <br /></td></tr>
<tr class="inherit_header pub_methods_classPRunBase"><td colspan="2">Public Member Functions inherited from <a class="el" href="classPRunBase.html">PRunBase</a></td></tr>
<tr class="memitem:ae5fc9bd22de779aff2bbbcbf14b90d42 pub_methods_classPRunBase" id="r_ae5fc9bd22de779aff2bbbcbf14b90d42"><td class="memItemLeft">&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#ae5fc9bd22de779aff2bbbcbf14b90d42">PRunBase</a> ()</td></tr>
<tr class="memdesc:ae5fc9bd22de779aff2bbbcbf14b90d42 pub_methods_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. <br /></td></tr>
<tr class="memitem:a3f9caf361812bebe3f63146878e28b18 pub_methods_classPRunBase" id="r_a3f9caf361812bebe3f63146878e28b18"><td class="memItemLeft">&#160;</td><td class="memItemRight"><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 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="memitem:a1048c017a4891ed5ca092377f73fa83a pub_methods_classPRunBase" id="r_a1048c017a4891ed5ca092377f73fa83a"><td class="memItemLeft">virtual&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#a1048c017a4891ed5ca092377f73fa83a">~PRunBase</a> ()</td></tr>
<tr class="memdesc:a1048c017a4891ed5ca092377f73fa83a pub_methods_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Virtual destructor. <br /></td></tr>
<tr class="memitem:a59cbd8ad7cb144c99c1dccefa4e200ff pub_methods_classPRunBase" id="r_a59cbd8ad7cb144c99c1dccefa4e200ff"><td class="memItemLeft">virtual void&#160;</td><td class="memItemRight"><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 pub_methods_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the fit time range for this run. <br /></td></tr>
<tr class="memitem:ac452c100e88628bad5a6017ae08b5bcb pub_methods_classPRunBase" id="r_ac452c100e88628bad5a6017ae08b5bcb"><td class="memItemLeft">virtual UInt_t&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#ac452c100e88628bad5a6017ae08b5bcb">GetRunNo</a> ()</td></tr>
<tr class="memdesc:ac452c100e88628bad5a6017ae08b5bcb 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="memitem:ae3e949dbc18ee0596270d059f5d6a2c1 pub_methods_classPRunBase" id="r_ae3e949dbc18ee0596270d059f5d6a2c1"><td class="memItemLeft">virtual <a class="el" href="classPRunData.html">PRunData</a> *&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#ae3e949dbc18ee0596270d059f5d6a2c1">GetData</a> ()</td></tr>
<tr class="memdesc:ae3e949dbc18ee0596270d059f5d6a2c1 pub_methods_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns pointer to processed data container. <br /></td></tr>
<tr class="memitem:a0b2209bc7e4adf26ad448b78d726c366 pub_methods_classPRunBase" id="r_a0b2209bc7e4adf26ad448b78d726c366"><td class="memItemLeft">virtual void&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#a0b2209bc7e4adf26ad448b78d726c366">CleanUp</a> ()</td></tr>
<tr class="memdesc:a0b2209bc7e4adf26ad448b78d726c366 pub_methods_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cleans up internal data structures. <br /></td></tr>
<tr class="memitem:a269787baf9a101ce181ef0b5a79b9e0d pub_methods_classPRunBase" id="r_a269787baf9a101ce181ef0b5a79b9e0d"><td class="memItemLeft">virtual Bool_t&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#a269787baf9a101ce181ef0b5a79b9e0d">IsValid</a> ()</td></tr>
<tr class="memdesc:a269787baf9a101ce181ef0b5a79b9e0d pub_methods_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns validity status of this run object. <br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pro-methods" class="groupheader"><a id="pro-methods" name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a3a96c9156e9207dcc7b1f95a1fcbb9e5" id="r_a3a96c9156e9207dcc7b1f95a1fcbb9e5"><td class="memItemLeft">virtual Bool_t&#160;</td><td class="memItemRight"><a class="el" href="#a3a96c9156e9207dcc7b1f95a1fcbb9e5">PrepareData</a> ()</td></tr>
<tr class="memdesc:a3a96c9156e9207dcc7b1f95a1fcbb9e5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main data preparation routine for μ⁻ fitting and viewing. <br /></td></tr>
<tr class="memitem:aba3d803c4f6debdc66145d4ec9a9fa23" id="r_aba3d803c4f6debdc66145d4ec9a9fa23"><td class="memItemLeft">virtual Bool_t&#160;</td><td class="memItemRight"><a class="el" href="#aba3d803c4f6debdc66145d4ec9a9fa23">PrepareFitData</a> (<a class="el" href="classPRawRunData.html">PRawRunData</a> *runData, const UInt_t histoNo)</td></tr>
<tr class="memdesc:aba3d803c4f6debdc66145d4ec9a9fa23"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepares μ⁻ histogram data for fitting. <br /></td></tr>
<tr class="memitem:aebb1bb9b7b233bc09bd6a996e9ce0e87" id="r_aebb1bb9b7b233bc09bd6a996e9ce0e87"><td class="memItemLeft">virtual Bool_t&#160;</td><td class="memItemRight"><a class="el" href="#aebb1bb9b7b233bc09bd6a996e9ce0e87">PrepareRawViewData</a> (<a class="el" href="classPRawRunData.html">PRawRunData</a> *runData, const UInt_t histoNo)</td></tr>
<tr class="memdesc:aebb1bb9b7b233bc09bd6a996e9ce0e87"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prepares μ⁻ histogram data for viewing/plotting (minimal processing). <br /></td></tr>
<tr class="inherit_header pro_methods_classPRunBase"><td colspan="2">Protected Member Functions inherited from <a class="el" href="classPRunBase.html">PRunBase</a></td></tr>
<tr class="memitem:a7fe8a9d482c6a80e089f5a3be88979ce pro_methods_classPRunBase" id="r_a7fe8a9d482c6a80e089f5a3be88979ce"><td class="memItemLeft">virtual void&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#a7fe8a9d482c6a80e089f5a3be88979ce">DeadTimeCorrection</a> (std::vector&lt; <a class="el" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> &gt; &amp;histos, <a class="el" href="PMusr_8h.html#a01eec7e896afb5c4601dea91ee31477b">PUIntVector</a> &amp;histoNo)</td></tr>
<tr class="memdesc:a7fe8a9d482c6a80e089f5a3be88979ce pro_methods_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">carry out dead time correction <br /></td></tr>
<tr class="memitem:ac035dac111f8726a36bafe86b2181054 pro_methods_classPRunBase" id="r_ac035dac111f8726a36bafe86b2181054"><td class="memItemLeft">virtual void&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#ac035dac111f8726a36bafe86b2181054">CalculateKaiserFilterCoeff</a> (Double_t wc, Double_t A, Double_t dw)</td></tr>
<tr class="memdesc:ac035dac111f8726a36bafe86b2181054 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="memitem:af75ae97c44331887fa56ee247d8e92ac pro_methods_classPRunBase" id="r_af75ae97c44331887fa56ee247d8e92ac"><td class="memItemLeft">virtual void&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#af75ae97c44331887fa56ee247d8e92ac">FilterTheo</a> ()</td></tr>
<tr class="memdesc:af75ae97c44331887fa56ee247d8e92ac pro_methods_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Applies Kaiser FIR filter to theory values for RRF fits. <br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pri-methods" class="groupheader"><a id="pri-methods" name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:a975704a1a49fed0d3bb5941af1f8fce5" id="r_a975704a1a49fed0d3bb5941af1f8fce5"><td class="memItemLeft">virtual Bool_t&#160;</td><td class="memItemRight"><a class="el" href="#a975704a1a49fed0d3bb5941af1f8fce5">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:a975704a1a49fed0d3bb5941af1f8fce5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines and validates t0 values for μ⁻ histogram. <br /></td></tr>
<tr class="memitem:a6849d8b428569486521ae56af88caf94" id="r_a6849d8b428569486521ae56af88caf94"><td class="memItemLeft">virtual Bool_t&#160;</td><td class="memItemRight"><a class="el" href="#a6849d8b428569486521ae56af88caf94">GetProperDataRange</a> ()</td></tr>
<tr class="memdesc:a6849d8b428569486521ae56af88caf94"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines data range (region of valid histogram data). <br /></td></tr>
<tr class="memitem:a74f9bfd0610af078c6bb724398148ac1" id="r_a74f9bfd0610af078c6bb724398148ac1"><td class="memItemLeft">virtual void&#160;</td><td class="memItemRight"><a class="el" href="#a74f9bfd0610af078c6bb724398148ac1">GetProperFitRange</a> (<a class="el" href="classPMsrGlobalBlock.html">PMsrGlobalBlock</a> *globalBlock)</td></tr>
<tr class="memdesc:a74f9bfd0610af078c6bb724398148ac1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Determines fit range from MSR file settings. <br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pri-attribs" class="groupheader"><a id="pri-attribs" name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:afd5f4969b908b4a57e95dd1f53ae7702" id="r_afd5f4969b908b4a57e95dd1f53ae7702"><td class="memItemLeft">UInt_t&#160;</td><td class="memItemRight"><a class="el" href="#afd5f4969b908b4a57e95dd1f53ae7702">fNoOfFitBins</a></td></tr>
<tr class="memdesc:afd5f4969b908b4a57e95dd1f53ae7702"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of bins within fit range (between fStartTimeBin and fEndTimeBin). <br /></td></tr>
<tr class="memitem:a2f6c710527bc6cc3dcb4542aa9d32a39" id="r_a2f6c710527bc6cc3dcb4542aa9d32a39"><td class="memItemLeft">Int_t&#160;</td><td class="memItemRight"><a class="el" href="#a2f6c710527bc6cc3dcb4542aa9d32a39">fPacking</a></td></tr>
<tr class="memdesc:a2f6c710527bc6cc3dcb4542aa9d32a39"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bin packing factor (REQUIRED for μ⁻). <br /></td></tr>
<tr class="memitem:a1578acd55d3ef318e0e63f517adfc983" id="r_a1578acd55d3ef318e0e63f517adfc983"><td class="memItemLeft">Bool_t&#160;</td><td class="memItemRight"><a class="el" href="#a1578acd55d3ef318e0e63f517adfc983">fTheoAsData</a></td></tr>
<tr class="memdesc:a1578acd55d3ef318e0e63f517adfc983"><td class="mdescLeft">&#160;</td><td class="mdescRight">Theory calculation mode flag. <br /></td></tr>
<tr class="memitem:a2f9ea96ed2ba33a888c32efdc907950a" id="r_a2f9ea96ed2ba33a888c32efdc907950a"><td class="memItemLeft">Int_t&#160;</td><td class="memItemRight"><a class="el" href="#a2f9ea96ed2ba33a888c32efdc907950a">fGoodBins</a> [2]</td></tr>
<tr class="memdesc:a2f9ea96ed2ba33a888c32efdc907950a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Good bin markers for bin-based fit range specification. <br /></td></tr>
<tr class="memitem:a88d70a3eb1263bd5f7351920f28bd6b5" id="r_a88d70a3eb1263bd5f7351920f28bd6b5"><td class="memItemLeft"><a class="el" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a>&#160;</td><td class="memItemRight"><a class="el" href="#a88d70a3eb1263bd5f7351920f28bd6b5">fForward</a></td></tr>
<tr class="memdesc:a88d70a3eb1263bd5f7351920f28bd6b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Forward detector histogram data (background-corrected, packed). <br /></td></tr>
<tr class="memitem:aba22dd04f7bdde0de5231db0eeee161e" id="r_aba22dd04f7bdde0de5231db0eeee161e"><td class="memItemLeft">Int_t&#160;</td><td class="memItemRight"><a class="el" href="#aba22dd04f7bdde0de5231db0eeee161e">fStartTimeBin</a></td></tr>
<tr class="memdesc:aba22dd04f7bdde0de5231db0eeee161e"><td class="mdescLeft">&#160;</td><td class="mdescRight">First bin index in fit range (inclusive, 0-based after packing). <br /></td></tr>
<tr class="memitem:aac4549dbf197ff0a8217b5bfdaf2b9a5" id="r_aac4549dbf197ff0a8217b5bfdaf2b9a5"><td class="memItemLeft">Int_t&#160;</td><td class="memItemRight"><a class="el" href="#aac4549dbf197ff0a8217b5bfdaf2b9a5">fEndTimeBin</a></td></tr>
<tr class="memdesc:aac4549dbf197ff0a8217b5bfdaf2b9a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Last bin index in fit range (exclusive: loop as i &lt; fEndTimeBin). <br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-inherited" class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_attribs_classPRunBase"><td colspan="2">Protected Attributes inherited from <a class="el" href="classPRunBase.html">PRunBase</a></td></tr>
<tr class="memitem:a12aa647fe8c42bff6712a1b065d40e9d pro_attribs_classPRunBase" id="r_a12aa647fe8c42bff6712a1b065d40e9d"><td class="memItemLeft">Bool_t&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#a12aa647fe8c42bff6712a1b065d40e9d">fValid</a></td></tr>
<tr class="memdesc:a12aa647fe8c42bff6712a1b065d40e9d 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="memitem:ab6465ea668810646cd74b40a4e25ca42 pro_attribs_classPRunBase" id="r_ab6465ea668810646cd74b40a4e25ca42"><td class="memItemLeft"><a class="el" href="PMusr_8h.html#a3168a2cda2474c28fe329358530331ab">EPMusrHandleTag</a>&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#ab6465ea668810646cd74b40a4e25ca42">fHandleTag</a></td></tr>
<tr class="memdesc:ab6465ea668810646cd74b40a4e25ca42 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="memitem:aeccaae88c9db0804981e1bd3f81fc57a pro_attribs_classPRunBase" id="r_aeccaae88c9db0804981e1bd3f81fc57a"><td class="memItemLeft">Int_t&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#aeccaae88c9db0804981e1bd3f81fc57a">fRunNo</a></td></tr>
<tr class="memdesc:aeccaae88c9db0804981e1bd3f81fc57a 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="memitem:a6deb4b8c63d7754ab2222659e2920631 pro_attribs_classPRunBase" id="r_a6deb4b8c63d7754ab2222659e2920631"><td class="memItemLeft"><a class="el" href="classPMsrHandler.html">PMsrHandler</a> *&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#a6deb4b8c63d7754ab2222659e2920631">fMsrInfo</a></td></tr>
<tr class="memdesc:a6deb4b8c63d7754ab2222659e2920631 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="memitem:af1a2a02da26466564461e7a34267387f pro_attribs_classPRunBase" id="r_af1a2a02da26466564461e7a34267387f"><td class="memItemLeft"><a class="el" href="classPMsrRunBlock.html">PMsrRunBlock</a> *&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#af1a2a02da26466564461e7a34267387f">fRunInfo</a></td></tr>
<tr class="memdesc:af1a2a02da26466564461e7a34267387f 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="memitem:ac8852c15177607e0d4383fc2e69e8ef7 pro_attribs_classPRunBase" id="r_ac8852c15177607e0d4383fc2e69e8ef7"><td class="memItemLeft"><a class="el" href="classPRunDataHandler.html">PRunDataHandler</a> *&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#ac8852c15177607e0d4383fc2e69e8ef7">fRawData</a></td></tr>
<tr class="memdesc:ac8852c15177607e0d4383fc2e69e8ef7 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="memitem:ac2cb35c79fbebe631fdb565946417eed pro_attribs_classPRunBase" id="r_ac2cb35c79fbebe631fdb565946417eed"><td class="memItemLeft"><a class="el" href="classPRunData.html">PRunData</a>&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#ac2cb35c79fbebe631fdb565946417eed">fData</a></td></tr>
<tr class="memdesc:ac2cb35c79fbebe631fdb565946417eed 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="memitem:a0ec9b72abc7a54f1e0f4c12d45bb0357 pro_attribs_classPRunBase" id="r_a0ec9b72abc7a54f1e0f4c12d45bb0357"><td class="memItemLeft">Double_t&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#a0ec9b72abc7a54f1e0f4c12d45bb0357">fTimeResolution</a></td></tr>
<tr class="memdesc:a0ec9b72abc7a54f1e0f4c12d45bb0357 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="memitem:a8752e8f10acb6a675a22f45881faa044 pro_attribs_classPRunBase" id="r_a8752e8f10acb6a675a22f45881faa044"><td class="memItemLeft"><a class="el" href="structPMetaData.html">PMetaData</a>&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#a8752e8f10acb6a675a22f45881faa044">fMetaData</a></td></tr>
<tr class="memdesc:a8752e8f10acb6a675a22f45881faa044 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="memitem:ad3be9a269b89805d9e1a5ffa1a8d6ec9 pro_attribs_classPRunBase" id="r_ad3be9a269b89805d9e1a5ffa1a8d6ec9"><td class="memItemLeft"><a class="el" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a>&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#ad3be9a269b89805d9e1a5ffa1a8d6ec9">fT0s</a></td></tr>
<tr class="memdesc:ad3be9a269b89805d9e1a5ffa1a8d6ec9 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="memitem:ab5f96afcdca519f9a33a9fd9a3a6c67d pro_attribs_classPRunBase" id="r_ab5f96afcdca519f9a33a9fd9a3a6c67d"><td class="memItemLeft">std::vector&lt; <a class="el" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> &gt;&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#ab5f96afcdca519f9a33a9fd9a3a6c67d">fAddT0s</a></td></tr>
<tr class="memdesc:ab5f96afcdca519f9a33a9fd9a3a6c67d 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="memitem:af4a626805d2fbd201472f0487474bb40 pro_attribs_classPRunBase" id="r_af4a626805d2fbd201472f0487474bb40"><td class="memItemLeft">Double_t&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#af4a626805d2fbd201472f0487474bb40">fFitStartTime</a></td></tr>
<tr class="memdesc:af4a626805d2fbd201472f0487474bb40 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="memitem:a4736fa656bba18cc5b61a1273ac839d4 pro_attribs_classPRunBase" id="r_a4736fa656bba18cc5b61a1273ac839d4"><td class="memItemLeft">Double_t&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#a4736fa656bba18cc5b61a1273ac839d4">fFitEndTime</a></td></tr>
<tr class="memdesc:a4736fa656bba18cc5b61a1273ac839d4 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="memitem:a4756c8b6e7d3764587f57bc62f48f719 pro_attribs_classPRunBase" id="r_a4756c8b6e7d3764587f57bc62f48f719"><td class="memItemLeft"><a class="el" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a>&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#a4756c8b6e7d3764587f57bc62f48f719">fFuncValues</a></td></tr>
<tr class="memdesc:a4756c8b6e7d3764587f57bc62f48f719 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="memitem:a96aeb9099bceb6456c90d5b03d2dc3ec pro_attribs_classPRunBase" id="r_a96aeb9099bceb6456c90d5b03d2dc3ec"><td class="memItemLeft">std::unique_ptr&lt; <a class="el" href="classPTheory.html">PTheory</a> &gt;&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#a96aeb9099bceb6456c90d5b03d2dc3ec">fTheory</a></td></tr>
<tr class="memdesc:a96aeb9099bceb6456c90d5b03d2dc3ec pro_attribs_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Theory function evaluator (smart pointer, automatically deleted). <br /></td></tr>
<tr class="memitem:a51b5de438b62d959ef02c23daadbb860 pro_attribs_classPRunBase" id="r_a51b5de438b62d959ef02c23daadbb860"><td class="memItemLeft"><a class="el" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a>&#160;</td><td class="memItemRight"><a class="el" href="classPRunBase.html#a51b5de438b62d959ef02c23daadbb860">fKaiserFilter</a></td></tr>
<tr class="memdesc:a51b5de438b62d959ef02c23daadbb860 pro_attribs_classPRunBase"><td class="mdescLeft">&#160;</td><td class="mdescRight">Kaiser window FIR filter coefficients for smoothing RRF theory curves. <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Class for handling negative muon (μ⁻) histogram fits. </p>
<p><a class="el" href="classPRunMuMinus.html" title="Class for handling negative muon (μ⁻) histogram fits.">PRunMuMinus</a> implements single-histogram fitting specialized for negative muon measurements. Negative muons (μ⁻) have significantly different properties compared to positive muons (μ⁺), requiring dedicated handling:</p>
<h1 class="doxsection"><a class="anchor" id="muminus_physics"></a>
Physics of Negative Muons</h1>
<p><b>Key differences from μ⁺:</b></p><ul>
<li><b>Charge:</b> Negatively charged (antimuon has positive charge)</li>
<li><b>Behavior in matter:</b> μ⁻ are captured by nuclei rather than stopping interstitially</li>
<li><b>Cascade process:</b> μ⁻ cascade down atomic orbitals before nuclear capture</li>
<li><b>Lifetime:</b> Effective lifetime is reduced by nuclear capture (typically ~100-1000 ns vs. 2.2 μs free lifetime)</li>
<li><b>Decay signature:</b> Different detector response due to capture vs. decay</li>
<li><b>Applications:</b> Elemental analysis, nuclear structure, muonic atom spectroscopy</li>
</ul>
<h1 class="doxsection"><a class="anchor" id="muminus_data"></a>
Data Structure</h1>
<p>Unlike asymmetry measurements, μ⁻ fits use a single forward histogram:</p><ul>
<li>One detector histogram (typically forward detector)</li>
<li>No asymmetry calculation (no forward/backward pair)</li>
<li>Direct histogram fitting with background subtraction</li>
<li>Bin packing for improved statistics</li>
</ul>
<h1 class="doxsection"><a class="anchor" id="muminus_analysis"></a>
Analysis Workflow</h1>
<ol type="1">
<li><b>Data Loading:</b> Load single histogram from data file</li>
<li><b>Background Subtraction:</b> Remove constant or estimated background</li>
<li><b>Time-Zero Determination:</b> Identify μ⁻ arrival time (t0)</li>
<li><b>Bin Packing:</b> Rebin data if specified (required parameter)</li>
<li><b>Theory Calculation:</b> Evaluate capture-modified exponential decay</li>
<li><b>Fit Metric:</b> χ² or maximum likelihood minimization</li>
</ol>
<h1 class="doxsection"><a class="anchor" id="muminus_theory"></a>
Typical Theory Functions</h1>
<p>Common models for μ⁻ data include:</p><ul>
<li><b>Simple exponential:</b> N(t) = N₀ · exp(-t/τ_eff)</li>
<li><b>With relaxation:</b> N(t) = N₀ · exp(-t/τ_eff) · [1 + A·cos(ωt + φ)]</li>
<li><b>Multi-component:</b> Sum of exponentials for different capture sites</li>
</ul>
<p>where τ_eff combines free decay and nuclear capture rates: </p><p class="formulaDsp">
<picture><source srcset="form_28_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\&zwj;[ \frac{1}{\tau_{\rm eff}} = \frac{1}{\tau_{\mu}} + \lambda_{\rm capture} \&zwj;]" src="form_28.png"/></picture>
</p>
<h1 class="doxsection"><a class="anchor" id="muminus_usage"></a>
Example Usage</h1>
<div class="fragment"><div class="line"><span class="comment">// In MSR file RUN block:</span></div>
<div class="line">RUN data/muminus_run2425 MUD PSI MUSR-ROOT (name beamline)</div>
<div class="line"> fittype 10 (MuMinus)</div>
<div class="line"> map 1 (forward histogram)</div>
<div class="line"> forward 1</div>
<div class="line"> packing 10 (required!)</div>
<div class="line"> background 50 150 (pre-t0 background)</div>
<div class="line"> data 200 2000</div>
<div class="line"> t0 210.5</div>
<div class="line"> fit 0.1 10.0</div>
</div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="classPRunSingleHisto.html" title="Class for fitting single detector histograms (basic time-differential μSR).">PRunSingleHisto</a> for standard positive muon single histogram fits </dd>
<dd>
<a class="el" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types.">PRunBase</a> for base class interface and common functionality </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8h_source.html#l00097">97</a> of file <a class="el" href="PRunMuMinus_8h_source.html">PRunMuMinus.h</a>.</p>
</div><a name="doc-constructors" id="doc-constructors"></a><h2 id="header-doc-constructors" class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a2817c764bb5659503e69a0bcdbe1f010" name="a2817c764bb5659503e69a0bcdbe1f010"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2817c764bb5659503e69a0bcdbe1f010">&#9670;&#160;</a></span>PRunMuMinus() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PRunMuMinus::PRunMuMinus </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 μ⁻ run object. </p>
<p>Creates an uninitialized run object with all values set to defaults. This constructor is needed for creating vectors of <a class="el" href="classPRunMuMinus.html" title="Class for handling negative muon (μ⁻) histogram fits.">PRunMuMinus</a> objects but the object is not usable until properly initialized via the main constructor.</p>
<p>Initializes all member variables to default/invalid states:</p><ul>
<li>Bin counts and indices set to -1 (invalid)</li>
<li>Packing set to -1 (unspecified - will cause error if used)</li>
<li>Theory mode set to false (high-resolution grid)</li>
<li>Handle tag set to kEmpty (uninitialized)</li>
</ul>
<p>This constructor is needed for creating vectors of <a class="el" href="classPRunMuMinus.html" title="Class for handling negative muon (μ⁻) histogram fits.">PRunMuMinus</a> objects, but the resulting object cannot be used for fitting until properly initialized via the main constructor.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#aa68ee9895818eced472ddc5bbe9c52d6" title="Main constructor initializing a μ⁻ run from MSR file and raw data.">PRunMuMinus(PMsrHandler*, PRunDataHandler*, UInt_t, EPMusrHandleTag, Bool_t)</a> </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8cpp_source.html#l00065">65</a> of file <a class="el" href="PRunMuMinus_8cpp_source.html">PRunMuMinus.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunMuMinus_8h_source.html#l00430">fEndTimeBin</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00414">fGoodBins</a>, <a class="el" href="PRunBase_8h_source.html#l00268">PRunBase::fHandleTag</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00376">fNoOfFitBins</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00391">fPacking</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00429">fStartTimeBin</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00402">fTheoAsData</a>, <a class="el" href="PMusr_8h_source.html#l00428">kEmpty</a>, and <a class="el" href="PRunBase_8cpp_source.html#l00052">PRunBase::PRunBase()</a>.</p>
</div>
</div>
<a id="aa68ee9895818eced472ddc5bbe9c52d6" name="aa68ee9895818eced472ddc5bbe9c52d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa68ee9895818eced472ddc5bbe9c52d6">&#9670;&#160;</a></span>PRunMuMinus() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">PRunMuMinus::PRunMuMinus </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 μ⁻ run from MSR file and raw data. </p>
<p>Performs comprehensive initialization:</p><ol type="1">
<li>Validates packing parameter (REQUIRED for μ⁻ - cannot be -1)</li>
<li>Initializes base class (<a class="el" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types.">PRunBase</a>) with MSR and data handlers</li>
<li>Calls <a class="el" href="#a3a96c9156e9207dcc7b1f95a1fcbb9e5" title="Main data preparation routine for μ⁻ fitting and viewing.">PrepareData()</a> to load and preprocess the histogram</li>
<li>Validates successful initialization</li>
</ol>
<p>The packing parameter is mandatory for μ⁻ data and is obtained from:</p><ul>
<li>RUN block "packing" entry (if specified)</li>
<li>Falls back to GLOBAL block "packing" entry</li>
<li>SEVERE ERROR if neither is specified → run marked invalid</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>If <a class="el" href="#a3a96c9156e9207dcc7b1f95a1fcbb9e5" title="Main data preparation routine for μ⁻ fitting and viewing.">PrepareData()</a> fails, the object is marked invalid (fValid=false)</dd></dl>
<p>Performs comprehensive initialization for negative muon analysis:</p>
<ol type="1">
<li><b>Base Class Initialization:</b><ul>
<li>Calls <a class="el" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types.">PRunBase</a> constructor with MSR/data handlers</li>
<li>Initializes theory engine and parameter mappings</li>
</ul>
</li>
<li><b>Packing Validation (CRITICAL for μ⁻):</b><ul>
<li>Attempts to read packing from RUN block</li>
<li>Falls back to GLOBAL block if not in RUN block</li>
<li>SEVERE ERROR if packing == -1 (unspecified)</li>
<li>Packing is MANDATORY for μ⁻ data (unlike some other fit types)</li>
</ul>
</li>
<li><b>Member Initialization:</b><ul>
<li>Good bin markers set to -1 (determined later)</li>
<li>Fit range bins initialized to -1 (invalid until set)</li>
<li>Number of fit bins set to 0</li>
</ul>
</li>
<li><b>Data Preparation:</b><ul>
<li>Calls <a class="el" href="#a3a96c9156e9207dcc7b1f95a1fcbb9e5" title="Main data preparation routine for μ⁻ fitting and viewing.">PrepareData()</a> to load and preprocess histogram</li>
<li>If <a class="el" href="#a3a96c9156e9207dcc7b1f95a1fcbb9e5" title="Main data preparation routine for μ⁻ fitting and viewing.">PrepareData()</a> fails, run is marked invalid</li>
</ul>
</li>
</ol>
<p>The object is marked as invalid (fValid=false) if:</p><ul>
<li>Packing parameter is missing</li>
<li><a class="el" href="#a3a96c9156e9207dcc7b1f95a1fcbb9e5" title="Main data preparation routine for μ⁻ fitting and viewing.">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 for object lifetime) </td></tr>
<tr><td class="paramname">rawData</td><td>Pointer to raw data handler for loading histogram files </td></tr>
<tr><td class="paramname">runNo</td><td>Run number (0-based index in MSR file RUN blocks) </td></tr>
<tr><td class="paramname">tag</td><td>Operation mode: kFit (fitting), kView (display/plotting) </td></tr>
<tr><td class="paramname">theoAsData</td><td>Theory calculation mode: true = at data points, false = high-resolution</td></tr>
</table>
</dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>Invalid objects should not be used for fitting. Check <a class="el" href="classPRunBase.html#a269787baf9a101ce181ef0b5a79b9e0d" title="Returns validity status of this run object.">IsValid()</a> after construction.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a3a96c9156e9207dcc7b1f95a1fcbb9e5" title="Main data preparation routine for μ⁻ fitting and viewing.">PrepareData()</a> for data preprocessing details </dd>
<dd>
<a class="el" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types.">PRunBase</a> constructor for base initialization </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8cpp_source.html#l00124">124</a> of file <a class="el" href="PRunMuMinus_8cpp_source.html">PRunMuMinus.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunMuMinus_8h_source.html#l00430">fEndTimeBin</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00414">fGoodBins</a>, <a class="el" href="PRunBase_8h_source.html#l00271">PRunBase::fMsrInfo</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00376">fNoOfFitBins</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00391">fPacking</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00429">fStartTimeBin</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00402">fTheoAsData</a>, <a class="el" href="PRunBase_8h_source.html#l00266">PRunBase::fValid</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00590">PrepareData()</a>, and <a class="el" href="PRunBase_8cpp_source.html#l00052">PRunBase::PRunBase()</a>.</p>
</div>
</div>
<a id="a07263c85cb90840ff1dbd66a423b0dd7" name="a07263c85cb90840ff1dbd66a423b0dd7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a07263c85cb90840ff1dbd66a423b0dd7">&#9670;&#160;</a></span>~PRunMuMinus()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">PRunMuMinus::~PRunMuMinus </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 cleaning up allocated resources.</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>Releases memory used by the forward histogram vector. Other cleanup (theory objects, base class resources) is handled by the <a class="el" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types.">PRunBase</a> destructor. </p>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8cpp_source.html#l00166">166</a> of file <a class="el" href="PRunMuMinus_8cpp_source.html">PRunMuMinus.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunMuMinus_8h_source.html#l00427">fForward</a>.</p>
</div>
</div>
<a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="abe0df325a415b34082e7604d3d99ce32" name="abe0df325a415b34082e7604d3d99ce32"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe0df325a415b34082e7604d3d99ce32">&#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 PRunMuMinus::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 μ⁻ data and theory (least-squares fit metric). </p>
<p>Computes the chi-squared statistic for the forward histogram: </p><p class="formulaDsp">
<picture><source srcset="form_29_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\&zwj;[ \chi^2 = \sum_{i={\rm start}}^{\rm end} \frac{(N_i^{\rm data} - N_i^{\rm theory})^2}{\sigma_i^2} \&zwj;]" src="form_29.png"/></picture>
</p>
<p>where:</p><ul>
<li>N_i^data is the background-corrected, packed histogram count in bin i</li>
<li>N_i^theory is the theory prediction from THEORY block</li>
<li>σ_i is the propagated error (including background uncertainty)</li>
<li>Sum runs from fStartTimeBin to fEndTimeBin (fit range)</li>
</ul>
<p>Implementation uses OpenMP parallelization when available for performance. Each thread processes a chunk of bins independently, with reduction for final sum.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">par</td><td>Parameter vector from MINUIT with current parameter values </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Chi-squared value (lower is better; minimize during fitting)</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ae20a804fc578c31788171f710f865210" title="Calculates negative log-likelihood for Poisson statistics (low-count fit metric).">CalcMaxLikelihood()</a> for alternative fit metric (better for low counts) </dd>
<dd>
<a class="el" href="#a7941f4ab9ecf135916427b862a4f0796" title="Evaluates theory function at all data points (or high-resolution grid).">CalcTheory()</a> for theory function evaluation details</dd></dl>
<p>Computes the chi-squared statistic using the standard formula: </p><p class="formulaDsp">
<picture><source srcset="form_29_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\&zwj;[ \chi^2 = \sum_{i={\rm start}}^{\rm end} \frac{(N_i^{\rm data} - N_i^{\rm theory})^2}{\sigma_i^2} \&zwj;]" src="form_29.png"/></picture>
</p>
<p>Algorithm:</p><ol type="1">
<li>Evaluate FUNCTIONS block for user-defined functions</li>
<li>Pre-calculate theory once at t=1.0 (thread-safe initialization for LF/user functions)</li>
<li>Loop over fit range bins (fStartTimeBin to fEndTimeBin)</li>
<li>For each bin:<ul>
<li>Calculate time from bin index</li>
<li>Evaluate theory function at that time</li>
<li>Compute squared difference weighted by error</li>
</ul>
</li>
<li>Sum contributions (with OpenMP reduction if available)</li>
</ol>
<p><b>OpenMP Parallelization:</b></p><ul>
<li>When compiled with GOMP support, χ² calculation is parallelized</li>
<li>Loop divided into dynamic chunks for load balancing</li>
<li>Chunk size: (N_bins / N_processors), minimum 10 bins per chunk</li>
<li>Private variables per thread: i, time, diff</li>
<li>Reduction performed on final chisq sum</li>
</ul>
<p><b>Theory Pre-calculation:</b> The initial call to fTheory-&gt;Func(time=1.0, ...) ensures thread-safe initialization for London field (LF) and user functions that cache computationally expensive calculations per parameter set.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">par</td><td>Parameter vector from MINUIT with current parameter values </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Chi-squared value (sum of weighted squared residuals)</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ae20a804fc578c31788171f710f865210" title="Calculates negative log-likelihood for Poisson statistics (low-count fit metric).">CalcMaxLikelihood()</a> for Poisson-based alternative (better for low counts) </dd>
<dd>
<a class="el" href="#a7941f4ab9ecf135916427b862a4f0796" title="Evaluates theory function at all data points (or high-resolution grid).">CalcTheory()</a> for theory evaluation without χ² calculation </dd></dl>
<p>Implements <a class="el" href="classPRunBase.html#afb8ed1f6e8beb0530da96012ad3258d3">PRunBase</a>.</p>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8cpp_source.html#l00208">208</a> of file <a class="el" href="PRunMuMinus_8cpp_source.html">PRunMuMinus.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00430">fEndTimeBin</a>, <a class="el" href="PRunBase_8h_source.html#l00284">PRunBase::fFuncValues</a>, <a class="el" href="PRunBase_8h_source.html#l00277">PRunBase::fMetaData</a>, <a class="el" href="PRunBase_8h_source.html#l00271">PRunBase::fMsrInfo</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00429">fStartTimeBin</a>, and <a class="el" href="PRunBase_8h_source.html#l00285">PRunBase::fTheory</a>.</p>
</div>
</div>
<a id="a64e3216f832ddb5c0b219c7795ea4d66" name="a64e3216f832ddb5c0b219c7795ea4d66"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a64e3216f832ddb5c0b219c7795ea4d66">&#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 PRunMuMinus::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 (statistical diagnostic). </p>
<p>Calculates expected χ² assuming theory is the true distribution (diagnostic).</p>
<p>Computes the expected chi-squared assuming theory values are the "true" counts: </p><p class="formulaDsp">
<picture><source srcset="form_30_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\&zwj;[ \chi^2_{\rm expected} = \sum_{i} \frac{(N_i^{\rm data} - N_i^{\rm theory})^2}{N_i^{\rm theory}} \&zwj;]" src="form_30.png"/></picture>
</p>
<p>This diagnostic helps evaluate:</p><ul>
<li>Quality of error estimates</li>
<li>Poisson vs. Gaussian statistics validity</li>
<li>Over/under-dispersion in data</li>
</ul>
<p>For well-estimated errors: χ²_expected ≈ number of degrees of freedom</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">par</td><td>Parameter vector from MINUIT </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Expected χ² value (currently returns 0.0 - placeholder implementation)</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Current implementation returns 0.0; full calculation performed but not returned</dd></dl>
<p>Computes the expected chi-squared using theory values as the expected counts: </p><p class="formulaDsp">
<picture><source srcset="form_30_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\&zwj;[ \chi^2_{\rm expected} = \sum_{i} \frac{(N_i^{\rm data} - N_i^{\rm theory})^2}{N_i^{\rm theory}} \&zwj;]" src="form_30.png"/></picture>
</p>
<p>This is a statistical diagnostic for evaluating:</p><ul>
<li>Quality of error estimates (if errors are correct, χ²/ν ≈ 1)</li>
<li>Validity of Gaussian approximation (breaks down for low counts)</li>
<li>Over/under-dispersion in data relative to Poisson expectations</li>
</ul>
<p>For Poisson-distributed data with large counts:</p><ul>
<li>χ²_expected ≈ number of degrees of freedom</li>
<li>χ²_expected / ν ≈ 1 indicates proper error estimation</li>
</ul>
<p>Algorithm is identical to <a class="el" href="#abe0df325a415b34082e7604d3d99ce32" title="Calculates χ² between μ⁻ data and theory (least-squares fit metric).">CalcChiSquare()</a> except:</p><ul>
<li>Error denominator is σ² = N_theory (Poisson variance)</li>
<li>Instead of using fData.GetError()-&gt;at(i)</li>
</ul>
<p><b>OpenMP Parallelization:</b> Same as <a class="el" href="#abe0df325a415b34082e7604d3d99ce32" title="Calculates χ² between μ⁻ data and theory (least-squares fit metric).">CalcChiSquare()</a></p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">par</td><td>Parameter vector from MINUIT </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Expected χ² value (currently returns 0.0 - calculation done but not returned)</dd></dl>
<dl class="section note"><dt>Note</dt><dd>Current implementation performs the calculation but returns 0.0. The calculated value could be returned for diagnostic purposes.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#abe0df325a415b34082e7604d3d99ce32" title="Calculates χ² between μ⁻ data and theory (least-squares fit metric).">CalcChiSquare()</a> for standard χ² calculation </dd></dl>
<p>Implements <a class="el" href="classPRunBase.html#a1a15d5f51a874149b0d60798f99449a6">PRunBase</a>.</p>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8cpp_source.html#l00276">276</a> of file <a class="el" href="PRunMuMinus_8cpp_source.html">PRunMuMinus.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00430">fEndTimeBin</a>, <a class="el" href="PRunBase_8h_source.html#l00284">PRunBase::fFuncValues</a>, <a class="el" href="PRunBase_8h_source.html#l00277">PRunBase::fMetaData</a>, <a class="el" href="PRunBase_8h_source.html#l00271">PRunBase::fMsrInfo</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00429">fStartTimeBin</a>, and <a class="el" href="PRunBase_8h_source.html#l00285">PRunBase::fTheory</a>.</p>
</div>
</div>
<a id="ae20a804fc578c31788171f710f865210" name="ae20a804fc578c31788171f710f865210"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae20a804fc578c31788171f710f865210">&#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 PRunMuMinus::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 negative log-likelihood for Poisson statistics (low-count fit metric). </p>
<p>Computes the maximum likelihood estimator assuming Poisson-distributed counts: </p><p class="formulaDsp">
<picture><source srcset="form_31_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\&zwj;[ -2\ln L = 2\sum_{i} \left[N_i^{\rm theory} - N_i^{\rm data} \ln(N_i^{\rm theory})\right] \&zwj;]" src="form_31.png"/></picture>
</p>
<p>Maximum likelihood is superior to χ² when:</p><ul>
<li>Count rates are low (&lt; 10-20 counts per bin)</li>
<li>Poisson statistics dominate (Gaussian approximation invalid)</li>
<li>Error estimation is uncertain</li>
</ul>
<p>The factor of 2 makes the likelihood comparable to χ² in the Gaussian limit. MINUIT minimizes this function just like χ².</p>
<p>Implementation details:</p><ul>
<li>Uses OpenMP parallelization for performance</li>
<li>Handles edge cases: zero data (skips log term), negative theory (warning + skip)</li>
<li>Threshold: data &gt; 10^-9 to include log term</li>
</ul>
<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 (lower is better; minimize during fitting)</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#abe0df325a415b34082e7604d3d99ce32" title="Calculates χ² between μ⁻ data and theory (least-squares fit metric).">CalcChiSquare()</a> for standard least-squares metric</dd></dl>
<p>Computes the maximum likelihood estimator assuming Poisson-distributed histogram counts: </p><p class="formulaDsp">
<picture><source srcset="form_81_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\&zwj;[ -2\ln L = 2\sum_{i} \left[N_i^{\rm theory} - N_i^{\rm data}\ln(N_i^{\rm theory})\right] \&zwj;]" src="form_81.png"/></picture>
</p>
<p>This is derived from the Poisson probability: </p><p class="formulaDsp">
<picture><source srcset="form_82_dark.png" media="(prefers-color-scheme: dark)"/><img class="formulaDsp" alt="\&zwj;[ P(n|\\lambda) = \frac{\\lambda^n e^{-\\lambda}}{n!} \&zwj;]" src="form_82.png"/></picture>
</p>
<p>Taking negative log-likelihood and multiplying by 2 gives a metric that:</p><ul>
<li>Is minimized at the best-fit parameters (like χ²)</li>
<li>Approaches χ² in the high-count (Gaussian) limit</li>
<li>Handles low counts correctly (no Gaussian approximation needed)</li>
</ul>
<p><b>When to use likelihood vs. χ²:</b></p><ul>
<li><b>Low counts (&lt; 10-20 per bin):</b> Use likelihood (this method)</li>
<li><b>High counts (&gt; 20 per bin):</b> Either method works, χ² is faster</li>
<li><b>Uncertain errors:</b> Use likelihood (no error estimates needed)</li>
</ul>
<p>Algorithm:</p><ol type="1">
<li>Evaluate FUNCTIONS block</li>
<li>Pre-calculate theory at t=1.0 (thread-safe initialization)</li>
<li>Loop over fit range bins</li>
<li>For each bin:<ul>
<li>Calculate theory prediction</li>
<li>Check for negative theory (warning + skip)</li>
<li>Add Poisson likelihood term:<ul>
<li>If data &gt; 10^-9: (theo - data) + data·ln(data/theo)</li>
<li>If data ≈ 0: (theo - data) only (avoid log(0))</li>
</ul>
</li>
</ul>
</li>
<li>Multiply sum by 2 (convention for comparison with χ²)</li>
</ol>
<p><b>Edge Case Handling:</b></p><ul>
<li>Negative theory: Print warning, skip bin (should not happen with proper model)</li>
<li>Zero data: Use simplified formula without log term</li>
<li>Zero theory: Would cause log(0), but checked via negative theory guard</li>
</ul>
<p>Reference: Particle Data Group (PDG), Statistics Review <a href="http://pdg.lbl.gov/index.html">http://pdg.lbl.gov/index.html</a></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 (minimize during fitting, comparable to χ²)</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#abe0df325a415b34082e7604d3d99ce32" title="Calculates χ² between μ⁻ data and theory (least-squares fit metric).">CalcChiSquare()</a> for standard least-squares metric </dd></dl>
<p>Implements <a class="el" href="classPRunBase.html#a5d7a15b6962e3767860ef9b4c9208201">PRunBase</a>.</p>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8cpp_source.html#l00361">361</a> of file <a class="el" href="PRunMuMinus_8cpp_source.html">PRunMuMinus.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00430">fEndTimeBin</a>, <a class="el" href="PRunBase_8h_source.html#l00284">PRunBase::fFuncValues</a>, <a class="el" href="PRunBase_8h_source.html#l00277">PRunBase::fMetaData</a>, <a class="el" href="PRunBase_8h_source.html#l00271">PRunBase::fMsrInfo</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00429">fStartTimeBin</a>, and <a class="el" href="PRunBase_8h_source.html#l00285">PRunBase::fTheory</a>.</p>
</div>
</div>
<a id="ad7a4e5bf6faa30254e8abf42ea6ff76d" name="ad7a4e5bf6faa30254e8abf42ea6ff76d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad7a4e5bf6faa30254e8abf42ea6ff76d">&#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 PRunMuMinus::CalcNoOfFitBins </td>
<td>(</td>
<td class="paramname"><span class="paramname"><em></em></span></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel virtual">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Calculates start/end bin indices from fit time range. </p>
<p>Converts the fit range specified in time (microseconds from t0) into bin indices accounting for:</p><ul>
<li>Data time start offset</li>
<li>Time resolution (bin width)</li>
<li>Packing factor</li>
</ul>
<p>Updates:</p><ul>
<li>fStartTimeBin: First bin in fit range</li>
<li>fEndTimeBin: One past last bin (exclusive upper bound)</li>
<li>fNoOfFitBins: Count of bins in range</li>
</ul>
<p>Called automatically when fit range is changed via <a class="el" href="classPRunBase.html#a59cbd8ad7cb144c99c1dccefa4e200ff" title="Sets the fit time range for this run.">SetFitRange()</a>.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classPRunBase.html#a59cbd8ad7cb144c99c1dccefa4e200ff" title="Sets the fit time range for this run.">SetFitRange()</a> in <a class="el" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types.">PRunBase</a> for time-based range setting</dd></dl>
<p>Calculate the number of fitted bins for the current fit range. </p>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8cpp_source.html#l00525">525</a> of file <a class="el" href="PRunMuMinus_8cpp_source.html">PRunMuMinus.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00430">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="PRunMuMinus_8h_source.html#l00376">fNoOfFitBins</a>, and <a class="el" href="PRunMuMinus_8h_source.html#l00429">fStartTimeBin</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunMuMinus_8cpp_source.html#l00433">GetNoOfFitBins()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00734">PrepareFitData()</a>, and <a class="el" href="PRunMuMinus_8cpp_source.html#l00792">PrepareRawViewData()</a>.</p>
</div>
</div>
<a id="a7941f4ab9ecf135916427b862a4f0796" name="a7941f4ab9ecf135916427b862a4f0796"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7941f4ab9ecf135916427b862a4f0796">&#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 PRunMuMinus::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 the expected μ⁻ decay signal using the THEORY block functions. The theory is evaluated either:</p><ul>
<li>At data point times (fTheoAsData=true): For fitting and exact comparison</li>
<li>On high-resolution grid (fTheoAsData=false): For smooth plotting</li>
</ul>
<p>Theory evaluation:</p><ol type="1">
<li>Determines time grid based on fTheoAsData flag</li>
<li>Evaluates FUNCTIONS block (user-defined functions)</li>
<li>Loops over time points calling fTheory-&gt;Func(time, par, funcValues)</li>
<li>Stores results in fData for χ² or likelihood calculation</li>
</ol>
<p>The theory typically models:</p><ul>
<li>Exponential decay: N₀·exp(-t/τ_eff)</li>
<li>With modulation: N₀·exp(-t/τ_eff)·[1 + A·cos(ωt + φ)]</li>
<li>Multi-component captures</li>
</ul>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classPTheory.html#ab0b6defce6fa75187ae306332fac3425" title="Evaluates the theory function at a given time point.">PTheory::Func()</a> for theory function implementation </dd>
<dd>
<a class="el" href="#a3a96c9156e9207dcc7b1f95a1fcbb9e5" title="Main data preparation routine for μ⁻ fitting and viewing.">PrepareData()</a> for data grid setup</dd></dl>
<p>Calculate theory for a given set of fit-parameters. </p>
<p>Implements <a class="el" href="classPRunBase.html#a0dde056d0acd7f0ac4dc12380e4063e7">PRunBase</a>.</p>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8cpp_source.html#l00547">547</a> of file <a class="el" href="PRunMuMinus_8cpp_source.html">PRunMuMinus.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunBase_8h_source.html#l00284">PRunBase::fFuncValues</a>, <a class="el" href="PRunBase_8h_source.html#l00277">PRunBase::fMetaData</a>, <a class="el" href="PRunBase_8h_source.html#l00271">PRunBase::fMsrInfo</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, and <a class="el" href="PRunBase_8h_source.html#l00285">PRunBase::fTheory</a>.</p>
</div>
</div>
<a id="abe411be92e5fe6dc6e0646f781c61893" name="abe411be92e5fe6dc6e0646f781c61893"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe411be92e5fe6dc6e0646f781c61893">&#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 PRunMuMinus::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="PRunMuMinus_8h_source.html#l00281">281</a> of file <a class="el" href="PRunMuMinus_8h_source.html">PRunMuMinus.h</a>.</p>
<p class="reference">References <a class="el" href="PRunMuMinus_8h_source.html#l00430">fEndTimeBin</a>.</p>
</div>
</div>
<a id="a76be61552695c0c8bc1dc4680397e11d" name="a76be61552695c0c8bc1dc4680397e11d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a76be61552695c0c8bc1dc4680397e11d">&#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 PRunMuMinus::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>Calculates and returns the count of histogram bins between fStartTimeBin and fEndTimeBin (fit range boundaries). This is used for:</p><ul>
<li>Degrees of freedom: ν = N_bins - N_params</li>
<li>Reduced χ²: χ²_red = χ² / ν</li>
<li>Statistical analysis and diagnostics</li>
</ul>
<p>Internally calls <a class="el" href="#ad7a4e5bf6faa30254e8abf42ea6ff76d" title="Calculates start/end bin indices from fit time range.">CalcNoOfFitBins()</a> to update fNoOfFitBins.</p>
<dl class="section return"><dt>Returns</dt><dd>Number of bins in fit range</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ad7a4e5bf6faa30254e8abf42ea6ff76d" title="Calculates start/end bin indices from fit time range.">CalcNoOfFitBins()</a> for bin range calculation details</dd></dl>
<p>Recalculates and returns the count of histogram bins between fStartTimeBin and fEndTimeBin. This count is used for:</p><ul>
<li>Degrees of freedom calculation: ν = N_bins - N_params</li>
<li>Reduced χ²: χ²_red = χ² / ν</li>
<li>Statistical quality assessment</li>
</ul>
<p>Internally calls <a class="el" href="#ad7a4e5bf6faa30254e8abf42ea6ff76d" title="Calculates start/end bin indices from fit time range.">CalcNoOfFitBins()</a> to ensure fNoOfFitBins is up-to-date.</p>
<dl class="section return"><dt>Returns</dt><dd>Number of bins within fit range (fEndTimeBin - fStartTimeBin)</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ad7a4e5bf6faa30254e8abf42ea6ff76d" title="Calculates start/end bin indices from fit time range.">CalcNoOfFitBins()</a> for bin range calculation from time range </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8cpp_source.html#l00433">433</a> of file <a class="el" href="PRunMuMinus_8cpp_source.html">PRunMuMinus.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunMuMinus_8cpp_source.html#l00525">CalcNoOfFitBins()</a>, and <a class="el" href="PRunMuMinus_8h_source.html#l00376">fNoOfFitBins</a>.</p>
</div>
</div>
<a id="a3ce94ec1a181fcbc622747a64652b479" name="a3ce94ec1a181fcbc622747a64652b479"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ce94ec1a181fcbc622747a64652b479">&#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 PRunMuMinus::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>Packing value (number of raw bins combined into one packed bin) </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8h_source.html#l00287">287</a> of file <a class="el" href="PRunMuMinus_8h_source.html">PRunMuMinus.h</a>.</p>
<p class="reference">References <a class="el" href="PRunMuMinus_8h_source.html#l00391">fPacking</a>.</p>
</div>
</div>
<a id="a6849d8b428569486521ae56af88caf94" name="a6849d8b428569486521ae56af88caf94"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6849d8b428569486521ae56af88caf94">&#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 PRunMuMinus::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>Establishes the data range boundaries from RUN block specification:</p><ul>
<li>Start bin: First bin with valid μ⁻ data (typically after t0)</li>
<li>End bin: Last bin before noise/artifacts dominate</li>
</ul>
<p>Data range is typically wider than fit range. The fit range is a subset of the data range optimized for parameter extraction.</p>
<dl class="section return"><dt>Returns</dt><dd>True if valid data range determined, false if specification invalid</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#a74f9bfd0610af078c6bb724398148ac1" title="Determines fit range from MSR file settings.">GetProperFitRange()</a> for fit range (subset of data range)</dd></dl>
<p>Get the proper data range, i.e. first/last good bin (fgb/lgb).</p><ol type="1">
<li>get fgb/lgb from the RUN block</li>
<li>if fgb/lgb still undefined, try to get it from the GLOBAL block</li>
<li>if fgb/lgb still undefined, try to estimate them.</li>
</ol>
<p><b>return:</b></p><ul>
<li>true if everthing went smooth</li>
<li>false, otherwise. </li>
</ul>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8cpp_source.html#l01070">1070</a> of file <a class="el" href="PRunMuMinus_8cpp_source.html">PRunMuMinus.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunMuMinus_8h_source.html#l00427">fForward</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00414">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="PRunMuMinus_8cpp_source.html#l00590">PrepareData()</a>.</p>
</div>
</div>
<a id="a74f9bfd0610af078c6bb724398148ac1" name="a74f9bfd0610af078c6bb724398148ac1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a74f9bfd0610af078c6bb724398148ac1">&#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 PRunMuMinus::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>Extracts fit range boundaries (time window for χ² calculation) from:</p><ol type="1">
<li>RUN block "fit" entry (if specified)</li>
<li>GLOBAL block "fit" entry (fallback)</li>
</ol>
<p>Fit range format in MSR file:</p><ul>
<li>Time-based: "fit 0.1 10.0" (μs from t0)</li>
<li>Bin-based: "fit fgb+5 lgb-10" (offsets from markers)</li>
</ul>
<p>The fit range determines which bins contribute to χ² or likelihood. Choosing the optimal range is critical for accurate parameter extraction.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">globalBlock</td><td>GLOBAL block from MSR file with default fit settings</td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#ad7a4e5bf6faa30254e8abf42ea6ff76d" title="Calculates start/end bin indices from fit time range.">CalcNoOfFitBins()</a> for converting time range to bin indices</dd></dl>
<p>Get the proper fit range. There are two possible fit range commands: fit &lt;start&gt; &lt;end&gt; given in (usec), or fit fgb+offset_0 lgb-offset_1 given in (bins), therefore it works the following way:</p><ol type="1">
<li>get fit range assuming given in time from RUN block</li>
<li>if fit range in RUN block is given in bins, replace start/end</li>
<li>if fit range is NOT given yet, try fit range assuming given in time from GLOBAL block</li>
<li>if fit range in GLOBAL block is given in bins, replace start/end</li>
<li>if still no fit range is given, use fgb/lgb.</li>
</ol>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">globalBlock</td><td>pointer to the GLOBAL block information form the msr-file. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8cpp_source.html#l01145">1145</a> of file <a class="el" href="PRunMuMinus_8cpp_source.html">PRunMuMinus.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="PRunMuMinus_8h_source.html#l00414">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#l01154">PMsrGlobalBlock::GetFitRange()</a>, <a class="el" href="PMusr_8cpp_source.html#l01191">PMsrGlobalBlock::GetFitRangeOffset()</a>, <a class="el" href="PMusr_8h_source.html#l01073">PMsrGlobalBlock::IsFitRangeInBin()</a>, <a class="el" href="PMusr_8h_source.html#l00177">PMUSR_UNDEFINED</a>, and <a class="el" href="PMusr_8cpp_source.html#l01171">PMsrGlobalBlock::SetFitRange()</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunMuMinus_8cpp_source.html#l00590">PrepareData()</a>.</p>
</div>
</div>
<a id="a975704a1a49fed0d3bb5941af1f8fce5" name="a975704a1a49fed0d3bb5941af1f8fce5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a975704a1a49fed0d3bb5941af1f8fce5">&#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 PRunMuMinus::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>Extracts time-zero (muon arrival time) from:</p><ol type="1">
<li>RUN block "t0" entry (if specified)</li>
<li>Data file header (if available)</li>
<li>GLOBAL block default (fallback)</li>
<li>Automatic determination from histogram structure (if enabled)</li>
</ol>
<p>For μ⁻, t0 marks the start of the decay/capture signal. Validates that t0 is within reasonable bounds of the histogram.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">runData</td><td>Raw run data containing histogram and metadata </td></tr>
<tr><td class="paramname">globalBlock</td><td>GLOBAL block from MSR file with default settings </td></tr>
<tr><td class="paramname">histoNo</td><td>Vector of histogram indices to process </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True if valid t0 found/determined, false otherwise</dd></dl>
<p>Get the proper t0 for the single histogram run.</p><ol type="1">
<li>the t0 vector size = number of detectors (grouping) for forward.</li>
<li>initialize t0's with -1</li>
<li>fill t0's from RUN block</li>
<li>if t0's are missing (i.e. t0 == -1), try to fill from the GLOBAL block.</li>
<li>if t0's are missing, try t0's from the data file</li>
<li>if t0's are missing, try to estimate them</li>
</ol>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">histoNo</td><td>histogram number vector of forward; histoNo = msr-file forward + redGreen_offset - 1</td></tr>
</table>
</dd>
</dl>
<p><b>return:</b></p><ul>
<li>true if everthing went smooth</li>
<li>false, otherwise. </li>
</ul>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8cpp_source.html#l00939">939</a> of file <a class="el" href="PRunMuMinus_8cpp_source.html">PRunMuMinus.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#l00896">PRawRunData::GetDataBin()</a>, <a class="el" href="PMusr_8cpp_source.html#l01038">PMsrGlobalBlock::GetT0Bin()</a>, <a class="el" href="PMusr_8h_source.html#l00884">PRawRunData::GetT0Bin()</a>, <a class="el" href="PMusr_8h_source.html#l00885">PRawRunData::GetT0BinEstimated()</a>, and <a class="el" href="PMusr_8h_source.html#l01068">PMsrGlobalBlock::GetT0BinSize()</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunMuMinus_8cpp_source.html#l00590">PrepareData()</a>.</p>
</div>
</div>
<a id="a06a7d84b23c70fa19beeacbb72591419" name="a06a7d84b23c70fa19beeacbb72591419"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a06a7d84b23c70fa19beeacbb72591419">&#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 PRunMuMinus::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 applied) </dd></dl>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8h_source.html#l00275">275</a> of file <a class="el" href="PRunMuMinus_8h_source.html">PRunMuMinus.h</a>.</p>
<p class="reference">References <a class="el" href="PRunMuMinus_8h_source.html#l00429">fStartTimeBin</a>.</p>
</div>
</div>
<a id="a3a96c9156e9207dcc7b1f95a1fcbb9e5" name="a3a96c9156e9207dcc7b1f95a1fcbb9e5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3a96c9156e9207dcc7b1f95a1fcbb9e5">&#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 PRunMuMinus::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 routine for μ⁻ fitting and viewing. </p>
<p>Orchestrates the complete data preprocessing pipeline:</p><ol type="1">
<li>Determines operation mode (fitting vs. viewing)</li>
<li>Calls <a class="el" href="#aba3d803c4f6debdc66145d4ec9a9fa23" title="Prepares μ⁻ histogram data for fitting.">PrepareFitData()</a> or <a class="el" href="#aebb1bb9b7b233bc09bd6a996e9ce0e87" title="Prepares μ⁻ histogram data for viewing/plotting (minimal processing).">PrepareRawViewData()</a> accordingly</li>
<li>Validates successful data loading and processing</li>
</ol>
<p>This method is called once during object construction. If it returns false, the run object is marked as invalid (fValid=false).</p>
<dl class="section return"><dt>Returns</dt><dd>True if data preparation succeeds, false on any error</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#aba3d803c4f6debdc66145d4ec9a9fa23" title="Prepares μ⁻ histogram data for fitting.">PrepareFitData()</a> for fitting mode preprocessing </dd>
<dd>
<a class="el" href="#aebb1bb9b7b233bc09bd6a996e9ce0e87" title="Prepares μ⁻ histogram data for viewing/plotting (minimal processing).">PrepareRawViewData()</a> for viewing mode preprocessing</dd></dl>
<p>Prepare data for fitting or viewing. What is already processed at this stage:</p><ol type="1">
<li>get proper raw run data</li>
<li>get all needed forward histograms</li>
<li>get time resolution</li>
<li>get t0's and perform necessary cross checks (e.g. if t0 of msr-file (if present) are consistent with t0 of the data files, etc.)</li>
<li>add runs (if addruns are present)</li>
<li>group histograms (if grouping is present)</li>
</ol>
<p><b>return:</b></p><ul>
<li>true if everthing went smooth</li>
<li>false, otherwise. </li>
</ul>
<p>Implements <a class="el" href="classPRunBase.html#a108aca748689e37a7e045a770677b517">PRunBase</a>.</p>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8cpp_source.html#l00590">590</a> of file <a class="el" href="PRunMuMinus_8cpp_source.html">PRunMuMinus.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunBase_8h_source.html#l00279">PRunBase::fAddT0s</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00427">fForward</a>, <a class="el" href="PRunBase_8h_source.html#l00268">PRunBase::fHandleTag</a>, <a class="el" href="PRunBase_8h_source.html#l00277">PRunBase::fMetaData</a>, <a class="el" href="PRunBase_8h_source.html#l00271">PRunBase::fMsrInfo</a>, <a class="el" href="PRunBase_8h_source.html#l00273">PRunBase::fRawData</a>, <a class="el" href="PRunBase_8h_source.html#l00272">PRunBase::fRunInfo</a>, <a class="el" href="PRunBase_8h_source.html#l00278">PRunBase::fT0s</a>, <a class="el" href="PRunBase_8h_source.html#l00276">PRunBase::fTimeResolution</a>, <a class="el" href="PRunBase_8h_source.html#l00266">PRunBase::fValid</a>, <a class="el" href="PMusr_8h_source.html#l00896">PRawRunData::GetDataBin()</a>, <a class="el" href="PMusr_8h_source.html#l00878">PRawRunData::GetEnergy()</a>, <a class="el" href="PMusr_8h_source.html#l00873">PRawRunData::GetField()</a>, <a class="el" href="PMusr_8h_source.html#l00874">PRawRunData::GetNoOfTemperatures()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l01070">GetProperDataRange()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l01145">GetProperFitRange()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00939">GetProperT0()</a>, <a class="el" href="PMusr_8h_source.html#l00875">PRawRunData::GetTemperature()</a>, <a class="el" href="PMusr_8h_source.html#l00882">PRawRunData::GetTimeResolution()</a>, <a class="el" href="PMusr_8h_source.html#l00883">PRawRunData::IsPresent()</a>, <a class="el" href="PMusr_8h_source.html#l00429">kFit</a>, <a class="el" href="PMusr_8h_source.html#l00430">kView</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00734">PrepareFitData()</a>, and <a class="el" href="PRunMuMinus_8cpp_source.html#l00792">PrepareRawViewData()</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunMuMinus_8cpp_source.html#l00124">PRunMuMinus()</a>.</p>
</div>
</div>
<a id="aba3d803c4f6debdc66145d4ec9a9fa23" name="aba3d803c4f6debdc66145d4ec9a9fa23"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba3d803c4f6debdc66145d4ec9a9fa23">&#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 PRunMuMinus::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>Performs comprehensive data preprocessing:</p><ol type="1">
<li>Loads forward histogram from data file</li>
<li>Extracts metadata (field, energy, temperature)</li>
<li>Validates and determines t0 value</li>
<li>Subtracts background (fixed or estimated)</li>
<li>Packs bins according to packing factor</li>
<li>Propagates errors through all transformations</li>
<li>Sets up time grid for theory evaluation</li>
<li>Establishes data/fit ranges</li>
</ol>
<p>Background correction (if specified in RUN block):</p><ul>
<li>Fixed background: Subtract constant value</li>
<li>Estimated background: Calculate from pre-t0 bins, subtract with error propagation</li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">runData</td><td>Pointer to raw run data handler containing histogram </td></tr>
<tr><td class="paramname">histoNo</td><td>Histogram index in data file (from "forward" entry in RUN block) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>True on success, false if data loading or preprocessing fails</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#aebb1bb9b7b233bc09bd6a996e9ce0e87" title="Prepares μ⁻ histogram data for viewing/plotting (minimal processing).">PrepareRawViewData()</a> for alternative viewing mode processing</dd></dl>
<p>Take the pre-processed data (i.e. grouping and addrun are preformed) and form the histogram for fitting. The following steps are preformed:</p><ol type="1">
<li>get fit start/stop time</li>
<li>check that 'first good data bin', 'last good data bin', and 't0' make any sense</li>
<li>packing (i.e rebinning)</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="PRunMuMinus_8cpp_source.html#l00734">734</a> of file <a class="el" href="PRunMuMinus_8cpp_source.html">PRunMuMinus.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunMuMinus_8cpp_source.html#l00525">CalcNoOfFitBins()</a>, <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00427">fForward</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00414">fGoodBins</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00391">fPacking</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="PRunMuMinus_8cpp_source.html#l00590">PrepareData()</a>.</p>
</div>
</div>
<a id="aebb1bb9b7b233bc09bd6a996e9ce0e87" name="aebb1bb9b7b233bc09bd6a996e9ce0e87"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aebb1bb9b7b233bc09bd6a996e9ce0e87">&#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 PRunMuMinus::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 μ⁻ histogram data for viewing/plotting (minimal processing). </p>
<p>Lighter-weight data preprocessing for visualization:</p><ol type="1">
<li>Loads forward histogram from data file</li>
<li>Extracts metadata</li>
<li>Determines t0</li>
<li>Sets up data range (may extend beyond fit range)</li>
<li>Minimal or no background subtraction</li>
<li>Optional packing for display</li>
</ol>
<p>Used when tag=kView to prepare data for plotting without full fitting infrastructure. Typically displays wider time range than fit range for context.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">runData</td><td>Pointer to raw run data handler containing histogram </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 data loading fails</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="#aba3d803c4f6debdc66145d4ec9a9fa23" title="Prepares μ⁻ histogram data for fitting.">PrepareFitData()</a> for full fitting mode processing</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="PRunMuMinus_8cpp_source.html#l00792">792</a> of file <a class="el" href="PRunMuMinus_8cpp_source.html">PRunMuMinus.cpp</a>.</p>
<p class="reference">References <a class="el" href="PRunMuMinus_8cpp_source.html#l00525">CalcNoOfFitBins()</a>, <a class="el" href="PRunBase_8h_source.html#l00275">PRunBase::fData</a>, <a class="el" href="PRunBase_8h_source.html#l00282">PRunBase::fFitEndTime</a>, <a class="el" href="PRunBase_8h_source.html#l00281">PRunBase::fFitStartTime</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00427">fForward</a>, <a class="el" href="PRunBase_8h_source.html#l00284">PRunBase::fFuncValues</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00414">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="PRunMuMinus_8h_source.html#l00391">fPacking</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="PRunMuMinus_8h_source.html#l00402">fTheoAsData</a>, <a class="el" href="PRunBase_8h_source.html#l00285">PRunBase::fTheory</a>, and <a class="el" href="PRunBase_8h_source.html#l00276">PRunBase::fTimeResolution</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunMuMinus_8cpp_source.html#l00590">PrepareData()</a>.</p>
</div>
</div>
<a id="a6d60a6ee87cd46de7e9a5798ceb1970d" name="a6d60a6ee87cd46de7e9a5798ceb1970d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d60a6ee87cd46de7e9a5798ceb1970d">&#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 PRunMuMinus::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>Parses and applies fit range specified as bin offsets from good bin markers. This supports the COMMANDS block FIT_RANGE syntax for dynamic range adjustments.</p>
<p>Format: "fit_range fgb+n0 lgb-n1"</p><ul>
<li>fgb = first good bin (typically t0 bin)</li>
<li>lgb = last good bin (end of data range)</li>
<li>n0, n1 = offsets in bins (can be + or -)</li>
</ul>
<p>Example: "fit_range fgb+5 lgb-10" → Start 5 bins after t0, end 10 bins before last good bin</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">fitRange</td><td>String with fit range specification in bin offsets</td></tr>
</table>
</dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classPRunBase.html#a59cbd8ad7cb144c99c1dccefa4e200ff" title="Sets the fit time range for this run.">SetFitRange(PDoublePairVector)</a> in <a class="el" href="classPRunBase.html" title="Abstract base class defining the interface for all μSR fit types.">PRunBase</a> for time-based specification</dd></dl>
<p>Allows to change the fit range on the fly. Used in the COMMAND block. The syntax of the string is: FIT_RANGE fgb[+n00] lgb[-n01] [fgb[+n10] lgb[-n11] ... fgb[+nN0] lgb[-nN1]]. If only one pair of fgb/lgb is given, it is used for all runs in the RUN block section. If multiple fgb/lgb's are given, the number N has to be the number of RUN blocks in the msr-file.</p>
<p>nXY are offsets which can be used to shift, limit the fit range.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">fitRange</td><td>string containing the necessary information. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8cpp_source.html#l00454">454</a> of file <a class="el" href="PRunMuMinus_8cpp_source.html">PRunMuMinus.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="PRunMuMinus_8h_source.html#l00414">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>, <a class="el" href="PRunBase_8h_source.html#l00276">PRunBase::fTimeResolution</a>, and <a class="el" href="PStringUtils_8cpp_source.html#l00048">PStringUtils::Split()</a>.</p>
</div>
</div>
<a name="doc-variable-members" id="doc-variable-members"></a><h2 id="header-doc-variable-members" class="groupheader">Member Data Documentation</h2>
<a id="aac4549dbf197ff0a8217b5bfdaf2b9a5" name="aac4549dbf197ff0a8217b5bfdaf2b9a5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aac4549dbf197ff0a8217b5bfdaf2b9a5">&#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 PRunMuMinus::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="PRunMuMinus_8h_source.html#l00430">430</a> of file <a class="el" href="PRunMuMinus_8h_source.html">PRunMuMinus.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunMuMinus_8cpp_source.html#l00208">CalcChiSquare()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00276">CalcChiSquareExpected()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00361">CalcMaxLikelihood()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00525">CalcNoOfFitBins()</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00281">GetEndTimeBin()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00065">PRunMuMinus()</a>, and <a class="el" href="PRunMuMinus_8cpp_source.html#l00124">PRunMuMinus()</a>.</p>
</div>
</div>
<a id="a88d70a3eb1263bd5f7351920f28bd6b5" name="a88d70a3eb1263bd5f7351920f28bd6b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a88d70a3eb1263bd5f7351920f28bd6b5">&#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> PRunMuMinus::fForward</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Forward detector histogram data (background-corrected, packed). </p>
<p>Contains the processed μ⁻ decay histogram after:</p><ul>
<li>Background subtraction</li>
<li>Bin packing</li>
<li>Conversion to appropriate units</li>
</ul>
<p>This is the data fitted against theory predictions. Stored in fData.GetValue() vector for χ² calculation. </p>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8h_source.html#l00427">427</a> of file <a class="el" href="PRunMuMinus_8h_source.html">PRunMuMinus.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunMuMinus_8cpp_source.html#l01070">GetProperDataRange()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00590">PrepareData()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00734">PrepareFitData()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00792">PrepareRawViewData()</a>, and <a class="el" href="PRunMuMinus_8cpp_source.html#l00166">~PRunMuMinus()</a>.</p>
</div>
</div>
<a id="a2f9ea96ed2ba33a888c32efdc907950a" name="a2f9ea96ed2ba33a888c32efdc907950a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f9ea96ed2ba33a888c32efdc907950a">&#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 PRunMuMinus::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 bin-based fit range specification. </p>
<p>Stores reference bins used in COMMANDS block FIT_RANGE parsing:</p><ul>
<li>fGoodBins[0]: First good bin (fgb) - typically t0 bin</li>
<li>fGoodBins[1]: Last good bin (lgb) - end of valid data range</li>
</ul>
<p>Used when fit range is specified as "fgb+n0 lgb-n1" rather than absolute times. Needed because COMMANDS block can dynamically change fit range during execution. </p>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8h_source.html#l00414">414</a> of file <a class="el" href="PRunMuMinus_8h_source.html">PRunMuMinus.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunMuMinus_8cpp_source.html#l01070">GetProperDataRange()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l01145">GetProperFitRange()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00734">PrepareFitData()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00792">PrepareRawViewData()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00065">PRunMuMinus()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00124">PRunMuMinus()</a>, and <a class="el" href="PRunMuMinus_8cpp_source.html#l00454">SetFitRangeBin()</a>.</p>
</div>
</div>
<a id="afd5f4969b908b4a57e95dd1f53ae7702" name="afd5f4969b908b4a57e95dd1f53ae7702"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd5f4969b908b4a57e95dd1f53ae7702">&#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 PRunMuMinus::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 (between fStartTimeBin and fEndTimeBin). </p>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8h_source.html#l00376">376</a> of file <a class="el" href="PRunMuMinus_8h_source.html">PRunMuMinus.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunMuMinus_8cpp_source.html#l00525">CalcNoOfFitBins()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00433">GetNoOfFitBins()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00065">PRunMuMinus()</a>, and <a class="el" href="PRunMuMinus_8cpp_source.html#l00124">PRunMuMinus()</a>.</p>
</div>
</div>
<a id="a2f6c710527bc6cc3dcb4542aa9d32a39" name="a2f6c710527bc6cc3dcb4542aa9d32a39"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f6c710527bc6cc3dcb4542aa9d32a39">&#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 PRunMuMinus::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 for μ⁻). </p>
<p>Number of consecutive raw histogram bins combined into one packed bin. Higher packing improves statistics but reduces time resolution.</p>
<p>Source priority:</p><ol type="1">
<li>RUN block "packing" entry</li>
<li>GLOBAL block "packing" entry</li>
<li>ERROR if neither specified (mandatory for μ⁻)</li>
</ol>
<p>Typical values: 1 (no packing), 5, 10, 20 </p>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8h_source.html#l00391">391</a> of file <a class="el" href="PRunMuMinus_8h_source.html">PRunMuMinus.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunMuMinus_8h_source.html#l00287">GetPacking()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00734">PrepareFitData()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00792">PrepareRawViewData()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00065">PRunMuMinus()</a>, and <a class="el" href="PRunMuMinus_8cpp_source.html#l00124">PRunMuMinus()</a>.</p>
</div>
</div>
<a id="aba22dd04f7bdde0de5231db0eeee161e" name="aba22dd04f7bdde0de5231db0eeee161e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba22dd04f7bdde0de5231db0eeee161e">&#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 PRunMuMinus::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="PRunMuMinus_8h_source.html#l00429">429</a> of file <a class="el" href="PRunMuMinus_8h_source.html">PRunMuMinus.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunMuMinus_8cpp_source.html#l00208">CalcChiSquare()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00276">CalcChiSquareExpected()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00361">CalcMaxLikelihood()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00525">CalcNoOfFitBins()</a>, <a class="el" href="PRunMuMinus_8h_source.html#l00275">GetStartTimeBin()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00065">PRunMuMinus()</a>, and <a class="el" href="PRunMuMinus_8cpp_source.html#l00124">PRunMuMinus()</a>.</p>
</div>
</div>
<a id="a1578acd55d3ef318e0e63f517adfc983" name="a1578acd55d3ef318e0e63f517adfc983"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1578acd55d3ef318e0e63f517adfc983">&#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 PRunMuMinus::fTheoAsData</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel private">private</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Theory calculation mode flag. </p>
<p>Controls theory grid resolution:</p><ul>
<li>true: Theory evaluated only at data point times (efficient for fitting)</li>
<li>false: Theory evaluated on finer grid (smooth curves for plotting/Fourier)</li>
</ul>
<p>Set from <a class="el" href="classPRunListCollection.html" title="Manager class for all processed μSR run data during fitting.">PRunListCollection</a> based on PLOT block settings. </p>
<p class="definition">Definition at line <a class="el" href="PRunMuMinus_8h_source.html#l00402">402</a> of file <a class="el" href="PRunMuMinus_8h_source.html">PRunMuMinus.h</a>.</p>
<p class="reference">Referenced by <a class="el" href="PRunMuMinus_8cpp_source.html#l00792">PrepareRawViewData()</a>, <a class="el" href="PRunMuMinus_8cpp_source.html#l00065">PRunMuMinus()</a>, and <a class="el" href="PRunMuMinus_8cpp_source.html#l00124">PRunMuMinus()</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="PRunMuMinus_8h_source.html">PRunMuMinus.h</a></li>
<li>/workspace/LMU/musrfit/src/classes/<a class="el" href="PRunMuMinus_8cpp_source.html">PRunMuMinus.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</div><!-- container -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a href="classPRunMuMinus.html">PRunMuMinus</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.17.0 </li>
</ul>
</div>
</body>
</html>