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

3021 lines
539 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>musrfit: /workspace/LMU/musrfit/src/classes/PFitter.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">musrfit<span id="projectnumber">&#160;1.9.9</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',false,false,'search.php','Search',true);
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('PFitter_8cpp_source.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle"><div class="title">PFitter.cpp</div></div>
</div><!--header-->
<div class="contents">
<a href="PFitter_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/***************************************************************************</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"></span> </div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> PFitter.cpp</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"></span> </div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> Author: Andreas Suter</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> e-mail: andreas.suter@psi.ch</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"></span> </div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">***************************************************************************/</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span> </div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">/***************************************************************************</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> * Copyright (C) 2007-2025 by Andreas Suter *</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * andreas.suter@psi.ch *</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> * *</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> * This program is free software; you can redistribute it and/or modify *</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> * it under the terms of the GNU General Public License as published by *</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * the Free Software Foundation; either version 2 of the License, or *</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> * (at your option) any later version. *</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> * *</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment"> * This program is distributed in the hope that it will be useful, *</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of *</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"> * GNU General Public License for more details. *</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment"> * *</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment"> * You should have received a copy of the GNU General Public License *</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment"> * along with this program; if not, write to the *</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment"> * Free Software Foundation, Inc., *</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment"> * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="comment"> ***************************************************************************/</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="preprocessor">#ifdef HAVE_CONFIG_H</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#include &quot;config.h&quot;</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#ifdef HAVE_GOMP</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="preprocessor">#include &lt;omp.h&gt;</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="preprocessor">#include &lt;iostream&gt;</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="preprocessor">#include &lt;iomanip&gt;</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span><span class="preprocessor">#include &lt;fstream&gt;</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span><span class="preprocessor">#include &lt;limits&gt;</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span><span class="preprocessor">#include &lt;cmath&gt;</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="preprocessor">#include &lt;boost/variant/variant.hpp&gt;</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span><span class="preprocessor">#include &lt;sys/time.h&gt;</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="preprocessor">#include &quot;Minuit2/FunctionMinimum.h&quot;</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="preprocessor">#include &quot;Minuit2/MnContours.h&quot;</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="preprocessor">#include &quot;Minuit2/MnHesse.h&quot;</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="preprocessor">#include &quot;Minuit2/MnMinimize.h&quot;</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span><span class="preprocessor">#include &quot;Minuit2/MnMigrad.h&quot;</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="preprocessor">#include &quot;Minuit2/MnMinos.h&quot;</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="preprocessor">#include &quot;Minuit2/MnPlot.h&quot;</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="preprocessor">#include &quot;Minuit2/MnPrint.h&quot;</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="preprocessor">#include &quot;Minuit2/MnScan.h&quot;</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="preprocessor">#include &quot;Minuit2/MnSimplex.h&quot;</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="preprocessor">#include &quot;Minuit2/MnStrategy.h&quot;</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="preprocessor">#include &quot;Minuit2/MnUserParameterState.h&quot;</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="preprocessor">#include &quot;Minuit2/MinosError.h&quot;</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="preprocessor">#include &lt;TCanvas.h&gt;</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="preprocessor">#include &lt;TH2.h&gt;</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="preprocessor">#include &lt;TFile.h&gt;</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="preprocessor">#include &lt;TDatime.h&gt;</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="preprocessor">#include &lt;TString.h&gt;</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="preprocessor">#include &lt;TObjArray.h&gt;</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="preprocessor">#include &lt;TObjString.h&gt;</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="preprocessor">#include &quot;<a class="code" href="PFitter_8h.html">PFitter.h</a>&quot;</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> </div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment">//+++ PSectorChisq class +++++++++++++++++++++++++++++++++++++++++++++++++++</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> </div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="comment">// Constructor</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen00081" data-start="{" data-end="}">
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"><a class="line" href="classPSectorChisq.html#a44bbb7b017f32746662635ebd193a7d5"> 81</a></span><a class="code hl_function" href="classPSectorChisq.html#a44bbb7b017f32746662635ebd193a7d5">PSectorChisq::PSectorChisq</a>(UInt_t noOfRuns) : <a class="code hl_variable" href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">fNoOfRuns</a>(noOfRuns)</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span>{</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <span class="comment">// init</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <a class="code hl_variable" href="classPSectorChisq.html#a0cabfd47e2660bea4339265eb5af7d72">fLast</a> = 0.0;</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <a class="code hl_variable" href="classPSectorChisq.html#a2ffd2a4fbadba32072657115b8fd97da">fChisq</a> = 0.0;</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <a class="code hl_variable" href="classPSectorChisq.html#a856c7b3a8c25b27ea94e480af3f086e2">fExpectedChisq</a> = 0.0;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <a class="code hl_variable" href="classPSectorChisq.html#a41342b023b81ce9baf620df4cc5f6f81">fNDF</a> = 0;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <a class="code hl_variable" href="classPSectorChisq.html#a105ac488e8bd5f188337cf4bef450a41">fFirst</a>.resize(<a class="code hl_variable" href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">fNoOfRuns</a>);</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <a class="code hl_variable" href="classPSectorChisq.html#a81b63f3420699f93372f8afdd03628b8">fChisqRun</a>.resize(<a class="code hl_variable" href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">fNoOfRuns</a>);</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <a class="code hl_variable" href="classPSectorChisq.html#a99f8524bc982ce7b7e367d05bc52ae6b">fExpectedChisqRun</a>.resize(<a class="code hl_variable" href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">fNoOfRuns</a>);</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> <a class="code hl_variable" href="classPSectorChisq.html#a247f63e10b6f4f0ad1a18ac41a36ed66">fNDFRun</a>.resize(<a class="code hl_variable" href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">fNoOfRuns</a>);</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">fNoOfRuns</a>; i++) {</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <a class="code hl_variable" href="classPSectorChisq.html#a105ac488e8bd5f188337cf4bef450a41">fFirst</a>[i] = 0.0;</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> <a class="code hl_variable" href="classPSectorChisq.html#a81b63f3420699f93372f8afdd03628b8">fChisqRun</a>[i] = 0.0;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <a class="code hl_variable" href="classPSectorChisq.html#a99f8524bc982ce7b7e367d05bc52ae6b">fExpectedChisqRun</a>[i] = 0.0;</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> <a class="code hl_variable" href="classPSectorChisq.html#a247f63e10b6f4f0ad1a18ac41a36ed66">fNDFRun</a>[i] = 0;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> }</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span>}</div>
</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment">// SetRunFirstTime</span></div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen00109" data-start="{" data-end="}">
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"><a class="line" href="classPSectorChisq.html#aa5019c42355d0ebe4f88de794d8fb867"> 109</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classPSectorChisq.html#aa5019c42355d0ebe4f88de794d8fb867">PSectorChisq::SetRunFirstTime</a>(Double_t first, UInt_t idx)</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span>{</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <span class="keywordflow">if</span> (idx &gt; <a class="code hl_variable" href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">fNoOfRuns</a>) {</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;**WARNING** from PSectorChisq::SetRunFirstTime. It tries to set&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> std::cerr &lt;&lt; <span class="stringliteral">&quot; a fgb time stamp with idx=&quot;</span> &lt;&lt; idx &lt;&lt; <span class="stringliteral">&quot; which is larger than #RUNS=&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">fNoOfRuns</a> &lt;&lt; <span class="stringliteral">&quot;.&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> std::cerr &lt;&lt; <span class="stringliteral">&quot; Will ignore it, but you better check what is going on!&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> }</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <a class="code hl_variable" href="classPSectorChisq.html#a105ac488e8bd5f188337cf4bef450a41">fFirst</a>[idx] = first;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span>}</div>
</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="comment">// SetChisq</span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen00130" data-start="{" data-end="}">
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"><a class="line" href="classPSectorChisq.html#ad138bcc48d05456cadf64cf82f473bc3"> 130</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classPSectorChisq.html#a014287cc26551be640026b7dede1227f">PSectorChisq::SetChisq</a>(Double_t chisq, UInt_t idx)</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span>{</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> <span class="keywordflow">if</span> (idx &gt; <a class="code hl_variable" href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">fNoOfRuns</a>) {</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;**WARNING** from PSectorChisq::SetChisq. It tries to set&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> std::cerr &lt;&lt; <span class="stringliteral">&quot; a chisq with idx=&quot;</span> &lt;&lt; idx &lt;&lt; <span class="stringliteral">&quot; which is larger than #RUNS=&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">fNoOfRuns</a> &lt;&lt; <span class="stringliteral">&quot;.&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> std::cerr &lt;&lt; <span class="stringliteral">&quot; Will ignore it, but you better check what is going on!&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> }</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <a class="code hl_variable" href="classPSectorChisq.html#a81b63f3420699f93372f8afdd03628b8">fChisqRun</a>[idx] = chisq;</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span>}</div>
</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> </div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="comment">// SetExpectedChisq</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen00151" data-start="{" data-end="}">
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"><a class="line" href="classPSectorChisq.html#a991d012404f929a9a63da399d9a4e695"> 151</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classPSectorChisq.html#a20861096a62fd77f40615ba53ff1a032">PSectorChisq::SetExpectedChisq</a>(Double_t chisq, UInt_t idx)</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span>{</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="keywordflow">if</span> (idx &gt; <a class="code hl_variable" href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">fNoOfRuns</a>) {</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;**WARNING** from PSectorChisq::SetExpectedChisq. It tries to set&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> std::cerr &lt;&lt; <span class="stringliteral">&quot; a chisq with idx=&quot;</span> &lt;&lt; idx &lt;&lt; <span class="stringliteral">&quot; which is larger than #RUNS=&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">fNoOfRuns</a> &lt;&lt; <span class="stringliteral">&quot;.&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> std::cerr &lt;&lt; <span class="stringliteral">&quot; Will ignore it, but you better check what is going on!&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> }</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> </div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <a class="code hl_variable" href="classPSectorChisq.html#a99f8524bc982ce7b7e367d05bc52ae6b">fExpectedChisqRun</a>[idx] = chisq;</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span>}</div>
</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> </div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="comment">// SetNDF</span></div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen00172" data-start="{" data-end="}">
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"><a class="line" href="classPSectorChisq.html#a5227fbce370b78b58ba4db815c3422b9"> 172</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classPSectorChisq.html#a1a291d4fd5d39d57ae298dd81e2cebdd">PSectorChisq::SetNDF</a>(UInt_t ndf, UInt_t idx)</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span>{</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <span class="keywordflow">if</span> (idx &gt; <a class="code hl_variable" href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">fNoOfRuns</a>) {</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;**WARNING** from PSectorChisq::SetNDF. It tries to set&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> std::cerr &lt;&lt; <span class="stringliteral">&quot; a NDF with idx=&quot;</span> &lt;&lt; idx &lt;&lt; <span class="stringliteral">&quot; which is larger than #RUNS=&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">fNoOfRuns</a> &lt;&lt; <span class="stringliteral">&quot;.&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> std::cerr &lt;&lt; <span class="stringliteral">&quot; Will ignore it, but you better check what is going on!&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> }</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> </div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> <a class="code hl_variable" href="classPSectorChisq.html#a247f63e10b6f4f0ad1a18ac41a36ed66">fNDFRun</a>[idx] = ndf;</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span>}</div>
</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> </div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span><span class="comment">// GetTimeRangeFirst</span></div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen00195" data-start="{" data-end="}">
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"><a class="line" href="classPSectorChisq.html#a4419e695b6bc29151bacac5a22804f32"> 195</a></span>Double_t <a class="code hl_function" href="classPSectorChisq.html#a4419e695b6bc29151bacac5a22804f32">PSectorChisq::GetTimeRangeFirst</a>(UInt_t idx)</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span>{</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="keywordflow">if</span> (idx &gt; <a class="code hl_variable" href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">fNoOfRuns</a>)</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="keywordflow">return</span> <a class="code hl_define" href="PMusr_8h.html#a5357075a43f071649455751fedd2bdf5">PMUSR_UNDEFINED</a>;</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> </div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classPSectorChisq.html#a105ac488e8bd5f188337cf4bef450a41">fFirst</a>[idx];</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span>}</div>
</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> </div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span><span class="comment">// GetChisq</span></div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen00213" data-start="{" data-end="}">
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"><a class="line" href="classPSectorChisq.html#a1fe68374b0c67a2a7bd6552b2a3e3273"> 213</a></span>Double_t <a class="code hl_function" href="classPSectorChisq.html#a6e88257dd8aa4f7b651d9c9937230002">PSectorChisq::GetChisq</a>(UInt_t idx)</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span>{</div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="keywordflow">if</span> (idx &gt;= <a class="code hl_variable" href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">fNoOfRuns</a>)</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="keywordflow">return</span> -1.0;</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> </div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classPSectorChisq.html#a81b63f3420699f93372f8afdd03628b8">fChisqRun</a>[idx];</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span>}</div>
</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> </div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="comment">// GetExpectedChisq</span></div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen00231" data-start="{" data-end="}">
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"><a class="line" href="classPSectorChisq.html#a5831e929739c07130ed8efb868a72f58"> 231</a></span>Double_t <a class="code hl_function" href="classPSectorChisq.html#a059400d70bf55a6439e9815f21d5eedc">PSectorChisq::GetExpectedChisq</a>(UInt_t idx)</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span>{</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="keywordflow">if</span> (idx &gt;= <a class="code hl_variable" href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">fNoOfRuns</a>)</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">return</span> -1.0;</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> </div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classPSectorChisq.html#a99f8524bc982ce7b7e367d05bc52ae6b">fExpectedChisqRun</a>[idx];</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span>}</div>
</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> </div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span><span class="comment">// GetNDF</span></div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen00249" data-start="{" data-end="}">
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"><a class="line" href="classPSectorChisq.html#a746c3ed5dd15a10d87a50c707eec6df9"> 249</a></span>UInt_t <a class="code hl_function" href="classPSectorChisq.html#a0db2c667e4f5db56fef4ad2b8ce00d71">PSectorChisq::GetNDF</a>(UInt_t idx)</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span>{</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <span class="keywordflow">if</span> (idx &gt;= <a class="code hl_variable" href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">fNoOfRuns</a>)</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> </div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classPSectorChisq.html#a247f63e10b6f4f0ad1a18ac41a36ed66">fNDFRun</a>[idx];</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span>}</div>
</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> </div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span><span class="comment">//+++ PFitter class ++++++++++++++++++++++++++++++++++++++++++++++++++++++++</span></div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> </div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span><span class="comment">// Constructor</span></div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen00290" data-start="{" data-end="}">
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"><a class="line" href="classPFitter.html#a981b523e5ca5f7cd66e01e2c45135d2b"> 290</a></span><a class="code hl_function" href="classPFitter.html#a981b523e5ca5f7cd66e01e2c45135d2b">PFitter::PFitter</a>(<a class="code hl_class" href="classPMsrHandler.html">PMsrHandler</a> *runInfo, <a class="code hl_class" href="classPRunListCollection.html">PRunListCollection</a> *runListCollection, Bool_t chisq_only, Bool_t yaml_out) :</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> <a class="code hl_variable" href="classPFitter.html#ac6b16f7adb7f4ebff7c6348aaa65f5b4">fChisqOnly</a>(chisq_only), <a class="code hl_variable" href="classPFitter.html#a56ae801deb287de03641d87b6461d9f8">fYamlOut</a>(yaml_out), <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>(runInfo), <a class="code hl_variable" href="classPFitter.html#a71fa2a64e6574b4582b21d4efe81991a">fRunListCollection</a>(runListCollection)</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span>{</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> <span class="comment">// initialize variables</span></div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> <a class="code hl_variable" href="classPFitter.html#a6f97d44fb0b291f7af9d01579c0e406c">fIsScanOnly</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> <a class="code hl_variable" href="classPFitter.html#ac41618f0b66f7ef4bfed953e9fea79bd">fConverged</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <a class="code hl_variable" href="classPFitter.html#aec873931299b3bfab3b0d07d3f3cc719">fUseChi2</a> = <span class="keyword">true</span>; <span class="comment">// chi^2 is the default</span></div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> </div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> <a class="code hl_variable" href="classPFitter.html#a14588efda750524a6dd0c85a13199919">fStrategy</a> = 1; <span class="comment">// 0=low, 1=default, 2=high</span></div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> </div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span> <a class="code hl_variable" href="classPFitter.html#a52f438ddd04f6d220d6777c589495c9c">fSectorFlag</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> </div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span> <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a> = *(runInfo-&gt;<a class="code hl_function" href="classPMsrHandler.html#a4364201bedc2a4d4be478ba8a796e204">GetMsrParamList</a>());</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <a class="code hl_variable" href="classPFitter.html#a7f894783312fb9a16e92b8c34141d734">fCmdLines</a> = *runInfo-&gt;<a class="code hl_function" href="classPMsrHandler.html#a13db073e799872f9a6a12d4376e07cff">GetMsrCommands</a>();</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> </div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno"> 305</span> <span class="comment">// init class variables</span></div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"> 306</span> <a class="code hl_variable" href="classPFitter.html#a691cf32e8aa08e70159450e3a3dc597b">fScanAll</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> <a class="code hl_variable" href="classPFitter.html#a3561550a7d70378a1b36971333d0d7a5">fScanParameter</a>[0] = 0;</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"> 308</span> <a class="code hl_variable" href="classPFitter.html#a3561550a7d70378a1b36971333d0d7a5">fScanParameter</a>[1] = 0;</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> <a class="code hl_variable" href="classPFitter.html#a0f965880a3bd8cb7489fedca61c45201">fScanNoPoints</a> = 41; <span class="comment">// minuit2 default</span></div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> <a class="code hl_variable" href="classPFitter.html#a94301c0e357ffb912db6380e2dd1a76a">fScanLow</a> = 0.0; <span class="comment">// minuit2 default, i.e. 2 std deviations</span></div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> <a class="code hl_variable" href="classPFitter.html#a15110762601d24e076e48c79ef056d16">fScanHigh</a> = 0.0; <span class="comment">// minuit2 default, i.e. 2 std deviations</span></div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> <a class="code hl_variable" href="classPFitter.html#a62a705860d144d6f0184a9a907c83678">fPrintLevel</a> = 1.0;</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> </div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"> 314</span> <span class="comment">// keep all the fit ranges in case RANGE command is present</span></div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> <a class="code hl_typedef" href="PMusr_8h.html#a11543a8acdb329540782443a7cf1d667">PDoublePair</a> rangeGlob;</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"> 316</span> <a class="code hl_class" href="classPMsrGlobalBlock.html">PMsrGlobalBlock</a> *global = <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrGlobal();</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> rangeGlob.first = global-&gt;<a class="code hl_function" href="classPMsrGlobalBlock.html#a48a649bdcb8aa7c2a27e026a1ec391f6">GetFitRange</a>(0);</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> rangeGlob.second = global-&gt;<a class="code hl_function" href="classPMsrGlobalBlock.html#a48a649bdcb8aa7c2a27e026a1ec391f6">GetFitRange</a>(1);</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> </div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> <a class="code hl_typedef" href="PMusr_8h.html#a4073f6987fbfc4322a522b8d112520ae">PMsrRunList</a> *runs = <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrRunList();</div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> <a class="code hl_typedef" href="PMusr_8h.html#a11543a8acdb329540782443a7cf1d667">PDoublePair</a> range;</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;runs-&gt;size(); i++) {</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> range.first = (*runs)[i].GetFitRange(0);</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> range.second = (*runs)[i].GetFitRange(1);</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> <span class="keywordflow">if</span> (range.first == <a class="code hl_define" href="PMusr_8h.html#a5357075a43f071649455751fedd2bdf5">PMUSR_UNDEFINED</a>)</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> <a class="code hl_variable" href="classPFitter.html#a0d49c71cedfb96367f8167877beba69d">fOriginalFitRange</a>.push_back(rangeGlob);</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> <a class="code hl_variable" href="classPFitter.html#a0d49c71cedfb96367f8167877beba69d">fOriginalFitRange</a>.push_back(range);</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> }</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> </div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> <span class="comment">// check msr minuit commands</span></div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="classPFitter.html#ac3961503e41b84dc8cc683ce274d2300">CheckCommands</a>()) {</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> }</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> </div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> <span class="comment">// create phase bool array</span></div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> <a class="code hl_function" href="classPFitter.html#a8e9e7d418fa0adaf0f75581b8409d5e9">GetPhaseParams</a>();</div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> </div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> <span class="comment">// create fit function object</span></div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a> = std::make_unique&lt;PFitterFcn&gt;(runListCollection, <a class="code hl_variable" href="classPFitter.html#aec873931299b3bfab3b0d07d3f3cc719">fUseChi2</a>);</div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span>}</div>
</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> </div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span><span class="comment">// Destructor</span></div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen00352" data-start="{" data-end="}">
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"><a class="line" href="classPFitter.html#a711ce9d116c066221fc72527f598abab"> 352</a></span><a class="code hl_function" href="classPFitter.html#a711ce9d116c066221fc72527f598abab">PFitter::~PFitter</a>()</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span>{</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.clear();</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> </div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> <a class="code hl_variable" href="classPFitter.html#ab156ab2b66ed243065045e47ea8d5762">fScanData</a>.clear();</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> </div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span> <a class="code hl_variable" href="classPFitter.html#a26ccf4d18cb80457389162eaa5af8729">fElapsedTime</a>.clear();</div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span>}</div>
</div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> </div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span><span class="comment">// GetPhaseParams (private)</span></div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen00390" data-start="{" data-end="}">
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"><a class="line" href="classPFitter.html#a8e9e7d418fa0adaf0f75581b8409d5e9"> 390</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classPFitter.html#a8e9e7d418fa0adaf0f75581b8409d5e9">PFitter::GetPhaseParams</a>()</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span>{</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> <a class="code hl_variable" href="classPFitter.html#ad5838c829ba15d41f95a8c452e380028">fPhase</a>.resize(<a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetNoOfParams());</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#ad5838c829ba15d41f95a8c452e380028">fPhase</a>.size(); i++)</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> <a class="code hl_variable" href="classPFitter.html#ad5838c829ba15d41f95a8c452e380028">fPhase</a>[i] = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> </div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> <span class="comment">// analyze theory block for parameters. Phases are present in the following</span></div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> <span class="comment">// default functions:</span></div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> <span class="comment">// user functions cannot be checked!</span></div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> <a class="code hl_typedef" href="PMusr_8h.html#a88b0f32c26fd54bdacfbef77212d951d">PMsrLines</a> *theo = <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrTheory();</div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> TObjArray *tok = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> TObjString *ostr = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> TString str;</div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> <span class="keywordtype">int</span> pos = -1;</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;theo-&gt;size(); i++) {</div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> pos = -1;</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> TString line = theo-&gt;at(i).fLine;</div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;TFieldCos&quot;</span>) || line.Contains(<span class="stringliteral">&quot;tf &quot;</span>) ||</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> line.Contains(<span class="stringliteral">&quot;bessel&quot;</span>) || line.Contains(<span class="stringliteral">&quot;b &quot;</span>) ||</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> line.Contains(<span class="stringliteral">&quot;skewedGss&quot;</span>) || line.Contains(<span class="stringliteral">&quot;skg &quot;</span>) ||</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> line.Contains(<span class="stringliteral">&quot;staticNKTF&quot;</span>) || line.Contains(<span class="stringliteral">&quot;snktf &quot;</span>) ||</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> line.Contains(<span class="stringliteral">&quot;dynamicNKTF&quot;</span>) || line.Contains(<span class="stringliteral">&quot;dnktf &quot;</span>)) { <span class="comment">// phase is 1st param</span></div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> pos = 1;</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> }</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;internFld&quot;</span>) || line.Contains(<span class="stringliteral">&quot;if &quot;</span>) ||</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> line.Contains(<span class="stringliteral">&quot;internBsl&quot;</span>) || line.Contains(<span class="stringliteral">&quot;ib &quot;</span>)) { <span class="comment">// phase is 2nd param</span></div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> pos = 2;</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> }</div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;muMinusExpTF&quot;</span>) || line.Contains(<span class="stringliteral">&quot;mmsetf &quot;</span>)) { <span class="comment">// phase is 5th param</span></div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> pos = 5;</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> }</div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> </div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> <span class="keywordflow">if</span> (pos == -1)</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> </div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> <span class="comment">// extract phase token</span></div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> tok = line.Tokenize(<span class="stringliteral">&quot; \t&quot;</span>);</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> <span class="keywordflow">if</span> (tok == <span class="keyword">nullptr</span>) {</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;PFitter::GetPhaseParams(): **ERROR** couldn&#39;t tokenize theory line string.&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> }</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> <span class="keywordflow">if</span> (tok-&gt;GetEntries() &gt; pos) {</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> ostr = <span class="keyword">dynamic_cast&lt;</span>TObjString*<span class="keyword">&gt;</span>(tok-&gt;At(pos));</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> str = ostr-&gt;GetString();</div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> }</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> <span class="comment">// clean up</span></div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> <span class="keyword">delete</span> tok;</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> tok = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> </div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> <span class="comment">// decode phase token. It can be funX, mapX, or a number</span></div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <span class="keywordflow">if</span> (str.Contains(<span class="stringliteral">&quot;fun&quot;</span>)) { <span class="comment">// function</span></div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <a class="code hl_typedef" href="PMusr_8h.html#aa9c3d2033e27c38e4dbb98e26f1c4e54">PIntVector</a> parVec = <a class="code hl_function" href="classPFitter.html#a50cc50f520008b475796800c61127827">GetParFromFun</a>(str);</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;parVec.size(); i++) {</div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> <span class="keywordflow">if</span> (parVec[i] &lt;= <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetNoOfParams())</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> <a class="code hl_variable" href="classPFitter.html#ad5838c829ba15d41f95a8c452e380028">fPhase</a>[parVec[i]-1] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> }</div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (str.Contains(<span class="stringliteral">&quot;map&quot;</span>)) { <span class="comment">// map</span></div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> <a class="code hl_typedef" href="PMusr_8h.html#aa9c3d2033e27c38e4dbb98e26f1c4e54">PIntVector</a> parVec = <a class="code hl_function" href="classPFitter.html#aae4edca748b0934d6ea96fe9db7f83f2">GetParFromMap</a>(str);</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;parVec.size(); i++) {</div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> <span class="keywordflow">if</span> (parVec[i] &lt;= <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetNoOfParams())</div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> <a class="code hl_variable" href="classPFitter.html#ad5838c829ba15d41f95a8c452e380028">fPhase</a>[parVec[i]-1] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> }</div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> } <span class="keywordflow">else</span> { <span class="comment">// must be a number</span></div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> <span class="keywordtype">int</span> idx = str.Atoi();</div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> <span class="keywordflow">if</span> (idx == 0) { <span class="comment">// something went wrong, str is not an integer</span></div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;PFitter::GetPhaseParams(): **ERROR** str=&quot;</span> &lt;&lt; str.View() &lt;&lt; <span class="stringliteral">&quot; is not an integer!&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> }</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> idx -= 1; <span class="comment">// param start at 1, vector at 0</span></div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <span class="keywordflow">if</span> (idx &gt;= <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetNoOfParams()) { <span class="comment">// idx is out-of-range</span></div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;PFitter::GetPhaseParams(): **ERROR** idx=&quot;</span> &lt;&lt; idx &lt;&lt; <span class="stringliteral">&quot; is &gt; #param = &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetNoOfParams() &lt;&lt; <span class="stringliteral">&quot;!&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> }</div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> <a class="code hl_variable" href="classPFitter.html#ad5838c829ba15d41f95a8c452e380028">fPhase</a>[idx] = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> }</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> }</div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span>}</div>
</div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> </div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span><span class="comment">// GetParFromFun (private)</span></div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen00489" data-start="{" data-end="}">
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"><a class="line" href="classPFitter.html#a50cc50f520008b475796800c61127827"> 489</a></span><a class="code hl_typedef" href="PMusr_8h.html#aa9c3d2033e27c38e4dbb98e26f1c4e54">PIntVector</a> <a class="code hl_function" href="classPFitter.html#a50cc50f520008b475796800c61127827">PFitter::GetParFromFun</a>(<span class="keyword">const</span> TString funStr)</div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span>{</div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> <a class="code hl_typedef" href="PMusr_8h.html#aa9c3d2033e27c38e4dbb98e26f1c4e54">PIntVector</a> parVec;</div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> </div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span> <a class="code hl_typedef" href="PMusr_8h.html#a88b0f32c26fd54bdacfbef77212d951d">PMsrLines</a> *funList = <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrFunctions();</div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span> TObjArray *tok = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span> TObjString *ostr = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> TString str;</div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span> </div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;funList-&gt;size(); i++) {</div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span> <span class="keywordflow">if</span> (funList-&gt;at(i).fLine.Contains(funStr)) {</div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> <span class="comment">// tokenize function string</span></div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> tok = funList-&gt;at(i).fLine.Tokenize(<span class="stringliteral">&quot; =+-*/&quot;</span>);</div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> <span class="keywordflow">if</span> (tok == <span class="keyword">nullptr</span>) {</div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;PFitter::GetParFromFun(): **ERROR** couldn&#39;t tokenize function string.&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span> <span class="keywordflow">return</span> parVec;</div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span> }</div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> </div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=1; j&lt;tok-&gt;GetEntries(); j++) {</div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span> ostr = <span class="keyword">dynamic_cast&lt;</span>TObjString*<span class="keyword">&gt;</span>(tok-&gt;At(j));</div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span> str = ostr-&gt;GetString();</div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span> <span class="comment">// parse tok for parX</span></div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span> <span class="keywordflow">if</span> (str.Contains(<span class="stringliteral">&quot;par&quot;</span>)) {</div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span> <span class="comment">// find start idx of par in token</span></div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> Ssiz_t idx = str.Index(<span class="stringliteral">&quot;par&quot;</span>);</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> idx += 3;</div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span> TString parStr(<span class="stringliteral">&quot;&quot;</span>);</div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span> <span class="keywordflow">do</span> {</div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span> parStr += str[idx];</div>
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> } <span class="keywordflow">while</span> (isdigit(str[idx++]));</div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span> parVec.push_back(parStr.Atoi());</div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> }</div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span> <span class="comment">// parse tok for mapX</span></div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span> <span class="keywordflow">if</span> (str.Contains(<span class="stringliteral">&quot;map&quot;</span>)) {</div>
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span> <span class="comment">// find start idx of par in token</span></div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span> Ssiz_t idx = str.Index(<span class="stringliteral">&quot;map&quot;</span>);</div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> idx += 3;</div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> TString mapStr(<span class="stringliteral">&quot;map&quot;</span>);</div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span> <span class="keywordflow">do</span> {</div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span> mapStr += str[idx];</div>
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"> 529</span> } <span class="keywordflow">while</span> (isdigit(str[idx++]));</div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span> <a class="code hl_typedef" href="PMusr_8h.html#aa9c3d2033e27c38e4dbb98e26f1c4e54">PIntVector</a> mapParVec = <a class="code hl_function" href="classPFitter.html#aae4edca748b0934d6ea96fe9db7f83f2">GetParFromMap</a>(mapStr);</div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> k=0; k&lt;mapParVec.size(); k++) {</div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> parVec.push_back(mapParVec[k]);</div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> }</div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span> }</div>
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> }</div>
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"> 536</span> </div>
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span> <span class="comment">// clean up</span></div>
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span> <span class="keyword">delete</span> tok;</div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span> tok = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span> }</div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span> }</div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span> </div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span> <span class="keywordflow">return</span> parVec;</div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span>}</div>
</div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> </div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span><span class="comment">// GetParFromMap (private)</span></div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen00570" data-start="{" data-end="}">
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"><a class="line" href="classPFitter.html#aae4edca748b0934d6ea96fe9db7f83f2"> 570</a></span><a class="code hl_typedef" href="PMusr_8h.html#aa9c3d2033e27c38e4dbb98e26f1c4e54">PIntVector</a> <a class="code hl_function" href="classPFitter.html#aae4edca748b0934d6ea96fe9db7f83f2">PFitter::GetParFromMap</a>(<span class="keyword">const</span> TString mapStr)</div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"> 571</span>{</div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"> 572</span> <a class="code hl_typedef" href="PMusr_8h.html#aa9c3d2033e27c38e4dbb98e26f1c4e54">PIntVector</a> parVec;</div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span> </div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> TString str = mapStr;</div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span> str.Remove(0,3); <span class="comment">// remove map from string</span></div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> </div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> <span class="keywordtype">int</span> idx=str.Atoi();</div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span> <span class="keywordflow">if</span> (idx == 0) {</div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;PFitter::GetParFromMap(): **ERROR** couldn&#39;t get propper index from mapX!&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span> <span class="keywordflow">return</span> parVec;</div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"> 581</span> }</div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span> </div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span> idx -= 1; <span class="comment">// map starts at 1, map vector at 0</span></div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"> 584</span> </div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span> <span class="comment">// go through all the runs and collect the parameters from the map vectors</span></div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span> <a class="code hl_typedef" href="PMusr_8h.html#a4073f6987fbfc4322a522b8d112520ae">PMsrRunList</a> *runList = <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrRunList();</div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"> 587</span> <span class="keywordflow">if</span> (runList == <span class="keyword">nullptr</span>) {</div>
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno"> 588</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;PFitter::GetParFromMap(): **ERROR** couldn&#39;t get required run list information!&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno"> 589</span> <span class="keywordflow">return</span> parVec;</div>
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno"> 590</span> }</div>
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno"> 591</span> </div>
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno"> 592</span> <a class="code hl_typedef" href="PMusr_8h.html#aa9c3d2033e27c38e4dbb98e26f1c4e54">PIntVector</a> *map = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"> 593</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i=0; i&lt;runList-&gt;size(); i++) {</div>
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"> 594</span> map = runList-&gt;at(i).GetMap();</div>
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"> 595</span> <span class="keywordflow">if</span> (map == <span class="keyword">nullptr</span>) {</div>
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"> 596</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;PFitter::GetParFromMap(): **ERROR** couldn&#39;t get required map information (idx=&quot;</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">&quot;)!&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"> 597</span> parVec.clear();</div>
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"> 598</span> <span class="keywordflow">return</span> parVec;</div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span> }</div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"> 600</span> <span class="keywordflow">if</span> (idx &gt;= map-&gt;size()) {</div>
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"> 601</span> std::cerr &lt;&lt; <span class="stringliteral">&quot;PFitter::GetParFromMap(): **ERROR** requested map index (idx=&quot;</span> &lt;&lt; idx &lt;&lt; <span class="stringliteral">&quot;) out-of-range (&quot;</span> &lt;&lt; map-&gt;size() &lt;&lt; <span class="stringliteral">&quot;)!&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"> 602</span> parVec.clear();</div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span> <span class="keywordflow">return</span> parVec;</div>
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> }</div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"> 605</span> parVec.push_back(map-&gt;at(idx));</div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"> 606</span> }</div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"> 607</span> </div>
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"> 608</span> <span class="keywordflow">return</span> parVec;</div>
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"> 609</span>}</div>
</div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno"> 610</span> </div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"> 611</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"> 612</span><span class="comment">// DoFit</span></div>
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno"> 613</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen00647" data-start="{" data-end="}">
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno"><a class="line" href="classPFitter.html#a399447637761beccd19714caec025339"> 647</a></span>Bool_t <a class="code hl_function" href="classPFitter.html#a399447637761beccd19714caec025339">PFitter::DoFit</a>()</div>
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno"> 648</span>{</div>
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno"> 649</span> <span class="comment">// feed minuit parameters</span></div>
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno"> 650</span> <a class="code hl_function" href="classPFitter.html#a822fe28451f360fcda2aa7a334a63b16">SetParameters</a>();</div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"> 651</span> </div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno"> 652</span> <span class="comment">// check if only chisq/maxLH shall be calculated once</span></div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#ac6b16f7adb7f4ebff7c6348aaa65f5b4">fChisqOnly</a>) {</div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"> 654</span> std::vector&lt;Double_t&gt; param = <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Params();</div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"> 655</span> std::vector&lt;Double_t&gt; error = <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Errors();</div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"> 656</span> Int_t usedParams = 0;</div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno"> 657</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;error.size(); i++) {</div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno"> 658</span> <span class="keywordflow">if</span> (error[i] != 0.0)</div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"> 659</span> usedParams++;</div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"> 660</span> }</div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> UInt_t ndf = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(<a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetTotalNoOfFittedBins()) - usedParams;</div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"> 662</span> Double_t val = (*fFitterFcn)(param);</div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aec873931299b3bfab3b0d07d3f3cc719">fUseChi2</a>) {</div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> <span class="comment">// calculate expected chisq</span></div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno"> 665</span> Double_t totalExpectedChisq = 0.0;</div>
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno"> 666</span> <a class="code hl_typedef" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> expectedChisqPerRun;</div>
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno"> 667</span> <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;CalcExpectedChiSquare(param, totalExpectedChisq, expectedChisqPerRun);</div>
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno"> 668</span> <span class="comment">// calculate chisq per run</span></div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"> 669</span> std::vector&lt;Double_t&gt; chisqPerRun;</div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"> 670</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrRunList()-&gt;size(); i++) {</div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"> 671</span> chisqPerRun.push_back(<a class="code hl_variable" href="classPFitter.html#a71fa2a64e6574b4582b21d4efe81991a">fRunListCollection</a>-&gt;GetSingleRunChisq(param, i));</div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno"> 672</span> }</div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno"> 673</span> </div>
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno"> 674</span> std::cout &lt;&lt; std::endl &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; chisq = &quot;</span> &lt;&lt; val &lt;&lt; <span class="stringliteral">&quot;, NDF = &quot;</span> &lt;&lt; ndf &lt;&lt; <span class="stringliteral">&quot;, chisq/NDF = &quot;</span> &lt;&lt; val/ndf;</div>
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno"> 675</span> </div>
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno"> 676</span> <span class="keywordflow">if</span> (totalExpectedChisq != 0.0) {</div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno"> 677</span> std::cout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; expected chisq = &quot;</span> &lt;&lt; totalExpectedChisq &lt;&lt; <span class="stringliteral">&quot;, NDF = &quot;</span> &lt;&lt; ndf &lt;&lt; <span class="stringliteral">&quot;, expected chisq/NDF = &quot;</span> &lt;&lt; totalExpectedChisq/ndf;</div>
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"> 678</span> UInt_t ndf_run = 0;</div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"> 679</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;expectedChisqPerRun.size(); i++) {</div>
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"> 680</span> ndf_run = <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetNoOfFittedBins(i) - <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetNoOfFitParameters(i);</div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno"> 681</span> <span class="keywordflow">if</span> (ndf_run &gt; 0)</div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno"> 682</span> std::cout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; run block &quot;</span> &lt;&lt; i+1 &lt;&lt; <span class="stringliteral">&quot;: (NDF/red.chisq/red.chisq_e) = (&quot;</span> &lt;&lt; ndf_run &lt;&lt; <span class="stringliteral">&quot;/&quot;</span> &lt;&lt; chisqPerRun[i]/ndf_run &lt;&lt; <span class="stringliteral">&quot;/&quot;</span> &lt;&lt; expectedChisqPerRun[i]/ndf_run &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"> 683</span> }</div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"> 684</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (chisqPerRun.size() &gt; 0) { <span class="comment">// in case expected chisq is not applicable like for asymmetry fits</span></div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno"> 685</span> UInt_t ndf_run = 0;</div>
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno"> 686</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;chisqPerRun.size(); i++) {</div>
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno"> 687</span> ndf_run = <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetNoOfFittedBins(i) - <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetNoOfFitParameters(i);</div>
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno"> 688</span> <span class="keywordflow">if</span> (ndf_run &gt; 0)</div>
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno"> 689</span> std::cout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; run block &quot;</span> &lt;&lt; i+1 &lt;&lt; <span class="stringliteral">&quot;: (NDF/red.chisq) = (&quot;</span> &lt;&lt; ndf_run &lt;&lt; <span class="stringliteral">&quot;/&quot;</span> &lt;&lt; chisqPerRun[i]/ndf_run &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno"> 690</span> }</div>
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno"> 691</span> }</div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno"> 692</span> </div>
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"> 693</span> <span class="comment">// clean up</span></div>
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno"> 694</span> chisqPerRun.clear();</div>
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno"> 695</span> expectedChisqPerRun.clear();</div>
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno"> 696</span> </div>
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno"> 697</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#a52f438ddd04f6d220d6777c589495c9c">fSectorFlag</a>) {</div>
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno"> 698</span> <a class="code hl_typedef" href="PMusr_8h.html#a93e3841e16074fd3c7648d8fc7b742f4">PDoublePairVector</a> secFitRange;</div>
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno"> 699</span> secFitRange.resize(1);</div>
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno"> 700</span> <span class="keywordflow">for</span> (UInt_t k=0; k&lt;<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>.size(); k++) {</div>
<div class="line"><a id="l00701" name="l00701"></a><span class="lineno"> 701</span> <span class="comment">// set sector fit range</span></div>
<div class="line"><a id="l00702" name="l00702"></a><span class="lineno"> 702</span> secFitRange[0].first = <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].GetTimeRangeFirst(0);</div>
<div class="line"><a id="l00703" name="l00703"></a><span class="lineno"> 703</span> secFitRange[0].second = <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].GetTimeRangeLast();</div>
<div class="line"><a id="l00704" name="l00704"></a><span class="lineno"> 704</span> <a class="code hl_variable" href="classPFitter.html#a71fa2a64e6574b4582b21d4efe81991a">fRunListCollection</a>-&gt;SetFitRange(secFitRange);</div>
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno"> 705</span> <span class="comment">// calculate chisq</span></div>
<div class="line"><a id="l00706" name="l00706"></a><span class="lineno"> 706</span> val = (*fFitterFcn)(param);</div>
<div class="line"><a id="l00707" name="l00707"></a><span class="lineno"> 707</span> <span class="comment">// calculate NDF</span></div>
<div class="line"><a id="l00708" name="l00708"></a><span class="lineno"> 708</span> ndf = <span class="keyword">static_cast&lt;</span>UInt_t<span class="keyword">&gt;</span>(<a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetTotalNoOfFittedBins()) - usedParams;</div>
<div class="line"><a id="l00709" name="l00709"></a><span class="lineno"> 709</span> <span class="comment">// calculate expected chisq</span></div>
<div class="line"><a id="l00710" name="l00710"></a><span class="lineno"> 710</span> totalExpectedChisq = 0.0;</div>
<div class="line"><a id="l00711" name="l00711"></a><span class="lineno"> 711</span> <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;CalcExpectedChiSquare(param, totalExpectedChisq, expectedChisqPerRun);</div>
<div class="line"><a id="l00712" name="l00712"></a><span class="lineno"> 712</span> <span class="comment">// calculate chisq per run</span></div>
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno"> 713</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrRunList()-&gt;size(); i++) {</div>
<div class="line"><a id="l00714" name="l00714"></a><span class="lineno"> 714</span> chisqPerRun.push_back(<a class="code hl_variable" href="classPFitter.html#a71fa2a64e6574b4582b21d4efe81991a">fRunListCollection</a>-&gt;GetSingleRunChisq(param, i));</div>
<div class="line"><a id="l00715" name="l00715"></a><span class="lineno"> 715</span> }</div>
<div class="line"><a id="l00716" name="l00716"></a><span class="lineno"> 716</span> </div>
<div class="line"><a id="l00717" name="l00717"></a><span class="lineno"> 717</span> std::cout &lt;&lt; std::endl;</div>
<div class="line"><a id="l00718" name="l00718"></a><span class="lineno"> 718</span> std::cout &lt;&lt; <span class="stringliteral">&quot;++++&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00719" name="l00719"></a><span class="lineno"> 719</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Sector &quot;</span> &lt;&lt; k+1 &lt;&lt; <span class="stringliteral">&quot;: FitRange: &quot;</span> &lt;&lt; secFitRange[0].first &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; secFitRange[0].second &lt;&lt; std::endl;</div>
<div class="line"><a id="l00720" name="l00720"></a><span class="lineno"> 720</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; chisq = &quot;</span> &lt;&lt; val &lt;&lt; <span class="stringliteral">&quot;, NDF = &quot;</span> &lt;&lt; ndf &lt;&lt; <span class="stringliteral">&quot;, chisq/NDF = &quot;</span> &lt;&lt; val/ndf;</div>
<div class="line"><a id="l00721" name="l00721"></a><span class="lineno"> 721</span> </div>
<div class="line"><a id="l00722" name="l00722"></a><span class="lineno"> 722</span> <span class="keywordflow">if</span> (totalExpectedChisq != 0.0) {</div>
<div class="line"><a id="l00723" name="l00723"></a><span class="lineno"> 723</span> std::cout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; expected chisq = &quot;</span> &lt;&lt; totalExpectedChisq &lt;&lt; <span class="stringliteral">&quot;, NDF = &quot;</span> &lt;&lt; ndf &lt;&lt; <span class="stringliteral">&quot;, expected chisq/NDF = &quot;</span> &lt;&lt; totalExpectedChisq/ndf;</div>
<div class="line"><a id="l00724" name="l00724"></a><span class="lineno"> 724</span> UInt_t ndf_run = 0;</div>
<div class="line"><a id="l00725" name="l00725"></a><span class="lineno"> 725</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;expectedChisqPerRun.size(); i++) {</div>
<div class="line"><a id="l00726" name="l00726"></a><span class="lineno"> 726</span> ndf_run = <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetNoOfFittedBins(i) - <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetNoOfFitParameters(i);</div>
<div class="line"><a id="l00727" name="l00727"></a><span class="lineno"> 727</span> <span class="keywordflow">if</span> (ndf_run &gt; 0)</div>
<div class="line"><a id="l00728" name="l00728"></a><span class="lineno"> 728</span> std::cout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; run block &quot;</span> &lt;&lt; i+1 &lt;&lt; <span class="stringliteral">&quot;: (NDF/red.chisq/red.chisq_e) = (&quot;</span> &lt;&lt; ndf_run &lt;&lt; <span class="stringliteral">&quot;/&quot;</span> &lt;&lt; chisqPerRun[i]/ndf_run &lt;&lt; <span class="stringliteral">&quot;/&quot;</span> &lt;&lt; expectedChisqPerRun[i]/ndf_run &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
<div class="line"><a id="l00729" name="l00729"></a><span class="lineno"> 729</span> }</div>
<div class="line"><a id="l00730" name="l00730"></a><span class="lineno"> 730</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (chisqPerRun.size() &gt; 0) { <span class="comment">// in case expected chisq is not applicable like for asymmetry fits</span></div>
<div class="line"><a id="l00731" name="l00731"></a><span class="lineno"> 731</span> UInt_t ndf_run = 0;</div>
<div class="line"><a id="l00732" name="l00732"></a><span class="lineno"> 732</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;chisqPerRun.size(); i++) {</div>
<div class="line"><a id="l00733" name="l00733"></a><span class="lineno"> 733</span> ndf_run = <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetNoOfFittedBins(i) - <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetNoOfFitParameters(i);</div>
<div class="line"><a id="l00734" name="l00734"></a><span class="lineno"> 734</span> <span class="keywordflow">if</span> (ndf_run &gt; 0)</div>
<div class="line"><a id="l00735" name="l00735"></a><span class="lineno"> 735</span> std::cout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; run block &quot;</span> &lt;&lt; i+1 &lt;&lt; <span class="stringliteral">&quot;: (NDF/red.chisq) = (&quot;</span> &lt;&lt; ndf_run &lt;&lt; <span class="stringliteral">&quot;/&quot;</span> &lt;&lt; chisqPerRun[i]/ndf_run &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
<div class="line"><a id="l00736" name="l00736"></a><span class="lineno"> 736</span> }</div>
<div class="line"><a id="l00737" name="l00737"></a><span class="lineno"> 737</span> }</div>
<div class="line"><a id="l00738" name="l00738"></a><span class="lineno"> 738</span> <span class="comment">// clean up</span></div>
<div class="line"><a id="l00739" name="l00739"></a><span class="lineno"> 739</span> chisqPerRun.clear();</div>
<div class="line"><a id="l00740" name="l00740"></a><span class="lineno"> 740</span> expectedChisqPerRun.clear();</div>
<div class="line"><a id="l00741" name="l00741"></a><span class="lineno"> 741</span> }</div>
<div class="line"><a id="l00742" name="l00742"></a><span class="lineno"> 742</span> }</div>
<div class="line"><a id="l00743" name="l00743"></a><span class="lineno"> 743</span> } <span class="keywordflow">else</span> { <span class="comment">// max. log likelihood</span></div>
<div class="line"><a id="l00744" name="l00744"></a><span class="lineno"> 744</span> <span class="comment">// calculate expected maxLH</span></div>
<div class="line"><a id="l00745" name="l00745"></a><span class="lineno"> 745</span> Double_t totalExpectedMaxLH = 0.0;</div>
<div class="line"><a id="l00746" name="l00746"></a><span class="lineno"> 746</span> std::vector&lt;Double_t&gt; expectedMaxLHPerRun;</div>
<div class="line"><a id="l00747" name="l00747"></a><span class="lineno"> 747</span> <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;CalcExpectedChiSquare(param, totalExpectedMaxLH, expectedMaxLHPerRun);</div>
<div class="line"><a id="l00748" name="l00748"></a><span class="lineno"> 748</span> <span class="comment">// calculate maxLH per run</span></div>
<div class="line"><a id="l00749" name="l00749"></a><span class="lineno"> 749</span> std::vector&lt;Double_t&gt; maxLHPerRun;</div>
<div class="line"><a id="l00750" name="l00750"></a><span class="lineno"> 750</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrRunList()-&gt;size(); i++) {</div>
<div class="line"><a id="l00751" name="l00751"></a><span class="lineno"> 751</span> maxLHPerRun.push_back(<a class="code hl_variable" href="classPFitter.html#a71fa2a64e6574b4582b21d4efe81991a">fRunListCollection</a>-&gt;GetSingleRunMaximumLikelihood(param, i));</div>
<div class="line"><a id="l00752" name="l00752"></a><span class="lineno"> 752</span> }</div>
<div class="line"><a id="l00753" name="l00753"></a><span class="lineno"> 753</span> </div>
<div class="line"><a id="l00754" name="l00754"></a><span class="lineno"> 754</span> std::cout &lt;&lt; std::endl &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; maxLH = &quot;</span> &lt;&lt; val &lt;&lt; <span class="stringliteral">&quot;, NDF = &quot;</span> &lt;&lt; ndf &lt;&lt; <span class="stringliteral">&quot;, maxLH/NDF = &quot;</span> &lt;&lt; val/ndf;</div>
<div class="line"><a id="l00755" name="l00755"></a><span class="lineno"> 755</span> </div>
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno"> 756</span> <span class="keywordflow">if</span> (totalExpectedMaxLH != 0.0) {</div>
<div class="line"><a id="l00757" name="l00757"></a><span class="lineno"> 757</span> std::cout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; expected maxLH = &quot;</span> &lt;&lt; totalExpectedMaxLH &lt;&lt; <span class="stringliteral">&quot;, NDF = &quot;</span> &lt;&lt; ndf &lt;&lt; <span class="stringliteral">&quot;, expected maxLH/NDF = &quot;</span> &lt;&lt; totalExpectedMaxLH/ndf;</div>
<div class="line"><a id="l00758" name="l00758"></a><span class="lineno"> 758</span> UInt_t ndf_run = 0;</div>
<div class="line"><a id="l00759" name="l00759"></a><span class="lineno"> 759</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;expectedMaxLHPerRun.size(); i++) {</div>
<div class="line"><a id="l00760" name="l00760"></a><span class="lineno"> 760</span> ndf_run = <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetNoOfFittedBins(i) - <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetNoOfFitParameters(i);</div>
<div class="line"><a id="l00761" name="l00761"></a><span class="lineno"> 761</span> <span class="keywordflow">if</span> (ndf_run &gt; 0)</div>
<div class="line"><a id="l00762" name="l00762"></a><span class="lineno"> 762</span> std::cout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; run block &quot;</span> &lt;&lt; i+1 &lt;&lt; <span class="stringliteral">&quot;: (NDF/red.maxLH/red.maxLH_e) = (&quot;</span> &lt;&lt; ndf_run &lt;&lt; <span class="stringliteral">&quot;/&quot;</span> &lt;&lt; maxLHPerRun[i]/ndf_run &lt;&lt; <span class="stringliteral">&quot;/&quot;</span> &lt;&lt; expectedMaxLHPerRun[i]/ndf_run &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno"> 763</span> }</div>
<div class="line"><a id="l00764" name="l00764"></a><span class="lineno"> 764</span> }</div>
<div class="line"><a id="l00765" name="l00765"></a><span class="lineno"> 765</span> </div>
<div class="line"><a id="l00766" name="l00766"></a><span class="lineno"> 766</span> <span class="comment">// clean up</span></div>
<div class="line"><a id="l00767" name="l00767"></a><span class="lineno"> 767</span> maxLHPerRun.clear();</div>
<div class="line"><a id="l00768" name="l00768"></a><span class="lineno"> 768</span> expectedMaxLHPerRun.clear();</div>
<div class="line"><a id="l00769" name="l00769"></a><span class="lineno"> 769</span> </div>
<div class="line"><a id="l00770" name="l00770"></a><span class="lineno"> 770</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#a52f438ddd04f6d220d6777c589495c9c">fSectorFlag</a>) {</div>
<div class="line"><a id="l00771" name="l00771"></a><span class="lineno"> 771</span> <a class="code hl_typedef" href="PMusr_8h.html#a93e3841e16074fd3c7648d8fc7b742f4">PDoublePairVector</a> secFitRange;</div>
<div class="line"><a id="l00772" name="l00772"></a><span class="lineno"> 772</span> secFitRange.resize(1);</div>
<div class="line"><a id="l00773" name="l00773"></a><span class="lineno"> 773</span> <span class="keywordflow">for</span> (UInt_t k=0; k&lt;<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>.size(); k++) {</div>
<div class="line"><a id="l00774" name="l00774"></a><span class="lineno"> 774</span> <span class="comment">// set sector fit range</span></div>
<div class="line"><a id="l00775" name="l00775"></a><span class="lineno"> 775</span> secFitRange[0].first = <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].GetTimeRangeFirst(0);</div>
<div class="line"><a id="l00776" name="l00776"></a><span class="lineno"> 776</span> secFitRange[0].second = <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].GetTimeRangeLast();</div>
<div class="line"><a id="l00777" name="l00777"></a><span class="lineno"> 777</span> <a class="code hl_variable" href="classPFitter.html#a71fa2a64e6574b4582b21d4efe81991a">fRunListCollection</a>-&gt;SetFitRange(secFitRange);</div>
<div class="line"><a id="l00778" name="l00778"></a><span class="lineno"> 778</span> <span class="comment">// calculate maxLH</span></div>
<div class="line"><a id="l00779" name="l00779"></a><span class="lineno"> 779</span> val = (*fFitterFcn)(param);</div>
<div class="line"><a id="l00780" name="l00780"></a><span class="lineno"> 780</span> <span class="comment">// calculate NDF</span></div>
<div class="line"><a id="l00781" name="l00781"></a><span class="lineno"> 781</span> ndf = <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(<a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetTotalNoOfFittedBins()) - usedParams;</div>
<div class="line"><a id="l00782" name="l00782"></a><span class="lineno"> 782</span> <span class="comment">// calculate expected maxLH</span></div>
<div class="line"><a id="l00783" name="l00783"></a><span class="lineno"> 783</span> totalExpectedMaxLH = 0.0;</div>
<div class="line"><a id="l00784" name="l00784"></a><span class="lineno"> 784</span> <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;CalcExpectedChiSquare(param, totalExpectedMaxLH, expectedMaxLHPerRun);</div>
<div class="line"><a id="l00785" name="l00785"></a><span class="lineno"> 785</span> <span class="comment">// calculate maxLH per run</span></div>
<div class="line"><a id="l00786" name="l00786"></a><span class="lineno"> 786</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrRunList()-&gt;size(); i++) {</div>
<div class="line"><a id="l00787" name="l00787"></a><span class="lineno"> 787</span> maxLHPerRun.push_back(<a class="code hl_variable" href="classPFitter.html#a71fa2a64e6574b4582b21d4efe81991a">fRunListCollection</a>-&gt;GetSingleRunMaximumLikelihood(param, i));</div>
<div class="line"><a id="l00788" name="l00788"></a><span class="lineno"> 788</span> }</div>
<div class="line"><a id="l00789" name="l00789"></a><span class="lineno"> 789</span> </div>
<div class="line"><a id="l00790" name="l00790"></a><span class="lineno"> 790</span> std::cout &lt;&lt; std::endl;</div>
<div class="line"><a id="l00791" name="l00791"></a><span class="lineno"> 791</span> std::cout &lt;&lt; <span class="stringliteral">&quot;++++&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00792" name="l00792"></a><span class="lineno"> 792</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Sector &quot;</span> &lt;&lt; k+1 &lt;&lt; <span class="stringliteral">&quot;: FitRange: &quot;</span> &lt;&lt; secFitRange[0].first &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; secFitRange[0].second &lt;&lt; std::endl;</div>
<div class="line"><a id="l00793" name="l00793"></a><span class="lineno"> 793</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; maxLH = &quot;</span> &lt;&lt; val &lt;&lt; <span class="stringliteral">&quot;, NDF = &quot;</span> &lt;&lt; ndf &lt;&lt; <span class="stringliteral">&quot;, maxLH/NDF = &quot;</span> &lt;&lt; val/ndf;</div>
<div class="line"><a id="l00794" name="l00794"></a><span class="lineno"> 794</span> </div>
<div class="line"><a id="l00795" name="l00795"></a><span class="lineno"> 795</span> <span class="keywordflow">if</span> (totalExpectedMaxLH != 0.0) {</div>
<div class="line"><a id="l00796" name="l00796"></a><span class="lineno"> 796</span> std::cout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; expected maxLH = &quot;</span> &lt;&lt; totalExpectedMaxLH &lt;&lt; <span class="stringliteral">&quot;, NDF = &quot;</span> &lt;&lt; ndf &lt;&lt; <span class="stringliteral">&quot;, expected maxLH/NDF = &quot;</span> &lt;&lt; totalExpectedMaxLH/ndf;</div>
<div class="line"><a id="l00797" name="l00797"></a><span class="lineno"> 797</span> UInt_t ndf_run = 0;</div>
<div class="line"><a id="l00798" name="l00798"></a><span class="lineno"> 798</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;expectedMaxLHPerRun.size(); i++) {</div>
<div class="line"><a id="l00799" name="l00799"></a><span class="lineno"> 799</span> ndf_run = <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetNoOfFittedBins(i) - <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetNoOfFitParameters(i);</div>
<div class="line"><a id="l00800" name="l00800"></a><span class="lineno"> 800</span> <span class="keywordflow">if</span> (ndf_run &gt; 0)</div>
<div class="line"><a id="l00801" name="l00801"></a><span class="lineno"> 801</span> std::cout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; run block &quot;</span> &lt;&lt; i+1 &lt;&lt; <span class="stringliteral">&quot;: (NDF/red.maxLH/red.maxLH_e) = (&quot;</span> &lt;&lt; ndf_run &lt;&lt; <span class="stringliteral">&quot;/&quot;</span> &lt;&lt; maxLHPerRun[i]/ndf_run &lt;&lt; <span class="stringliteral">&quot;/&quot;</span> &lt;&lt; expectedMaxLHPerRun[i]/ndf_run &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
<div class="line"><a id="l00802" name="l00802"></a><span class="lineno"> 802</span> }</div>
<div class="line"><a id="l00803" name="l00803"></a><span class="lineno"> 803</span> }</div>
<div class="line"><a id="l00804" name="l00804"></a><span class="lineno"> 804</span> </div>
<div class="line"><a id="l00805" name="l00805"></a><span class="lineno"> 805</span> <span class="comment">// clean up</span></div>
<div class="line"><a id="l00806" name="l00806"></a><span class="lineno"> 806</span> maxLHPerRun.clear();</div>
<div class="line"><a id="l00807" name="l00807"></a><span class="lineno"> 807</span> expectedMaxLHPerRun.clear();</div>
<div class="line"><a id="l00808" name="l00808"></a><span class="lineno"> 808</span> }</div>
<div class="line"><a id="l00809" name="l00809"></a><span class="lineno"> 809</span> }</div>
<div class="line"><a id="l00810" name="l00810"></a><span class="lineno"> 810</span> }</div>
<div class="line"><a id="l00811" name="l00811"></a><span class="lineno"> 811</span> std::cout &lt;&lt; std::endl &lt;&lt; std::endl;</div>
<div class="line"><a id="l00812" name="l00812"></a><span class="lineno"> 812</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00813" name="l00813"></a><span class="lineno"> 813</span> }</div>
<div class="line"><a id="l00814" name="l00814"></a><span class="lineno"> 814</span> </div>
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno"> 815</span> <span class="comment">// debugging information</span></div>
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno"> 816</span><span class="preprocessor"> #ifdef HAVE_GOMP</span></div>
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno"> 817</span> std::cout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Number of available threads for the function optimization: &quot;</span> &lt;&lt; omp_get_max_threads() &lt;&lt; std::endl;</div>
<div class="line"><a id="l00818" name="l00818"></a><span class="lineno"> 818</span><span class="preprocessor"> #endif</span></div>
<div class="line"><a id="l00819" name="l00819"></a><span class="lineno"> 819</span> </div>
<div class="line"><a id="l00820" name="l00820"></a><span class="lineno"> 820</span> <span class="comment">// real fit wanted</span></div>
<div class="line"><a id="l00821" name="l00821"></a><span class="lineno"> 821</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aec873931299b3bfab3b0d07d3f3cc719">fUseChi2</a>)</div>
<div class="line"><a id="l00822" name="l00822"></a><span class="lineno"> 822</span> std::cout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Chi Square fit will be executed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00823" name="l00823"></a><span class="lineno"> 823</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00824" name="l00824"></a><span class="lineno"> 824</span> std::cout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Maximum Likelihood fit will be executed&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l00825" name="l00825"></a><span class="lineno"> 825</span> </div>
<div class="line"><a id="l00826" name="l00826"></a><span class="lineno"> 826</span> Bool_t <a class="code hl_variable" href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00827" name="l00827"></a><span class="lineno"> 827</span> <span class="comment">// init positive errors to default false, if minos is called, it will be set true there</span></div>
<div class="line"><a id="l00828" name="l00828"></a><span class="lineno"> 828</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); i++) {</div>
<div class="line"><a id="l00829" name="l00829"></a><span class="lineno"> 829</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrParamPosErrorPresent(i, <span class="keyword">false</span>);</div>
<div class="line"><a id="l00830" name="l00830"></a><span class="lineno"> 830</span> }</div>
<div class="line"><a id="l00831" name="l00831"></a><span class="lineno"> 831</span> </div>
<div class="line"><a id="l00832" name="l00832"></a><span class="lineno"> 832</span> <span class="comment">// walk through the command list and execute them</span></div>
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno"> 833</span> Bool_t firstSave = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00834" name="l00834"></a><span class="lineno"> 834</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.size(); i++) {</div>
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno"> 835</span> <span class="keywordflow">switch</span> (<a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>[i].first) {</div>
<div class="line"><a id="l00836" name="l00836"></a><span class="lineno"> 836</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#ab205523bdc162bd2e712622a4616ee36">PMN_INTERACTIVE</a>:</div>
<div class="line"><a id="l00837" name="l00837"></a><span class="lineno"> 837</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;**WARNING** from PFitter::DoFit() : the command INTERACTIVE is not yet implemented.&quot;</span>;</div>
<div class="line"><a id="l00838" name="l00838"></a><span class="lineno"> 838</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l00839" name="l00839"></a><span class="lineno"> 839</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00840" name="l00840"></a><span class="lineno"> 840</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#a78d7796e1a23e08d16983145c8b16ea3">PMN_CONTOURS</a>:</div>
<div class="line"><a id="l00841" name="l00841"></a><span class="lineno"> 841</span> <a class="code hl_variable" href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a> = <a class="code hl_function" href="classPFitter.html#a069a60f7cbb859b0bc0f4b63168dbfde">ExecuteContours</a>();</div>
<div class="line"><a id="l00842" name="l00842"></a><span class="lineno"> 842</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00843" name="l00843"></a><span class="lineno"> 843</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#a81d76653f453d9b1d2590ed0ccd02790">PMN_FIT_RANGE</a>:</div>
<div class="line"><a id="l00844" name="l00844"></a><span class="lineno"> 844</span> <a class="code hl_variable" href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a> = <a class="code hl_function" href="classPFitter.html#acc32e99737b3abd781f06da5649ebd35">ExecuteFitRange</a>(<a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>[i].second);</div>
<div class="line"><a id="l00845" name="l00845"></a><span class="lineno"> 845</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00846" name="l00846"></a><span class="lineno"> 846</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#a15c31fbdad5e90549d7f4ed93c3b0649">PMN_FIX</a>:</div>
<div class="line"><a id="l00847" name="l00847"></a><span class="lineno"> 847</span> <a class="code hl_variable" href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a> = <a class="code hl_function" href="classPFitter.html#ad40bd35fd795fa4be1e556a6042f4f88">ExecuteFix</a>(<a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>[i].second);</div>
<div class="line"><a id="l00848" name="l00848"></a><span class="lineno"> 848</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00849" name="l00849"></a><span class="lineno"> 849</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#a83004a981ff8126d2adb3fc71c5bf066">PMN_EIGEN</a>:</div>
<div class="line"><a id="l00850" name="l00850"></a><span class="lineno"> 850</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;**WARNING** from PFitter::DoFit() : the command EIGEN is not yet implemented.&quot;</span>;</div>
<div class="line"><a id="l00851" name="l00851"></a><span class="lineno"> 851</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l00852" name="l00852"></a><span class="lineno"> 852</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00853" name="l00853"></a><span class="lineno"> 853</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#a80f91790554f332c5872981e0f42f051">PMN_HESSE</a>:</div>
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno"> 854</span> <a class="code hl_variable" href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a> = <a class="code hl_function" href="classPFitter.html#a9eb9b1257133ddacf57332dbca711943">ExecuteHesse</a>();</div>
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno"> 855</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00856" name="l00856"></a><span class="lineno"> 856</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#a891449a81428ca1cec4c72b881bce07e">PMN_MACHINE_PRECISION</a>:</div>
<div class="line"><a id="l00857" name="l00857"></a><span class="lineno"> 857</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;**WARNING** from PFitter::DoFit() : the command MACHINE_PRECISION is not yet implemented.&quot;</span>;</div>
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno"> 858</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l00859" name="l00859"></a><span class="lineno"> 859</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00860" name="l00860"></a><span class="lineno"> 860</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#abf80698559774f14c5a64e0255859b00">PMN_MIGRAD</a>:</div>
<div class="line"><a id="l00861" name="l00861"></a><span class="lineno"> 861</span> <a class="code hl_variable" href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a> = <a class="code hl_function" href="classPFitter.html#ababcfdb8205db798c84562afe70bad91">ExecuteMigrad</a>();</div>
<div class="line"><a id="l00862" name="l00862"></a><span class="lineno"> 862</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00863" name="l00863"></a><span class="lineno"> 863</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#afe32f729102db1627ba4aa43b4636531">PMN_MINIMIZE</a>:</div>
<div class="line"><a id="l00864" name="l00864"></a><span class="lineno"> 864</span> <a class="code hl_variable" href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a> = <a class="code hl_function" href="classPFitter.html#ab6523d1625c35a57caed401f9348c5ff">ExecuteMinimize</a>();</div>
<div class="line"><a id="l00865" name="l00865"></a><span class="lineno"> 865</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00866" name="l00866"></a><span class="lineno"> 866</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#af7990c08a28c6be01ed48735791ac66c">PMN_MINOS</a>:</div>
<div class="line"><a id="l00867" name="l00867"></a><span class="lineno"> 867</span> <a class="code hl_variable" href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a> = <a class="code hl_function" href="classPFitter.html#aad0102694c267a1ddf497e6bc7cc9646">ExecuteMinos</a>();</div>
<div class="line"><a id="l00868" name="l00868"></a><span class="lineno"> 868</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00869" name="l00869"></a><span class="lineno"> 869</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#a6c3f51ebcfcd525981f6be99fe1df1bb">PMN_PLOT</a>:</div>
<div class="line"><a id="l00870" name="l00870"></a><span class="lineno"> 870</span> <a class="code hl_variable" href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a> = <a class="code hl_function" href="classPFitter.html#a08e3d9eb88730d1d4e9ab4b7d9a2b708">ExecutePlot</a>();</div>
<div class="line"><a id="l00871" name="l00871"></a><span class="lineno"> 871</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00872" name="l00872"></a><span class="lineno"> 872</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#a6401aefe8d42f78be658ae0d4ddc6775">PMN_RELEASE</a>:</div>
<div class="line"><a id="l00873" name="l00873"></a><span class="lineno"> 873</span> <a class="code hl_variable" href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a> = <a class="code hl_function" href="classPFitter.html#aab691691ca5d7cee66a16043c5c41940">ExecuteRelease</a>(<a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>[i].second);</div>
<div class="line"><a id="l00874" name="l00874"></a><span class="lineno"> 874</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00875" name="l00875"></a><span class="lineno"> 875</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#a6066a297aed119107782ea4912a253c7">PMN_RESTORE</a>:</div>
<div class="line"><a id="l00876" name="l00876"></a><span class="lineno"> 876</span> <a class="code hl_variable" href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a> = <a class="code hl_function" href="classPFitter.html#ac3094e6b657951d8d4a5ad934c2eb31a">ExecuteRestore</a>();</div>
<div class="line"><a id="l00877" name="l00877"></a><span class="lineno"> 877</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00878" name="l00878"></a><span class="lineno"> 878</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#aa295ec15a94c02d9fcb7cd98994fc15e">PMN_SAVE</a>:</div>
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno"> 879</span> <a class="code hl_variable" href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a> = <a class="code hl_function" href="classPFitter.html#a631cacca453cf66db5b944437cf507dd">ExecuteSave</a>(firstSave);</div>
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno"> 880</span> <span class="keywordflow">if</span> (firstSave)</div>
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno"> 881</span> firstSave = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno"> 882</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00883" name="l00883"></a><span class="lineno"> 883</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#af66254e929ec1010892d2fcec43af777">PMN_SCAN</a>:</div>
<div class="line"><a id="l00884" name="l00884"></a><span class="lineno"> 884</span> <a class="code hl_variable" href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a> = <a class="code hl_function" href="classPFitter.html#a5f91281f9274f4dfe192a89e5b8b1069">ExecuteScan</a>();</div>
<div class="line"><a id="l00885" name="l00885"></a><span class="lineno"> 885</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00886" name="l00886"></a><span class="lineno"> 886</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#accf1f2553e22ea13147fbb00f136826f">PMN_SECTOR</a>:</div>
<div class="line"><a id="l00887" name="l00887"></a><span class="lineno"> 887</span> <span class="comment">// nothing to be done here</span></div>
<div class="line"><a id="l00888" name="l00888"></a><span class="lineno"> 888</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00889" name="l00889"></a><span class="lineno"> 889</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#a46bbeb77bdccf11da647fdcbe4401a73">PMN_SIMPLEX</a>:</div>
<div class="line"><a id="l00890" name="l00890"></a><span class="lineno"> 890</span> <a class="code hl_variable" href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a> = <a class="code hl_function" href="classPFitter.html#a7a08f7f6e29868337846a4d5f984a693">ExecuteSimplex</a>();</div>
<div class="line"><a id="l00891" name="l00891"></a><span class="lineno"> 891</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00892" name="l00892"></a><span class="lineno"> 892</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#aa9c108ebf89a24f39ce8ff49cfaea139">PMN_USER_COVARIANCE</a>:</div>
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno"> 893</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;**WARNING** from PFitter::DoFit() : the command USER_COVARIANCE is not yet implemented.&quot;</span>;</div>
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno"> 894</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l00895" name="l00895"></a><span class="lineno"> 895</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00896" name="l00896"></a><span class="lineno"> 896</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#a531c09072b72af4f9d2073fad7f27737">PMN_USER_PARAM_STATE</a>:</div>
<div class="line"><a id="l00897" name="l00897"></a><span class="lineno"> 897</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;**WARNING** from PFitter::DoFit() : the command USER_PARAM_STATE is not yet implemented.&quot;</span>;</div>
<div class="line"><a id="l00898" name="l00898"></a><span class="lineno"> 898</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l00899" name="l00899"></a><span class="lineno"> 899</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00900" name="l00900"></a><span class="lineno"> 900</span> <span class="keywordflow">case</span> <a class="code hl_define" href="PFitter_8h.html#a65a2d9b52415732cc717a21582b1f114">PMN_PRINT</a>:</div>
<div class="line"><a id="l00901" name="l00901"></a><span class="lineno"> 901</span> <a class="code hl_variable" href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a> = <a class="code hl_function" href="classPFitter.html#a23f49efc107e75d189c2163aaffd406f">ExecutePrintLevel</a>(<a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>[i].second);</div>
<div class="line"><a id="l00902" name="l00902"></a><span class="lineno"> 902</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00903" name="l00903"></a><span class="lineno"> 903</span> <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00904" name="l00904"></a><span class="lineno"> 904</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;**PANIC ERROR**: PFitter::DoFit(): You should never have reached this point&quot;</span>;</div>
<div class="line"><a id="l00905" name="l00905"></a><span class="lineno"> 905</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l00906" name="l00906"></a><span class="lineno"> 906</span> exit(0);</div>
<div class="line"><a id="l00907" name="l00907"></a><span class="lineno"> 907</span> }</div>
<div class="line"><a id="l00908" name="l00908"></a><span class="lineno"> 908</span> </div>
<div class="line"><a id="l00909" name="l00909"></a><span class="lineno"> 909</span> <span class="comment">// check if command has been successful</span></div>
<div class="line"><a id="l00910" name="l00910"></a><span class="lineno"> 910</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a>)</div>
<div class="line"><a id="l00911" name="l00911"></a><span class="lineno"> 911</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00912" name="l00912"></a><span class="lineno"> 912</span> }</div>
<div class="line"><a id="l00913" name="l00913"></a><span class="lineno"> 913</span> </div>
<div class="line"><a id="l00914" name="l00914"></a><span class="lineno"> 914</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="classPFitter.html#a11e3f97aa99203a610016a12ecdf241d">IsValid</a>()) {</div>
<div class="line"><a id="l00915" name="l00915"></a><span class="lineno"> 915</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrStatistic()-&gt;fValid = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00916" name="l00916"></a><span class="lineno"> 916</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00917" name="l00917"></a><span class="lineno"> 917</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrStatistic()-&gt;fValid = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00918" name="l00918"></a><span class="lineno"> 918</span> }</div>
<div class="line"><a id="l00919" name="l00919"></a><span class="lineno"> 919</span> </div>
<div class="line"><a id="l00920" name="l00920"></a><span class="lineno"> 920</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00921" name="l00921"></a><span class="lineno"> 921</span>}</div>
</div>
<div class="line"><a id="l00922" name="l00922"></a><span class="lineno"> 922</span> </div>
<div class="line"><a id="l00923" name="l00923"></a><span class="lineno"> 923</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00924" name="l00924"></a><span class="lineno"> 924</span><span class="comment">// CheckCommands</span></div>
<div class="line"><a id="l00925" name="l00925"></a><span class="lineno"> 925</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen00953" data-start="{" data-end="}">
<div class="line"><a id="l00953" name="l00953"></a><span class="lineno"><a class="line" href="classPFitter.html#ac3961503e41b84dc8cc683ce274d2300"> 953</a></span>Bool_t <a class="code hl_function" href="classPFitter.html#ac3961503e41b84dc8cc683ce274d2300">PFitter::CheckCommands</a>()</div>
<div class="line"><a id="l00954" name="l00954"></a><span class="lineno"> 954</span>{</div>
<div class="line"><a id="l00955" name="l00955"></a><span class="lineno"> 955</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00956" name="l00956"></a><span class="lineno"> 956</span> </div>
<div class="line"><a id="l00957" name="l00957"></a><span class="lineno"> 957</span> <span class="comment">// check if chisq or log max likelihood fit</span></div>
<div class="line"><a id="l00958" name="l00958"></a><span class="lineno"> 958</span> <a class="code hl_variable" href="classPFitter.html#aec873931299b3bfab3b0d07d3f3cc719">fUseChi2</a> = <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrStatistic()-&gt;fChisq;</div>
<div class="line"><a id="l00959" name="l00959"></a><span class="lineno"> 959</span> </div>
<div class="line"><a id="l00960" name="l00960"></a><span class="lineno"> 960</span> <span class="comment">// walk through the msr-file COMMAND block</span></div>
<div class="line"><a id="l00961" name="l00961"></a><span class="lineno"> 961</span> <a class="code hl_typedef" href="PMusr_8h.html#a9b7b790670173027ad5fcafad3f04740">PIntPair</a> cmd;</div>
<div class="line"><a id="l00962" name="l00962"></a><span class="lineno"> 962</span> PMsrLines::iterator it;</div>
<div class="line"><a id="l00963" name="l00963"></a><span class="lineno"> 963</span> UInt_t cmdLineNo = 0;</div>
<div class="line"><a id="l00964" name="l00964"></a><span class="lineno"> 964</span> TString line;</div>
<div class="line"><a id="l00965" name="l00965"></a><span class="lineno"> 965</span> Ssiz_t pos;</div>
<div class="line"><a id="l00966" name="l00966"></a><span class="lineno"> 966</span> <span class="keywordflow">for</span> (it = <a class="code hl_variable" href="classPFitter.html#a7f894783312fb9a16e92b8c34141d734">fCmdLines</a>.begin(); it != <a class="code hl_variable" href="classPFitter.html#a7f894783312fb9a16e92b8c34141d734">fCmdLines</a>.end(); ++it) {</div>
<div class="line"><a id="l00967" name="l00967"></a><span class="lineno"> 967</span> <span class="keywordflow">if</span> (it == <a class="code hl_variable" href="classPFitter.html#a7f894783312fb9a16e92b8c34141d734">fCmdLines</a>.begin())</div>
<div class="line"><a id="l00968" name="l00968"></a><span class="lineno"> 968</span> cmdLineNo = 0;</div>
<div class="line"><a id="l00969" name="l00969"></a><span class="lineno"> 969</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l00970" name="l00970"></a><span class="lineno"> 970</span> cmdLineNo++;</div>
<div class="line"><a id="l00971" name="l00971"></a><span class="lineno"> 971</span> </div>
<div class="line"><a id="l00972" name="l00972"></a><span class="lineno"> 972</span> <span class="comment">// strip potential comments</span></div>
<div class="line"><a id="l00973" name="l00973"></a><span class="lineno"> 973</span> line = it-&gt;fLine;</div>
<div class="line"><a id="l00974" name="l00974"></a><span class="lineno"> 974</span> pos = line.First(<span class="charliteral">&#39;#&#39;</span>);</div>
<div class="line"><a id="l00975" name="l00975"></a><span class="lineno"> 975</span> <span class="keywordflow">if</span> (pos &gt; 0) <span class="comment">// comment present</span></div>
<div class="line"><a id="l00976" name="l00976"></a><span class="lineno"> 976</span> line.Remove(pos,line.Length()-pos);</div>
<div class="line"><a id="l00977" name="l00977"></a><span class="lineno"> 977</span> </div>
<div class="line"><a id="l00978" name="l00978"></a><span class="lineno"> 978</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;COMMANDS&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l00979" name="l00979"></a><span class="lineno"> 979</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00980" name="l00980"></a><span class="lineno"> 980</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;SET BATCH&quot;</span>, TString::kIgnoreCase)) { <span class="comment">// needed for backward compatibility</span></div>
<div class="line"><a id="l00981" name="l00981"></a><span class="lineno"> 981</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00982" name="l00982"></a><span class="lineno"> 982</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;END RETURN&quot;</span>, TString::kIgnoreCase)) { <span class="comment">// needed for backward compatibility</span></div>
<div class="line"><a id="l00983" name="l00983"></a><span class="lineno"> 983</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00984" name="l00984"></a><span class="lineno"> 984</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;CHI_SQUARE&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l00985" name="l00985"></a><span class="lineno"> 985</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00986" name="l00986"></a><span class="lineno"> 986</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;MAX_LIKELIHOOD&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l00987" name="l00987"></a><span class="lineno"> 987</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00988" name="l00988"></a><span class="lineno"> 988</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;SCALE_N0_BKG&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l00989" name="l00989"></a><span class="lineno"> 989</span> <span class="keywordflow">continue</span>;</div>
<div class="line"><a id="l00990" name="l00990"></a><span class="lineno"> 990</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;INTERACTIVE&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l00991" name="l00991"></a><span class="lineno"> 991</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#ab205523bdc162bd2e712622a4616ee36">PMN_INTERACTIVE</a>;</div>
<div class="line"><a id="l00992" name="l00992"></a><span class="lineno"> 992</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l00993" name="l00993"></a><span class="lineno"> 993</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l00994" name="l00994"></a><span class="lineno"> 994</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;CONTOURS&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l00995" name="l00995"></a><span class="lineno"> 995</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#a78d7796e1a23e08d16983145c8b16ea3">PMN_CONTOURS</a>;</div>
<div class="line"><a id="l00996" name="l00996"></a><span class="lineno"> 996</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l00997" name="l00997"></a><span class="lineno"> 997</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l00998" name="l00998"></a><span class="lineno"> 998</span> <span class="comment">// filter out possible parameters for scan</span></div>
<div class="line"><a id="l00999" name="l00999"></a><span class="lineno"> 999</span> TObjArray *tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01000" name="l01000"></a><span class="lineno"> 1000</span> TObjString *ostr;</div>
<div class="line"><a id="l01001" name="l01001"></a><span class="lineno"> 1001</span> TString str;</div>
<div class="line"><a id="l01002" name="l01002"></a><span class="lineno"> 1002</span> UInt_t ival;</div>
<div class="line"><a id="l01003" name="l01003"></a><span class="lineno"> 1003</span> </div>
<div class="line"><a id="l01004" name="l01004"></a><span class="lineno"> 1004</span> tokens = line.Tokenize(<span class="stringliteral">&quot;, \t&quot;</span>);</div>
<div class="line"><a id="l01005" name="l01005"></a><span class="lineno"> 1005</span> </div>
<div class="line"><a id="l01006" name="l01006"></a><span class="lineno"> 1006</span> <span class="keywordflow">for</span> (Int_t i=0; i&lt;tokens-&gt;GetEntries(); i++) {</div>
<div class="line"><a id="l01007" name="l01007"></a><span class="lineno"> 1007</span> ostr = <span class="keyword">dynamic_cast&lt;</span>TObjString*<span class="keyword">&gt;</span>(tokens-&gt;At(i));</div>
<div class="line"><a id="l01008" name="l01008"></a><span class="lineno"> 1008</span> str = ostr-&gt;GetString();</div>
<div class="line"><a id="l01009" name="l01009"></a><span class="lineno"> 1009</span> </div>
<div class="line"><a id="l01010" name="l01010"></a><span class="lineno"> 1010</span> <span class="keywordflow">if</span> ((i==1) || (i==2)) { <span class="comment">// parX / parY</span></div>
<div class="line"><a id="l01011" name="l01011"></a><span class="lineno"> 1011</span> <span class="comment">// check that token is a UInt_t</span></div>
<div class="line"><a id="l01012" name="l01012"></a><span class="lineno"> 1012</span> <span class="keywordflow">if</span> (!str.IsDigit()) {</div>
<div class="line"><a id="l01013" name="l01013"></a><span class="lineno"> 1013</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands: **ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01014" name="l01014"></a><span class="lineno"> 1014</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01015" name="l01015"></a><span class="lineno"> 1015</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; parameter number is not number!&quot;</span>;</div>
<div class="line"><a id="l01016" name="l01016"></a><span class="lineno"> 1016</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; command syntax for CONTOURS is: CONTOURS parameter-X parameter-Y [# of points]&quot;</span>;</div>
<div class="line"><a id="l01017" name="l01017"></a><span class="lineno"> 1017</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01018" name="l01018"></a><span class="lineno"> 1018</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01019" name="l01019"></a><span class="lineno"> 1019</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01020" name="l01020"></a><span class="lineno"> 1020</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01021" name="l01021"></a><span class="lineno"> 1021</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01022" name="l01022"></a><span class="lineno"> 1022</span> }</div>
<div class="line"><a id="l01023" name="l01023"></a><span class="lineno"> 1023</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01024" name="l01024"></a><span class="lineno"> 1024</span> }</div>
<div class="line"><a id="l01025" name="l01025"></a><span class="lineno"> 1025</span> ival = str.Atoi();</div>
<div class="line"><a id="l01026" name="l01026"></a><span class="lineno"> 1026</span> <span class="comment">// check that parameter is within range</span></div>
<div class="line"><a id="l01027" name="l01027"></a><span class="lineno"> 1027</span> <span class="keywordflow">if</span> ((ival &lt; 1) || (ival &gt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size())) {</div>
<div class="line"><a id="l01028" name="l01028"></a><span class="lineno"> 1028</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands: **ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01029" name="l01029"></a><span class="lineno"> 1029</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01030" name="l01030"></a><span class="lineno"> 1030</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; parameter number is out of range [1,&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size() &lt;&lt; <span class="stringliteral">&quot;]!&quot;</span>;</div>
<div class="line"><a id="l01031" name="l01031"></a><span class="lineno"> 1031</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; command syntax for CONTOURS is: CONTOURS parameter-X parameter-Y [# of points]&quot;</span>;</div>
<div class="line"><a id="l01032" name="l01032"></a><span class="lineno"> 1032</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01033" name="l01033"></a><span class="lineno"> 1033</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01034" name="l01034"></a><span class="lineno"> 1034</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01035" name="l01035"></a><span class="lineno"> 1035</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01036" name="l01036"></a><span class="lineno"> 1036</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01037" name="l01037"></a><span class="lineno"> 1037</span> }</div>
<div class="line"><a id="l01038" name="l01038"></a><span class="lineno"> 1038</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01039" name="l01039"></a><span class="lineno"> 1039</span> }</div>
<div class="line"><a id="l01040" name="l01040"></a><span class="lineno"> 1040</span> <span class="comment">// keep parameter</span></div>
<div class="line"><a id="l01041" name="l01041"></a><span class="lineno"> 1041</span> <a class="code hl_variable" href="classPFitter.html#a3561550a7d70378a1b36971333d0d7a5">fScanParameter</a>[i-1] = ival-1; <span class="comment">// internally parameter number starts at 0</span></div>
<div class="line"><a id="l01042" name="l01042"></a><span class="lineno"> 1042</span> <a class="code hl_variable" href="classPFitter.html#a691cf32e8aa08e70159450e3a3dc597b">fScanAll</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01043" name="l01043"></a><span class="lineno"> 1043</span> }</div>
<div class="line"><a id="l01044" name="l01044"></a><span class="lineno"> 1044</span> </div>
<div class="line"><a id="l01045" name="l01045"></a><span class="lineno"> 1045</span> <span class="keywordflow">if</span> (i==3) {</div>
<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"> 1046</span> <span class="comment">// check that token is a UInt_t</span></div>
<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"> 1047</span> <span class="keywordflow">if</span> (!str.IsDigit()) {</div>
<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"> 1048</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands: **ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"> 1049</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"> 1050</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; number of points is not number!&quot;</span>;</div>
<div class="line"><a id="l01051" name="l01051"></a><span class="lineno"> 1051</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; command syntax for CONTOURS is: CONTOURS parameter-X parameter-Y [# of points]&quot;</span>;</div>
<div class="line"><a id="l01052" name="l01052"></a><span class="lineno"> 1052</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01053" name="l01053"></a><span class="lineno"> 1053</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01054" name="l01054"></a><span class="lineno"> 1054</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01055" name="l01055"></a><span class="lineno"> 1055</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01056" name="l01056"></a><span class="lineno"> 1056</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01057" name="l01057"></a><span class="lineno"> 1057</span> }</div>
<div class="line"><a id="l01058" name="l01058"></a><span class="lineno"> 1058</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01059" name="l01059"></a><span class="lineno"> 1059</span> }</div>
<div class="line"><a id="l01060" name="l01060"></a><span class="lineno"> 1060</span> ival = str.Atoi();</div>
<div class="line"><a id="l01061" name="l01061"></a><span class="lineno"> 1061</span> <span class="keywordflow">if</span> ((ival &lt; 1) || (ival &gt; 100)) {</div>
<div class="line"><a id="l01062" name="l01062"></a><span class="lineno"> 1062</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands: **ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01063" name="l01063"></a><span class="lineno"> 1063</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01064" name="l01064"></a><span class="lineno"> 1064</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; number of scan points is out of range [1,100]!&quot;</span>;</div>
<div class="line"><a id="l01065" name="l01065"></a><span class="lineno"> 1065</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; command syntax for CONTOURS is: CONTOURS parameter-X parameter-Y [# of points]&quot;</span>;</div>
<div class="line"><a id="l01066" name="l01066"></a><span class="lineno"> 1066</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01067" name="l01067"></a><span class="lineno"> 1067</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01068" name="l01068"></a><span class="lineno"> 1068</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01069" name="l01069"></a><span class="lineno"> 1069</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01070" name="l01070"></a><span class="lineno"> 1070</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01071" name="l01071"></a><span class="lineno"> 1071</span> }</div>
<div class="line"><a id="l01072" name="l01072"></a><span class="lineno"> 1072</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01073" name="l01073"></a><span class="lineno"> 1073</span> }</div>
<div class="line"><a id="l01074" name="l01074"></a><span class="lineno"> 1074</span> <a class="code hl_variable" href="classPFitter.html#a0f965880a3bd8cb7489fedca61c45201">fScanNoPoints</a> = ival;</div>
<div class="line"><a id="l01075" name="l01075"></a><span class="lineno"> 1075</span> }</div>
<div class="line"><a id="l01076" name="l01076"></a><span class="lineno"> 1076</span> }</div>
<div class="line"><a id="l01077" name="l01077"></a><span class="lineno"> 1077</span> </div>
<div class="line"><a id="l01078" name="l01078"></a><span class="lineno"> 1078</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01079" name="l01079"></a><span class="lineno"> 1079</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01080" name="l01080"></a><span class="lineno"> 1080</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01081" name="l01081"></a><span class="lineno"> 1081</span> }</div>
<div class="line"><a id="l01082" name="l01082"></a><span class="lineno"> 1082</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;EIGEN&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01083" name="l01083"></a><span class="lineno"> 1083</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#a83004a981ff8126d2adb3fc71c5bf066">PMN_EIGEN</a>;</div>
<div class="line"><a id="l01084" name="l01084"></a><span class="lineno"> 1084</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01085" name="l01085"></a><span class="lineno"> 1085</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01086" name="l01086"></a><span class="lineno"> 1086</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;FIT_RANGE&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01087" name="l01087"></a><span class="lineno"> 1087</span> <span class="comment">// check the 5 options:</span></div>
<div class="line"><a id="l01088" name="l01088"></a><span class="lineno"> 1088</span> <span class="comment">// (i) FIT_RANGE RESET,</span></div>
<div class="line"><a id="l01089" name="l01089"></a><span class="lineno"> 1089</span> <span class="comment">// (ii) FIT_RANGE start end,</span></div>
<div class="line"><a id="l01090" name="l01090"></a><span class="lineno"> 1090</span> <span class="comment">// (iii) FIT_RANGE start1 end1 start2 end2 ... startN endN</span></div>
<div class="line"><a id="l01091" name="l01091"></a><span class="lineno"> 1091</span> <span class="comment">// (iv) FIT_RANGE fgb+n0 lgb-n1</span></div>
<div class="line"><a id="l01092" name="l01092"></a><span class="lineno"> 1092</span> <span class="comment">// (v) FIT_RANGE fgb+n00 lgb-n01 fgb+n10 lgb-n11 ... fgb+nN0 lgb-nN1</span></div>
<div class="line"><a id="l01093" name="l01093"></a><span class="lineno"> 1093</span> TObjArray *tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01094" name="l01094"></a><span class="lineno"> 1094</span> TObjString *ostr;</div>
<div class="line"><a id="l01095" name="l01095"></a><span class="lineno"> 1095</span> TString str;</div>
<div class="line"><a id="l01096" name="l01096"></a><span class="lineno"> 1096</span> </div>
<div class="line"><a id="l01097" name="l01097"></a><span class="lineno"> 1097</span> tokens = line.Tokenize(<span class="stringliteral">&quot;, \t&quot;</span>);</div>
<div class="line"><a id="l01098" name="l01098"></a><span class="lineno"> 1098</span> </div>
<div class="line"><a id="l01099" name="l01099"></a><span class="lineno"> 1099</span> <span class="keywordflow">if</span> (tokens-&gt;GetEntries() == 2) { <span class="comment">// should only be RESET</span></div>
<div class="line"><a id="l01100" name="l01100"></a><span class="lineno"> 1100</span> ostr = <span class="keyword">dynamic_cast&lt;</span>TObjString*<span class="keyword">&gt;</span>(tokens-&gt;At(1));</div>
<div class="line"><a id="l01101" name="l01101"></a><span class="lineno"> 1101</span> str = ostr-&gt;GetString();</div>
<div class="line"><a id="l01102" name="l01102"></a><span class="lineno"> 1102</span> <span class="keywordflow">if</span> (str.Contains(<span class="stringliteral">&quot;RESET&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01103" name="l01103"></a><span class="lineno"> 1103</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#a81d76653f453d9b1d2590ed0ccd02790">PMN_FIT_RANGE</a>;</div>
<div class="line"><a id="l01104" name="l01104"></a><span class="lineno"> 1104</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01105" name="l01105"></a><span class="lineno"> 1105</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01106" name="l01106"></a><span class="lineno"> 1106</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01107" name="l01107"></a><span class="lineno"> 1107</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands: **ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01108" name="l01108"></a><span class="lineno"> 1108</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01109" name="l01109"></a><span class="lineno"> 1109</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Syntax: FIT_RANGE RESET | FIT_RANGE start end | FIT_RANGE s1 e1 s2 e2 .. sN eN,&quot;</span>;</div>
<div class="line"><a id="l01110" name="l01110"></a><span class="lineno"> 1110</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; with N the number of runs in the msr-file.&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l01111" name="l01111"></a><span class="lineno"> 1111</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Found &quot;</span> &lt;&lt; str.Data() &lt;&lt; <span class="stringliteral">&quot;, instead of RESET&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l01112" name="l01112"></a><span class="lineno"> 1112</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01113" name="l01113"></a><span class="lineno"> 1113</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01114" name="l01114"></a><span class="lineno"> 1114</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01115" name="l01115"></a><span class="lineno"> 1115</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01116" name="l01116"></a><span class="lineno"> 1116</span> }</div>
<div class="line"><a id="l01117" name="l01117"></a><span class="lineno"> 1117</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01118" name="l01118"></a><span class="lineno"> 1118</span> }</div>
<div class="line"><a id="l01119" name="l01119"></a><span class="lineno"> 1119</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((tokens-&gt;GetEntries() &gt; 1) &amp;&amp; (<span class="keyword">static_cast&lt;</span>UInt_t<span class="keyword">&gt;</span>(tokens-&gt;GetEntries()) % 2) == 1) {</div>
<div class="line"><a id="l01120" name="l01120"></a><span class="lineno"> 1120</span> <span class="keywordflow">if</span> ((tokens-&gt;GetEntries() &gt; 3) &amp;&amp; ((<span class="keyword">static_cast&lt;</span>UInt_t<span class="keyword">&gt;</span>(tokens-&gt;GetEntries())-1)) != 2*<a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrRunList()-&gt;size()) {</div>
<div class="line"><a id="l01121" name="l01121"></a><span class="lineno"> 1121</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands: **ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01122" name="l01122"></a><span class="lineno"> 1122</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01123" name="l01123"></a><span class="lineno"> 1123</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Syntax: FIT_RANGE RESET | FIT_RANGE &lt;start&gt; &lt;end&gt; | FIT_RANGE &lt;s1&gt; &lt;e1&gt; &lt;s2&gt; &lt;e2&gt; .. &lt;sN&gt; &lt;eN&gt; |&quot;</span>;</div>
<div class="line"><a id="l01124" name="l01124"></a><span class="lineno"> 1124</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; FIT_RANGE fgb+&lt;n0&gt; lgb-&lt;n1&gt; | FIT_RANGE fgb+&lt;n00&gt; lgb-&lt;n01&gt; fgb+&lt;n10&gt; lgb-&lt;n11&gt; ... fgb+&lt;nN0&gt; lgb-&lt;nN1&gt;,&quot;</span>;</div>
<div class="line"><a id="l01125" name="l01125"></a><span class="lineno"> 1125</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; with N the number of runs in the msr-file.&quot;</span>;</div>
<div class="line"><a id="l01126" name="l01126"></a><span class="lineno"> 1126</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Found N=&quot;</span> &lt;&lt; (tokens-&gt;GetEntries()-1)/2 &lt;&lt; <span class="stringliteral">&quot;, # runs in msr-file=&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrRunList()-&gt;size() &lt;&lt; std::endl;</div>
<div class="line"><a id="l01127" name="l01127"></a><span class="lineno"> 1127</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01128" name="l01128"></a><span class="lineno"> 1128</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01129" name="l01129"></a><span class="lineno"> 1129</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01130" name="l01130"></a><span class="lineno"> 1130</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01131" name="l01131"></a><span class="lineno"> 1131</span> }</div>
<div class="line"><a id="l01132" name="l01132"></a><span class="lineno"> 1132</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01133" name="l01133"></a><span class="lineno"> 1133</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01134" name="l01134"></a><span class="lineno"> 1134</span> <span class="comment">// check that all range entries are numbers or fgb+n0 / lgb-n1</span></div>
<div class="line"><a id="l01135" name="l01135"></a><span class="lineno"> 1135</span> Bool_t ok = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01136" name="l01136"></a><span class="lineno"> 1136</span> <span class="keywordflow">for</span> (Int_t n=1; n&lt;tokens-&gt;GetEntries(); n++) {</div>
<div class="line"><a id="l01137" name="l01137"></a><span class="lineno"> 1137</span> ostr = <span class="keyword">dynamic_cast&lt;</span>TObjString*<span class="keyword">&gt;</span>(tokens-&gt;At(n));</div>
<div class="line"><a id="l01138" name="l01138"></a><span class="lineno"> 1138</span> str = ostr-&gt;GetString();</div>
<div class="line"><a id="l01139" name="l01139"></a><span class="lineno"> 1139</span> <span class="keywordflow">if</span> (!str.IsFloat()) {</div>
<div class="line"><a id="l01140" name="l01140"></a><span class="lineno"> 1140</span> <span class="keywordflow">if</span> ((n%2 == 1) &amp;&amp; (!str.Contains(<span class="stringliteral">&quot;fgb&quot;</span>, TString::kIgnoreCase)))</div>
<div class="line"><a id="l01141" name="l01141"></a><span class="lineno"> 1141</span> ok = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01142" name="l01142"></a><span class="lineno"> 1142</span> <span class="keywordflow">if</span> ((n%2 == 0) &amp;&amp; (!str.Contains(<span class="stringliteral">&quot;lgb&quot;</span>, TString::kIgnoreCase)))</div>
<div class="line"><a id="l01143" name="l01143"></a><span class="lineno"> 1143</span> ok = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01144" name="l01144"></a><span class="lineno"> 1144</span> }</div>
<div class="line"><a id="l01145" name="l01145"></a><span class="lineno"> 1145</span> <span class="keywordflow">if</span> (!ok)</div>
<div class="line"><a id="l01146" name="l01146"></a><span class="lineno"> 1146</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01147" name="l01147"></a><span class="lineno"> 1147</span> }</div>
<div class="line"><a id="l01148" name="l01148"></a><span class="lineno"> 1148</span> </div>
<div class="line"><a id="l01149" name="l01149"></a><span class="lineno"> 1149</span> <span class="keywordflow">if</span> (ok) { <span class="comment">// everything is fine</span></div>
<div class="line"><a id="l01150" name="l01150"></a><span class="lineno"> 1150</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#a81d76653f453d9b1d2590ed0ccd02790">PMN_FIT_RANGE</a>;</div>
<div class="line"><a id="l01151" name="l01151"></a><span class="lineno"> 1151</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01152" name="l01152"></a><span class="lineno"> 1152</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01153" name="l01153"></a><span class="lineno"> 1153</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01154" name="l01154"></a><span class="lineno"> 1154</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands: **ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01155" name="l01155"></a><span class="lineno"> 1155</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01156" name="l01156"></a><span class="lineno"> 1156</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Syntax: FIT_RANGE RESET | FIT_RANGE &lt;start&gt; &lt;end&gt; | FIT_RANGE &lt;s1&gt; &lt;e1&gt; &lt;s2&gt; &lt;e2&gt; .. &lt;sN&gt; &lt;eN&gt; |&quot;</span>;</div>
<div class="line"><a id="l01157" name="l01157"></a><span class="lineno"> 1157</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; FIT_RANGE fgb+&lt;n0&gt; lgb-&lt;n1&gt; | FIT_RANGE fgb+&lt;n00&gt; lgb-&lt;n01&gt; fgb+&lt;n10&gt; lgb-&lt;n11&gt; ... fgb+&lt;nN0&gt; lgb-&lt;nN1&gt;,&quot;</span>;</div>
<div class="line"><a id="l01158" name="l01158"></a><span class="lineno"> 1158</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; with N the number of runs in the msr-file.&quot;</span>;</div>
<div class="line"><a id="l01159" name="l01159"></a><span class="lineno"> 1159</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Found token &#39;&quot;</span> &lt;&lt; str.Data() &lt;&lt; <span class="stringliteral">&quot;&#39;, which is not a floating point number.&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l01160" name="l01160"></a><span class="lineno"> 1160</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01161" name="l01161"></a><span class="lineno"> 1161</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01162" name="l01162"></a><span class="lineno"> 1162</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01163" name="l01163"></a><span class="lineno"> 1163</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01164" name="l01164"></a><span class="lineno"> 1164</span> }</div>
<div class="line"><a id="l01165" name="l01165"></a><span class="lineno"> 1165</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01166" name="l01166"></a><span class="lineno"> 1166</span> }</div>
<div class="line"><a id="l01167" name="l01167"></a><span class="lineno"> 1167</span> }</div>
<div class="line"><a id="l01168" name="l01168"></a><span class="lineno"> 1168</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01169" name="l01169"></a><span class="lineno"> 1169</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands: **ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01170" name="l01170"></a><span class="lineno"> 1170</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01171" name="l01171"></a><span class="lineno"> 1171</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Syntax: FIT_RANGE RESET | FIT_RANGE &lt;start&gt; &lt;end&gt; | FIT_RANGE &lt;s1&gt; &lt;e1&gt; &lt;s2&gt; &lt;e2&gt; .. &lt;sN&gt; &lt;eN&gt; |&quot;</span>;</div>
<div class="line"><a id="l01172" name="l01172"></a><span class="lineno"> 1172</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; FIT_RANGE fgb+&lt;n0&gt; lgb-&lt;n1&gt; | FIT_RANGE fgb+&lt;n00&gt; lgb-&lt;n01&gt; fgb+&lt;n10&gt; lgb-&lt;n11&gt; ... fgb+&lt;nN0&gt; lgb-&lt;nN1&gt;,&quot;</span>;</div>
<div class="line"><a id="l01173" name="l01173"></a><span class="lineno"> 1173</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; with N the number of runs in the msr-file.&quot;</span>;</div>
<div class="line"><a id="l01174" name="l01174"></a><span class="lineno"> 1174</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01175" name="l01175"></a><span class="lineno"> 1175</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01176" name="l01176"></a><span class="lineno"> 1176</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01177" name="l01177"></a><span class="lineno"> 1177</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01178" name="l01178"></a><span class="lineno"> 1178</span> }</div>
<div class="line"><a id="l01179" name="l01179"></a><span class="lineno"> 1179</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01180" name="l01180"></a><span class="lineno"> 1180</span> }</div>
<div class="line"><a id="l01181" name="l01181"></a><span class="lineno"> 1181</span> </div>
<div class="line"><a id="l01182" name="l01182"></a><span class="lineno"> 1182</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01183" name="l01183"></a><span class="lineno"> 1183</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01184" name="l01184"></a><span class="lineno"> 1184</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01185" name="l01185"></a><span class="lineno"> 1185</span> }</div>
<div class="line"><a id="l01186" name="l01186"></a><span class="lineno"> 1186</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;FIX&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01187" name="l01187"></a><span class="lineno"> 1187</span> <span class="comment">// check if the given set of parameters (number or names) is present</span></div>
<div class="line"><a id="l01188" name="l01188"></a><span class="lineno"> 1188</span> TObjArray *tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01189" name="l01189"></a><span class="lineno"> 1189</span> TObjString *ostr;</div>
<div class="line"><a id="l01190" name="l01190"></a><span class="lineno"> 1190</span> TString str;</div>
<div class="line"><a id="l01191" name="l01191"></a><span class="lineno"> 1191</span> UInt_t ival;</div>
<div class="line"><a id="l01192" name="l01192"></a><span class="lineno"> 1192</span> </div>
<div class="line"><a id="l01193" name="l01193"></a><span class="lineno"> 1193</span> tokens = line.Tokenize(<span class="stringliteral">&quot;, \t&quot;</span>);</div>
<div class="line"><a id="l01194" name="l01194"></a><span class="lineno"> 1194</span> </div>
<div class="line"><a id="l01195" name="l01195"></a><span class="lineno"> 1195</span> <span class="keywordflow">for</span> (Int_t i=1; i&lt;tokens-&gt;GetEntries(); i++) {</div>
<div class="line"><a id="l01196" name="l01196"></a><span class="lineno"> 1196</span> ostr = <span class="keyword">dynamic_cast&lt;</span>TObjString*<span class="keyword">&gt;</span>(tokens-&gt;At(i));</div>
<div class="line"><a id="l01197" name="l01197"></a><span class="lineno"> 1197</span> str = ostr-&gt;GetString();</div>
<div class="line"><a id="l01198" name="l01198"></a><span class="lineno"> 1198</span> </div>
<div class="line"><a id="l01199" name="l01199"></a><span class="lineno"> 1199</span> <span class="keywordflow">if</span> (str.IsDigit()) { <span class="comment">// token might be a parameter number</span></div>
<div class="line"><a id="l01200" name="l01200"></a><span class="lineno"> 1200</span> ival = str.Atoi();</div>
<div class="line"><a id="l01201" name="l01201"></a><span class="lineno"> 1201</span> <span class="comment">// check that ival is in the parameter list</span></div>
<div class="line"><a id="l01202" name="l01202"></a><span class="lineno"> 1202</span> <span class="keywordflow">if</span> (ival &gt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size()) {</div>
<div class="line"><a id="l01203" name="l01203"></a><span class="lineno"> 1203</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands: **ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01204" name="l01204"></a><span class="lineno"> 1204</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01205" name="l01205"></a><span class="lineno"> 1205</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Parameter &quot;</span> &lt;&lt; ival &lt;&lt; <span class="stringliteral">&quot; is out of the Parameter Range [1,&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size() &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div>
<div class="line"><a id="l01206" name="l01206"></a><span class="lineno"> 1206</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01207" name="l01207"></a><span class="lineno"> 1207</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01208" name="l01208"></a><span class="lineno"> 1208</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01209" name="l01209"></a><span class="lineno"> 1209</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01210" name="l01210"></a><span class="lineno"> 1210</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01211" name="l01211"></a><span class="lineno"> 1211</span> }</div>
<div class="line"><a id="l01212" name="l01212"></a><span class="lineno"> 1212</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01213" name="l01213"></a><span class="lineno"> 1213</span> }</div>
<div class="line"><a id="l01214" name="l01214"></a><span class="lineno"> 1214</span> } <span class="keywordflow">else</span> { <span class="comment">// token might be a parameter name</span></div>
<div class="line"><a id="l01215" name="l01215"></a><span class="lineno"> 1215</span> <span class="comment">// check if token is present as parameter name</span></div>
<div class="line"><a id="l01216" name="l01216"></a><span class="lineno"> 1216</span> Bool_t found = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01217" name="l01217"></a><span class="lineno"> 1217</span> <span class="keywordflow">for</span> (UInt_t j=0; j&lt;<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); j++) {</div>
<div class="line"><a id="l01218" name="l01218"></a><span class="lineno"> 1218</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[j].fName.CompareTo(str, TString::kIgnoreCase) == 0) { <span class="comment">// found</span></div>
<div class="line"><a id="l01219" name="l01219"></a><span class="lineno"> 1219</span> found = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01220" name="l01220"></a><span class="lineno"> 1220</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01221" name="l01221"></a><span class="lineno"> 1221</span> }</div>
<div class="line"><a id="l01222" name="l01222"></a><span class="lineno"> 1222</span> }</div>
<div class="line"><a id="l01223" name="l01223"></a><span class="lineno"> 1223</span> <span class="keywordflow">if</span> (!found) {</div>
<div class="line"><a id="l01224" name="l01224"></a><span class="lineno"> 1224</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands: **ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01225" name="l01225"></a><span class="lineno"> 1225</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01226" name="l01226"></a><span class="lineno"> 1226</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Parameter &#39;&quot;</span> &lt;&lt; str.Data() &lt;&lt; <span class="stringliteral">&quot;&#39; is NOT present as a parameter name&quot;</span>;</div>
<div class="line"><a id="l01227" name="l01227"></a><span class="lineno"> 1227</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01228" name="l01228"></a><span class="lineno"> 1228</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01229" name="l01229"></a><span class="lineno"> 1229</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01230" name="l01230"></a><span class="lineno"> 1230</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01231" name="l01231"></a><span class="lineno"> 1231</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01232" name="l01232"></a><span class="lineno"> 1232</span> }</div>
<div class="line"><a id="l01233" name="l01233"></a><span class="lineno"> 1233</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01234" name="l01234"></a><span class="lineno"> 1234</span> }</div>
<div class="line"><a id="l01235" name="l01235"></a><span class="lineno"> 1235</span> }</div>
<div class="line"><a id="l01236" name="l01236"></a><span class="lineno"> 1236</span> }</div>
<div class="line"><a id="l01237" name="l01237"></a><span class="lineno"> 1237</span> </div>
<div class="line"><a id="l01238" name="l01238"></a><span class="lineno"> 1238</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01239" name="l01239"></a><span class="lineno"> 1239</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01240" name="l01240"></a><span class="lineno"> 1240</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01241" name="l01241"></a><span class="lineno"> 1241</span> }</div>
<div class="line"><a id="l01242" name="l01242"></a><span class="lineno"> 1242</span> </div>
<div class="line"><a id="l01243" name="l01243"></a><span class="lineno"> 1243</span> <span class="comment">// everything looks fine, feed the command list</span></div>
<div class="line"><a id="l01244" name="l01244"></a><span class="lineno"> 1244</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#a15c31fbdad5e90549d7f4ed93c3b0649">PMN_FIX</a>;</div>
<div class="line"><a id="l01245" name="l01245"></a><span class="lineno"> 1245</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01246" name="l01246"></a><span class="lineno"> 1246</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01247" name="l01247"></a><span class="lineno"> 1247</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;HESSE&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01248" name="l01248"></a><span class="lineno"> 1248</span> <a class="code hl_variable" href="classPFitter.html#a6f97d44fb0b291f7af9d01579c0e406c">fIsScanOnly</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01249" name="l01249"></a><span class="lineno"> 1249</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#a80f91790554f332c5872981e0f42f051">PMN_HESSE</a>;</div>
<div class="line"><a id="l01250" name="l01250"></a><span class="lineno"> 1250</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01251" name="l01251"></a><span class="lineno"> 1251</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01252" name="l01252"></a><span class="lineno"> 1252</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;MACHINE_PRECISION&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01253" name="l01253"></a><span class="lineno"> 1253</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#a891449a81428ca1cec4c72b881bce07e">PMN_MACHINE_PRECISION</a>;</div>
<div class="line"><a id="l01254" name="l01254"></a><span class="lineno"> 1254</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01255" name="l01255"></a><span class="lineno"> 1255</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01256" name="l01256"></a><span class="lineno"> 1256</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;MIGRAD&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01257" name="l01257"></a><span class="lineno"> 1257</span> <a class="code hl_variable" href="classPFitter.html#a6f97d44fb0b291f7af9d01579c0e406c">fIsScanOnly</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01258" name="l01258"></a><span class="lineno"> 1258</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#abf80698559774f14c5a64e0255859b00">PMN_MIGRAD</a>;</div>
<div class="line"><a id="l01259" name="l01259"></a><span class="lineno"> 1259</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01260" name="l01260"></a><span class="lineno"> 1260</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01261" name="l01261"></a><span class="lineno"> 1261</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;MINIMIZE&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01262" name="l01262"></a><span class="lineno"> 1262</span> <a class="code hl_variable" href="classPFitter.html#a6f97d44fb0b291f7af9d01579c0e406c">fIsScanOnly</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01263" name="l01263"></a><span class="lineno"> 1263</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#afe32f729102db1627ba4aa43b4636531">PMN_MINIMIZE</a>;</div>
<div class="line"><a id="l01264" name="l01264"></a><span class="lineno"> 1264</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01265" name="l01265"></a><span class="lineno"> 1265</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01266" name="l01266"></a><span class="lineno"> 1266</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;MINOS&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01267" name="l01267"></a><span class="lineno"> 1267</span> <a class="code hl_variable" href="classPFitter.html#a6f97d44fb0b291f7af9d01579c0e406c">fIsScanOnly</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01268" name="l01268"></a><span class="lineno"> 1268</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#af7990c08a28c6be01ed48735791ac66c">PMN_MINOS</a>;</div>
<div class="line"><a id="l01269" name="l01269"></a><span class="lineno"> 1269</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01270" name="l01270"></a><span class="lineno"> 1270</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01271" name="l01271"></a><span class="lineno"> 1271</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;MNPLOT&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01272" name="l01272"></a><span class="lineno"> 1272</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#a6c3f51ebcfcd525981f6be99fe1df1bb">PMN_PLOT</a>;</div>
<div class="line"><a id="l01273" name="l01273"></a><span class="lineno"> 1273</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01274" name="l01274"></a><span class="lineno"> 1274</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01275" name="l01275"></a><span class="lineno"> 1275</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;PRINT_LEVEL&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01276" name="l01276"></a><span class="lineno"> 1276</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#a65a2d9b52415732cc717a21582b1f114">PMN_PRINT</a>;</div>
<div class="line"><a id="l01277" name="l01277"></a><span class="lineno"> 1277</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01278" name="l01278"></a><span class="lineno"> 1278</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01279" name="l01279"></a><span class="lineno"> 1279</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;RELEASE&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01280" name="l01280"></a><span class="lineno"> 1280</span> <span class="comment">// check if the given set of parameters (number or names) is present</span></div>
<div class="line"><a id="l01281" name="l01281"></a><span class="lineno"> 1281</span> TObjArray *tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01282" name="l01282"></a><span class="lineno"> 1282</span> TObjString *ostr;</div>
<div class="line"><a id="l01283" name="l01283"></a><span class="lineno"> 1283</span> TString str;</div>
<div class="line"><a id="l01284" name="l01284"></a><span class="lineno"> 1284</span> UInt_t ival;</div>
<div class="line"><a id="l01285" name="l01285"></a><span class="lineno"> 1285</span> </div>
<div class="line"><a id="l01286" name="l01286"></a><span class="lineno"> 1286</span> tokens = line.Tokenize(<span class="stringliteral">&quot;, \t&quot;</span>);</div>
<div class="line"><a id="l01287" name="l01287"></a><span class="lineno"> 1287</span> </div>
<div class="line"><a id="l01288" name="l01288"></a><span class="lineno"> 1288</span> <span class="keywordflow">for</span> (Int_t i=1; i&lt;tokens-&gt;GetEntries(); i++) {</div>
<div class="line"><a id="l01289" name="l01289"></a><span class="lineno"> 1289</span> ostr = <span class="keyword">dynamic_cast&lt;</span>TObjString*<span class="keyword">&gt;</span>(tokens-&gt;At(i));</div>
<div class="line"><a id="l01290" name="l01290"></a><span class="lineno"> 1290</span> str = ostr-&gt;GetString();</div>
<div class="line"><a id="l01291" name="l01291"></a><span class="lineno"> 1291</span> </div>
<div class="line"><a id="l01292" name="l01292"></a><span class="lineno"> 1292</span> <span class="keywordflow">if</span> (str.IsDigit()) { <span class="comment">// token might be a parameter number</span></div>
<div class="line"><a id="l01293" name="l01293"></a><span class="lineno"> 1293</span> ival = str.Atoi();</div>
<div class="line"><a id="l01294" name="l01294"></a><span class="lineno"> 1294</span> <span class="comment">// check that ival is in the parameter list</span></div>
<div class="line"><a id="l01295" name="l01295"></a><span class="lineno"> 1295</span> <span class="keywordflow">if</span> (ival &gt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size()) {</div>
<div class="line"><a id="l01296" name="l01296"></a><span class="lineno"> 1296</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands: **ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01297" name="l01297"></a><span class="lineno"> 1297</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01298" name="l01298"></a><span class="lineno"> 1298</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Parameter &quot;</span> &lt;&lt; ival &lt;&lt; <span class="stringliteral">&quot; is out of the Parameter Range [1,&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size() &lt;&lt; <span class="stringliteral">&quot;]&quot;</span>;</div>
<div class="line"><a id="l01299" name="l01299"></a><span class="lineno"> 1299</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01300" name="l01300"></a><span class="lineno"> 1300</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01301" name="l01301"></a><span class="lineno"> 1301</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01302" name="l01302"></a><span class="lineno"> 1302</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01303" name="l01303"></a><span class="lineno"> 1303</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01304" name="l01304"></a><span class="lineno"> 1304</span> }</div>
<div class="line"><a id="l01305" name="l01305"></a><span class="lineno"> 1305</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01306" name="l01306"></a><span class="lineno"> 1306</span> }</div>
<div class="line"><a id="l01307" name="l01307"></a><span class="lineno"> 1307</span> } <span class="keywordflow">else</span> { <span class="comment">// token might be a parameter name</span></div>
<div class="line"><a id="l01308" name="l01308"></a><span class="lineno"> 1308</span> <span class="comment">// check if token is present as parameter name</span></div>
<div class="line"><a id="l01309" name="l01309"></a><span class="lineno"> 1309</span> Bool_t found = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01310" name="l01310"></a><span class="lineno"> 1310</span> <span class="keywordflow">for</span> (UInt_t j=0; j&lt;<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); j++) {</div>
<div class="line"><a id="l01311" name="l01311"></a><span class="lineno"> 1311</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[j].fName.CompareTo(str, TString::kIgnoreCase) == 0) { <span class="comment">// found</span></div>
<div class="line"><a id="l01312" name="l01312"></a><span class="lineno"> 1312</span> found = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01313" name="l01313"></a><span class="lineno"> 1313</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01314" name="l01314"></a><span class="lineno"> 1314</span> }</div>
<div class="line"><a id="l01315" name="l01315"></a><span class="lineno"> 1315</span> }</div>
<div class="line"><a id="l01316" name="l01316"></a><span class="lineno"> 1316</span> <span class="keywordflow">if</span> (!found) {</div>
<div class="line"><a id="l01317" name="l01317"></a><span class="lineno"> 1317</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands: **ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01318" name="l01318"></a><span class="lineno"> 1318</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01319" name="l01319"></a><span class="lineno"> 1319</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Parameter &#39;&quot;</span> &lt;&lt; str.Data() &lt;&lt; <span class="stringliteral">&quot;&#39; is NOT present as a parameter name&quot;</span>;</div>
<div class="line"><a id="l01320" name="l01320"></a><span class="lineno"> 1320</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01321" name="l01321"></a><span class="lineno"> 1321</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01322" name="l01322"></a><span class="lineno"> 1322</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01323" name="l01323"></a><span class="lineno"> 1323</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01324" name="l01324"></a><span class="lineno"> 1324</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01325" name="l01325"></a><span class="lineno"> 1325</span> }</div>
<div class="line"><a id="l01326" name="l01326"></a><span class="lineno"> 1326</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01327" name="l01327"></a><span class="lineno"> 1327</span> }</div>
<div class="line"><a id="l01328" name="l01328"></a><span class="lineno"> 1328</span> }</div>
<div class="line"><a id="l01329" name="l01329"></a><span class="lineno"> 1329</span> }</div>
<div class="line"><a id="l01330" name="l01330"></a><span class="lineno"> 1330</span> </div>
<div class="line"><a id="l01331" name="l01331"></a><span class="lineno"> 1331</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01332" name="l01332"></a><span class="lineno"> 1332</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01333" name="l01333"></a><span class="lineno"> 1333</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01334" name="l01334"></a><span class="lineno"> 1334</span> }</div>
<div class="line"><a id="l01335" name="l01335"></a><span class="lineno"> 1335</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#a6401aefe8d42f78be658ae0d4ddc6775">PMN_RELEASE</a>;</div>
<div class="line"><a id="l01336" name="l01336"></a><span class="lineno"> 1336</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01337" name="l01337"></a><span class="lineno"> 1337</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01338" name="l01338"></a><span class="lineno"> 1338</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;RESTORE&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01339" name="l01339"></a><span class="lineno"> 1339</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#a6066a297aed119107782ea4912a253c7">PMN_RESTORE</a>;</div>
<div class="line"><a id="l01340" name="l01340"></a><span class="lineno"> 1340</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01341" name="l01341"></a><span class="lineno"> 1341</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01342" name="l01342"></a><span class="lineno"> 1342</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;SAVE&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01343" name="l01343"></a><span class="lineno"> 1343</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#aa295ec15a94c02d9fcb7cd98994fc15e">PMN_SAVE</a>;</div>
<div class="line"><a id="l01344" name="l01344"></a><span class="lineno"> 1344</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01345" name="l01345"></a><span class="lineno"> 1345</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01346" name="l01346"></a><span class="lineno"> 1346</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;SCAN&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01347" name="l01347"></a><span class="lineno"> 1347</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#af66254e929ec1010892d2fcec43af777">PMN_SCAN</a>;</div>
<div class="line"><a id="l01348" name="l01348"></a><span class="lineno"> 1348</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01349" name="l01349"></a><span class="lineno"> 1349</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01350" name="l01350"></a><span class="lineno"> 1350</span> <span class="comment">// filter out possible parameters for scan</span></div>
<div class="line"><a id="l01351" name="l01351"></a><span class="lineno"> 1351</span> TObjArray *tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01352" name="l01352"></a><span class="lineno"> 1352</span> TObjString *ostr;</div>
<div class="line"><a id="l01353" name="l01353"></a><span class="lineno"> 1353</span> TString str;</div>
<div class="line"><a id="l01354" name="l01354"></a><span class="lineno"> 1354</span> UInt_t ival;</div>
<div class="line"><a id="l01355" name="l01355"></a><span class="lineno"> 1355</span> </div>
<div class="line"><a id="l01356" name="l01356"></a><span class="lineno"> 1356</span> tokens = line.Tokenize(<span class="stringliteral">&quot;, \t&quot;</span>);</div>
<div class="line"><a id="l01357" name="l01357"></a><span class="lineno"> 1357</span> </div>
<div class="line"><a id="l01358" name="l01358"></a><span class="lineno"> 1358</span> <span class="keywordflow">for</span> (Int_t i=0; i&lt;tokens-&gt;GetEntries(); i++) {</div>
<div class="line"><a id="l01359" name="l01359"></a><span class="lineno"> 1359</span> ostr = <span class="keyword">dynamic_cast&lt;</span>TObjString*<span class="keyword">&gt;</span>(tokens-&gt;At(i));</div>
<div class="line"><a id="l01360" name="l01360"></a><span class="lineno"> 1360</span> str = ostr-&gt;GetString();</div>
<div class="line"><a id="l01361" name="l01361"></a><span class="lineno"> 1361</span> <span class="keywordflow">if</span> (i==1) { <span class="comment">// get parameter number</span></div>
<div class="line"><a id="l01362" name="l01362"></a><span class="lineno"> 1362</span> <span class="comment">// check that token is a UInt_t</span></div>
<div class="line"><a id="l01363" name="l01363"></a><span class="lineno"> 1363</span> <span class="keywordflow">if</span> (!str.IsDigit()) {</div>
<div class="line"><a id="l01364" name="l01364"></a><span class="lineno"> 1364</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands: **ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01365" name="l01365"></a><span class="lineno"> 1365</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01366" name="l01366"></a><span class="lineno"> 1366</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; parameter number is not number!&quot;</span>;</div>
<div class="line"><a id="l01367" name="l01367"></a><span class="lineno"> 1367</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; command syntax for SCAN is: SCAN [parameter no [# of points [low high]]]&quot;</span>;</div>
<div class="line"><a id="l01368" name="l01368"></a><span class="lineno"> 1368</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01369" name="l01369"></a><span class="lineno"> 1369</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01370" name="l01370"></a><span class="lineno"> 1370</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01371" name="l01371"></a><span class="lineno"> 1371</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01372" name="l01372"></a><span class="lineno"> 1372</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01373" name="l01373"></a><span class="lineno"> 1373</span> }</div>
<div class="line"><a id="l01374" name="l01374"></a><span class="lineno"> 1374</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01375" name="l01375"></a><span class="lineno"> 1375</span> }</div>
<div class="line"><a id="l01376" name="l01376"></a><span class="lineno"> 1376</span> ival = str.Atoi();</div>
<div class="line"><a id="l01377" name="l01377"></a><span class="lineno"> 1377</span> <span class="comment">// check that parameter is within range</span></div>
<div class="line"><a id="l01378" name="l01378"></a><span class="lineno"> 1378</span> <span class="keywordflow">if</span> ((ival &lt; 1) || (ival &gt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size())) {</div>
<div class="line"><a id="l01379" name="l01379"></a><span class="lineno"> 1379</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands: **ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01380" name="l01380"></a><span class="lineno"> 1380</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01381" name="l01381"></a><span class="lineno"> 1381</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; parameter number is out of range [1,&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size() &lt;&lt; <span class="stringliteral">&quot;]!&quot;</span>;</div>
<div class="line"><a id="l01382" name="l01382"></a><span class="lineno"> 1382</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; command syntax for SCAN is: SCAN [parameter no [# of points [low high]]]&quot;</span>;</div>
<div class="line"><a id="l01383" name="l01383"></a><span class="lineno"> 1383</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01384" name="l01384"></a><span class="lineno"> 1384</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01385" name="l01385"></a><span class="lineno"> 1385</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01386" name="l01386"></a><span class="lineno"> 1386</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01387" name="l01387"></a><span class="lineno"> 1387</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01388" name="l01388"></a><span class="lineno"> 1388</span> }</div>
<div class="line"><a id="l01389" name="l01389"></a><span class="lineno"> 1389</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01390" name="l01390"></a><span class="lineno"> 1390</span> }</div>
<div class="line"><a id="l01391" name="l01391"></a><span class="lineno"> 1391</span> <span class="comment">// keep parameter</span></div>
<div class="line"><a id="l01392" name="l01392"></a><span class="lineno"> 1392</span> <a class="code hl_variable" href="classPFitter.html#a3561550a7d70378a1b36971333d0d7a5">fScanParameter</a>[0] = ival-1; <span class="comment">// internally parameter number starts at 0</span></div>
<div class="line"><a id="l01393" name="l01393"></a><span class="lineno"> 1393</span> <a class="code hl_variable" href="classPFitter.html#a691cf32e8aa08e70159450e3a3dc597b">fScanAll</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01394" name="l01394"></a><span class="lineno"> 1394</span> }</div>
<div class="line"><a id="l01395" name="l01395"></a><span class="lineno"> 1395</span> </div>
<div class="line"><a id="l01396" name="l01396"></a><span class="lineno"> 1396</span> <span class="keywordflow">if</span> (i==2) { <span class="comment">// get number of points</span></div>
<div class="line"><a id="l01397" name="l01397"></a><span class="lineno"> 1397</span> <span class="comment">// check that token is a UInt_t</span></div>
<div class="line"><a id="l01398" name="l01398"></a><span class="lineno"> 1398</span> <span class="keywordflow">if</span> (!str.IsDigit()) {</div>
<div class="line"><a id="l01399" name="l01399"></a><span class="lineno"> 1399</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands: **ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01400" name="l01400"></a><span class="lineno"> 1400</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01401" name="l01401"></a><span class="lineno"> 1401</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; number of points is not number!&quot;</span>;</div>
<div class="line"><a id="l01402" name="l01402"></a><span class="lineno"> 1402</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; command syntax for SCAN is: SCAN [parameter no [# of points [low high]]]&quot;</span>;</div>
<div class="line"><a id="l01403" name="l01403"></a><span class="lineno"> 1403</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01404" name="l01404"></a><span class="lineno"> 1404</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01405" name="l01405"></a><span class="lineno"> 1405</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01406" name="l01406"></a><span class="lineno"> 1406</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01407" name="l01407"></a><span class="lineno"> 1407</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01408" name="l01408"></a><span class="lineno"> 1408</span> }</div>
<div class="line"><a id="l01409" name="l01409"></a><span class="lineno"> 1409</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01410" name="l01410"></a><span class="lineno"> 1410</span> }</div>
<div class="line"><a id="l01411" name="l01411"></a><span class="lineno"> 1411</span> ival = str.Atoi();</div>
<div class="line"><a id="l01412" name="l01412"></a><span class="lineno"> 1412</span> <span class="keywordflow">if</span> ((ival &lt; 1) || (ival &gt; 100)) {</div>
<div class="line"><a id="l01413" name="l01413"></a><span class="lineno"> 1413</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands: **ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01414" name="l01414"></a><span class="lineno"> 1414</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01415" name="l01415"></a><span class="lineno"> 1415</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; number of scan points is out of range [1,100]!&quot;</span>;</div>
<div class="line"><a id="l01416" name="l01416"></a><span class="lineno"> 1416</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; command syntax for SCAN is: SCAN [parameter no [# of points [low high]]]&quot;</span>;</div>
<div class="line"><a id="l01417" name="l01417"></a><span class="lineno"> 1417</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01418" name="l01418"></a><span class="lineno"> 1418</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01419" name="l01419"></a><span class="lineno"> 1419</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01420" name="l01420"></a><span class="lineno"> 1420</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01421" name="l01421"></a><span class="lineno"> 1421</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01422" name="l01422"></a><span class="lineno"> 1422</span> }</div>
<div class="line"><a id="l01423" name="l01423"></a><span class="lineno"> 1423</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01424" name="l01424"></a><span class="lineno"> 1424</span> }</div>
<div class="line"><a id="l01425" name="l01425"></a><span class="lineno"> 1425</span> <a class="code hl_variable" href="classPFitter.html#a0f965880a3bd8cb7489fedca61c45201">fScanNoPoints</a> = ival;</div>
<div class="line"><a id="l01426" name="l01426"></a><span class="lineno"> 1426</span> }</div>
<div class="line"><a id="l01427" name="l01427"></a><span class="lineno"> 1427</span> </div>
<div class="line"><a id="l01428" name="l01428"></a><span class="lineno"> 1428</span> <span class="keywordflow">if</span> (i==3) { <span class="comment">// get low</span></div>
<div class="line"><a id="l01429" name="l01429"></a><span class="lineno"> 1429</span> <span class="comment">// check that token is a Double_t</span></div>
<div class="line"><a id="l01430" name="l01430"></a><span class="lineno"> 1430</span> <span class="keywordflow">if</span> (!str.IsFloat()) {</div>
<div class="line"><a id="l01431" name="l01431"></a><span class="lineno"> 1431</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands: **ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01432" name="l01432"></a><span class="lineno"> 1432</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01433" name="l01433"></a><span class="lineno"> 1433</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; low is not a floating point number!&quot;</span>;</div>
<div class="line"><a id="l01434" name="l01434"></a><span class="lineno"> 1434</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; command syntax for SCAN is: SCAN [parameter no [# of points [low high]]]&quot;</span>;</div>
<div class="line"><a id="l01435" name="l01435"></a><span class="lineno"> 1435</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01436" name="l01436"></a><span class="lineno"> 1436</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01437" name="l01437"></a><span class="lineno"> 1437</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01438" name="l01438"></a><span class="lineno"> 1438</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01439" name="l01439"></a><span class="lineno"> 1439</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01440" name="l01440"></a><span class="lineno"> 1440</span> }</div>
<div class="line"><a id="l01441" name="l01441"></a><span class="lineno"> 1441</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01442" name="l01442"></a><span class="lineno"> 1442</span> }</div>
<div class="line"><a id="l01443" name="l01443"></a><span class="lineno"> 1443</span> <a class="code hl_variable" href="classPFitter.html#a94301c0e357ffb912db6380e2dd1a76a">fScanLow</a> = str.Atof();</div>
<div class="line"><a id="l01444" name="l01444"></a><span class="lineno"> 1444</span> }</div>
<div class="line"><a id="l01445" name="l01445"></a><span class="lineno"> 1445</span> </div>
<div class="line"><a id="l01446" name="l01446"></a><span class="lineno"> 1446</span> <span class="keywordflow">if</span> (i==4) { <span class="comment">// get high</span></div>
<div class="line"><a id="l01447" name="l01447"></a><span class="lineno"> 1447</span> <span class="comment">// check that token is a Double_t</span></div>
<div class="line"><a id="l01448" name="l01448"></a><span class="lineno"> 1448</span> <span class="keywordflow">if</span> (!str.IsFloat()) {</div>
<div class="line"><a id="l01449" name="l01449"></a><span class="lineno"> 1449</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands: **ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01450" name="l01450"></a><span class="lineno"> 1450</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01451" name="l01451"></a><span class="lineno"> 1451</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; high is not a floating point number!&quot;</span>;</div>
<div class="line"><a id="l01452" name="l01452"></a><span class="lineno"> 1452</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; command syntax for SCAN is: SCAN [parameter no [# of points [low high]]]&quot;</span>;</div>
<div class="line"><a id="l01453" name="l01453"></a><span class="lineno"> 1453</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01454" name="l01454"></a><span class="lineno"> 1454</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01455" name="l01455"></a><span class="lineno"> 1455</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01456" name="l01456"></a><span class="lineno"> 1456</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01457" name="l01457"></a><span class="lineno"> 1457</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01458" name="l01458"></a><span class="lineno"> 1458</span> }</div>
<div class="line"><a id="l01459" name="l01459"></a><span class="lineno"> 1459</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01460" name="l01460"></a><span class="lineno"> 1460</span> }</div>
<div class="line"><a id="l01461" name="l01461"></a><span class="lineno"> 1461</span> <a class="code hl_variable" href="classPFitter.html#a15110762601d24e076e48c79ef056d16">fScanHigh</a> = str.Atof();</div>
<div class="line"><a id="l01462" name="l01462"></a><span class="lineno"> 1462</span> }</div>
<div class="line"><a id="l01463" name="l01463"></a><span class="lineno"> 1463</span> }</div>
<div class="line"><a id="l01464" name="l01464"></a><span class="lineno"> 1464</span> </div>
<div class="line"><a id="l01465" name="l01465"></a><span class="lineno"> 1465</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01466" name="l01466"></a><span class="lineno"> 1466</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01467" name="l01467"></a><span class="lineno"> 1467</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01468" name="l01468"></a><span class="lineno"> 1468</span> }</div>
<div class="line"><a id="l01469" name="l01469"></a><span class="lineno"> 1469</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;SIMPLEX&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01470" name="l01470"></a><span class="lineno"> 1470</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#a46bbeb77bdccf11da647fdcbe4401a73">PMN_SIMPLEX</a>;</div>
<div class="line"><a id="l01471" name="l01471"></a><span class="lineno"> 1471</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01472" name="l01472"></a><span class="lineno"> 1472</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01473" name="l01473"></a><span class="lineno"> 1473</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;STRATEGY&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01474" name="l01474"></a><span class="lineno"> 1474</span> TObjArray *tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01475" name="l01475"></a><span class="lineno"> 1475</span> TObjString *ostr;</div>
<div class="line"><a id="l01476" name="l01476"></a><span class="lineno"> 1476</span> TString str;</div>
<div class="line"><a id="l01477" name="l01477"></a><span class="lineno"> 1477</span> </div>
<div class="line"><a id="l01478" name="l01478"></a><span class="lineno"> 1478</span> tokens = line.Tokenize(<span class="stringliteral">&quot; \t&quot;</span>);</div>
<div class="line"><a id="l01479" name="l01479"></a><span class="lineno"> 1479</span> <span class="keywordflow">if</span> (tokens-&gt;GetEntries() == 2) {</div>
<div class="line"><a id="l01480" name="l01480"></a><span class="lineno"> 1480</span> ostr = <span class="keyword">dynamic_cast&lt;</span>TObjString*<span class="keyword">&gt;</span>(tokens-&gt;At(1));</div>
<div class="line"><a id="l01481" name="l01481"></a><span class="lineno"> 1481</span> str = ostr-&gt;GetString();</div>
<div class="line"><a id="l01482" name="l01482"></a><span class="lineno"> 1482</span> <span class="keywordflow">if</span> (str.CompareTo(<span class="stringliteral">&quot;0&quot;</span>) == 0) { <span class="comment">// low</span></div>
<div class="line"><a id="l01483" name="l01483"></a><span class="lineno"> 1483</span> <a class="code hl_variable" href="classPFitter.html#a14588efda750524a6dd0c85a13199919">fStrategy</a> = 0;</div>
<div class="line"><a id="l01484" name="l01484"></a><span class="lineno"> 1484</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (str.CompareTo(<span class="stringliteral">&quot;1&quot;</span>) == 0) { <span class="comment">// default</span></div>
<div class="line"><a id="l01485" name="l01485"></a><span class="lineno"> 1485</span> <a class="code hl_variable" href="classPFitter.html#a14588efda750524a6dd0c85a13199919">fStrategy</a> = 1;</div>
<div class="line"><a id="l01486" name="l01486"></a><span class="lineno"> 1486</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (str.CompareTo(<span class="stringliteral">&quot;2&quot;</span>) == 0) { <span class="comment">// high</span></div>
<div class="line"><a id="l01487" name="l01487"></a><span class="lineno"> 1487</span> <a class="code hl_variable" href="classPFitter.html#a14588efda750524a6dd0c85a13199919">fStrategy</a> = 2;</div>
<div class="line"><a id="l01488" name="l01488"></a><span class="lineno"> 1488</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (str.CompareTo(<span class="stringliteral">&quot;LOW&quot;</span>) == 0) { <span class="comment">// low</span></div>
<div class="line"><a id="l01489" name="l01489"></a><span class="lineno"> 1489</span> <a class="code hl_variable" href="classPFitter.html#a14588efda750524a6dd0c85a13199919">fStrategy</a> = 0;</div>
<div class="line"><a id="l01490" name="l01490"></a><span class="lineno"> 1490</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (str.CompareTo(<span class="stringliteral">&quot;DEFAULT&quot;</span>) == 0) { <span class="comment">// default</span></div>
<div class="line"><a id="l01491" name="l01491"></a><span class="lineno"> 1491</span> <a class="code hl_variable" href="classPFitter.html#a14588efda750524a6dd0c85a13199919">fStrategy</a> = 1;</div>
<div class="line"><a id="l01492" name="l01492"></a><span class="lineno"> 1492</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (str.CompareTo(<span class="stringliteral">&quot;HIGH&quot;</span>) == 0) { <span class="comment">// high</span></div>
<div class="line"><a id="l01493" name="l01493"></a><span class="lineno"> 1493</span> <a class="code hl_variable" href="classPFitter.html#a14588efda750524a6dd0c85a13199919">fStrategy</a> = 2;</div>
<div class="line"><a id="l01494" name="l01494"></a><span class="lineno"> 1494</span> }</div>
<div class="line"><a id="l01495" name="l01495"></a><span class="lineno"> 1495</span> }</div>
<div class="line"><a id="l01496" name="l01496"></a><span class="lineno"> 1496</span> </div>
<div class="line"><a id="l01497" name="l01497"></a><span class="lineno"> 1497</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01498" name="l01498"></a><span class="lineno"> 1498</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01499" name="l01499"></a><span class="lineno"> 1499</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01500" name="l01500"></a><span class="lineno"> 1500</span> }</div>
<div class="line"><a id="l01501" name="l01501"></a><span class="lineno"> 1501</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;USER_COVARIANCE&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01502" name="l01502"></a><span class="lineno"> 1502</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#aa9c108ebf89a24f39ce8ff49cfaea139">PMN_USER_COVARIANCE</a>;</div>
<div class="line"><a id="l01503" name="l01503"></a><span class="lineno"> 1503</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01504" name="l01504"></a><span class="lineno"> 1504</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01505" name="l01505"></a><span class="lineno"> 1505</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;USER_PARAM_STATE&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01506" name="l01506"></a><span class="lineno"> 1506</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#a531c09072b72af4f9d2073fad7f27737">PMN_USER_PARAM_STATE</a>;</div>
<div class="line"><a id="l01507" name="l01507"></a><span class="lineno"> 1507</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01508" name="l01508"></a><span class="lineno"> 1508</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01509" name="l01509"></a><span class="lineno"> 1509</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;SECTOR&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01510" name="l01510"></a><span class="lineno"> 1510</span> <a class="code hl_variable" href="classPFitter.html#a52f438ddd04f6d220d6777c589495c9c">fSectorFlag</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01511" name="l01511"></a><span class="lineno"> 1511</span> cmd.first = <a class="code hl_define" href="PFitter_8h.html#accf1f2553e22ea13147fbb00f136826f">PMN_SECTOR</a>;</div>
<div class="line"><a id="l01512" name="l01512"></a><span class="lineno"> 1512</span> cmd.second = cmdLineNo;</div>
<div class="line"><a id="l01513" name="l01513"></a><span class="lineno"> 1513</span> <a class="code hl_variable" href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">fCmdList</a>.push_back(cmd);</div>
<div class="line"><a id="l01514" name="l01514"></a><span class="lineno"> 1514</span> </div>
<div class="line"><a id="l01515" name="l01515"></a><span class="lineno"> 1515</span> <span class="comment">// check if the given sector arguments are valid time stamps, i.e. doubles and value &lt; lgb time stamp</span></div>
<div class="line"><a id="l01516" name="l01516"></a><span class="lineno"> 1516</span> TObjArray *tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01517" name="l01517"></a><span class="lineno"> 1517</span> TObjString *ostr;</div>
<div class="line"><a id="l01518" name="l01518"></a><span class="lineno"> 1518</span> TString str;</div>
<div class="line"><a id="l01519" name="l01519"></a><span class="lineno"> 1519</span> </div>
<div class="line"><a id="l01520" name="l01520"></a><span class="lineno"> 1520</span> tokens = line.Tokenize(<span class="stringliteral">&quot; ,\t&quot;</span>);</div>
<div class="line"><a id="l01521" name="l01521"></a><span class="lineno"> 1521</span> </div>
<div class="line"><a id="l01522" name="l01522"></a><span class="lineno"> 1522</span> <span class="keywordflow">if</span> (tokens-&gt;GetEntries() == 1) { <span class="comment">// no sector time stamps given -&gt; issue an error</span></div>
<div class="line"><a id="l01523" name="l01523"></a><span class="lineno"> 1523</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands(): **FATAL ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01524" name="l01524"></a><span class="lineno"> 1524</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01525" name="l01525"></a><span class="lineno"> 1525</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; At least one sector time stamp is expected.&quot;</span>;</div>
<div class="line"><a id="l01526" name="l01526"></a><span class="lineno"> 1526</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Will stop ...&quot;</span>;</div>
<div class="line"><a id="l01527" name="l01527"></a><span class="lineno"> 1527</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01528" name="l01528"></a><span class="lineno"> 1528</span> <span class="comment">// cleanup</span></div>
<div class="line"><a id="l01529" name="l01529"></a><span class="lineno"> 1529</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01530" name="l01530"></a><span class="lineno"> 1530</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01531" name="l01531"></a><span class="lineno"> 1531</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01532" name="l01532"></a><span class="lineno"> 1532</span> }</div>
<div class="line"><a id="l01533" name="l01533"></a><span class="lineno"> 1533</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01534" name="l01534"></a><span class="lineno"> 1534</span> <a class="code hl_variable" href="classPFitter.html#a52f438ddd04f6d220d6777c589495c9c">fSectorFlag</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01535" name="l01535"></a><span class="lineno"> 1535</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01536" name="l01536"></a><span class="lineno"> 1536</span> }</div>
<div class="line"><a id="l01537" name="l01537"></a><span class="lineno"> 1537</span> </div>
<div class="line"><a id="l01538" name="l01538"></a><span class="lineno"> 1538</span> Double_t dval;</div>
<div class="line"><a id="l01539" name="l01539"></a><span class="lineno"> 1539</span> <span class="keywordflow">for</span> (Int_t i=1; i&lt;tokens-&gt;GetEntries(); i++) {</div>
<div class="line"><a id="l01540" name="l01540"></a><span class="lineno"> 1540</span> <span class="comment">// keep time range of sector</span></div>
<div class="line"><a id="l01541" name="l01541"></a><span class="lineno"> 1541</span> <a class="code hl_class" href="classPSectorChisq.html">PSectorChisq</a> sec(<a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetNoOfRuns());</div>
<div class="line"><a id="l01542" name="l01542"></a><span class="lineno"> 1542</span> <span class="comment">// get parse tokens</span></div>
<div class="line"><a id="l01543" name="l01543"></a><span class="lineno"> 1543</span> ostr = <span class="keyword">dynamic_cast&lt;</span>TObjString*<span class="keyword">&gt;</span>(tokens-&gt;At(i));</div>
<div class="line"><a id="l01544" name="l01544"></a><span class="lineno"> 1544</span> str = ostr-&gt;GetString();</div>
<div class="line"><a id="l01545" name="l01545"></a><span class="lineno"> 1545</span> <span class="keywordflow">if</span> (str.IsFloat()) {</div>
<div class="line"><a id="l01546" name="l01546"></a><span class="lineno"> 1546</span> dval = str.Atof();</div>
<div class="line"><a id="l01547" name="l01547"></a><span class="lineno"> 1547</span> <span class="comment">// check that the sector time stamp is smaller than all lgb time stamps</span></div>
<div class="line"><a id="l01548" name="l01548"></a><span class="lineno"> 1548</span> <span class="keywordflow">for</span> (UInt_t j=0; j&lt;<a class="code hl_variable" href="classPFitter.html#a0d49c71cedfb96367f8167877beba69d">fOriginalFitRange</a>.size(); j++) {</div>
<div class="line"><a id="l01549" name="l01549"></a><span class="lineno"> 1549</span> <span class="keywordflow">if</span> (dval &gt; <a class="code hl_variable" href="classPFitter.html#a0d49c71cedfb96367f8167877beba69d">fOriginalFitRange</a>[j].second) {</div>
<div class="line"><a id="l01550" name="l01550"></a><span class="lineno"> 1550</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands(): **FATAL ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01551" name="l01551"></a><span class="lineno"> 1551</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01552" name="l01552"></a><span class="lineno"> 1552</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; The sector time stamp &quot;</span> &lt;&lt; dval &lt;&lt; <span class="stringliteral">&quot; is &gt; as the lgb time stamp (&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a0d49c71cedfb96367f8167877beba69d">fOriginalFitRange</a>[j].second &lt;&lt; <span class="stringliteral">&quot;) of run &quot;</span> &lt;&lt; j &lt;&lt; <span class="stringliteral">&quot;.&quot;</span>;</div>
<div class="line"><a id="l01553" name="l01553"></a><span class="lineno"> 1553</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Will stop ...&quot;</span>;</div>
<div class="line"><a id="l01554" name="l01554"></a><span class="lineno"> 1554</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01555" name="l01555"></a><span class="lineno"> 1555</span> <span class="comment">// cleanup</span></div>
<div class="line"><a id="l01556" name="l01556"></a><span class="lineno"> 1556</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01557" name="l01557"></a><span class="lineno"> 1557</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01558" name="l01558"></a><span class="lineno"> 1558</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01559" name="l01559"></a><span class="lineno"> 1559</span> }</div>
<div class="line"><a id="l01560" name="l01560"></a><span class="lineno"> 1560</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01561" name="l01561"></a><span class="lineno"> 1561</span> <a class="code hl_variable" href="classPFitter.html#a52f438ddd04f6d220d6777c589495c9c">fSectorFlag</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01562" name="l01562"></a><span class="lineno"> 1562</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a>;</div>
<div class="line"><a id="l01563" name="l01563"></a><span class="lineno"> 1563</span> }</div>
<div class="line"><a id="l01564" name="l01564"></a><span class="lineno"> 1564</span> sec.<a class="code hl_function" href="classPSectorChisq.html#aa5019c42355d0ebe4f88de794d8fb867">SetRunFirstTime</a>(<a class="code hl_variable" href="classPFitter.html#a0d49c71cedfb96367f8167877beba69d">fOriginalFitRange</a>[j].first, j); <span class="comment">// keep fgb time stamp for sector</span></div>
<div class="line"><a id="l01565" name="l01565"></a><span class="lineno"> 1565</span> }</div>
<div class="line"><a id="l01566" name="l01566"></a><span class="lineno"> 1566</span> sec.<a class="code hl_function" href="classPSectorChisq.html#a3f6125af7b2444dea05ac9c2dbe6c166">SetSectorTime</a>(dval);</div>
<div class="line"><a id="l01567" name="l01567"></a><span class="lineno"> 1567</span> <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>.push_back(sec);</div>
<div class="line"><a id="l01568" name="l01568"></a><span class="lineno"> 1568</span> } <span class="keywordflow">else</span> { <span class="comment">// sector element is NOT a float</span></div>
<div class="line"><a id="l01569" name="l01569"></a><span class="lineno"> 1569</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands(): **FATAL ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo;</div>
<div class="line"><a id="l01570" name="l01570"></a><span class="lineno"> 1570</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01571" name="l01571"></a><span class="lineno"> 1571</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; The sector time stamp &#39;&quot;</span> &lt;&lt; str &lt;&lt; <span class="stringliteral">&quot;&#39; is not a number.&quot;</span>;</div>
<div class="line"><a id="l01572" name="l01572"></a><span class="lineno"> 1572</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Will stop ...&quot;</span>;</div>
<div class="line"><a id="l01573" name="l01573"></a><span class="lineno"> 1573</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01574" name="l01574"></a><span class="lineno"> 1574</span> <span class="comment">// cleanup</span></div>
<div class="line"><a id="l01575" name="l01575"></a><span class="lineno"> 1575</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01576" name="l01576"></a><span class="lineno"> 1576</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01577" name="l01577"></a><span class="lineno"> 1577</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01578" name="l01578"></a><span class="lineno"> 1578</span> }</div>
<div class="line"><a id="l01579" name="l01579"></a><span class="lineno"> 1579</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01580" name="l01580"></a><span class="lineno"> 1580</span> <a class="code hl_variable" href="classPFitter.html#a52f438ddd04f6d220d6777c589495c9c">fSectorFlag</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01581" name="l01581"></a><span class="lineno"> 1581</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01582" name="l01582"></a><span class="lineno"> 1582</span> }</div>
<div class="line"><a id="l01583" name="l01583"></a><span class="lineno"> 1583</span> }</div>
<div class="line"><a id="l01584" name="l01584"></a><span class="lineno"> 1584</span> </div>
<div class="line"><a id="l01585" name="l01585"></a><span class="lineno"> 1585</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01586" name="l01586"></a><span class="lineno"> 1586</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01587" name="l01587"></a><span class="lineno"> 1587</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01588" name="l01588"></a><span class="lineno"> 1588</span> }</div>
<div class="line"><a id="l01589" name="l01589"></a><span class="lineno"> 1589</span> } <span class="keywordflow">else</span> { <span class="comment">// unkown command</span></div>
<div class="line"><a id="l01590" name="l01590"></a><span class="lineno"> 1590</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands(): **FATAL ERROR** in line &quot;</span> &lt;&lt; it-&gt;fLineNo &lt;&lt; <span class="stringliteral">&quot; an unkown command is found:&quot;</span>;</div>
<div class="line"><a id="l01591" name="l01591"></a><span class="lineno"> 1591</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; &quot;</span> &lt;&lt; line.Data();</div>
<div class="line"><a id="l01592" name="l01592"></a><span class="lineno"> 1592</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Will stop ...&quot;</span>;</div>
<div class="line"><a id="l01593" name="l01593"></a><span class="lineno"> 1593</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01594" name="l01594"></a><span class="lineno"> 1594</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01595" name="l01595"></a><span class="lineno"> 1595</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01596" name="l01596"></a><span class="lineno"> 1596</span> }</div>
<div class="line"><a id="l01597" name="l01597"></a><span class="lineno"> 1597</span> }</div>
<div class="line"><a id="l01598" name="l01598"></a><span class="lineno"> 1598</span> </div>
<div class="line"><a id="l01599" name="l01599"></a><span class="lineno"> 1599</span> <span class="comment">// Check that in case release/restore is present, that it is followed by a minimizer before minos is called.</span></div>
<div class="line"><a id="l01600" name="l01600"></a><span class="lineno"> 1600</span> <span class="comment">// If this is not the case, place a warning</span></div>
<div class="line"><a id="l01601" name="l01601"></a><span class="lineno"> 1601</span> Bool_t fixFlag = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01602" name="l01602"></a><span class="lineno"> 1602</span> Bool_t releaseFlag = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01603" name="l01603"></a><span class="lineno"> 1603</span> Bool_t minimizerFlag = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01604" name="l01604"></a><span class="lineno"> 1604</span> <span class="keywordflow">for</span> (it = <a class="code hl_variable" href="classPFitter.html#a7f894783312fb9a16e92b8c34141d734">fCmdLines</a>.begin(); it != <a class="code hl_variable" href="classPFitter.html#a7f894783312fb9a16e92b8c34141d734">fCmdLines</a>.end(); ++it) {</div>
<div class="line"><a id="l01605" name="l01605"></a><span class="lineno"> 1605</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;FIX&quot;</span>, TString::kIgnoreCase))</div>
<div class="line"><a id="l01606" name="l01606"></a><span class="lineno"> 1606</span> fixFlag = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01607" name="l01607"></a><span class="lineno"> 1607</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;RELEASE&quot;</span>, TString::kIgnoreCase) ||</div>
<div class="line"><a id="l01608" name="l01608"></a><span class="lineno"> 1608</span> line.Contains(<span class="stringliteral">&quot;RESTORE&quot;</span>, TString::kIgnoreCase))</div>
<div class="line"><a id="l01609" name="l01609"></a><span class="lineno"> 1609</span> releaseFlag = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01610" name="l01610"></a><span class="lineno"> 1610</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;MINIMIZE&quot;</span>, TString::kIgnoreCase) ||</div>
<div class="line"><a id="l01611" name="l01611"></a><span class="lineno"> 1611</span> line.Contains(<span class="stringliteral">&quot;MIGRAD&quot;</span>, TString::kIgnoreCase) ||</div>
<div class="line"><a id="l01612" name="l01612"></a><span class="lineno"> 1612</span> line.Contains(<span class="stringliteral">&quot;SIMPLEX&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01613" name="l01613"></a><span class="lineno"> 1613</span> <span class="keywordflow">if</span> (releaseFlag)</div>
<div class="line"><a id="l01614" name="l01614"></a><span class="lineno"> 1614</span> minimizerFlag = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01615" name="l01615"></a><span class="lineno"> 1615</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (line.Contains(<span class="stringliteral">&quot;MINOS&quot;</span>, TString::kIgnoreCase)) {</div>
<div class="line"><a id="l01616" name="l01616"></a><span class="lineno"> 1616</span> <span class="keywordflow">if</span> (fixFlag &amp;&amp; releaseFlag &amp;&amp; !minimizerFlag) {</div>
<div class="line"><a id="l01617" name="l01617"></a><span class="lineno"> 1617</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::CheckCommands(): **WARNING** RELEASE/RESTORE command present&quot;</span>;</div>
<div class="line"><a id="l01618" name="l01618"></a><span class="lineno"> 1618</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; without minimizer command (MINIMIZE/MIGRAD/SIMPLEX) between&quot;</span>;</div>
<div class="line"><a id="l01619" name="l01619"></a><span class="lineno"> 1619</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; RELEASE/RESTORE and MINOS. Behaviour might be different to the&quot;</span>;</div>
<div class="line"><a id="l01620" name="l01620"></a><span class="lineno"> 1620</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; expectation of the user ?!?&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l01621" name="l01621"></a><span class="lineno"> 1621</span> }</div>
<div class="line"><a id="l01622" name="l01622"></a><span class="lineno"> 1622</span> fixFlag = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01623" name="l01623"></a><span class="lineno"> 1623</span> releaseFlag = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01624" name="l01624"></a><span class="lineno"> 1624</span> minimizerFlag = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01625" name="l01625"></a><span class="lineno"> 1625</span> }</div>
<div class="line"><a id="l01626" name="l01626"></a><span class="lineno"> 1626</span> }</div>
<div class="line"><a id="l01627" name="l01627"></a><span class="lineno"> 1627</span> </div>
<div class="line"><a id="l01628" name="l01628"></a><span class="lineno"> 1628</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a>;</div>
<div class="line"><a id="l01629" name="l01629"></a><span class="lineno"> 1629</span>}</div>
</div>
<div class="line"><a id="l01630" name="l01630"></a><span class="lineno"> 1630</span> </div>
<div class="line"><a id="l01631" name="l01631"></a><span class="lineno"> 1631</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l01632" name="l01632"></a><span class="lineno"> 1632</span><span class="comment">// SetParameters</span></div>
<div class="line"><a id="l01633" name="l01633"></a><span class="lineno"> 1633</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen01640" data-start="{" data-end="}">
<div class="line"><a id="l01640" name="l01640"></a><span class="lineno"><a class="line" href="classPFitter.html#a822fe28451f360fcda2aa7a334a63b16"> 1640</a></span>Bool_t <a class="code hl_function" href="classPFitter.html#a822fe28451f360fcda2aa7a334a63b16">PFitter::SetParameters</a>()</div>
<div class="line"><a id="l01641" name="l01641"></a><span class="lineno"> 1641</span>{</div>
<div class="line"><a id="l01642" name="l01642"></a><span class="lineno"> 1642</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); i++) {</div>
<div class="line"><a id="l01643" name="l01643"></a><span class="lineno"> 1643</span> <span class="comment">// check if parameter is fixed</span></div>
<div class="line"><a id="l01644" name="l01644"></a><span class="lineno"> 1644</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fStep == 0.0) { <span class="comment">// add fixed parameter</span></div>
<div class="line"><a id="l01645" name="l01645"></a><span class="lineno"> 1645</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Add(<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fName.Data(), <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fValue);</div>
<div class="line"><a id="l01646" name="l01646"></a><span class="lineno"> 1646</span> } <span class="keywordflow">else</span> { <span class="comment">// add free parameter</span></div>
<div class="line"><a id="l01647" name="l01647"></a><span class="lineno"> 1647</span> <span class="comment">// check if boundaries are given</span></div>
<div class="line"><a id="l01648" name="l01648"></a><span class="lineno"> 1648</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fNoOfParams &gt; 5) { <span class="comment">// boundaries given</span></div>
<div class="line"><a id="l01649" name="l01649"></a><span class="lineno"> 1649</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fLowerBoundaryPresent &amp;&amp; </div>
<div class="line"><a id="l01650" name="l01650"></a><span class="lineno"> 1650</span> <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fUpperBoundaryPresent) { <span class="comment">// upper and lower boundaries given</span></div>
<div class="line"><a id="l01651" name="l01651"></a><span class="lineno"> 1651</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Add(<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fName.Data(), <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fValue, <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fStep,</div>
<div class="line"><a id="l01652" name="l01652"></a><span class="lineno"> 1652</span> <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fLowerBoundary, <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fUpperBoundary);</div>
<div class="line"><a id="l01653" name="l01653"></a><span class="lineno"> 1653</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fLowerBoundaryPresent &amp;&amp; </div>
<div class="line"><a id="l01654" name="l01654"></a><span class="lineno"> 1654</span> !<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fUpperBoundaryPresent) { <span class="comment">// lower boundary limited</span></div>
<div class="line"><a id="l01655" name="l01655"></a><span class="lineno"> 1655</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Add(<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fName.Data(), <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fValue, <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fStep);</div>
<div class="line"><a id="l01656" name="l01656"></a><span class="lineno"> 1656</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.SetLowerLimit(<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fName.Data(), <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fLowerBoundary);</div>
<div class="line"><a id="l01657" name="l01657"></a><span class="lineno"> 1657</span> } <span class="keywordflow">else</span> { <span class="comment">// upper boundary limited</span></div>
<div class="line"><a id="l01658" name="l01658"></a><span class="lineno"> 1658</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Add(<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fName.Data(), <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fValue, <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fStep);</div>
<div class="line"><a id="l01659" name="l01659"></a><span class="lineno"> 1659</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.SetUpperLimit(<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fName.Data(), <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fUpperBoundary);</div>
<div class="line"><a id="l01660" name="l01660"></a><span class="lineno"> 1660</span> }</div>
<div class="line"><a id="l01661" name="l01661"></a><span class="lineno"> 1661</span> } <span class="keywordflow">else</span> { <span class="comment">// no boundaries given</span></div>
<div class="line"><a id="l01662" name="l01662"></a><span class="lineno"> 1662</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Add(<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fName.Data(), <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fValue, <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fStep);</div>
<div class="line"><a id="l01663" name="l01663"></a><span class="lineno"> 1663</span> }</div>
<div class="line"><a id="l01664" name="l01664"></a><span class="lineno"> 1664</span> }</div>
<div class="line"><a id="l01665" name="l01665"></a><span class="lineno"> 1665</span> }</div>
<div class="line"><a id="l01666" name="l01666"></a><span class="lineno"> 1666</span> </div>
<div class="line"><a id="l01667" name="l01667"></a><span class="lineno"> 1667</span> <span class="comment">// check if there is an unused parameter, if so, fix it</span></div>
<div class="line"><a id="l01668" name="l01668"></a><span class="lineno"> 1668</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); i++) {</div>
<div class="line"><a id="l01669" name="l01669"></a><span class="lineno"> 1669</span> <span class="comment">// parameter not used in the whole theory and not already fixed!!</span></div>
<div class="line"><a id="l01670" name="l01670"></a><span class="lineno"> 1670</span> <span class="keywordflow">if</span> ((<a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;ParameterInUse(i) == 0) &amp;&amp; (<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fStep != 0.0)) {</div>
<div class="line"><a id="l01671" name="l01671"></a><span class="lineno"> 1671</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Fix(i); <span class="comment">// fix the unused parameter so that minuit will not vary it</span></div>
<div class="line"><a id="l01672" name="l01672"></a><span class="lineno"> 1672</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;**WARNING** : Parameter No &quot;</span> &lt;&lt; i+1 &lt;&lt; <span class="stringliteral">&quot; is not used at all, will fix it&quot;</span>;</div>
<div class="line"><a id="l01673" name="l01673"></a><span class="lineno"> 1673</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01674" name="l01674"></a><span class="lineno"> 1674</span> }</div>
<div class="line"><a id="l01675" name="l01675"></a><span class="lineno"> 1675</span> }</div>
<div class="line"><a id="l01676" name="l01676"></a><span class="lineno"> 1676</span> </div>
<div class="line"><a id="l01677" name="l01677"></a><span class="lineno"> 1677</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l01678" name="l01678"></a><span class="lineno"> 1678</span>}</div>
</div>
<div class="line"><a id="l01679" name="l01679"></a><span class="lineno"> 1679</span> </div>
<div class="line"><a id="l01680" name="l01680"></a><span class="lineno"> 1680</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l01681" name="l01681"></a><span class="lineno"> 1681</span><span class="comment">// ExecuteContours</span></div>
<div class="line"><a id="l01682" name="l01682"></a><span class="lineno"> 1682</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen01688" data-start="{" data-end="}">
<div class="line"><a id="l01688" name="l01688"></a><span class="lineno"><a class="line" href="classPFitter.html#a069a60f7cbb859b0bc0f4b63168dbfde"> 1688</a></span>Bool_t <a class="code hl_function" href="classPFitter.html#a069a60f7cbb859b0bc0f4b63168dbfde">PFitter::ExecuteContours</a>()</div>
<div class="line"><a id="l01689" name="l01689"></a><span class="lineno"> 1689</span>{</div>
<div class="line"><a id="l01690" name="l01690"></a><span class="lineno"> 1690</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteContours() ...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l01691" name="l01691"></a><span class="lineno"> 1691</span> </div>
<div class="line"><a id="l01692" name="l01692"></a><span class="lineno"> 1692</span> <span class="comment">// if already some minimization is done use the minuit2 output as input</span></div>
<div class="line"><a id="l01693" name="l01693"></a><span class="lineno"> 1693</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a>) {</div>
<div class="line"><a id="l01694" name="l01694"></a><span class="lineno"> 1694</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;**WARNING**: CONTOURS musn&#39;t be called before any minimization (MINIMIZE/MIGRAD/SIMPLEX) is done!!&quot;</span>;</div>
<div class="line"><a id="l01695" name="l01695"></a><span class="lineno"> 1695</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01696" name="l01696"></a><span class="lineno"> 1696</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l01697" name="l01697"></a><span class="lineno"> 1697</span> }</div>
<div class="line"><a id="l01698" name="l01698"></a><span class="lineno"> 1698</span> </div>
<div class="line"><a id="l01699" name="l01699"></a><span class="lineno"> 1699</span> <span class="comment">// check if minimum was valid</span></div>
<div class="line"><a id="l01700" name="l01700"></a><span class="lineno"> 1700</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a>-&gt;IsValid()) {</div>
<div class="line"><a id="l01701" name="l01701"></a><span class="lineno"> 1701</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;**ERROR**: CONTOURS cannot started since the previous minimization failed :-(&quot;</span>;</div>
<div class="line"><a id="l01702" name="l01702"></a><span class="lineno"> 1702</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01703" name="l01703"></a><span class="lineno"> 1703</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l01704" name="l01704"></a><span class="lineno"> 1704</span> }</div>
<div class="line"><a id="l01705" name="l01705"></a><span class="lineno"> 1705</span> </div>
<div class="line"><a id="l01706" name="l01706"></a><span class="lineno"> 1706</span> ROOT::Minuit2::MnContours contours((*<a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>), *<a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a>);</div>
<div class="line"><a id="l01707" name="l01707"></a><span class="lineno"> 1707</span> </div>
<div class="line"><a id="l01708" name="l01708"></a><span class="lineno"> 1708</span> <a class="code hl_variable" href="classPFitter.html#ab156ab2b66ed243065045e47ea8d5762">fScanData</a> = contours(<a class="code hl_variable" href="classPFitter.html#a3561550a7d70378a1b36971333d0d7a5">fScanParameter</a>[0], <a class="code hl_variable" href="classPFitter.html#a3561550a7d70378a1b36971333d0d7a5">fScanParameter</a>[1], <a class="code hl_variable" href="classPFitter.html#a0f965880a3bd8cb7489fedca61c45201">fScanNoPoints</a>);</div>
<div class="line"><a id="l01709" name="l01709"></a><span class="lineno"> 1709</span> </div>
<div class="line"><a id="l01710" name="l01710"></a><span class="lineno"> 1710</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l01711" name="l01711"></a><span class="lineno"> 1711</span>}</div>
</div>
<div class="line"><a id="l01712" name="l01712"></a><span class="lineno"> 1712</span> </div>
<div class="line"><a id="l01713" name="l01713"></a><span class="lineno"> 1713</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l01714" name="l01714"></a><span class="lineno"> 1714</span><span class="comment">// ExecuteFitRange</span></div>
<div class="line"><a id="l01715" name="l01715"></a><span class="lineno"> 1715</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen01723" data-start="{" data-end="}">
<div class="line"><a id="l01723" name="l01723"></a><span class="lineno"><a class="line" href="classPFitter.html#acc32e99737b3abd781f06da5649ebd35"> 1723</a></span>Bool_t <a class="code hl_function" href="classPFitter.html#acc32e99737b3abd781f06da5649ebd35">PFitter::ExecuteFitRange</a>(UInt_t lineNo)</div>
<div class="line"><a id="l01724" name="l01724"></a><span class="lineno"> 1724</span>{</div>
<div class="line"><a id="l01725" name="l01725"></a><span class="lineno"> 1725</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteFitRange(): &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a7f894783312fb9a16e92b8c34141d734">fCmdLines</a>[lineNo].fLine.Data() &lt;&lt; std::endl;</div>
<div class="line"><a id="l01726" name="l01726"></a><span class="lineno"> 1726</span> </div>
<div class="line"><a id="l01727" name="l01727"></a><span class="lineno"> 1727</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#a7f894783312fb9a16e92b8c34141d734">fCmdLines</a>[lineNo].fLine.Contains(<span class="stringliteral">&quot;fgb&quot;</span>, TString::kIgnoreCase)) { <span class="comment">// fit range given in bins</span></div>
<div class="line"><a id="l01728" name="l01728"></a><span class="lineno"> 1728</span> <a class="code hl_variable" href="classPFitter.html#a71fa2a64e6574b4582b21d4efe81991a">fRunListCollection</a>-&gt;SetFitRange(<a class="code hl_variable" href="classPFitter.html#a7f894783312fb9a16e92b8c34141d734">fCmdLines</a>[lineNo].fLine);</div>
<div class="line"><a id="l01729" name="l01729"></a><span class="lineno"> 1729</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l01730" name="l01730"></a><span class="lineno"> 1730</span> }</div>
<div class="line"><a id="l01731" name="l01731"></a><span class="lineno"> 1731</span> </div>
<div class="line"><a id="l01732" name="l01732"></a><span class="lineno"> 1732</span> TObjArray *tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01733" name="l01733"></a><span class="lineno"> 1733</span> TObjString *ostr;</div>
<div class="line"><a id="l01734" name="l01734"></a><span class="lineno"> 1734</span> TString str;</div>
<div class="line"><a id="l01735" name="l01735"></a><span class="lineno"> 1735</span> </div>
<div class="line"><a id="l01736" name="l01736"></a><span class="lineno"> 1736</span> tokens = <a class="code hl_variable" href="classPFitter.html#a7f894783312fb9a16e92b8c34141d734">fCmdLines</a>[lineNo].fLine.Tokenize(<span class="stringliteral">&quot;, \t&quot;</span>);</div>
<div class="line"><a id="l01737" name="l01737"></a><span class="lineno"> 1737</span> </div>
<div class="line"><a id="l01738" name="l01738"></a><span class="lineno"> 1738</span> <a class="code hl_typedef" href="PMusr_8h.html#a4073f6987fbfc4322a522b8d112520ae">PMsrRunList</a> *runList = <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrRunList();</div>
<div class="line"><a id="l01739" name="l01739"></a><span class="lineno"> 1739</span> </div>
<div class="line"><a id="l01740" name="l01740"></a><span class="lineno"> 1740</span> <span class="comment">// execute command, no error checking needed since this has been already carried out in CheckCommands()</span></div>
<div class="line"><a id="l01741" name="l01741"></a><span class="lineno"> 1741</span> <span class="keywordflow">if</span> (tokens-&gt;GetEntries() == 2) { <span class="comment">// reset command</span></div>
<div class="line"><a id="l01742" name="l01742"></a><span class="lineno"> 1742</span> <a class="code hl_variable" href="classPFitter.html#a71fa2a64e6574b4582b21d4efe81991a">fRunListCollection</a>-&gt;SetFitRange(<a class="code hl_variable" href="classPFitter.html#a0d49c71cedfb96367f8167877beba69d">fOriginalFitRange</a>);</div>
<div class="line"><a id="l01743" name="l01743"></a><span class="lineno"> 1743</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (tokens-&gt;GetEntries() == 3) { <span class="comment">// single fit range for all runs </span></div>
<div class="line"><a id="l01744" name="l01744"></a><span class="lineno"> 1744</span> Double_t start = 0.0, end = 0.0;</div>
<div class="line"><a id="l01745" name="l01745"></a><span class="lineno"> 1745</span> <a class="code hl_typedef" href="PMusr_8h.html#a11543a8acdb329540782443a7cf1d667">PDoublePair</a> fitRange;</div>
<div class="line"><a id="l01746" name="l01746"></a><span class="lineno"> 1746</span> <a class="code hl_typedef" href="PMusr_8h.html#a93e3841e16074fd3c7648d8fc7b742f4">PDoublePairVector</a> fitRangeVector;</div>
<div class="line"><a id="l01747" name="l01747"></a><span class="lineno"> 1747</span> </div>
<div class="line"><a id="l01748" name="l01748"></a><span class="lineno"> 1748</span> ostr = <span class="keyword">dynamic_cast&lt;</span>TObjString*<span class="keyword">&gt;</span>(tokens-&gt;At(1));</div>
<div class="line"><a id="l01749" name="l01749"></a><span class="lineno"> 1749</span> str = ostr-&gt;GetString();</div>
<div class="line"><a id="l01750" name="l01750"></a><span class="lineno"> 1750</span> start = str.Atof();</div>
<div class="line"><a id="l01751" name="l01751"></a><span class="lineno"> 1751</span> ostr = <span class="keyword">dynamic_cast&lt;</span>TObjString*<span class="keyword">&gt;</span>(tokens-&gt;At(2));</div>
<div class="line"><a id="l01752" name="l01752"></a><span class="lineno"> 1752</span> str = ostr-&gt;GetString();</div>
<div class="line"><a id="l01753" name="l01753"></a><span class="lineno"> 1753</span> end = str.Atof();</div>
<div class="line"><a id="l01754" name="l01754"></a><span class="lineno"> 1754</span> </div>
<div class="line"><a id="l01755" name="l01755"></a><span class="lineno"> 1755</span> fitRange.first = start;</div>
<div class="line"><a id="l01756" name="l01756"></a><span class="lineno"> 1756</span> fitRange.second = end;</div>
<div class="line"><a id="l01757" name="l01757"></a><span class="lineno"> 1757</span> fitRangeVector.push_back(fitRange);</div>
<div class="line"><a id="l01758" name="l01758"></a><span class="lineno"> 1758</span> <a class="code hl_variable" href="classPFitter.html#a71fa2a64e6574b4582b21d4efe81991a">fRunListCollection</a>-&gt;SetFitRange(fitRangeVector);</div>
<div class="line"><a id="l01759" name="l01759"></a><span class="lineno"> 1759</span> </div>
<div class="line"><a id="l01760" name="l01760"></a><span class="lineno"> 1760</span> } <span class="keywordflow">else</span> { <span class="comment">// individual fit ranges for each run</span></div>
<div class="line"><a id="l01761" name="l01761"></a><span class="lineno"> 1761</span> Double_t start = 0.0, end = 0.0;</div>
<div class="line"><a id="l01762" name="l01762"></a><span class="lineno"> 1762</span> <a class="code hl_typedef" href="PMusr_8h.html#a11543a8acdb329540782443a7cf1d667">PDoublePair</a> fitRange;</div>
<div class="line"><a id="l01763" name="l01763"></a><span class="lineno"> 1763</span> <a class="code hl_typedef" href="PMusr_8h.html#a93e3841e16074fd3c7648d8fc7b742f4">PDoublePairVector</a> fitRangeVector;</div>
<div class="line"><a id="l01764" name="l01764"></a><span class="lineno"> 1764</span> </div>
<div class="line"><a id="l01765" name="l01765"></a><span class="lineno"> 1765</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;runList-&gt;size(); i++) {</div>
<div class="line"><a id="l01766" name="l01766"></a><span class="lineno"> 1766</span> ostr = <span class="keyword">dynamic_cast&lt;</span>TObjString*<span class="keyword">&gt;</span>(tokens-&gt;At(2*i+1));</div>
<div class="line"><a id="l01767" name="l01767"></a><span class="lineno"> 1767</span> str = ostr-&gt;GetString();</div>
<div class="line"><a id="l01768" name="l01768"></a><span class="lineno"> 1768</span> start = str.Atof();</div>
<div class="line"><a id="l01769" name="l01769"></a><span class="lineno"> 1769</span> ostr = <span class="keyword">dynamic_cast&lt;</span>TObjString*<span class="keyword">&gt;</span>(tokens-&gt;At(2*i+2));</div>
<div class="line"><a id="l01770" name="l01770"></a><span class="lineno"> 1770</span> str = ostr-&gt;GetString();</div>
<div class="line"><a id="l01771" name="l01771"></a><span class="lineno"> 1771</span> end = str.Atof();</div>
<div class="line"><a id="l01772" name="l01772"></a><span class="lineno"> 1772</span> </div>
<div class="line"><a id="l01773" name="l01773"></a><span class="lineno"> 1773</span> fitRange.first = start;</div>
<div class="line"><a id="l01774" name="l01774"></a><span class="lineno"> 1774</span> fitRange.second = end;</div>
<div class="line"><a id="l01775" name="l01775"></a><span class="lineno"> 1775</span> fitRangeVector.push_back(fitRange);</div>
<div class="line"><a id="l01776" name="l01776"></a><span class="lineno"> 1776</span> }</div>
<div class="line"><a id="l01777" name="l01777"></a><span class="lineno"> 1777</span> </div>
<div class="line"><a id="l01778" name="l01778"></a><span class="lineno"> 1778</span> <a class="code hl_variable" href="classPFitter.html#a71fa2a64e6574b4582b21d4efe81991a">fRunListCollection</a>-&gt;SetFitRange(fitRangeVector);</div>
<div class="line"><a id="l01779" name="l01779"></a><span class="lineno"> 1779</span> }</div>
<div class="line"><a id="l01780" name="l01780"></a><span class="lineno"> 1780</span> </div>
<div class="line"><a id="l01781" name="l01781"></a><span class="lineno"> 1781</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l01782" name="l01782"></a><span class="lineno"> 1782</span>}</div>
</div>
<div class="line"><a id="l01783" name="l01783"></a><span class="lineno"> 1783</span> </div>
<div class="line"><a id="l01784" name="l01784"></a><span class="lineno"> 1784</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l01785" name="l01785"></a><span class="lineno"> 1785</span><span class="comment">// ExecuteFix</span></div>
<div class="line"><a id="l01786" name="l01786"></a><span class="lineno"> 1786</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen01794" data-start="{" data-end="}">
<div class="line"><a id="l01794" name="l01794"></a><span class="lineno"><a class="line" href="classPFitter.html#ad40bd35fd795fa4be1e556a6042f4f88"> 1794</a></span>Bool_t <a class="code hl_function" href="classPFitter.html#ad40bd35fd795fa4be1e556a6042f4f88">PFitter::ExecuteFix</a>(UInt_t lineNo)</div>
<div class="line"><a id="l01795" name="l01795"></a><span class="lineno"> 1795</span>{</div>
<div class="line"><a id="l01796" name="l01796"></a><span class="lineno"> 1796</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteFix(): &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a7f894783312fb9a16e92b8c34141d734">fCmdLines</a>[lineNo].fLine.Data() &lt;&lt; std::endl;</div>
<div class="line"><a id="l01797" name="l01797"></a><span class="lineno"> 1797</span> </div>
<div class="line"><a id="l01798" name="l01798"></a><span class="lineno"> 1798</span> TObjArray *tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01799" name="l01799"></a><span class="lineno"> 1799</span> TObjString *ostr;</div>
<div class="line"><a id="l01800" name="l01800"></a><span class="lineno"> 1800</span> TString str;</div>
<div class="line"><a id="l01801" name="l01801"></a><span class="lineno"> 1801</span> </div>
<div class="line"><a id="l01802" name="l01802"></a><span class="lineno"> 1802</span> tokens = <a class="code hl_variable" href="classPFitter.html#a7f894783312fb9a16e92b8c34141d734">fCmdLines</a>[lineNo].fLine.Tokenize(<span class="stringliteral">&quot;, \t&quot;</span>);</div>
<div class="line"><a id="l01803" name="l01803"></a><span class="lineno"> 1803</span> </div>
<div class="line"><a id="l01804" name="l01804"></a><span class="lineno"> 1804</span> <span class="keywordflow">for</span> (Int_t i=1; i&lt;tokens-&gt;GetEntries(); i++) {</div>
<div class="line"><a id="l01805" name="l01805"></a><span class="lineno"> 1805</span> ostr = <span class="keyword">dynamic_cast&lt;</span>TObjString*<span class="keyword">&gt;</span>(tokens-&gt;At(i));</div>
<div class="line"><a id="l01806" name="l01806"></a><span class="lineno"> 1806</span> str = ostr-&gt;GetString();</div>
<div class="line"><a id="l01807" name="l01807"></a><span class="lineno"> 1807</span> </div>
<div class="line"><a id="l01808" name="l01808"></a><span class="lineno"> 1808</span> <span class="keywordflow">if</span> (str.IsDigit()) { <span class="comment">// token is a parameter number</span></div>
<div class="line"><a id="l01809" name="l01809"></a><span class="lineno"> 1809</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Fix(<span class="keyword">static_cast&lt;</span>UInt_t<span class="keyword">&gt;</span>(str.Atoi())-1);</div>
<div class="line"><a id="l01810" name="l01810"></a><span class="lineno"> 1810</span> } <span class="keywordflow">else</span> { <span class="comment">// token is a parameter name</span></div>
<div class="line"><a id="l01811" name="l01811"></a><span class="lineno"> 1811</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Fix(str.Data());</div>
<div class="line"><a id="l01812" name="l01812"></a><span class="lineno"> 1812</span> }</div>
<div class="line"><a id="l01813" name="l01813"></a><span class="lineno"> 1813</span> }</div>
<div class="line"><a id="l01814" name="l01814"></a><span class="lineno"> 1814</span> </div>
<div class="line"><a id="l01815" name="l01815"></a><span class="lineno"> 1815</span> <span class="comment">// clean up</span></div>
<div class="line"><a id="l01816" name="l01816"></a><span class="lineno"> 1816</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l01817" name="l01817"></a><span class="lineno"> 1817</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l01818" name="l01818"></a><span class="lineno"> 1818</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l01819" name="l01819"></a><span class="lineno"> 1819</span> }</div>
<div class="line"><a id="l01820" name="l01820"></a><span class="lineno"> 1820</span> </div>
<div class="line"><a id="l01821" name="l01821"></a><span class="lineno"> 1821</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l01822" name="l01822"></a><span class="lineno"> 1822</span>}</div>
</div>
<div class="line"><a id="l01823" name="l01823"></a><span class="lineno"> 1823</span> </div>
<div class="line"><a id="l01824" name="l01824"></a><span class="lineno"> 1824</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l01825" name="l01825"></a><span class="lineno"> 1825</span><span class="comment">// ExecuteHesse</span></div>
<div class="line"><a id="l01826" name="l01826"></a><span class="lineno"> 1826</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen01832" data-start="{" data-end="}">
<div class="line"><a id="l01832" name="l01832"></a><span class="lineno"><a class="line" href="classPFitter.html#a9eb9b1257133ddacf57332dbca711943"> 1832</a></span>Bool_t <a class="code hl_function" href="classPFitter.html#a9eb9b1257133ddacf57332dbca711943">PFitter::ExecuteHesse</a>()</div>
<div class="line"><a id="l01833" name="l01833"></a><span class="lineno"> 1833</span>{</div>
<div class="line"><a id="l01834" name="l01834"></a><span class="lineno"> 1834</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteHesse(): will call hesse ...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l01835" name="l01835"></a><span class="lineno"> 1835</span> </div>
<div class="line"><a id="l01836" name="l01836"></a><span class="lineno"> 1836</span> <span class="comment">// create the hesse object</span></div>
<div class="line"><a id="l01837" name="l01837"></a><span class="lineno"> 1837</span> ROOT::Minuit2::MnHesse hesse;</div>
<div class="line"><a id="l01838" name="l01838"></a><span class="lineno"> 1838</span> </div>
<div class="line"><a id="l01839" name="l01839"></a><span class="lineno"> 1839</span> <span class="comment">// specify maximal number of function calls</span></div>
<div class="line"><a id="l01840" name="l01840"></a><span class="lineno"> 1840</span> UInt_t maxfcn = std::numeric_limits&lt;UInt_t&gt;::max();</div>
<div class="line"><a id="l01841" name="l01841"></a><span class="lineno"> 1841</span> </div>
<div class="line"><a id="l01842" name="l01842"></a><span class="lineno"> 1842</span> <span class="comment">// call hesse</span></div>
<div class="line"><a id="l01843" name="l01843"></a><span class="lineno"> 1843</span> Double_t start=0.0, end=0.0;</div>
<div class="line"><a id="l01844" name="l01844"></a><span class="lineno"> 1844</span> start=<a class="code hl_function" href="classPFitter.html#a313a48146cbacbf181a56838d5c52087">MilliTime</a>();</div>
<div class="line"><a id="l01845" name="l01845"></a><span class="lineno"> 1845</span> ROOT::Minuit2::MnUserParameterState mnState = hesse((*<a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>), <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>, maxfcn);</div>
<div class="line"><a id="l01846" name="l01846"></a><span class="lineno"> 1846</span> end=<a class="code hl_function" href="classPFitter.html#a313a48146cbacbf181a56838d5c52087">MilliTime</a>();</div>
<div class="line"><a id="l01847" name="l01847"></a><span class="lineno"> 1847</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteMinimize(): execution time for Hesse = &quot;</span> &lt;&lt; std::setprecision(3) &lt;&lt; (end-start)/1.0e3 &lt;&lt; <span class="stringliteral">&quot; sec.&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l01848" name="l01848"></a><span class="lineno"> 1848</span> TString str = TString::Format(<span class="stringliteral">&quot;Hesse: %.3f sec&quot;</span>, (end-start)/1.0e3);</div>
<div class="line"><a id="l01849" name="l01849"></a><span class="lineno"> 1849</span> <a class="code hl_variable" href="classPFitter.html#a26ccf4d18cb80457389162eaa5af8729">fElapsedTime</a>.push_back(str);</div>
<div class="line"><a id="l01850" name="l01850"></a><span class="lineno"> 1850</span> <span class="keywordflow">if</span> (!mnState.IsValid()) {</div>
<div class="line"><a id="l01851" name="l01851"></a><span class="lineno"> 1851</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteHesse(): **WARNING** Hesse encountered a problem! The state found is invalid.&quot;</span>;</div>
<div class="line"><a id="l01852" name="l01852"></a><span class="lineno"> 1852</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01853" name="l01853"></a><span class="lineno"> 1853</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l01854" name="l01854"></a><span class="lineno"> 1854</span> }</div>
<div class="line"><a id="l01855" name="l01855"></a><span class="lineno"> 1855</span> <span class="keywordflow">if</span> (!mnState.HasCovariance()) {</div>
<div class="line"><a id="l01856" name="l01856"></a><span class="lineno"> 1856</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteHesse(): **WARNING** Hesse encountered a problem! No covariance matrix available.&quot;</span>;</div>
<div class="line"><a id="l01857" name="l01857"></a><span class="lineno"> 1857</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01858" name="l01858"></a><span class="lineno"> 1858</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l01859" name="l01859"></a><span class="lineno"> 1859</span> }</div>
<div class="line"><a id="l01860" name="l01860"></a><span class="lineno"> 1860</span> </div>
<div class="line"><a id="l01861" name="l01861"></a><span class="lineno"> 1861</span> <span class="comment">// fill parabolic errors</span></div>
<div class="line"><a id="l01862" name="l01862"></a><span class="lineno"> 1862</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); i++) {</div>
<div class="line"><a id="l01863" name="l01863"></a><span class="lineno"> 1863</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrParamStep(i, mnState.Error(i));</div>
<div class="line"><a id="l01864" name="l01864"></a><span class="lineno"> 1864</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrParamPosErrorPresent(i, <span class="keyword">false</span>);</div>
<div class="line"><a id="l01865" name="l01865"></a><span class="lineno"> 1865</span> }</div>
<div class="line"><a id="l01866" name="l01866"></a><span class="lineno"> 1866</span> </div>
<div class="line"><a id="l01867" name="l01867"></a><span class="lineno"> 1867</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#a62a705860d144d6f0184a9a907c83678">fPrintLevel</a> &gt;= 2)</div>
<div class="line"><a id="l01868" name="l01868"></a><span class="lineno"> 1868</span> std::cout &lt;&lt; mnState &lt;&lt; std::endl;</div>
<div class="line"><a id="l01869" name="l01869"></a><span class="lineno"> 1869</span> </div>
<div class="line"><a id="l01870" name="l01870"></a><span class="lineno"> 1870</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l01871" name="l01871"></a><span class="lineno"> 1871</span>}</div>
</div>
<div class="line"><a id="l01872" name="l01872"></a><span class="lineno"> 1872</span> </div>
<div class="line"><a id="l01873" name="l01873"></a><span class="lineno"> 1873</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l01874" name="l01874"></a><span class="lineno"> 1874</span><span class="comment">// ExecuteMigrad</span></div>
<div class="line"><a id="l01875" name="l01875"></a><span class="lineno"> 1875</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen01881" data-start="{" data-end="}">
<div class="line"><a id="l01881" name="l01881"></a><span class="lineno"><a class="line" href="classPFitter.html#ababcfdb8205db798c84562afe70bad91"> 1881</a></span>Bool_t <a class="code hl_function" href="classPFitter.html#ababcfdb8205db798c84562afe70bad91">PFitter::ExecuteMigrad</a>()</div>
<div class="line"><a id="l01882" name="l01882"></a><span class="lineno"> 1882</span>{</div>
<div class="line"><a id="l01883" name="l01883"></a><span class="lineno"> 1883</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteMigrad(): will call migrad ...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l01884" name="l01884"></a><span class="lineno"> 1884</span> </div>
<div class="line"><a id="l01885" name="l01885"></a><span class="lineno"> 1885</span> <span class="comment">// create migrad object</span></div>
<div class="line"><a id="l01886" name="l01886"></a><span class="lineno"> 1886</span> <span class="comment">// strategy is by default = &#39;default&#39;</span></div>
<div class="line"><a id="l01887" name="l01887"></a><span class="lineno"> 1887</span> ROOT::Minuit2::MnMigrad migrad((*<a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>), <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>, ROOT::Minuit2::MnStrategy{<a class="code hl_variable" href="classPFitter.html#a14588efda750524a6dd0c85a13199919">fStrategy</a>});</div>
<div class="line"><a id="l01888" name="l01888"></a><span class="lineno"> 1888</span> </div>
<div class="line"><a id="l01889" name="l01889"></a><span class="lineno"> 1889</span> <span class="comment">// minimize</span></div>
<div class="line"><a id="l01890" name="l01890"></a><span class="lineno"> 1890</span> <span class="comment">// maxfcn is MINUIT2 Default maxfcn</span></div>
<div class="line"><a id="l01891" name="l01891"></a><span class="lineno"> 1891</span> UInt_t maxfcn = std::numeric_limits&lt;UInt_t&gt;::max();</div>
<div class="line"><a id="l01892" name="l01892"></a><span class="lineno"> 1892</span> <span class="comment">// tolerance = MINUIT2 Default tolerance</span></div>
<div class="line"><a id="l01893" name="l01893"></a><span class="lineno"> 1893</span> Double_t tolerance = 0.1;</div>
<div class="line"><a id="l01894" name="l01894"></a><span class="lineno"> 1894</span> <span class="comment">// keep track of elapsed time</span></div>
<div class="line"><a id="l01895" name="l01895"></a><span class="lineno"> 1895</span> Double_t start=0.0, end=0.0;</div>
<div class="line"><a id="l01896" name="l01896"></a><span class="lineno"> 1896</span> start=<a class="code hl_function" href="classPFitter.html#a313a48146cbacbf181a56838d5c52087">MilliTime</a>();</div>
<div class="line"><a id="l01897" name="l01897"></a><span class="lineno"> 1897</span> ROOT::Minuit2::FunctionMinimum min = migrad(maxfcn, tolerance);</div>
<div class="line"><a id="l01898" name="l01898"></a><span class="lineno"> 1898</span> end=<a class="code hl_function" href="classPFitter.html#a313a48146cbacbf181a56838d5c52087">MilliTime</a>();</div>
<div class="line"><a id="l01899" name="l01899"></a><span class="lineno"> 1899</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteMinimize(): execution time for Migrad = &quot;</span> &lt;&lt; std::setprecision(3) &lt;&lt; (end-start)/1.0e3 &lt;&lt; <span class="stringliteral">&quot; sec.&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l01900" name="l01900"></a><span class="lineno"> 1900</span> TString str = TString::Format(<span class="stringliteral">&quot;Migrad: %.3f sec&quot;</span>, (end-start)/1.0e3);</div>
<div class="line"><a id="l01901" name="l01901"></a><span class="lineno"> 1901</span> <a class="code hl_variable" href="classPFitter.html#a26ccf4d18cb80457389162eaa5af8729">fElapsedTime</a>.push_back(str);</div>
<div class="line"><a id="l01902" name="l01902"></a><span class="lineno"> 1902</span> <span class="keywordflow">if</span> (!min.IsValid()) {</div>
<div class="line"><a id="l01903" name="l01903"></a><span class="lineno"> 1903</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteMigrad(): **WARNING**: Fit did not converge, sorry ...&quot;</span>;</div>
<div class="line"><a id="l01904" name="l01904"></a><span class="lineno"> 1904</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01905" name="l01905"></a><span class="lineno"> 1905</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01906" name="l01906"></a><span class="lineno"> 1906</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l01907" name="l01907"></a><span class="lineno"> 1907</span> }</div>
<div class="line"><a id="l01908" name="l01908"></a><span class="lineno"> 1908</span> </div>
<div class="line"><a id="l01909" name="l01909"></a><span class="lineno"> 1909</span> <span class="comment">// keep FunctionMinimum object</span></div>
<div class="line"><a id="l01910" name="l01910"></a><span class="lineno"> 1910</span> <a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a>.reset(<span class="keyword">new</span> ROOT::Minuit2::FunctionMinimum(min));</div>
<div class="line"><a id="l01911" name="l01911"></a><span class="lineno"> 1911</span> </div>
<div class="line"><a id="l01912" name="l01912"></a><span class="lineno"> 1912</span> <span class="comment">// keep user parameters</span></div>
<div class="line"><a id="l01913" name="l01913"></a><span class="lineno"> 1913</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a>)</div>
<div class="line"><a id="l01914" name="l01914"></a><span class="lineno"> 1914</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a> = <a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a>-&gt;UserParameters();</div>
<div class="line"><a id="l01915" name="l01915"></a><span class="lineno"> 1915</span> </div>
<div class="line"><a id="l01916" name="l01916"></a><span class="lineno"> 1916</span> <span class="comment">// fill run info</span></div>
<div class="line"><a id="l01917" name="l01917"></a><span class="lineno"> 1917</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); i++) {</div>
<div class="line"><a id="l01918" name="l01918"></a><span class="lineno"> 1918</span> Double_t dval = min.UserState().Value(i);</div>
<div class="line"><a id="l01919" name="l01919"></a><span class="lineno"> 1919</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#ad5838c829ba15d41f95a8c452e380028">fPhase</a>[i]) {</div>
<div class="line"><a id="l01920" name="l01920"></a><span class="lineno"> 1920</span> Int_t m = (Int_t)(dval/360.0);</div>
<div class="line"><a id="l01921" name="l01921"></a><span class="lineno"> 1921</span> dval = dval - m*360.0;</div>
<div class="line"><a id="l01922" name="l01922"></a><span class="lineno"> 1922</span> }</div>
<div class="line"><a id="l01923" name="l01923"></a><span class="lineno"> 1923</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrParamValue(i, dval);</div>
<div class="line"><a id="l01924" name="l01924"></a><span class="lineno"> 1924</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrParamStep(i, min.UserState().Error(i));</div>
<div class="line"><a id="l01925" name="l01925"></a><span class="lineno"> 1925</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrParamPosErrorPresent(i, <span class="keyword">false</span>);</div>
<div class="line"><a id="l01926" name="l01926"></a><span class="lineno"> 1926</span> }</div>
<div class="line"><a id="l01927" name="l01927"></a><span class="lineno"> 1927</span> </div>
<div class="line"><a id="l01928" name="l01928"></a><span class="lineno"> 1928</span> <span class="comment">// handle statistics</span></div>
<div class="line"><a id="l01929" name="l01929"></a><span class="lineno"> 1929</span> Double_t minVal = min.Fval();</div>
<div class="line"><a id="l01930" name="l01930"></a><span class="lineno"> 1930</span> UInt_t ndf = <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetTotalNoOfFittedBins();</div>
<div class="line"><a id="l01931" name="l01931"></a><span class="lineno"> 1931</span> <span class="comment">// subtract number of varied parameters from total no of fitted bins -&gt; ndf</span></div>
<div class="line"><a id="l01932" name="l01932"></a><span class="lineno"> 1932</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); i++) {</div>
<div class="line"><a id="l01933" name="l01933"></a><span class="lineno"> 1933</span> <span class="keywordflow">if</span> ((min.UserState().Error(i) != 0.0) &amp;&amp; !<a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Parameters().at(i).IsFixed())</div>
<div class="line"><a id="l01934" name="l01934"></a><span class="lineno"> 1934</span> ndf -= 1;</div>
<div class="line"><a id="l01935" name="l01935"></a><span class="lineno"> 1935</span> }</div>
<div class="line"><a id="l01936" name="l01936"></a><span class="lineno"> 1936</span> </div>
<div class="line"><a id="l01937" name="l01937"></a><span class="lineno"> 1937</span> <span class="comment">// feed run info with new statistics info</span></div>
<div class="line"><a id="l01938" name="l01938"></a><span class="lineno"> 1938</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrStatisticMin(minVal);</div>
<div class="line"><a id="l01939" name="l01939"></a><span class="lineno"> 1939</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrStatisticNdf(ndf);</div>
<div class="line"><a id="l01940" name="l01940"></a><span class="lineno"> 1940</span> </div>
<div class="line"><a id="l01941" name="l01941"></a><span class="lineno"> 1941</span> <a class="code hl_variable" href="classPFitter.html#ac41618f0b66f7ef4bfed953e9fea79bd">fConverged</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l01942" name="l01942"></a><span class="lineno"> 1942</span> </div>
<div class="line"><a id="l01943" name="l01943"></a><span class="lineno"> 1943</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#a62a705860d144d6f0184a9a907c83678">fPrintLevel</a> &gt;= 2)</div>
<div class="line"><a id="l01944" name="l01944"></a><span class="lineno"> 1944</span> std::cout &lt;&lt; *<a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a> &lt;&lt; std::endl;</div>
<div class="line"><a id="l01945" name="l01945"></a><span class="lineno"> 1945</span> </div>
<div class="line"><a id="l01946" name="l01946"></a><span class="lineno"> 1946</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l01947" name="l01947"></a><span class="lineno"> 1947</span>}</div>
</div>
<div class="line"><a id="l01948" name="l01948"></a><span class="lineno"> 1948</span> </div>
<div class="line"><a id="l01949" name="l01949"></a><span class="lineno"> 1949</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l01950" name="l01950"></a><span class="lineno"> 1950</span><span class="comment">// ExecuteMinimize</span></div>
<div class="line"><a id="l01951" name="l01951"></a><span class="lineno"> 1951</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen01957" data-start="{" data-end="}">
<div class="line"><a id="l01957" name="l01957"></a><span class="lineno"><a class="line" href="classPFitter.html#ab6523d1625c35a57caed401f9348c5ff"> 1957</a></span>Bool_t <a class="code hl_function" href="classPFitter.html#ab6523d1625c35a57caed401f9348c5ff">PFitter::ExecuteMinimize</a>()</div>
<div class="line"><a id="l01958" name="l01958"></a><span class="lineno"> 1958</span>{</div>
<div class="line"><a id="l01959" name="l01959"></a><span class="lineno"> 1959</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteMinimize(): will call minimize ...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l01960" name="l01960"></a><span class="lineno"> 1960</span> </div>
<div class="line"><a id="l01961" name="l01961"></a><span class="lineno"> 1961</span> <span class="comment">// create minimizer object</span></div>
<div class="line"><a id="l01962" name="l01962"></a><span class="lineno"> 1962</span> <span class="comment">// strategy is by default = &#39;default&#39;</span></div>
<div class="line"><a id="l01963" name="l01963"></a><span class="lineno"> 1963</span> ROOT::Minuit2::MnMinimize minimize((*<a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>), <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>, ROOT::Minuit2::MnStrategy{<a class="code hl_variable" href="classPFitter.html#a14588efda750524a6dd0c85a13199919">fStrategy</a>});</div>
<div class="line"><a id="l01964" name="l01964"></a><span class="lineno"> 1964</span> </div>
<div class="line"><a id="l01965" name="l01965"></a><span class="lineno"> 1965</span> <span class="comment">// minimize</span></div>
<div class="line"><a id="l01966" name="l01966"></a><span class="lineno"> 1966</span> <span class="comment">// maxfcn is MINUIT2 Default maxfcn</span></div>
<div class="line"><a id="l01967" name="l01967"></a><span class="lineno"> 1967</span> UInt_t maxfcn = std::numeric_limits&lt;UInt_t&gt;::max();</div>
<div class="line"><a id="l01968" name="l01968"></a><span class="lineno"> 1968</span> </div>
<div class="line"><a id="l01969" name="l01969"></a><span class="lineno"> 1969</span> <span class="comment">// tolerance = MINUIT2 Default tolerance</span></div>
<div class="line"><a id="l01970" name="l01970"></a><span class="lineno"> 1970</span> Double_t tolerance = 0.1;</div>
<div class="line"><a id="l01971" name="l01971"></a><span class="lineno"> 1971</span> <span class="comment">// keep track of elapsed time</span></div>
<div class="line"><a id="l01972" name="l01972"></a><span class="lineno"> 1972</span> Double_t start=0.0, end=0.0;</div>
<div class="line"><a id="l01973" name="l01973"></a><span class="lineno"> 1973</span> start = <a class="code hl_function" href="classPFitter.html#a313a48146cbacbf181a56838d5c52087">MilliTime</a>();</div>
<div class="line"><a id="l01974" name="l01974"></a><span class="lineno"> 1974</span> ROOT::Minuit2::FunctionMinimum min = minimize(maxfcn, tolerance);</div>
<div class="line"><a id="l01975" name="l01975"></a><span class="lineno"> 1975</span> end = <a class="code hl_function" href="classPFitter.html#a313a48146cbacbf181a56838d5c52087">MilliTime</a>();</div>
<div class="line"><a id="l01976" name="l01976"></a><span class="lineno"> 1976</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteMinimize(): execution time for Minimize = &quot;</span> &lt;&lt; std::setprecision(3) &lt;&lt; (end-start)/1.0e3 &lt;&lt; <span class="stringliteral">&quot; sec.&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l01977" name="l01977"></a><span class="lineno"> 1977</span> TString str = TString::Format(<span class="stringliteral">&quot;Minimize: %.3f sec&quot;</span>, (end-start)/1.0e3);</div>
<div class="line"><a id="l01978" name="l01978"></a><span class="lineno"> 1978</span> <a class="code hl_variable" href="classPFitter.html#a26ccf4d18cb80457389162eaa5af8729">fElapsedTime</a>.push_back(str);</div>
<div class="line"><a id="l01979" name="l01979"></a><span class="lineno"> 1979</span> <span class="keywordflow">if</span> (!min.IsValid()) {</div>
<div class="line"><a id="l01980" name="l01980"></a><span class="lineno"> 1980</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteMinimize(): **WARNING**: Fit did not converge, sorry ...&quot;</span>;</div>
<div class="line"><a id="l01981" name="l01981"></a><span class="lineno"> 1981</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l01982" name="l01982"></a><span class="lineno"> 1982</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l01983" name="l01983"></a><span class="lineno"> 1983</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l01984" name="l01984"></a><span class="lineno"> 1984</span> }</div>
<div class="line"><a id="l01985" name="l01985"></a><span class="lineno"> 1985</span> </div>
<div class="line"><a id="l01986" name="l01986"></a><span class="lineno"> 1986</span> <span class="comment">// keep FunctionMinimum object</span></div>
<div class="line"><a id="l01987" name="l01987"></a><span class="lineno"> 1987</span> <a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a>.reset(<span class="keyword">new</span> ROOT::Minuit2::FunctionMinimum(min));</div>
<div class="line"><a id="l01988" name="l01988"></a><span class="lineno"> 1988</span> </div>
<div class="line"><a id="l01989" name="l01989"></a><span class="lineno"> 1989</span> <span class="comment">// keep user parameters</span></div>
<div class="line"><a id="l01990" name="l01990"></a><span class="lineno"> 1990</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a>)</div>
<div class="line"><a id="l01991" name="l01991"></a><span class="lineno"> 1991</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a> = <a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a>-&gt;UserParameters();</div>
<div class="line"><a id="l01992" name="l01992"></a><span class="lineno"> 1992</span> </div>
<div class="line"><a id="l01993" name="l01993"></a><span class="lineno"> 1993</span> <span class="comment">// fill run info</span></div>
<div class="line"><a id="l01994" name="l01994"></a><span class="lineno"> 1994</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); i++) {</div>
<div class="line"><a id="l01995" name="l01995"></a><span class="lineno"> 1995</span> Double_t dval = min.UserState().Value(i);</div>
<div class="line"><a id="l01996" name="l01996"></a><span class="lineno"> 1996</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#ad5838c829ba15d41f95a8c452e380028">fPhase</a>[i]) {</div>
<div class="line"><a id="l01997" name="l01997"></a><span class="lineno"> 1997</span> Int_t m = (Int_t)(dval/360.0);</div>
<div class="line"><a id="l01998" name="l01998"></a><span class="lineno"> 1998</span> dval = dval - m*360.0;</div>
<div class="line"><a id="l01999" name="l01999"></a><span class="lineno"> 1999</span> }</div>
<div class="line"><a id="l02000" name="l02000"></a><span class="lineno"> 2000</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrParamValue(i, dval);</div>
<div class="line"><a id="l02001" name="l02001"></a><span class="lineno"> 2001</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrParamStep(i, min.UserState().Error(i));</div>
<div class="line"><a id="l02002" name="l02002"></a><span class="lineno"> 2002</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrParamPosErrorPresent(i, <span class="keyword">false</span>);</div>
<div class="line"><a id="l02003" name="l02003"></a><span class="lineno"> 2003</span> }</div>
<div class="line"><a id="l02004" name="l02004"></a><span class="lineno"> 2004</span> </div>
<div class="line"><a id="l02005" name="l02005"></a><span class="lineno"> 2005</span> <span class="comment">// handle statistics</span></div>
<div class="line"><a id="l02006" name="l02006"></a><span class="lineno"> 2006</span> Double_t minVal = min.Fval();</div>
<div class="line"><a id="l02007" name="l02007"></a><span class="lineno"> 2007</span> UInt_t ndf = <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetTotalNoOfFittedBins();</div>
<div class="line"><a id="l02008" name="l02008"></a><span class="lineno"> 2008</span> <span class="comment">// subtract number of varied parameters from total no of fitted bins -&gt; ndf</span></div>
<div class="line"><a id="l02009" name="l02009"></a><span class="lineno"> 2009</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); i++) {</div>
<div class="line"><a id="l02010" name="l02010"></a><span class="lineno"> 2010</span> <span class="keywordflow">if</span> ((min.UserState().Error(i) != 0.0) &amp;&amp; !<a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Parameters().at(i).IsFixed())</div>
<div class="line"><a id="l02011" name="l02011"></a><span class="lineno"> 2011</span> ndf -= 1;</div>
<div class="line"><a id="l02012" name="l02012"></a><span class="lineno"> 2012</span> }</div>
<div class="line"><a id="l02013" name="l02013"></a><span class="lineno"> 2013</span> </div>
<div class="line"><a id="l02014" name="l02014"></a><span class="lineno"> 2014</span> <span class="comment">// feed run info with new statistics info</span></div>
<div class="line"><a id="l02015" name="l02015"></a><span class="lineno"> 2015</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrStatisticMin(minVal);</div>
<div class="line"><a id="l02016" name="l02016"></a><span class="lineno"> 2016</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrStatisticNdf(ndf);</div>
<div class="line"><a id="l02017" name="l02017"></a><span class="lineno"> 2017</span> </div>
<div class="line"><a id="l02018" name="l02018"></a><span class="lineno"> 2018</span> <a class="code hl_variable" href="classPFitter.html#ac41618f0b66f7ef4bfed953e9fea79bd">fConverged</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l02019" name="l02019"></a><span class="lineno"> 2019</span> </div>
<div class="line"><a id="l02020" name="l02020"></a><span class="lineno"> 2020</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#a62a705860d144d6f0184a9a907c83678">fPrintLevel</a> &gt;= 2)</div>
<div class="line"><a id="l02021" name="l02021"></a><span class="lineno"> 2021</span> std::cout &lt;&lt; *<a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a> &lt;&lt; std::endl;</div>
<div class="line"><a id="l02022" name="l02022"></a><span class="lineno"> 2022</span> </div>
<div class="line"><a id="l02023" name="l02023"></a><span class="lineno"> 2023</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l02024" name="l02024"></a><span class="lineno"> 2024</span>}</div>
</div>
<div class="line"><a id="l02025" name="l02025"></a><span class="lineno"> 2025</span> </div>
<div class="line"><a id="l02026" name="l02026"></a><span class="lineno"> 2026</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l02027" name="l02027"></a><span class="lineno"> 2027</span><span class="comment">// ExecuteMinos</span></div>
<div class="line"><a id="l02028" name="l02028"></a><span class="lineno"> 2028</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen02034" data-start="{" data-end="}">
<div class="line"><a id="l02034" name="l02034"></a><span class="lineno"><a class="line" href="classPFitter.html#aad0102694c267a1ddf497e6bc7cc9646"> 2034</a></span>Bool_t <a class="code hl_function" href="classPFitter.html#aad0102694c267a1ddf497e6bc7cc9646">PFitter::ExecuteMinos</a>()</div>
<div class="line"><a id="l02035" name="l02035"></a><span class="lineno"> 2035</span>{</div>
<div class="line"><a id="l02036" name="l02036"></a><span class="lineno"> 2036</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteMinos(): will call minos ...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l02037" name="l02037"></a><span class="lineno"> 2037</span> </div>
<div class="line"><a id="l02038" name="l02038"></a><span class="lineno"> 2038</span> <span class="comment">// if already some minimization is done use the minuit2 output as input</span></div>
<div class="line"><a id="l02039" name="l02039"></a><span class="lineno"> 2039</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a>) {</div>
<div class="line"><a id="l02040" name="l02040"></a><span class="lineno"> 2040</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;**ERROR**: MINOS musn&#39;t be called before any minimization (MINIMIZE/MIGRAD/SIMPLEX) is done!!&quot;</span>;</div>
<div class="line"><a id="l02041" name="l02041"></a><span class="lineno"> 2041</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l02042" name="l02042"></a><span class="lineno"> 2042</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l02043" name="l02043"></a><span class="lineno"> 2043</span> }</div>
<div class="line"><a id="l02044" name="l02044"></a><span class="lineno"> 2044</span> </div>
<div class="line"><a id="l02045" name="l02045"></a><span class="lineno"> 2045</span> <span class="comment">// check if minimum was valid</span></div>
<div class="line"><a id="l02046" name="l02046"></a><span class="lineno"> 2046</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a>-&gt;IsValid()) {</div>
<div class="line"><a id="l02047" name="l02047"></a><span class="lineno"> 2047</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;**ERROR**: MINOS cannot started since the previous minimization failed :-(&quot;</span>;</div>
<div class="line"><a id="l02048" name="l02048"></a><span class="lineno"> 2048</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l02049" name="l02049"></a><span class="lineno"> 2049</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l02050" name="l02050"></a><span class="lineno"> 2050</span> }</div>
<div class="line"><a id="l02051" name="l02051"></a><span class="lineno"> 2051</span> </div>
<div class="line"><a id="l02052" name="l02052"></a><span class="lineno"> 2052</span> <span class="comment">// make minos analysis</span></div>
<div class="line"><a id="l02053" name="l02053"></a><span class="lineno"> 2053</span> Double_t start=0.0, end=0.0;</div>
<div class="line"><a id="l02054" name="l02054"></a><span class="lineno"> 2054</span> start=<a class="code hl_function" href="classPFitter.html#a313a48146cbacbf181a56838d5c52087">MilliTime</a>();</div>
<div class="line"><a id="l02055" name="l02055"></a><span class="lineno"> 2055</span> ROOT::Minuit2::MnMinos minos((*<a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>), (*<a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a>));</div>
<div class="line"><a id="l02056" name="l02056"></a><span class="lineno"> 2056</span> </div>
<div class="line"><a id="l02057" name="l02057"></a><span class="lineno"> 2057</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); i++) {</div>
<div class="line"><a id="l02058" name="l02058"></a><span class="lineno"> 2058</span> <span class="comment">// only try to call minos if the parameter is not fixed!!</span></div>
<div class="line"><a id="l02059" name="l02059"></a><span class="lineno"> 2059</span> <span class="comment">// the 1st condition is from an user fixed variable,</span></div>
<div class="line"><a id="l02060" name="l02060"></a><span class="lineno"> 2060</span> <span class="comment">// the 2nd condition is from an all together unused variable</span></div>
<div class="line"><a id="l02061" name="l02061"></a><span class="lineno"> 2061</span> <span class="comment">// the 3rd condition is a variable fixed via the FIX command</span></div>
<div class="line"><a id="l02062" name="l02062"></a><span class="lineno"> 2062</span> <span class="keywordflow">if</span> ((<a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Error(i) != 0.0) &amp;&amp; (<a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;ParameterInUse(i) != 0) &amp;&amp; (!<a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Parameters().at(i).IsFixed())) {</div>
<div class="line"><a id="l02063" name="l02063"></a><span class="lineno"> 2063</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteMinos(): calculate errors for &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fName &lt;&lt; std::endl;</div>
<div class="line"><a id="l02064" name="l02064"></a><span class="lineno"> 2064</span> </div>
<div class="line"><a id="l02065" name="l02065"></a><span class="lineno"> 2065</span> <span class="comment">// 1-sigma MINOS errors</span></div>
<div class="line"><a id="l02066" name="l02066"></a><span class="lineno"> 2066</span> ROOT::Minuit2::MinosError err = minos.Minos(i);</div>
<div class="line"><a id="l02067" name="l02067"></a><span class="lineno"> 2067</span> </div>
<div class="line"><a id="l02068" name="l02068"></a><span class="lineno"> 2068</span> <span class="keywordflow">if</span> (err.IsValid()) {</div>
<div class="line"><a id="l02069" name="l02069"></a><span class="lineno"> 2069</span> <span class="comment">// fill msr-file structure</span></div>
<div class="line"><a id="l02070" name="l02070"></a><span class="lineno"> 2070</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrParamStep(i, err.Lower());</div>
<div class="line"><a id="l02071" name="l02071"></a><span class="lineno"> 2071</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrParamPosError(i, err.Upper());</div>
<div class="line"><a id="l02072" name="l02072"></a><span class="lineno"> 2072</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrParamPosErrorPresent(i, <span class="keyword">true</span>);</div>
<div class="line"><a id="l02073" name="l02073"></a><span class="lineno"> 2073</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02074" name="l02074"></a><span class="lineno"> 2074</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrParamPosErrorPresent(i, <span class="keyword">false</span>);</div>
<div class="line"><a id="l02075" name="l02075"></a><span class="lineno"> 2075</span> }</div>
<div class="line"><a id="l02076" name="l02076"></a><span class="lineno"> 2076</span> }</div>
<div class="line"><a id="l02077" name="l02077"></a><span class="lineno"> 2077</span> </div>
<div class="line"><a id="l02078" name="l02078"></a><span class="lineno"> 2078</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Parameters().at(i).IsFixed()) {</div>
<div class="line"><a id="l02079" name="l02079"></a><span class="lineno"> 2079</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteMinos(): **WARNING** Parameter &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Name(i) &lt;&lt; <span class="stringliteral">&quot; (ParamNo &quot;</span> &lt;&lt; i+1 &lt;&lt; <span class="stringliteral">&quot;) is fixed!&quot;</span>;</div>
<div class="line"><a id="l02080" name="l02080"></a><span class="lineno"> 2080</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; Will set STEP to zero, i.e. making it a constant parameter&quot;</span>;</div>
<div class="line"><a id="l02081" name="l02081"></a><span class="lineno"> 2081</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l02082" name="l02082"></a><span class="lineno"> 2082</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrParamStep(i, 0.0);</div>
<div class="line"><a id="l02083" name="l02083"></a><span class="lineno"> 2083</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrParamPosErrorPresent(i, <span class="keyword">false</span>);</div>
<div class="line"><a id="l02084" name="l02084"></a><span class="lineno"> 2084</span> }</div>
<div class="line"><a id="l02085" name="l02085"></a><span class="lineno"> 2085</span> }</div>
<div class="line"><a id="l02086" name="l02086"></a><span class="lineno"> 2086</span> </div>
<div class="line"><a id="l02087" name="l02087"></a><span class="lineno"> 2087</span> end=<a class="code hl_function" href="classPFitter.html#a313a48146cbacbf181a56838d5c52087">MilliTime</a>();</div>
<div class="line"><a id="l02088" name="l02088"></a><span class="lineno"> 2088</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteMinimize(): execution time for Minos = &quot;</span> &lt;&lt; std::setprecision(3) &lt;&lt; (end-start)/1.0e3 &lt;&lt; <span class="stringliteral">&quot; sec.&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l02089" name="l02089"></a><span class="lineno"> 2089</span> TString str = TString::Format(<span class="stringliteral">&quot;Minos: %.3f sec&quot;</span>, (end-start)/1.0e3);</div>
<div class="line"><a id="l02090" name="l02090"></a><span class="lineno"> 2090</span> <a class="code hl_variable" href="classPFitter.html#a26ccf4d18cb80457389162eaa5af8729">fElapsedTime</a>.push_back(str);</div>
<div class="line"><a id="l02091" name="l02091"></a><span class="lineno"> 2091</span> </div>
<div class="line"><a id="l02092" name="l02092"></a><span class="lineno"> 2092</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l02093" name="l02093"></a><span class="lineno"> 2093</span>}</div>
</div>
<div class="line"><a id="l02094" name="l02094"></a><span class="lineno"> 2094</span> </div>
<div class="line"><a id="l02095" name="l02095"></a><span class="lineno"> 2095</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l02096" name="l02096"></a><span class="lineno"> 2096</span><span class="comment">// ExecutePlot</span></div>
<div class="line"><a id="l02097" name="l02097"></a><span class="lineno"> 2097</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen02103" data-start="{" data-end="}">
<div class="line"><a id="l02103" name="l02103"></a><span class="lineno"><a class="line" href="classPFitter.html#a08e3d9eb88730d1d4e9ab4b7d9a2b708"> 2103</a></span>Bool_t <a class="code hl_function" href="classPFitter.html#a08e3d9eb88730d1d4e9ab4b7d9a2b708">PFitter::ExecutePlot</a>()</div>
<div class="line"><a id="l02104" name="l02104"></a><span class="lineno"> 2104</span>{</div>
<div class="line"><a id="l02105" name="l02105"></a><span class="lineno"> 2105</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecutePlot() ...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l02106" name="l02106"></a><span class="lineno"> 2106</span> </div>
<div class="line"><a id="l02107" name="l02107"></a><span class="lineno"> 2107</span> ROOT::Minuit2::MnPlot plot;</div>
<div class="line"><a id="l02108" name="l02108"></a><span class="lineno"> 2108</span> plot(<a class="code hl_variable" href="classPFitter.html#ab156ab2b66ed243065045e47ea8d5762">fScanData</a>);</div>
<div class="line"><a id="l02109" name="l02109"></a><span class="lineno"> 2109</span> </div>
<div class="line"><a id="l02110" name="l02110"></a><span class="lineno"> 2110</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l02111" name="l02111"></a><span class="lineno"> 2111</span>}</div>
</div>
<div class="line"><a id="l02112" name="l02112"></a><span class="lineno"> 2112</span> </div>
<div class="line"><a id="l02113" name="l02113"></a><span class="lineno"> 2113</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l02114" name="l02114"></a><span class="lineno"> 2114</span><span class="comment">// ExecutePrintLevel</span></div>
<div class="line"><a id="l02115" name="l02115"></a><span class="lineno"> 2115</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen02123" data-start="{" data-end="}">
<div class="line"><a id="l02123" name="l02123"></a><span class="lineno"><a class="line" href="classPFitter.html#a23f49efc107e75d189c2163aaffd406f"> 2123</a></span>Bool_t <a class="code hl_function" href="classPFitter.html#a23f49efc107e75d189c2163aaffd406f">PFitter::ExecutePrintLevel</a>(UInt_t lineNo)</div>
<div class="line"><a id="l02124" name="l02124"></a><span class="lineno"> 2124</span>{</div>
<div class="line"><a id="l02125" name="l02125"></a><span class="lineno"> 2125</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecutePrintLevel(): &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a7f894783312fb9a16e92b8c34141d734">fCmdLines</a>[lineNo].fLine.Data() &lt;&lt; std::endl;</div>
<div class="line"><a id="l02126" name="l02126"></a><span class="lineno"> 2126</span> </div>
<div class="line"><a id="l02127" name="l02127"></a><span class="lineno"> 2127</span> TObjArray *tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l02128" name="l02128"></a><span class="lineno"> 2128</span> TObjString *ostr;</div>
<div class="line"><a id="l02129" name="l02129"></a><span class="lineno"> 2129</span> TString str;</div>
<div class="line"><a id="l02130" name="l02130"></a><span class="lineno"> 2130</span> </div>
<div class="line"><a id="l02131" name="l02131"></a><span class="lineno"> 2131</span> tokens = <a class="code hl_variable" href="classPFitter.html#a7f894783312fb9a16e92b8c34141d734">fCmdLines</a>[lineNo].fLine.Tokenize(<span class="stringliteral">&quot;, \t&quot;</span>);</div>
<div class="line"><a id="l02132" name="l02132"></a><span class="lineno"> 2132</span> </div>
<div class="line"><a id="l02133" name="l02133"></a><span class="lineno"> 2133</span> <span class="keywordflow">if</span> (tokens-&gt;GetEntries() &lt; 2) {</div>
<div class="line"><a id="l02134" name="l02134"></a><span class="lineno"> 2134</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;**ERROR** from PFitter::ExecutePrintLevel(): SYNTAX: PRINT_LEVEL &lt;N&gt;, where &lt;N&gt;=0-3&quot;</span> &lt;&lt; std::endl &lt;&lt; std::endl;</div>
<div class="line"><a id="l02135" name="l02135"></a><span class="lineno"> 2135</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l02136" name="l02136"></a><span class="lineno"> 2136</span> }</div>
<div class="line"><a id="l02137" name="l02137"></a><span class="lineno"> 2137</span> </div>
<div class="line"><a id="l02138" name="l02138"></a><span class="lineno"> 2138</span> ostr = (TObjString*)tokens-&gt;At(1);</div>
<div class="line"><a id="l02139" name="l02139"></a><span class="lineno"> 2139</span> str = ostr-&gt;GetString();</div>
<div class="line"><a id="l02140" name="l02140"></a><span class="lineno"> 2140</span> </div>
<div class="line"><a id="l02141" name="l02141"></a><span class="lineno"> 2141</span> Int_t ival;</div>
<div class="line"><a id="l02142" name="l02142"></a><span class="lineno"> 2142</span> <span class="keywordflow">if</span> (str.IsDigit()) {</div>
<div class="line"><a id="l02143" name="l02143"></a><span class="lineno"> 2143</span> ival = str.Atoi();</div>
<div class="line"><a id="l02144" name="l02144"></a><span class="lineno"> 2144</span> <span class="keywordflow">if</span> ((ival &gt;=0) &amp;&amp; (ival &lt;= 3)) {</div>
<div class="line"><a id="l02145" name="l02145"></a><span class="lineno"> 2145</span> <a class="code hl_variable" href="classPFitter.html#a62a705860d144d6f0184a9a907c83678">fPrintLevel</a> = (UInt_t) ival;</div>
<div class="line"><a id="l02146" name="l02146"></a><span class="lineno"> 2146</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02147" name="l02147"></a><span class="lineno"> 2147</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;**ERROR** from PFitter::ExecutePrintLevel(): SYNTAX: PRINT_LEVEL &lt;N&gt;, where &lt;N&gt;=0-3&quot;</span>;</div>
<div class="line"><a id="l02148" name="l02148"></a><span class="lineno"> 2148</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; found &lt;N&gt;=&quot;</span> &lt;&lt; ival &lt;&lt; std::endl &lt;&lt; std::endl;</div>
<div class="line"><a id="l02149" name="l02149"></a><span class="lineno"> 2149</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l02150" name="l02150"></a><span class="lineno"> 2150</span> }</div>
<div class="line"><a id="l02151" name="l02151"></a><span class="lineno"> 2151</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02152" name="l02152"></a><span class="lineno"> 2152</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;**ERROR** from PFitter::ExecutePrintLevel(): SYNTAX: PRINT_LEVEL &lt;N&gt;, where &lt;N&gt;=0-3&quot;</span> &lt;&lt; std::endl &lt;&lt; std::endl;</div>
<div class="line"><a id="l02153" name="l02153"></a><span class="lineno"> 2153</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l02154" name="l02154"></a><span class="lineno"> 2154</span> }</div>
<div class="line"><a id="l02155" name="l02155"></a><span class="lineno"> 2155</span> </div>
<div class="line"><a id="l02156" name="l02156"></a><span class="lineno"> 2156</span><span class="preprocessor">#ifdef ROOT_GRTEQ_24</span></div>
<div class="line"><a id="l02157" name="l02157"></a><span class="lineno"> 2157</span> ROOT::Minuit2::MnPrint::SetGlobalLevel(<a class="code hl_variable" href="classPFitter.html#a62a705860d144d6f0184a9a907c83678">fPrintLevel</a>);</div>
<div class="line"><a id="l02158" name="l02158"></a><span class="lineno"> 2158</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l02159" name="l02159"></a><span class="lineno"> 2159</span> ROOT::Minuit2::MnPrint::SetLevel(<a class="code hl_variable" href="classPFitter.html#a62a705860d144d6f0184a9a907c83678">fPrintLevel</a>);</div>
<div class="line"><a id="l02160" name="l02160"></a><span class="lineno"> 2160</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02161" name="l02161"></a><span class="lineno"> 2161</span> </div>
<div class="line"><a id="l02162" name="l02162"></a><span class="lineno"> 2162</span> <span class="comment">// clean up</span></div>
<div class="line"><a id="l02163" name="l02163"></a><span class="lineno"> 2163</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l02164" name="l02164"></a><span class="lineno"> 2164</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l02165" name="l02165"></a><span class="lineno"> 2165</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l02166" name="l02166"></a><span class="lineno"> 2166</span> }</div>
<div class="line"><a id="l02167" name="l02167"></a><span class="lineno"> 2167</span> </div>
<div class="line"><a id="l02168" name="l02168"></a><span class="lineno"> 2168</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l02169" name="l02169"></a><span class="lineno"> 2169</span>}</div>
</div>
<div class="line"><a id="l02170" name="l02170"></a><span class="lineno"> 2170</span> </div>
<div class="line"><a id="l02171" name="l02171"></a><span class="lineno"> 2171</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l02172" name="l02172"></a><span class="lineno"> 2172</span><span class="comment">// ExecuteRelease</span></div>
<div class="line"><a id="l02173" name="l02173"></a><span class="lineno"> 2173</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen02181" data-start="{" data-end="}">
<div class="line"><a id="l02181" name="l02181"></a><span class="lineno"><a class="line" href="classPFitter.html#aab691691ca5d7cee66a16043c5c41940"> 2181</a></span>Bool_t <a class="code hl_function" href="classPFitter.html#aab691691ca5d7cee66a16043c5c41940">PFitter::ExecuteRelease</a>(UInt_t lineNo)</div>
<div class="line"><a id="l02182" name="l02182"></a><span class="lineno"> 2182</span>{</div>
<div class="line"><a id="l02183" name="l02183"></a><span class="lineno"> 2183</span> TObjArray *tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l02184" name="l02184"></a><span class="lineno"> 2184</span> TObjString *ostr;</div>
<div class="line"><a id="l02185" name="l02185"></a><span class="lineno"> 2185</span> TString str;</div>
<div class="line"><a id="l02186" name="l02186"></a><span class="lineno"> 2186</span> </div>
<div class="line"><a id="l02187" name="l02187"></a><span class="lineno"> 2187</span> tokens = <a class="code hl_variable" href="classPFitter.html#a7f894783312fb9a16e92b8c34141d734">fCmdLines</a>[lineNo].fLine.Tokenize(<span class="stringliteral">&quot;, \t&quot;</span>);</div>
<div class="line"><a id="l02188" name="l02188"></a><span class="lineno"> 2188</span> </div>
<div class="line"><a id="l02189" name="l02189"></a><span class="lineno"> 2189</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteRelease(): &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a7f894783312fb9a16e92b8c34141d734">fCmdLines</a>[lineNo].fLine.Data() &lt;&lt; std::endl;</div>
<div class="line"><a id="l02190" name="l02190"></a><span class="lineno"> 2190</span> </div>
<div class="line"><a id="l02191" name="l02191"></a><span class="lineno"> 2191</span> <span class="keywordflow">for</span> (Int_t i=1; i&lt;tokens-&gt;GetEntries(); i++) {</div>
<div class="line"><a id="l02192" name="l02192"></a><span class="lineno"> 2192</span> ostr = <span class="keyword">dynamic_cast&lt;</span>TObjString*<span class="keyword">&gt;</span>(tokens-&gt;At(i));</div>
<div class="line"><a id="l02193" name="l02193"></a><span class="lineno"> 2193</span> str = ostr-&gt;GetString();</div>
<div class="line"><a id="l02194" name="l02194"></a><span class="lineno"> 2194</span> </div>
<div class="line"><a id="l02195" name="l02195"></a><span class="lineno"> 2195</span> <span class="keywordflow">if</span> (str.IsDigit()) { <span class="comment">// token is a parameter number</span></div>
<div class="line"><a id="l02196" name="l02196"></a><span class="lineno"> 2196</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Release(<span class="keyword">static_cast&lt;</span>UInt_t<span class="keyword">&gt;</span>(str.Atoi())-1);</div>
<div class="line"><a id="l02197" name="l02197"></a><span class="lineno"> 2197</span> <span class="comment">// set the error to 2% of the value when releasing</span></div>
<div class="line"><a id="l02198" name="l02198"></a><span class="lineno"> 2198</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.SetError(<span class="keyword">static_cast&lt;</span>UInt_t<span class="keyword">&gt;</span>(str.Atoi())-1, 0.02*<a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Value(<span class="keyword">static_cast&lt;</span>UInt_t<span class="keyword">&gt;</span>(str.Atoi())-1));</div>
<div class="line"><a id="l02199" name="l02199"></a><span class="lineno"> 2199</span> } <span class="keywordflow">else</span> { <span class="comment">// token is a parameter name</span></div>
<div class="line"><a id="l02200" name="l02200"></a><span class="lineno"> 2200</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Release(str.Data());</div>
<div class="line"><a id="l02201" name="l02201"></a><span class="lineno"> 2201</span> <span class="comment">// set the error to 2% of the value when releasing</span></div>
<div class="line"><a id="l02202" name="l02202"></a><span class="lineno"> 2202</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.SetError(str.Data(), 0.02*<a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Value(str.Data()));</div>
<div class="line"><a id="l02203" name="l02203"></a><span class="lineno"> 2203</span> }</div>
<div class="line"><a id="l02204" name="l02204"></a><span class="lineno"> 2204</span> }</div>
<div class="line"><a id="l02205" name="l02205"></a><span class="lineno"> 2205</span> </div>
<div class="line"><a id="l02206" name="l02206"></a><span class="lineno"> 2206</span> <span class="comment">// clean up</span></div>
<div class="line"><a id="l02207" name="l02207"></a><span class="lineno"> 2207</span> <span class="keywordflow">if</span> (tokens) {</div>
<div class="line"><a id="l02208" name="l02208"></a><span class="lineno"> 2208</span> <span class="keyword">delete</span> tokens;</div>
<div class="line"><a id="l02209" name="l02209"></a><span class="lineno"> 2209</span> tokens = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l02210" name="l02210"></a><span class="lineno"> 2210</span> }</div>
<div class="line"><a id="l02211" name="l02211"></a><span class="lineno"> 2211</span> </div>
<div class="line"><a id="l02212" name="l02212"></a><span class="lineno"> 2212</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l02213" name="l02213"></a><span class="lineno"> 2213</span>}</div>
</div>
<div class="line"><a id="l02214" name="l02214"></a><span class="lineno"> 2214</span> </div>
<div class="line"><a id="l02215" name="l02215"></a><span class="lineno"> 2215</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l02216" name="l02216"></a><span class="lineno"> 2216</span><span class="comment">// ExecuteRestore</span></div>
<div class="line"><a id="l02217" name="l02217"></a><span class="lineno"> 2217</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen02223" data-start="{" data-end="}">
<div class="line"><a id="l02223" name="l02223"></a><span class="lineno"><a class="line" href="classPFitter.html#ac3094e6b657951d8d4a5ad934c2eb31a"> 2223</a></span>Bool_t <a class="code hl_function" href="classPFitter.html#ac3094e6b657951d8d4a5ad934c2eb31a">PFitter::ExecuteRestore</a>()</div>
<div class="line"><a id="l02224" name="l02224"></a><span class="lineno"> 2224</span>{</div>
<div class="line"><a id="l02225" name="l02225"></a><span class="lineno"> 2225</span> std::cout &lt;&lt; <span class="stringliteral">&quot;PFitter::ExecuteRestore(): release all fixed parameters (RESTORE) ...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l02226" name="l02226"></a><span class="lineno"> 2226</span> </div>
<div class="line"><a id="l02227" name="l02227"></a><span class="lineno"> 2227</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Parameters().size(); i++) {</div>
<div class="line"><a id="l02228" name="l02228"></a><span class="lineno"> 2228</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Parameters().at(i).IsFixed()) {</div>
<div class="line"><a id="l02229" name="l02229"></a><span class="lineno"> 2229</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Release(i);</div>
<div class="line"><a id="l02230" name="l02230"></a><span class="lineno"> 2230</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.SetError(i, 0.02*<a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Value(i));</div>
<div class="line"><a id="l02231" name="l02231"></a><span class="lineno"> 2231</span> }</div>
<div class="line"><a id="l02232" name="l02232"></a><span class="lineno"> 2232</span> }</div>
<div class="line"><a id="l02233" name="l02233"></a><span class="lineno"> 2233</span> </div>
<div class="line"><a id="l02234" name="l02234"></a><span class="lineno"> 2234</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l02235" name="l02235"></a><span class="lineno"> 2235</span>}</div>
</div>
<div class="line"><a id="l02236" name="l02236"></a><span class="lineno"> 2236</span> </div>
<div class="line"><a id="l02237" name="l02237"></a><span class="lineno"> 2237</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l02238" name="l02238"></a><span class="lineno"> 2238</span><span class="comment">// ExecuteScan</span></div>
<div class="line"><a id="l02239" name="l02239"></a><span class="lineno"> 2239</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen02245" data-start="{" data-end="}">
<div class="line"><a id="l02245" name="l02245"></a><span class="lineno"><a class="line" href="classPFitter.html#a5f91281f9274f4dfe192a89e5b8b1069"> 2245</a></span>Bool_t <a class="code hl_function" href="classPFitter.html#a5f91281f9274f4dfe192a89e5b8b1069">PFitter::ExecuteScan</a>()</div>
<div class="line"><a id="l02246" name="l02246"></a><span class="lineno"> 2246</span>{</div>
<div class="line"><a id="l02247" name="l02247"></a><span class="lineno"> 2247</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteScan(): will call scan ...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l02248" name="l02248"></a><span class="lineno"> 2248</span> </div>
<div class="line"><a id="l02249" name="l02249"></a><span class="lineno"> 2249</span> ROOT::Minuit2::MnScan scan((*<a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>), <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>);</div>
<div class="line"><a id="l02250" name="l02250"></a><span class="lineno"> 2250</span> </div>
<div class="line"><a id="l02251" name="l02251"></a><span class="lineno"> 2251</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#a691cf32e8aa08e70159450e3a3dc597b">fScanAll</a>) { <span class="comment">// not clear at the moment what to be done here</span></div>
<div class="line"><a id="l02252" name="l02252"></a><span class="lineno"> 2252</span> <span class="comment">// TO BE IMPLEMENTED</span></div>
<div class="line"><a id="l02253" name="l02253"></a><span class="lineno"> 2253</span> } <span class="keywordflow">else</span> { <span class="comment">// single parameter scan</span></div>
<div class="line"><a id="l02254" name="l02254"></a><span class="lineno"> 2254</span> <a class="code hl_variable" href="classPFitter.html#ab156ab2b66ed243065045e47ea8d5762">fScanData</a> = scan.Scan(<a class="code hl_variable" href="classPFitter.html#a3561550a7d70378a1b36971333d0d7a5">fScanParameter</a>[0], <a class="code hl_variable" href="classPFitter.html#a0f965880a3bd8cb7489fedca61c45201">fScanNoPoints</a>, <a class="code hl_variable" href="classPFitter.html#a94301c0e357ffb912db6380e2dd1a76a">fScanLow</a>, <a class="code hl_variable" href="classPFitter.html#a15110762601d24e076e48c79ef056d16">fScanHigh</a>);</div>
<div class="line"><a id="l02255" name="l02255"></a><span class="lineno"> 2255</span> }</div>
<div class="line"><a id="l02256" name="l02256"></a><span class="lineno"> 2256</span> </div>
<div class="line"><a id="l02257" name="l02257"></a><span class="lineno"> 2257</span> <a class="code hl_variable" href="classPFitter.html#ac41618f0b66f7ef4bfed953e9fea79bd">fConverged</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l02258" name="l02258"></a><span class="lineno"> 2258</span> </div>
<div class="line"><a id="l02259" name="l02259"></a><span class="lineno"> 2259</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l02260" name="l02260"></a><span class="lineno"> 2260</span>}</div>
</div>
<div class="line"><a id="l02261" name="l02261"></a><span class="lineno"> 2261</span> </div>
<div class="line"><a id="l02262" name="l02262"></a><span class="lineno"> 2262</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l02263" name="l02263"></a><span class="lineno"> 2263</span><span class="comment">// ExecuteSave</span></div>
<div class="line"><a id="l02264" name="l02264"></a><span class="lineno"> 2264</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen02272" data-start="{" data-end="}">
<div class="line"><a id="l02272" name="l02272"></a><span class="lineno"><a class="line" href="classPFitter.html#a631cacca453cf66db5b944437cf507dd"> 2272</a></span>Bool_t <a class="code hl_function" href="classPFitter.html#a631cacca453cf66db5b944437cf507dd">PFitter::ExecuteSave</a>(Bool_t firstSave)</div>
<div class="line"><a id="l02273" name="l02273"></a><span class="lineno"> 2273</span>{</div>
<div class="line"><a id="l02274" name="l02274"></a><span class="lineno"> 2274</span> <span class="comment">// if any minimization was done, otherwise get out immediately</span></div>
<div class="line"><a id="l02275" name="l02275"></a><span class="lineno"> 2275</span> <span class="keywordflow">if</span> (!<a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a>) {</div>
<div class="line"><a id="l02276" name="l02276"></a><span class="lineno"> 2276</span> std::cout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteSave(): nothing to be saved ...&quot;</span>;</div>
<div class="line"><a id="l02277" name="l02277"></a><span class="lineno"> 2277</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l02278" name="l02278"></a><span class="lineno"> 2278</span> }</div>
<div class="line"><a id="l02279" name="l02279"></a><span class="lineno"> 2279</span> </div>
<div class="line"><a id="l02280" name="l02280"></a><span class="lineno"> 2280</span> ROOT::Minuit2::MnUserParameterState mnState = <a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a>-&gt;UserState();</div>
<div class="line"><a id="l02281" name="l02281"></a><span class="lineno"> 2281</span> </div>
<div class="line"><a id="l02282" name="l02282"></a><span class="lineno"> 2282</span> <span class="comment">// check if the user parameter state is valid</span></div>
<div class="line"><a id="l02283" name="l02283"></a><span class="lineno"> 2283</span> <span class="keywordflow">if</span> (!mnState.IsValid()) {</div>
<div class="line"><a id="l02284" name="l02284"></a><span class="lineno"> 2284</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteSave: **WARNING** Minuit2 User Parameter State is not valid, i.e. nothing to be saved&quot;</span>;</div>
<div class="line"><a id="l02285" name="l02285"></a><span class="lineno"> 2285</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l02286" name="l02286"></a><span class="lineno"> 2286</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l02287" name="l02287"></a><span class="lineno"> 2287</span> }</div>
<div class="line"><a id="l02288" name="l02288"></a><span class="lineno"> 2288</span> </div>
<div class="line"><a id="l02289" name="l02289"></a><span class="lineno"> 2289</span> <span class="comment">// handle expected chisq if applicable</span></div>
<div class="line"><a id="l02290" name="l02290"></a><span class="lineno"> 2290</span> <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a> = *(<a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrParamList()); <span class="comment">// get the update parameters back</span></div>
<div class="line"><a id="l02291" name="l02291"></a><span class="lineno"> 2291</span> </div>
<div class="line"><a id="l02292" name="l02292"></a><span class="lineno"> 2292</span> <span class="comment">// calculate expected chisq</span></div>
<div class="line"><a id="l02293" name="l02293"></a><span class="lineno"> 2293</span> std::vector&lt;Double_t&gt; param;</div>
<div class="line"><a id="l02294" name="l02294"></a><span class="lineno"> 2294</span> std::vector&lt;Double_t&gt; err;</div>
<div class="line"><a id="l02295" name="l02295"></a><span class="lineno"> 2295</span> Double_t totalExpectedChisq = 0.0;</div>
<div class="line"><a id="l02296" name="l02296"></a><span class="lineno"> 2296</span> std::vector&lt;Double_t&gt; expectedchisqPerRun;</div>
<div class="line"><a id="l02297" name="l02297"></a><span class="lineno"> 2297</span> std::vector&lt;UInt_t&gt; ndfPerHisto;</div>
<div class="line"><a id="l02298" name="l02298"></a><span class="lineno"> 2298</span> </div>
<div class="line"><a id="l02299" name="l02299"></a><span class="lineno"> 2299</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); i++) {</div>
<div class="line"><a id="l02300" name="l02300"></a><span class="lineno"> 2300</span> param.push_back(<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fValue);</div>
<div class="line"><a id="l02301" name="l02301"></a><span class="lineno"> 2301</span> err.push_back(<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fStep);</div>
<div class="line"><a id="l02302" name="l02302"></a><span class="lineno"> 2302</span> }</div>
<div class="line"><a id="l02303" name="l02303"></a><span class="lineno"> 2303</span> </div>
<div class="line"><a id="l02304" name="l02304"></a><span class="lineno"> 2304</span> <span class="comment">// CalcExpectedChiSquare handles both, chisq and mlh</span></div>
<div class="line"><a id="l02305" name="l02305"></a><span class="lineno"> 2305</span> Bool_t ok;</div>
<div class="line"><a id="l02306" name="l02306"></a><span class="lineno"> 2306</span> <a class="code hl_typedef" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> par_r = <a class="code hl_function" href="classPFitter.html#a65dbfc5c91cea7c5d4577f14cf6e371b">ParamRound</a>(param, err, ok);</div>
<div class="line"><a id="l02307" name="l02307"></a><span class="lineno"> 2307</span> <span class="keywordflow">if</span> (!ok)</div>
<div class="line"><a id="l02308" name="l02308"></a><span class="lineno"> 2308</span> par_r = param;</div>
<div class="line"><a id="l02309" name="l02309"></a><span class="lineno"> 2309</span> <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;CalcExpectedChiSquare(par_r, totalExpectedChisq, expectedchisqPerRun);</div>
<div class="line"><a id="l02310" name="l02310"></a><span class="lineno"> 2310</span> </div>
<div class="line"><a id="l02311" name="l02311"></a><span class="lineno"> 2311</span> <span class="comment">// calculate chisq per run</span></div>
<div class="line"><a id="l02312" name="l02312"></a><span class="lineno"> 2312</span> std::vector&lt;Double_t&gt; chisqPerRun;</div>
<div class="line"><a id="l02313" name="l02313"></a><span class="lineno"> 2313</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrRunList()-&gt;size(); i++) {</div>
<div class="line"><a id="l02314" name="l02314"></a><span class="lineno"> 2314</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aec873931299b3bfab3b0d07d3f3cc719">fUseChi2</a>)</div>
<div class="line"><a id="l02315" name="l02315"></a><span class="lineno"> 2315</span> chisqPerRun.push_back(<a class="code hl_variable" href="classPFitter.html#a71fa2a64e6574b4582b21d4efe81991a">fRunListCollection</a>-&gt;GetSingleRunChisq(par_r, i));</div>
<div class="line"><a id="l02316" name="l02316"></a><span class="lineno"> 2316</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l02317" name="l02317"></a><span class="lineno"> 2317</span> chisqPerRun.push_back(<a class="code hl_variable" href="classPFitter.html#a71fa2a64e6574b4582b21d4efe81991a">fRunListCollection</a>-&gt;GetSingleRunMaximumLikelihood(par_r, i));</div>
<div class="line"><a id="l02318" name="l02318"></a><span class="lineno"> 2318</span> }</div>
<div class="line"><a id="l02319" name="l02319"></a><span class="lineno"> 2319</span> </div>
<div class="line"><a id="l02320" name="l02320"></a><span class="lineno"> 2320</span> <span class="keywordflow">if</span> (totalExpectedChisq != 0.0) { <span class="comment">// i.e. applicable for single histogram fits only</span></div>
<div class="line"><a id="l02321" name="l02321"></a><span class="lineno"> 2321</span> <span class="comment">// get the ndf&#39;s of the histos</span></div>
<div class="line"><a id="l02322" name="l02322"></a><span class="lineno"> 2322</span> UInt_t ndf_run;</div>
<div class="line"><a id="l02323" name="l02323"></a><span class="lineno"> 2323</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;expectedchisqPerRun.size(); i++) {</div>
<div class="line"><a id="l02324" name="l02324"></a><span class="lineno"> 2324</span> ndf_run = <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetNoOfFittedBins(i) - <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetNoOfFitParameters(i);</div>
<div class="line"><a id="l02325" name="l02325"></a><span class="lineno"> 2325</span> ndfPerHisto.push_back(ndf_run);</div>
<div class="line"><a id="l02326" name="l02326"></a><span class="lineno"> 2326</span> }</div>
<div class="line"><a id="l02327" name="l02327"></a><span class="lineno"> 2327</span> </div>
<div class="line"><a id="l02328" name="l02328"></a><span class="lineno"> 2328</span> <span class="comment">// feed the msr-file handler</span></div>
<div class="line"><a id="l02329" name="l02329"></a><span class="lineno"> 2329</span> <a class="code hl_struct" href="structPMsrStatisticStructure.html">PMsrStatisticStructure</a> *statistics = <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrStatistic();</div>
<div class="line"><a id="l02330" name="l02330"></a><span class="lineno"> 2330</span> <span class="keywordflow">if</span> (statistics) {</div>
<div class="line"><a id="l02331" name="l02331"></a><span class="lineno"> 2331</span> statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#ad0ba793859d97a1b068081bf39112ba0">fMinPerHisto</a> = chisqPerRun;</div>
<div class="line"><a id="l02332" name="l02332"></a><span class="lineno"> 2332</span> statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#a5e998c52bfd693f3a40c03bddd00d829">fMinExpected</a> = totalExpectedChisq;</div>
<div class="line"><a id="l02333" name="l02333"></a><span class="lineno"> 2333</span> statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#ac86728d8846968e8a9724aa00d328b73">fMinExpectedPerHisto</a> = expectedchisqPerRun;</div>
<div class="line"><a id="l02334" name="l02334"></a><span class="lineno"> 2334</span> statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#ac441f7616cf11a0ac282609de4d762fd">fNdfPerHisto</a> = ndfPerHisto;</div>
<div class="line"><a id="l02335" name="l02335"></a><span class="lineno"> 2335</span> }</div>
<div class="line"><a id="l02336" name="l02336"></a><span class="lineno"> 2336</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (chisqPerRun.size() &gt; 1) { <span class="comment">// in case expected chisq is not applicable like for asymmetry fits</span></div>
<div class="line"><a id="l02337" name="l02337"></a><span class="lineno"> 2337</span> UInt_t ndf_run = 0;</div>
<div class="line"><a id="l02338" name="l02338"></a><span class="lineno"> 2338</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;chisqPerRun.size(); i++) {</div>
<div class="line"><a id="l02339" name="l02339"></a><span class="lineno"> 2339</span> ndf_run = <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetNoOfFittedBins(i) - <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetNoOfFitParameters(i);</div>
<div class="line"><a id="l02340" name="l02340"></a><span class="lineno"> 2340</span> ndfPerHisto.push_back(ndf_run);</div>
<div class="line"><a id="l02341" name="l02341"></a><span class="lineno"> 2341</span> }</div>
<div class="line"><a id="l02342" name="l02342"></a><span class="lineno"> 2342</span> </div>
<div class="line"><a id="l02343" name="l02343"></a><span class="lineno"> 2343</span> <span class="comment">// feed the msr-file handler</span></div>
<div class="line"><a id="l02344" name="l02344"></a><span class="lineno"> 2344</span> <a class="code hl_struct" href="structPMsrStatisticStructure.html">PMsrStatisticStructure</a> *statistics = <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrStatistic();</div>
<div class="line"><a id="l02345" name="l02345"></a><span class="lineno"> 2345</span> <span class="keywordflow">if</span> (statistics) {</div>
<div class="line"><a id="l02346" name="l02346"></a><span class="lineno"> 2346</span> statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#ad0ba793859d97a1b068081bf39112ba0">fMinPerHisto</a> = chisqPerRun;</div>
<div class="line"><a id="l02347" name="l02347"></a><span class="lineno"> 2347</span> statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#ac441f7616cf11a0ac282609de4d762fd">fNdfPerHisto</a> = ndfPerHisto;</div>
<div class="line"><a id="l02348" name="l02348"></a><span class="lineno"> 2348</span> }</div>
<div class="line"><a id="l02349" name="l02349"></a><span class="lineno"> 2349</span> }</div>
<div class="line"><a id="l02350" name="l02350"></a><span class="lineno"> 2350</span> </div>
<div class="line"><a id="l02351" name="l02351"></a><span class="lineno"> 2351</span> <span class="comment">// check if sector command has been requested</span></div>
<div class="line"><a id="l02352" name="l02352"></a><span class="lineno"> 2352</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#a52f438ddd04f6d220d6777c589495c9c">fSectorFlag</a>) {</div>
<div class="line"><a id="l02353" name="l02353"></a><span class="lineno"> 2353</span> <a class="code hl_typedef" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> error;</div>
<div class="line"><a id="l02354" name="l02354"></a><span class="lineno"> 2354</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); i++)</div>
<div class="line"><a id="l02355" name="l02355"></a><span class="lineno"> 2355</span> error.push_back(<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fStep);</div>
<div class="line"><a id="l02356" name="l02356"></a><span class="lineno"> 2356</span> </div>
<div class="line"><a id="l02357" name="l02357"></a><span class="lineno"> 2357</span> <a class="code hl_function" href="classPFitter.html#ad62d0c925845fc266a07d26e12f28507">PrepareSector</a>(param, error);</div>
<div class="line"><a id="l02358" name="l02358"></a><span class="lineno"> 2358</span> }</div>
<div class="line"><a id="l02359" name="l02359"></a><span class="lineno"> 2359</span> </div>
<div class="line"><a id="l02360" name="l02360"></a><span class="lineno"> 2360</span> <span class="comment">// clean up</span></div>
<div class="line"><a id="l02361" name="l02361"></a><span class="lineno"> 2361</span> param.clear();</div>
<div class="line"><a id="l02362" name="l02362"></a><span class="lineno"> 2362</span> expectedchisqPerRun.clear();</div>
<div class="line"><a id="l02363" name="l02363"></a><span class="lineno"> 2363</span> ndfPerHisto.clear();</div>
<div class="line"><a id="l02364" name="l02364"></a><span class="lineno"> 2364</span> chisqPerRun.clear();</div>
<div class="line"><a id="l02365" name="l02365"></a><span class="lineno"> 2365</span> </div>
<div class="line"><a id="l02366" name="l02366"></a><span class="lineno"> 2366</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteSave(): will write minuit2 output file ...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l02367" name="l02367"></a><span class="lineno"> 2367</span> </div>
<div class="line"><a id="l02368" name="l02368"></a><span class="lineno"> 2368</span> std::ofstream fout;</div>
<div class="line"><a id="l02369" name="l02369"></a><span class="lineno"> 2369</span> </div>
<div class="line"><a id="l02370" name="l02370"></a><span class="lineno"> 2370</span> <span class="comment">// open minuit2 output file</span></div>
<div class="line"><a id="l02371" name="l02371"></a><span class="lineno"> 2371</span> <span class="keywordflow">if</span> (firstSave)</div>
<div class="line"><a id="l02372" name="l02372"></a><span class="lineno"> 2372</span> fout.open(<span class="stringliteral">&quot;MINUIT2.OUTPUT&quot;</span>, std::iostream::out);</div>
<div class="line"><a id="l02373" name="l02373"></a><span class="lineno"> 2373</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l02374" name="l02374"></a><span class="lineno"> 2374</span> fout.open(<span class="stringliteral">&quot;MINUIT2.OUTPUT&quot;</span>, std::iostream::out | std::iostream::app);</div>
<div class="line"><a id="l02375" name="l02375"></a><span class="lineno"> 2375</span> </div>
<div class="line"><a id="l02376" name="l02376"></a><span class="lineno"> 2376</span> <span class="keywordflow">if</span> (!fout.is_open()) {</div>
<div class="line"><a id="l02377" name="l02377"></a><span class="lineno"> 2377</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;**ERROR** PFitter::ExecuteSave() couldn&#39;t open MINUIT2.OUTPUT file&quot;</span>;</div>
<div class="line"><a id="l02378" name="l02378"></a><span class="lineno"> 2378</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l02379" name="l02379"></a><span class="lineno"> 2379</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l02380" name="l02380"></a><span class="lineno"> 2380</span> }</div>
<div class="line"><a id="l02381" name="l02381"></a><span class="lineno"> 2381</span> </div>
<div class="line"><a id="l02382" name="l02382"></a><span class="lineno"> 2382</span> <span class="comment">// write header</span></div>
<div class="line"><a id="l02383" name="l02383"></a><span class="lineno"> 2383</span> TDatime dt;</div>
<div class="line"><a id="l02384" name="l02384"></a><span class="lineno"> 2384</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;*************************************************************************&quot;</span>;</div>
<div class="line"><a id="l02385" name="l02385"></a><span class="lineno"> 2385</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; musrfit MINUIT2 output file from &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetFileName().Data() &lt;&lt; <span class="stringliteral">&quot; - &quot;</span> &lt;&lt; dt.AsSQLString();</div>
<div class="line"><a id="l02386" name="l02386"></a><span class="lineno"> 2386</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;*************************************************************************&quot;</span>;</div>
<div class="line"><a id="l02387" name="l02387"></a><span class="lineno"> 2387</span> fout &lt;&lt; std::endl;</div>
<div class="line"><a id="l02388" name="l02388"></a><span class="lineno"> 2388</span> </div>
<div class="line"><a id="l02389" name="l02389"></a><span class="lineno"> 2389</span> <span class="comment">// write elapsed times</span></div>
<div class="line"><a id="l02390" name="l02390"></a><span class="lineno"> 2390</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; elapsed times:&quot;</span>;</div>
<div class="line"><a id="l02391" name="l02391"></a><span class="lineno"> 2391</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#a26ccf4d18cb80457389162eaa5af8729">fElapsedTime</a>.size(); i++) {</div>
<div class="line"><a id="l02392" name="l02392"></a><span class="lineno"> 2392</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a26ccf4d18cb80457389162eaa5af8729">fElapsedTime</a>[i];</div>
<div class="line"><a id="l02393" name="l02393"></a><span class="lineno"> 2393</span> }</div>
<div class="line"><a id="l02394" name="l02394"></a><span class="lineno"> 2394</span> fout &lt;&lt; std::endl;</div>
<div class="line"><a id="l02395" name="l02395"></a><span class="lineno"> 2395</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;*************************************************************************&quot;</span>;</div>
<div class="line"><a id="l02396" name="l02396"></a><span class="lineno"> 2396</span> fout &lt;&lt; std::endl;</div>
<div class="line"><a id="l02397" name="l02397"></a><span class="lineno"> 2397</span> <a class="code hl_variable" href="classPFitter.html#a26ccf4d18cb80457389162eaa5af8729">fElapsedTime</a>.clear();</div>
<div class="line"><a id="l02398" name="l02398"></a><span class="lineno"> 2398</span> </div>
<div class="line"><a id="l02399" name="l02399"></a><span class="lineno"> 2399</span> <span class="comment">// write global information</span></div>
<div class="line"><a id="l02400" name="l02400"></a><span class="lineno"> 2400</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; Fval() = &quot;</span> &lt;&lt; mnState.Fval() &lt;&lt; <span class="stringliteral">&quot;, Edm() = &quot;</span> &lt;&lt; mnState.Edm() &lt;&lt; <span class="stringliteral">&quot;, NFcn() = &quot;</span> &lt;&lt; mnState.NFcn();</div>
<div class="line"><a id="l02401" name="l02401"></a><span class="lineno"> 2401</span> fout &lt;&lt; std::endl;</div>
<div class="line"><a id="l02402" name="l02402"></a><span class="lineno"> 2402</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;*************************************************************************&quot;</span>;</div>
<div class="line"><a id="l02403" name="l02403"></a><span class="lineno"> 2403</span> fout &lt;&lt; std::endl;</div>
<div class="line"><a id="l02404" name="l02404"></a><span class="lineno"> 2404</span> </div>
<div class="line"><a id="l02405" name="l02405"></a><span class="lineno"> 2405</span> <span class="comment">// identifiy the longest variable name for proper formating reasons</span></div>
<div class="line"><a id="l02406" name="l02406"></a><span class="lineno"> 2406</span> Int_t maxLength = 10;</div>
<div class="line"><a id="l02407" name="l02407"></a><span class="lineno"> 2407</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); i++) {</div>
<div class="line"><a id="l02408" name="l02408"></a><span class="lineno"> 2408</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fName.Length() &gt; maxLength)</div>
<div class="line"><a id="l02409" name="l02409"></a><span class="lineno"> 2409</span> maxLength = <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fName.Length() + 1;</div>
<div class="line"><a id="l02410" name="l02410"></a><span class="lineno"> 2410</span> }</div>
<div class="line"><a id="l02411" name="l02411"></a><span class="lineno"> 2411</span> </div>
<div class="line"><a id="l02412" name="l02412"></a><span class="lineno"> 2412</span> <span class="comment">// write parameters</span></div>
<div class="line"><a id="l02413" name="l02413"></a><span class="lineno"> 2413</span> <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a> = *(<a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrParamList()); <span class="comment">// get the update parameters back</span></div>
<div class="line"><a id="l02414" name="l02414"></a><span class="lineno"> 2414</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; PARAMETERS&quot;</span>;</div>
<div class="line"><a id="l02415" name="l02415"></a><span class="lineno"> 2415</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;-------------------------------------------------------------------------&quot;</span>;</div>
<div class="line"><a id="l02416" name="l02416"></a><span class="lineno"> 2416</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a id="l02417" name="l02417"></a><span class="lineno"> 2417</span> <span class="keywordflow">for</span> (Int_t j=0; j&lt;=maxLength-4; j++)</div>
<div class="line"><a id="l02418" name="l02418"></a><span class="lineno"> 2418</span> fout &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a id="l02419" name="l02419"></a><span class="lineno"> 2419</span> fout &lt;&lt; <span class="stringliteral">&quot;Parabolic Minos&quot;</span>;</div>
<div class="line"><a id="l02420" name="l02420"></a><span class="lineno"> 2420</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; No Name&quot;</span>;</div>
<div class="line"><a id="l02421" name="l02421"></a><span class="lineno"> 2421</span> <span class="keywordflow">for</span> (Int_t j=0; j&lt;=maxLength-4; j++)</div>
<div class="line"><a id="l02422" name="l02422"></a><span class="lineno"> 2422</span> fout &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a id="l02423" name="l02423"></a><span class="lineno"> 2423</span> fout &lt;&lt; <span class="stringliteral">&quot;Value Error Negative Positive Limits&quot;</span>;</div>
<div class="line"><a id="l02424" name="l02424"></a><span class="lineno"> 2424</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); i++) {</div>
<div class="line"><a id="l02425" name="l02425"></a><span class="lineno"> 2425</span> <span class="comment">// write no</span></div>
<div class="line"><a id="l02426" name="l02426"></a><span class="lineno"> 2426</span> fout.setf(std::ios::right, std::ios::adjustfield);</div>
<div class="line"><a id="l02427" name="l02427"></a><span class="lineno"> 2427</span> fout.width(3);</div>
<div class="line"><a id="l02428" name="l02428"></a><span class="lineno"> 2428</span> fout &lt;&lt; std::endl &lt;&lt; i+1 &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a id="l02429" name="l02429"></a><span class="lineno"> 2429</span> <span class="comment">// write name</span></div>
<div class="line"><a id="l02430" name="l02430"></a><span class="lineno"> 2430</span> fout &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fName.Data();</div>
<div class="line"><a id="l02431" name="l02431"></a><span class="lineno"> 2431</span> <span class="keywordflow">for</span> (Int_t j=0; j&lt;=maxLength-<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fName.Length(); j++)</div>
<div class="line"><a id="l02432" name="l02432"></a><span class="lineno"> 2432</span> fout &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a id="l02433" name="l02433"></a><span class="lineno"> 2433</span> <span class="comment">// write value</span></div>
<div class="line"><a id="l02434" name="l02434"></a><span class="lineno"> 2434</span> fout.setf(std::ios::left, std::ios::adjustfield);</div>
<div class="line"><a id="l02435" name="l02435"></a><span class="lineno"> 2435</span> fout.precision(6);</div>
<div class="line"><a id="l02436" name="l02436"></a><span class="lineno"> 2436</span> fout.width(10);</div>
<div class="line"><a id="l02437" name="l02437"></a><span class="lineno"> 2437</span> fout &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fValue &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a id="l02438" name="l02438"></a><span class="lineno"> 2438</span> <span class="comment">// write parabolic error</span></div>
<div class="line"><a id="l02439" name="l02439"></a><span class="lineno"> 2439</span> fout.setf(std::ios::left, std::ios::adjustfield);</div>
<div class="line"><a id="l02440" name="l02440"></a><span class="lineno"> 2440</span> fout.precision(6);</div>
<div class="line"><a id="l02441" name="l02441"></a><span class="lineno"> 2441</span> fout.width(10);</div>
<div class="line"><a id="l02442" name="l02442"></a><span class="lineno"> 2442</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fStep != 0.0)</div>
<div class="line"><a id="l02443" name="l02443"></a><span class="lineno"> 2443</span> fout &lt;&lt; <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Error(i) &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a id="l02444" name="l02444"></a><span class="lineno"> 2444</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l02445" name="l02445"></a><span class="lineno"> 2445</span> fout &lt;&lt; <span class="stringliteral">&quot;---&quot;</span>;</div>
<div class="line"><a id="l02446" name="l02446"></a><span class="lineno"> 2446</span> <span class="comment">// write minos errors</span></div>
<div class="line"><a id="l02447" name="l02447"></a><span class="lineno"> 2447</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fPosErrorPresent) {</div>
<div class="line"><a id="l02448" name="l02448"></a><span class="lineno"> 2448</span> fout.setf(std::ios::left, std::ios::adjustfield);</div>
<div class="line"><a id="l02449" name="l02449"></a><span class="lineno"> 2449</span> fout.precision(6);</div>
<div class="line"><a id="l02450" name="l02450"></a><span class="lineno"> 2450</span> fout.width(12);</div>
<div class="line"><a id="l02451" name="l02451"></a><span class="lineno"> 2451</span> fout &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fStep; </div>
<div class="line"><a id="l02452" name="l02452"></a><span class="lineno"> 2452</span> fout.setf(std::ios::left, std::ios::adjustfield);</div>
<div class="line"><a id="l02453" name="l02453"></a><span class="lineno"> 2453</span> fout.precision(6);</div>
<div class="line"><a id="l02454" name="l02454"></a><span class="lineno"> 2454</span> fout.width(11);</div>
<div class="line"><a id="l02455" name="l02455"></a><span class="lineno"> 2455</span> fout &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fPosError &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a id="l02456" name="l02456"></a><span class="lineno"> 2456</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02457" name="l02457"></a><span class="lineno"> 2457</span> fout.setf(std::ios::left, std::ios::adjustfield);</div>
<div class="line"><a id="l02458" name="l02458"></a><span class="lineno"> 2458</span> fout.width(12);</div>
<div class="line"><a id="l02459" name="l02459"></a><span class="lineno"> 2459</span> fout &lt;&lt; <span class="stringliteral">&quot;---&quot;</span>;</div>
<div class="line"><a id="l02460" name="l02460"></a><span class="lineno"> 2460</span> fout.setf(std::ios::left, std::ios::adjustfield);</div>
<div class="line"><a id="l02461" name="l02461"></a><span class="lineno"> 2461</span> fout.width(12);</div>
<div class="line"><a id="l02462" name="l02462"></a><span class="lineno"> 2462</span> fout &lt;&lt; <span class="stringliteral">&quot;---&quot;</span>;</div>
<div class="line"><a id="l02463" name="l02463"></a><span class="lineno"> 2463</span> }</div>
<div class="line"><a id="l02464" name="l02464"></a><span class="lineno"> 2464</span> <span class="comment">// write limits</span></div>
<div class="line"><a id="l02465" name="l02465"></a><span class="lineno"> 2465</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fNoOfParams &gt; 5) {</div>
<div class="line"><a id="l02466" name="l02466"></a><span class="lineno"> 2466</span> fout.setf(std::ios::left, std::ios::adjustfield);</div>
<div class="line"><a id="l02467" name="l02467"></a><span class="lineno"> 2467</span> fout.width(7);</div>
<div class="line"><a id="l02468" name="l02468"></a><span class="lineno"> 2468</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fLowerBoundaryPresent)</div>
<div class="line"><a id="l02469" name="l02469"></a><span class="lineno"> 2469</span> fout &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fLowerBoundary;</div>
<div class="line"><a id="l02470" name="l02470"></a><span class="lineno"> 2470</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l02471" name="l02471"></a><span class="lineno"> 2471</span> fout &lt;&lt; <span class="stringliteral">&quot;---&quot;</span>;</div>
<div class="line"><a id="l02472" name="l02472"></a><span class="lineno"> 2472</span> fout.setf(std::ios::left, std::ios::adjustfield);</div>
<div class="line"><a id="l02473" name="l02473"></a><span class="lineno"> 2473</span> fout.width(7);</div>
<div class="line"><a id="l02474" name="l02474"></a><span class="lineno"> 2474</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fUpperBoundaryPresent)</div>
<div class="line"><a id="l02475" name="l02475"></a><span class="lineno"> 2475</span> fout &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fUpperBoundary;</div>
<div class="line"><a id="l02476" name="l02476"></a><span class="lineno"> 2476</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l02477" name="l02477"></a><span class="lineno"> 2477</span> fout &lt;&lt; <span class="stringliteral">&quot;---&quot;</span>;</div>
<div class="line"><a id="l02478" name="l02478"></a><span class="lineno"> 2478</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02479" name="l02479"></a><span class="lineno"> 2479</span> fout.setf(std::ios::left, std::ios::adjustfield);</div>
<div class="line"><a id="l02480" name="l02480"></a><span class="lineno"> 2480</span> fout.width(7);</div>
<div class="line"><a id="l02481" name="l02481"></a><span class="lineno"> 2481</span> fout &lt;&lt; <span class="stringliteral">&quot;---&quot;</span>;</div>
<div class="line"><a id="l02482" name="l02482"></a><span class="lineno"> 2482</span> fout.setf(std::ios::left, std::ios::adjustfield);</div>
<div class="line"><a id="l02483" name="l02483"></a><span class="lineno"> 2483</span> fout.width(7);</div>
<div class="line"><a id="l02484" name="l02484"></a><span class="lineno"> 2484</span> fout &lt;&lt; <span class="stringliteral">&quot;---&quot;</span>;</div>
<div class="line"><a id="l02485" name="l02485"></a><span class="lineno"> 2485</span> }</div>
<div class="line"><a id="l02486" name="l02486"></a><span class="lineno"> 2486</span> }</div>
<div class="line"><a id="l02487" name="l02487"></a><span class="lineno"> 2487</span> fout &lt;&lt; std::endl;</div>
<div class="line"><a id="l02488" name="l02488"></a><span class="lineno"> 2488</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;*************************************************************************&quot;</span>;</div>
<div class="line"><a id="l02489" name="l02489"></a><span class="lineno"> 2489</span> </div>
<div class="line"><a id="l02490" name="l02490"></a><span class="lineno"> 2490</span> <span class="comment">// write covariance matrix</span></div>
<div class="line"><a id="l02491" name="l02491"></a><span class="lineno"> 2491</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; COVARIANCE MATRIX&quot;</span>;</div>
<div class="line"><a id="l02492" name="l02492"></a><span class="lineno"> 2492</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;-------------------------------------------------------------------------&quot;</span>;</div>
<div class="line"><a id="l02493" name="l02493"></a><span class="lineno"> 2493</span> <span class="keywordflow">if</span> (mnState.HasCovariance()) {</div>
<div class="line"><a id="l02494" name="l02494"></a><span class="lineno"> 2494</span> ROOT::Minuit2::MnUserCovariance cov = mnState.Covariance();</div>
<div class="line"><a id="l02495" name="l02495"></a><span class="lineno"> 2495</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;from &quot;</span> &lt;&lt; cov.Nrow() &lt;&lt; <span class="stringliteral">&quot; free parameters&quot;</span>;</div>
<div class="line"><a id="l02496" name="l02496"></a><span class="lineno"> 2496</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;cov.Nrow(); i++) {</div>
<div class="line"><a id="l02497" name="l02497"></a><span class="lineno"> 2497</span> fout &lt;&lt; std::endl;</div>
<div class="line"><a id="l02498" name="l02498"></a><span class="lineno"> 2498</span> <span class="keywordflow">for</span> (UInt_t j=0; j&lt;i; j++) {</div>
<div class="line"><a id="l02499" name="l02499"></a><span class="lineno"> 2499</span> fout.setf(std::ios::left, std::ios::adjustfield);</div>
<div class="line"><a id="l02500" name="l02500"></a><span class="lineno"> 2500</span> fout.precision(6);</div>
<div class="line"><a id="l02501" name="l02501"></a><span class="lineno"> 2501</span> <span class="keywordflow">if</span> (cov(i,j) &gt; 0.0) {</div>
<div class="line"><a id="l02502" name="l02502"></a><span class="lineno"> 2502</span> fout &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a id="l02503" name="l02503"></a><span class="lineno"> 2503</span> fout.width(13);</div>
<div class="line"><a id="l02504" name="l02504"></a><span class="lineno"> 2504</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02505" name="l02505"></a><span class="lineno"> 2505</span> fout.width(14);</div>
<div class="line"><a id="l02506" name="l02506"></a><span class="lineno"> 2506</span> }</div>
<div class="line"><a id="l02507" name="l02507"></a><span class="lineno"> 2507</span> fout &lt;&lt; cov(i,j);</div>
<div class="line"><a id="l02508" name="l02508"></a><span class="lineno"> 2508</span> }</div>
<div class="line"><a id="l02509" name="l02509"></a><span class="lineno"> 2509</span> }</div>
<div class="line"><a id="l02510" name="l02510"></a><span class="lineno"> 2510</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02511" name="l02511"></a><span class="lineno"> 2511</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; no covariance matrix available&quot;</span>;</div>
<div class="line"><a id="l02512" name="l02512"></a><span class="lineno"> 2512</span> }</div>
<div class="line"><a id="l02513" name="l02513"></a><span class="lineno"> 2513</span> fout &lt;&lt; std::endl;</div>
<div class="line"><a id="l02514" name="l02514"></a><span class="lineno"> 2514</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;*************************************************************************&quot;</span>;</div>
<div class="line"><a id="l02515" name="l02515"></a><span class="lineno"> 2515</span> </div>
<div class="line"><a id="l02516" name="l02516"></a><span class="lineno"> 2516</span> <span class="comment">// write correlation matrix</span></div>
<div class="line"><a id="l02517" name="l02517"></a><span class="lineno"> 2517</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; CORRELATION COEFFICIENTS&quot;</span>;</div>
<div class="line"><a id="l02518" name="l02518"></a><span class="lineno"> 2518</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;-------------------------------------------------------------------------&quot;</span>;</div>
<div class="line"><a id="l02519" name="l02519"></a><span class="lineno"> 2519</span> <span class="keywordflow">if</span> (mnState.IsValid() &amp;&amp; mnState.HasCovariance()) {</div>
<div class="line"><a id="l02520" name="l02520"></a><span class="lineno"> 2520</span> ROOT::Minuit2::MnGlobalCorrelationCoeff corr = mnState.GlobalCC();</div>
<div class="line"><a id="l02521" name="l02521"></a><span class="lineno"> 2521</span> ROOT::Minuit2::MnUserCovariance cov = mnState.Covariance();</div>
<div class="line"><a id="l02522" name="l02522"></a><span class="lineno"> 2522</span> <a class="code hl_typedef" href="PMusr_8h.html#aa9c3d2033e27c38e4dbb98e26f1c4e54">PIntVector</a> parNo;</div>
<div class="line"><a id="l02523" name="l02523"></a><span class="lineno"> 2523</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; No Global &quot;</span>;</div>
<div class="line"><a id="l02524" name="l02524"></a><span class="lineno"> 2524</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); i++) {</div>
<div class="line"><a id="l02525" name="l02525"></a><span class="lineno"> 2525</span> <span class="comment">// only free parameters, i.e. not fixed, and not unsed ones!</span></div>
<div class="line"><a id="l02526" name="l02526"></a><span class="lineno"> 2526</span> <span class="keywordflow">if</span> ((<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fStep != 0) &amp;&amp; (<a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;ParameterInUse(i) &gt; 0) &amp;&amp; (!<a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Parameters().at(i).IsFixed())) {</div>
<div class="line"><a id="l02527" name="l02527"></a><span class="lineno"> 2527</span> fout.setf(std::ios::left, std::ios::adjustfield);</div>
<div class="line"><a id="l02528" name="l02528"></a><span class="lineno"> 2528</span> fout.width(9);</div>
<div class="line"><a id="l02529" name="l02529"></a><span class="lineno"> 2529</span> fout &lt;&lt; i+1;</div>
<div class="line"><a id="l02530" name="l02530"></a><span class="lineno"> 2530</span> parNo.push_back(i);</div>
<div class="line"><a id="l02531" name="l02531"></a><span class="lineno"> 2531</span> }</div>
<div class="line"><a id="l02532" name="l02532"></a><span class="lineno"> 2532</span> }</div>
<div class="line"><a id="l02533" name="l02533"></a><span class="lineno"> 2533</span> <span class="comment">// check that there is a correspondens between minuit2 and musrfit book keeping</span></div>
<div class="line"><a id="l02534" name="l02534"></a><span class="lineno"> 2534</span> <span class="keywordflow">if</span> (parNo.size() != cov.Nrow()) {</div>
<div class="line"><a id="l02535" name="l02535"></a><span class="lineno"> 2535</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;**SEVERE ERROR** in PFitter::ExecuteSave(): minuit2 and musrfit book keeping to not correspond! Unable to write correlation matrix.&quot;</span>;</div>
<div class="line"><a id="l02536" name="l02536"></a><span class="lineno"> 2536</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l02537" name="l02537"></a><span class="lineno"> 2537</span> } <span class="keywordflow">else</span> { <span class="comment">// book keeping is OK</span></div>
<div class="line"><a id="l02538" name="l02538"></a><span class="lineno"> 2538</span> TString title(<span class="stringliteral">&quot;Minuit2 Output Correlation Matrix for &quot;</span>);</div>
<div class="line"><a id="l02539" name="l02539"></a><span class="lineno"> 2539</span> title += <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetFileName();</div>
<div class="line"><a id="l02540" name="l02540"></a><span class="lineno"> 2540</span> title += <span class="stringliteral">&quot; - &quot;</span>;</div>
<div class="line"><a id="l02541" name="l02541"></a><span class="lineno"> 2541</span> title += dt.AsSQLString();</div>
<div class="line"><a id="l02542" name="l02542"></a><span class="lineno"> 2542</span> std::unique_ptr&lt;TCanvas&gt; ccorr = std::make_unique&lt;TCanvas&gt;(<span class="stringliteral">&quot;ccorr&quot;</span>, <span class="stringliteral">&quot;title&quot;</span>, 500, 500);</div>
<div class="line"><a id="l02543" name="l02543"></a><span class="lineno"> 2543</span> std::unique_ptr&lt;TH2D&gt; hcorr = std::make_unique&lt;TH2D&gt;(<span class="stringliteral">&quot;hcorr&quot;</span>, title, cov.Nrow(), 0.0, cov.Nrow(), cov.Nrow(), 0.0, cov.Nrow());</div>
<div class="line"><a id="l02544" name="l02544"></a><span class="lineno"> 2544</span> Double_t dval;</div>
<div class="line"><a id="l02545" name="l02545"></a><span class="lineno"> 2545</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;cov.Nrow(); i++) {</div>
<div class="line"><a id="l02546" name="l02546"></a><span class="lineno"> 2546</span> <span class="comment">// parameter number</span></div>
<div class="line"><a id="l02547" name="l02547"></a><span class="lineno"> 2547</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a id="l02548" name="l02548"></a><span class="lineno"> 2548</span> fout.setf(std::ios::left, std::ios::adjustfield);</div>
<div class="line"><a id="l02549" name="l02549"></a><span class="lineno"> 2549</span> fout.width(5);</div>
<div class="line"><a id="l02550" name="l02550"></a><span class="lineno"> 2550</span> fout &lt;&lt; parNo[i]+1;</div>
<div class="line"><a id="l02551" name="l02551"></a><span class="lineno"> 2551</span> <span class="comment">// global correlation coefficient</span></div>
<div class="line"><a id="l02552" name="l02552"></a><span class="lineno"> 2552</span> fout.setf(std::ios::left, std::ios::adjustfield);</div>
<div class="line"><a id="l02553" name="l02553"></a><span class="lineno"> 2553</span> fout.precision(6);</div>
<div class="line"><a id="l02554" name="l02554"></a><span class="lineno"> 2554</span> fout.width(12);</div>
<div class="line"><a id="l02555" name="l02555"></a><span class="lineno"> 2555</span> fout &lt;&lt; corr.GlobalCC()[i];</div>
<div class="line"><a id="l02556" name="l02556"></a><span class="lineno"> 2556</span> <span class="comment">// correlations matrix</span></div>
<div class="line"><a id="l02557" name="l02557"></a><span class="lineno"> 2557</span> <span class="keywordflow">for</span> (UInt_t j=0; j&lt;cov.Nrow(); j++) {</div>
<div class="line"><a id="l02558" name="l02558"></a><span class="lineno"> 2558</span> fout.setf(std::ios::left, std::ios::adjustfield);</div>
<div class="line"><a id="l02559" name="l02559"></a><span class="lineno"> 2559</span><span class="comment">// fout.precision(4);</span></div>
<div class="line"><a id="l02560" name="l02560"></a><span class="lineno"> 2560</span> <span class="keywordflow">if</span> (i==j) {</div>
<div class="line"><a id="l02561" name="l02561"></a><span class="lineno"> 2561</span> fout.width(9);</div>
<div class="line"><a id="l02562" name="l02562"></a><span class="lineno"> 2562</span> fout &lt;&lt; <span class="stringliteral">&quot; 1.0 &quot;</span>;</div>
<div class="line"><a id="l02563" name="l02563"></a><span class="lineno"> 2563</span> hcorr-&gt;Fill((Double_t)i,(Double_t)i,1.0);</div>
<div class="line"><a id="l02564" name="l02564"></a><span class="lineno"> 2564</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02565" name="l02565"></a><span class="lineno"> 2565</span> <span class="comment">// check that errors are none zero</span></div>
<div class="line"><a id="l02566" name="l02566"></a><span class="lineno"> 2566</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Error(parNo[i]) == 0.0) {</div>
<div class="line"><a id="l02567" name="l02567"></a><span class="lineno"> 2567</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;**SEVERE ERROR** in PFitter::ExecuteSave(): parameter no &quot;</span> &lt;&lt; parNo[i]+1 &lt;&lt; <span class="stringliteral">&quot; has an error == 0. Cannot correctly handle the correlation matrix.&quot;</span>;</div>
<div class="line"><a id="l02568" name="l02568"></a><span class="lineno"> 2568</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l02569" name="l02569"></a><span class="lineno"> 2569</span> dval = 0.0;</div>
<div class="line"><a id="l02570" name="l02570"></a><span class="lineno"> 2570</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Error(parNo[j]) == 0.0) {</div>
<div class="line"><a id="l02571" name="l02571"></a><span class="lineno"> 2571</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;**SEVERE ERROR** in PFitter::ExecuteSave(): parameter no &quot;</span> &lt;&lt; parNo[j]+1 &lt;&lt; <span class="stringliteral">&quot; has an error == 0. Cannot correctly handle the correlation matrix.&quot;</span>;</div>
<div class="line"><a id="l02572" name="l02572"></a><span class="lineno"> 2572</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l02573" name="l02573"></a><span class="lineno"> 2573</span> dval = 0.0;</div>
<div class="line"><a id="l02574" name="l02574"></a><span class="lineno"> 2574</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02575" name="l02575"></a><span class="lineno"> 2575</span> dval = cov(i,j)/(<a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Error(parNo[i])*<a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Error(parNo[j]));</div>
<div class="line"><a id="l02576" name="l02576"></a><span class="lineno"> 2576</span> }</div>
<div class="line"><a id="l02577" name="l02577"></a><span class="lineno"> 2577</span> hcorr-&gt;Fill((Double_t)i,(Double_t)j,dval);</div>
<div class="line"><a id="l02578" name="l02578"></a><span class="lineno"> 2578</span> <span class="comment">// handle precision, ugly but ...</span></div>
<div class="line"><a id="l02579" name="l02579"></a><span class="lineno"> 2579</span> <span class="keywordflow">if</span> (dval &lt; 1.0e-2) {</div>
<div class="line"><a id="l02580" name="l02580"></a><span class="lineno"> 2580</span> fout.precision(2);</div>
<div class="line"><a id="l02581" name="l02581"></a><span class="lineno"> 2581</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02582" name="l02582"></a><span class="lineno"> 2582</span> fout.precision(4);</div>
<div class="line"><a id="l02583" name="l02583"></a><span class="lineno"> 2583</span> }</div>
<div class="line"><a id="l02584" name="l02584"></a><span class="lineno"> 2584</span> <span class="comment">// handle sign</span></div>
<div class="line"><a id="l02585" name="l02585"></a><span class="lineno"> 2585</span> <span class="keywordflow">if</span> (dval &gt; 0.0) {</div>
<div class="line"><a id="l02586" name="l02586"></a><span class="lineno"> 2586</span> fout &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a id="l02587" name="l02587"></a><span class="lineno"> 2587</span> fout.width(7);</div>
<div class="line"><a id="l02588" name="l02588"></a><span class="lineno"> 2588</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02589" name="l02589"></a><span class="lineno"> 2589</span> fout.width(8);</div>
<div class="line"><a id="l02590" name="l02590"></a><span class="lineno"> 2590</span> }</div>
<div class="line"><a id="l02591" name="l02591"></a><span class="lineno"> 2591</span> fout &lt;&lt; dval &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a id="l02592" name="l02592"></a><span class="lineno"> 2592</span> }</div>
<div class="line"><a id="l02593" name="l02593"></a><span class="lineno"> 2593</span> }</div>
<div class="line"><a id="l02594" name="l02594"></a><span class="lineno"> 2594</span> }</div>
<div class="line"><a id="l02595" name="l02595"></a><span class="lineno"> 2595</span> <span class="comment">// write correlation matrix into a root file</span></div>
<div class="line"><a id="l02596" name="l02596"></a><span class="lineno"> 2596</span> TFile ff(<span class="stringliteral">&quot;MINUIT2.root&quot;</span>, <span class="stringliteral">&quot;recreate&quot;</span>);</div>
<div class="line"><a id="l02597" name="l02597"></a><span class="lineno"> 2597</span> ccorr-&gt;Draw();</div>
<div class="line"><a id="l02598" name="l02598"></a><span class="lineno"> 2598</span> <span class="keywordflow">if</span> (cov.Nrow() &lt;= 6)</div>
<div class="line"><a id="l02599" name="l02599"></a><span class="lineno"> 2599</span> hcorr-&gt;Draw(<span class="stringliteral">&quot;COLZTEXT&quot;</span>);</div>
<div class="line"><a id="l02600" name="l02600"></a><span class="lineno"> 2600</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l02601" name="l02601"></a><span class="lineno"> 2601</span> hcorr-&gt;Draw(<span class="stringliteral">&quot;COLZ&quot;</span>);</div>
<div class="line"><a id="l02602" name="l02602"></a><span class="lineno"> 2602</span> ccorr-&gt;Write(<span class="stringliteral">&quot;ccorr&quot;</span>, TObject::kOverwrite, <span class="keyword">sizeof</span>(ccorr));</div>
<div class="line"><a id="l02603" name="l02603"></a><span class="lineno"> 2603</span> hcorr-&gt;Write(<span class="stringliteral">&quot;hcorr&quot;</span>, TObject::kOverwrite, <span class="keyword">sizeof</span>(hcorr));</div>
<div class="line"><a id="l02604" name="l02604"></a><span class="lineno"> 2604</span> ff.Close();</div>
<div class="line"><a id="l02605" name="l02605"></a><span class="lineno"> 2605</span> </div>
<div class="line"><a id="l02606" name="l02606"></a><span class="lineno"> 2606</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#a56ae801deb287de03641d87b6461d9f8">fYamlOut</a>) {</div>
<div class="line"><a id="l02607" name="l02607"></a><span class="lineno"> 2607</span> <span class="comment">// write the fit results to an easy-to-read/parse yaml file</span></div>
<div class="line"><a id="l02608" name="l02608"></a><span class="lineno"> 2608</span> <span class="comment">// note: the block names follow those used by Python library iminuit</span></div>
<div class="line"><a id="l02609" name="l02609"></a><span class="lineno"> 2609</span> <span class="comment">// https://github.com/scikit-hep/iminuit</span></div>
<div class="line"><a id="l02610" name="l02610"></a><span class="lineno"> 2610</span> </div>
<div class="line"><a id="l02611" name="l02611"></a><span class="lineno"> 2611</span> <span class="comment">// dynamically name the yaml output file</span></div>
<div class="line"><a id="l02612" name="l02612"></a><span class="lineno"> 2612</span> <span class="comment">// https://stackoverflow.com/a/25389052</span></div>
<div class="line"><a id="l02613" name="l02613"></a><span class="lineno"> 2613</span> std::string yaml_filename(<a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetFileName().Data());</div>
<div class="line"><a id="l02614" name="l02614"></a><span class="lineno"> 2614</span> <span class="keyword">const</span> std::string msr_ext(<span class="stringliteral">&quot;.msr&quot;</span>);</div>
<div class="line"><a id="l02615" name="l02615"></a><span class="lineno"> 2615</span> yaml_filename.replace(yaml_filename.find(msr_ext), msr_ext.length(),</div>
<div class="line"><a id="l02616" name="l02616"></a><span class="lineno"> 2616</span> <span class="stringliteral">&quot;.yaml&quot;</span>);</div>
<div class="line"><a id="l02617" name="l02617"></a><span class="lineno"> 2617</span> </div>
<div class="line"><a id="l02618" name="l02618"></a><span class="lineno"> 2618</span> <span class="comment">// define yaml&#39;s 2-space indentation</span></div>
<div class="line"><a id="l02619" name="l02619"></a><span class="lineno"> 2619</span> <span class="keyword">const</span> std::string yaml_indent(<span class="stringliteral">&quot; &quot;</span>);</div>
<div class="line"><a id="l02620" name="l02620"></a><span class="lineno"> 2620</span> </div>
<div class="line"><a id="l02621" name="l02621"></a><span class="lineno"> 2621</span> <span class="comment">// open the yaml file for writing</span></div>
<div class="line"><a id="l02622" name="l02622"></a><span class="lineno"> 2622</span> std::ofstream yaml_file(yaml_filename);</div>
<div class="line"><a id="l02623" name="l02623"></a><span class="lineno"> 2623</span> </div>
<div class="line"><a id="l02624" name="l02624"></a><span class="lineno"> 2624</span> <span class="comment">// number formatting of the output</span></div>
<div class="line"><a id="l02625" name="l02625"></a><span class="lineno"> 2625</span> yaml_file &lt;&lt; std::scientific &lt;&lt; std::setprecision(16);</div>
<div class="line"><a id="l02626" name="l02626"></a><span class="lineno"> 2626</span> </div>
<div class="line"><a id="l02627" name="l02627"></a><span class="lineno"> 2627</span> <span class="comment">// write the parameter values</span></div>
<div class="line"><a id="l02628" name="l02628"></a><span class="lineno"> 2628</span> yaml_file &lt;&lt; <span class="stringliteral">&quot;values:\n&quot;</span>;</div>
<div class="line"><a id="l02629" name="l02629"></a><span class="lineno"> 2629</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); ++i) {</div>
<div class="line"><a id="l02630" name="l02630"></a><span class="lineno"> 2630</span> yaml_file &lt;&lt; yaml_indent &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fName.Data() &lt;&lt; <span class="stringliteral">&quot;: &quot;</span></div>
<div class="line"><a id="l02631" name="l02631"></a><span class="lineno"> 2631</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fValue &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l02632" name="l02632"></a><span class="lineno"> 2632</span> }</div>
<div class="line"><a id="l02633" name="l02633"></a><span class="lineno"> 2633</span> </div>
<div class="line"><a id="l02634" name="l02634"></a><span class="lineno"> 2634</span> <span class="comment">// write the parabolic errors</span></div>
<div class="line"><a id="l02635" name="l02635"></a><span class="lineno"> 2635</span> yaml_file &lt;&lt; <span class="stringliteral">&quot;errors:\n&quot;</span>;</div>
<div class="line"><a id="l02636" name="l02636"></a><span class="lineno"> 2636</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); ++i) {</div>
<div class="line"><a id="l02637" name="l02637"></a><span class="lineno"> 2637</span> yaml_file &lt;&lt; yaml_indent &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fName.Data() &lt;&lt; <span class="stringliteral">&quot;: &quot;</span></div>
<div class="line"><a id="l02638" name="l02638"></a><span class="lineno"> 2638</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Error(i) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l02639" name="l02639"></a><span class="lineno"> 2639</span> }</div>
<div class="line"><a id="l02640" name="l02640"></a><span class="lineno"> 2640</span> </div>
<div class="line"><a id="l02641" name="l02641"></a><span class="lineno"> 2641</span> <span class="comment">// write the minos errors</span></div>
<div class="line"><a id="l02642" name="l02642"></a><span class="lineno"> 2642</span> yaml_file &lt;&lt; <span class="stringliteral">&quot;mnerrors:\n&quot;</span>;</div>
<div class="line"><a id="l02643" name="l02643"></a><span class="lineno"> 2643</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); ++i) {</div>
<div class="line"><a id="l02644" name="l02644"></a><span class="lineno"> 2644</span> <span class="comment">// use boost&#39;s implementation of a variant, which can be streamed by</span></div>
<div class="line"><a id="l02645" name="l02645"></a><span class="lineno"> 2645</span> <span class="comment">// default - see: https://stackoverflow.com/q/47168477</span></div>
<div class="line"><a id="l02646" name="l02646"></a><span class="lineno"> 2646</span> boost::variant&lt;double, std::string&gt; positive_error, negative_error;</div>
<div class="line"><a id="l02647" name="l02647"></a><span class="lineno"> 2647</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fPosErrorPresent) {</div>
<div class="line"><a id="l02648" name="l02648"></a><span class="lineno"> 2648</span> positive_error = <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fPosError;</div>
<div class="line"><a id="l02649" name="l02649"></a><span class="lineno"> 2649</span> negative_error = <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fStep;</div>
<div class="line"><a id="l02650" name="l02650"></a><span class="lineno"> 2650</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02651" name="l02651"></a><span class="lineno"> 2651</span> positive_error = <span class="stringliteral">&quot;null&quot;</span>;</div>
<div class="line"><a id="l02652" name="l02652"></a><span class="lineno"> 2652</span> negative_error = <span class="stringliteral">&quot;null&quot;</span>;</div>
<div class="line"><a id="l02653" name="l02653"></a><span class="lineno"> 2653</span> }</div>
<div class="line"><a id="l02654" name="l02654"></a><span class="lineno"> 2654</span> </div>
<div class="line"><a id="l02655" name="l02655"></a><span class="lineno"> 2655</span> yaml_file &lt;&lt; yaml_indent &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fName.Data() &lt;&lt; <span class="stringliteral">&quot;:\n&quot;</span>;</div>
<div class="line"><a id="l02656" name="l02656"></a><span class="lineno"> 2656</span> yaml_file &lt;&lt; yaml_indent &lt;&lt; yaml_indent</div>
<div class="line"><a id="l02657" name="l02657"></a><span class="lineno"> 2657</span> &lt;&lt; <span class="stringliteral">&quot;positive: &quot;</span> &lt;&lt; positive_error &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l02658" name="l02658"></a><span class="lineno"> 2658</span> yaml_file &lt;&lt; yaml_indent &lt;&lt; yaml_indent</div>
<div class="line"><a id="l02659" name="l02659"></a><span class="lineno"> 2659</span> &lt;&lt; <span class="stringliteral">&quot;negative: &quot;</span> &lt;&lt; negative_error &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l02660" name="l02660"></a><span class="lineno"> 2660</span> }</div>
<div class="line"><a id="l02661" name="l02661"></a><span class="lineno"> 2661</span> </div>
<div class="line"><a id="l02662" name="l02662"></a><span class="lineno"> 2662</span> <span class="comment">// write the parameter limits</span></div>
<div class="line"><a id="l02663" name="l02663"></a><span class="lineno"> 2663</span> yaml_file &lt;&lt; <span class="stringliteral">&quot;limits:\n&quot;</span>;</div>
<div class="line"><a id="l02664" name="l02664"></a><span class="lineno"> 2664</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); ++i) {</div>
<div class="line"><a id="l02665" name="l02665"></a><span class="lineno"> 2665</span> <span class="comment">// use boost&#39;s implementation of a variant, which can be streamed by</span></div>
<div class="line"><a id="l02666" name="l02666"></a><span class="lineno"> 2666</span> <span class="comment">// default - see: https://stackoverflow.com/q/47168477</span></div>
<div class="line"><a id="l02667" name="l02667"></a><span class="lineno"> 2667</span> boost::variant&lt;double, std::string&gt; upper_limit, lower_limit;</div>
<div class="line"><a id="l02668" name="l02668"></a><span class="lineno"> 2668</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fLowerBoundaryPresent) {</div>
<div class="line"><a id="l02669" name="l02669"></a><span class="lineno"> 2669</span> lower_limit = <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fLowerBoundary;</div>
<div class="line"><a id="l02670" name="l02670"></a><span class="lineno"> 2670</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02671" name="l02671"></a><span class="lineno"> 2671</span> lower_limit = <span class="stringliteral">&quot;null&quot;</span>;</div>
<div class="line"><a id="l02672" name="l02672"></a><span class="lineno"> 2672</span> }</div>
<div class="line"><a id="l02673" name="l02673"></a><span class="lineno"> 2673</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fUpperBoundaryPresent) {</div>
<div class="line"><a id="l02674" name="l02674"></a><span class="lineno"> 2674</span> upper_limit = <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fUpperBoundary;</div>
<div class="line"><a id="l02675" name="l02675"></a><span class="lineno"> 2675</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02676" name="l02676"></a><span class="lineno"> 2676</span> upper_limit = <span class="stringliteral">&quot;null&quot;</span>;</div>
<div class="line"><a id="l02677" name="l02677"></a><span class="lineno"> 2677</span> }</div>
<div class="line"><a id="l02678" name="l02678"></a><span class="lineno"> 2678</span> </div>
<div class="line"><a id="l02679" name="l02679"></a><span class="lineno"> 2679</span> yaml_file &lt;&lt; yaml_indent &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fName.Data() &lt;&lt; <span class="stringliteral">&quot;:\n&quot;</span>;</div>
<div class="line"><a id="l02680" name="l02680"></a><span class="lineno"> 2680</span> yaml_file &lt;&lt; yaml_indent &lt;&lt; yaml_indent &lt;&lt; <span class="stringliteral">&quot;lower: &quot;</span> &lt;&lt; lower_limit</div>
<div class="line"><a id="l02681" name="l02681"></a><span class="lineno"> 2681</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l02682" name="l02682"></a><span class="lineno"> 2682</span> yaml_file &lt;&lt; yaml_indent &lt;&lt; yaml_indent &lt;&lt; <span class="stringliteral">&quot;upper: &quot;</span> &lt;&lt; upper_limit</div>
<div class="line"><a id="l02683" name="l02683"></a><span class="lineno"> 2683</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l02684" name="l02684"></a><span class="lineno"> 2684</span> }</div>
<div class="line"><a id="l02685" name="l02685"></a><span class="lineno"> 2685</span> </div>
<div class="line"><a id="l02686" name="l02686"></a><span class="lineno"> 2686</span> <span class="comment">// write if the parameter is fixed</span></div>
<div class="line"><a id="l02687" name="l02687"></a><span class="lineno"> 2687</span> yaml_file &lt;&lt; <span class="stringliteral">&quot;fixed:\n&quot;</span>;</div>
<div class="line"><a id="l02688" name="l02688"></a><span class="lineno"> 2688</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); ++i) {</div>
<div class="line"><a id="l02689" name="l02689"></a><span class="lineno"> 2689</span> std::string is_fixed = <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fStep == 0.0 ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span>;</div>
<div class="line"><a id="l02690" name="l02690"></a><span class="lineno"> 2690</span> yaml_file &lt;&lt; yaml_indent &lt;&lt; <a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>[i].fName.Data() &lt;&lt; <span class="stringliteral">&quot;: &quot;</span> &lt;&lt; is_fixed</div>
<div class="line"><a id="l02691" name="l02691"></a><span class="lineno"> 2691</span> &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l02692" name="l02692"></a><span class="lineno"> 2692</span> }</div>
<div class="line"><a id="l02693" name="l02693"></a><span class="lineno"> 2693</span> </div>
<div class="line"><a id="l02694" name="l02694"></a><span class="lineno"> 2694</span> <span class="comment">// write the covariance matrix (omitting fixed parameters)</span></div>
<div class="line"><a id="l02695" name="l02695"></a><span class="lineno"> 2695</span> yaml_file &lt;&lt; <span class="stringliteral">&quot;covariance:\n&quot;</span>;</div>
<div class="line"><a id="l02696" name="l02696"></a><span class="lineno"> 2696</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; cov.Nrow(); ++i) {</div>
<div class="line"><a id="l02697" name="l02697"></a><span class="lineno"> 2697</span> yaml_file &lt;&lt; yaml_indent &lt;&lt; mnState.Name(parNo[i]) &lt;&lt; <span class="stringliteral">&quot;:\n&quot;</span>;</div>
<div class="line"><a id="l02698" name="l02698"></a><span class="lineno"> 2698</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j &lt; cov.Nrow(); ++j) {</div>
<div class="line"><a id="l02699" name="l02699"></a><span class="lineno"> 2699</span> yaml_file &lt;&lt; yaml_indent &lt;&lt; yaml_indent &lt;&lt; mnState.Name(parNo[j])</div>
<div class="line"><a id="l02700" name="l02700"></a><span class="lineno"> 2700</span> &lt;&lt; <span class="stringliteral">&quot;: &quot;</span> &lt;&lt; cov(i, j) &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l02701" name="l02701"></a><span class="lineno"> 2701</span> }</div>
<div class="line"><a id="l02702" name="l02702"></a><span class="lineno"> 2702</span> }</div>
<div class="line"><a id="l02703" name="l02703"></a><span class="lineno"> 2703</span> </div>
<div class="line"><a id="l02704" name="l02704"></a><span class="lineno"> 2704</span> <span class="comment">// write the correlation matrix (omitting fixed parameters)</span></div>
<div class="line"><a id="l02705" name="l02705"></a><span class="lineno"> 2705</span> yaml_file &lt;&lt; <span class="stringliteral">&quot;correlation:\n&quot;</span>;</div>
<div class="line"><a id="l02706" name="l02706"></a><span class="lineno"> 2706</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; cov.Nrow(); ++i) {</div>
<div class="line"><a id="l02707" name="l02707"></a><span class="lineno"> 2707</span> yaml_file &lt;&lt; yaml_indent &lt;&lt; mnState.Name(parNo[i]) &lt;&lt; <span class="stringliteral">&quot;:\n&quot;</span>;</div>
<div class="line"><a id="l02708" name="l02708"></a><span class="lineno"> 2708</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> j = 0; j &lt; cov.Nrow(); ++j) {</div>
<div class="line"><a id="l02709" name="l02709"></a><span class="lineno"> 2709</span> <span class="keywordtype">double</span> correlation =</div>
<div class="line"><a id="l02710" name="l02710"></a><span class="lineno"> 2710</span> i == j ? 1.0</div>
<div class="line"><a id="l02711" name="l02711"></a><span class="lineno"> 2711</span> : cov(i, j) / (<a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Error(parNo[i]) *</div>
<div class="line"><a id="l02712" name="l02712"></a><span class="lineno"> 2712</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Error(parNo[j]));</div>
<div class="line"><a id="l02713" name="l02713"></a><span class="lineno"> 2713</span> yaml_file &lt;&lt; yaml_indent &lt;&lt; yaml_indent &lt;&lt; mnState.Name(parNo[j])</div>
<div class="line"><a id="l02714" name="l02714"></a><span class="lineno"> 2714</span> &lt;&lt; <span class="stringliteral">&quot;: &quot;</span> &lt;&lt; correlation &lt;&lt; <span class="stringliteral">&quot;\n&quot;</span>;</div>
<div class="line"><a id="l02715" name="l02715"></a><span class="lineno"> 2715</span> }</div>
<div class="line"><a id="l02716" name="l02716"></a><span class="lineno"> 2716</span> }</div>
<div class="line"><a id="l02717" name="l02717"></a><span class="lineno"> 2717</span> </div>
<div class="line"><a id="l02718" name="l02718"></a><span class="lineno"> 2718</span> <span class="comment">// close the yaml file</span></div>
<div class="line"><a id="l02719" name="l02719"></a><span class="lineno"> 2719</span> yaml_file.close();</div>
<div class="line"><a id="l02720" name="l02720"></a><span class="lineno"> 2720</span> }</div>
<div class="line"><a id="l02721" name="l02721"></a><span class="lineno"> 2721</span> }</div>
<div class="line"><a id="l02722" name="l02722"></a><span class="lineno"> 2722</span> parNo.clear(); <span class="comment">// clean up</span></div>
<div class="line"><a id="l02723" name="l02723"></a><span class="lineno"> 2723</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02724" name="l02724"></a><span class="lineno"> 2724</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; no correlation coefficients available&quot;</span>;</div>
<div class="line"><a id="l02725" name="l02725"></a><span class="lineno"> 2725</span> }</div>
<div class="line"><a id="l02726" name="l02726"></a><span class="lineno"> 2726</span> </div>
<div class="line"><a id="l02727" name="l02727"></a><span class="lineno"> 2727</span> fout &lt;&lt; std::endl;</div>
<div class="line"><a id="l02728" name="l02728"></a><span class="lineno"> 2728</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;*************************************************************************&quot;</span>;</div>
<div class="line"><a id="l02729" name="l02729"></a><span class="lineno"> 2729</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; chisq/maxLH RESULT &quot;</span>;</div>
<div class="line"><a id="l02730" name="l02730"></a><span class="lineno"> 2730</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;*************************************************************************&quot;</span>;</div>
<div class="line"><a id="l02731" name="l02731"></a><span class="lineno"> 2731</span> <a class="code hl_struct" href="structPMsrStatisticStructure.html">PMsrStatisticStructure</a> *statistics = <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrStatistic();</div>
<div class="line"><a id="l02732" name="l02732"></a><span class="lineno"> 2732</span> </div>
<div class="line"><a id="l02733" name="l02733"></a><span class="lineno"> 2733</span> <span class="comment">// get time range and write it</span></div>
<div class="line"><a id="l02734" name="l02734"></a><span class="lineno"> 2734</span> Double_t fitStartTime = <a class="code hl_define" href="PMusr_8h.html#a5357075a43f071649455751fedd2bdf5">PMUSR_UNDEFINED</a>, fitEndTime = <a class="code hl_define" href="PMusr_8h.html#a5357075a43f071649455751fedd2bdf5">PMUSR_UNDEFINED</a>;</div>
<div class="line"><a id="l02735" name="l02735"></a><span class="lineno"> 2735</span> <span class="comment">// first check if there is a global block with a valid time range</span></div>
<div class="line"><a id="l02736" name="l02736"></a><span class="lineno"> 2736</span> <a class="code hl_class" href="classPMsrGlobalBlock.html">PMsrGlobalBlock</a> *global = <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrGlobal();</div>
<div class="line"><a id="l02737" name="l02737"></a><span class="lineno"> 2737</span> fitStartTime = global-&gt;<a class="code hl_function" href="classPMsrGlobalBlock.html#a48a649bdcb8aa7c2a27e026a1ec391f6">GetFitRange</a>(0);</div>
<div class="line"><a id="l02738" name="l02738"></a><span class="lineno"> 2738</span> fitEndTime = global-&gt;<a class="code hl_function" href="classPMsrGlobalBlock.html#a48a649bdcb8aa7c2a27e026a1ec391f6">GetFitRange</a>(1);</div>
<div class="line"><a id="l02739" name="l02739"></a><span class="lineno"> 2739</span> <span class="keywordflow">if</span> (fitStartTime == <a class="code hl_define" href="PMusr_8h.html#a5357075a43f071649455751fedd2bdf5">PMUSR_UNDEFINED</a>) { <span class="comment">// no global time range, hence take the one from the first run block</span></div>
<div class="line"><a id="l02740" name="l02740"></a><span class="lineno"> 2740</span> <a class="code hl_typedef" href="PMusr_8h.html#a4073f6987fbfc4322a522b8d112520ae">PMsrRunList</a> *run = <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrRunList();</div>
<div class="line"><a id="l02741" name="l02741"></a><span class="lineno"> 2741</span> fitStartTime = run-&gt;at(0).GetFitRange(0);</div>
<div class="line"><a id="l02742" name="l02742"></a><span class="lineno"> 2742</span> fitEndTime = run-&gt;at(0).GetFitRange(1);</div>
<div class="line"><a id="l02743" name="l02743"></a><span class="lineno"> 2743</span> }</div>
<div class="line"><a id="l02744" name="l02744"></a><span class="lineno"> 2744</span> fout.setf(std::ios::fixed, std::ios::floatfield);</div>
<div class="line"><a id="l02745" name="l02745"></a><span class="lineno"> 2745</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; Time Range: &quot;</span> &lt;&lt; fitStartTime &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; fitEndTime &lt;&lt; std::endl;</div>
<div class="line"><a id="l02746" name="l02746"></a><span class="lineno"> 2746</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aec873931299b3bfab3b0d07d3f3cc719">fUseChi2</a>) {</div>
<div class="line"><a id="l02747" name="l02747"></a><span class="lineno"> 2747</span> fout.setf(std::ios::fixed, std::ios::floatfield);</div>
<div class="line"><a id="l02748" name="l02748"></a><span class="lineno"> 2748</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; chisq = &quot;</span> &lt;&lt; std::setprecision(4) &lt;&lt; statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#ab6391b7e859bdec423b200e0904459d6">fMin</a> &lt;&lt; <span class="stringliteral">&quot;, NDF = &quot;</span> &lt;&lt; statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#a0ba1b4b3346650a0bfca4ce930c3394c">fNdf</a> &lt;&lt; <span class="stringliteral">&quot;, chisq/NDF = &quot;</span> &lt;&lt; std::setprecision(6) &lt;&lt; statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#ab6391b7e859bdec423b200e0904459d6">fMin</a>/statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#a0ba1b4b3346650a0bfca4ce930c3394c">fNdf</a>;</div>
<div class="line"><a id="l02749" name="l02749"></a><span class="lineno"> 2749</span> <span class="keywordflow">if</span> (statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#a5e998c52bfd693f3a40c03bddd00d829">fMinExpected</a> &gt; 0)</div>
<div class="line"><a id="l02750" name="l02750"></a><span class="lineno"> 2750</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; chisq_e = &quot;</span> &lt;&lt; std::setprecision(4) &lt;&lt; statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#a5e998c52bfd693f3a40c03bddd00d829">fMinExpected</a> &lt;&lt; <span class="stringliteral">&quot;, NDF = &quot;</span> &lt;&lt; statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#a0ba1b4b3346650a0bfca4ce930c3394c">fNdf</a> &lt;&lt; <span class="stringliteral">&quot;, chisq_e/NDF = &quot;</span> &lt;&lt; std::setprecision(6) &lt;&lt; statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#a5e998c52bfd693f3a40c03bddd00d829">fMinExpected</a>/statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#a0ba1b4b3346650a0bfca4ce930c3394c">fNdf</a>;</div>
<div class="line"><a id="l02751" name="l02751"></a><span class="lineno"> 2751</span> } <span class="keywordflow">else</span> { <span class="comment">// maxLH</span></div>
<div class="line"><a id="l02752" name="l02752"></a><span class="lineno"> 2752</span> fout.setf(std::ios::fixed, std::ios::floatfield);</div>
<div class="line"><a id="l02753" name="l02753"></a><span class="lineno"> 2753</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; maxLH = &quot;</span> &lt;&lt; std::setprecision(4) &lt;&lt; statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#ab6391b7e859bdec423b200e0904459d6">fMin</a> &lt;&lt; <span class="stringliteral">&quot;, NDF = &quot;</span> &lt;&lt; statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#a0ba1b4b3346650a0bfca4ce930c3394c">fNdf</a> &lt;&lt; <span class="stringliteral">&quot;, maxLH/NDF = &quot;</span> &lt;&lt; std::setprecision(6) &lt;&lt; statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#ab6391b7e859bdec423b200e0904459d6">fMin</a>/statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#a0ba1b4b3346650a0bfca4ce930c3394c">fNdf</a>;</div>
<div class="line"><a id="l02754" name="l02754"></a><span class="lineno"> 2754</span> <span class="keywordflow">if</span> (statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#a5e998c52bfd693f3a40c03bddd00d829">fMinExpected</a> &gt; 0)</div>
<div class="line"><a id="l02755" name="l02755"></a><span class="lineno"> 2755</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; maxLH_e = &quot;</span> &lt;&lt; std::setprecision(4) &lt;&lt; statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#a5e998c52bfd693f3a40c03bddd00d829">fMinExpected</a> &lt;&lt; <span class="stringliteral">&quot;, NDF = &quot;</span> &lt;&lt; statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#a0ba1b4b3346650a0bfca4ce930c3394c">fNdf</a> &lt;&lt; <span class="stringliteral">&quot;, maxLH_e/NDF = &quot;</span> &lt;&lt; std::setprecision(6) &lt;&lt; statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#a5e998c52bfd693f3a40c03bddd00d829">fMinExpected</a>/statistics-&gt;<a class="code hl_variable" href="structPMsrStatisticStructure.html#a0ba1b4b3346650a0bfca4ce930c3394c">fNdf</a>;</div>
<div class="line"><a id="l02756" name="l02756"></a><span class="lineno"> 2756</span> }</div>
<div class="line"><a id="l02757" name="l02757"></a><span class="lineno"> 2757</span> </div>
<div class="line"><a id="l02758" name="l02758"></a><span class="lineno"> 2758</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#a52f438ddd04f6d220d6777c589495c9c">fSectorFlag</a>)</div>
<div class="line"><a id="l02759" name="l02759"></a><span class="lineno"> 2759</span> <a class="code hl_function" href="classPFitter.html#a85b2a235f516f062d62e295f08ffdf60">ExecuteSector</a>(fout);</div>
<div class="line"><a id="l02760" name="l02760"></a><span class="lineno"> 2760</span> </div>
<div class="line"><a id="l02761" name="l02761"></a><span class="lineno"> 2761</span> fout &lt;&lt; std::endl;</div>
<div class="line"><a id="l02762" name="l02762"></a><span class="lineno"> 2762</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;*************************************************************************&quot;</span>;</div>
<div class="line"><a id="l02763" name="l02763"></a><span class="lineno"> 2763</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; DONE &quot;</span>;</div>
<div class="line"><a id="l02764" name="l02764"></a><span class="lineno"> 2764</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;*************************************************************************&quot;</span>;</div>
<div class="line"><a id="l02765" name="l02765"></a><span class="lineno"> 2765</span> fout &lt;&lt; std::endl &lt;&lt; std::endl;</div>
<div class="line"><a id="l02766" name="l02766"></a><span class="lineno"> 2766</span> </div>
<div class="line"><a id="l02767" name="l02767"></a><span class="lineno"> 2767</span> <span class="comment">// close MINUIT2.OUTPUT file</span></div>
<div class="line"><a id="l02768" name="l02768"></a><span class="lineno"> 2768</span> fout.close();</div>
<div class="line"><a id="l02769" name="l02769"></a><span class="lineno"> 2769</span> </div>
<div class="line"><a id="l02770" name="l02770"></a><span class="lineno"> 2770</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l02771" name="l02771"></a><span class="lineno"> 2771</span>}</div>
</div>
<div class="line"><a id="l02772" name="l02772"></a><span class="lineno"> 2772</span> </div>
<div class="line"><a id="l02773" name="l02773"></a><span class="lineno"> 2773</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l02774" name="l02774"></a><span class="lineno"> 2774</span><span class="comment">// ExecuteSimplex</span></div>
<div class="line"><a id="l02775" name="l02775"></a><span class="lineno"> 2775</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen02781" data-start="{" data-end="}">
<div class="line"><a id="l02781" name="l02781"></a><span class="lineno"><a class="line" href="classPFitter.html#a7a08f7f6e29868337846a4d5f984a693"> 2781</a></span>Bool_t <a class="code hl_function" href="classPFitter.html#a7a08f7f6e29868337846a4d5f984a693">PFitter::ExecuteSimplex</a>()</div>
<div class="line"><a id="l02782" name="l02782"></a><span class="lineno"> 2782</span>{</div>
<div class="line"><a id="l02783" name="l02783"></a><span class="lineno"> 2783</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteSimplex(): will call simplex ...&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l02784" name="l02784"></a><span class="lineno"> 2784</span> </div>
<div class="line"><a id="l02785" name="l02785"></a><span class="lineno"> 2785</span> <span class="comment">// create minimizer object</span></div>
<div class="line"><a id="l02786" name="l02786"></a><span class="lineno"> 2786</span> <span class="comment">// strategy is by default = &#39;default&#39;</span></div>
<div class="line"><a id="l02787" name="l02787"></a><span class="lineno"> 2787</span> ROOT::Minuit2::MnSimplex simplex((*<a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>), <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>, ROOT::Minuit2::MnStrategy{<a class="code hl_variable" href="classPFitter.html#a14588efda750524a6dd0c85a13199919">fStrategy</a>});</div>
<div class="line"><a id="l02788" name="l02788"></a><span class="lineno"> 2788</span> </div>
<div class="line"><a id="l02789" name="l02789"></a><span class="lineno"> 2789</span> <span class="comment">// minimize</span></div>
<div class="line"><a id="l02790" name="l02790"></a><span class="lineno"> 2790</span> <span class="comment">// maxfcn is 10*MINUIT2 Default maxfcn</span></div>
<div class="line"><a id="l02791" name="l02791"></a><span class="lineno"> 2791</span> UInt_t maxfcn = std::numeric_limits&lt;UInt_t&gt;::max();</div>
<div class="line"><a id="l02792" name="l02792"></a><span class="lineno"> 2792</span> <span class="comment">// tolerance = MINUIT2 Default tolerance</span></div>
<div class="line"><a id="l02793" name="l02793"></a><span class="lineno"> 2793</span> Double_t tolerance = 0.1;</div>
<div class="line"><a id="l02794" name="l02794"></a><span class="lineno"> 2794</span> <span class="comment">// keep track of elapsed time</span></div>
<div class="line"><a id="l02795" name="l02795"></a><span class="lineno"> 2795</span> Double_t start=0.0, end=0.0;</div>
<div class="line"><a id="l02796" name="l02796"></a><span class="lineno"> 2796</span> start=<a class="code hl_function" href="classPFitter.html#a313a48146cbacbf181a56838d5c52087">MilliTime</a>();</div>
<div class="line"><a id="l02797" name="l02797"></a><span class="lineno"> 2797</span> ROOT::Minuit2::FunctionMinimum min = simplex(maxfcn, tolerance);</div>
<div class="line"><a id="l02798" name="l02798"></a><span class="lineno"> 2798</span> end=<a class="code hl_function" href="classPFitter.html#a313a48146cbacbf181a56838d5c52087">MilliTime</a>();</div>
<div class="line"><a id="l02799" name="l02799"></a><span class="lineno"> 2799</span> std::cout &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteMinimize(): execution time for Simplex = &quot;</span> &lt;&lt; std::setprecision(3) &lt;&lt; (end-start)/1.0e3 &lt;&lt; <span class="stringliteral">&quot; sec.&quot;</span> &lt;&lt; std::endl;</div>
<div class="line"><a id="l02800" name="l02800"></a><span class="lineno"> 2800</span> TString str = TString::Format(<span class="stringliteral">&quot;Simplex: %.3f sec&quot;</span>, (end-start)/1.0e3);</div>
<div class="line"><a id="l02801" name="l02801"></a><span class="lineno"> 2801</span> <a class="code hl_variable" href="classPFitter.html#a26ccf4d18cb80457389162eaa5af8729">fElapsedTime</a>.push_back(str);</div>
<div class="line"><a id="l02802" name="l02802"></a><span class="lineno"> 2802</span> <span class="keywordflow">if</span> (!min.IsValid()) {</div>
<div class="line"><a id="l02803" name="l02803"></a><span class="lineno"> 2803</span> std::cerr &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;&gt;&gt; PFitter::ExecuteSimplex(): **WARNING**: Fit did not converge, sorry ...&quot;</span>;</div>
<div class="line"><a id="l02804" name="l02804"></a><span class="lineno"> 2804</span> std::cerr &lt;&lt; std::endl;</div>
<div class="line"><a id="l02805" name="l02805"></a><span class="lineno"> 2805</span> <a class="code hl_variable" href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">fIsValid</a> = <span class="keyword">false</span>;</div>
<div class="line"><a id="l02806" name="l02806"></a><span class="lineno"> 2806</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l02807" name="l02807"></a><span class="lineno"> 2807</span> }</div>
<div class="line"><a id="l02808" name="l02808"></a><span class="lineno"> 2808</span> </div>
<div class="line"><a id="l02809" name="l02809"></a><span class="lineno"> 2809</span> <span class="comment">// keep FunctionMinimum object</span></div>
<div class="line"><a id="l02810" name="l02810"></a><span class="lineno"> 2810</span> <a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a>.reset(<span class="keyword">new</span> ROOT::Minuit2::FunctionMinimum(min));</div>
<div class="line"><a id="l02811" name="l02811"></a><span class="lineno"> 2811</span> </div>
<div class="line"><a id="l02812" name="l02812"></a><span class="lineno"> 2812</span> <span class="comment">// keep user parameters</span></div>
<div class="line"><a id="l02813" name="l02813"></a><span class="lineno"> 2813</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a>)</div>
<div class="line"><a id="l02814" name="l02814"></a><span class="lineno"> 2814</span> <a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a> = <a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a>-&gt;UserParameters();</div>
<div class="line"><a id="l02815" name="l02815"></a><span class="lineno"> 2815</span> </div>
<div class="line"><a id="l02816" name="l02816"></a><span class="lineno"> 2816</span> <span class="comment">// fill run info</span></div>
<div class="line"><a id="l02817" name="l02817"></a><span class="lineno"> 2817</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); i++) {</div>
<div class="line"><a id="l02818" name="l02818"></a><span class="lineno"> 2818</span> Double_t dval = min.UserState().Value(i);</div>
<div class="line"><a id="l02819" name="l02819"></a><span class="lineno"> 2819</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#ad5838c829ba15d41f95a8c452e380028">fPhase</a>[i]) {</div>
<div class="line"><a id="l02820" name="l02820"></a><span class="lineno"> 2820</span> Int_t m = (Int_t)(dval/360.0);</div>
<div class="line"><a id="l02821" name="l02821"></a><span class="lineno"> 2821</span> dval = dval - m*360.0;</div>
<div class="line"><a id="l02822" name="l02822"></a><span class="lineno"> 2822</span> }</div>
<div class="line"><a id="l02823" name="l02823"></a><span class="lineno"> 2823</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrParamValue(i, dval);</div>
<div class="line"><a id="l02824" name="l02824"></a><span class="lineno"> 2824</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrParamStep(i, min.UserState().Error(i));</div>
<div class="line"><a id="l02825" name="l02825"></a><span class="lineno"> 2825</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrParamPosErrorPresent(i, <span class="keyword">false</span>);</div>
<div class="line"><a id="l02826" name="l02826"></a><span class="lineno"> 2826</span> }</div>
<div class="line"><a id="l02827" name="l02827"></a><span class="lineno"> 2827</span> </div>
<div class="line"><a id="l02828" name="l02828"></a><span class="lineno"> 2828</span> <span class="comment">// handle statistics</span></div>
<div class="line"><a id="l02829" name="l02829"></a><span class="lineno"> 2829</span> Double_t minVal = min.Fval();</div>
<div class="line"><a id="l02830" name="l02830"></a><span class="lineno"> 2830</span> UInt_t ndf = <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetTotalNoOfFittedBins();</div>
<div class="line"><a id="l02831" name="l02831"></a><span class="lineno"> 2831</span> <span class="comment">// subtract number of varied parameters from total no of fitted bins -&gt; ndf</span></div>
<div class="line"><a id="l02832" name="l02832"></a><span class="lineno"> 2832</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">fParams</a>.size(); i++) {</div>
<div class="line"><a id="l02833" name="l02833"></a><span class="lineno"> 2833</span> <span class="keywordflow">if</span> ((min.UserState().Error(i) != 0.0) &amp;&amp; !<a class="code hl_variable" href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">fMnUserParams</a>.Parameters().at(i).IsFixed())</div>
<div class="line"><a id="l02834" name="l02834"></a><span class="lineno"> 2834</span> ndf -= 1;</div>
<div class="line"><a id="l02835" name="l02835"></a><span class="lineno"> 2835</span> }</div>
<div class="line"><a id="l02836" name="l02836"></a><span class="lineno"> 2836</span> </div>
<div class="line"><a id="l02837" name="l02837"></a><span class="lineno"> 2837</span> <span class="comment">// feed run info with new statistics info</span></div>
<div class="line"><a id="l02838" name="l02838"></a><span class="lineno"> 2838</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrStatisticMin(minVal);</div>
<div class="line"><a id="l02839" name="l02839"></a><span class="lineno"> 2839</span> <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;SetMsrStatisticNdf(ndf);</div>
<div class="line"><a id="l02840" name="l02840"></a><span class="lineno"> 2840</span> </div>
<div class="line"><a id="l02841" name="l02841"></a><span class="lineno"> 2841</span> <a class="code hl_variable" href="classPFitter.html#ac41618f0b66f7ef4bfed953e9fea79bd">fConverged</a> = <span class="keyword">true</span>;</div>
<div class="line"><a id="l02842" name="l02842"></a><span class="lineno"> 2842</span> </div>
<div class="line"><a id="l02843" name="l02843"></a><span class="lineno"> 2843</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#a62a705860d144d6f0184a9a907c83678">fPrintLevel</a> &gt;= 2)</div>
<div class="line"><a id="l02844" name="l02844"></a><span class="lineno"> 2844</span> std::cout &lt;&lt; *<a class="code hl_variable" href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">fFcnMin</a> &lt;&lt; std::endl;</div>
<div class="line"><a id="l02845" name="l02845"></a><span class="lineno"> 2845</span> </div>
<div class="line"><a id="l02846" name="l02846"></a><span class="lineno"> 2846</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l02847" name="l02847"></a><span class="lineno"> 2847</span>}</div>
</div>
<div class="line"><a id="l02848" name="l02848"></a><span class="lineno"> 2848</span> </div>
<div class="line"><a id="l02849" name="l02849"></a><span class="lineno"> 2849</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l02850" name="l02850"></a><span class="lineno"> 2850</span><span class="comment">// PrepareSector</span></div>
<div class="line"><a id="l02851" name="l02851"></a><span class="lineno"> 2851</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen02858" data-start="{" data-end="}">
<div class="line"><a id="l02858" name="l02858"></a><span class="lineno"><a class="line" href="classPFitter.html#ad62d0c925845fc266a07d26e12f28507"> 2858</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="classPFitter.html#ad62d0c925845fc266a07d26e12f28507">PFitter::PrepareSector</a>(<a class="code hl_typedef" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> &amp;param, <a class="code hl_typedef" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> &amp;error)</div>
<div class="line"><a id="l02859" name="l02859"></a><span class="lineno"> 2859</span>{</div>
<div class="line"><a id="l02860" name="l02860"></a><span class="lineno"> 2860</span> Double_t val;</div>
<div class="line"><a id="l02861" name="l02861"></a><span class="lineno"> 2861</span> UInt_t ndf;</div>
<div class="line"><a id="l02862" name="l02862"></a><span class="lineno"> 2862</span> </div>
<div class="line"><a id="l02863" name="l02863"></a><span class="lineno"> 2863</span> Int_t usedParams = 0;</div>
<div class="line"><a id="l02864" name="l02864"></a><span class="lineno"> 2864</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;error.size(); i++) {</div>
<div class="line"><a id="l02865" name="l02865"></a><span class="lineno"> 2865</span> <span class="keywordflow">if</span> (error[i] != 0.0)</div>
<div class="line"><a id="l02866" name="l02866"></a><span class="lineno"> 2866</span> usedParams++;</div>
<div class="line"><a id="l02867" name="l02867"></a><span class="lineno"> 2867</span> }</div>
<div class="line"><a id="l02868" name="l02868"></a><span class="lineno"> 2868</span> </div>
<div class="line"><a id="l02869" name="l02869"></a><span class="lineno"> 2869</span> <a class="code hl_typedef" href="PMusr_8h.html#a93e3841e16074fd3c7648d8fc7b742f4">PDoublePairVector</a> secFitRange;</div>
<div class="line"><a id="l02870" name="l02870"></a><span class="lineno"> 2870</span> secFitRange.resize(1);</div>
<div class="line"><a id="l02871" name="l02871"></a><span class="lineno"> 2871</span> </div>
<div class="line"><a id="l02872" name="l02872"></a><span class="lineno"> 2872</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aec873931299b3bfab3b0d07d3f3cc719">fUseChi2</a>) {</div>
<div class="line"><a id="l02873" name="l02873"></a><span class="lineno"> 2873</span> Double_t totalExpectedChisq = 0.0;</div>
<div class="line"><a id="l02874" name="l02874"></a><span class="lineno"> 2874</span> <a class="code hl_typedef" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> expectedChisqPerRun;</div>
<div class="line"><a id="l02875" name="l02875"></a><span class="lineno"> 2875</span> <a class="code hl_typedef" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> chisqPerRun;</div>
<div class="line"><a id="l02876" name="l02876"></a><span class="lineno"> 2876</span> <span class="keywordflow">for</span> (UInt_t k=0; k&lt;<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>.size(); k++) {</div>
<div class="line"><a id="l02877" name="l02877"></a><span class="lineno"> 2877</span> <span class="comment">// set sector fit range</span></div>
<div class="line"><a id="l02878" name="l02878"></a><span class="lineno"> 2878</span> secFitRange[0].first = <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].GetTimeRangeFirst(0);</div>
<div class="line"><a id="l02879" name="l02879"></a><span class="lineno"> 2879</span> secFitRange[0].second = <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].GetTimeRangeLast();</div>
<div class="line"><a id="l02880" name="l02880"></a><span class="lineno"> 2880</span> <a class="code hl_variable" href="classPFitter.html#a71fa2a64e6574b4582b21d4efe81991a">fRunListCollection</a>-&gt;SetFitRange(secFitRange);</div>
<div class="line"><a id="l02881" name="l02881"></a><span class="lineno"> 2881</span> <span class="comment">// calculate chisq</span></div>
<div class="line"><a id="l02882" name="l02882"></a><span class="lineno"> 2882</span> val = (*fFitterFcn)(param);</div>
<div class="line"><a id="l02883" name="l02883"></a><span class="lineno"> 2883</span> <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].SetChisq(val);</div>
<div class="line"><a id="l02884" name="l02884"></a><span class="lineno"> 2884</span> <span class="comment">// calculate NDF</span></div>
<div class="line"><a id="l02885" name="l02885"></a><span class="lineno"> 2885</span> ndf = <span class="keyword">static_cast&lt;</span>UInt_t<span class="keyword">&gt;</span>(<a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetTotalNoOfFittedBins()) - usedParams;</div>
<div class="line"><a id="l02886" name="l02886"></a><span class="lineno"> 2886</span> <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].SetNDF(ndf);</div>
<div class="line"><a id="l02887" name="l02887"></a><span class="lineno"> 2887</span> <span class="comment">// calculate expected chisq</span></div>
<div class="line"><a id="l02888" name="l02888"></a><span class="lineno"> 2888</span> totalExpectedChisq = 0.0;</div>
<div class="line"><a id="l02889" name="l02889"></a><span class="lineno"> 2889</span> <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;CalcExpectedChiSquare(param, totalExpectedChisq, expectedChisqPerRun);</div>
<div class="line"><a id="l02890" name="l02890"></a><span class="lineno"> 2890</span> <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].SetExpectedChisq(totalExpectedChisq);</div>
<div class="line"><a id="l02891" name="l02891"></a><span class="lineno"> 2891</span> <span class="comment">// calculate chisq per run</span></div>
<div class="line"><a id="l02892" name="l02892"></a><span class="lineno"> 2892</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrRunList()-&gt;size(); i++) {</div>
<div class="line"><a id="l02893" name="l02893"></a><span class="lineno"> 2893</span> chisqPerRun.push_back(<a class="code hl_variable" href="classPFitter.html#a71fa2a64e6574b4582b21d4efe81991a">fRunListCollection</a>-&gt;GetSingleRunChisq(param, i));</div>
<div class="line"><a id="l02894" name="l02894"></a><span class="lineno"> 2894</span> <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].SetChisq(chisqPerRun[i], i);</div>
<div class="line"><a id="l02895" name="l02895"></a><span class="lineno"> 2895</span> <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].SetExpectedChisq(expectedChisqPerRun[i], i);</div>
<div class="line"><a id="l02896" name="l02896"></a><span class="lineno"> 2896</span> }</div>
<div class="line"><a id="l02897" name="l02897"></a><span class="lineno"> 2897</span> </div>
<div class="line"><a id="l02898" name="l02898"></a><span class="lineno"> 2898</span> <span class="keywordflow">if</span> (totalExpectedChisq != 0.0) {</div>
<div class="line"><a id="l02899" name="l02899"></a><span class="lineno"> 2899</span> UInt_t ndf_run = 0;</div>
<div class="line"><a id="l02900" name="l02900"></a><span class="lineno"> 2900</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;expectedChisqPerRun.size(); i++) {</div>
<div class="line"><a id="l02901" name="l02901"></a><span class="lineno"> 2901</span> ndf_run = <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetNoOfFittedBins(i) - <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetNoOfFitParameters(i);</div>
<div class="line"><a id="l02902" name="l02902"></a><span class="lineno"> 2902</span> <span class="keywordflow">if</span> (ndf_run &gt; 0) {</div>
<div class="line"><a id="l02903" name="l02903"></a><span class="lineno"> 2903</span> <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].SetNDF(ndf_run, i);</div>
<div class="line"><a id="l02904" name="l02904"></a><span class="lineno"> 2904</span> }</div>
<div class="line"><a id="l02905" name="l02905"></a><span class="lineno"> 2905</span> }</div>
<div class="line"><a id="l02906" name="l02906"></a><span class="lineno"> 2906</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (chisqPerRun.size() &gt; 0) { <span class="comment">// in case expected chisq is not applicable like for asymmetry fits</span></div>
<div class="line"><a id="l02907" name="l02907"></a><span class="lineno"> 2907</span> UInt_t ndf_run = 0;</div>
<div class="line"><a id="l02908" name="l02908"></a><span class="lineno"> 2908</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;chisqPerRun.size(); i++) {</div>
<div class="line"><a id="l02909" name="l02909"></a><span class="lineno"> 2909</span> ndf_run = <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetNoOfFittedBins(i) - <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetNoOfFitParameters(i);</div>
<div class="line"><a id="l02910" name="l02910"></a><span class="lineno"> 2910</span> <span class="keywordflow">if</span> (ndf_run &gt; 0) {</div>
<div class="line"><a id="l02911" name="l02911"></a><span class="lineno"> 2911</span> <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].SetNDF(ndf_run, i);</div>
<div class="line"><a id="l02912" name="l02912"></a><span class="lineno"> 2912</span> }</div>
<div class="line"><a id="l02913" name="l02913"></a><span class="lineno"> 2913</span> }</div>
<div class="line"><a id="l02914" name="l02914"></a><span class="lineno"> 2914</span> }</div>
<div class="line"><a id="l02915" name="l02915"></a><span class="lineno"> 2915</span> <span class="comment">// clean up</span></div>
<div class="line"><a id="l02916" name="l02916"></a><span class="lineno"> 2916</span> chisqPerRun.clear();</div>
<div class="line"><a id="l02917" name="l02917"></a><span class="lineno"> 2917</span> expectedChisqPerRun.clear();</div>
<div class="line"><a id="l02918" name="l02918"></a><span class="lineno"> 2918</span> }</div>
<div class="line"><a id="l02919" name="l02919"></a><span class="lineno"> 2919</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02920" name="l02920"></a><span class="lineno"> 2920</span> Double_t totalExpectedMaxLH = 0.0;</div>
<div class="line"><a id="l02921" name="l02921"></a><span class="lineno"> 2921</span> <a class="code hl_typedef" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> expectedMaxLHPerRun;</div>
<div class="line"><a id="l02922" name="l02922"></a><span class="lineno"> 2922</span> <a class="code hl_typedef" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> maxLHPerRun;</div>
<div class="line"><a id="l02923" name="l02923"></a><span class="lineno"> 2923</span> <span class="keywordflow">for</span> (UInt_t k=0; k&lt;<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>.size(); k++) {</div>
<div class="line"><a id="l02924" name="l02924"></a><span class="lineno"> 2924</span> <span class="comment">// set sector fit range</span></div>
<div class="line"><a id="l02925" name="l02925"></a><span class="lineno"> 2925</span> secFitRange[0].first = <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].GetTimeRangeFirst(0);</div>
<div class="line"><a id="l02926" name="l02926"></a><span class="lineno"> 2926</span> secFitRange[0].second = <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].GetTimeRangeLast();</div>
<div class="line"><a id="l02927" name="l02927"></a><span class="lineno"> 2927</span> <a class="code hl_variable" href="classPFitter.html#a71fa2a64e6574b4582b21d4efe81991a">fRunListCollection</a>-&gt;SetFitRange(secFitRange);</div>
<div class="line"><a id="l02928" name="l02928"></a><span class="lineno"> 2928</span> <span class="comment">// calculate maxLH</span></div>
<div class="line"><a id="l02929" name="l02929"></a><span class="lineno"> 2929</span> val = (*fFitterFcn)(param);</div>
<div class="line"><a id="l02930" name="l02930"></a><span class="lineno"> 2930</span> <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].SetChisq(val);</div>
<div class="line"><a id="l02931" name="l02931"></a><span class="lineno"> 2931</span> <span class="comment">// calculate NDF</span></div>
<div class="line"><a id="l02932" name="l02932"></a><span class="lineno"> 2932</span> ndf = <span class="keyword">static_cast&lt;</span>UInt_t<span class="keyword">&gt;</span>(<a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetTotalNoOfFittedBins()) - usedParams;</div>
<div class="line"><a id="l02933" name="l02933"></a><span class="lineno"> 2933</span> <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].SetNDF(ndf);</div>
<div class="line"><a id="l02934" name="l02934"></a><span class="lineno"> 2934</span> <span class="comment">// calculate expected maxLH</span></div>
<div class="line"><a id="l02935" name="l02935"></a><span class="lineno"> 2935</span> totalExpectedMaxLH = 0.0;</div>
<div class="line"><a id="l02936" name="l02936"></a><span class="lineno"> 2936</span> <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;CalcExpectedChiSquare(param, totalExpectedMaxLH, expectedMaxLHPerRun);</div>
<div class="line"><a id="l02937" name="l02937"></a><span class="lineno"> 2937</span> <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].SetExpectedChisq(totalExpectedMaxLH);</div>
<div class="line"><a id="l02938" name="l02938"></a><span class="lineno"> 2938</span> <span class="comment">// calculate maxLH per run</span></div>
<div class="line"><a id="l02939" name="l02939"></a><span class="lineno"> 2939</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetMsrRunList()-&gt;size(); i++) {</div>
<div class="line"><a id="l02940" name="l02940"></a><span class="lineno"> 2940</span> maxLHPerRun.push_back(<a class="code hl_variable" href="classPFitter.html#a71fa2a64e6574b4582b21d4efe81991a">fRunListCollection</a>-&gt;GetSingleRunMaximumLikelihood(param, i));</div>
<div class="line"><a id="l02941" name="l02941"></a><span class="lineno"> 2941</span> <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].SetChisq(maxLHPerRun[i], i);</div>
<div class="line"><a id="l02942" name="l02942"></a><span class="lineno"> 2942</span> <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].SetExpectedChisq(expectedMaxLHPerRun[i], i);</div>
<div class="line"><a id="l02943" name="l02943"></a><span class="lineno"> 2943</span> }</div>
<div class="line"><a id="l02944" name="l02944"></a><span class="lineno"> 2944</span> </div>
<div class="line"><a id="l02945" name="l02945"></a><span class="lineno"> 2945</span> <span class="keywordflow">if</span> (totalExpectedMaxLH != 0.0) {</div>
<div class="line"><a id="l02946" name="l02946"></a><span class="lineno"> 2946</span> UInt_t ndf_run = 0;</div>
<div class="line"><a id="l02947" name="l02947"></a><span class="lineno"> 2947</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;expectedMaxLHPerRun.size(); i++) {</div>
<div class="line"><a id="l02948" name="l02948"></a><span class="lineno"> 2948</span> ndf_run = <a class="code hl_variable" href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">fFitterFcn</a>-&gt;GetNoOfFittedBins(i) - <a class="code hl_variable" href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">fRunInfo</a>-&gt;GetNoOfFitParameters(i);</div>
<div class="line"><a id="l02949" name="l02949"></a><span class="lineno"> 2949</span> <span class="keywordflow">if</span> (ndf_run &gt; 0) {</div>
<div class="line"><a id="l02950" name="l02950"></a><span class="lineno"> 2950</span> <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[k].SetNDF(ndf_run, i);</div>
<div class="line"><a id="l02951" name="l02951"></a><span class="lineno"> 2951</span> }</div>
<div class="line"><a id="l02952" name="l02952"></a><span class="lineno"> 2952</span> }</div>
<div class="line"><a id="l02953" name="l02953"></a><span class="lineno"> 2953</span> }</div>
<div class="line"><a id="l02954" name="l02954"></a><span class="lineno"> 2954</span> </div>
<div class="line"><a id="l02955" name="l02955"></a><span class="lineno"> 2955</span> <span class="comment">// clean up</span></div>
<div class="line"><a id="l02956" name="l02956"></a><span class="lineno"> 2956</span> maxLHPerRun.clear();</div>
<div class="line"><a id="l02957" name="l02957"></a><span class="lineno"> 2957</span> expectedMaxLHPerRun.clear();</div>
<div class="line"><a id="l02958" name="l02958"></a><span class="lineno"> 2958</span> }</div>
<div class="line"><a id="l02959" name="l02959"></a><span class="lineno"> 2959</span> }</div>
<div class="line"><a id="l02960" name="l02960"></a><span class="lineno"> 2960</span>}</div>
</div>
<div class="line"><a id="l02961" name="l02961"></a><span class="lineno"> 2961</span> </div>
<div class="line"><a id="l02962" name="l02962"></a><span class="lineno"> 2962</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l02963" name="l02963"></a><span class="lineno"> 2963</span><span class="comment">// ExecuteSector</span></div>
<div class="line"><a id="l02964" name="l02964"></a><span class="lineno"> 2964</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen02971" data-start="{" data-end="}">
<div class="line"><a id="l02971" name="l02971"></a><span class="lineno"><a class="line" href="classPFitter.html#a85b2a235f516f062d62e295f08ffdf60"> 2971</a></span>Bool_t <a class="code hl_function" href="classPFitter.html#a85b2a235f516f062d62e295f08ffdf60">PFitter::ExecuteSector</a>(std::ofstream &amp;fout)</div>
<div class="line"><a id="l02972" name="l02972"></a><span class="lineno"> 2972</span>{</div>
<div class="line"><a id="l02973" name="l02973"></a><span class="lineno"> 2973</span> fout &lt;&lt; std::endl;</div>
<div class="line"><a id="l02974" name="l02974"></a><span class="lineno"> 2974</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;*************************************************************************&quot;</span>;</div>
<div class="line"><a id="l02975" name="l02975"></a><span class="lineno"> 2975</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; SECTOR RESULTS&quot;</span>;</div>
<div class="line"><a id="l02976" name="l02976"></a><span class="lineno"> 2976</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;*************************************************************************&quot;</span>;</div>
<div class="line"><a id="l02977" name="l02977"></a><span class="lineno"> 2977</span> </div>
<div class="line"><a id="l02978" name="l02978"></a><span class="lineno"> 2978</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#aec873931299b3bfab3b0d07d3f3cc719">fUseChi2</a>) {</div>
<div class="line"><a id="l02979" name="l02979"></a><span class="lineno"> 2979</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>.size(); i++) {</div>
<div class="line"><a id="l02980" name="l02980"></a><span class="lineno"> 2980</span> fout &lt;&lt; std::endl;</div>
<div class="line"><a id="l02981" name="l02981"></a><span class="lineno"> 2981</span> fout &lt;&lt; <span class="stringliteral">&quot; Sector &quot;</span> &lt;&lt; i+1 &lt;&lt; <span class="stringliteral">&quot;: FitRange: &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetTimeRangeFirst(0) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetTimeRangeLast() &lt;&lt; std::endl;</div>
<div class="line"><a id="l02982" name="l02982"></a><span class="lineno"> 2982</span> fout &lt;&lt; <span class="stringliteral">&quot; chisq = &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetChisq() &lt;&lt; <span class="stringliteral">&quot;, NDF = &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNDF() &lt;&lt; <span class="stringliteral">&quot;, chisq/NDF = &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetChisq()/<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNDF();</div>
<div class="line"><a id="l02983" name="l02983"></a><span class="lineno"> 2983</span> </div>
<div class="line"><a id="l02984" name="l02984"></a><span class="lineno"> 2984</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetExpectedChisq() &gt; 0) {</div>
<div class="line"><a id="l02985" name="l02985"></a><span class="lineno"> 2985</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; expected chisq = &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetExpectedChisq() &lt;&lt; <span class="stringliteral">&quot;, NDF = &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNDF() &lt;&lt; <span class="stringliteral">&quot;, expected chisq/NDF = &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetExpectedChisq()/<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNDF();</div>
<div class="line"><a id="l02986" name="l02986"></a><span class="lineno"> 2986</span> <span class="keywordflow">for</span> (UInt_t j=0; j&lt;<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNoRuns(); j++) {</div>
<div class="line"><a id="l02987" name="l02987"></a><span class="lineno"> 2987</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; run block &quot;</span> &lt;&lt; j+1 &lt;&lt; <span class="stringliteral">&quot; (NDF/red.chisq/red.chisq_e) = (&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNDF(j) &lt;&lt; <span class="stringliteral">&quot;/&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetChisq(j)/<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNDF(j) &lt;&lt; <span class="stringliteral">&quot;/&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetExpectedChisq(j)/<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNDF(j) &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
<div class="line"><a id="l02988" name="l02988"></a><span class="lineno"> 2988</span> }</div>
<div class="line"><a id="l02989" name="l02989"></a><span class="lineno"> 2989</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNoRuns() &gt; 0) { <span class="comment">// in case expected chisq is not applicable like for asymmetry fits</span></div>
<div class="line"><a id="l02990" name="l02990"></a><span class="lineno"> 2990</span> <span class="keywordflow">for</span> (UInt_t j=0; j&lt;<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNoRuns(); j++) {</div>
<div class="line"><a id="l02991" name="l02991"></a><span class="lineno"> 2991</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; run block &quot;</span> &lt;&lt; j+1 &lt;&lt; <span class="stringliteral">&quot; (NDF/red.chisq) = (&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNDF(j) &lt;&lt; <span class="stringliteral">&quot;/&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetChisq(j)/<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNDF(j) &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
<div class="line"><a id="l02992" name="l02992"></a><span class="lineno"> 2992</span> }</div>
<div class="line"><a id="l02993" name="l02993"></a><span class="lineno"> 2993</span> }</div>
<div class="line"><a id="l02994" name="l02994"></a><span class="lineno"> 2994</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;++++&quot;</span>;</div>
<div class="line"><a id="l02995" name="l02995"></a><span class="lineno"> 2995</span> }</div>
<div class="line"><a id="l02996" name="l02996"></a><span class="lineno"> 2996</span> } <span class="keywordflow">else</span> { <span class="comment">// max log likelihood</span></div>
<div class="line"><a id="l02997" name="l02997"></a><span class="lineno"> 2997</span> <span class="keywordflow">for</span> (UInt_t i=0; i&lt;<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>.size(); i++) {</div>
<div class="line"><a id="l02998" name="l02998"></a><span class="lineno"> 2998</span> fout &lt;&lt; std::endl;</div>
<div class="line"><a id="l02999" name="l02999"></a><span class="lineno"> 2999</span> fout &lt;&lt; <span class="stringliteral">&quot; Sector &quot;</span> &lt;&lt; i+1 &lt;&lt; <span class="stringliteral">&quot;: FitRange: &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetTimeRangeFirst(0) &lt;&lt; <span class="stringliteral">&quot;, &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetTimeRangeLast() &lt;&lt; std::endl;</div>
<div class="line"><a id="l03000" name="l03000"></a><span class="lineno"> 3000</span> fout &lt;&lt; <span class="stringliteral">&quot; maxLH = &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetChisq() &lt;&lt; <span class="stringliteral">&quot;, NDF = &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNDF() &lt;&lt; <span class="stringliteral">&quot;, maxLH/NDF = &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetChisq()/<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNDF();</div>
<div class="line"><a id="l03001" name="l03001"></a><span class="lineno"> 3001</span> </div>
<div class="line"><a id="l03002" name="l03002"></a><span class="lineno"> 3002</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetExpectedChisq() &gt; 0) {</div>
<div class="line"><a id="l03003" name="l03003"></a><span class="lineno"> 3003</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; expected maxLH = &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetExpectedChisq() &lt;&lt; <span class="stringliteral">&quot;, NDF = &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNDF() &lt;&lt; <span class="stringliteral">&quot;, expected maxLH/NDF = &quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetExpectedChisq()/<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNDF();</div>
<div class="line"><a id="l03004" name="l03004"></a><span class="lineno"> 3004</span> <span class="keywordflow">for</span> (UInt_t j=0; j&lt;<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNoRuns(); j++) {</div>
<div class="line"><a id="l03005" name="l03005"></a><span class="lineno"> 3005</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; run block &quot;</span> &lt;&lt; j+1 &lt;&lt; <span class="stringliteral">&quot; (NDF/red.maxLH/red.maxLH_e) = (&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNDF(j) &lt;&lt; <span class="stringliteral">&quot;/&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetChisq(j)/<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNDF(j) &lt;&lt; <span class="stringliteral">&quot;/&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetExpectedChisq(j)/<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNDF(j) &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
<div class="line"><a id="l03006" name="l03006"></a><span class="lineno"> 3006</span> }</div>
<div class="line"><a id="l03007" name="l03007"></a><span class="lineno"> 3007</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNoRuns() &gt; 0) { <span class="comment">// in case expected chisq is not applicable like for asymmetry fits</span></div>
<div class="line"><a id="l03008" name="l03008"></a><span class="lineno"> 3008</span> <span class="keywordflow">for</span> (UInt_t j=0; j&lt;<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNoRuns(); j++) {</div>
<div class="line"><a id="l03009" name="l03009"></a><span class="lineno"> 3009</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot; run block &quot;</span> &lt;&lt; j+1 &lt;&lt; <span class="stringliteral">&quot; (NDF/red.maxLH) = (&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNDF(j) &lt;&lt; <span class="stringliteral">&quot;/&quot;</span> &lt;&lt; <a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetChisq(j)/<a class="code hl_variable" href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">fSector</a>[i].GetNDF(j) &lt;&lt; <span class="stringliteral">&quot;)&quot;</span>;</div>
<div class="line"><a id="l03010" name="l03010"></a><span class="lineno"> 3010</span> }</div>
<div class="line"><a id="l03011" name="l03011"></a><span class="lineno"> 3011</span> }</div>
<div class="line"><a id="l03012" name="l03012"></a><span class="lineno"> 3012</span> fout &lt;&lt; std::endl &lt;&lt; <span class="stringliteral">&quot;++++&quot;</span>;</div>
<div class="line"><a id="l03013" name="l03013"></a><span class="lineno"> 3013</span> }</div>
<div class="line"><a id="l03014" name="l03014"></a><span class="lineno"> 3014</span> }</div>
<div class="line"><a id="l03015" name="l03015"></a><span class="lineno"> 3015</span> </div>
<div class="line"><a id="l03016" name="l03016"></a><span class="lineno"> 3016</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l03017" name="l03017"></a><span class="lineno"> 3017</span>}</div>
</div>
<div class="line"><a id="l03018" name="l03018"></a><span class="lineno"> 3018</span> </div>
<div class="line"><a id="l03019" name="l03019"></a><span class="lineno"> 3019</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l03020" name="l03020"></a><span class="lineno"> 3020</span><span class="comment">// MilliTime</span></div>
<div class="line"><a id="l03021" name="l03021"></a><span class="lineno"> 3021</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen03027" data-start="{" data-end="}">
<div class="line"><a id="l03027" name="l03027"></a><span class="lineno"><a class="line" href="classPFitter.html#a313a48146cbacbf181a56838d5c52087"> 3027</a></span>Double_t <a class="code hl_function" href="classPFitter.html#a313a48146cbacbf181a56838d5c52087">PFitter::MilliTime</a>()</div>
<div class="line"><a id="l03028" name="l03028"></a><span class="lineno"> 3028</span>{</div>
<div class="line"><a id="l03029" name="l03029"></a><span class="lineno"> 3029</span> <span class="keyword">struct </span>timeval now;</div>
<div class="line"><a id="l03030" name="l03030"></a><span class="lineno"> 3030</span> gettimeofday(&amp;now, <span class="keyword">nullptr</span>);</div>
<div class="line"><a id="l03031" name="l03031"></a><span class="lineno"> 3031</span> </div>
<div class="line"><a id="l03032" name="l03032"></a><span class="lineno"> 3032</span> <span class="keywordflow">return</span> ((Double_t)now.tv_sec * 1.0e6 + (Double_t)now.tv_usec)/1.0e3;</div>
<div class="line"><a id="l03033" name="l03033"></a><span class="lineno"> 3033</span>}</div>
</div>
<div class="line"><a id="l03034" name="l03034"></a><span class="lineno"> 3034</span> </div>
<div class="line"><a id="l03035" name="l03035"></a><span class="lineno"> 3035</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="line"><a id="l03036" name="l03036"></a><span class="lineno"> 3036</span><span class="comment">// ParamRound (private)</span></div>
<div class="line"><a id="l03037" name="l03037"></a><span class="lineno"> 3037</span><span class="comment">//--------------------------------------------------------------------------</span></div>
<div class="foldopen" id="foldopen03050" data-start="{" data-end="}">
<div class="line"><a id="l03050" name="l03050"></a><span class="lineno"><a class="line" href="classPFitter.html#a65dbfc5c91cea7c5d4577f14cf6e371b"> 3050</a></span><a class="code hl_typedef" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> <a class="code hl_function" href="classPFitter.html#a65dbfc5c91cea7c5d4577f14cf6e371b">PFitter::ParamRound</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> &amp;par, <span class="keyword">const</span> <a class="code hl_typedef" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> &amp;err, Bool_t &amp;ok)</div>
<div class="line"><a id="l03051" name="l03051"></a><span class="lineno"> 3051</span>{</div>
<div class="line"><a id="l03052" name="l03052"></a><span class="lineno"> 3052</span> <a class="code hl_typedef" href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a> par_r;</div>
<div class="line"><a id="l03053" name="l03053"></a><span class="lineno"> 3053</span> </div>
<div class="line"><a id="l03054" name="l03054"></a><span class="lineno"> 3054</span> par_r.resize(par.size());</div>
<div class="line"><a id="l03055" name="l03055"></a><span class="lineno"> 3055</span> ok = <span class="keyword">true</span>;</div>
<div class="line"><a id="l03056" name="l03056"></a><span class="lineno"> 3056</span> </div>
<div class="line"><a id="l03057" name="l03057"></a><span class="lineno"> 3057</span> <span class="keywordflow">if</span> (par.size() != err.size()) {</div>
<div class="line"><a id="l03058" name="l03058"></a><span class="lineno"> 3058</span> <span class="comment">// error msg</span></div>
<div class="line"><a id="l03059" name="l03059"></a><span class="lineno"> 3059</span> ok = <span class="keyword">false</span>;</div>
<div class="line"><a id="l03060" name="l03060"></a><span class="lineno"> 3060</span> <span class="keywordflow">return</span> par_r;</div>
<div class="line"><a id="l03061" name="l03061"></a><span class="lineno"> 3061</span> }</div>
<div class="line"><a id="l03062" name="l03062"></a><span class="lineno"> 3062</span> </div>
<div class="line"><a id="l03063" name="l03063"></a><span class="lineno"> 3063</span> <span class="keywordtype">int</span> exp;</div>
<div class="line"><a id="l03064" name="l03064"></a><span class="lineno"> 3064</span> <span class="keywordtype">double</span> dval;</div>
<div class="line"><a id="l03065" name="l03065"></a><span class="lineno"> 3065</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i=0; i&lt;par.size(); i++) {</div>
<div class="line"><a id="l03066" name="l03066"></a><span class="lineno"> 3066</span> <span class="keywordflow">if</span> (err[i] != 0.0) {</div>
<div class="line"><a id="l03067" name="l03067"></a><span class="lineno"> 3067</span> exp = floor(log10(fabs(err[i]))-1);</div>
<div class="line"><a id="l03068" name="l03068"></a><span class="lineno"> 3068</span> dval = round(par[i]*pow(10.0, -exp))/pow(10.0, -exp);</div>
<div class="line"><a id="l03069" name="l03069"></a><span class="lineno"> 3069</span> par_r[i] = dval;</div>
<div class="line"><a id="l03070" name="l03070"></a><span class="lineno"> 3070</span> } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l03071" name="l03071"></a><span class="lineno"> 3071</span> par_r[i] = par[i];</div>
<div class="line"><a id="l03072" name="l03072"></a><span class="lineno"> 3072</span> }</div>
<div class="line"><a id="l03073" name="l03073"></a><span class="lineno"> 3073</span> }</div>
<div class="line"><a id="l03074" name="l03074"></a><span class="lineno"> 3074</span> </div>
<div class="line"><a id="l03075" name="l03075"></a><span class="lineno"> 3075</span> <span class="keywordflow">return</span> par_r;</div>
<div class="line"><a id="l03076" name="l03076"></a><span class="lineno"> 3076</span>}</div>
</div>
<div class="line"><a id="l03077" name="l03077"></a><span class="lineno"> 3077</span> </div>
<div class="line"><a id="l03078" name="l03078"></a><span class="lineno"> 3078</span> </div>
<div class="line"><a id="l03079" name="l03079"></a><span class="lineno"> 3079</span><span class="comment">//-------------------------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l03080" name="l03080"></a><span class="lineno"> 3080</span><span class="comment">// end</span></div>
<div class="line"><a id="l03081" name="l03081"></a><span class="lineno"> 3081</span><span class="comment">//-------------------------------------------------------------------------------------------------</span></div>
<div class="ttc" id="aPFitter_8h_html"><div class="ttname"><a href="PFitter_8h.html">PFitter.h</a></div></div>
<div class="ttc" id="aPFitter_8h_html_a15c31fbdad5e90549d7f4ed93c3b0649"><div class="ttname"><a href="PFitter_8h.html#a15c31fbdad5e90549d7f4ed93c3b0649">PMN_FIX</a></div><div class="ttdeci">#define PMN_FIX</div><div class="ttdoc">Fix parameters at current values.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00070">PFitter.h:70</a></div></div>
<div class="ttc" id="aPFitter_8h_html_a46bbeb77bdccf11da647fdcbe4401a73"><div class="ttname"><a href="PFitter_8h.html#a46bbeb77bdccf11da647fdcbe4401a73">PMN_SIMPLEX</a></div><div class="ttdeci">#define PMN_SIMPLEX</div><div class="ttdoc">SIMPLEX minimizer (robust but slow)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00092">PFitter.h:92</a></div></div>
<div class="ttc" id="aPFitter_8h_html_a531c09072b72af4f9d2073fad7f27737"><div class="ttname"><a href="PFitter_8h.html#a531c09072b72af4f9d2073fad7f27737">PMN_USER_PARAM_STATE</a></div><div class="ttdeci">#define PMN_USER_PARAM_STATE</div><div class="ttdoc">Set user parameter state (not implemented)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00098">PFitter.h:98</a></div></div>
<div class="ttc" id="aPFitter_8h_html_a6066a297aed119107782ea4912a253c7"><div class="ttname"><a href="PFitter_8h.html#a6066a297aed119107782ea4912a253c7">PMN_RESTORE</a></div><div class="ttdeci">#define PMN_RESTORE</div><div class="ttdoc">Restore parameters from previous SAVE.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00086">PFitter.h:86</a></div></div>
<div class="ttc" id="aPFitter_8h_html_a6401aefe8d42f78be658ae0d4ddc6775"><div class="ttname"><a href="PFitter_8h.html#a6401aefe8d42f78be658ae0d4ddc6775">PMN_RELEASE</a></div><div class="ttdeci">#define PMN_RELEASE</div><div class="ttdoc">Release previously fixed parameters.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00084">PFitter.h:84</a></div></div>
<div class="ttc" id="aPFitter_8h_html_a65a2d9b52415732cc717a21582b1f114"><div class="ttname"><a href="PFitter_8h.html#a65a2d9b52415732cc717a21582b1f114">PMN_PRINT</a></div><div class="ttdeci">#define PMN_PRINT</div><div class="ttdoc">Set print level for fit output (0=quiet, 1=normal, 2=verbose)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00100">PFitter.h:100</a></div></div>
<div class="ttc" id="aPFitter_8h_html_a6c3f51ebcfcd525981f6be99fe1df1bb"><div class="ttname"><a href="PFitter_8h.html#a6c3f51ebcfcd525981f6be99fe1df1bb">PMN_PLOT</a></div><div class="ttdeci">#define PMN_PLOT</div><div class="ttdoc">Plot command (for scan/contour results)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00082">PFitter.h:82</a></div></div>
<div class="ttc" id="aPFitter_8h_html_a78d7796e1a23e08d16983145c8b16ea3"><div class="ttname"><a href="PFitter_8h.html#a78d7796e1a23e08d16983145c8b16ea3">PMN_CONTOURS</a></div><div class="ttdeci">#define PMN_CONTOURS</div><div class="ttdoc">Contour plot command (2D error ellipses)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00064">PFitter.h:64</a></div></div>
<div class="ttc" id="aPFitter_8h_html_a80f91790554f332c5872981e0f42f051"><div class="ttname"><a href="PFitter_8h.html#a80f91790554f332c5872981e0f42f051">PMN_HESSE</a></div><div class="ttdeci">#define PMN_HESSE</div><div class="ttdoc">Calculate Hessian matrix for error estimation.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00072">PFitter.h:72</a></div></div>
<div class="ttc" id="aPFitter_8h_html_a81d76653f453d9b1d2590ed0ccd02790"><div class="ttname"><a href="PFitter_8h.html#a81d76653f453d9b1d2590ed0ccd02790">PMN_FIT_RANGE</a></div><div class="ttdeci">#define PMN_FIT_RANGE</div><div class="ttdoc">Fit range scan to find optimal fitting window.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00068">PFitter.h:68</a></div></div>
<div class="ttc" id="aPFitter_8h_html_a83004a981ff8126d2adb3fc71c5bf066"><div class="ttname"><a href="PFitter_8h.html#a83004a981ff8126d2adb3fc71c5bf066">PMN_EIGEN</a></div><div class="ttdeci">#define PMN_EIGEN</div><div class="ttdoc">Eigenvalue analysis (not implemented)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00066">PFitter.h:66</a></div></div>
<div class="ttc" id="aPFitter_8h_html_a891449a81428ca1cec4c72b881bce07e"><div class="ttname"><a href="PFitter_8h.html#a891449a81428ca1cec4c72b881bce07e">PMN_MACHINE_PRECISION</a></div><div class="ttdeci">#define PMN_MACHINE_PRECISION</div><div class="ttdoc">Set machine precision for numerical derivatives.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00074">PFitter.h:74</a></div></div>
<div class="ttc" id="aPFitter_8h_html_aa295ec15a94c02d9fcb7cd98994fc15e"><div class="ttname"><a href="PFitter_8h.html#aa295ec15a94c02d9fcb7cd98994fc15e">PMN_SAVE</a></div><div class="ttdeci">#define PMN_SAVE</div><div class="ttdoc">Save current parameter state.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00088">PFitter.h:88</a></div></div>
<div class="ttc" id="aPFitter_8h_html_aa9c108ebf89a24f39ce8ff49cfaea139"><div class="ttname"><a href="PFitter_8h.html#aa9c108ebf89a24f39ce8ff49cfaea139">PMN_USER_COVARIANCE</a></div><div class="ttdeci">#define PMN_USER_COVARIANCE</div><div class="ttdoc">Set user covariance matrix (not implemented)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00096">PFitter.h:96</a></div></div>
<div class="ttc" id="aPFitter_8h_html_ab205523bdc162bd2e712622a4616ee36"><div class="ttname"><a href="PFitter_8h.html#ab205523bdc162bd2e712622a4616ee36">PMN_INTERACTIVE</a></div><div class="ttdeci">#define PMN_INTERACTIVE</div><div class="ttdoc">Interactive mode (not implemented in musrfit)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00062">PFitter.h:62</a></div></div>
<div class="ttc" id="aPFitter_8h_html_abf80698559774f14c5a64e0255859b00"><div class="ttname"><a href="PFitter_8h.html#abf80698559774f14c5a64e0255859b00">PMN_MIGRAD</a></div><div class="ttdeci">#define PMN_MIGRAD</div><div class="ttdoc">MIGRAD minimizer (gradient-based, recommended)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00076">PFitter.h:76</a></div></div>
<div class="ttc" id="aPFitter_8h_html_accf1f2553e22ea13147fbb00f136826f"><div class="ttname"><a href="PFitter_8h.html#accf1f2553e22ea13147fbb00f136826f">PMN_SECTOR</a></div><div class="ttdeci">#define PMN_SECTOR</div><div class="ttdoc">Calculate χ² vs. time in sectors (time-window analysis)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00102">PFitter.h:102</a></div></div>
<div class="ttc" id="aPFitter_8h_html_af66254e929ec1010892d2fcec43af777"><div class="ttname"><a href="PFitter_8h.html#af66254e929ec1010892d2fcec43af777">PMN_SCAN</a></div><div class="ttdeci">#define PMN_SCAN</div><div class="ttdoc">Parameter scan (1D or 2D)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00090">PFitter.h:90</a></div></div>
<div class="ttc" id="aPFitter_8h_html_af7990c08a28c6be01ed48735791ac66c"><div class="ttname"><a href="PFitter_8h.html#af7990c08a28c6be01ed48735791ac66c">PMN_MINOS</a></div><div class="ttdeci">#define PMN_MINOS</div><div class="ttdoc">MINOS error analysis (asymmetric confidence intervals)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00080">PFitter.h:80</a></div></div>
<div class="ttc" id="aPFitter_8h_html_afe32f729102db1627ba4aa43b4636531"><div class="ttname"><a href="PFitter_8h.html#afe32f729102db1627ba4aa43b4636531">PMN_MINIMIZE</a></div><div class="ttdeci">#define PMN_MINIMIZE</div><div class="ttdoc">MINIMIZE (automatic algorithm selection)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00078">PFitter.h:78</a></div></div>
<div class="ttc" id="aPMusr_8h_html_a11543a8acdb329540782443a7cf1d667"><div class="ttname"><a href="PMusr_8h.html#a11543a8acdb329540782443a7cf1d667">PDoublePair</a></div><div class="ttdeci">std::pair&lt; Double_t, Double_t &gt; PDoublePair</div><div class="ttdef"><b>Definition</b> <a href="PMusr_8h_source.html#l00391">PMusr.h:391</a></div></div>
<div class="ttc" id="aPMusr_8h_html_a4073f6987fbfc4322a522b8d112520ae"><div class="ttname"><a href="PMusr_8h.html#a4073f6987fbfc4322a522b8d112520ae">PMsrRunList</a></div><div class="ttdeci">std::vector&lt; PMsrRunBlock &gt; PMsrRunList</div><div class="ttdef"><b>Definition</b> <a href="PMusr_8h_source.html#l01232">PMusr.h:1232</a></div></div>
<div class="ttc" id="aPMusr_8h_html_a5357075a43f071649455751fedd2bdf5"><div class="ttname"><a href="PMusr_8h.html#a5357075a43f071649455751fedd2bdf5">PMUSR_UNDEFINED</a></div><div class="ttdeci">#define PMUSR_UNDEFINED</div><div class="ttdef"><b>Definition</b> <a href="PMusr_8h_source.html#l00172">PMusr.h:172</a></div></div>
<div class="ttc" id="aPMusr_8h_html_a88b0f32c26fd54bdacfbef77212d951d"><div class="ttname"><a href="PMusr_8h.html#a88b0f32c26fd54bdacfbef77212d951d">PMsrLines</a></div><div class="ttdeci">std::vector&lt; PMsrLineStructure &gt; PMsrLines</div><div class="ttdef"><b>Definition</b> <a href="PMusr_8h_source.html#l00982">PMusr.h:982</a></div></div>
<div class="ttc" id="aPMusr_8h_html_a93e3841e16074fd3c7648d8fc7b742f4"><div class="ttname"><a href="PMusr_8h.html#a93e3841e16074fd3c7648d8fc7b742f4">PDoublePairVector</a></div><div class="ttdeci">std::vector&lt; PDoublePair &gt; PDoublePairVector</div><div class="ttdef"><b>Definition</b> <a href="PMusr_8h_source.html#l00397">PMusr.h:397</a></div></div>
<div class="ttc" id="aPMusr_8h_html_a9b7b790670173027ad5fcafad3f04740"><div class="ttname"><a href="PMusr_8h.html#a9b7b790670173027ad5fcafad3f04740">PIntPair</a></div><div class="ttdeci">std::pair&lt; Int_t, Int_t &gt; PIntPair</div><div class="ttdef"><b>Definition</b> <a href="PMusr_8h_source.html#l00373">PMusr.h:373</a></div></div>
<div class="ttc" id="aPMusr_8h_html_aa9c3d2033e27c38e4dbb98e26f1c4e54"><div class="ttname"><a href="PMusr_8h.html#aa9c3d2033e27c38e4dbb98e26f1c4e54">PIntVector</a></div><div class="ttdeci">std::vector&lt; Int_t &gt; PIntVector</div><div class="ttdef"><b>Definition</b> <a href="PMusr_8h_source.html#l00367">PMusr.h:367</a></div></div>
<div class="ttc" id="aPMusr_8h_html_ae689e7a4bf8a9c0ecf65bcd7d4a0ebde"><div class="ttname"><a href="PMusr_8h.html#ae689e7a4bf8a9c0ecf65bcd7d4a0ebde">PDoubleVector</a></div><div class="ttdeci">std::vector&lt; Double_t &gt; PDoubleVector</div><div class="ttdef"><b>Definition</b> <a href="PMusr_8h_source.html#l00385">PMusr.h:385</a></div></div>
<div class="ttc" id="aPStartupHandler_8cpp_html_a9611b3a00430a86619b5923de30f9fdb"><div class="ttname"><a href="PStartupHandler_8cpp.html#a9611b3a00430a86619b5923de30f9fdb">status</a></div><div class="ttdeci">return status</div><div class="ttdef"><b>Definition</b> <a href="PStartupHandler_8cpp_source.html#l00106">PStartupHandler.cpp:106</a></div></div>
<div class="ttc" id="aclassPFitter_html_a069a60f7cbb859b0bc0f4b63168dbfde"><div class="ttname"><a href="classPFitter.html#a069a60f7cbb859b0bc0f4b63168dbfde">PFitter::ExecuteContours</a></div><div class="ttdeci">Bool_t ExecuteContours()</div><div class="ttdoc">Executes CONTOURS command (2D error contours).</div><div class="ttdef"><b>Definition</b> <a href="#l01688">PFitter.cpp:1688</a></div></div>
<div class="ttc" id="aclassPFitter_html_a08e3d9eb88730d1d4e9ab4b7d9a2b708"><div class="ttname"><a href="classPFitter.html#a08e3d9eb88730d1d4e9ab4b7d9a2b708">PFitter::ExecutePlot</a></div><div class="ttdeci">Bool_t ExecutePlot()</div><div class="ttdoc">Executes PLOT command (visualize scan/contour results).</div><div class="ttdef"><b>Definition</b> <a href="#l02103">PFitter.cpp:2103</a></div></div>
<div class="ttc" id="aclassPFitter_html_a0d49c71cedfb96367f8167877beba69d"><div class="ttname"><a href="classPFitter.html#a0d49c71cedfb96367f8167877beba69d">PFitter::fOriginalFitRange</a></div><div class="ttdeci">PDoublePairVector fOriginalFitRange</div><div class="ttdoc">Original fit ranges per run (saved for FIT_RANGE command)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00327">PFitter.h:327</a></div></div>
<div class="ttc" id="aclassPFitter_html_a0f965880a3bd8cb7489fedca61c45201"><div class="ttname"><a href="classPFitter.html#a0f965880a3bd8cb7489fedca61c45201">PFitter::fScanNoPoints</a></div><div class="ttdeci">UInt_t fScanNoPoints</div><div class="ttdoc">Number of scan/contour evaluation points (default=41)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00322">PFitter.h:322</a></div></div>
<div class="ttc" id="aclassPFitter_html_a11e3f97aa99203a610016a12ecdf241d"><div class="ttname"><a href="classPFitter.html#a11e3f97aa99203a610016a12ecdf241d">PFitter::IsValid</a></div><div class="ttdeci">Bool_t IsValid()</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00273">PFitter.h:273</a></div></div>
<div class="ttc" id="aclassPFitter_html_a14588efda750524a6dd0c85a13199919"><div class="ttname"><a href="classPFitter.html#a14588efda750524a6dd0c85a13199919">PFitter::fStrategy</a></div><div class="ttdeci">UInt_t fStrategy</div><div class="ttdoc">Minuit2 strategy: 0=fast/low-accuracy, 1=default, 2=careful/high-accuracy.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00303">PFitter.h:303</a></div></div>
<div class="ttc" id="aclassPFitter_html_a15110762601d24e076e48c79ef056d16"><div class="ttname"><a href="classPFitter.html#a15110762601d24e076e48c79ef056d16">PFitter::fScanHigh</a></div><div class="ttdeci">Double_t fScanHigh</div><div class="ttdoc">Scan upper bound: 0.0 = auto (2σ above current value)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00324">PFitter.h:324</a></div></div>
<div class="ttc" id="aclassPFitter_html_a18224fc86af43dcac49a5353ebeca614"><div class="ttname"><a href="classPFitter.html#a18224fc86af43dcac49a5353ebeca614">PFitter::fIsValid</a></div><div class="ttdeci">Bool_t fIsValid</div><div class="ttdoc">Overall validity flag: true if fitter initialized successfully.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00295">PFitter.h:295</a></div></div>
<div class="ttc" id="aclassPFitter_html_a23f49efc107e75d189c2163aaffd406f"><div class="ttname"><a href="classPFitter.html#a23f49efc107e75d189c2163aaffd406f">PFitter::ExecutePrintLevel</a></div><div class="ttdeci">Bool_t ExecutePrintLevel(UInt_t lineNo)</div><div class="ttdoc">Executes PRINT command (set verbosity level).</div><div class="ttdef"><b>Definition</b> <a href="#l02123">PFitter.cpp:2123</a></div></div>
<div class="ttc" id="aclassPFitter_html_a26ccf4d18cb80457389162eaa5af8729"><div class="ttname"><a href="classPFitter.html#a26ccf4d18cb80457389162eaa5af8729">PFitter::fElapsedTime</a></div><div class="ttdeci">PStringVector fElapsedTime</div><div class="ttdoc">Timing information for each fit command.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00329">PFitter.h:329</a></div></div>
<div class="ttc" id="aclassPFitter_html_a2aa78466f83e1a7329f7efcbdc217b4a"><div class="ttname"><a href="classPFitter.html#a2aa78466f83e1a7329f7efcbdc217b4a">PFitter::fCmdList</a></div><div class="ttdeci">PIntPairVector fCmdList</div><div class="ttdoc">Parsed commands: first=command ID, second=line number.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00312">PFitter.h:312</a></div></div>
<div class="ttc" id="aclassPFitter_html_a313a48146cbacbf181a56838d5c52087"><div class="ttname"><a href="classPFitter.html#a313a48146cbacbf181a56838d5c52087">PFitter::MilliTime</a></div><div class="ttdeci">Double_t MilliTime()</div><div class="ttdoc">Returns current time in milliseconds.</div><div class="ttdef"><b>Definition</b> <a href="#l03027">PFitter.cpp:3027</a></div></div>
<div class="ttc" id="aclassPFitter_html_a3561550a7d70378a1b36971333d0d7a5"><div class="ttname"><a href="classPFitter.html#a3561550a7d70378a1b36971333d0d7a5">PFitter::fScanParameter</a></div><div class="ttdeci">UInt_t fScanParameter[2]</div><div class="ttdoc">Parameter indices: [0]=primary scan/contour, [1]=secondary (contours only)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00321">PFitter.h:321</a></div></div>
<div class="ttc" id="aclassPFitter_html_a399447637761beccd19714caec025339"><div class="ttname"><a href="classPFitter.html#a399447637761beccd19714caec025339">PFitter::DoFit</a></div><div class="ttdeci">Bool_t DoFit()</div><div class="ttdoc">Main entry point for executing the fit.</div><div class="ttdef"><b>Definition</b> <a href="#l00647">PFitter.cpp:647</a></div></div>
<div class="ttc" id="aclassPFitter_html_a50cc50f520008b475796800c61127827"><div class="ttname"><a href="classPFitter.html#a50cc50f520008b475796800c61127827">PFitter::GetParFromFun</a></div><div class="ttdeci">PIntVector GetParFromFun(const TString funStr)</div><div class="ttdoc">Extracts parameter numbers from a FUNCTIONS block entry.</div><div class="ttdef"><b>Definition</b> <a href="#l00489">PFitter.cpp:489</a></div></div>
<div class="ttc" id="aclassPFitter_html_a52f438ddd04f6d220d6777c589495c9c"><div class="ttname"><a href="classPFitter.html#a52f438ddd04f6d220d6777c589495c9c">PFitter::fSectorFlag</a></div><div class="ttdeci">Bool_t fSectorFlag</div><div class="ttdoc">SECTOR command present flag.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00332">PFitter.h:332</a></div></div>
<div class="ttc" id="aclassPFitter_html_a56ae801deb287de03641d87b6461d9f8"><div class="ttname"><a href="classPFitter.html#a56ae801deb287de03641d87b6461d9f8">PFitter::fYamlOut</a></div><div class="ttdeci">Bool_t fYamlOut</div><div class="ttdoc">Output flag: true to generate YAML output file (MINUIT2.OUTPUT → yaml)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00299">PFitter.h:299</a></div></div>
<div class="ttc" id="aclassPFitter_html_a5f91281f9274f4dfe192a89e5b8b1069"><div class="ttname"><a href="classPFitter.html#a5f91281f9274f4dfe192a89e5b8b1069">PFitter::ExecuteScan</a></div><div class="ttdeci">Bool_t ExecuteScan()</div><div class="ttdoc">Executes SCAN command (1D parameter space scan).</div><div class="ttdef"><b>Definition</b> <a href="#l02245">PFitter.cpp:2245</a></div></div>
<div class="ttc" id="aclassPFitter_html_a62a705860d144d6f0184a9a907c83678"><div class="ttname"><a href="classPFitter.html#a62a705860d144d6f0184a9a907c83678">PFitter::fPrintLevel</a></div><div class="ttdeci">UInt_t fPrintLevel</div><div class="ttdoc">Verbosity level: 0=quiet, 1=normal, 2=verbose (Minuit output)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00301">PFitter.h:301</a></div></div>
<div class="ttc" id="aclassPFitter_html_a631cacca453cf66db5b944437cf507dd"><div class="ttname"><a href="classPFitter.html#a631cacca453cf66db5b944437cf507dd">PFitter::ExecuteSave</a></div><div class="ttdeci">Bool_t ExecuteSave(Bool_t first)</div><div class="ttdoc">Executes SAVE command (store current parameters).</div><div class="ttdef"><b>Definition</b> <a href="#l02272">PFitter.cpp:2272</a></div></div>
<div class="ttc" id="aclassPFitter_html_a65dbfc5c91cea7c5d4577f14cf6e371b"><div class="ttname"><a href="classPFitter.html#a65dbfc5c91cea7c5d4577f14cf6e371b">PFitter::ParamRound</a></div><div class="ttdeci">PDoubleVector ParamRound(const PDoubleVector &amp;par, const PDoubleVector &amp;err, Bool_t &amp;ok)</div><div class="ttdoc">Rounds parameters for output with appropriate precision.</div><div class="ttdef"><b>Definition</b> <a href="#l03050">PFitter.cpp:3050</a></div></div>
<div class="ttc" id="aclassPFitter_html_a691cf32e8aa08e70159450e3a3dc597b"><div class="ttname"><a href="classPFitter.html#a691cf32e8aa08e70159450e3a3dc597b">PFitter::fScanAll</a></div><div class="ttdeci">Bool_t fScanAll</div><div class="ttdoc">Multi-parameter scan flag: false=1D scan, true=2D scan (not fully implemented)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00320">PFitter.h:320</a></div></div>
<div class="ttc" id="aclassPFitter_html_a6f97d44fb0b291f7af9d01579c0e406c"><div class="ttname"><a href="classPFitter.html#a6f97d44fb0b291f7af9d01579c0e406c">PFitter::fIsScanOnly</a></div><div class="ttdeci">Bool_t fIsScanOnly</div><div class="ttdoc">Scan mode flag: true if only parameter scans requested (no minimization)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00296">PFitter.h:296</a></div></div>
<div class="ttc" id="aclassPFitter_html_a711ce9d116c066221fc72527f598abab"><div class="ttname"><a href="classPFitter.html#a711ce9d116c066221fc72527f598abab">PFitter::~PFitter</a></div><div class="ttdeci">virtual ~PFitter()</div><div class="ttdoc">Destructor - Cleans up dynamically allocated resources.</div><div class="ttdef"><b>Definition</b> <a href="#l00352">PFitter.cpp:352</a></div></div>
<div class="ttc" id="aclassPFitter_html_a71fa2a64e6574b4582b21d4efe81991a"><div class="ttname"><a href="classPFitter.html#a71fa2a64e6574b4582b21d4efe81991a">PFitter::fRunListCollection</a></div><div class="ttdeci">PRunListCollection * fRunListCollection</div><div class="ttdoc">Pointer to preprocessed run data collection.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00307">PFitter.h:307</a></div></div>
<div class="ttc" id="aclassPFitter_html_a7a08f7f6e29868337846a4d5f984a693"><div class="ttname"><a href="classPFitter.html#a7a08f7f6e29868337846a4d5f984a693">PFitter::ExecuteSimplex</a></div><div class="ttdeci">Bool_t ExecuteSimplex()</div><div class="ttdoc">Executes SIMPLEX command (non-gradient minimization).</div><div class="ttdef"><b>Definition</b> <a href="#l02781">PFitter.cpp:2781</a></div></div>
<div class="ttc" id="aclassPFitter_html_a7f894783312fb9a16e92b8c34141d734"><div class="ttname"><a href="classPFitter.html#a7f894783312fb9a16e92b8c34141d734">PFitter::fCmdLines</a></div><div class="ttdeci">PMsrLines fCmdLines</div><div class="ttdoc">Raw command lines from MSR COMMANDS block.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00311">PFitter.h:311</a></div></div>
<div class="ttc" id="aclassPFitter_html_a81779d1412e22554f2656e28b9692c23"><div class="ttname"><a href="classPFitter.html#a81779d1412e22554f2656e28b9692c23">PFitter::fSector</a></div><div class="ttdeci">std::vector&lt; PSectorChisq &gt; fSector</div><div class="ttdoc">Sector analysis results (χ² vs. time windows)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00333">PFitter.h:333</a></div></div>
<div class="ttc" id="aclassPFitter_html_a822fe28451f360fcda2aa7a334a63b16"><div class="ttname"><a href="classPFitter.html#a822fe28451f360fcda2aa7a334a63b16">PFitter::SetParameters</a></div><div class="ttdeci">Bool_t SetParameters()</div><div class="ttdoc">Transfers MSR parameters to Minuit2 parameter state.</div><div class="ttdef"><b>Definition</b> <a href="#l01640">PFitter.cpp:1640</a></div></div>
<div class="ttc" id="aclassPFitter_html_a85b2a235f516f062d62e295f08ffdf60"><div class="ttname"><a href="classPFitter.html#a85b2a235f516f062d62e295f08ffdf60">PFitter::ExecuteSector</a></div><div class="ttdeci">Bool_t ExecuteSector(std::ofstream &amp;fout)</div><div class="ttdoc">Executes SECTOR command (time-dependent χ² analysis).</div><div class="ttdef"><b>Definition</b> <a href="#l02971">PFitter.cpp:2971</a></div></div>
<div class="ttc" id="aclassPFitter_html_a8e9e7d418fa0adaf0f75581b8409d5e9"><div class="ttname"><a href="classPFitter.html#a8e9e7d418fa0adaf0f75581b8409d5e9">PFitter::GetPhaseParams</a></div><div class="ttdeci">void GetPhaseParams()</div><div class="ttdoc">Identifies which parameters represent phase angles.</div><div class="ttdef"><b>Definition</b> <a href="#l00390">PFitter.cpp:390</a></div></div>
<div class="ttc" id="aclassPFitter_html_a94301c0e357ffb912db6380e2dd1a76a"><div class="ttname"><a href="classPFitter.html#a94301c0e357ffb912db6380e2dd1a76a">PFitter::fScanLow</a></div><div class="ttdeci">Double_t fScanLow</div><div class="ttdoc">Scan lower bound: 0.0 = auto (2σ below current value)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00323">PFitter.h:323</a></div></div>
<div class="ttc" id="aclassPFitter_html_a981b523e5ca5f7cd66e01e2c45135d2b"><div class="ttname"><a href="classPFitter.html#a981b523e5ca5f7cd66e01e2c45135d2b">PFitter::PFitter</a></div><div class="ttdeci">PFitter(PMsrHandler *runInfo, PRunListCollection *runListCollection, Bool_t chisq_only=false, Bool_t yaml_out=false)</div><div class="ttdoc">Constructor for the fitting engine.</div><div class="ttdef"><b>Definition</b> <a href="#l00290">PFitter.cpp:290</a></div></div>
<div class="ttc" id="aclassPFitter_html_a9eb9b1257133ddacf57332dbca711943"><div class="ttname"><a href="classPFitter.html#a9eb9b1257133ddacf57332dbca711943">PFitter::ExecuteHesse</a></div><div class="ttdeci">Bool_t ExecuteHesse()</div><div class="ttdoc">Executes HESSE command (calculate error matrix).</div><div class="ttdef"><b>Definition</b> <a href="#l01832">PFitter.cpp:1832</a></div></div>
<div class="ttc" id="aclassPFitter_html_aa2c27c84275a04414e67c8bdeaf6b3d6"><div class="ttname"><a href="classPFitter.html#aa2c27c84275a04414e67c8bdeaf6b3d6">PFitter::fParams</a></div><div class="ttdeci">PMsrParamList fParams</div><div class="ttdoc">Copy of parameter list from MSR file.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00309">PFitter.h:309</a></div></div>
<div class="ttc" id="aclassPFitter_html_aa53dfefa0389c5e3e093bb57bdef3f36"><div class="ttname"><a href="classPFitter.html#aa53dfefa0389c5e3e093bb57bdef3f36">PFitter::fRunInfo</a></div><div class="ttdeci">PMsrHandler * fRunInfo</div><div class="ttdoc">Pointer to MSR file handler (parameters, theory, commands)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00306">PFitter.h:306</a></div></div>
<div class="ttc" id="aclassPFitter_html_aab691691ca5d7cee66a16043c5c41940"><div class="ttname"><a href="classPFitter.html#aab691691ca5d7cee66a16043c5c41940">PFitter::ExecuteRelease</a></div><div class="ttdeci">Bool_t ExecuteRelease(UInt_t lineNo)</div><div class="ttdoc">Executes RELEASE command (unfreeze parameters).</div><div class="ttdef"><b>Definition</b> <a href="#l02181">PFitter.cpp:2181</a></div></div>
<div class="ttc" id="aclassPFitter_html_aad0102694c267a1ddf497e6bc7cc9646"><div class="ttname"><a href="classPFitter.html#aad0102694c267a1ddf497e6bc7cc9646">PFitter::ExecuteMinos</a></div><div class="ttdeci">Bool_t ExecuteMinos()</div><div class="ttdoc">Executes MINOS command (asymmetric error analysis).</div><div class="ttdef"><b>Definition</b> <a href="#l02034">PFitter.cpp:2034</a></div></div>
<div class="ttc" id="aclassPFitter_html_aae4edca748b0934d6ea96fe9db7f83f2"><div class="ttname"><a href="classPFitter.html#aae4edca748b0934d6ea96fe9db7f83f2">PFitter::GetParFromMap</a></div><div class="ttdeci">PIntVector GetParFromMap(const TString mapStr)</div><div class="ttdoc">Extracts parameter numbers from a map reference.</div><div class="ttdef"><b>Definition</b> <a href="#l00570">PFitter.cpp:570</a></div></div>
<div class="ttc" id="aclassPFitter_html_ab156ab2b66ed243065045e47ea8d5762"><div class="ttname"><a href="classPFitter.html#ab156ab2b66ed243065045e47ea8d5762">PFitter::fScanData</a></div><div class="ttdeci">PDoublePairVector fScanData</div><div class="ttdoc">Scan results: (parameter_value, χ²) pairs.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00325">PFitter.h:325</a></div></div>
<div class="ttc" id="aclassPFitter_html_ab6523d1625c35a57caed401f9348c5ff"><div class="ttname"><a href="classPFitter.html#ab6523d1625c35a57caed401f9348c5ff">PFitter::ExecuteMinimize</a></div><div class="ttdeci">Bool_t ExecuteMinimize()</div><div class="ttdoc">Executes MINIMIZE command (automatic algorithm selection).</div><div class="ttdef"><b>Definition</b> <a href="#l01957">PFitter.cpp:1957</a></div></div>
<div class="ttc" id="aclassPFitter_html_ab9f144668483d590a54dace8fdbd62ed"><div class="ttname"><a href="classPFitter.html#ab9f144668483d590a54dace8fdbd62ed">PFitter::fMnUserParams</a></div><div class="ttdeci">ROOT::Minuit2::MnUserParameters fMnUserParams</div><div class="ttdoc">Minuit2 parameter state (values, errors, limits)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00316">PFitter.h:316</a></div></div>
<div class="ttc" id="aclassPFitter_html_ababcfdb8205db798c84562afe70bad91"><div class="ttname"><a href="classPFitter.html#ababcfdb8205db798c84562afe70bad91">PFitter::ExecuteMigrad</a></div><div class="ttdeci">Bool_t ExecuteMigrad()</div><div class="ttdoc">Executes MIGRAD command (gradient descent minimization).</div><div class="ttdef"><b>Definition</b> <a href="#l01881">PFitter.cpp:1881</a></div></div>
<div class="ttc" id="aclassPFitter_html_abd3b95f1716f479adb1bca83ddc19092"><div class="ttname"><a href="classPFitter.html#abd3b95f1716f479adb1bca83ddc19092">PFitter::fFcnMin</a></div><div class="ttdeci">std::unique_ptr&lt; ROOT::Minuit2::FunctionMinimum &gt; fFcnMin</div><div class="ttdoc">Minuit2 function minimum result.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00317">PFitter.h:317</a></div></div>
<div class="ttc" id="aclassPFitter_html_ac3094e6b657951d8d4a5ad934c2eb31a"><div class="ttname"><a href="classPFitter.html#ac3094e6b657951d8d4a5ad934c2eb31a">PFitter::ExecuteRestore</a></div><div class="ttdeci">Bool_t ExecuteRestore()</div><div class="ttdoc">Executes RESTORE command (reload saved parameters).</div><div class="ttdef"><b>Definition</b> <a href="#l02223">PFitter.cpp:2223</a></div></div>
<div class="ttc" id="aclassPFitter_html_ac3961503e41b84dc8cc683ce274d2300"><div class="ttname"><a href="classPFitter.html#ac3961503e41b84dc8cc683ce274d2300">PFitter::CheckCommands</a></div><div class="ttdeci">Bool_t CheckCommands()</div><div class="ttdoc">Validates COMMANDS block syntax and builds execution queue.</div><div class="ttdef"><b>Definition</b> <a href="#l00953">PFitter.cpp:953</a></div></div>
<div class="ttc" id="aclassPFitter_html_ac41618f0b66f7ef4bfed953e9fea79bd"><div class="ttname"><a href="classPFitter.html#ac41618f0b66f7ef4bfed953e9fea79bd">PFitter::fConverged</a></div><div class="ttdeci">Bool_t fConverged</div><div class="ttdoc">Convergence flag: true if fit converged to a valid minimum.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00297">PFitter.h:297</a></div></div>
<div class="ttc" id="aclassPFitter_html_ac6b16f7adb7f4ebff7c6348aaa65f5b4"><div class="ttname"><a href="classPFitter.html#ac6b16f7adb7f4ebff7c6348aaa65f5b4">PFitter::fChisqOnly</a></div><div class="ttdeci">Bool_t fChisqOnly</div><div class="ttdoc">Evaluation-only flag: true to calculate χ² without fitting.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00298">PFitter.h:298</a></div></div>
<div class="ttc" id="aclassPFitter_html_acc32e99737b3abd781f06da5649ebd35"><div class="ttname"><a href="classPFitter.html#acc32e99737b3abd781f06da5649ebd35">PFitter::ExecuteFitRange</a></div><div class="ttdeci">Bool_t ExecuteFitRange(UInt_t lineNo)</div><div class="ttdoc">Executes FIT_RANGE command (optimal time-window search).</div><div class="ttdef"><b>Definition</b> <a href="#l01723">PFitter.cpp:1723</a></div></div>
<div class="ttc" id="aclassPFitter_html_ad40bd35fd795fa4be1e556a6042f4f88"><div class="ttname"><a href="classPFitter.html#ad40bd35fd795fa4be1e556a6042f4f88">PFitter::ExecuteFix</a></div><div class="ttdeci">Bool_t ExecuteFix(UInt_t lineNo)</div><div class="ttdoc">Executes FIX command (freeze parameters).</div><div class="ttdef"><b>Definition</b> <a href="#l01794">PFitter.cpp:1794</a></div></div>
<div class="ttc" id="aclassPFitter_html_ad5838c829ba15d41f95a8c452e380028"><div class="ttname"><a href="classPFitter.html#ad5838c829ba15d41f95a8c452e380028">PFitter::fPhase</a></div><div class="ttdeci">std::vector&lt; bool &gt; fPhase</div><div class="ttdoc">Phase parameter flags: true if parameter is a phase angle.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00335">PFitter.h:335</a></div></div>
<div class="ttc" id="aclassPFitter_html_ad62d0c925845fc266a07d26e12f28507"><div class="ttname"><a href="classPFitter.html#ad62d0c925845fc266a07d26e12f28507">PFitter::PrepareSector</a></div><div class="ttdeci">void PrepareSector(PDoubleVector &amp;param, PDoubleVector &amp;error)</div><div class="ttdoc">Prepares sector χ² analysis data structures.</div><div class="ttdef"><b>Definition</b> <a href="#l02858">PFitter.cpp:2858</a></div></div>
<div class="ttc" id="aclassPFitter_html_ae2bc81d1e8f0e54d3bededf879a5daa5"><div class="ttname"><a href="classPFitter.html#ae2bc81d1e8f0e54d3bededf879a5daa5">PFitter::fFitterFcn</a></div><div class="ttdeci">std::unique_ptr&lt; PFitterFcn &gt; fFitterFcn</div><div class="ttdoc">Objective function for Minuit2 minimization.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00314">PFitter.h:314</a></div></div>
<div class="ttc" id="aclassPFitter_html_aec873931299b3bfab3b0d07d3f3cc719"><div class="ttname"><a href="classPFitter.html#aec873931299b3bfab3b0d07d3f3cc719">PFitter::fUseChi2</a></div><div class="ttdeci">Bool_t fUseChi2</div><div class="ttdoc">Fit mode: true = χ² minimization, false = log-max-likelihood.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00300">PFitter.h:300</a></div></div>
<div class="ttc" id="aclassPMsrGlobalBlock_html"><div class="ttname"><a href="classPMsrGlobalBlock.html">PMsrGlobalBlock</a></div><div class="ttdef"><b>Definition</b> <a href="PMusr_8h_source.html#l01030">PMusr.h:1030</a></div></div>
<div class="ttc" id="aclassPMsrGlobalBlock_html_a48a649bdcb8aa7c2a27e026a1ec391f6"><div class="ttname"><a href="classPMsrGlobalBlock.html#a48a649bdcb8aa7c2a27e026a1ec391f6">PMsrGlobalBlock::GetFitRange</a></div><div class="ttdeci">virtual Double_t GetFitRange(UInt_t idx)</div><div class="ttdef"><b>Definition</b> <a href="PMusr_8cpp_source.html#l01104">PMusr.cpp:1104</a></div></div>
<div class="ttc" id="aclassPMsrHandler_html"><div class="ttname"><a href="classPMsrHandler.html">PMsrHandler</a></div><div class="ttdoc">MSR file parser and manager for the musrfit framework.</div><div class="ttdef"><b>Definition</b> <a href="PMsrHandler_8h_source.html#l00115">PMsrHandler.h:116</a></div></div>
<div class="ttc" id="aclassPMsrHandler_html_a13db073e799872f9a6a12d4376e07cff"><div class="ttname"><a href="classPMsrHandler.html#a13db073e799872f9a6a12d4376e07cff">PMsrHandler::GetMsrCommands</a></div><div class="ttdeci">virtual PMsrLines * GetMsrCommands()</div><div class="ttdoc">Returns pointer to COMMANDS block lines.</div><div class="ttdef"><b>Definition</b> <a href="PMsrHandler_8h_source.html#l00185">PMsrHandler.h:185</a></div></div>
<div class="ttc" id="aclassPMsrHandler_html_a4364201bedc2a4d4be478ba8a796e204"><div class="ttname"><a href="classPMsrHandler.html#a4364201bedc2a4d4be478ba8a796e204">PMsrHandler::GetMsrParamList</a></div><div class="ttdeci">virtual PMsrParamList * GetMsrParamList()</div><div class="ttdoc">Returns pointer to fit parameter list.</div><div class="ttdef"><b>Definition</b> <a href="PMsrHandler_8h_source.html#l00175">PMsrHandler.h:175</a></div></div>
<div class="ttc" id="aclassPRunListCollection_html"><div class="ttname"><a href="classPRunListCollection.html">PRunListCollection</a></div><div class="ttdoc">Manager class for all processed μSR run data during fitting.</div><div class="ttdef"><b>Definition</b> <a href="PRunListCollection_8h_source.html#l00140">PRunListCollection.h:141</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html"><div class="ttname"><a href="classPSectorChisq.html">PSectorChisq</a></div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00123">PFitter.h:124</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_a014287cc26551be640026b7dede1227f"><div class="ttname"><a href="classPSectorChisq.html#a014287cc26551be640026b7dede1227f">PSectorChisq::SetChisq</a></div><div class="ttdeci">void SetChisq(Double_t chisq)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00144">PFitter.h:144</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_a059400d70bf55a6439e9815f21d5eedc"><div class="ttname"><a href="classPSectorChisq.html#a059400d70bf55a6439e9815f21d5eedc">PSectorChisq::GetExpectedChisq</a></div><div class="ttdeci">Double_t GetExpectedChisq()</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00189">PFitter.h:189</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_a0cabfd47e2660bea4339265eb5af7d72"><div class="ttname"><a href="classPSectorChisq.html#a0cabfd47e2660bea4339265eb5af7d72">PSectorChisq::fLast</a></div><div class="ttdeci">Double_t fLast</div><div class="ttdoc">requested time stamp</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00211">PFitter.h:211</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_a0db2c667e4f5db56fef4ad2b8ce00d71"><div class="ttname"><a href="classPSectorChisq.html#a0db2c667e4f5db56fef4ad2b8ce00d71">PSectorChisq::GetNDF</a></div><div class="ttdeci">UInt_t GetNDF()</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00198">PFitter.h:198</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_a105ac488e8bd5f188337cf4bef450a41"><div class="ttname"><a href="classPSectorChisq.html#a105ac488e8bd5f188337cf4bef450a41">PSectorChisq::fFirst</a></div><div class="ttdeci">PDoubleVector fFirst</div><div class="ttdoc">time stamp for fgb for a given run</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00215">PFitter.h:215</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_a1a291d4fd5d39d57ae298dd81e2cebdd"><div class="ttname"><a href="classPSectorChisq.html#a1a291d4fd5d39d57ae298dd81e2cebdd">PSectorChisq::SetNDF</a></div><div class="ttdeci">void SetNDF(UInt_t ndf)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00162">PFitter.h:162</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_a20861096a62fd77f40615ba53ff1a032"><div class="ttname"><a href="classPSectorChisq.html#a20861096a62fd77f40615ba53ff1a032">PSectorChisq::SetExpectedChisq</a></div><div class="ttdeci">void SetExpectedChisq(Double_t expChisq)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00153">PFitter.h:153</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_a247f63e10b6f4f0ad1a18ac41a36ed66"><div class="ttname"><a href="classPSectorChisq.html#a247f63e10b6f4f0ad1a18ac41a36ed66">PSectorChisq::fNDFRun</a></div><div class="ttdeci">PUIntVector fNDFRun</div><div class="ttdoc">NDF for the sector and run.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00218">PFitter.h:218</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_a2ffd2a4fbadba32072657115b8fd97da"><div class="ttname"><a href="classPSectorChisq.html#a2ffd2a4fbadba32072657115b8fd97da">PSectorChisq::fChisq</a></div><div class="ttdeci">Double_t fChisq</div><div class="ttdoc">chisq or maxLH for the sector</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00212">PFitter.h:212</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_a3f6125af7b2444dea05ac9c2dbe6c166"><div class="ttname"><a href="classPSectorChisq.html#a3f6125af7b2444dea05ac9c2dbe6c166">PSectorChisq::SetSectorTime</a></div><div class="ttdeci">void SetSectorTime(Double_t last)</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00140">PFitter.h:140</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_a41342b023b81ce9baf620df4cc5f6f81"><div class="ttname"><a href="classPSectorChisq.html#a41342b023b81ce9baf620df4cc5f6f81">PSectorChisq::fNDF</a></div><div class="ttdeci">UInt_t fNDF</div><div class="ttdoc">NDF for the sector.</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00214">PFitter.h:214</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_a4419e695b6bc29151bacac5a22804f32"><div class="ttname"><a href="classPSectorChisq.html#a4419e695b6bc29151bacac5a22804f32">PSectorChisq::GetTimeRangeFirst</a></div><div class="ttdeci">Double_t GetTimeRangeFirst(UInt_t idx)</div><div class="ttdef"><b>Definition</b> <a href="#l00195">PFitter.cpp:195</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_a44bbb7b017f32746662635ebd193a7d5"><div class="ttname"><a href="classPSectorChisq.html#a44bbb7b017f32746662635ebd193a7d5">PSectorChisq::PSectorChisq</a></div><div class="ttdeci">PSectorChisq(UInt_t noOfRuns)</div><div class="ttdef"><b>Definition</b> <a href="#l00081">PFitter.cpp:81</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_a6e88257dd8aa4f7b651d9c9937230002"><div class="ttname"><a href="classPSectorChisq.html#a6e88257dd8aa4f7b651d9c9937230002">PSectorChisq::GetChisq</a></div><div class="ttdeci">Double_t GetChisq()</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00180">PFitter.h:180</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_a81b63f3420699f93372f8afdd03628b8"><div class="ttname"><a href="classPSectorChisq.html#a81b63f3420699f93372f8afdd03628b8">PSectorChisq::fChisqRun</a></div><div class="ttdeci">PDoubleVector fChisqRun</div><div class="ttdoc">chisq or maxLH for the sector and run</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00216">PFitter.h:216</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_a856c7b3a8c25b27ea94e480af3f086e2"><div class="ttname"><a href="classPSectorChisq.html#a856c7b3a8c25b27ea94e480af3f086e2">PSectorChisq::fExpectedChisq</a></div><div class="ttdeci">Double_t fExpectedChisq</div><div class="ttdoc">keep the expected chisq or maxLH for the sector</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00213">PFitter.h:213</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_a99f8524bc982ce7b7e367d05bc52ae6b"><div class="ttname"><a href="classPSectorChisq.html#a99f8524bc982ce7b7e367d05bc52ae6b">PSectorChisq::fExpectedChisqRun</a></div><div class="ttdeci">PDoubleVector fExpectedChisqRun</div><div class="ttdoc">expected chisq or maxLH for the sector and run</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00217">PFitter.h:217</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_aa5019c42355d0ebe4f88de794d8fb867"><div class="ttname"><a href="classPSectorChisq.html#aa5019c42355d0ebe4f88de794d8fb867">PSectorChisq::SetRunFirstTime</a></div><div class="ttdeci">void SetRunFirstTime(Double_t first, UInt_t idx)</div><div class="ttdef"><b>Definition</b> <a href="#l00109">PFitter.cpp:109</a></div></div>
<div class="ttc" id="aclassPSectorChisq_html_ad7315781e218d0e338a0ef833542beb2"><div class="ttname"><a href="classPSectorChisq.html#ad7315781e218d0e338a0ef833542beb2">PSectorChisq::fNoOfRuns</a></div><div class="ttdeci">UInt_t fNoOfRuns</div><div class="ttdoc">number of runs presesent</div><div class="ttdef"><b>Definition</b> <a href="PFitter_8h_source.html#l00210">PFitter.h:210</a></div></div>
<div class="ttc" id="astructPMsrStatisticStructure_html"><div class="ttname"><a href="structPMsrStatisticStructure.html">PMsrStatisticStructure</a></div><div class="ttdef"><b>Definition</b> <a href="PMusr_8h_source.html#l01313">PMusr.h:1313</a></div></div>
<div class="ttc" id="astructPMsrStatisticStructure_html_a0ba1b4b3346650a0bfca4ce930c3394c"><div class="ttname"><a href="structPMsrStatisticStructure.html#a0ba1b4b3346650a0bfca4ce930c3394c">PMsrStatisticStructure::fNdf</a></div><div class="ttdeci">UInt_t fNdf</div><div class="ttdoc">number of degrees of freedom</div><div class="ttdef"><b>Definition</b> <a href="PMusr_8h_source.html#l01320">PMusr.h:1320</a></div></div>
<div class="ttc" id="astructPMsrStatisticStructure_html_a5e998c52bfd693f3a40c03bddd00d829"><div class="ttname"><a href="structPMsrStatisticStructure.html#a5e998c52bfd693f3a40c03bddd00d829">PMsrStatisticStructure::fMinExpected</a></div><div class="ttdeci">Double_t fMinExpected</div><div class="ttdoc">expected total chi2 or max. likelihood</div><div class="ttdef"><b>Definition</b> <a href="PMusr_8h_source.html#l01321">PMusr.h:1321</a></div></div>
<div class="ttc" id="astructPMsrStatisticStructure_html_ab6391b7e859bdec423b200e0904459d6"><div class="ttname"><a href="structPMsrStatisticStructure.html#ab6391b7e859bdec423b200e0904459d6">PMsrStatisticStructure::fMin</a></div><div class="ttdeci">Double_t fMin</div><div class="ttdoc">chisq or max. likelihood</div><div class="ttdef"><b>Definition</b> <a href="PMusr_8h_source.html#l01318">PMusr.h:1318</a></div></div>
<div class="ttc" id="astructPMsrStatisticStructure_html_ac441f7616cf11a0ac282609de4d762fd"><div class="ttname"><a href="structPMsrStatisticStructure.html#ac441f7616cf11a0ac282609de4d762fd">PMsrStatisticStructure::fNdfPerHisto</a></div><div class="ttdeci">PUIntVector fNdfPerHisto</div><div class="ttdoc">number of degrees of freedom per histo</div><div class="ttdef"><b>Definition</b> <a href="PMusr_8h_source.html#l01323">PMusr.h:1323</a></div></div>
<div class="ttc" id="astructPMsrStatisticStructure_html_ac86728d8846968e8a9724aa00d328b73"><div class="ttname"><a href="structPMsrStatisticStructure.html#ac86728d8846968e8a9724aa00d328b73">PMsrStatisticStructure::fMinExpectedPerHisto</a></div><div class="ttdeci">PDoubleVector fMinExpectedPerHisto</div><div class="ttdoc">expected pre histo chi2 or max. likelihood</div><div class="ttdef"><b>Definition</b> <a href="PMusr_8h_source.html#l01322">PMusr.h:1322</a></div></div>
<div class="ttc" id="astructPMsrStatisticStructure_html_ad0ba793859d97a1b068081bf39112ba0"><div class="ttname"><a href="structPMsrStatisticStructure.html#ad0ba793859d97a1b068081bf39112ba0">PMsrStatisticStructure::fMinPerHisto</a></div><div class="ttdeci">PDoubleVector fMinPerHisto</div><div class="ttdoc">chisq or max. likelihood per histo</div><div class="ttdef"><b>Definition</b> <a href="PMusr_8h_source.html#l01319">PMusr.h:1319</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_018e9aafb459e6e1a4953404cb0c0b1d.html">classes</a></li><li class="navelem"><a class="el" href="PFitter_8cpp.html">PFitter.cpp</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>